0x60a080604052346100615773a1077a294dde1b09bb078844df40758a5d0f9a2760805261458e908161006782396080518181816101d7015281816102e80152818161059401528181610fbe01528181611179015281816116730152611b410152f35b600080fdfe6080604052600436101561001e575b361561001c5761001c610555565b005b60003560e01c806301ffc9a71461007e57806354fd4d50146100795780636bb56a1414610074578063b69ef8a81461006f578063c3f2af101461006a5763f3fef3a30361000e5761027f565b61022a565b6101bf565b61018e565b6100cc565b346100bc5760206003193601126100bc576004357fffffffff000000000000000000000000000000000000000000000000000000008116036100bc57005b600080fd5b60009103126100bc57565b346100bc5760006003193601126100bc5760408051906100ec81836103ca565b600882527f32303236303430310000000000000000000000000000000000000000000000006020830152805180926020825280519081602084015260005b8281106101495750506000828201840152601f01601f19168101030190f35b60208282018101518783018701528694500161012a565b9181601f840112156100bc5782359167ffffffffffffffff83116100bc57602083818601950101116100bc57565b346100bc5760406003193601126100bc5760243567ffffffffffffffff81116100bc5761001c903690600401610160565b346100bc5760006003193601126100bc57476101fb307f0000000000000000000000000000000000000000000000000000000000000000610d3d565b810180911161020f57602090604051908152f35b61043e565b600435906001600160a01b03821682036100bc57565b346100bc5760406003193601126100bc57610243610214565b60243567ffffffffffffffff81116100bc57600091828061026981943690600401610160565b809491610274610d7d565b83375af1156100bc57005b346100bc5760406003193601126100bc57610298610214565b6024356102a3610d7d565b476102e5575b6001600160a01b0382166102b957005b6102c33083610d3d565b9080156102de575b809110156102d557005b61001c91610dbb565b50806102cb565b477f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316803b156100bc576000906004604051809481937fd0e30db00000000000000000000000000000000000000000000000000000000083525af1801561037457610359575b506102a9565b80610368600061036e936103ca565b806100c1565b38610353565b61046d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6101e0810190811067ffffffffffffffff8211176103c557604052565b610379565b90601f601f19910116810190811067ffffffffffffffff8211176103c557604052565b604051906103fc60a0836103ca565b565b604051906103fc6060836103ca565b67ffffffffffffffff81116103c557601f01601f191660200190565b604051906104386020836103ca565b60008252565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6040513d6000823e3d90fd5b60405190610486826103a8565b60006101c0838281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e08201528261010082015282610120820152826101408201528261016082015282610180820152826101a08201520152565b9190916104f38161040d565b61050060405191826103ca565b809382825282116100bc57818160009384602080950137010152565b8115610526570490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b61055d610d7d565b333203610caf575b60003560f81c9061057582611e77565b91600060075b828210610b2057505060023560e01c60063560f81c1b927f0000000000000000000000000000000000000000000000000000000000000000916105be3084610d3d565b946001803560f81c16151580610b17575b15610a01576000905b8282106106e457505050506105ef905b3090610d3d565b90367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0013560801c8061066c5750508181111561063c5703610100525a6101205243610140526060610100f35b7fd4989a9400000000000000000000000000000000000000000000000000000000600052900360045260245b6000fd5b9190928082106106a8575b505050341580156106855750565b60009061069f575b60008080809334904190f11561037457565b506108fc61068d565b039081116106b7578080610677565b7fd4989a940000000000000000000000000000000000000000000000000000000060005260045260246000fd5b6106ec610479565b5060208260051b8501015161014081015161016082015161018083019182516001146109f6576040840151925b866109ce576010831615155b61095e575b50600481036107575750505061074e60001991600193610748610429565b91612cde565b019101906105d8565b6014810361077f5750505061077a60001991600193610774610429565b91612aa7565b61074e565b601e81148015610954575b156107ad5750916001936107a761077a9360ff6000199616612efe565b916129a7565b601581036107c75750505061077a60019260001992613454565b601a81101580610949575b156107f25750505061077a600019916001936107ec610429565b91612895565b6020810361081857509160019361081261077a9360ff6000199616612efe565b916126eb565b60298114801561093f575b1561083a5750505061077a60019260001992613307565b603381148015610935575b1561085c5750505061077a600192600019926131a6565b603581036108765750505061077a60019260001992613042565b603d8110158061092a575b156108985750505061077a60019260001992612f2f565b605181036108be5750916001936108b861077a9360ff6000199616612efe565b916125b6565b915050601681036108e2575061077a600019916001936108dc610429565b916124a8565b601881036108fa575061077a60019260001992612e36565b7f4fc7a2410000000000000000000000000000000000000000000000000000000060005260ff1660045260246000fd5b50603f811115610881565b5060348114610845565b50602a8114610823565b50601d8111156107d2565b50601f811461078a565b6109889061098261097687516001600160a01b031690565b8860ff87169188610e0e565b51151590565b156109b65761ffff6109a061010086015161ffff1690565b16801561072a579094612710910204933861072a565b61ffff6109c96101c086015161ffff1690565b6109a0565b6020610160816000198a0160051b8c0101510151161580156107255750601083161515610725565b602084015192610719565b9160209150610a0e610479565b50015190610140820151306101a084015260048114600014610a4457506105ef9291610a3e9161074836366104e7565b506105e8565b60148103610a6057506105ef9291610a3e9161077436366104e7565b601e81148015610b0d575b15610a8457506105ef9291610a3e916107a736366104e7565b601a81101580610b02575b15610aa857506105ef9291610a3e916107ec36366104e7565b60208103610ac457506105ef9291610a3e9161081236366104e7565b60518103610ae057506105ef9291610a3e916108b836366104e7565b601681036108fa57506105ef9291610a3e91610afc36366104e7565b91612320565b50601d811115610a8f565b50601f8114610a6b565b508086116105cf565b610b2d6001918387611ebb565b91610b36610479565b5060208160051b8701015160106101408201516101608301519060048114600014610bab5750610b6583612173565b16610b73575b50019061057b565b8115610b6b576020600019830160051b8801015190602061016083015116610b9c575b50610b6b565b6101a090519101523880610b96565b601e8103610be35750610bde610bc884516001600160a01b031690565b60c085015160030b61018086015115159161212f565b610b65565b601f8103610c165750610bde610c0084516001600160a01b031690565b60c085015160030b6101808601511515916120eb565b60208103610c495750610bde610c3384516001600160a01b031690565b60c085015160030b6101808601511515916120a7565b605103610c7a57610bde610c6484516001600160a01b031690565b60c085015160030b610180860151151591612063565b82516001600160a01b0316610ca360808501918251610c9d610180880151151590565b91612001565b60a08601529052610b65565b606435604435606003610cd357601503610ccb576103fc611273565b6103fc6110b4565b608014610d35577f91dd7346000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000060003516036105655760c436146000036119fd5761138c565b6103fc610f0f565b906020906024604051809481937f70a0823100000000000000000000000000000000000000000000000000000000835260048301525afa156100bc575190565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1860143260981c0238010160003960005160601c32036100bc57565b6044600092838093604051927fa9059cbb0000000000000000000000000000000000000000000000000000000084526f09118417337bb38bb644d1744653726a600485015260248401525af1156100bc57565b92919060026040519316600214610e5f57916000809460449382957fa9059cbb000000000000000000000000000000000000000000000000000000008552600485015260248401525af1156100bc57565b600060209460c49385938585016040527f760d9bba000000000000000000000000000000000000000000000000000000008552306004860152602485015260448401526001606484015260a060848401528160a48401525af1156100bc57565b805115610ecc5760200190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8051821015610ecc5760209160051b010190565b60a43560f81c610f1e81611e77565b90600060ab5b828210611011575050610160610fa583610fa0610fae94610f55610180610f4d6103fc99610ebf565b510151151590565b1561100857604435905b81610f6f610180610f4d87610ebf565b15610ff15761ffff610f906101c0610f8688610ebf565b51015161ffff1690565b169081610fe2575b5050836134d8565b610ebf565b51015160ff1690565b60a63560e01c60aa3560f81c1b337f0000000000000000000000000000000000000000000000000000000000000000610e0e565b61271091020491503880610f98565b61ffff611003610100610f8688610ebf565b610f90565b60243590610f5f565b61101e6001918386611ebb565b9161103b6010611034610160610fa5858a610efb565b1660ff1690565b611047575b0190610f24565b818111156110405760001981016020611066610160610fa5848a610efb565b16611072575b50611040565b6110ae906101a061109e611097611089868b610efb565b51516001600160a01b031690565b9289610efb565b5101906001600160a01b03169052565b3861106c565b60843560001a906024356004356110ca84611e77565b91608b946000955b8187106111f757506103fc949550611175928261115a610fa5936101609588602060ff611106610140610fa5600095610ebf565b16036111d157505061111d610180610f4d8a610ebf565b156111cb57825b905b611135610180610f4d8b610ebf565b156111b45761ffff61114c6101c0610f868c610ebf565b16806111a5575b50886134d8565b611169610180610f4d88610ebf565b1561119d575093610ebf565b90337f0000000000000000000000000000000000000000000000000000000000000000610e0e565b905093610ebf565b90916127109102049038611153565b61ffff6111c6610100610f868c610ebf565b61114c565b83611124565b856111e1610180610f4d8d610ebf565b156111ef5750035b90611126565b9150036111e9565b6112046001918887611ebb565b96818111611214575b01956110d2565b6010611226610160610fa5848a610efb565b161561120d5760001981016020611243610160610fa5848b610efb565b1661124f575b5061120d565b61126d906101a061109e611266611089868c610efb565b928a610efb565b38611249565b60853560601c60843560001a6001811615611297576103fc91600435903390610e0e565b6103fc91602435903390610e0e565b7f8000000000000000000000000000000000000000000000000000000000000000811461020f5760000390565b908160209103126100bc575190565b6001600160a01b036040611359948260806101209682815116875282602082015116602088015262ffffff858201511685880152606081015160020b606088015201511660808501528051151560a0850152602081015160c085015201511660e08201528161010082015201602090600081520190565b90565b600f0b7fffffffffffffffffffffffffffffffff80000000000000000000000000000000811461020f5760000390565b6000604435811a61139c81611e77565b82604b5b8382106119455750506113b1610479565b5060208101519081516113ca906001600160a01b031690565b6001600160a01b03166020830180516001600160a01b031694604085019687516113fa906001600160a01b031690565b60e0870151610120880151606089015161ffff91821660020b9291909116906001600160a01b03169261142b6103ed565b6001600160a01b03909b168b526001600160a01b031660208b015262ffffff1660408a015260020b60608901526001600160a01b03166080880152610180860190815161147790151590565b61148c60463560e01c604a3560f81c1b6112a6565b90835161149890151590565b600014611516976114e06020946001600160a01b039361192a576401000276a4905b6114cc6114c56103fe565b9615158752565b858701526001600160a01b03166040850152565b169960405197889283927ff3cd914c000000000000000000000000000000000000000000000000000000008452600484016112e2565b0381848c5af1948515610374578195611909575b5061153e6115388660801d90565b600f0b90565b956115498351151590565b915081156118f0576fffffffffffffffffffffffffffffffff8616915b8290156118df578a516001600160a01b0316945b8a3b156100bc576040517f0b0d9c090000000000000000000000000000000000000000000000000000000081526001600160a01b0396909616600487015230602487015260448601849052600086606481838f5af19384156103745761161996610982956118ca575b508551156118b25761ffff6115fe6101c08d015161ffff1690565b1690816118a3575b505089516001600160a01b031692613787565b9586156118915750516001600160a01b0316945b1561187757506116426116426116579261135c565b6fffffffffffffffffffffffffffffffff1690565b925b6001600160a01b03811661177e5750506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690813b156100bc57600060405180937f2e1a7d4d0000000000000000000000000000000000000000000000000000000082528183816116da89600483019190602083019252565b03925af191821561037457602092611769575b506004604051809481937f11da60b40000000000000000000000000000000000000000000000000000000083525af180156103745761173a575b505b604080516020815260006020820152f35b61175b9060203d602011611762575b61175381836103ca565b8101906112d3565b5038611727565b503d611749565b806103686000611778936103ca565b386116ed565b919092813b156100bc576040517fa58411940000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201529260008460248183875af19182156103745760009560209561180594611863575b506117ff6101606117f683516001600160a01b031690565b92015160ff1690565b92610e0e565b6004604051809481937f11da60b40000000000000000000000000000000000000000000000000000000083525af1801561037457611844575b50611729565b61185c9060203d6020116117625761175381836103ca565b503861183e565b8061036889611871936103ca565b386117de565b61188b915061164261164291600f0b61135c565b92611659565b516001600160a01b031690509461162d565b61271091020491503880611606565b61ffff6118c56101008d015161ffff1690565b6115fe565b8061036860006118d9936103ca565b386115e3565b85516001600160a01b03169461157a565b6fffffffffffffffffffffffffffffffff871691611566565b61192391955060203d6020116117625761175381836103ca565b933861152a565b73fffd8963efd1fc6a506488495d951d5263988d25906114ba565b6119526001918385611ebb565b91818111611962575b01906113a0565b6010611974610160610fa58488610efb565b161561195b5760001981016020611991610160610fa58489610efb565b1661199d575b5061195b565b6119bb906101a061109e6119b4611089868a610efb565b9288610efb565b38611997565b6040519060a0820182811067ffffffffffffffff8211176103c55760405260006080838281528260208201528260408201528260608201520152565b611a056119c1565b5060643560601c60783560601c608c3560601c60bc3560001a611a266103ed565b6001600160a01b0384168152906001600160a01b038316602083015260b43560f01c604083015260b63560f01c60020b606083015260a03560601c6080830152611ae4602060018316151593611a7d6044356112a6565b908515611e5a57611ab06401000276a45b611a966103fe565b881515815293848601526001600160a01b03166040840152565b60405193849283927ff3cd914c000000000000000000000000000000000000000000000000000000008452600484016112e2565b038160008a5af190811561037457600091611e3b575b50611b086115388260801d90565b8315611e3557855b8415611e1d57611b256116426116428461135c565b935b6001600160a01b038216611d315750506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692833b156100bc57600060405180957f2e1a7d4d000000000000000000000000000000000000000000000000000000008252818381611ba887600483019190602083019252565b03925af190811561037457600494602092611d1c575b50604051948580927f11da60b40000000000000000000000000000000000000000000000000000000082528b5af1928315610374576fffffffffffffffffffffffffffffffff93611cfd575b505b8315611cf4575016915b829382600014611cec5750935b803b156100bc576040517f0b0d9c090000000000000000000000000000000000000000000000000000000081526001600160a01b03959095166004860152306024860152604485018390526000908590606490829084905af193841561037457606094611cd7575b5015611cc95761ffff60ba3560f01c5b169081611cba575b505060405190602082526020808301526040820152f35b61271091020490503880611ca3565b61ffff60b83560f01c611c9b565b806103686000611ce6936103ca565b38611c8b565b905093611c23565b90501691611c16565b611d159060203d6020116117625761175381836103ca565b5038611c0a565b806103686000611d2b936103ca565b38611bbe565b909193883b156100bc576040517fa58411940000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015292600084602481838e5af190811561037457611d93948b92611e08575b50610e0e565b604051917f11da60b400000000000000000000000000000000000000000000000000000000835260208360048160008b5af1928315610374576fffffffffffffffffffffffffffffffff93611de9575b50611c0c565b611e019060203d6020116117625761175381836103ca565b5038611de3565b806103686000611e17936103ca565b38611d8d565b611e2f61164261164285600f0b61135c565b93611b27565b84611b10565b611e54915060203d6020116117625761175381836103ca565b38611afa565b611ab073fffd8963efd1fc6a506488495d951d5263988d25611a8e565b90604051918083528060051b83019060005b818110611e9e57506101e00201602001604052565b8060206101e06001930285010160208260051b8801015201611e89565b90602060079392839260051b01015190823560f81c906015600185013560601c94019383528161014084015260009060009060048414611fe7575b5084916060850152610120840152833560601c936028601482013560601c910194602085015260408401526000906000929081600414611fd6575080601e14611fc55780601f14611fc55780602014611fc557605114611fb5575060108301923560801c5b6080830152600060a083015260c08201526001600683013560001a833560f01c60e0840152600284013560f01c6101008401528061016084015216610180820152306101a08201526101c0600483013560f01c9101520190565b60048401933560e01c9150611f5b565b5060048401933560e01c9150611f5b565b602c01943560e01c9250611f5b9050565b602b8101953560601c92506029013560f01c905038611ef6565b9291909261200e81613a2f565b9490921561205857821161202157509190565b6001600160a01b03907fc0dbcb7d000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b821061202157509190565b906040600493928151948580927f217ac2370000000000000000000000000000000000000000000000000000000082525afa156100bc5760206103fc930151613abe565b906040600493928151948580927fc19d93fb0000000000000000000000000000000000000000000000000000000082525afa156100bc5760206103fc930151613abe565b906040600493928151948580927fe76c01e40000000000000000000000000000000000000000000000000000000082525afa156100bc5760206103fc930151613abe565b906040600493928151948580927f3850c7bd0000000000000000000000000000000000000000000000000000000082525afa156100bc5760206103fc930151613abe565b6122a190602061218c818301516001600160a01b031690565b60408301516001600160a01b03166122206121ac60e086015161ffff1690565b916122126121c061012088015161ffff1690565b60608801516001600160a01b03169060405195869489860198899361ffff90816080956001600160a01b0380969a99959a8160a08b019c168a5216602089015216604087015216606085015216910152565b03601f1981018352826103ca565b5190206040805183810192835260066020840152906122429082908401612212565b51902061226861225c61225c85516001600160a01b031690565b6001600160a01b031690565b60405180809681947f1e2eaeaf000000000000000000000000000000000000000000000000000000008352600483019190602083019252565b03915afa8015610374576122c56122cb916103fc946000916122ee575b5060a01c90565b60020b90565b906122e86101806122e060c084015160030b90565b920151151590565b91613abe565b612307915060203d6020116117625761175381836103ca565b386122be565b8181029291811591840414171561020f57565b9061ffff939261235d61233860e085015161ffff1690565b9260808501519360a08601516101808701956123548751151590565b998a9316613b0f565b9461236f84516001600160a01b031690565b91604051917f022c0d9f00000000000000000000000000000000000000000000000000000000835260011461249657866004830152600060248301525b6101a0850151604483015260806064830152601f19601f825180608486015201169060005b8281106124805750506123ee9260009283809360a401925af11590565b612437575161ffff919015155b15612429576101c0015161ffff165b16806124135750565b61242190611359929361230d565b612710900490565b610100015161ffff1661240a565b61066861244b83516001600160a01b031690565b7f3023c045000000000000000000000000000000000000000000000000000000006000526001600160a01b0316600452602490565b80602080928401015160a48287010152016123d1565b600060048301528660248301526123ac565b9061ffff93926124fd6124ca6124c585516001600160a01b031690565b613a2f565b9390608086019060a0870195865281526124e960e087015161ffff1690565b905194516101808701956123548751151590565b9461250f84516001600160a01b031690565b91604051917f022c0d9f0000000000000000000000000000000000000000000000000000000083526001146125a457866004830152600060248301525b6101a0850151604483015260806064830152601f19601f825180608486015201169060005b82811061258e5750506123ee9260009283809360a401925af11590565b80602080928401015160a4828701015201612571565b6000600483015286602483015261254c565b909291926000936101808301916125cd8351151590565b916125df85516001600160a01b031690565b90604051927f24b31a0c0000000000000000000000000000000000000000000000000000000084526101a087015160048501526024840152836044840152836001146126ca5773fffd8963efd1fc6a506488495d951d5263988d25606484015282905b60a06084830152601f19601f82518060a486015201169060005b8281106126b25750509181600060409460c401925af1918261268d575b505015612437575161ffff919015156123fb565b909195506001146126a55751600003935b3880612679565b602001516000039361269e565b602082820181015160c488840101528694500161265c565b6401000276a460648401528290612642565b90600019820191821161020f57565b9291906000916101808501916127018351151590565b9161271387516001600160a01b031690565b90604051928460011461286d577f2c4812520000000000000000000000000000000000000000000000000000000084525b6101a0890151600485015260248401528360011461284057620c34ff604484015282905b60806064830152601f19601f825180608486015201169060005b8281106128285750509181600060409460a401925af19182612809575b5050156127f55761135992936127b861ffff9251151590565b156127e7576101c0015161ffff165b16806127d4575b506126dc565b612421906127e19261230d565b386127ce565b610100015161ffff166127c7565b61066861244b85516001600160a01b031690565b9091935060011461281e5751915b388061279f565b6020015191612817565b602082820181015160a4888401015286945001612782565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3cb0160448401528290612768565b7f857f812f000000000000000000000000000000000000000000000000000000008452612744565b909291926128d06101808301916128ac8351151590565b156129945760208401516001600160a01b03165b84516001600160a01b0316613b42565b936128e283516001600160a01b031690565b906128ed8351151590565b90604051917f022c0d9f00000000000000000000000000000000000000000000000000000000835260011461298257866004830152600060248301525b6101a0850151604483015260806064830152601f19601f825180608486015201169060005b82811061296c5750506123ee9260009283809360a401925af11590565b80602080928401015160a482870101520161294f565b6000600483015286602483015261292a565b60408401516001600160a01b03166128c0565b909291926000936101808301916129be8351151590565b916129d085516001600160a01b031690565b90604051927f128acb080000000000000000000000000000000000000000000000000000000084526101a08701516004850152846024850152604484015283600114612a955773fffd8963efd1fc6a506488495d951d5263988d25606484015282905b60a06084830152601f19601f82518060a486015201169060005b828110612a7d5750509181600060409460c401925af1918261268d57505015612437575161ffff919015156123fb565b602082820181015160c4888401015286945001612a4d565b6401000276a460648401528290612a33565b90929192612ae3612abd60e084015161ffff1690565b9160808401519260a085015161018086019461ffff612adc8751151590565b9316613b89565b93612af583516001600160a01b031690565b90612b008351151590565b90604051917f022c0d9f000000000000000000000000000000000000000000000000000000008352600114612b9557866004830152600060248301525b6101a0850151604483015260806064830152601f19601f825180608486015201169060005b828110612b7f5750506123ee9260009283809360a401925af11590565b80602080928401015160a4828701015201612b62565b60006004830152866024830152612b3d565b90929192612bf8612bc26124c584516001600160a01b031690565b9290608085019060a086019485528152612be160e086015161ffff1690565b9051935161018086019461ffff612adc8751151590565b93612c0a83516001600160a01b031690565b90612c158351151590565b90604051917f022c0d9f000000000000000000000000000000000000000000000000000000008352600114612caa57866004830152600060248301525b6101a0850151604483015260806064830152601f19601f825180608486015201169060005b828110612c945750506123ee9260009283809360a401925af11590565b80602080928401015160a4828701015201612c77565b60006004830152866024830152612c52565b60405160a09190612ccd83826103ca565b6079815291601f1901366020840137565b909291600093815115612d97575b5081516001600160a01b031660405180927f48c8949100000000000000000000000000000000000000000000000000000000825260206004830152601f19601f825180602486015201169060005b828110612d7f57505091816000606094604401925af19081612d73575b5015612d605750565b51610668906001600160a01b031661244b565b60400151935038612d57565b60208282018101516044888401015286945001612d3a565b9050612da1612cbc565b906020820152815160601b6040820152602082015160601b6054820152604082015160601b6068820152606082015160601b607c82015260ff6101608301511662ffff006101c084015160081b161764ffff00000061010084015160181b161766ffff000000000061012084015160281b161768ffff0000000000000060e084015160381b161760b81b609082015238612cec565b61018081018051909392612e689115612eeb5760208301516001600160a01b03165b83516001600160a01b0316613b42565b926123ee6000806064612e8286516001600160a01b031690565b82612e8d8751151590565b91604051927f6d9a640a000000000000000000000000000000000000000000000000000000008452600114612eda578a60048401528160248401525b6101a089015160448401525af11590565b8160048401528a6024840152612ec9565b60408301516001600160a01b0316612e58565b90919060408051909190612f1283826103ca565b60158152601f196020820193013684379360581b9060f81b179052565b61018081018051600094938591604091901561302657612f80612f5c60208701516001600160a01b031690565b915b86516001600160a01b031690612f7961016089015160ff1690565b9184610e0e565b610124612f9486516001600160a01b031690565b91835194859384927f7132bb7f0000000000000000000000000000000000000000000000000000000084526080600485015230602485015282604485015261010060648501526060608485015260a48401526101a089015160c48401528160e4840152816101048401525af1908161301a575b5015612437575161ffff919015156123fb565b60200151945038613007565b612f8061303c838701516001600160a01b031690565b91612f5e565b610180810151600093929015159182156131925760208101516001600160a01b0316925b15613175576130a661308260408301516001600160a01b031690565b925b82516001600160a01b03169061309f61016085015160ff1690565b9186610e0e565b80516001600160a01b031692604051907f7132bb7f000000000000000000000000000000000000000000000000000000008252608060048301523060248301526000604483015261010060648301526060608483015260a48201526040816101248160006101a0870198895160c48401528160e4840152816101048401525af19081613169575b5015612d60579184916131636131556131506103fc96516001600160a01b031690565b613bb8565b92516001600160a01b031690565b91613bf2565b6020015195503861312d565b6130a661318c60208301516001600160a01b031690565b92613084565b60408101516001600160a01b031692613066565b91906000926131b9610180820151151590565b80156132f35760208201516001600160a01b0316905b156132df5760408201516001600160a01b0316915b6132136131fb61315083516001600160a01b031690565b9461320b61016084015160ff1690565b908685610e0e565b61322e61322782516001600160a01b031690565b8386613c3c565b80516001600160a01b031691604051907f7132bb7f000000000000000000000000000000000000000000000000000000008252608060048301523060248301526000604483015261010060648301526060608483015260a48201526040816101248160006101a0870197885160c48401528160e4840152816101048401525af190816132d3575b5015612d6057509184916131636103fc94516001600160a01b031690565b602001519650386132b5565b60208201516001600160a01b0316916131e4565b60408201516001600160a01b0316906131cf565b61018081018051919392600092151580156134405760208601516001600160a01b0316905b1561342c5760408601516001600160a01b0316905b61337661335d61335889516001600160a01b031690565b613c80565b9361336f89516001600160a01b031690565b8386613cba565b86516001600160a01b031690604051907f627dd56a0000000000000000000000000000000000000000000000000000000082526020600483015260606024830152604482015260208160a48160006101a08d0196875160648401528160848401525af19081613423575b501561340f5792610982856113599798946127b89461340961ffff98516001600160a01b031690565b91613d4d565b61066861244b88516001600160a01b031690565b519550386133e0565b60208601516001600160a01b031690613341565b60408601516001600160a01b03169061332c565b919091612e6861346960e083015161ffff1690565b9360808301519460a084015161018085019661ffff612adc8951151590565b919091612e686134a26124c583516001600160a01b031690565b9490608084019060a0850196875281526134c160e085015161ffff1690565b9051955161018085019661ffff612adc8951151590565b916001905b8282106134ea5750505050565b600019016134f6610479565b5060208260051b8501015190610140820151610160830151610180840191825160011461377c576040850151925b60018703613754576010831615155b6136ea575b506004810361358a57505050816001600160a01b03613560600194516001600160a01b031690565b16613578579061356f91613da2565b915b01906134dd565b61358491610748610429565b91613571565b601481036135aa57505050600191613584916135a4610429565b91612ba7565b601e811480156136e0575b156135cf5750916107a76001949260ff6135849516612efe565b601581036135e65750505061358490600192613488565b601a811015806136d5575b1561360857505050600191613584916107ec610429565b602081036136255750916108126001949260ff6135849516612efe565b6029811480156136cb575b156136445750505061358490600192613307565b6033811480156136c1575b1561366357505050613584906001926131a6565b6035810361367a5750505061358490600192613042565b603d811015806136b6575b156136995750505061358490600192612f2f565b605181036108fa5750916108b86001949260ff6135849516612efe565b50603f811115613685565b506034811461364f565b50602a8114613630565b50601d8111156135f1565b50601f81146135b5565b61370e9061098261370288516001600160a01b031690565b8760ff87169188610e0e565b1561373c5761ffff61372661010087015161ffff1690565b1680156135385790936127109102049238613538565b61ffff61374f6101c087015161ffff1690565b613726565b6020610160816000198a0160051b8c0101510151161580156135335750601083161515613533565b602085015192613524565b9290916001905b83821061379c575050505050565b600019016137a8610479565b5060208260051b86010151906101408201516101608301516101808401918251600114613a24576040850151925b600187036139fc576010831615155b61399e575b5060048103613844575050508161380a600193516001600160a01b031690565b6001600160a01b03808716911614600014613832579061382991613da2565b915b019061378e565b61383e91610748610429565b9161382b565b6014810361385e5750505060019161383e916135a4610429565b601e81148015613994575b156138835750916107a76001949260ff61383e9516612efe565b6015810361389a5750505061383e90600192613488565b601a81101580613989575b156138bc5750505060019161383e916107ec610429565b602081036138d95750916108126001949260ff61383e9516612efe565b60298114801561397f575b156138f85750505061383e90600192613307565b603381148015613975575b156139175750505061383e906001926131a6565b6035810361392e5750505061383e90600192613042565b603d8110158061396a575b1561394d5750505061383e90600192612f2f565b605181036108fa5750916108b86001949260ff61383e9516612efe565b50603f811115613939565b5060348114613903565b50602a81146138e4565b50601d8111156138a5565b50601f8114613869565b6139b69061098261370288516001600160a01b031690565b156139e45761ffff6139ce61010087015161ffff1690565b1680156137ea57909361271091020492386137ea565b61ffff6139f76101c087015161ffff1690565b6139ce565b6020610160816000198a0160051b8d0101510151161580156137e557506010831615156137e5565b6020850151926137d6565b6000916000916040517f0902f1ac000000000000000000000000000000000000000000000000000000008152604081600481855afa9081613aab575b5015613a745750565b6001600160a01b03907fc47bca08000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b8095506020919450519401519238613a6b565b9115613b015760030b9060020b12613ad257565b7fc0dbcb7d00000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b60030b9060020b13613ad257565b612710919392940204928391600114613b375701910204905b81613b2f57565b906000190190565b910191020490613b28565b9190604460209260405194859384927ff140a35a000000000000000000000000000000000000000000000000000000008452600484015260248301525afa156100bc575190565b9091930291600014613ba7579181612710611359940201910261051c565b81612710611359940201910261051c565b6020600491604051928380927ffbfa77cf0000000000000000000000000000000000000000000000000000000082525afa156100bc575190565b9060006064949285936040519586947fd9caed120000000000000000000000000000000000000000000000000000000086526004860152602485015260448401525af1156100bc57565b60009291836044928194604051937ff9609f08000000000000000000000000000000000000000000000000000000008552600485015260248401525af1156100bc57565b6020600491604051928380927f4da318270000000000000000000000000000000000000000000000000000000082525afa156100bc575190565b929192604051907f095ea7b30000000000000000000000000000000000000000000000000000000082526004820190808252602483019480865260008060448682895af1156100bc57600096879660a49688957f02b9446c00000000000000000000000000000000000000000000000000000000885252309052604485015260648401528160848401525af1156100bc57565b90600060a49281958295604051947f97da6d300000000000000000000000000000000000000000000000000000000086526004860152306024860152604485015260648401528160848401525af1156100bc57565b919091610180810190613db58251151590565b90811561415c5760208101516001600160a01b0316915b156141485760408101516001600160a01b0316915b81516001600160a01b03166001600160a01b031660208301516001600160a01b0316966040840151613e19906001600160a01b031690565b60e0850151610120860151606087015161ffff91821660020b9291909116906001600160a01b031692613e4a6103ed565b6001600160a01b03909c168c526001600160a01b031660208c015262ffffff1660408b015260020b60608a01526001600160a01b031660808901528551151590613e93906112a6565b908651613e9f90151590565b600014613f0193613ecb6020946001600160a01b039361192a576401000276a4906114cc6114c56103fe565b169860405193849283927ff3cd914c000000000000000000000000000000000000000000000000000000008452600484016112e2565b038160008b5af190811561037457600091614129575b50613f256115388260801d90565b91613f308651151590565b1561411157613f446116426116428561135c565b905b883b156100bc576040517fa58411940000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015291600083602481838e5af192831561037457613fb7936140fc575b5085516001600160a01b031661016087015160ff166117ff565b604051917f11da60b400000000000000000000000000000000000000000000000000000000835260208360048160008c5af1928315610374576fffffffffffffffffffffffffffffffff936140df575b508551156140d6575016925b8395803b156100bc576040517f0b0d9c090000000000000000000000000000000000000000000000000000000081526001600160a01b03949094166004850152306024850152604484018590526000908490606490829084905af19081156103745761ffff93614089926140c1575b5051151590565b156140b3576101c0015161ffff165b1690816140a3575050565b611359929350906124219161230d565b610100015161ffff16614098565b8061036860006140d0936103ca565b38614082565b90501692614013565b6140f79060203d6020116117625761175381836103ca565b614007565b80610368600061410b936103ca565b38613f9d565b61412361164261164284600f0b61135c565b90613f46565b614142915060203d6020116117625761175381836103ca565b38613f17565b60208101516001600160a01b031691613de1565b60408101516001600160a01b031691613dcc56fea2646970667358221220e2bb89070056e5c5499f31be0d0132ce01cd752242f6d8f0fcac94b3129fb0dd64736f6c634300081e00330000000009118417337bb38bb644d1744653726a010594d392eb97938bb2cfbfeec26d04ebd4025802139ab36e4b3dd88c286c5c53306f08258e4d530372b63390591007e61d0e15ecb40579f0d08de30449410ef3b726138a1c2e6f1e0c3bf01bf17c1f05c6516a09b04230620843ea2b624056658697c6062af28251bcde1562f3f358096d54c18d7cef2b072e401629ac6cb31516a30be883fa053224d1080809434d95ab31d21e9daa6d4cdbd0c1b99f8cf3098d1768cccfd822d4d16f545ac46c3c6f913a170a8577eb450bd1e926325986f2b00d127120342a0b0312900af831f8edd9f0445f9ade412d19356e0c9efac2ea4064e3a44bbfa4f5e302bf89edd1ee0dc2c93d013b0f08c783864baa80d3bd7824bbcc0e64c1a21ead7315ca86def9240126d98398c7c80ff9f59d6d72a4421c745aeb3d792c96b7a5a8cf10717911ae512c76914fff076459b3141da91e0511e5968c675726da7c255a37cc3865a300a740f2128d41feae9a5f5e16e75a39e3c684b8ef7644db1334db15ffbb552e73a7bca40f1cad966772edbe14cc8befcb35a13cdc82f1ef6bfd3da481e3bf1f15eaaba4cf14150b86e16d5b4a85ef8d853d3591164247bc4cfbe8c19f48fecf4958d362a1b7884717fbd10c4023f6df588bef7f96c200e3a423115c185d2a1cb8e017009625dc91c7453c103909c18319dd53ad1df24c97f5e4a89fbab32520d4b02f7d1a6c7f39e80ba625c07ea90a5f4cf9a9ebf9b9e01bdf07d87aa19e18dc18a942c3f754827f9f141e1c6b36ea0c9533589b79a06421af628a034aa5a31d2a714500007e77844188409fd9527f507c81671ef88407493ce5ba8988139fb0feea40e02676251f02fb55c513b8b46677f4cfd556ea09548a171b20ea05cf23d800e45352c9c61ae906424442abd821bdf6405633c78613ecfce507d21c84817ec82f22973acc4e169345aa1984e381c7165d1fbfc473238f9ce3295d8681c44cd3d5b9903905869c6a5024aa5618075ab46bf5d88ffc01e355b7b879fddd255a4e2c36690cb460e9ac6f8223a65d63a75f03260d3177bf27b92fb54182e3e56882b1e59bf50c27e658a2811cca4a52193310e3081802114f3e36283b7d4be70c5acb1e4d1975068f65ae1a7983b6295bb023fe8378b16df327343b5e3136cfa4f29b2a27e100942c7ff3b03e27bd5d60a3dfc89ef0802be5e02ab05025f5a827e88dd891d369f75f0e572c3ee74bd8462fc57cdd7ab129829cdb94cd4ef92d1a4fa8d3c37208fff505b7ea74cfd22d1c88ec2e2d1f6797b7cc9d7dac3686ced979f3840b6d302f787ae5257bd7c5575b9a7470a41b955112781e30322f3cb9c6a1b9543c94e6fc5024e4abb6d6f93113fee95ef250e88dddd66d2eb5e19915672fb7
0x6080604052600436101561001e575b361561001c5761001c610555565b005b60003560e01c806301ffc9a71461007e57806354fd4d50146100795780636bb56a1414610074578063b69ef8a81461006f578063c3f2af101461006a5763f3fef3a30361000e5761027f565b61022a565b6101bf565b61018e565b6100cc565b346100bc5760206003193601126100bc576004357fffffffff000000000000000000000000000000000000000000000000000000008116036100bc57005b600080fd5b60009103126100bc57565b346100bc5760006003193601126100bc5760408051906100ec81836103ca565b600882527f32303236303430310000000000000000000000000000000000000000000000006020830152805180926020825280519081602084015260005b8281106101495750506000828201840152601f01601f19168101030190f35b60208282018101518783018701528694500161012a565b9181601f840112156100bc5782359167ffffffffffffffff83116100bc57602083818601950101116100bc57565b346100bc5760406003193601126100bc5760243567ffffffffffffffff81116100bc5761001c903690600401610160565b346100bc5760006003193601126100bc57476101fb307f000000000000000000000000a1077a294dde1b09bb078844df40758a5d0f9a27610d3d565b810180911161020f57602090604051908152f35b61043e565b600435906001600160a01b03821682036100bc57565b346100bc5760406003193601126100bc57610243610214565b60243567ffffffffffffffff81116100bc57600091828061026981943690600401610160565b809491610274610d7d565b83375af1156100bc57005b346100bc5760406003193601126100bc57610298610214565b6024356102a3610d7d565b476102e5575b6001600160a01b0382166102b957005b6102c33083610d3d565b9080156102de575b809110156102d557005b61001c91610dbb565b50806102cb565b477f000000000000000000000000a1077a294dde1b09bb078844df40758a5d0f9a276001600160a01b0316803b156100bc576000906004604051809481937fd0e30db00000000000000000000000000000000000000000000000000000000083525af1801561037457610359575b506102a9565b80610368600061036e936103ca565b806100c1565b38610353565b61046d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6101e0810190811067ffffffffffffffff8211176103c557604052565b610379565b90601f601f19910116810190811067ffffffffffffffff8211176103c557604052565b604051906103fc60a0836103ca565b565b604051906103fc6060836103ca565b67ffffffffffffffff81116103c557601f01601f191660200190565b604051906104386020836103ca565b60008252565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6040513d6000823e3d90fd5b60405190610486826103a8565b60006101c0838281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e08201528261010082015282610120820152826101408201528261016082015282610180820152826101a08201520152565b9190916104f38161040d565b61050060405191826103ca565b809382825282116100bc57818160009384602080950137010152565b8115610526570490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b61055d610d7d565b333203610caf575b60003560f81c9061057582611e77565b91600060075b828210610b2057505060023560e01c60063560f81c1b927f000000000000000000000000a1077a294dde1b09bb078844df40758a5d0f9a27916105be3084610d3d565b946001803560f81c16151580610b17575b15610a01576000905b8282106106e457505050506105ef905b3090610d3d565b90367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0013560801c8061066c5750508181111561063c5703610100525a6101205243610140526060610100f35b7fd4989a9400000000000000000000000000000000000000000000000000000000600052900360045260245b6000fd5b9190928082106106a8575b505050341580156106855750565b60009061069f575b60008080809334904190f11561037457565b506108fc61068d565b039081116106b7578080610677565b7fd4989a940000000000000000000000000000000000000000000000000000000060005260045260246000fd5b6106ec610479565b5060208260051b8501015161014081015161016082015161018083019182516001146109f6576040840151925b866109ce576010831615155b61095e575b50600481036107575750505061074e60001991600193610748610429565b91612cde565b019101906105d8565b6014810361077f5750505061077a60001991600193610774610429565b91612aa7565b61074e565b601e81148015610954575b156107ad5750916001936107a761077a9360ff6000199616612efe565b916129a7565b601581036107c75750505061077a60019260001992613454565b601a81101580610949575b156107f25750505061077a600019916001936107ec610429565b91612895565b6020810361081857509160019361081261077a9360ff6000199616612efe565b916126eb565b60298114801561093f575b1561083a5750505061077a60019260001992613307565b603381148015610935575b1561085c5750505061077a600192600019926131a6565b603581036108765750505061077a60019260001992613042565b603d8110158061092a575b156108985750505061077a60019260001992612f2f565b605181036108be5750916001936108b861077a9360ff6000199616612efe565b916125b6565b915050601681036108e2575061077a600019916001936108dc610429565b916124a8565b601881036108fa575061077a60019260001992612e36565b7f4fc7a2410000000000000000000000000000000000000000000000000000000060005260ff1660045260246000fd5b50603f811115610881565b5060348114610845565b50602a8114610823565b50601d8111156107d2565b50601f811461078a565b6109889061098261097687516001600160a01b031690565b8860ff87169188610e0e565b51151590565b156109b65761ffff6109a061010086015161ffff1690565b16801561072a579094612710910204933861072a565b61ffff6109c96101c086015161ffff1690565b6109a0565b6020610160816000198a0160051b8c0101510151161580156107255750601083161515610725565b602084015192610719565b9160209150610a0e610479565b50015190610140820151306101a084015260048114600014610a4457506105ef9291610a3e9161074836366104e7565b506105e8565b60148103610a6057506105ef9291610a3e9161077436366104e7565b601e81148015610b0d575b15610a8457506105ef9291610a3e916107a736366104e7565b601a81101580610b02575b15610aa857506105ef9291610a3e916107ec36366104e7565b60208103610ac457506105ef9291610a3e9161081236366104e7565b60518103610ae057506105ef9291610a3e916108b836366104e7565b601681036108fa57506105ef9291610a3e91610afc36366104e7565b91612320565b50601d811115610a8f565b50601f8114610a6b565b508086116105cf565b610b2d6001918387611ebb565b91610b36610479565b5060208160051b8701015160106101408201516101608301519060048114600014610bab5750610b6583612173565b16610b73575b50019061057b565b8115610b6b576020600019830160051b8801015190602061016083015116610b9c575b50610b6b565b6101a090519101523880610b96565b601e8103610be35750610bde610bc884516001600160a01b031690565b60c085015160030b61018086015115159161212f565b610b65565b601f8103610c165750610bde610c0084516001600160a01b031690565b60c085015160030b6101808601511515916120eb565b60208103610c495750610bde610c3384516001600160a01b031690565b60c085015160030b6101808601511515916120a7565b605103610c7a57610bde610c6484516001600160a01b031690565b60c085015160030b610180860151151591612063565b82516001600160a01b0316610ca360808501918251610c9d610180880151151590565b91612001565b60a08601529052610b65565b606435604435606003610cd357601503610ccb576103fc611273565b6103fc6110b4565b608014610d35577f91dd7346000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000060003516036105655760c436146000036119fd5761138c565b6103fc610f0f565b906020906024604051809481937f70a0823100000000000000000000000000000000000000000000000000000000835260048301525afa156100bc575190565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1860143260981c0238010160003960005160601c32036100bc57565b6044600092838093604051927fa9059cbb0000000000000000000000000000000000000000000000000000000084526f09118417337bb38bb644d1744653726a600485015260248401525af1156100bc57565b92919060026040519316600214610e5f57916000809460449382957fa9059cbb000000000000000000000000000000000000000000000000000000008552600485015260248401525af1156100bc57565b600060209460c49385938585016040527f760d9bba000000000000000000000000000000000000000000000000000000008552306004860152602485015260448401526001606484015260a060848401528160a48401525af1156100bc57565b805115610ecc5760200190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8051821015610ecc5760209160051b010190565b60a43560f81c610f1e81611e77565b90600060ab5b828210611011575050610160610fa583610fa0610fae94610f55610180610f4d6103fc99610ebf565b510151151590565b1561100857604435905b81610f6f610180610f4d87610ebf565b15610ff15761ffff610f906101c0610f8688610ebf565b51015161ffff1690565b169081610fe2575b5050836134d8565b610ebf565b51015160ff1690565b60a63560e01c60aa3560f81c1b337f000000000000000000000000a1077a294dde1b09bb078844df40758a5d0f9a27610e0e565b61271091020491503880610f98565b61ffff611003610100610f8688610ebf565b610f90565b60243590610f5f565b61101e6001918386611ebb565b9161103b6010611034610160610fa5858a610efb565b1660ff1690565b611047575b0190610f24565b818111156110405760001981016020611066610160610fa5848a610efb565b16611072575b50611040565b6110ae906101a061109e611097611089868b610efb565b51516001600160a01b031690565b9289610efb565b5101906001600160a01b03169052565b3861106c565b60843560001a906024356004356110ca84611e77565b91608b946000955b8187106111f757506103fc949550611175928261115a610fa5936101609588602060ff611106610140610fa5600095610ebf565b16036111d157505061111d610180610f4d8a610ebf565b156111cb57825b905b611135610180610f4d8b610ebf565b156111b45761ffff61114c6101c0610f868c610ebf565b16806111a5575b50886134d8565b611169610180610f4d88610ebf565b1561119d575093610ebf565b90337f000000000000000000000000a1077a294dde1b09bb078844df40758a5d0f9a27610e0e565b905093610ebf565b90916127109102049038611153565b61ffff6111c6610100610f868c610ebf565b61114c565b83611124565b856111e1610180610f4d8d610ebf565b156111ef5750035b90611126565b9150036111e9565b6112046001918887611ebb565b96818111611214575b01956110d2565b6010611226610160610fa5848a610efb565b161561120d5760001981016020611243610160610fa5848b610efb565b1661124f575b5061120d565b61126d906101a061109e611266611089868c610efb565b928a610efb565b38611249565b60853560601c60843560001a6001811615611297576103fc91600435903390610e0e565b6103fc91602435903390610e0e565b7f8000000000000000000000000000000000000000000000000000000000000000811461020f5760000390565b908160209103126100bc575190565b6001600160a01b036040611359948260806101209682815116875282602082015116602088015262ffffff858201511685880152606081015160020b606088015201511660808501528051151560a0850152602081015160c085015201511660e08201528161010082015201602090600081520190565b90565b600f0b7fffffffffffffffffffffffffffffffff80000000000000000000000000000000811461020f5760000390565b6000604435811a61139c81611e77565b82604b5b8382106119455750506113b1610479565b5060208101519081516113ca906001600160a01b031690565b6001600160a01b03166020830180516001600160a01b031694604085019687516113fa906001600160a01b031690565b60e0870151610120880151606089015161ffff91821660020b9291909116906001600160a01b03169261142b6103ed565b6001600160a01b03909b168b526001600160a01b031660208b015262ffffff1660408a015260020b60608901526001600160a01b03166080880152610180860190815161147790151590565b61148c60463560e01c604a3560f81c1b6112a6565b90835161149890151590565b600014611516976114e06020946001600160a01b039361192a576401000276a4905b6114cc6114c56103fe565b9615158752565b858701526001600160a01b03166040850152565b169960405197889283927ff3cd914c000000000000000000000000000000000000000000000000000000008452600484016112e2565b0381848c5af1948515610374578195611909575b5061153e6115388660801d90565b600f0b90565b956115498351151590565b915081156118f0576fffffffffffffffffffffffffffffffff8616915b8290156118df578a516001600160a01b0316945b8a3b156100bc576040517f0b0d9c090000000000000000000000000000000000000000000000000000000081526001600160a01b0396909616600487015230602487015260448601849052600086606481838f5af19384156103745761161996610982956118ca575b508551156118b25761ffff6115fe6101c08d015161ffff1690565b1690816118a3575b505089516001600160a01b031692613787565b9586156118915750516001600160a01b0316945b1561187757506116426116426116579261135c565b6fffffffffffffffffffffffffffffffff1690565b925b6001600160a01b03811661177e5750506001600160a01b037f000000000000000000000000a1077a294dde1b09bb078844df40758a5d0f9a271690813b156100bc57600060405180937f2e1a7d4d0000000000000000000000000000000000000000000000000000000082528183816116da89600483019190602083019252565b03925af191821561037457602092611769575b506004604051809481937f11da60b40000000000000000000000000000000000000000000000000000000083525af180156103745761173a575b505b604080516020815260006020820152f35b61175b9060203d602011611762575b61175381836103ca565b8101906112d3565b5038611727565b503d611749565b806103686000611778936103ca565b386116ed565b919092813b156100bc576040517fa58411940000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201529260008460248183875af19182156103745760009560209561180594611863575b506117ff6101606117f683516001600160a01b031690565b92015160ff1690565b92610e0e565b6004604051809481937f11da60b40000000000000000000000000000000000000000000000000000000083525af1801561037457611844575b50611729565b61185c9060203d6020116117625761175381836103ca565b503861183e565b8061036889611871936103ca565b386117de565b61188b915061164261164291600f0b61135c565b92611659565b516001600160a01b031690509461162d565b61271091020491503880611606565b61ffff6118c56101008d015161ffff1690565b6115fe565b8061036860006118d9936103ca565b386115e3565b85516001600160a01b03169461157a565b6fffffffffffffffffffffffffffffffff871691611566565b61192391955060203d6020116117625761175381836103ca565b933861152a565b73fffd8963efd1fc6a506488495d951d5263988d25906114ba565b6119526001918385611ebb565b91818111611962575b01906113a0565b6010611974610160610fa58488610efb565b161561195b5760001981016020611991610160610fa58489610efb565b1661199d575b5061195b565b6119bb906101a061109e6119b4611089868a610efb565b9288610efb565b38611997565b6040519060a0820182811067ffffffffffffffff8211176103c55760405260006080838281528260208201528260408201528260608201520152565b611a056119c1565b5060643560601c60783560601c608c3560601c60bc3560001a611a266103ed565b6001600160a01b0384168152906001600160a01b038316602083015260b43560f01c604083015260b63560f01c60020b606083015260a03560601c6080830152611ae4602060018316151593611a7d6044356112a6565b908515611e5a57611ab06401000276a45b611a966103fe565b881515815293848601526001600160a01b03166040840152565b60405193849283927ff3cd914c000000000000000000000000000000000000000000000000000000008452600484016112e2565b038160008a5af190811561037457600091611e3b575b50611b086115388260801d90565b8315611e3557855b8415611e1d57611b256116426116428461135c565b935b6001600160a01b038216611d315750506001600160a01b037f000000000000000000000000a1077a294dde1b09bb078844df40758a5d0f9a271692833b156100bc57600060405180957f2e1a7d4d000000000000000000000000000000000000000000000000000000008252818381611ba887600483019190602083019252565b03925af190811561037457600494602092611d1c575b50604051948580927f11da60b40000000000000000000000000000000000000000000000000000000082528b5af1928315610374576fffffffffffffffffffffffffffffffff93611cfd575b505b8315611cf4575016915b829382600014611cec5750935b803b156100bc576040517f0b0d9c090000000000000000000000000000000000000000000000000000000081526001600160a01b03959095166004860152306024860152604485018390526000908590606490829084905af193841561037457606094611cd7575b5015611cc95761ffff60ba3560f01c5b169081611cba575b505060405190602082526020808301526040820152f35b61271091020490503880611ca3565b61ffff60b83560f01c611c9b565b806103686000611ce6936103ca565b38611c8b565b905093611c23565b90501691611c16565b611d159060203d6020116117625761175381836103ca565b5038611c0a565b806103686000611d2b936103ca565b38611bbe565b909193883b156100bc576040517fa58411940000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015292600084602481838e5af190811561037457611d93948b92611e08575b50610e0e565b604051917f11da60b400000000000000000000000000000000000000000000000000000000835260208360048160008b5af1928315610374576fffffffffffffffffffffffffffffffff93611de9575b50611c0c565b611e019060203d6020116117625761175381836103ca565b5038611de3565b806103686000611e17936103ca565b38611d8d565b611e2f61164261164285600f0b61135c565b93611b27565b84611b10565b611e54915060203d6020116117625761175381836103ca565b38611afa565b611ab073fffd8963efd1fc6a506488495d951d5263988d25611a8e565b90604051918083528060051b83019060005b818110611e9e57506101e00201602001604052565b8060206101e06001930285010160208260051b8801015201611e89565b90602060079392839260051b01015190823560f81c906015600185013560601c94019383528161014084015260009060009060048414611fe7575b5084916060850152610120840152833560601c936028601482013560601c910194602085015260408401526000906000929081600414611fd6575080601e14611fc55780601f14611fc55780602014611fc557605114611fb5575060108301923560801c5b6080830152600060a083015260c08201526001600683013560001a833560f01c60e0840152600284013560f01c6101008401528061016084015216610180820152306101a08201526101c0600483013560f01c9101520190565b60048401933560e01c9150611f5b565b5060048401933560e01c9150611f5b565b602c01943560e01c9250611f5b9050565b602b8101953560601c92506029013560f01c905038611ef6565b9291909261200e81613a2f565b9490921561205857821161202157509190565b6001600160a01b03907fc0dbcb7d000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b821061202157509190565b906040600493928151948580927f217ac2370000000000000000000000000000000000000000000000000000000082525afa156100bc5760206103fc930151613abe565b906040600493928151948580927fc19d93fb0000000000000000000000000000000000000000000000000000000082525afa156100bc5760206103fc930151613abe565b906040600493928151948580927fe76c01e40000000000000000000000000000000000000000000000000000000082525afa156100bc5760206103fc930151613abe565b906040600493928151948580927f3850c7bd0000000000000000000000000000000000000000000000000000000082525afa156100bc5760206103fc930151613abe565b6122a190602061218c818301516001600160a01b031690565b60408301516001600160a01b03166122206121ac60e086015161ffff1690565b916122126121c061012088015161ffff1690565b60608801516001600160a01b03169060405195869489860198899361ffff90816080956001600160a01b0380969a99959a8160a08b019c168a5216602089015216604087015216606085015216910152565b03601f1981018352826103ca565b5190206040805183810192835260066020840152906122429082908401612212565b51902061226861225c61225c85516001600160a01b031690565b6001600160a01b031690565b60405180809681947f1e2eaeaf000000000000000000000000000000000000000000000000000000008352600483019190602083019252565b03915afa8015610374576122c56122cb916103fc946000916122ee575b5060a01c90565b60020b90565b906122e86101806122e060c084015160030b90565b920151151590565b91613abe565b612307915060203d6020116117625761175381836103ca565b386122be565b8181029291811591840414171561020f57565b9061ffff939261235d61233860e085015161ffff1690565b9260808501519360a08601516101808701956123548751151590565b998a9316613b0f565b9461236f84516001600160a01b031690565b91604051917f022c0d9f00000000000000000000000000000000000000000000000000000000835260011461249657866004830152600060248301525b6101a0850151604483015260806064830152601f19601f825180608486015201169060005b8281106124805750506123ee9260009283809360a401925af11590565b612437575161ffff919015155b15612429576101c0015161ffff165b16806124135750565b61242190611359929361230d565b612710900490565b610100015161ffff1661240a565b61066861244b83516001600160a01b031690565b7f3023c045000000000000000000000000000000000000000000000000000000006000526001600160a01b0316600452602490565b80602080928401015160a48287010152016123d1565b600060048301528660248301526123ac565b9061ffff93926124fd6124ca6124c585516001600160a01b031690565b613a2f565b9390608086019060a0870195865281526124e960e087015161ffff1690565b905194516101808701956123548751151590565b9461250f84516001600160a01b031690565b91604051917f022c0d9f0000000000000000000000000000000000000000000000000000000083526001146125a457866004830152600060248301525b6101a0850151604483015260806064830152601f19601f825180608486015201169060005b82811061258e5750506123ee9260009283809360a401925af11590565b80602080928401015160a4828701015201612571565b6000600483015286602483015261254c565b909291926000936101808301916125cd8351151590565b916125df85516001600160a01b031690565b90604051927f24b31a0c0000000000000000000000000000000000000000000000000000000084526101a087015160048501526024840152836044840152836001146126ca5773fffd8963efd1fc6a506488495d951d5263988d25606484015282905b60a06084830152601f19601f82518060a486015201169060005b8281106126b25750509181600060409460c401925af1918261268d575b505015612437575161ffff919015156123fb565b909195506001146126a55751600003935b3880612679565b602001516000039361269e565b602082820181015160c488840101528694500161265c565b6401000276a460648401528290612642565b90600019820191821161020f57565b9291906000916101808501916127018351151590565b9161271387516001600160a01b031690565b90604051928460011461286d577f2c4812520000000000000000000000000000000000000000000000000000000084525b6101a0890151600485015260248401528360011461284057620c34ff604484015282905b60806064830152601f19601f825180608486015201169060005b8281106128285750509181600060409460a401925af19182612809575b5050156127f55761135992936127b861ffff9251151590565b156127e7576101c0015161ffff165b16806127d4575b506126dc565b612421906127e19261230d565b386127ce565b610100015161ffff166127c7565b61066861244b85516001600160a01b031690565b9091935060011461281e5751915b388061279f565b6020015191612817565b602082820181015160a4888401015286945001612782565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3cb0160448401528290612768565b7f857f812f000000000000000000000000000000000000000000000000000000008452612744565b909291926128d06101808301916128ac8351151590565b156129945760208401516001600160a01b03165b84516001600160a01b0316613b42565b936128e283516001600160a01b031690565b906128ed8351151590565b90604051917f022c0d9f00000000000000000000000000000000000000000000000000000000835260011461298257866004830152600060248301525b6101a0850151604483015260806064830152601f19601f825180608486015201169060005b82811061296c5750506123ee9260009283809360a401925af11590565b80602080928401015160a482870101520161294f565b6000600483015286602483015261292a565b60408401516001600160a01b03166128c0565b909291926000936101808301916129be8351151590565b916129d085516001600160a01b031690565b90604051927f128acb080000000000000000000000000000000000000000000000000000000084526101a08701516004850152846024850152604484015283600114612a955773fffd8963efd1fc6a506488495d951d5263988d25606484015282905b60a06084830152601f19601f82518060a486015201169060005b828110612a7d5750509181600060409460c401925af1918261268d57505015612437575161ffff919015156123fb565b602082820181015160c4888401015286945001612a4d565b6401000276a460648401528290612a33565b90929192612ae3612abd60e084015161ffff1690565b9160808401519260a085015161018086019461ffff612adc8751151590565b9316613b89565b93612af583516001600160a01b031690565b90612b008351151590565b90604051917f022c0d9f000000000000000000000000000000000000000000000000000000008352600114612b9557866004830152600060248301525b6101a0850151604483015260806064830152601f19601f825180608486015201169060005b828110612b7f5750506123ee9260009283809360a401925af11590565b80602080928401015160a4828701015201612b62565b60006004830152866024830152612b3d565b90929192612bf8612bc26124c584516001600160a01b031690565b9290608085019060a086019485528152612be160e086015161ffff1690565b9051935161018086019461ffff612adc8751151590565b93612c0a83516001600160a01b031690565b90612c158351151590565b90604051917f022c0d9f000000000000000000000000000000000000000000000000000000008352600114612caa57866004830152600060248301525b6101a0850151604483015260806064830152601f19601f825180608486015201169060005b828110612c945750506123ee9260009283809360a401925af11590565b80602080928401015160a4828701015201612c77565b60006004830152866024830152612c52565b60405160a09190612ccd83826103ca565b6079815291601f1901366020840137565b909291600093815115612d97575b5081516001600160a01b031660405180927f48c8949100000000000000000000000000000000000000000000000000000000825260206004830152601f19601f825180602486015201169060005b828110612d7f57505091816000606094604401925af19081612d73575b5015612d605750565b51610668906001600160a01b031661244b565b60400151935038612d57565b60208282018101516044888401015286945001612d3a565b9050612da1612cbc565b906020820152815160601b6040820152602082015160601b6054820152604082015160601b6068820152606082015160601b607c82015260ff6101608301511662ffff006101c084015160081b161764ffff00000061010084015160181b161766ffff000000000061012084015160281b161768ffff0000000000000060e084015160381b161760b81b609082015238612cec565b61018081018051909392612e689115612eeb5760208301516001600160a01b03165b83516001600160a01b0316613b42565b926123ee6000806064612e8286516001600160a01b031690565b82612e8d8751151590565b91604051927f6d9a640a000000000000000000000000000000000000000000000000000000008452600114612eda578a60048401528160248401525b6101a089015160448401525af11590565b8160048401528a6024840152612ec9565b60408301516001600160a01b0316612e58565b90919060408051909190612f1283826103ca565b60158152601f196020820193013684379360581b9060f81b179052565b61018081018051600094938591604091901561302657612f80612f5c60208701516001600160a01b031690565b915b86516001600160a01b031690612f7961016089015160ff1690565b9184610e0e565b610124612f9486516001600160a01b031690565b91835194859384927f7132bb7f0000000000000000000000000000000000000000000000000000000084526080600485015230602485015282604485015261010060648501526060608485015260a48401526101a089015160c48401528160e4840152816101048401525af1908161301a575b5015612437575161ffff919015156123fb565b60200151945038613007565b612f8061303c838701516001600160a01b031690565b91612f5e565b610180810151600093929015159182156131925760208101516001600160a01b0316925b15613175576130a661308260408301516001600160a01b031690565b925b82516001600160a01b03169061309f61016085015160ff1690565b9186610e0e565b80516001600160a01b031692604051907f7132bb7f000000000000000000000000000000000000000000000000000000008252608060048301523060248301526000604483015261010060648301526060608483015260a48201526040816101248160006101a0870198895160c48401528160e4840152816101048401525af19081613169575b5015612d60579184916131636131556131506103fc96516001600160a01b031690565b613bb8565b92516001600160a01b031690565b91613bf2565b6020015195503861312d565b6130a661318c60208301516001600160a01b031690565b92613084565b60408101516001600160a01b031692613066565b91906000926131b9610180820151151590565b80156132f35760208201516001600160a01b0316905b156132df5760408201516001600160a01b0316915b6132136131fb61315083516001600160a01b031690565b9461320b61016084015160ff1690565b908685610e0e565b61322e61322782516001600160a01b031690565b8386613c3c565b80516001600160a01b031691604051907f7132bb7f000000000000000000000000000000000000000000000000000000008252608060048301523060248301526000604483015261010060648301526060608483015260a48201526040816101248160006101a0870197885160c48401528160e4840152816101048401525af190816132d3575b5015612d6057509184916131636103fc94516001600160a01b031690565b602001519650386132b5565b60208201516001600160a01b0316916131e4565b60408201516001600160a01b0316906131cf565b61018081018051919392600092151580156134405760208601516001600160a01b0316905b1561342c5760408601516001600160a01b0316905b61337661335d61335889516001600160a01b031690565b613c80565b9361336f89516001600160a01b031690565b8386613cba565b86516001600160a01b031690604051907f627dd56a0000000000000000000000000000000000000000000000000000000082526020600483015260606024830152604482015260208160a48160006101a08d0196875160648401528160848401525af19081613423575b501561340f5792610982856113599798946127b89461340961ffff98516001600160a01b031690565b91613d4d565b61066861244b88516001600160a01b031690565b519550386133e0565b60208601516001600160a01b031690613341565b60408601516001600160a01b03169061332c565b919091612e6861346960e083015161ffff1690565b9360808301519460a084015161018085019661ffff612adc8951151590565b919091612e686134a26124c583516001600160a01b031690565b9490608084019060a0850196875281526134c160e085015161ffff1690565b9051955161018085019661ffff612adc8951151590565b916001905b8282106134ea5750505050565b600019016134f6610479565b5060208260051b8501015190610140820151610160830151610180840191825160011461377c576040850151925b60018703613754576010831615155b6136ea575b506004810361358a57505050816001600160a01b03613560600194516001600160a01b031690565b16613578579061356f91613da2565b915b01906134dd565b61358491610748610429565b91613571565b601481036135aa57505050600191613584916135a4610429565b91612ba7565b601e811480156136e0575b156135cf5750916107a76001949260ff6135849516612efe565b601581036135e65750505061358490600192613488565b601a811015806136d5575b1561360857505050600191613584916107ec610429565b602081036136255750916108126001949260ff6135849516612efe565b6029811480156136cb575b156136445750505061358490600192613307565b6033811480156136c1575b1561366357505050613584906001926131a6565b6035810361367a5750505061358490600192613042565b603d811015806136b6575b156136995750505061358490600192612f2f565b605181036108fa5750916108b86001949260ff6135849516612efe565b50603f811115613685565b506034811461364f565b50602a8114613630565b50601d8111156135f1565b50601f81146135b5565b61370e9061098261370288516001600160a01b031690565b8760ff87169188610e0e565b1561373c5761ffff61372661010087015161ffff1690565b1680156135385790936127109102049238613538565b61ffff61374f6101c087015161ffff1690565b613726565b6020610160816000198a0160051b8c0101510151161580156135335750601083161515613533565b602085015192613524565b9290916001905b83821061379c575050505050565b600019016137a8610479565b5060208260051b86010151906101408201516101608301516101808401918251600114613a24576040850151925b600187036139fc576010831615155b61399e575b5060048103613844575050508161380a600193516001600160a01b031690565b6001600160a01b03808716911614600014613832579061382991613da2565b915b019061378e565b61383e91610748610429565b9161382b565b6014810361385e5750505060019161383e916135a4610429565b601e81148015613994575b156138835750916107a76001949260ff61383e9516612efe565b6015810361389a5750505061383e90600192613488565b601a81101580613989575b156138bc5750505060019161383e916107ec610429565b602081036138d95750916108126001949260ff61383e9516612efe565b60298114801561397f575b156138f85750505061383e90600192613307565b603381148015613975575b156139175750505061383e906001926131a6565b6035810361392e5750505061383e90600192613042565b603d8110158061396a575b1561394d5750505061383e90600192612f2f565b605181036108fa5750916108b86001949260ff61383e9516612efe565b50603f811115613939565b5060348114613903565b50602a81146138e4565b50601d8111156138a5565b50601f8114613869565b6139b69061098261370288516001600160a01b031690565b156139e45761ffff6139ce61010087015161ffff1690565b1680156137ea57909361271091020492386137ea565b61ffff6139f76101c087015161ffff1690565b6139ce565b6020610160816000198a0160051b8d0101510151161580156137e557506010831615156137e5565b6020850151926137d6565b6000916000916040517f0902f1ac000000000000000000000000000000000000000000000000000000008152604081600481855afa9081613aab575b5015613a745750565b6001600160a01b03907fc47bca08000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b8095506020919450519401519238613a6b565b9115613b015760030b9060020b12613ad257565b7fc0dbcb7d00000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b60030b9060020b13613ad257565b612710919392940204928391600114613b375701910204905b81613b2f57565b906000190190565b910191020490613b28565b9190604460209260405194859384927ff140a35a000000000000000000000000000000000000000000000000000000008452600484015260248301525afa156100bc575190565b9091930291600014613ba7579181612710611359940201910261051c565b81612710611359940201910261051c565b6020600491604051928380927ffbfa77cf0000000000000000000000000000000000000000000000000000000082525afa156100bc575190565b9060006064949285936040519586947fd9caed120000000000000000000000000000000000000000000000000000000086526004860152602485015260448401525af1156100bc57565b60009291836044928194604051937ff9609f08000000000000000000000000000000000000000000000000000000008552600485015260248401525af1156100bc57565b6020600491604051928380927f4da318270000000000000000000000000000000000000000000000000000000082525afa156100bc575190565b929192604051907f095ea7b30000000000000000000000000000000000000000000000000000000082526004820190808252602483019480865260008060448682895af1156100bc57600096879660a49688957f02b9446c00000000000000000000000000000000000000000000000000000000885252309052604485015260648401528160848401525af1156100bc57565b90600060a49281958295604051947f97da6d300000000000000000000000000000000000000000000000000000000086526004860152306024860152604485015260648401528160848401525af1156100bc57565b919091610180810190613db58251151590565b90811561415c5760208101516001600160a01b0316915b156141485760408101516001600160a01b0316915b81516001600160a01b03166001600160a01b031660208301516001600160a01b0316966040840151613e19906001600160a01b031690565b60e0850151610120860151606087015161ffff91821660020b9291909116906001600160a01b031692613e4a6103ed565b6001600160a01b03909c168c526001600160a01b031660208c015262ffffff1660408b015260020b60608a01526001600160a01b031660808901528551151590613e93906112a6565b908651613e9f90151590565b600014613f0193613ecb6020946001600160a01b039361192a576401000276a4906114cc6114c56103fe565b169860405193849283927ff3cd914c000000000000000000000000000000000000000000000000000000008452600484016112e2565b038160008b5af190811561037457600091614129575b50613f256115388260801d90565b91613f308651151590565b1561411157613f446116426116428561135c565b905b883b156100bc576040517fa58411940000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015291600083602481838e5af192831561037457613fb7936140fc575b5085516001600160a01b031661016087015160ff166117ff565b604051917f11da60b400000000000000000000000000000000000000000000000000000000835260208360048160008c5af1928315610374576fffffffffffffffffffffffffffffffff936140df575b508551156140d6575016925b8395803b156100bc576040517f0b0d9c090000000000000000000000000000000000000000000000000000000081526001600160a01b03949094166004850152306024850152604484018590526000908490606490829084905af19081156103745761ffff93614089926140c1575b5051151590565b156140b3576101c0015161ffff165b1690816140a3575050565b611359929350906124219161230d565b610100015161ffff16614098565b8061036860006140d0936103ca565b38614082565b90501692614013565b6140f79060203d6020116117625761175381836103ca565b614007565b80610368600061410b936103ca565b38613f9d565b61412361164261164284600f0b61135c565b90613f46565b614142915060203d6020116117625761175381836103ca565b38613f17565b60208101516001600160a01b031691613de1565b60408101516001600160a01b031691613dcc56fea2646970667358221220e2bb89070056e5c5499f31be0d0132ce01cd752242f6d8f0fcac94b3129fb0dd64736f6c634300081e00330000000009118417337bb38bb644d1744653726a010594d392eb97938bb2cfbfeec26d04ebd4025802139ab36e4b3dd88c286c5c53306f08258e4d530372b63390591007e61d0e15ecb40579f0d08de30449410ef3b726138a1c2e6f1e0c3bf01bf17c1f05c6516a09b04230620843ea2b624056658697c6062af28251bcde1562f3f358096d54c18d7cef2b072e401629ac6cb31516a30be883fa053224d1080809434d95ab31d21e9daa6d4cdbd0c1b99f8cf3098d1768cccfd822d4d16f545ac46c3c6f913a170a8577eb450bd1e926325986f2b00d127120342a0b0312900af831f8edd9f0445f9ade412d19356e0c9efac2ea4064e3a44bbfa4f5e302bf89edd1ee0dc2c93d013b0f08c783864baa80d3bd7824bbcc0e64c1a21ead7315ca86def9240126d98398c7c80ff9f59d6d72a4421c745aeb3d792c96b7a5a8cf10717911ae512c76914fff076459b3141da91e0511e5968c675726da7c255a37cc3865a300a740f2128d41feae9a5f5e16e75a39e3c684b8ef7644db1334db15ffbb552e73a7bca40f1cad966772edbe14cc8befcb35a13cdc82f1ef6bfd3da481e3bf1f15eaaba4cf14150b86e16d5b4a85ef8d853d3591164247bc4cfbe8c19f48fecf4958d362a1b7884717fbd10c4023f6df588bef7f96c200e3a423115c185d2a1cb8e017009625dc91c7453c103909c18319dd53ad1df24c97f5e4a89fbab32520d4b02f7d1a6c7f39e80ba625c07ea90a5f4cf9a9ebf9b9e01bdf07d87aa19e18dc18a942c3f754827f9f141e1c6b36ea0c9533589b79a06421af628a034aa5a31d2a714500007e77844188409fd9527f507c81671ef88407493ce5ba8988139fb0feea40e02676251f02fb55c513b8b46677f4cfd556ea09548a171b20ea05cf23d800e45352c9c61ae906424442abd821bdf6405633c78613ecfce507d21c84817ec82f22973acc4e169345aa1984e381c7165d1fbfc473238f9ce3295d8681c44cd3d5b9903905869c6a5024aa5618075ab46bf5d88ffc01e355b7b879fddd255a4e2c36690cb460e9ac6f8223a65d63a75f03260d3177bf27b92fb54182e3e56882b1e59bf50c27e658a2811cca4a52193310e3081802114f3e36283b7d4be70c5acb1e4d1975068f65ae1a7983b6295bb023fe8378b16df327343b5e3136cfa4f29b2a27e100942c7ff3b03e27bd5d60a3dfc89ef0802be5e02ab05025f5a827e88dd891d369f75f0e572c3ee74bd8462fc57cdd7ab129829cdb94cd4ef92d1a4fa8d3c37208fff505b7ea74cfd22d1c88ec2e2d1f6797b7cc9d7dac3686ced979f3840b6d302f787ae5257bd7c5575b9a7470a41b955112781e30322f3cb9c6a1b9543c94e6fc5024e4abb6d6f93113fee95ef250e88dddd66d2eb5e19915672fb7