60e060405267016345785d8a00006009553480156200001d57600080fd5b50604051620066a6380380620066a6833981016040819052620000409162000612565b6040518060400160405280600b81526020016a0554e4956455253452d4c560ac1b815250604051806040016040528060038152602001620554c560ec1b81525060126000620000946200052160201b60201c565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508251620000f390600490602086019062000525565b5081516200010990600590602085019062000525565b506006805460ff191660ff929092169190911790555050606086901b6001600160601b03191660805260408051630dfe168160e01b8152905186916001600160a01b03831691630dfe168191600480820192602092909190829003018186803b1580156200017657600080fd5b505afa1580156200018b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b19190620005ee565b6001600160a01b031660a0816001600160a01b031660601b81525050806001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b1580156200020757600080fd5b505afa1580156200021c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002429190620005ee565b6001600160a01b031660c0816001600160a01b031660601b81525050600160076000886001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000866001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff02191690831515021790555060006040518060e0016040528060006001600160801b0316815260200160006001600160801b0316815260200160006001600160a01b03168152602001600060020b8152602001600060020b8152602001600060020b8152602001600015158152509050600b81908060018154018082558091505060019003906000526020600020906002020160009091909190915060008201518160000160006101000a8154816001600160801b0302191690836001600160801b0316021790555060208201518160000160106101000a8154816001600160801b0302191690836001600160801b0316021790555060408201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160010160146101000a81548162ffffff021916908360020b62ffffff16021790555060808201518160010160176101000a81548162ffffff021916908360020b62ffffff16021790555060a082015181600101601a6101000a81548162ffffff021916908360020b62ffffff16021790555060c082015181600101601d6101000a81548160ff021916908315150217905550505085600660016101000a8154816001600160a01b0302191690836001600160a01b0316021790555084600860006101000a8154816001600160a01b0302191690836001600160a01b0316021790555083600860146101000a81548160ff021916908360ff16021790555082600860156101000a81548162ffffff021916908362ffffff1602179055505050505050505050620006a3565b3390565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826200055d5760008555620005a8565b82601f106200057857805160ff1916838001178555620005a8565b82800160010185558215620005a8579182015b82811115620005a85782518255916020019190600101906200058b565b50620005b6929150620005ba565b5090565b5b80821115620005b65760008155600101620005bb565b80516001600160a01b0381168114620005e957600080fd5b919050565b60006020828403121562000600578081fd5b6200060b82620005d1565b9392505050565b60008060008060008060c087890312156200062b578182fd5b6200063687620005d1565b95506200064660208801620005d1565b94506200065660408801620005d1565b93506200066660608801620005d1565b9250608087015160ff811681146200067c578283fd5b60a088015190925062ffffff8116811462000695578182fd5b809150509295509295509295565b60805160601c60a05160601c60c05160601c615f876200071f600039806109ed5280610fce5280611ebc5280611f5a528061287c528061338052806137cb5280613b535250806106c152806109a65280610f225280611f2052806127d1528061320f52806137905280613b32525080613b115250615f876000f3fe608060405234801561001057600080fd5b506004361061028a5760003560e01c8063947f4ba61161015c578063cf187d2f116100ce578063e323ba3f11610087578063e323ba3f146105a4578063eb5fe583146105ac578063f2fde38b146105bf578063f95949be146105d2578063fa461e33146105e5578063fd327141146105f85761028a565b8063cf187d2f1461053d578063d21220a714610550578063d348799714610558578063dd62ed3e1461056b578063ded3bbf71461057e578063e2bbb158146105915761028a565b8063aac1846f11610120578063aac1846f146104ca578063ac1d0609146104d2578063ba0cb22b146104e5578063c2c0ef9b146104f8578063c4a7761e1461050b578063c65b61ca146105255761028a565b8063947f4ba61461047657806395d89b4114610489578063a3fbbaae14610491578063a457c2d7146104a4578063a9059cbb146104b75761028a565b8063441a3e7011610200578063715018a6116101b9578063715018a614610407578063737106ac1461040f5780637955f60f146104225780638da5cb5b146104485780638dbdbe6d146104505780639270d81b146104635761028a565b8063441a3e70146103a05780634522f94d146103b357806350be99ad146103c6578063554d2a84146103ce578063594c2ba5146103e157806370a08231146103f45761028a565b806323b872dd1161025257806323b872dd1461030d57806329f5abcf146103205780632bac1b0e146103425780632e1a7d4d14610357578063313ce56714610378578063395093511461038d5761028a565b806306fdde031461028f578063095ea7b3146102ad5780630dfe1681146102cd57806318160ddd146102e25780631ad8b03b146102f7575b600080fd5b61029761060b565b6040516102a491906158f2565b60405180910390f35b6102c06102bb3660046151fa565b6106a1565b6040516102a491906158aa565b6102d56106bf565b6040516102a4919061577a565b6102ea6106e3565b6040516102a491906158b5565b6102ff6106e9565b6040516102a4929190615c05565b6102c061031b366004615143565b610703565b61033361032e3660046156c9565b61078b565b6040516102a493929190615c94565b610355610350366004615608565b6107a7565b005b61036a61036536600461557f565b6108eb565b6040516102a4929190615c86565b610380610a74565b6040516102a49190615cd2565b6102c061039b3660046151fa565b610a7d565b61036a6103ae3660046156c9565b610acb565b6103556103c1366004615608565b610ae3565b610355610d41565b6103556103dc3660046150ef565b610e50565b6103556103ef3660046155af565b6110b5565b6102ea6104023660046150ef565b611404565b610355611423565b61035561041d36600461565a565b6114cf565b61043561043036600461557f565b6119aa565b6040516102a49796959493929190615c1f565b6102d5611a22565b61036a61045e3660046156ea565b611a31565b61036a6104713660046156c9565b611a7c565b61036a6104843660046156c9565b611a88565b610297611aa6565b61035561049f3660046150ef565b611b07565b6102c06104b23660046151fa565b611bbb565b6102c06104c53660046151fa565b611c23565b6102d5611c37565b6103556104e0366004615183565b611c69565b61036a6104f33660046150ef565b611d2b565b61036a61050636600461557f565b611d44565b610513611d9d565b6040516102a496959493929190615caa565b61052d611dbe565b6040516102a49493929190615c6b565b61035561054b366004615225565b611dc9565b6102d5611eba565b61035561056636600461534a565b611ede565b6102ea61057936600461510b565b611f87565b61035561058c3660046150ef565b611fb2565b61036a61059f3660046156c9565b612201565b610380612248565b6103556105ba366004615273565b61224d565b6103556105cd3660046150ef565b6123cc565b6103556105e03660046151b0565b6124ce565b6103556105f336600461534a565b61275c565b610355610606366004615565565b61290c565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106975780601f1061066c57610100808354040283529160200191610697565b820191906000526020600020905b81548152906001019060200180831161067a57829003601f168201915b5050505050905090565b60006106b56106ae61296c565b8484612970565b5060015b92915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60035490565b600a546001600160801b0380821691600160801b90041682565b6000610710848484612a5c565b6107808461071c61296c565b61077b85604051806060016040528060288152602001615e31602891396001600160a01b038a1660009081526002602052604081209061075a61296c565b6001600160a01b031681526020810191909152604001600020549190612ba7565b612970565b5060015b9392505050565b600080600061079a8585612c3e565b9250925092509250925092565b60065461010090046001600160a01b031632146107df5760405162461bcd60e51b81526004016107d6906159ec565b60405180910390fd5b60008260020b1380156107f5575060008360020b135b6108115760405162461bcd60e51b81526004016107d690615bbd565b6000600b858154811061082057fe5b600091825260208083206040805160e081018252600294850290920180546001600160801b038082168552600160801b90910416938301939093526001909201546001600160a01b03811692820192909252600160a01b8204830b830b830b6060820152600160b81b8204830b830b830b6080820152600160d01b8204830b830b90920b60a0830152600160e81b900460ff16151560c0820152915080806108c9848888612d01565b92509250925082156108e1576108e188838388610ae3565b5050505050505050565b60008060006108f933611404565b905080841115610907578093505b600084116109275760405162461bcd60e51b81526004016107d6906159ce565b60006109316106e3565b905061093d3386612e68565b60008061094b878433612f52565b9298509096509250905061095f82826130c5565b600061097d846109778a6109716131e8565b9061329a565b906132f3565b90506000610991856109778b61097161335a565b905081156109da576109cd6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633846133bd565b6109d7888361340f565b97505b8015610a2157610a146001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633836133bd565b610a1e878261340f565b96505b336001600160a01b03167fe08737ac48a1dab4b1a46c7dc9398bd5bfc6d7ad6fabb7cd8caa254de14def358a60008b8b604051610a619493929190615c6b565b60405180910390a2505050505050915091565b60065460ff1690565b60006106b5610a8a61296c565b8461077b8560026000610a9b61296c565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549061340f565b600080610ad7846108eb565b915091505b9250929050565b60065461010090046001600160a01b03163214610b125760405162461bcd60e51b81526004016107d6906159ec565b6000600b8581548110610b2157fe5b60009182526020918290206040805160e081018252600293840290920180546001600160801b038082168552600160801b90910416948301949094526001909301546001600160a01b03811693820193909352600160a01b8304820b820b820b6060820152600160b81b8304820b820b820b6080820152600160d01b8304820b820b90910b60a0820152600160e81b90910460ff16151560c0820152600854909150610bdc9082908490600160a81b900462ffffff16613467565b8060c0015115610c0557600080610bf283613525565b935093505050610c0282826130c5565b50505b610c1484848360a0015161357d565b600281810b810b608085015282810b900b6060840152600160c08401529094509250610c3f816135bd565b80600b8681548110610c4d57fe5b6000918252602091829020835160029283029091018054938501516001600160801b03199094166001600160801b03928316178216600160801b92909416919091029290921782556040830151600190920180546060850151608086015160a087015160c0909701516001600160a01b03199093166001600160a01b039096169590951762ffffff60a01b1916600160a01b91850b62ffffff908116929092021762ffffff60b81b1916600160b81b95850b8216959095029490941762ffffff60d01b1916600160d01b9590930b93909316939093021760ff60e81b1916600160e81b911515919091021790555050505050565b60065461010090046001600160a01b03163214610d705760405162461bcd60e51b81526004016107d6906159ec565b6000600b600081548110610d8057fe5b60009182526020918290206040805160e081018252600293840290920180546001600160801b038082168552600160801b90910416948301949094526001909301546001600160a01b03811693820193909352600160a01b8304820b820b820b6060820152600160b81b8304820b820b820b6080820152600160d01b8304820b820b90910b60a0820152600160e81b90910460ff1615801560c0830152909150610e4d57600080610e318382613602565b935093505050610e4182826130c5565b610e4a836135bd565b50505b50565b610e5861296c565b6001600160a01b0316610e69611a22565b6001600160a01b031614610eb2576040805162461bcd60e51b81526020600482018190526024820152600080516020615e59833981519152604482015290519081900360640190fd5b6001600160a01b038116610ed85760405162461bcd60e51b81526004016107d690615a6b565b60408051808201909152600a546001600160801b03808216808452600160801b90920416602083015260011015610fb657805160405163a9059cbb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163a9059cbb91610f5e91869160001990910190600401615888565b602060405180830381600087803b158015610f7857600080fd5b505af1158015610f8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb091906152ef565b50600181525b600181602001516001600160801b0316111561107c577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb8360018460200151036040518363ffffffff1660e01b8152600401611021929190615888565b602060405180830381600087803b15801561103b57600080fd5b505af115801561104f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107391906152ef565b50600160208201525b8051600a80546020909301516001600160801b03908116600160801b029281166001600160801b03199094169390931790921617905550565b60065461010090046001600160a01b031632146110e45760405162461bcd60e51b81526004016107d6906159ec565b6001600160a01b03841660009081526007602052604090205460ff1661111c5760405162461bcd60e51b81526004016107d690615b40565b6000600b868154811061112b57fe5b60009182526020918290206040805160e081018252600293840290920180546001600160801b038082168552600160801b90910416948301949094526001909301546001600160a01b03811693820193909352600160a01b8304820b820b820b6060820152600160b81b8304820b820b820b6080820152600160d01b8304820b820b90910b60a0820152600160e81b90910460ff1615801560c083018190529192506111ed5750846001600160a01b031681604001516001600160a01b031614155b6112095760405162461bcd60e51b81526004016107d690615a3d565b6008546112259082908490600160a81b900462ffffff16613467565b60008061123183613525565b93509350505061124182826130c5565b6000876001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561127c57600080fd5b505afa158015611290573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b4919061530b565b90506112c187878361357d565b6001600160a01b038a166040870152600283810b810b60a088015281810b810b608088015282810b900b606087015290975095506112fe846135bd565b83600b8a8154811061130c57fe5b6000918252602091829020835160029283029091018054938501516001600160801b03199094166001600160801b03928316178216600160801b92909416919091029290921782556040830151600190920180546060850151608086015160a087015160c0909701516001600160a01b03199093166001600160a01b039096169590951762ffffff60a01b1916600160a01b91850b62ffffff908116929092021762ffffff60b81b1916600160b81b95850b8216959095029490941762ffffff60d01b1916600160d01b9590930b93909316939093021760ff60e81b1916600160e81b91151591909102179055505050505050505050565b6001600160a01b0381166000908152600160205260409020545b919050565b61142b61296c565b6001600160a01b031661143c611a22565b6001600160a01b031614611485576040805162461bcd60e51b81526020600482018190526024820152600080516020615e59833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60065461010090046001600160a01b031632146114fe5760405162461bcd60e51b81526004016107d6906159ec565b6000600b878154811061150d57fe5b60009182526020918290206040805160e081018252600293840290920180546001600160801b038082168552600160801b90910416948301949094526001909301546001600160a01b03811693820193909352600160a01b8304820b820b820b6060820152600160b81b8304820b820b820b6080820152600160d01b8304820b820b90910b60a0820152600160e81b90910460ff1615801560c083018190529192506115c257506000866001600160801b0316115b6115de5760405162461bcd60e51b81526004016107d690615945565b60008060006115ec8461363c565b505050509050806001600160801b0316896001600160801b0316106117315761161484613525565b90955093506116279150849050836130c5565b600060c0850152600b80548591908c90811061163f57fe5b6000918252602091829020835160029283029091018054938501516001600160801b03199094166001600160801b03928316178216600160801b92909416919091029290921782556040830151600190920180546060850151608086015160a087015160c0909701516001600160a01b03199093166001600160a01b039096169590951762ffffff60a01b1916600160a01b91850b62ffffff908116929092021762ffffff60b81b1916600160b81b95850b8216959095029490941762ffffff60d01b1916600160d01b9590930b93909316939093021760ff60e81b1916600160e81b9115159190910217905561174e565b61173b848a613602565b909550935061174e9150849050836130c5565b6000600b898154811061175d57fe5b60009182526020918290206040805160e081018252600293840290920180546001600160801b038082168552600160801b90910416948301949094526001909301546001600160a01b03811693820193909352600160a01b8304820b820b820b6060820152600160b81b8304820b820b820b6080820152600160d01b8304820b820b90910b60a0820152600160e81b90910460ff16151560c08201526008549091506118189082908890600160a81b900462ffffff16613467565b61182788888360a0015161357d565b60608301519199509750600289810b91900b1415806118505750806080015160020b8760020b14155b15611892578060c001511561187b5761186881613525565b909650945061187b9150859050846130c5565b600288810b810b606083015287810b900b60808201525b600160c08201526118a2816135bd565b80600b8a815481106118b057fe5b6000918252602091829020835160029283029091018054938501516001600160801b03199094166001600160801b03928316178216600160801b92909416919091029290921782556040830151600190920180546060850151608086015160a087015160c0909701516001600160a01b03199093166001600160a01b039096169590951762ffffff60a01b1916600160a01b91850b62ffffff908116929092021762ffffff60b81b1916600160b81b95850b8216959095029490941762ffffff60d01b1916600160d01b9590930b93909316939093021760ff60e81b1916600160e81b911515919091021790555050505050505050505050565b600b81815481106119ba57600080fd5b6000918252602090912060029182020180546001909101546001600160801b038083169450600160801b909204909116916001600160a01b03821691600160a01b8104820b91600160b81b8204810b91600160d01b810490910b90600160e81b900460ff1687565b6000546001600160a01b031690565b336000908152600c6020526040812054819060ff16611a625760405162461bcd60e51b81526004016107d690615b69565b611a6d858585613720565b6000915091505b935093915050565b600080610ad784611d44565b6000806000611a978585612c3e565b50909660009650945050505050565b60058054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106975780601f1061066c57610100808354040283529160200191610697565b611b0f61296c565b6001600160a01b0316611b20611a22565b6001600160a01b031614611b69576040805162461bcd60e51b81526020600482018190526024820152600080516020615e59833981519152604482015290519081900360640190fd5b60068054610100600160a81b0319166101006001600160a01b038416908102919091179091556040517f0afcbf7c3742ee20488a08c0da12ca29b2e8bdd022bef6129efbf4e00f84a63090600090a250565b60006106b5611bc861296c565b8461077b85604051806060016040528060258152602001615f2d6025913960026000611bf261296c565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190612ba7565b60006106b5611c3061296c565b8484612a5c565b6000600b600081548110611c4757fe5b60009182526020909120600160029092020101546001600160a01b0316905090565b611c7161296c565b6001600160a01b0316611c82611a22565b6001600160a01b031614611ccb576040805162461bcd60e51b81526020600482018190526024820152600080516020615e59833981519152604482015290519081900360640190fd5b6001600160a01b0382166000818152600c602052604090819020805460ff1916841515179055517fc551bbb22d0406dbfb8b6b7740cc521bcf44e1106029cf899c19b6a8e4c99d5190611d1f9084906158aa565b60405180910390a25050565b6000806000611d3984611404565b946000945092505050565b6000806000611d516106e3565b90508315801590611d6157508015155b15611d9757611d6e61390b565b509194509250611d84905081610977858761329a565b9250611d9481610977848761329a565b91505b50915091565b600080600080600080611dae61390b565b9299919850965090945091925090565b600019808080919293565b60065461010090046001600160a01b03163214611df85760405162461bcd60e51b81526004016107d6906159ec565b60ff83161580611e0b575060048360ff16115b611e275760405162461bcd60e51b81526004016107d690615acd565b6001600160a01b03841615801590611e5757506001600160a01b03841660009081526007602052604090205460ff165b15611e7857600880546001600160a01b0319166001600160a01b0386161790555b6008805462ffffff909316600160a81b0262ffffff60a81b1960ff909516600160a01b0260ff60a01b1990941693909317939093169190911790915560095550565b7f000000000000000000000000000000000000000000000000000000000000000081565b3360009081526007602052604090205460ff16611f0d5760405162461bcd60e51b81526004016107d6906159a7565b8315611f4757611f476001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633866133bd565b8215611f8157611f816001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633856133bd565b50505050565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b60065461010090046001600160a01b03163214611fe15760405162461bcd60e51b81526004016107d6906159ec565b6001600160a01b03811660009081526007602052604090205460ff166120195760405162461bcd60e51b81526004016107d690615b18565b6040805160e081018252600080825260208083018290526001600160a01b038516838501819052606084018390526080840183905284516334324e9f60e21b81529451869593949360a085019363d0c93a7c92600480840193829003018186803b15801561208657600080fd5b505afa15801561209a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120be919061530b565b600290810b825260006020928301819052600b8054600181018255915283517f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db99183029182018054948601516001600160801b03199095166001600160801b03928316178216600160801b92909516919091029390931790925560408301517f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dba90920180546060850151608086015160a087015160c0909701516001600160a01b03199093166001600160a01b039096169590951762ffffff60a01b1916600160a01b91850b62ffffff908116929092021762ffffff60b81b1916600160b81b95850b8216959095029490941762ffffff60d01b1916600160d01b9590930b93909316939093021760ff60e81b1916600160e81b91151591909102179055505050565b600080323314806122215750336000908152600c602052604090205460ff165b61223d5760405162461bcd60e51b81526004016107d690615b69565b611d39848433613720565b600181565b60065461010090046001600160a01b0316321461227c5760405162461bcd60e51b81526004016107d6906159ec565b60008060005b8581101561238d576000600b88888481811061229a57fe5b90506020020135815481106122ab57fe5b9060005260206000209060020201905080600101601d9054906101000a900460ff1615612384576040805160e08101825282546001600160801b038082168352600160801b90910416602082015260018301546001600160a01b03811692820192909252600160a01b8204600290810b810b810b6060830152600160b81b8304810b810b810b6080830152600160d01b8304810b810b900b60a0820152600160e81b90910460ff16151560c0820152600090819061236890613525565b60018701805460ff60e81b191690559801979690960195505050505b50600101612282565b5061239882826130c5565b831515806123a557508215155b156123c4576123c46123b56131e8565b6123bd61335a565b8686613a38565b505050505050565b6123d461296c565b6001600160a01b03166123e5611a22565b6001600160a01b03161461242e576040805162461bcd60e51b81526020600482018190526024820152600080516020615e59833981519152604482015290519081900360640190fd5b6001600160a01b0381166124735760405162461bcd60e51b8152600401808060200182810382526026815260200180615d7c6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60065461010090046001600160a01b031632146124fd5760405162461bcd60e51b81526004016107d6906159ec565b6001600160a01b03831660009081526007602052604090205460ff166125355760405162461bcd60e51b81526004016107d690615a87565b600b60008154811061254357fe5b9060005260206000209060020201600101601d9054906101000a900460ff161561257f5760405162461bcd60e51b81526004016107d690615965565b60008390506000816001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156125bf57600080fd5b505afa1580156125d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125f7919061530b565b905061260484848361357d565b6040805160e081018252600080825260208201526001600160a01b03891691810191909152600283810b606083015282810b608083015284900b60a0820152600160c08201529195509350612658816135bd565b80600b60008154811061266757fe5b6000918252602091829020835160029283029091018054938501516001600160801b03199094166001600160801b03928316178216600160801b92909416919091029290921782556040830151600190920180546060850151608086015160a087015160c0909701516001600160a01b03199093166001600160a01b039096169590951762ffffff60a01b1916600160a01b91850b62ffffff908116929092021762ffffff60b81b1916600160b81b95850b8216959095029490941762ffffff60d01b1916600160d01b9590930b93909316939093021760ff60e81b1916600160e81b91151591909102179055505050505050565b600084138061276b5750600083135b6127875760405162461bcd60e51b81526004016107d690615aaf565b6008546001600160a01b031633146127b15760405162461bcd60e51b81526004016107d6906159a7565b600084131561285c5760405163a9059cbb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb90612808903390889060040161578e565b602060405180830381600087803b15801561282257600080fd5b505af1158015612836573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061285a91906152ef565b505b6000831315611f815760405163a9059cbb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906128b3903390879060040161578e565b602060405180830381600087803b1580156128cd57600080fd5b505af11580156128e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061290591906152ef565b5050505050565b60065461010090046001600160a01b0316321461293b5760405162461bcd60e51b81526004016107d6906159ec565b600061294682613b0d565b6001600160a01b03166000908152600760205260409020805460ff191660011790555050565b3390565b6001600160a01b0383166129b55760405162461bcd60e51b8152600401808060200182810382526024815260200180615edf6024913960400191505060405180910390fd5b6001600160a01b0382166129fa5760405162461bcd60e51b8152600401808060200182810382526022815260200180615da26022913960400191505060405180910390fd5b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316612aa15760405162461bcd60e51b8152600401808060200182810382526025815260200180615eba6025913960400191505060405180910390fd5b6001600160a01b038216612ae65760405162461bcd60e51b8152600401808060200182810382526023815260200180615d376023913960400191505060405180910390fd5b612af1838383610e4a565b612b2e81604051806060016040528060268152602001615dc4602691396001600160a01b0386166000908152600160205260409020549190612ba7565b6001600160a01b038085166000908152600160205260408082209390935590841681522054612b5d908261340f565b6001600160a01b038084166000818152600160209081526040918290209490945580518581529051919392871692600080516020615e7983398151915292918290030190a3505050565b60008184841115612c365760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612bfb578181015183820152602001612be3565b50505050905090810190601f168015612c285780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600080600080612c4c6106e3565b9050600081612c6657612c5f8787613beb565b9050612cf9565b600080612c7161390b565b5050915091506000821180612c865750600081115b612ca25760405162461bcd60e51b81526004016107d690615ba0565b612cac888361329a565b612cb68a8361329a565b1115612cdb57612cc7828983613c02565b9850612cd4888583613c02565b9250612cf6565b612ce6818a84613c02565b9750612cf3898584613c02565b92505b50505b969350505050565b600080600080866040015190506000816001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b158015612d4957600080fd5b505afa158015612d5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d8191906154d4565b505050505091505060008860c0015115612de757600060028a608001518b606001510160020b81612dae57fe5b0590508860020b83820360020b12612dcd576001965060019150612de1565b8860020b81840360020b12612de157600196505b50612dec565b600195505b8515612e5c57808015612e1457508860a0015160020b8260020b81612e0d57fe5b0760020b15155b15612e305760a0890151612e288382613cb1565b019150612e41565b612e3e828a60a00151613cb1565b91505b612e4f878a60a00151613cb1565b9650868203945086820193505b50505093509350939050565b6001600160a01b038216612ead5760405162461bcd60e51b8152600401808060200182810382526021815260200180615e996021913960400191505060405180910390fd5b612eb982600083610e4a565b612ef681604051806060016040528060228152602001615d5a602291396001600160a01b0385166000908152600160205260409020549190612ba7565b6001600160a01b038316600090815260016020526040902055600354612f1c9082613cfd565b6003556040805182815290516000916001600160a01b03851691600080516020615e798339815191529181900360200190a35050565b60008060008060005b600b548110156130bb576000600b8281548110612f7457fe5b60009182526020918290206040805160e081018252600293840290920180546001600160801b038082168552600160801b90910416948301949094526001909301546001600160a01b03811693820193909352600160a01b8304820b820b820b6060820152600160b81b8304820b820b820b6080820152600160d01b8304820b820b90910b60a0820152600160e81b90910460ff1615801560c08301529091506130b25760006130238261363c565b5050505090506000816001600160801b031611156130b05760006130548a6109776001600160801b0385168e61329a565b905060008060008061307061306886613d5a565b88908f613d71565b929650909450925090506130848c8561340f565b9b506130908b8461340f565b9a5061309c8a8361340f565b99506130a8898261340f565b985050505050505b505b50600101612f5b565b5093509350935093565b600854600160a01b900460ff16806130dd57506131e4565b60408051808201909152600a546001600160801b038082168352600160801b909104166020820152831561313c57600061311785846132f3565b905061312f826000015161312a83613d5a565b613db7565b6001600160801b03168252505b821561317157600061314e84846132f3565b9050613161826020015161312a83613d5a565b6001600160801b03166020830152505b8051600a805460208401516001600160801b03908116600160801b029381166001600160801b031990921691909117169190911790556040517f5393ab6ef9bb40d91d1b04bbbeb707fbf3d1eb73f46744e2d179e4996026283f906131d99086908690615c86565b60405180910390a150505b5050565b600a546040516370a0823160e01b81526000916001600160801b0316906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a082319061324490309060040161577a565b60206040518083038186803b15801561325c57600080fd5b505afa158015613270573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132949190615597565b03905090565b6000826132a9575060006106b9565b828202828482816132b657fe5b04146107845760405162461bcd60e51b8152600401808060200182810382526021815260200180615e106021913960400191505060405180910390fd5b6000808211613349576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b81838161335257fe5b049392505050565b600a546040516370a0823160e01b8152600091600160801b90046001600160801b0316907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319061324490309060040161577a565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e4a908490613de8565b600082820183811015610784576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b6000836040015190506000816001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b1580156134ab57600080fd5b505afa1580156134bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134e391906154d4565b50505050509150508260020b84820360020b12801561350957508260020b81850360020b125b6129055760405162461bcd60e51b81526004016107d690615af5565b60008060008060006135368661363c565b505050509050806001600160801b03166000141561356257600080600080945094509450945050613576565b61356c8682613602565b9450945094509450505b9193509193565b60008061358a8584613cb1565b91506135968484613cb1565b90508460020b8460020b13611a745760405162461bcd60e51b81526004016107d690615be2565b6000806135c983613e99565b915091506135e76135d86131e8565b6135e061335a565b8484613a38565b6129056135f26131e8565b6135fa61335a565b859190613f53565b600080600080613612868661401c565b909250905061362a86306001600160801b03806140bb565b90979096509187039450850392509050565b600080600080600080866040015190506000308860600151896080015160405160200161366b93929190615717565b60408051601f1981840301815290829052805160209091012063514ea4bf60e01b825291506001600160a01b0383169063514ea4bf906136af9084906004016158b5565b60a06040518083038186803b1580156136c757600080fd5b505afa1580156136db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136ff9190615473565b939c929b509099506001600160801b03908116985090911695509350505050565b600080841180156137315750600083115b61374d5760405162461bcd60e51b81526004016107d690615aaf565b60006137598585612c3e565b909650945090508061377d5760405162461bcd60e51b81526004016107d6906159ce565b84156137b8576137b86001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633308861416d565b83156137f3576137f36001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633308761416d565b6137fd83826141c7565b6000600b60008154811061380d57fe5b60009182526020918290206040805160e081018252600293840290920180546001600160801b038082168552600160801b90910416948301949094526001909301546001600160a01b03811693820193909352600160a01b8304820b820b820b6060820152600160b81b8304820b820b820b6080820152600160d01b8304820b820b90910b60a0820152600160e81b90910460ff1615801560c08301529091506138ba576138ba816135bd565b836001600160a01b03167f7162984403f6c73c8639375d45a9187dfd04602231bd8e587c415718b5f7e5f983600089896040516138fa9493929190615c6b565b60405180910390a250949350505050565b6000806000806139196131e8565b915061392361335a565b905081935080925060005b600b54811015613a31576000600b828154811061394757fe5b60009182526020918290206040805160e081018252600293840290920180546001600160801b038082168552600160801b90910416948301949094526001909301546001600160a01b03811693820193909352600160a01b8304820b820b820b6060820152600160b81b8304820b820b820b6080820152600160d01b8304820b820b90910b60a0820152600160e81b90910460ff1615801560c0830152909150613a28576008546000908190613a08908490600160a01b900460ff166142a7565b9092509050613a17888361340f565b9750613a23878261340f565b965050505b5060010161392e565b5090919293565b600080613a47868686866143f3565b909250905081156123c457600081613a735773fffd8963efd1fc6a506488495d951d5263988d25613a7a565b6401000276a45b600854604051630251596160e31b81529192506001600160a01b03169063128acb0890613ab19030908690889087906004016157cf565b6040805180830381600087803b158015613aca57600080fd5b505af1158015613ade573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b029190615327565b505050505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000084604051602001613b85939291906157a7565b60408051601f19818403018152908290528051602091820120613bcd939290917fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b549101615747565b60408051601f19818403018152919052805160209091012092915050565b600081831015613bfb5781610784565b5090919050565b6000808060001985870986860292508281109083900303905080613c385760008411613c2d57600080fd5b508290049050610784565b808411613c4457600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b6000808260020b8460020b81613cc357fe5b05905060008460020b128015613cea57508260020b8460020b81613ce357fe5b0760020b15155b15613cf457600019015b90910292915050565b600082821115613d54576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b60006001600160801b03821115613d6d57fe5b5090565b600080600080613d81878761401c565b9094509250613d92878686866140bb565b5050613da787306001600160801b03806140bb565b9498939750955092935090915050565b60008282016001600160801b0380851690821610156107845760405162461bcd60e51b81526004016107d690615a08565b6000613e3d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166144e99092919063ffffffff16565b805190915015610e4a57808060200190516020811015613e5c57600080fd5b5051610e4a5760405162461bcd60e51b815260040180806020018281038252602a815260200180615f03602a913960400191505060405180910390fd5b600080600083604001516001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b158015613edb57600080fd5b505afa158015613eef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f1391906154d4565b5050505050509050613f4881613f2c8660600151614500565b613f398760800151614500565b68056bc75e2d63100000614828565b909590945092505050565b6000806000856040015190506000816001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b158015613f9a57600080fd5b505afa158015613fae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fd291906154d4565b5050505050509050600061400182613fed8a60600151614500565b613ffa8b60800151614500565b8a8a6148c4565b905061400d8882614988565b90999098509650505050505050565b60408083015160608401516080850151925163a34123a760e01b81526000938493926001600160a01b0384169263a34123a79261405e929189906004016158cc565b6040805180830381600087803b15801561407757600080fd5b505af115801561408b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140af9190615327565b90969095509350505050565b600080600086604001519050806001600160a01b0316634f1eb3d88789606001518a6080015189896040518663ffffffff1660e01b815260040161410395949392919061584b565b6040805180830381600087803b15801561411c57600080fd5b505af1158015614130573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141549190615445565b6001600160801b03918216999116975095505050505050565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052611f81908590613de8565b6001600160a01b038216614222576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b61422e60008383610e4a565b60035461423b908261340f565b6003556001600160a01b038216600090815260016020526040902054614261908261340f565b6001600160a01b0383166000818152600160209081526040808320949094558351858152935192939192600080516020615e798339815191529281900390910190a35050565b6040820151600090819081808080806142bf8a61363c565b945094509450945094506000866001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561430457600080fd5b505afa158015614318573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061433c91906154d4565b5050505050509050614368816143558d60600151614500565b6143628e60800151614500565b89614828565b909950975060008061437c8d8989896149ce565b90925090506143958561438f8d8561340f565b9061340f565b9a506143a58461438f8c8461340f565b995060ff8c16156143e3576143c76143c08360ff8f166132f3565b8c90613cfd565b9a506143e06143d98260ff8f166132f3565b8b90613cfd565b99505b5050505050505050509250929050565b6008546000908190819061440f906001600160a01b0316614a24565b905061441b868661329a565b614425888661329a565b10614492576000614436878761329a565b614440898761329a565b03905060006144588661438f858a600160601b613c02565b905061446482826132f3565b94506009546144788487600160601b613c02565b11614486576000945061448b565b600193505b50506144df565b600061449e888661329a565b6144a8888861329a565b03905060006144c08761438f88600160601b87613c02565b90506144cc82826132f3565b945060095485116144dc57600094505b50505b5094509492505050565b60606144f88484600085614ac1565b949350505050565b60008060008360020b12614517578260020b61451f565b8260020b6000035b9050620d89e881111561455d576040805162461bcd60e51b81526020600482015260016024820152601560fa1b604482015290519081900360640190fd5b60006001821661457157600160801b614583565b6ffffcb933bd6fad37aa2d162d1a5940015b6001600160881b0316905060028216156145ad576ffff97272373d413259a46990580e213a0260801c5b60048216156145cc576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b60088216156145eb576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b601082161561460a576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615614629576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615614648576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615614667576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615614687576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b6102008216156146a7576ff987a7253ac413176f2b074cf7815e540260801c5b6104008216156146c7576ff3392b0822b70005940c7a398e4b70f30260801c5b6108008216156146e7576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615614707576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615614727576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615614747576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615614767576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615614788576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156147a8576e5d6af8dedb81196699c329225ee6040260801c5b620400008216156147c7576d2216e584f5fa1ea926041bedfe980260801c5b620800008216156147e4576b048a170391f7dc42444e8fa20260801c5b60008460020b13156147ff5780600019816147fb57fe5b0490505b640100000000810615614813576001614816565b60005b60ff16602082901c0192505050919050565b600080836001600160a01b0316856001600160a01b03161115614849579293925b846001600160a01b0316866001600160a01b0316116148745761486d858585614c1c565b91506148bb565b836001600160a01b0316866001600160a01b031610156148ad57614899868585614c1c565b91506148a6858785614c85565b90506148bb565b6148b8858585614c85565b90505b94509492505050565b6000836001600160a01b0316856001600160a01b031611156148e4579293925b846001600160a01b0316866001600160a01b03161161490f57614908858585614cc8565b905061497f565b836001600160a01b0316866001600160a01b03161015614971576000614936878686614cc8565b90506000614945878986614d2b565b9050806001600160801b0316826001600160801b0316106149665780614968565b815b9250505061497f565b61497c858584614d2b565b90505b95945050505050565b600080600084604001519050806001600160a01b0316633c8a7d8d3087606001518860800151886040518563ffffffff1660e01b815260040161405e9493929190615809565b6000806000806149dd88614d68565b915091506149fb868303886001600160801b0316600160801b613c02565b9350614a17858203886001600160801b0316600160801b613c02565b9250505094509492505050565b600080826001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b158015614a6057600080fd5b505afa158015614a74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a9891906154d4565b5050505050509050610784816001600160a01b0316826001600160a01b0316600160601b613c02565b606082471015614b025760405162461bcd60e51b8152600401808060200182810382526026815260200180615dea6026913960400191505060405180910390fd5b614b0b85614df6565b614b5c576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b60208310614b9a5780518252601f199092019160209182019101614b7b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114614bfc576040519150601f19603f3d011682016040523d82523d6000602084013e614c01565b606091505b5091509150614c11828286614dfc565b979650505050505050565b6000826001600160a01b0316846001600160a01b03161115614c3c579192915b836001600160a01b0316614c75606060ff16846001600160801b0316901b8686036001600160a01b0316866001600160a01b0316613c02565b81614c7c57fe5b04949350505050565b6000826001600160a01b0316846001600160a01b03161115614ca5579192915b6144f8826001600160801b03168585036001600160a01b0316600160601b613c02565b6000826001600160a01b0316846001600160a01b03161115614ce8579192915b6000614d0b856001600160a01b0316856001600160a01b0316600160601b613c02565b905061497f614d2684838888036001600160a01b0316613c02565b614e62565b6000826001600160a01b0316846001600160a01b03161115614d4b579192915b6144f8614d2683600160601b8787036001600160a01b0316613c02565b60408101516000908190818080614d7e84614e78565b925092509250600080614d95868a60600151614fed565b91509150886060015160020b8560020b1215614db2579083039082035b600080614dc3888c60800151614fed565b915091508a6080015160020b8760020b12614ddf579085039084035b929094039390930396509190030392505050915091565b3b151590565b60608315614e0b575081610784565b825115614e1b5782518084602001fd5b60405162461bcd60e51b8152602060048201818152845160248401528451859391928392604401919085019080838360008315612bfb578181015183820152602001612be3565b806001600160801b038116811461141e57600080fd5b600080600080846001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b158015614eb757600080fd5b505afa158015614ecb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614eef91906154d4565b50505050509150506000856001600160a01b031663f30583996040518163ffffffff1660e01b815260040160206040518083038186803b158015614f3257600080fd5b505afa158015614f46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614f6a9190615597565b90506000866001600160a01b031663461413196040518163ffffffff1660e01b815260040160206040518083038186803b158015614fa757600080fd5b505afa158015614fbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614fdf9190615597565b929791965091945092505050565b600080836001600160a01b031663f30dba93846040518263ffffffff1660e01b815260040161501c91906158be565b6101006040518083038186803b15801561503557600080fd5b505afa158015615049573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061506d919061539b565b50939a92995091975050505050505050565b805161141e81615cf5565b60008083601f84011261509b578182fd5b50813567ffffffffffffffff8111156150b2578182fd5b602083019150836020828501011115610adc57600080fd5b805161ffff8116811461141e57600080fd5b803562ffffff8116811461141e57600080fd5b600060208284031215615100578081fd5b813561078481615ce0565b6000806040838503121561511d578081fd5b823561512881615ce0565b9150602083013561513881615ce0565b809150509250929050565b600080600060608486031215615157578081fd5b833561516281615ce0565b9250602084013561517281615ce0565b929592945050506040919091013590565b60008060408385031215615195578182fd5b82356151a081615ce0565b9150602083013561513881615cf5565b6000806000606084860312156151c4578283fd5b83356151cf81615ce0565b925060208401356151df81615d03565b915060408401356151ef81615d03565b809150509250925092565b6000806040838503121561520c578182fd5b823561521781615ce0565b946020939093013593505050565b6000806000806080858703121561523a578081fd5b843561524581615ce0565b9350602085013561525581615d27565b9250615263604086016150dc565b9396929550929360600135925050565b60008060008060608587031215615288578182fd5b843567ffffffffffffffff8082111561529f578384fd5b818701915087601f8301126152b2578384fd5b8135818111156152c0578485fd5b88602080830285010111156152d3578485fd5b6020928301999098509187013596604001359550909350505050565b600060208284031215615300578081fd5b815161078481615cf5565b60006020828403121561531c578081fd5b815161078481615d03565b60008060408385031215615339578182fd5b505080516020909101519092909150565b6000806000806060858703121561535f578182fd5b8435935060208501359250604085013567ffffffffffffffff811115615383578283fd5b61538f8782880161508a565b95989497509550505050565b600080600080600080600080610100898b0312156153b7578586fd5b88516153c281615d12565b80985050602089015180600f0b81146153d9578687fd5b80975050604089015195506060890151945060808901518060060b81146153fe578485fd5b60a08a015190945061540f81615ce0565b60c08a015190935063ffffffff81168114615428578283fd5b915061543660e08a0161507f565b90509295985092959890939650565b60008060408385031215615457578182fd5b825161546281615d12565b602084015190925061513881615d12565b600080600080600060a0868803121561548a578283fd5b855161549581615d12565b80955050602086015193506040860151925060608601516154b581615d12565b60808701519092506154c681615d12565b809150509295509295909350565b600080600080600080600060e0888a0312156154ee578081fd5b87516154f981615ce0565b602089015190975061550a81615d03565b9550615518604089016150ca565b9450615526606089016150ca565b9350615534608089016150ca565b925060a088015161554481615d27565b60c089015190925061555581615cf5565b8091505092959891949750929550565b600060208284031215615576578081fd5b610784826150dc565b600060208284031215615590578081fd5b5035919050565b6000602082840312156155a8578081fd5b5051919050565b600080600080600060a086880312156155c6578283fd5b8535945060208601356155d881615ce0565b935060408601356155e881615d03565b925060608601356155f881615d03565b915060808601356154c681615d03565b6000806000806080858703121561561d578182fd5b84359350602085013561562f81615d03565b9250604085013561563f81615d03565b9150606085013561564f81615d03565b939692955090935050565b60008060008060008060c08789031215615672578384fd5b86359550602087013561568481615d12565b945060408701359350606087013561569b81615d03565b925060808701356156ab81615d03565b915060a08701356156bb81615d03565b809150509295509295509295565b600080604083850312156156db578182fd5b50508035926020909101359150565b6000806000606084860312156156fe578081fd5b833592506020840135915060408401356151ef81615ce0565b60609390931b6001600160601b0319168352600291820b60e890811b6014850152910b901b6017820152601a0190565b6001600160f81b0319815260609390931b6001600160601b03191660018401526015830191909152603582015260550190565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03938416815291909216602082015262ffffff909116604082015260600190565b6001600160a01b03948516815292151560208401526040830191909152909116606082015260a06080820181905260009082015260c00190565b6001600160a01b03949094168452600292830b6020850152910b60408301526001600160801b0316606082015260a06080820181905260009082015260c00190565b6001600160a01b03959095168552600293840b60208601529190920b60408401526001600160801b03918216606084015216608082015260a00190565b6001600160a01b039290921682526001600160801b0316602082015260400190565b901515815260200190565b90815260200190565b60029190910b815260200190565b600293840b81529190920b60208201526001600160801b03909116604082015260600190565b6000602080835283518082850152825b8181101561591e57858101830151858201604001528201615902565b8181111561592f5783604083870101525b50601f01601f1916929092016040019392505050565b60208082526006908201526566726f6d502160d01b604082015260600190565b60208082526022908201527f706f736974696f6e3020697320776f726b696e672c2063616e6e6f7420696e69604082015261742160f01b606082015260800190565b6020808252600d908201526c77726f6e67206164647265737360981b604082015260600190565b6020808252600490820152637a65726f60e01b604082015260600190565b6020808252600290820152614f4d60f01b604082015260600190565b6020808252601b908201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604082015260600190565b60208082526014908201527343414e204e4f54204348414e474520504f4f4c2160601b604082015260600190565b6020808252600290820152615a4160f01b604082015260600190565b6020808252600e908201526d18591908141bdbdb08119a5c9cdd60921b604082015260600190565b6020808252600490820152635a65726f60e01b604082015260600190565b6020808252600e908201526d323050657263656e74204d41582160901b604082015260600190565b60208082526009908201526844494646205449434b60b81b604082015260600190565b6020808252600e908201526d185919081c1bdbdb08199a5c9cdd60921b604082015260600190565b6020808252600f908201526e41646420506f6f6c2046697273742160881b604082015260600190565b6020808252601b908201527f6f6e6c7920666f7220766572696669656420636f6e7472616374210000000000604082015260600190565b6020808252600390820152621818ad60e91b604082015260600190565b6020808252600b908201526a42616420706172616d732160a81b604082015260600190565b602080825260099082015268426164205469636b7360b81b604082015260600190565b6001600160801b0392831681529116602082015260400190565b6001600160801b0397881681529590961660208601526001600160a01b03939093166040850152600291820b6060850152810b60808401520b60a082015290151560c082015260e00190565b93845260208401929092526040830152606082015260800190565b918252602082015260400190565b9283526020830191909152604082015260600190565b958652602086019490945260408501929092526060840152608083015260a082015260c00190565b60ff91909116815260200190565b6001600160a01b0381168114610e4d57600080fd5b8015158114610e4d57600080fd5b8060020b8114610e4d57600080fd5b6001600160801b0381168114610e4d57600080fd5b60ff81168114610e4d57600080fdfe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122075e8ad9266fd323ed4aa8cec6b0aa5072009e6ea8800f7dc0f6a06bb57e7616d64736f6c634300070600330000000000000000000000001f98431c8ad98523631ae4a59f267346ea31f984000000000000000000000000cba27c8e7115b4eb50aa14999bc0866674a96ecb000000000000000000000000b9db5a37663d2004ea251281753aae75b30431d7000000000000000000000000cba27c8e7115b4eb50aa14999bc0866674a96ecb000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000012c