60a06040523480156200001157600080fd5b5060408051808201825260168082527f546f6b656e5f4469766964656e645f547261636b65720000000000000000000060208084018290528451808601909552918452908301529081816003620000698382620001ab565b506004620000788282620001ab565b505050620000956200008f620000b060201b60201c565b620000b4565b505061025860115568056bc75e2d6310000060805262000277565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200013157607f821691505b6020821081036200015257634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001a657600081815260208120601f850160051c81016020861015620001815750805b601f850160051c820191505b81811015620001a2578281556001016200018d565b5050505b505050565b81516001600160401b03811115620001c757620001c762000106565b620001df81620001d884546200011c565b8462000158565b602080601f831160018114620002175760008415620001fe5750858301515b600019600386901b1c1916600185901b178555620001a2565b600085815260208120601f198616915b82811015620002485788860151825594840194600190910190840162000227565b5085821015620002675787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b608051611cc56200029a600039600081816104b40152610afe0152611cc56000f3fe608060405234801561001057600080fd5b506004361061021c5760003560e01c806380b0226411610125578063bc4c4b37116100ad578063e7841ec01161007c578063e7841ec0146104fc578063e98030c714610504578063f2fde38b14610517578063fbcbc0f11461052a578063ffb2c4791461053d57600080fd5b8063bc4c4b371461049c578063be10b614146104af578063dd62ed3e146104d6578063e30443bc146104e957600080fd5b806395d89b41116100f457806395d89b4114610432578063a457c2d71461043a578063a8b9d2401461044d578063a9059cbb14610460578063aafd847a1461047357600080fd5b806380b02264146103d257806385a6b3ae146104055780638da5cb5b1461040e57806391b89fba1461041f57600080fd5b806331e79db0116101a857806351c2a0e31161017757806351c2a0e31461037d5780636a474002146103905780636f2789ec1461039857806370a08231146103a1578063715018a6146103ca57600080fd5b806331e79db0146102da57806339509351146102ef5780634e7b827f146103025780635183d6fd1461032557600080fd5b8063226cfa3d116101ef578063226cfa3d1461027c57806323b872dd1461029c57806327ce0147146102af5780633009a609146102c2578063313ce567146102cb57600080fd5b806306fdde0314610221578063095ea7b31461023f57806309bbedde1461026257806318160ddd14610274575b600080fd5b61022961056b565b60405161023691906119bb565b60405180910390f35b61025261024d366004611a1e565b6105fd565b6040519015158152602001610236565b600a545b604051908152602001610236565b600254610266565b61026661028a366004611a4a565b60106020526000908152604090205481565b6102526102aa366004611a67565b610617565b6102666102bd366004611a4a565b61063b565b610266600e5481565b60405160128152602001610236565b6102ed6102e8366004611a4a565b610697565b005b6102526102fd366004611a1e565b610735565b610252610310366004611a4a565b600f6020526000908152604090205460ff1681565b610338610333366004611aa8565b610757565b604080516001600160a01b0390991689526020890197909752958701949094526060860192909252608085015260a084015260c083015260e082015261010001610236565b6102ed61038b366004611aa8565b6107c6565b6102ed610897565b61026660115481565b6102666103af366004611a4a565b6001600160a01b031660009081526020819052604090205490565b6102ed61093d565b6103ed73694200a68b18232916353250955be220e88c5cbb81565b6040516001600160a01b039091168152602001610236565b61026660095481565b6005546001600160a01b03166103ed565b61026661042d366004611a4a565b61094f565b61022961095a565b610252610448366004611a1e565b610969565b61026661045b366004611a4a565b6109e4565b61025261046e366004611a1e565b610a10565b610266610481366004611a4a565b6001600160a01b031660009081526008602052604090205490565b6102526104aa366004611acf565b610a1e565b6102667f000000000000000000000000000000000000000000000000000000000000000081565b6102666104e4366004611b08565b610aa9565b6102ed6104f7366004611a1e565b610ad4565b600e54610266565b6102ed610512366004611aa8565b610b65565b6102ed610525366004611a4a565b610cb2565b610338610538366004611a4a565b610d28565b61055061054b366004611aa8565b610e11565b60408051938452602084019290925290820152606001610236565b60606003805461057a90611b36565b80601f01602080910402602001604051908101604052809291908181526020018280546105a690611b36565b80156105f35780601f106105c8576101008083540402835291602001916105f3565b820191906000526020600020905b8154815290600101906020018083116105d657829003601f168201915b5050505050905090565b60003361060b818585610f2e565b60019150505b92915050565b600033610625858285611052565b6106308585856110cc565b506001949350505050565b6001600160a01b03811660009081526007602090815260408083205491839052822054600654600160801b9261068d92610688926106829161067d9190611129565b61113c565b9061114c565b61118a565b6106119190611b86565b61069f61119d565b6001600160a01b0381166000908152600f602052604090205460ff16156106c557600080fd5b6001600160a01b0381166000908152600f60205260408120805460ff191660011790556106f39082906111f7565b6106fe600a82611256565b6040516001600160a01b038216907fa878b31040b2e6d0a9a3d3361209db3908ba62014b0dca52adbaee451d128b2590600090a250565b60003361060b8185856107488383610aa9565b6107529190611ba8565b610f2e565b60008060008060008060008061076c600a5490565b89106107915750600096506000199550859450869350839250829150819050806107bb565b600061079e600a8b611391565b90506107a981610d28565b98509850985098509850985098509850505b919395975091939597565b6107ce61119d565b60006107d960025490565b116108185760405162461bcd60e51b815260040161080f906020808252600490820152634e6f6e6560e01b604082015260600190565b60405180910390fd5b80156108945761084b61082a60025490565b61083883600160801b611129565b6108429190611b86565b600654906113c4565b60065560405181815233907fa493a9229478c3fcd73f66d2cdeb7f94fd0f341da924d1054236d784541165119060200160405180910390a260095461089090826113c4565b6009555b50565b60405162461bcd60e51b815260206004820152606760248201527f546f6b656e5f4469766964656e645f547261636b65723a20776974686472617760448201527f4469766964656e642064697361626c65642e20557365207468652027636c616960648201527f6d272066756e6374696f6e206f6e20746865206d61696e20546f6b656e20636f608482015266373a3930b1ba1760c91b60a482015260c40161080f565b565b61094561119d565b61093b60006113d0565b6000610611826109e4565b60606004805461057a90611b36565b600033816109778286610aa9565b9050838110156109d75760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161080f565b6106308286868403610f2e565b6001600160a01b03811660009081526008602052604081205461061190610a0a8461063b565b90611422565b60003361060b8185856110cc565b6000610a2861119d565b6000610a338461142e565b90508015610a9f576001600160a01b038416600081815260106020526040908190204290555184151591907fa2c38e2d2fb7e3e1912d937fd1ca11ed6d51864dee4cfa7a7bf02becd7acf09290610a8d9085815260200190565b60405180910390a36001915050610611565b5060009392505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610adc61119d565b6001600160a01b0382166000908152600f602052604090205460ff16610b61577f00000000000000000000000000000000000000000000000000000000000000008110610b3e57610b2d82826111f7565b610b39600a83836115a3565b610b54565b610b498260006111f7565b610b54600a83611256565b610b5f826001610a1e565b505b5050565b610b6d61119d565b610e108110158015610b825750620151808111155b610c085760405162461bcd60e51b815260206004820152604b60248201527f546f6b656e5f4469766964656e645f547261636b65723a20636c61696d57616960448201527f74206d757374206265207570646174656420746f206265747765656e2031206160648201526a6e6420323420686f75727360a81b608482015260a40161080f565b6011548103610c7f5760405162461bcd60e51b815260206004820152603d60248201527f546f6b656e5f4469766964656e645f547261636b65723a2043616e6e6f74207560448201527f706461746520636c61696d5761697420746f2073616d652076616c7565000000606482015260840161080f565b60115460405182907f474ea64804364a1e29a4487ddb63c3342a2dd826ccd8acf48825e680a0e6f20f90600090a3601155565b610cba61119d565b6001600160a01b038116610d1f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161080f565b610894816113d0565b806000808080808080610d3c600a8961164c565b9650600019955060008712610d9e57600e54871115610d6a57600e54610d63908890611697565b9550610d9e565b600e54600a5460009110610d7f576000610d8e565b600e54600a54610d8e91611422565b9050610d9a888261114c565b9650505b610da7886109e4565b9450610db28861063b565b6001600160a01b038916600090815260106020526040902054909450925082610ddc576000610dea565b601154610dea9084906113c4565b9150428211610dfa576000610e04565b610e048242611422565b9050919395975091939597565b600a5460009081908190808203610e33575050600e5460009250829150610f27565b600e546000805a90506000805b8984108015610e4e57508582105b15610f165784610e5d81611bbb565b600a5490965086109050610e7057600094505b6000600a6000018681548110610e8857610e88611bd4565b60009182526020808320909101546001600160a01b03168083526010909152604090912054909150610eb9906116d4565b15610edc57610ec9816001610a1e565b15610edc5781610ed881611bbb565b9250505b82610ee681611bbb565b93505060005a905080851115610f0d57610f0a610f038683611422565b87906113c4565b95505b9350610e409050565b600e85905590975095509193505050505b9193909250565b6001600160a01b038316610f905760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161080f565b6001600160a01b038216610ff15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161080f565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061105e8484610aa9565b905060001981146110c657818110156110b95760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161080f565b6110c68484848403610f2e565b50505050565b60405162461bcd60e51b815260206004820152602c60248201527f546f6b656e5f4469766964656e645f547261636b65723a204e6f207472616e7360448201526b19995c9cc8185b1b1bddd95960a21b606482015260840161080f565b60006111358284611bea565b9392505050565b6000818181121561061157600080fd5b6000806111598385611c01565b90506000831215801561116c5750838112155b80611181575060008312801561118157508381125b61113557600080fd5b60008082121561119957600080fd5b5090565b6005546001600160a01b0316331461093b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161080f565b6001600160a01b038216600090815260208190526040902054808211156112365760006112248383611422565b905061123084826116fb565b50610b5f565b80821015610b5f57600061124a8284611422565b90506110c6848261175f565b6001600160a01b038116600090815260038301602052604090205460ff1661127c575050565b6001600160a01b03811660009081526003830160209081526040808320805460ff19169055600180860183528184208490556002860190925282205484549092916112c691611c29565b905060008460000182815481106112df576112df611bd4565b60009182526020808320909101546001600160a01b0390811680845260028901909252604080842087905590871683528220919091558554909150819086908590811061132e5761132e611bd4565b600091825260209091200180546001600160a01b0319166001600160a01b0392909216919091179055845485908061136857611368611c3c565b600082815260209020810160001990810180546001600160a01b03191690550190555050505050565b60008260000182815481106113a8576113a8611bd4565b6000918252602090912001546001600160a01b03169392505050565b60006111358284611ba8565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006111358284611c29565b60008061143a836109e4565b9050801561159a576001600160a01b03831660009081526008602052604090205461146590826113c4565b6001600160a01b038416600081815260086020526040908190209290925590517fee503bee2bb6a87e57bc57db795f98137327401a0e7b7ce42e37926cc1a9ca4d906114b49084815260200190565b60405180910390a260405163a9059cbb60e01b81526001600160a01b03841660048201526024810182905260009073694200a68b18232916353250955be220e88c5cbb9063a9059cbb906044016020604051808303816000875af1158015611520573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115449190611c52565b905080611593576001600160a01b03841660009081526008602052604090205461156e9083611422565b6001600160a01b03909416600090815260086020526040812094909455509192915050565b5092915050565b50600092915050565b6001600160a01b038216600090815260038401602052604090205460ff16156115e8576001600160a01b03821660009081526001840160205260409020819055610b5f565b6001600160a01b03821660008181526003850160209081526040808320805460ff19166001908117909155878101835281842086905587546002890184529184208290558101875586835291200180546001600160a01b0319169091179055505050565b6001600160a01b038116600090815260038301602052604081205460ff166116775750600019610611565b506001600160a01b03166000908152600291909101602052604090205490565b6000806116a48385611c6f565b9050600083121580156116b75750838113155b806111815750600083128015611181575083811361113557600080fd5b6000428211156116e657506000919050565b6011546116f34284611422565b101592915050565b61170582826117a3565b61173f61172061067d8360065461112990919063ffffffff16565b6001600160a01b03841660009081526007602052604090205490611697565b6001600160a01b0390921660009081526007602052604090209190915550565b6117698282611876565b61173f61178461067d8360065461112990919063ffffffff16565b6001600160a01b0384166000908152600760205260409020549061114c565b6001600160a01b0382166117f95760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161080f565b61180560008383610b5f565b80600260008282546118179190611ba8565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610b6160008383610b5f565b6001600160a01b0382166118d65760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161080f565b6118e282600083610b5f565b6001600160a01b038216600090815260208190526040902054818110156119565760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161080f565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610b5f83600084610b5f565b600060208083528351808285015260005b818110156119e8578581018301518582016040015282016119cc565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461089457600080fd5b60008060408385031215611a3157600080fd5b8235611a3c81611a09565b946020939093013593505050565b600060208284031215611a5c57600080fd5b813561113581611a09565b600080600060608486031215611a7c57600080fd5b8335611a8781611a09565b92506020840135611a9781611a09565b929592945050506040919091013590565b600060208284031215611aba57600080fd5b5035919050565b801515811461089457600080fd5b60008060408385031215611ae257600080fd5b8235611aed81611a09565b91506020830135611afd81611ac1565b809150509250929050565b60008060408385031215611b1b57600080fd5b8235611b2681611a09565b91506020830135611afd81611a09565b600181811c90821680611b4a57607f821691505b602082108103611b6a57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082611ba357634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561061157610611611b70565b600060018201611bcd57611bcd611b70565b5060010190565b634e487b7160e01b600052603260045260246000fd5b808202811582820484141761061157610611611b70565b8082018281126000831280158216821582161715611c2157611c21611b70565b505092915050565b8181038181111561061157610611611b70565b634e487b7160e01b600052603160045260246000fd5b600060208284031215611c6457600080fd5b815161113581611ac1565b818103600083128015838313168383128216171561159357611593611b7056fea26469706673582212200aea945acbc4d6276357ed3abf0d45adb8bace184638dd8f3bef26bf277038e764736f6c63430008130033