0x60a06040523480156200001157600080fd5b5060405162002205380380620022058339810160408190526200003491620000e2565b60016000819055805460ff1916905533806200006a57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000758162000088565b506001600160a01b031660805262000114565b600180546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060208284031215620000f557600080fd5b81516001600160a01b03811681146200010d57600080fd5b9392505050565b6080516120c76200013e600039600081816103d1015281816117df015261185d01526120c76000f3fe608060405234801561001057600080fd5b50600436106101725760003560e01c80635c975abb116100de578063bcdc3cfc11610097578063ef5cfb8c11610071578063ef5cfb8c146103a6578063f2fde38b146103b9578063f7c618c1146103cc578063fef9e8a7146103f357600080fd5b8063bcdc3cfc14610377578063bfca66c914610380578063cdee3c761461039357600080fd5b80635c975abb14610301578063715018a61461030c5780638225323c1461031457806382befcae146103275780638da5cb5b1461033a578063b8f4bd7b1461036457600080fd5b80633a770240116101305780633a77024014610247578063405429c41461026857806343add2e6146102935780634468451b146102c657806346e63586146102d95780635028d05a146102ee57600080fd5b8062c9d50914610177578063150b7a021461019d57806319f101fa146101d45780631ad30cf8146101e9578063221ca18c146101fc5780632917c1451461021c575b600080fd5b61018a610185366004611ac9565b610427565b6040519081526020015b60405180910390f35b6101bb6101ab366004611b49565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610194565b6101e76101e2366004611c0d565b610650565b005b6101e76101f7366004611c85565b610727565b61018a61020a366004611cdc565b60026020526000908152604090205481565b61018a61022a366004611c0d565b600960209081526000928352604080842090915290825290205481565b61025a610255366004611ac9565b610a96565b604051610194929190611d35565b61018a610276366004611c0d565b600a60209081526000928352604080842090915290825290205481565b6102b66102a1366004611cdc565b600b6020526000908152604090205460ff1681565b6040519015158152602001610194565b6101e76102d4366004611d57565b610b1b565b6102e1610c43565b6040516101949190611d7c565b6101e76102fc366004611cdc565b610ca5565b60015460ff166102b6565b6101e7610e1c565b6101e7610322366004611c0d565b610e30565b61018a610335366004611d57565b610e54565b60015461010090046001600160a01b03165b6040516001600160a01b039091168152602001610194565b6101e7610372366004611dc9565b610f68565b61018a60035481565b61034c61038e366004611e81565b6111fe565b6101e76103a1366004611e9a565b611228565b6101e76103b4366004611cdc565b61133d565b6101e76103c7366004611cdc565b6113cc565b61034c7f000000000000000000000000000000000000000000000000000000000000000081565b61034c610401366004611c0d565b60076020908152600092835260408084209091529082529020546001600160a01b031681565b6001600160a01b0380821660009081526008602090815260408083209386168352928152828220805484518184028101840190955280855292938493909283018282801561049457602002820191906000526020600020905b815481526020019060010190808311610480575b5050505050905060008060008351905060005b81811015610642578481815181106104c1576104c1611f1d565b60200260200101519350866001600160a01b0316636352211e856040518263ffffffff1660e01b81526004016104f991815260200190565b602060405180830381865afa158015610516573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061053a9190611f33565b6001600160a01b0316886001600160a01b03160361063a576001600160a01b03871660009081526006602090815260408083208784529091528120546105809042611f66565b6001600160a01b0389166000908152600a60209081526040808320898452909152812054919250906105b35760646105d8565b6001600160a01b0389166000908152600a602090815260408083208984529091529020545b6001600160a01b038a1660009081526002602052604090205490915062015180908290610606908590611f79565b61061790662386f26fc10000611f79565b6106219190611f79565b61062b9190611f90565b6106359086611fb2565b945050505b6001016104a7565b509093505050505b92915050565b610658611407565b6001600160a01b0382166000908152600b602052604090205460ff16156106b55760405162461bcd60e51b815260206004820152600c60248201526b6164646564206265666f726560a01b60448201526064015b60405180910390fd5b6004805460018181019092557f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b039094166001600160a01b0319909416841790556000928352600b60209081526040808520805460ff19169093179092556002905290912055565b61072f61143a565b610737611464565b60008290036107885760405162461bcd60e51b815260206004820152601d60248201527f5374616b696e673a204e6f20746f6b656e4964732070726f766964656400000060448201526064016106ac565b6001600160a01b0381166000908152600b602052604090205460ff166107e35760405162461bcd60e51b815260206004820152601060248201526f3bb937b7339031b7b63632b1ba34b7b760811b60448201526064016106ac565b8160005b81811015610a3257336001600160a01b038416636352211e87878581811061081157610811611f1d565b905060200201356040518263ffffffff1660e01b815260040161083691815260200190565b602060405180830381865afa158015610853573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108779190611f33565b6001600160a01b0316146108bb5760405162461bcd60e51b815260206004820152600b60248201526a3bb937b7339037bbb732b960a91b60448201526064016106ac565b6001600160a01b038316600090815260066020526040812042918787858181106108e7576108e7611f1d565b905060200201358152602001908152602001600020819055503360076000856001600160a01b03166001600160a01b03168152602001908152602001600020600087878581811061093a5761093a611f1d565b60209081029290920135835250818101929092526040908101600090812080546001600160a01b0319166001600160a01b03958616179055928616835260088252808320338452909152902085858381811061099857610998611f1d565b83546001818101865560009586526020808720938102959095013592909101919091556001600160a01b038716845260088352604080852033865290935291909220546109e59250611f66565b6001600160a01b038416600090815260096020526040812090878785818110610a1057610a10611f1d565b60209081029290920135835250810191909152604001600020556001016107e7565b508060036000828254610a459190611fb2565b909155505060405133907f134b166c6094cc1ccbf1e3353ce5c3cd9fd29869051bdb999895854d77cc5ef690610a7e9087908790611fc5565b60405180910390a250610a916001600055565b505050565b6001600160a01b0380821660009081526008602090815260408083209386168352928152828220805484518184028101840190955280855260609492830182828015610b0157602002820191906000526020600020905b815481526020019060010190808311610aed575b50505050509150610b128484610427565b90509250929050565b610b23611407565b6040516370a0823160e01b815230600482015282906001600160a01b038316906370a0823190602401602060405180830381865afa158015610b69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8d9190611ffe565b1015610bd25760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b60448201526064016106ac565b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0382169063a9059cbb906044016020604051808303816000875af1158015610c1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a919190612017565b60606004805480602002602001604051908101604052809291908181526020018280548015610c9b57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610c7d575b5050505050905090565b610cad611407565b6001600160a01b0381166000908152600b602052604090205460ff16610d055760405162461bcd60e51b815260206004820152600d60248201526c37379031b7b63632b1ba34b7b760991b60448201526064016106ac565b6001600160a01b0381166000908152600b60205260408120805460ff191690555b600454811015610e185760048181548110610d4357610d43611f1d565b6000918252602090912001546001600160a01b0390811690831603610e105760048054610d7290600190611f66565b81548110610d8257610d82611f1d565b600091825260209091200154600480546001600160a01b039092169183908110610dae57610dae611f1d565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506004805480610ded57610ded612039565b600082815260209020810160001990810180546001600160a01b03191690550190555b600101610d26565b5050565b610e24611407565b610e2e6000611488565b565b610e38611407565b6001600160a01b03909116600090815260026020526040902055565b6001600160a01b03811660009081526006602090815260408083208584529091528120548103610e865750600061064a565b6001600160a01b0382166000908152600660209081526040808320868452909152812054610eb49042611f66565b6001600160a01b0384166000908152600a6020908152604080832088845290915281205491925090610ee7576064610f0c565b6001600160a01b0384166000908152600a602090815260408083208884529091529020545b6001600160a01b03851660009081526002602052604090205490915062015180908290610f3a908590611f79565b610f4b90662386f26fc10000611f79565b610f559190611f79565b610f5f9190611f90565b95945050505050565b610f7061143a565b610f78611464565b8151600003610fc95760405162461bcd60e51b815260206004820152601d60248201527f5374616b696e673a204e6f20746f6b656e4964732070726f766964656400000060448201526064016106ac565b610fd381836114e2565b815160005b818110156111a1576001600160a01b0383166000908152600760205260408120855190919086908490811061100f5761100f611f1d565b6020026020010151815260200190815260200160002060006101000a8154906001600160a01b03021916905560066000846001600160a01b03166001600160a01b03168152602001908152602001600020600085838151811061107457611074611f1d565b602090810291909101810151825281810192909252604090810160009081208190556001600160a01b0386168082526008845282822033835284528282209082526009909352908120865182908890869081106110d3576110d3611f1d565b602002602001015181526020019081526020016000205490506000600183805490506110ff9190611f66565b905080821461116e57600083828154811061111c5761111c611f1d565b906000526020600020015490508084848154811061113c5761113c611f1d565b60009182526020808320909101929092556001600160a01b038916815260098252604080822093825292909152208290555b8280548061117e5761117e612039565b600082815260208120820160001990810191909155019055505050600101610fd8565b5080600360008282546111b49190611f66565b909155505060405133907ff35c46796392b0deae18b1c5ac3cc50df76b67ef9bcf256df595a3607aab6258906111eb90869061204f565b60405180910390a250610e186001600055565b6004818154811061120e57600080fd5b6000918252602090912001546001600160a01b0316905081565b611230611407565b8281146112745760405162461bcd60e51b8152602060048201526012602482015271496e76616c696420706172616d657465727360701b60448201526064016106ac565b826112b65760405162461bcd60e51b81526020600482015260126024820152714d757374207061737320746f6b656e49647360701b60448201526064016106ac565b60005b83811015611335578282828181106112d3576112d3611f1d565b90506020020135600a6000886001600160a01b03166001600160a01b03168152602001908152602001600020600087878581811061131357611313611f1d565b60209081029290920135835250810191909152604001600020556001016112b9565b505050505050565b61134561143a565b6001600160a01b03811660009081526008602090815260408083203384528252808320805482518185028101850190935280835291929091908301828280156113ad57602002820191906000526020600020905b815481526020019060010190808311611399575b505050505090506113be82826114e2565b506113c96001600055565b50565b6113d4611407565b6001600160a01b0381166113fe57604051631e4fbdf760e01b8152600060048201526024016106ac565b6113c981611488565b6001546001600160a01b03610100909104163314610e2e5760405163118cdaa760e01b81523360048201526024016106ac565b60026000540361145d57604051633ee5aeb560e01b815260040160405180910390fd5b6002600055565b60015460ff1615610e2e5760405163d93c066560e01b815260040160405180910390fd5b600180546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b80516000908190815b818110156117695784818151811061150557611505611f1d565b60200260200101519350336001600160a01b0316866001600160a01b0316636352211e866040518263ffffffff1660e01b815260040161154791815260200190565b602060405180830381865afa158015611564573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115889190611f33565b6001600160a01b03161480156115c257506001600160a01b0386811660009081526007602090815260408083208884529091529020541633145b6115fc5760405162461bcd60e51b815260206004820152600b60248201526a3bb937b7339037bbb732b960a91b60448201526064016106ac565b6001600160a01b03861660009081526006602090815260408083208784529091529020546116655760405162461bcd60e51b81526020600482015260166024820152753bb937b7339039ba30b5b4b73390323ab930ba34b7b760511b60448201526064016106ac565b6001600160a01b03861660009081526006602090815260408083208784529091528120546116939042611f66565b6001600160a01b03881660008181526006602090815260408083208a84528252808320429055928252600a8152828220898352905290812054919250906116db576064611700565b6001600160a01b0388166000908152600a602090815260408083208984529091529020545b6001600160a01b0389166000908152600260205260409020549091506201518090829061172e908590611f79565b61173f90662386f26fc10000611f79565b6117499190611f79565b6117539190611f90565b61175d9086611fb2565b945050506001016114eb565b5081156118ba576001600160a01b038516600090815260056020908152604080832033845290915290205461179f908390611fb2565b6001600160a01b038681166000908152600560209081526040808320338452909152908190209290925590516370a0823160e01b815230600482015283917f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015611826573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184a9190611ffe565b11156118ba576118846001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633846118c1565b60405182815233907fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e04869060200160405180910390a25b5050505050565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092019092526020810180516001600160e01b031663a9059cbb60e01b179052610a919185919060009061191f9084168361196d565b905080516000141580156119445750808060200190518101906119429190612017565b155b15610a9157604051635274afe760e01b81526001600160a01b03841660048201526024016106ac565b606061197b83836000611982565b9392505050565b6060814710156119a75760405163cd78605960e01b81523060048201526024016106ac565b600080856001600160a01b031684866040516119c39190612062565b60006040518083038185875af1925050503d8060008114611a00576040519150601f19603f3d011682016040523d82523d6000602084013e611a05565b606091505b5091509150611a15868383611a1f565b9695505050505050565b606082611a3457611a2f82611a7b565b61197b565b8151158015611a4b57506001600160a01b0384163b155b15611a7457604051639996b31560e01b81526001600160a01b03851660048201526024016106ac565b508061197b565b805115611a8b5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6001600160a01b03811681146113c957600080fd5b8035611ac481611aa4565b919050565b60008060408385031215611adc57600080fd5b8235611ae781611aa4565b91506020830135611af781611aa4565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611b4157611b41611b02565b604052919050565b60008060008060808587031215611b5f57600080fd5b8435611b6a81611aa4565b9350602085810135611b7b81611aa4565b935060408601359250606086013567ffffffffffffffff80821115611b9f57600080fd5b818801915088601f830112611bb357600080fd5b813581811115611bc557611bc5611b02565b611bd7601f8201601f19168501611b18565b91508082528984828501011115611bed57600080fd5b808484018584013760008482840101525080935050505092959194509250565b60008060408385031215611c2057600080fd5b8235611c2b81611aa4565b946020939093013593505050565b60008083601f840112611c4b57600080fd5b50813567ffffffffffffffff811115611c6357600080fd5b6020830191508360208260051b8501011115611c7e57600080fd5b9250929050565b600080600060408486031215611c9a57600080fd5b833567ffffffffffffffff811115611cb157600080fd5b611cbd86828701611c39565b9094509250506020840135611cd181611aa4565b809150509250925092565b600060208284031215611cee57600080fd5b813561197b81611aa4565b60008151808452602080850194506020840160005b83811015611d2a57815187529582019590820190600101611d0e565b509495945050505050565b604081526000611d486040830185611cf9565b90508260208301529392505050565b60008060408385031215611d6a57600080fd5b823591506020830135611af781611aa4565b6020808252825182820181905260009190848201906040850190845b81811015611dbd5783516001600160a01b031683529284019291840191600101611d98565b50909695505050505050565b60008060408385031215611ddc57600080fd5b823567ffffffffffffffff80821115611df457600080fd5b818501915085601f830112611e0857600080fd5b8135602082821115611e1c57611e1c611b02565b8160051b9250611e2d818401611b18565b8281529284018101928181019089851115611e4757600080fd5b948201945b84861015611e6557853582529482019490820190611e4c565b9650611e749050878201611ab9565b9450505050509250929050565b600060208284031215611e9357600080fd5b5035919050565b600080600080600060608688031215611eb257600080fd5b8535611ebd81611aa4565b9450602086013567ffffffffffffffff80821115611eda57600080fd5b611ee689838a01611c39565b90965094506040880135915080821115611eff57600080fd5b50611f0c88828901611c39565b969995985093965092949392505050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611f4557600080fd5b815161197b81611aa4565b634e487b7160e01b600052601160045260246000fd5b8181038181111561064a5761064a611f50565b808202811582820484141761064a5761064a611f50565b600082611fad57634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561064a5761064a611f50565b6020808252810182905260006001600160fb1b03831115611fe557600080fd5b8260051b80856040850137919091016040019392505050565b60006020828403121561201057600080fd5b5051919050565b60006020828403121561202957600080fd5b8151801515811461197b57600080fd5b634e487b7160e01b600052603160045260246000fd5b60208152600061197b6020830184611cf9565b6000825160005b818110156120835760208186018101518583015201612069565b50600092019182525091905056fea26469706673582212204e1fbc2396678718a6eb0fae79154f290d40991d059a0e552fc882f60e81996664736f6c634300081700330000000000000000000000001797601ae5868f28feaa896d37efaa16894f6201