0x608060405234801562000010575f80fd5b506040516200491e3803806200491e833981016040819052620000339162000436565b6200003e3362000111565b6001600160a01b038216620000865760405162461bcd60e51b81526020600482015260096024820152683d32b9379030b2323960b91b60448201526064015b60405180910390fd5b620000918262000160565b620000fe826001600160a01b031663476192646040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000d2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620000f8919062000473565b62000247565b620001098162000328565b505062000498565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038116620001a65760405162461bcd60e51b815260206004820152600b60248201526a7a726f206164647265737360a81b60448201526064016200007d565b6001546001600160a01b0390811690821603620001f25760405162461bcd60e51b81526020600482015260096024820152686e6f206368616e676560b81b60448201526064016200007d565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f198db6e425fb8aafd1823c6ca50be2d51e5764571a5ae0f0f21c6812e45def0b906020015b60405180910390a150565b6001600160a01b0381166200028d5760405162461bcd60e51b815260206004820152600b60248201526a7a726f206164647265737360a81b60448201526064016200007d565b6002546001600160a01b0390811690821603620002d95760405162461bcd60e51b81526020600482015260096024820152686e6f206368616e676560b81b60448201526064016200007d565b600280546001600160a01b0319166001600160a01b0383169081179091556040519081527f81dc53a4a96b62e22d136ee123337790e7f96dc45f05f34b1ad589f16e8a20f2906020016200023c565b6001600160a01b0381166200036c5760405162461bcd60e51b81526020600482015260096024820152683d32b9379030b2323960b91b60448201526064016200007d565b62000379600382620003b0565b506040516001600160a01b038216907f24e26b452ca1e102cad22007f42eea31243ae395c1821fd8507d18e1580605cc905f90a250565b5f620003c6836001600160a01b038416620003cf565b90505b92915050565b5f8181526001830160205260408120546200041657508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155620003c9565b505f620003c9565b6001600160a01b038116811462000433575f80fd5b50565b5f806040838503121562000448575f80fd5b825162000455816200041e565b602084015190925062000468816200041e565b809150509250929050565b5f6020828403121562000484575f80fd5b815162000491816200041e565b9392505050565b61447880620004a65f395ff3fe608060405234801561000f575f80fd5b5060043610610283575f3560e01c80638456cb5911610157578063d56811ac116100d2578063f20bcadb11610088578063f2fde38b1161006e578063f2fde38b14610521578063fa9f4d5f14610534578063ff3e541314610547575f80fd5b8063f20bcadb146104e9578063f2ede6ae1461050e575f80fd5b8063e8f52994116100b8578063e8f52994146104ae578063ea8e1d58146104c3578063ee55ba31146104d6575f80fd5b8063d56811ac14610488578063d87305e61461049b575f80fd5b8063a65dbc9911610127578063c0bb38341161010d578063c0bb38341461044f578063c63f793514610462578063d3a29fea14610475575f80fd5b8063a65dbc9914610429578063aac90c911461043c575f80fd5b80638456cb59146103dc57806388e27e2f146103e45780638da5cb5b146103f7578063a2dfde1014610416575f80fd5b806340730ae3116102015780635fcc95e8116101b7578063720fc82e1161019d578063720fc82e146103a357806379670ef2146103b6578063834b85b8146103c9575f80fd5b80635fcc95e814610388578063715018a61461039b575f80fd5b806352bb1e76116101e757806352bb1e761461034f57806359a39709146103625780635e4555b814610375575f80fd5b806340730ae3146103295780634d22c1d11461033c575f80fd5b806314c5ce6c116102565780632017641c1161023c5780632017641c146102fb57806337e76c901461030e5780633f4ba83a14610321575f80fd5b806314c5ce6c146102d55780631624866d146102e8575f80fd5b8063011f690e14610287578063077564d31461029c5780630b3bea39146102af5780630dcf96c3146102c2575b5f80fd5b61029a610295366004613588565b61055a565b005b61029a6102aa3660046135eb565b61068d565b61029a6102bd366004613693565b6107c7565b61029a6102d0366004613588565b61093e565b61029a6102e33660046136f9565b6109a3565b61029a6102f6366004613757565b610ada565b61029a61030936600461388c565b610d39565b61029a61031c3660046135eb565b610e3c565b61029a610f41565b61029a6103373660046138f1565b61105d565b61029a61034a366004613588565b611191565b61029a61035d366004613924565b6111f3565b61029a61037036600461393d565b6112f2565b61029a610383366004613969565b6113f7565b61029a610396366004613588565b6114f4565b61029a611556565b61029a6103b13660046139a5565b6115ba565b61029a6103c4366004613924565b6116bd565b61029a6103d7366004613588565b6117bc565b61029a61181e565b61029a6103f23660046135eb565b61191a565b5f546040516001600160a01b0390911681526020015b60405180910390f35b61029a6104243660046139df565b611a1f565b61029a610437366004613924565b611b24565b61029a61044a366004613969565b611c23565b61029a61045d366004613757565b611d20565b61029a610470366004613757565b611e27565b61029a6104833660046135eb565b612194565b61029a610496366004613588565b612299565b61029a6104a9366004613a4e565b612395565b6104b66124d8565b60405161040d9190613ad3565b61029a6104d13660046135eb565b6124e9565b61029a6104e4366004613b1f565b6125ee565b6104fc6104f7366004613b49565b6126f1565b60405160ff909116815260200161040d565b61029a61051c366004613924565b612853565b61029a61052f366004613588565b612952565b61029a610542366004613b87565b612a30565b61029a610555366004613924565b612b37565b5f546001600160a01b031633146105b85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001546040517f011f690e0000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301529091169063011f690e906024015f604051808303815f87803b158015610615575f80fd5b505af1158015610627573d5f803e3d5ffd5b5050505060405161065b907f7365745574696c697479546f6b656e4164647200000000000000000000000000815260130190565b604051908190038120907f42b1d1aa188f409acc586473ebd45e623b81a5c74ee655df31eae024e54de82f905f90a250565b5f546001600160a01b031633146106e65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105af565b6001546040517f077564d30000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063077564d390610735908790879087908790600401613bf3565b5f604051808303815f87803b15801561074c575f80fd5b505af115801561075e573d5f803e3d5ffd5b50505050604051610792907f736574547261646572566f6c756d655469657273000000000000000000000000815260140190565b604051908190038120907f42b1d1aa188f409acc586473ebd45e623b81a5c74ee655df31eae024e54de82f905f90a250505050565b5f546001600160a01b03163314806107e557506107e5600333612c36565b6108315760405162461bcd60e51b815260206004820152601060248201527f6f6e6c79206f776e65722f31726573700000000000000000000000000000000060448201526064016105af565b6002546040517f0b3bea390000000000000000000000000000000000000000000000000000000081527fffffffff0000000000000000000000000000000000000000000000000000000080861660048301528416602482015282151560448201526001600160a01b0390911690630b3bea39906064015f604051808303815f87803b1580156108be575f80fd5b505af11580156108d0573d5f803e3d5ffd5b5050604080517fffffffff000000000000000000000000000000000000000000000000000000008781168252861660208201528415158183015290517f76c4107871f5039956c4e3e9390fdcf10eaf448f85a10d41b837e3e55273219b9350908190036060019150a1505050565b5f546001600160a01b031633146109975760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105af565b6109a081612c5c565b50565b5f546001600160a01b031633146109fc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105af565b6001546040517f14c5ce6c0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906314c5ce6c90610a4990869086908690600401613c9d565b5f604051808303815f87803b158015610a60575f80fd5b505af1158015610a72573d5f803e3d5ffd5b50505050604051610aa6907f73657450657270657475616c4f7261636c657300000000000000000000000000815260130190565b604051908190038120907f42b1d1aa188f409acc586473ebd45e623b81a5c74ee655df31eae024e54de82f905f90a2505050565b5f546001600160a01b03163314610b335760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105af565b6001546040517f30af7c7200000000000000000000000000000000000000000000000000000000815260ff841660048201525f916001600160a01b0316906330af7c729060240161026060405180830381865afa158015610b96573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bba9190613d41565b60c08101516001546040517f1624866d00000000000000000000000000000000000000000000000000000000815260ff87166004820152600f86900b602482015292935090916001600160a01b0390911690631624866d906044015f604051808303815f87803b158015610c2c575f80fd5b505af1158015610c3e573d5f803e3d5ffd5b50506040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f92506001600160a01b03841691506370a0823190602401602060405180830381865afa158015610c9f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cc39190613ea9565b9050610cda6001600160a01b038316303384612d7d565b6040517f776974686472617746726f6d44656661756c7446756e640000000000000000008152601701604051908190038120907f42b1d1aa188f409acc586473ebd45e623b81a5c74ee655df31eae024e54de82f905f90a25050505050565b5f546001600160a01b03163314610d925760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105af565b6001546040517f2017641c0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690632017641c90610ddf90869086908690600401613f2b565b5f604051808303815f87803b158015610df6575f80fd5b505af1158015610e08573d5f803e3d5ffd5b50505050604051610aa6907f736574506f6f6c506172616d00000000000000000000000000000000000000008152600c0190565b5f546001600160a01b03163314610e955760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105af565b6001546040517f37e76c900000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906337e76c9090610ee4908790879087908790600401613bf3565b5f604051808303815f87803b158015610efb575f80fd5b505af1158015610f0d573d5f803e3d5ffd5b50505050604051610792907f73657442726f6b657254696572730000000000000000000000000000000000008152600e0190565b5f546001600160a01b03163314610f9a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105af565b60015f9054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610fe6575f80fd5b505af1158015610ff8573d5f803e3d5ffd5b5050505060405161102c907f756e706175736500000000000000000000000000000000000000000000000000815260070190565b604051908190038120907f42b1d1aa188f409acc586473ebd45e623b81a5c74ee655df31eae024e54de82f905f90a2565b5f546001600160a01b031633146110b65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105af565b6001546040517f40730ae30000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906340730ae3906111019085908590600401613f88565b5f604051808303815f87803b158015611118575f80fd5b505af115801561112a573d5f803e3d5ffd5b5050505060405161115e907f73657450657270657475616c42617365506172616d7300000000000000000000815260160190565b604051908190038120907f42b1d1aa188f409acc586473ebd45e623b81a5c74ee655df31eae024e54de82f905f90a25050565b5f546001600160a01b031633146111ea5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105af565b6109a081612e0b565b5f546001600160a01b0316331461124c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105af565b6001546040517f52bb1e7600000000000000000000000000000000000000000000000000000000815262ffffff831660048201526001600160a01b03909116906352bb1e76906024015f604051808303815f87803b1580156112ac575f80fd5b505af11580156112be573d5f803e3d5ffd5b5050505060405161065b907f7365744e6f726d616c53746174650000000000000000000000000000000000008152600e0190565b5f546001600160a01b0316331461134b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105af565b6001546040517f59a3970900000000000000000000000000000000000000000000000000000000815260ff8416600482015282151560248201526001600160a01b03909116906359a39709906044015f604051808303815f87803b1580156113b1575f80fd5b505af11580156113c3573d5f803e3d5ffd5b5050505060405161115e907f70617573654c697175696469747950726f766973696f6e000000000000000000815260170190565b5f546001600160a01b031633146114505760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105af565b6001546040517f5e4555b800000000000000000000000000000000000000000000000000000000815260ff831660048201526001600160a01b0390911690635e4555b8906024015f604051808303815f87803b1580156114ae575f80fd5b505af11580156114c0573d5f803e3d5ffd5b5050505060405161065b907f72756e4c6971756964697479506f6f6c00000000000000000000000000000000815260100190565b5f546001600160a01b0316331461154d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105af565b6109a081612f25565b5f546001600160a01b031633146115af5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105af565b6115b85f612fbd565b565b5f546001600160a01b031633146116135760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105af565b6001546040517f720fc82e0000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063720fc82e9061166090869086908690600401614000565b5f604051808303815f87803b158015611677575f80fd5b505af1158015611689573d5f803e3d5ffd5b50505050604051610aa6907f73657450657270657475616c5269736b506172616d7300000000000000000000815260160190565b5f546001600160a01b031633146117165760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105af565b6001546040517f79670ef200000000000000000000000000000000000000000000000000000000815262ffffff831660048201526001600160a01b03909116906379670ef2906024015f604051808303815f87803b158015611776575f80fd5b505af1158015611788573d5f803e3d5ffd5b5050505060405161065b907f736574456d657267656e63795374617465000000000000000000000000000000815260110190565b5f546001600160a01b031633146118155760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105af565b6109a081613024565b5f546001600160a01b031633148061183c575061183c600333612c36565b6118885760405162461bcd60e51b815260206004820152601060248201527f6f6e6c79206f776e65722f31726573700000000000000000000000000000000060448201526064016105af565b60015f9054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156118d4575f80fd5b505af11580156118e6573d5f803e3d5ffd5b5050505060405161102c907f7061757365000000000000000000000000000000000000000000000000000000815260050190565b5f546001600160a01b031633146119735760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105af565b6001546040517f88e27e2f0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906388e27e2f906119c2908790879087908790600401613bf3565b5f604051808303815f87803b1580156119d9575f80fd5b505af11580156119eb573d5f803e3d5ffd5b50505050604051610792907f73657442726f6b6572566f6c756d655469657273000000000000000000000000815260140190565b5f546001600160a01b03163314611a785760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105af565b6001546040517fa2dfde100000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063a2dfde1090611ac7908790879087908790600401614027565b5f604051808303815f87803b158015611ade575f80fd5b505af1158015611af0573d5f803e3d5ffd5b50505050604051610792907f73657450657270657475616c506172616d506169720000000000000000000000815260150190565b5f546001600160a01b03163314611b7d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105af565b6001546040517fa65dbc9900000000000000000000000000000000000000000000000000000000815262ffffff831660048201526001600160a01b039091169063a65dbc99906024015f604051808303815f87803b158015611bdd575f80fd5b505af1158015611bef573d5f803e3d5ffd5b5050505060405161065b907f616374697661746550657270657475616c000000000000000000000000000000815260110190565b5f546001600160a01b03163314611c7c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105af565b6001546040517faac90c9100000000000000000000000000000000000000000000000000000000815260ff831660048201526001600160a01b039091169063aac90c91906024015f604051808303815f87803b158015611cda575f80fd5b505af1158015611cec573d5f803e3d5ffd5b5050505060405161065b907f736574426c6f636b44656c6179000000000000000000000000000000000000008152600d0190565b5f546001600160a01b03163314611d795760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105af565b6001546040517fc0bb383400000000000000000000000000000000000000000000000000000000815260ff84166004820152600f83900b60248201526001600160a01b039091169063c0bb3834906044015f604051808303815f87803b158015611de1575f80fd5b505af1158015611df3573d5f803e3d5ffd5b5050505060405161115e907f7472616e736665724561726e696e6773546f54726561737572790000000000008152601a0190565b5f546001600160a01b03163314611e805760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105af565b600154604080517f8eec5d7000000000000000000000000000000000000000000000000000000000815290515f926001600160a01b031691638eec5d709160048083019260209291908290030181865afa158015611ee0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f04919061405f565b90505f8360ff16118015611f1e57508060ff168360ff1611155b611f6a5760405162461bcd60e51b815260206004820152601760248201527f706f6f6c20696e646578206f7574206f662072616e676500000000000000000060448201526064016105af565b6001546040517f30af7c7200000000000000000000000000000000000000000000000000000000815260ff851660048201525f916001600160a01b0316906330af7c729060240161026060405180830381865afa158015611fcd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ff19190613d41565b90505f6120028483608001516130bc565b60c08301516001546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526024810184905292935090919082169063095ea7b3906044016020604051808303815f875af1158015612075573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612099919061407a565b506120af6001600160a01b038216333085612d7d565b6001546040517fc63f793500000000000000000000000000000000000000000000000000000000815260ff88166004820152600f87900b60248201526001600160a01b039091169063c63f7935906044015f604051808303815f87803b158015612117575f80fd5b505af1158015612129573d5f803e3d5ffd5b5050505060405161215d907f6465706f736974546f44656661756c7446756e64000000000000000000000000815260140190565b604051908190038120907f42b1d1aa188f409acc586473ebd45e623b81a5c74ee655df31eae024e54de82f905f90a2505050505050565b5f546001600160a01b031633146121ed5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105af565b6001546040517fd3a29fea0000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063d3a29fea9061223c908790879087908790600401613bf3565b5f604051808303815f87803b158015612253575f80fd5b505af1158015612265573d5f803e3d5ffd5b50505050604051610792907f73657454726164657254696572730000000000000000000000000000000000008152600e0190565b5f546001600160a01b031633146122f25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105af565b6001546040517fd56811ac0000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301529091169063d56811ac906024015f604051808303815f87803b15801561234f575f80fd5b505af1158015612361573d5f803e3d5ffd5b5050505060405161065b907f73657450657270657475616c506f6f6c466163746f7279000000000000000000815260170190565b5f546001600160a01b031633146123ee5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105af565b6001546040517fd87305e60000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063d87305e690612443908a908a908a908a908a908a908a90600401614095565b5f604051808303815f87803b15801561245a575f80fd5b505af115801561246c573d5f803e3d5ffd5b505050506040516124a0907f63726561746550657270657475616c00000000000000000000000000000000008152600f0190565b604051908190038120907f42b1d1aa188f409acc586473ebd45e623b81a5c74ee655df31eae024e54de82f905f90a250505050505050565b60606124e4600361313d565b905090565b5f546001600160a01b031633146125425760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105af565b6001546040517fea8e1d580000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063ea8e1d58906125919087908790879087906004016140f6565b5f604051808303815f87803b1580156125a8575f80fd5b505af11580156125ba573d5f803e3d5ffd5b50505050604051610792907f73657446656573466f7244657369676e6174696f6e0000000000000000000000815260150190565b5f546001600160a01b031633146126475760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105af565b6001546040517fee55ba310000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063ee55ba31906126949086908690869060040161415b565b5f604051808303815f87803b1580156126ab575f80fd5b505af11580156126bd573d5f803e3d5ffd5b50505050604051610aa6907f73657450657270657475616c506172616d000000000000000000000000000000815260110190565b5f80546001600160a01b0316331461274b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105af565b6001546040517ff20bcadb0000000000000000000000000000000000000000000000000000000081526001600160a01b03878116600483015261ffff87166024830152600f86810b604484015285900b60648301525f92169063f20bcadb906084016020604051808303815f875af11580156127c9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127ed919061405f565b6040517f6372656174654c6971756964697479506f6f6c000000000000000000000000008152909150601301604051908190038120907f42b1d1aa188f409acc586473ebd45e623b81a5c74ee655df31eae024e54de82f905f90a290505b949350505050565b5f546001600160a01b031633146128ac5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105af565b6001546040517ff2ede6ae00000000000000000000000000000000000000000000000000000000815262ffffff831660048201526001600160a01b039091169063f2ede6ae906024015f604051808303815f87803b15801561290c575f80fd5b505af115801561291e573d5f803e3d5ffd5b5050505060405161065b907f746f67676c6550657270456d657267656e637953746174650000000000000000815260180190565b5f546001600160a01b031633146129ab5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105af565b6001600160a01b038116612a275760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016105af565b6109a081612fbd565b5f546001600160a01b03163314612a895760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105af565b6001546040517ffa9f4d5f00000000000000000000000000000000000000000000000000000000815262ffffff841660048201526001600160a01b0383811660248301529091169063fa9f4d5f906044015f604051808303815f87803b158015612af1575f80fd5b505af1158015612b03573d5f803e3d5ffd5b5050505060405161115e907f7365744f7261636c65466163746f7279466f7250657270657475616c000000008152601c0190565b5f546001600160a01b03163314612b905760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105af565b6001546040517fff3e541300000000000000000000000000000000000000000000000000000000815262ffffff831660048201526001600160a01b039091169063ff3e5413906024015f604051808303815f87803b158015612bf0575f80fd5b505af1158015612c02573d5f803e3d5ffd5b5050505060405161065b907f64656163746976617465506572700000000000000000000000000000000000008152600e0190565b6001600160a01b0381165f90815260018301602052604081205415155b90505b92915050565b6001600160a01b038116612cb25760405162461bcd60e51b815260206004820152600b60248201527f7a726f206164647265737300000000000000000000000000000000000000000060448201526064016105af565b6002546001600160a01b0390811690821603612d105760405162461bcd60e51b815260206004820152600960248201527f6e6f206368616e6765000000000000000000000000000000000000000000000060448201526064016105af565b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081179091556040519081527f81dc53a4a96b62e22d136ee123337790e7f96dc45f05f34b1ad589f16e8a20f2906020015b60405180910390a150565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052612e05908590613150565b50505050565b6001600160a01b038116612e615760405162461bcd60e51b815260206004820152600b60248201527f7a726f206164647265737300000000000000000000000000000000000000000060448201526064016105af565b6001546001600160a01b0390811690821603612ebf5760405162461bcd60e51b815260206004820152600960248201527f6e6f206368616e6765000000000000000000000000000000000000000000000060448201526064016105af565b600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081179091556040519081527f198db6e425fb8aafd1823c6ca50be2d51e5764571a5ae0f0f21c6812e45def0b90602001612d72565b6001600160a01b038116612f7b5760405162461bcd60e51b815260206004820152600960248201527f7a65726f2061646472000000000000000000000000000000000000000000000060448201526064016105af565b612f86600382613239565b506040516001600160a01b038216907f24e26b452ca1e102cad22007f42eea31243ae395c1821fd8507d18e1580605cc905f90a250565b5f80546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811661307a5760405162461bcd60e51b815260206004820152600960248201527f7a65726f2061646472000000000000000000000000000000000000000000000060448201526064016105af565b61308560038261324d565b506040516001600160a01b038216907fc98533327a8997b58cc961ed73fcc8bbf91423de3bce76586d0fc39d8a6ed0f5905f90a250565b5f8083600f0b12156131105760405162461bcd60e51b815260206004820152600e60248201527f6e656761746976652076616c756500000000000000000000000000000000000060448201526064016105af565b6801000000000000000061312583600a6142c3565b84600f0b61313391906142d1565b612c53919061431c565b60605f61314983613261565b9392505050565b5f6131a4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166132ba9092919063ffffffff16565b80519091501561323457808060200190518101906131c2919061407a565b6132345760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016105af565b505050565b5f612c53836001600160a01b0384166132c8565b5f612c53836001600160a01b038416613314565b6060815f018054806020026020016040519081016040528092919081815260200182805480156132ae57602002820191905f5260205f20905b81548152602001906001019080831161329a575b50505050509050919050565b606061284b84845f856133f7565b5f81815260018301602052604081205461330d57508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155612c56565b505f612c56565b5f81815260018301602052604081205480156133ee575f6133366001836143a8565b85549091505f90613349906001906143a8565b90508181146133a8575f865f018281548110613367576133676143bb565b905f5260205f200154905080875f018481548110613387576133876143bb565b5f918252602080832090910192909255918252600188019052604090208390555b85548690806133b9576133b96143e8565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050612c56565b5f915050612c56565b60608247101561346f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016105af565b6001600160a01b0385163b6134c65760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105af565b5f80866001600160a01b031685876040516134e19190614415565b5f6040518083038185875af1925050503d805f811461351b576040519150601f19603f3d011682016040523d82523d5f602084013e613520565b606091505b509150915061353082828661353b565b979650505050505050565b6060831561354a575081613149565b82511561355a5782518084602001fd5b8160405162461bcd60e51b81526004016105af9190614430565b6001600160a01b03811681146109a0575f80fd5b5f60208284031215613598575f80fd5b813561314981613574565b5f8083601f8401126135b3575f80fd5b50813567ffffffffffffffff8111156135ca575f80fd5b6020830191508360208260051b85010111156135e4575f80fd5b9250929050565b5f805f80604085870312156135fe575f80fd5b843567ffffffffffffffff80821115613615575f80fd5b613621888389016135a3565b90965094506020870135915080821115613639575f80fd5b50613646878288016135a3565b95989497509550505050565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114613681575f80fd5b919050565b80151581146109a0575f80fd5b5f805f606084860312156136a5575f80fd5b6136ae84613652565b92506136bc60208501613652565b915060408401356136cc81613686565b809150509250925092565b803562ffffff81168114613681575f80fd5b8060408101831015612c56575f80fd5b5f805f60a0848603121561370b575f80fd5b613714846136d7565b925061372385602086016136e9565b915061373285606086016136e9565b90509250925092565b60ff811681146109a0575f80fd5b80600f0b81146109a0575f80fd5b5f8060408385031215613768575f80fd5b82356137738161373b565b9150602083013561378381613749565b809150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610260810167ffffffffffffffff811182821017156137df576137df61378e565b60405290565b5f82601f8301126137f4575f80fd5b813567ffffffffffffffff8082111561380f5761380f61378e565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156138555761385561378e565b8160405283815286602085880101111561386d575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f805f6060848603121561389e575f80fd5b83356138a98161373b565b9250602084013567ffffffffffffffff8111156138c4575f80fd5b6138d0868287016137e5565b92505060408401356136cc81613749565b8060e08101831015612c56575f80fd5b5f806101008385031215613903575f80fd5b61390c836136d7565b915061391b84602085016138e1565b90509250929050565b5f60208284031215613934575f80fd5b612c53826136d7565b5f806040838503121561394e575f80fd5b82356139598161373b565b9150602083013561378381613686565b5f60208284031215613979575f80fd5b81356131498161373b565b8060a08101831015612c56575f80fd5b806101808101831015612c56575f80fd5b5f805f61024084860312156139b8575f80fd5b6139c1846136d7565b92506139d08560208601613984565b91506137328560c08601613994565b5f805f80608085870312156139f2575f80fd5b6139fb856136d7565b9350602085013567ffffffffffffffff811115613a16575f80fd5b613a22878288016137e5565b9350506040850135613a3381613749565b91506060850135613a4381613749565b939692955090935050565b5f805f805f805f6103c0888a031215613a65575f80fd5b8735613a708161373b565b9650613a7f8960208a016136e9565b9550613a8e8960608a016136e9565b9450613a9d8960a08a016138e1565b9350613aad896101808a01613984565b9250613abd896102208a01613994565b91506103a0880135905092959891949750929550565b602080825282518282018190525f9190848201906040850190845b81811015613b135783516001600160a01b031683529284019291840191600101613aee565b50909695505050505050565b5f805f60608486031215613b31575f80fd5b6138a9846136d7565b61ffff811681146109a0575f80fd5b5f805f8060808587031215613b5c575f80fd5b8435613b6781613574565b93506020850135613b7781613b3a565b92506040850135613a3381613749565b5f8060408385031215613b98575f80fd5b613ba1836136d7565b9150602083013561378381613574565b8183525f60208085019450825f5b85811015613be8578135613bd281613b3a565b61ffff1687529582019590820190600101613bbf565b509495945050505050565b604081528360408201525f7f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff851115613c2a575f80fd5b8460051b808760608501378201828103606090810160208501526135309082018587613bb1565b805f5b6002811015612e05577fffffffff00000000000000000000000000000000000000000000000000000000613c8783613652565b1684526020938401939190910190600101613c54565b62ffffff8416815260a08101613cb66020830185613c51565b61284b6060830184613c51565b805161368181613686565b80516136818161373b565b8051600381900b8114613681575f80fd5b805161368181613b3a565b805161368181613574565b805167ffffffffffffffff81168114613681575f80fd5b805161368181613749565b80516fffffffffffffffffffffffffffffffff81168114613681575f80fd5b5f6102608284031215613d52575f80fd5b613d5a6137bb565b613d6383613cc3565b8152613d7160208401613cce565b6020820152613d8260408401613cce565b6040820152613d9360608401613cd9565b6060820152613da460808401613cce565b6080820152613db560a08401613cea565b60a0820152613dc660c08401613cf5565b60c0820152613dd760e08401613d00565b60e0820152610100613dea818501613d17565b90820152610120613dfc848201613cf5565b90820152610140613e0e848201613d17565b90820152610160613e20848201613d17565b90820152610180613e32848201613d17565b908201526101a0613e44848201613d17565b908201526101c0613e56848201613d17565b908201526101e0613e68848201613d22565b90820152610200613e7a848201613d22565b90820152610220613e8c848201613d22565b90820152610240613e9e848201613d17565b908201529392505050565b5f60208284031215613eb9575f80fd5b5051919050565b5f5b83811015613eda578181015183820152602001613ec2565b50505f910152565b5f8151808452613ef9816020860160208601613ec0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60ff84168152606060208201525f613f466060830185613ee2565b905082600f0b6040830152949350505050565b805f5b6007811015612e05578135613f7081613749565b600f0b84526020938401939190910190600101613f5c565b62ffffff8316815261010081016131496020830184613f59565b805f5b6005811015612e05578135613fb981613749565b600f0b84526020938401939190910190600101613fa5565b805f5b600c811015612e05578135613fe881613749565b600f0b84526020938401939190910190600101613fd4565b62ffffff84168152610240810161401a6020830185613fa2565b61284b60c0830184613fd1565b62ffffff85168152608060208201525f6140446080830186613ee2565b600f94850b60408401529290930b6060909101529392505050565b5f6020828403121561406f575f80fd5b81516131498161373b565b5f6020828403121561408a575f80fd5b815161314981613686565b60ff881681526103c081016140ad6020830189613c51565b6140ba6060830188613c51565b6140c760a0830187613f59565b6140d5610180830186613fa2565b6140e3610220830185613fd1565b826103a083015298975050505050505050565b604080825281018490525f856060830182805b8881101561413a57833563ffffffff8116808214614125578384fd5b84525060209384019390920191600101614109565b5050838103602085015261414f818688613bb1565b98975050505050505050565b62ffffff84168152606060208201525f613f466060830185613ee2565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b600181815b808511156141fe57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156141e4576141e4614178565b808516156141f157918102915b93841c93908002906141aa565b509250929050565b5f8261421457506001612c56565b8161422057505f612c56565b816001811461423657600281146142405761425c565b6001915050612c56565b60ff84111561425157614251614178565b50506001821b612c56565b5060208310610133831016604e8410600b841016171561427f575081810a612c56565b61428983836141a5565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156142bb576142bb614178565b029392505050565b5f612c5360ff841683614206565b8082025f82127f80000000000000000000000000000000000000000000000000000000000000008414161561430857614308614178565b8181058314821517612c5657612c56614178565b5f8261434f577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f8000000000000000000000000000000000000000000000000000000000000000831416156143a3576143a3614178565b500590565b81810381811115612c5657612c56614178565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b5f8251614426818460208701613ec0565b9190910192915050565b602081525f612c536020830184613ee256fea2646970667358221220378fd3b44eb6c6baaccd4f1ae8e166e8a4178bcc4c7b47199b699e267fdf3fc764736f6c63430008150033000000000000000000000000ab7794ecd2c8e9decc6b577864b40ebf9204720f000000000000000000000000337a3778244159f37c016196a8e1038a811a34c9