0x608060405234801561001057600080fd5b50600080546001600160a01b03191633179055613ac7806100326000396000f3fe60806040526004361061018b5760003560e01c80637dc0d1d0116100e0578063a36dbdd211610084578063f1a640f811610061578063f1a640f814610331578063f84382031461050d578063f887ea401461053a578063fde2832f1461055a57005b8063a36dbdd2146104b7578063c0d78655146104cd578063c972701a146104ed57005b80638da5cb5b116100bd5780638da5cb5b14610442578063904ac4b7146104625780639413f25c146104825780639d8e2177146104a257005b80637dc0d1d0146103ec57806381acdfa61461040c578063899346c71461042c57005b80633a20e9df1161014757806345a4058d1161012457806345a4058d146103545780635ce893051461037457806361d027b3146103945780636b62da40146103cc57005b80633a20e9df1461025d5780633d474866146103045780633de1b3e01461033157005b80630f1dfe871461019457806313af4035146101b457806319e77383146101d457806321465739146101f45780632a26f17f1461021457806339c6e45d1461024a57005b3661019257005b005b3480156101a057600080fd5b506101926101af366004613488565b61056d565b3480156101c057600080fd5b506101926101cf366004613186565b61069e565b3480156101e057600080fd5b506101926101ef3660046133ac565b6106ea565b34801561020057600080fd5b5061019261020f36600461327b565b610867565b34801561022057600080fd5b5061023461022f366004613302565b610bb1565b60405161024191906135fd565b60405180910390f35b610192610258366004613436565b610ce0565b34801561026957600080fd5b506102f7610278366004613393565b60408051608081018252600080825260208201819052918101829052606081019190915250600090815260066020908152604091829020825160808101845290546001600160401b038082168352600160401b8204811693830193909352600160801b8104831693820193909352600160c01b90920416606082015290565b6040516102419190613716565b34801561031057600080fd5b5061032461031f366004613302565b611368565b604051610241919061358a565b34801561033d57600080fd5b50610346600881565b604051908152602001610241565b34801561036057600080fd5b5061019261036f366004613213565b611476565b34801561038057600080fd5b506102f761038f3660046131c0565b611662565b3480156103a057600080fd5b506002546103b4906001600160a01b031681565b6040516001600160a01b039091168152602001610241565b3480156103d857600080fd5b506101926103e736600461327b565b6116f3565b3480156103f857600080fd5b506003546103b4906001600160a01b031681565b34801561041857600080fd5b50610192610427366004613488565b611d26565b34801561043857600080fd5b5061034660045481565b34801561044e57600080fd5b506000546103b4906001600160a01b031681565b34801561046e57600080fd5b5061019261047d3660046132d6565b611eec565b34801561048e57600080fd5b5061019261049d366004613186565b611f32565b3480156104ae57600080fd5b50610346612011565b3480156104c357600080fd5b5061034660055481565b3480156104d957600080fd5b506101926104e8366004613186565b612020565b3480156104f957600080fd5b50610346610508366004613186565b61218a565b34801561051957600080fd5b5061052d6105283660046131c0565b6121c6565b60405161024191906136e3565b34801561054657600080fd5b506001546103b4906001600160a01b031681565b6101926105683660046133ee565b612245565b6000546001600160a01b031633146105a05760405162461bcd60e51b8152600401610597906136c3565b60405180910390fd5b60008281526006602052604090208054600160401b90046001600160401b031661060c5760405162461bcd60e51b815260206004820152601760248201527f2170726f647563742d646f65732d6e6f742d65786973740000000000000000006044820152606401610597565b81518154604084015160608501516020909501516001600160401b03908116600160401b0267ffffffffffffffff60401b19968216600160c01b029690961677ffffffffffffffff0000000000000000ffffffffffffffff928216600160801b0277ffffffffffffffff0000000000000000ffffffffffffffff19909416919094161791909117161791909117905550565b6000546001600160a01b031633146106c85760405162461bcd60e51b8152600401610597906136c3565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006106f8338585856125ac565b6000818152600860209081526040918290208251606081018452905460ff8116151582526001600160401b0361010082048116938301849052600160481b90910416928101929092529192509061077b5760405162461bcd60e51b81526020600482015260076024820152662165786973747360c81b6044820152606401610597565b6000858152600660209081526040808320815160808101835290546001600160401b038082168352600160401b8204811683860152600160801b82048116938301849052600160c01b90910416606082015291840151919291620f4240916107e29161395e565b6107ec91906137a9565b600085815260086020526040902080546001600160881b031916905583516001600160401b039190911691508190610852576108378785602001516001600160401b0316600161260a565b604084015161084f906001600160401b031682613752565b90505b61085d87338361270f565b5050505050505050565b6003546001600160a01b031633146108ab5760405162461bcd60e51b8152602060048201526007602482015266216f7261636c6560c81b6044820152606401610597565b60006108b9868686866125ac565b600081815260076020908152604091829020825160808101845290546001600160401b038082168352600160401b82048116938301849052600160801b8204811694830194909452600160c01b90049092166060830152919250901580610928575080516001600160401b0316155b15610934575050610baa565b600086815260066020526040902061094b8461281d565b935060006109a4868685606001516001600160401b031686600001516001600160401b03168660000160189054906101000a90046001600160401b03166001600160401b031688604001516001600160401b0316612877565b905060006127108360000160089054906101000a90046001600160401b031685602001516109d2919061395e565b6109dc91906137a9565b6001600160401b031690506109f3816000196138ba565b8213610ba45760008185602001516001600160401b0316610a14919061398d565b60015460405163bbe4f6db60e01b81526001600160a01b038c811660048301529293506000929091169063bbe4f6db9060240160206040518083038186803b158015610a5f57600080fd5b505afa158015610a73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a9791906131a3565b9050610aa48a828561270f565b610abd8a87600001516001600160401b0316600161260a565b6001600160a01b038a166000908152600a602052604081208054849290610ae5908490613752565b9091555050602086015186518c916001600160a01b038f16918a917f1eba783f67334e9b95080299c6a95635568b5bf34dbe80586bc9f938307d7b9c918f918f918f91908a610b3f6001600160401b0384166000196138ba565b604080516001600160a01b0390981688529515156020880152948601939093526001600160401b03918216606086015216608084015260a083015260c0820152600160e08201526101000160405180910390a450506000858152600760205260408120555b50505050505b5050505050565b606081806001600160401b03811115610bcc57610bcc613a55565b604051908082528060200260200182016040528015610c1e57816020015b604080516080810182526000808252602080830182905292820181905260608201528252600019909201910181610bea5790505b50915060005b81811015610cd75760076000868684818110610c4257610c42613a3f565b60209081029290920135835250818101929092526040908101600020815160808101835290546001600160401b038082168352600160401b8204811694830194909452600160801b8104841692820192909252600160c01b90910490911660608201528351849083908110610cb957610cb9613a3f565b60200260200101819052508080610ccf906139f8565b915050610c24565b50505b92915050565b6001600160a01b038416610d1657610cfa6008601261398d565b610d0590600a613812565b610d0f9034613795565b9150610dcb565b60015460405163fca8d47160e01b81526001600160a01b0386811660048301529091169063fca8d4719060240160206040518083038186803b158015610d5b57600080fd5b505afa158015610d6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d939190613376565b610dcb5760405162461bcd60e51b81526020600482015260096024820152682163757272656e637960b81b6044820152606401610597565b600082118015610de157506001600160401b0382105b610e175760405162461bcd60e51b815260206004820152600760248201526610b6b0b933b4b760c91b6044820152606401610597565b600081118015610e2d57506001600160401b0381105b610e615760405162461bcd60e51b81526020600482015260056024820152642173697a6560d81b6044820152606401610597565b6000610e6f338787876125ac565b6000818152600860209081526040918290208251606081018452905460ff8116151582526001600160401b0361010082048116938301849052600160481b90910416928101929092529192509015610ef25760405162461bcd60e51b815260206004820152600660248201526510b7b93232b960d11b6044820152606401610597565b6000878152600660209081526040808320815160808101835290546001600160401b038082168352600160401b8204811694830194909452600160801b81048416928201839052600160c01b90049092166060830152909190620f424090610f5a908761393f565b610f649190613795565b90506001600160a01b038816610fc257808611610fb15760405162461bcd60e51b815260206004820152600b60248201526a216d617267696e3c66656560a81b6044820152606401610597565b610fbb818761398d565b9550610fd5565b610fd588610fd08389613752565b6129d3565b6001600160a01b03881660009081526009602052604090205486101561102b5760405162461bcd60e51b815260206004820152600b60248201526a10b6b4b716b6b0b933b4b760a91b6044820152606401610597565b6000868661103b6008600a613812565b611045919061393f565b61104f9190613795565b905061105d6008600a613812565b8110156110985760405162461bcd60e51b8152602060048201526009602482015268216c6576657261676560b81b6044820152606401610597565b82516001600160401b03168111156110e25760405162461bcd60e51b815260206004820152600d60248201526c216d61782d6c6576657261676560981b6044820152606401610597565b6110ee8987600061260a565b60015460405163bbe4f6db60e01b81526001600160a01b038b81166004830152600092169063bbe4f6db9060240160206040518083038186803b15801561113457600080fd5b505afa158015611148573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116c91906131a3565b90506000816001600160a01b0316637eb711316040518163ffffffff1660e01b815260040160206040518083038186803b1580156111a957600080fd5b505afa1580156111bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e19190613532565b905061271081106112235760405162461bcd60e51b815260206004820152600c60248201526b10baba34b634bd30ba34b7b760a11b6044820152606401610597565b6040518060600160405280600015158152602001896001600160401b031681526020018a6001600160401b03168152506008600089815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160096101000a8154816001600160401b0302191690836001600160401b031602179055509050508b336001600160a01b0316887fe6f0e81a24c1b1c11cfcbbce67e7c5ef361e984c1e4f3528125c93f6f906680d8e8e8e8e60006040516113529594939291906001600160a01b039590951685529215156020850152604084019190915260608301521515608082015260a00190565b60405180910390a4505050505050505050505050565b606081806001600160401b0381111561138357611383613a55565b6040519080825280602002602001820160405280156113ce57816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816113a15790505b50915060005b81811015610cd757600860008686848181106113f2576113f2613a3f565b602090810292909201358352508181019290925260409081016000208151606081018352905460ff8116151582526001600160401b036101008204811694830194909452600160481b900490921690820152835184908390811061145857611458613a3f565b6020026020010181905250808061146e906139f8565b9150506113d4565b6000546001600160a01b031633146114a05760405162461bcd60e51b8152600401610597906136c3565b60006114ae868686866125ac565b6000818152600760205260409020805491925090600160401b90046001600160401b03166114ee5760405162461bcd60e51b8152600401610597906136a0565b8054604080516001600160a01b0388811682528715156020830152600160c01b84046001600160401b0390811683850152600160401b850481166060840181905294166080830152600060a0830181905260c0830181905260e0830152915189928b169186917f1eba783f67334e9b95080299c6a95635568b5bf34dbe80586bc9f938307d7b9c918190036101000190a4600083815260086020526040902080546001600160881b03191690558315611630576000878152600660209081526040808320815160808101835290546001600160401b038082168352600160401b8204811694830194909452600160801b81048416928201839052600160c01b9004831660608201528554909392620f42409261160c9290911661395e565b61161691906137a9565b6001600160401b0316905061162b8184613752565b925050505b81546116489087906001600160401b0316600161260a565b60008381526007602052604081205561085d86898361270f565b604080516080810182526000808252602082018190529181018290526060810182905290611692868587866125ac565b600090815260076020908152604091829020825160808101845290546001600160401b038082168352600160401b8204811693830193909352600160801b8104831693820193909352600160c01b9092041660608201529695505050505050565b6003546001600160a01b031633146117375760405162461bcd60e51b8152602060048201526007602482015266216f7261636c6560c81b6044820152606401610597565b6000611745868686866125ac565b600081815260086020526040902080549192509061010090046001600160401b031661179d5760405162461bcd60e51b81526020600482015260076024820152662165786973747360c81b6044820152606401610597565b6000868152600660209081526040808320815160808101835290546001600160401b038082168352600160401b8204811694830194909452600160801b81048416928201839052600160c01b9004831660608201528454909392620f42409261180e9290916101009091041661395e565b61181891906137a9565b6001600160401b0316905080600a6000896001600160a01b03166001600160a01b0316815260200190815260200160002060008282546118589190613752565b9091555050825460ff1615611a6e5760008060006118798c8c8c8c8c612aba565b60015460405163bbe4f6db60e01b81526001600160a01b038f81166004830152949750929550909350600092169063bbe4f6db9060240160206040518083038186803b1580156118c857600080fd5b505afa1580156118dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061190091906131a3565b90506000821215611948576000611919836000196138ba565b90506119268c838361270f565b84811015611942576119428c8f61193d848961398d565b61270f565b506119e2565b6001600160a01b03811663fbbc7d7f8e6119646008601261398d565b61196f90600a613812565b611979908661393f565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b1580156119bf57600080fd5b505af11580156119d3573d6000803e3d6000fd5b505050506119e28b8e8661270f565b6119ee8b84600161260a565b604080516001600160a01b038d811682528c151560208301529181018b9052606081018690526080810185905260a0810187905260c08101849052600060e08201528d918f16908a907f1eba783f67334e9b95080299c6a95635568b5bf34dbe80586bc9f938307d7b9c906101000160405180910390a450505050611d1b565b611a778561281d565b6000858152600760205260408120855481549398509092611aa9916001600160401b0361010090910481169116613752565b8554611ac490899061010090046001600160401b031661393f565b8354611ae2906001600160401b03600160c01b82048116911661393f565b611aec9190613752565b611af69190613795565b8254909150600160801b90046001600160401b0316611b3357815467ffffffffffffffff60801b1916600160801b426001600160401b0316021782555b845482546001600160401b036101009092048216918491600091611b599185911661376a565b82546101009290920a6001600160401b0381810219909316918316021790915586548454600160481b909104821692508491600891611ba1918591600160401b90041661376a565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550808260000160186101000a8154816001600160401b0302191690836001600160401b0316021790555060086000878152602001908152602001600020600080820160006101000a81549060ff02191690556000820160016101000a8154906001600160401b0302191690556000820160096101000a8154906001600160401b0302191690555050898b6001600160a01b0316877f722a60bf2980ad6565c04c8210c55454af895983660b33099a60a0af5e05037b8c8c8760000160089054906101000a90046001600160401b03168860000160009054906101000a90046001600160401b03168960000160189054906101000a90046001600160401b03168b604051611d10969594939291906001600160a01b0396909616865293151560208601526001600160401b039283166040860152908216606085015216608083015260a082015260c00190565b60405180910390a450505b505050505050505050565b6000546001600160a01b03163314611d505760405162461bcd60e51b8152600401610597906136c3565b600082815260066020908152604091829020825160808101845290546001600160401b038082168352600160401b82048116938301849052600160801b8204811694830194909452600160c01b9004909216606083015215611de65760405162461bcd60e51b815260206004820152600f60248201526e2170726f647563742d65786973747360881b6044820152606401610597565b600082602001516001600160401b031611611e335760405162461bcd60e51b815260206004820152600d60248201526c085b1a5c551a1c995cda1bdb19609a1b6044820152606401610597565b506040805160808101825282516001600160401b039081168252602080850151821681840190815285850151831684860190815260609687015184169685019687526000978852600690925293909520915182549351955194518216600160c01b026001600160c01b03958316600160801b02959095166fffffffffffffffffffffffffffffffff968316600160401b026fffffffffffffffffffffffffffffffff199095169190921617929092179390931617179055565b6000546001600160a01b03163314611f165760405162461bcd60e51b8152600401610597906136c3565b6001600160a01b03909116600090815260096020526040902055565b6001600160a01b0381166000908152600a6020526040902054801561200d576001600160a01b038083166000908152600a6020526040812055600254611f7b918491168361270f565b6002546001600160a01b031663e0062d7983611f996008601261398d565b611fa490600a613812565b611fae908561393f565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b158015611ff457600080fd5b505af1158015612008573d6000803e3d6000fd5b505050505b5050565b61201d6008600a613812565b81565b6000546001600160a01b0316331461204a5760405162461bcd60e51b8152600401610597906136c3565b600180546001600160a01b0319166001600160a01b038316908117909155604080516361d027b360e01b815290516361d027b391600480820192602092909190829003018186803b15801561209e57600080fd5b505afa1580156120b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120d691906131a3565b600280546001600160a01b0319166001600160a01b03928316179055600154604080516307dc0d1d60e41b815290519190921691637dc0d1d0916004808301926020929190829003018186803b15801561212f57600080fd5b505afa158015612143573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216791906131a3565b600380546001600160a01b0319166001600160a01b039290921691909117905550565b60006121986008601261398d565b6121a390600a613812565b6001600160a01b0383166000908152600a6020526040902054610cda919061393f565b60408051606081018252600080825260208201819052918101829052906121ef868587866125ac565b6000908152600860209081526040918290208251606081018452905460ff8116151582526001600160401b036101008204811693830193909352600160481b900490911691810191909152915050949350505050565b6000811161227d5760405162461bcd60e51b81526020600482015260056024820152642173697a6560d81b6044820152606401610597565b600061228b338686866125ac565b6000818152600860209081526040918290208251606081018452905460ff8116151582526001600160401b0361010082048116938301849052600160481b9091041692810192909252919250901561230e5760405162461bcd60e51b815260206004820152600660248201526510b7b93232b960d11b6044820152606401610597565b60008281526007602052604090208054600160401b90046001600160401b031661234a5760405162461bcd60e51b8152600401610597906136a0565b80546001600160401b031684111561236a5780546001600160401b031693505b6000878152600660209081526040808320815160808101835290546001600160401b038082168352600160401b8204811694830194909452600160801b81048416928201839052600160c01b90049092166060830152909190620f4240906123d2908861393f565b6123dc9190613795565b90506001600160a01b0388166124765760006123fa6008601261398d565b61240590600a613812565b61240f908361393f565b905080341015801561243b5750620f424061242d82620f424161393f565b6124379190613795565b3411155b6124705760405162461bcd60e51b8152600401610597906020808252600490820152632166656560e01b604082015260600190565b50612480565b61248088826129d3565b82546000906001600160401b03808216916124a491600160401b909104168961393f565b6124ae9190613795565b604080516060808201835260018083526001600160401b038c8116602080860191825287831686880190815260008f815260088352889020965187549351915168ffffffffffffffffff1990941690151568ffffffffffffffff00191617610100918516919091021770ffffffffffffffff0000000000000000001916600160481b92909316919091029190911790935583516001600160a01b038f1681528d15159381019390935292820184905281018a905260808101919091529091508a90339088907fe6f0e81a24c1b1c11cfcbbce67e7c5ef361e984c1e4f3528125c93f6f906680d9060a00160405180910390a450505050505050505050565b6040516bffffffffffffffffffffffff19606086811b821660208401526034830186905284901b16605482015281151560f81b6068820152600090606901604051602081830303815290604052805190602001209050949350505050565b60015460405163bbe4f6db60e01b81526001600160a01b038581166004830152600092169063bbe4f6db9060240160206040518083038186803b15801561265057600080fd5b505afa158015612664573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061268891906131a3565b90506001600160a01b03811663532f66906126a56008601261398d565b6126b090600a613812565b6126ba908661393f565b6040516001600160e01b031960e084901b16815260048101919091528415156024820152604401600060405180830381600087803b1580156126fb57600080fd5b505af115801561085d573d6000803e3d6000fd5b80158061272357506001600160a01b038216155b1561272d57505050565b60015460405163067aa55560e51b81526001600160a01b038581166004830152600092169063cf54aaa09060240160206040518083038186803b15801561277357600080fd5b505afa158015612787573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127ab919061354b565b60ff1690506127bc6008600a613812565b6127c782600a613812565b6127d1908461393f565b6127db9190613795565b91506001600160a01b038416612803576127fe6001600160a01b03841683612d6a565b612817565b6128176001600160a01b0385168484612e83565b50505050565b60008082116128575760405162461bcd60e51b815260206004820152600660248201526521707269636560d01b6044820152606401610597565b61286260088061398d565b61286d90600a613812565b610cda908361393f565b600080600088156128d9578688106128af5786612894818a61398d565b61289e908861393f565b6128a89190613795565b905061290e565b866128ba898261398d565b6128c4908861393f565b6128ce9190613795565b90506001915061290e565b868811156128ec57866128ba818a61398d565b866128f7898261398d565b612901908861393f565b61290b9190613795565b90505b8342106129aa5760006129236008600a613812565b61292f9061271061393f565b61293d906301da9c0061393f565b612947864261398d565b612951888a61393f565b61295b919061393f565b6129659190613795565b9050821561297e576129778183613752565b91506129a8565b8082101561299b57612990828261398d565b9150600192506129a8565b6129a5818361398d565b91505b505b81156129c3576129bc816000196138ba565b92506129c7565b8092505b50509695505050505050565b8015806129e757506001600160a01b038216155b156129f0575050565b60015460405163067aa55560e51b81526001600160a01b038481166004830152600092169063cf54aaa09060240160206040518083038186803b158015612a3657600080fd5b505afa158015612a4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a6e919061354b565b60ff169050612a7f6008600a613812565b612a8a82600a613812565b612a94908461393f565b612a9e9190613795565b9150612ab56001600160a01b038416333085612ee6565b505050565b600080600080612acc898989896125ac565b60008181526008602090815260408083208151606081018352905460ff8116151582526001600160401b0361010082048116838601819052600160481b9092048116838501819052878752600790955292909420805495965090949091600160401b90910416612b4e5760405162461bcd60e51b8152600401610597906136a0565b60008c815260066020908152604091829020825160808101845290546001600160401b038082168352600160401b8204811693830193909352600160801b8104831693820193909352600160c01b909204166060820152612bae8a61281d565b82546060830151919b50600091612be9918e918e916001600160401b03600160c01b82048116928b9290821691600160801b90910416612877565b6020830151845491925061271091612c14916001600160401b0390811691600160401b90041661393f565b612c1e9190613795565b612c2a906000196138ba565b8113612c80578254612c4e90600160401b90046001600160401b03166000196138ba565b835467ffffffffffffffff60401b19811685556001600160401b038082169750600160401b9091041694509050612d13565b825484908490600890612ca4908490600160401b90046001600160401b03166139a4565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550848360000160008282829054906101000a90046001600160401b0316612cee91906139a4565b92506101000a8154816001600160401b0302191690836001600160401b031602179055505b8254600160401b90046001600160401b0316612d39576000878152600760205260408120555b60009687526008602052604090962080546001600160881b031916905550909c919b50929950975050505050505050565b80471015612dba5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610597565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612e07576040519150601f19603f3d011682016040523d82523d6000602084013e612e0c565b606091505b5050905080612ab55760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610597565b6040516001600160a01b038316602482015260448101829052612ab590849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612f1e565b6040516001600160a01b03808516602483015283166044820152606481018290526128179085906323b872dd60e01b90608401612eaf565b6000612f73826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612ff09092919063ffffffff16565b805190915015612ab55780806020019051810190612f919190613376565b612ab55760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610597565b6060612fff8484600085613009565b90505b9392505050565b60608247101561306a5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610597565b843b6130b85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610597565b600080866001600160a01b031685876040516130d4919061356e565b60006040518083038185875af1925050503d8060008114613111576040519150601f19603f3d011682016040523d82523d6000602084013e613116565b606091505b5091509150613126828286613131565b979650505050505050565b60608315613140575081613002565b8251156131505782518084602001fd5b8160405162461bcd60e51b8152600401610597919061366d565b80356001600160401b038116811461318157600080fd5b919050565b60006020828403121561319857600080fd5b813561300281613a6b565b6000602082840312156131b557600080fd5b815161300281613a6b565b600080600080608085870312156131d657600080fd5b84356131e181613a6b565b935060208501356131f181613a6b565b925060408501359150606085013561320881613a83565b939692955090935050565b600080600080600060a0868803121561322b57600080fd5b853561323681613a6b565b945060208601359350604086013561324d81613a6b565b9250606086013561325d81613a83565b9150608086013561326d81613a83565b809150509295509295909350565b600080600080600060a0868803121561329357600080fd5b853561329e81613a6b565b94506020860135935060408601356132b581613a6b565b925060608601356132c581613a83565b949793965091946080013592915050565b600080604083850312156132e957600080fd5b82356132f481613a6b565b946020939093013593505050565b6000806020838503121561331557600080fd5b82356001600160401b038082111561332c57600080fd5b818501915085601f83011261334057600080fd5b81358181111561334f57600080fd5b8660208260051b850101111561336457600080fd5b60209290920196919550909350505050565b60006020828403121561338857600080fd5b815161300281613a83565b6000602082840312156133a557600080fd5b5035919050565b6000806000606084860312156133c157600080fd5b8335925060208401356133d381613a6b565b915060408401356133e381613a83565b809150509250925092565b6000806000806080858703121561340457600080fd5b84359350602085013561341681613a6b565b9250604085013561342681613a83565b9396929550929360600135925050565b600080600080600060a0868803121561344e57600080fd5b85359450602086013561346081613a6b565b9350604086013561347081613a83565b94979396509394606081013594506080013592915050565b60008082840360a081121561349c57600080fd5b833592506080601f19820112156134b257600080fd5b50604051608081018181106001600160401b03821117156134e357634e487b7160e01b600052604160045260246000fd5b6040526134f26020850161316a565b81526135006040850161316a565b60208201526135116060850161316a565b60408201526135226080850161316a565b6060820152809150509250929050565b60006020828403121561354457600080fd5b5051919050565b60006020828403121561355d57600080fd5b815160ff8116811461300257600080fd5b600082516135808184602087016139cc565b9190910192915050565b6020808252825182820181905260009190848201906040850190845b818110156135f1576135de8385518051151582526020808201516001600160401b039081169184019190915260409182015116910152565b92840192606092909201916001016135a6565b50909695505050505050565b6020808252825182820181905260009190848201906040850190845b818110156135f15761365a83855180516001600160401b03908116835260208083015182169084015260408083015182169084015260609182015116910152565b9284019260809290920191600101613619565b602081526000825180602084015261368c8160408501602087016139cc565b601f01601f19169190910160400192915050565b60208082526009908201526810b837b9b4ba34b7b760b91b604082015260600190565b60208082526006908201526510b7bbb732b960d11b604082015260600190565b60608101610cda82848051151582526020808201516001600160401b039081169184019190915260409182015116910152565b60808101610cda828480516001600160401b03908116835260208083015182169084015260408083015182169084015260609182015116910152565b6000821982111561376557613765613a13565b500190565b60006001600160401b0380831681851680830382111561378c5761378c613a13565b01949350505050565b6000826137a4576137a4613a29565b500490565b60006001600160401b03808416806137c3576137c3613a29565b92169190910492915050565b600181815b8085111561380a5781600019048211156137f0576137f0613a13565b808516156137fd57918102915b93841c93908002906137d4565b509250929050565b6000613002838360008261382857506001610cda565b8161383557506000610cda565b816001811461384b576002811461385557613871565b6001915050610cda565b60ff84111561386657613866613a13565b50506001821b610cda565b5060208310610133831016604e8410600b8410161715613894575081810a610cda565b61389e83836137cf565b80600019048211156138b2576138b2613a13565b029392505050565b60006001600160ff1b03818413828413808216868404861116156138e0576138e0613a13565b600160ff1b60008712828116878305891216156138ff576138ff613a13565b6000871292508782058712848416161561391b5761391b613a13565b8785058712818416161561393157613931613a13565b505050929093029392505050565b600081600019048311821515161561395957613959613a13565b500290565b60006001600160401b038083168185168183048111821515161561398457613984613a13565b02949350505050565b60008282101561399f5761399f613a13565b500390565b60006001600160401b03838116908316818110156139c4576139c4613a13565b039392505050565b60005b838110156139e75781810151838201526020016139cf565b838111156128175750506000910152565b6000600019821415613a0c57613a0c613a13565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114613a8057600080fd5b50565b8015158114613a8057600080fdfea26469706673582212208be57e2d58478dd02cba3f268c5e5b4b5ac3222aca9e0d539863c524f088616164736f6c63430008070033