0x60806040523480156200001157600080fd5b506200001d3362000030565b6000805460ff60a01b1916905562000080565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61561080620000906000396000f3fe6080604052600436106100c25760003560e01c806388f4950f1161007f578063b574f50f11610059578063b574f50f1461023e578063e83aa3a81461026b578063f2fde38b1461028b578063f9338d18146102ab57600080fd5b806388f4950f146101e15780638da5cb5b146102015780639dd392391461022957600080fd5b80630633b14a146100c757806313e7c9d81461010c5780635c975abb1461013c5780636d44a3b21461015b578063715018a61461017d578063743b917214610192575b600080fd5b3480156100d357600080fd5b506100f76100e236600461475d565b60026020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561011857600080fd5b506100f761012736600461475d565b60016020526000908152604090205460ff1681565b34801561014857600080fd5b50600054600160a01b900460ff166100f7565b34801561016757600080fd5b5061017b610176366004614788565b6102c0565b005b34801561018957600080fd5b5061017b610357565b6101a56101a03660046147c1565b61038d565b6040516101039190815181526020808301516001600160801b031690820152604080830151908201526060918201519181019190915260800190565b3480156101ed57600080fd5b5061017b6101fc366004614788565b610903565b34801561020d57600080fd5b506000546040516001600160a01b039091168152602001610103565b34801561023557600080fd5b5061017b610989565b34801561024a57600080fd5b5061025e6102593660046148a0565b6109f0565b6040516101039190614941565b34801561027757600080fd5b5061017b6102863660046149ed565b610c59565b34801561029757600080fd5b5061017b6102a636600461475d565b610dd7565b3480156102b757600080fd5b5061017b610e72565b6000546001600160a01b031633146102f35760405162461bcd60e51b81526004016102ea90614a2f565b60405180910390fd5b6001600160a01b038216600081815260016020908152604091829020805460ff19168515159081179091558251938452908301527f2ee52be9d342458b3d25e07faada7ff9bc06723b4aa24edb6321ac1316b8a9dd91015b60405180910390a15050565b6000546001600160a01b031633146103815760405162461bcd60e51b81526004016102ea90614a2f565b61038b6000610ea4565b565b6103c160405180608001604052806000815260200160006001600160801b0316815260200160008152602001600081525090565b60006103cf85870187614bd8565b90506000805b84811015610464578585828181106103ef576103ef614d18565b9050602002016020810190610404919061475d565b6001600160a01b031683600001516001600160a01b031614156104525760408301515183516104339190610ef4565b6104498360400151604001518460000151610ef4565b60019150610464565b8061045c81614d44565b9150506103d5565b50806104c25760405162461bcd60e51b815260206004820152602760248201527f5a61704578656375746f723a20706f734d616e61676572206e6f742077686974604482015266195b1a5cdd195960ca1b60648201526084016102ea565b6040828101515190516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b15801561050957600080fd5b505afa15801561051d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105419190614d5f565b60408085015181015190516370a0823160e01b81523060048201529192506000916001600160a01b03909116906370a082319060240160206040518083038186803b15801561058f57600080fd5b505afa1580156105a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c79190614d5f565b9050816105d457816105dd565b60001990910190815b6040860152806105ed57806105f3565b60001901805b60608601819052604086015161060b91869190610f91565b6060808a0191909152604089019182526001600160801b0390921660208901528288529086019190915260c0850151905160809190911c108061065e57508360c001516001600160801b03168560600151115b156106b357836101a001606081525060006106828587604001518860600151610f91565b60608a0152604089015290875260208701805191925082916106a5908390614d78565b6001600160801b0316905250505b8361018001516001600160801b031685602001516001600160801b031610156107285760405162461bcd60e51b815260206004820152602160248201527f5a61704578656375746f723a206e6f7420656e6f756768206c697175696469746044820152607960f81b60648201526084016102ea565b60006107378560200151610ff4565b509050806001600160a01b03168561014001516001600160a01b03161115801561077857508461016001516001600160a01b0316816001600160a01b031611155b6107c45760405162461bcd60e51b815260206004820181905260248201527f5a61704578656375746f723a20736c6970706167652070726f74656374696f6e60448201526064016102ea565b600060808660e00151901c9050808760400151101580156107e9575060008760400151115b156108135760808601516040808901519088015151610813926001600160a01b0390911691611078565b5060008560e001516001600160801b031690508087606001511015801561083e575060008760600151115b1561087157610871866080015188606001518860400151604001516001600160a01b03166110789092919063ffffffff16565b5084608001516001600160a01b0316866000015186602001516001600160a01b03167f2f71356e133091101f9573d66a8ba6ec177a5508e3c597bf109adcd6ce6b678a89602001518a604001518b606001516040516108ee939291906001600160801b039390931683526020830191909152604082015260600190565b60405180910390a45050505050949350505050565b6000546001600160a01b0316331461092d5760405162461bcd60e51b81526004016102ea90614a2f565b6001600160a01b038216600081815260026020908152604091829020805460ff19168515159081179091558251938452908301527f25d7ce8d7e0b3990938766275ee2d54fbe81347d287bfbf0429838409a889fdc910161034b565b3360009081526002602052604090205460ff166109e85760405162461bcd60e51b815260206004820152601b60248201527f4b7962657253776170526f6c653a206e6f7420677561726469616e000000000060448201526064016102ea565b61038b6110db565b610a64604051806101600160405280600081526020016000815260200160001515815260200160006001600160801b0316815260200160008152602001600081526020016000815260200160008152602001600060020b815260200160006001600160a01b03168152602001600081525090565b600080610a708c610ff4565b915091506000610a868d8d8d8d8d8d8d8d611180565b805190915015610a9a578060600151610a9c565b815b60020b6060820152805115610ab5578060800151610ab7565b825b6001600160a01b031660808201526040810151600090610ad7578b610ad9565b8c5b82519091508114610af6578151610af1906001614da3565b610af8565b805b855260208083015190860152604080830151151590860152606082015160020b61010086015260808201516001600160a01b031661012086015260a08201516001600160801b03166101408601528515610b555750505050610c4c565b8160400151610b745760208201518251610b6f908e614dbb565b610b86565b8151610b80908e614dbb565b82602001515b60e0870181905260c0870182905260808401516060850151610bb093919290918e918e919061155d565b60a0880152608087018190526001600160801b03909116606087015260c086018051610bdd908390614dbb565b90525060a085015160e086018051610bf6908390614dbb565b9052506060820151600290810b908b900b13801590610c1e57508860020b826060015160020b125b15610c475784606001516001600160801b03168561014001818151610c439190614da3565b9052505b505050505b9998505050505050505050565b6000546001600160a01b03163314610c835760405162461bcd60e51b81526004016102ea90614a2f565b6001600160a01b038116610cd95760405162461bcd60e51b815260206004820152601b60248201527f4b535265736375653a20696e76616c696420726563697069656e74000000000060448201526064016102ea565b81610cea57610ce7836115ab565b91505b8115610dd25773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b0384161415610dbe576000816001600160a01b03168360405160006040518083038185875af1925050503d8060008114610d62576040519150601f19603f3d011682016040523d82523d6000602084013e610d67565b606091505b5050905080610db85760405162461bcd60e51b815260206004820152601d60248201527f4b535265736375653a204554485f5452414e534645525f4641494c454400000060448201526064016102ea565b50505050565b610dd26001600160a01b038416828461166a565b505050565b6000546001600160a01b03163314610e015760405162461bcd60e51b81526004016102ea90614a2f565b6001600160a01b038116610e665760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ea565b610e6f81610ea4565b50565b6000546001600160a01b03163314610e9c5760405162461bcd60e51b81526004016102ea90614a2f565b61038b6116bc565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604051636eb1769f60e11b81523060048201526001600160a01b03828116602483015283169063dd62ed3e9060440160206040518083038186803b158015610f3b57600080fd5b505afa158015610f4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f739190614d5f565b610f8d57610f8d6001600160a01b03831682600019611740565b5050565b6000806000806000806000610fa789898c611864565b92509250925080610fba57818901610fbe565b8289035b98508015610fce57818801610fd2565b8288035b9750610fdf8a8a8a611b21565b96509650965096505050505b93509350935093565b600080826001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561103057600080fd5b505afa158015611044573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110689190614e05565b5094989397509295505050505050565b6040516001600160a01b038316602482015260448101829052610dd290849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611bc2565b600054600160a01b900460ff16156111285760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016102ea565b6000805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586111633390565b6040516001600160a01b03909116815260200160405180910390a1565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810191909152856111d057604051635435b28960e11b815260040160405180910390fd5b600060405180608001604052806111e688611c97565b6001600160a01b031681526020016111fd87611c97565b6001600160a01b031681526020018760020b81526020018660020b81525090506112426040518060400160405280600062ffffff168152602001600060020b81525090565b8a6001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561127b57600080fd5b505afa15801561128f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b39190614e8d565b60020b60208083019190915260408051610160810182526000808252928101839052908101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261131f8d610ff4565b60020b60808301526001600160a01b03908116606083015260408051630d34328160e11b81529051918f1691631a68650291600480820192602092909190829003018186803b15801561137157600080fd5b505afa158015611385573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a99190614eb5565b8160a001906001600160801b031690816001600160801b03168152505060006113e38d8d6001856060015189600001518a60200151611fca565b505090506113f18e826120fb565b62ffffff1684528015611421578c8252602082018c90526001600160a01b0388166101408301526001925061143c565b8b8252602082018d90526001600160a01b0387166101408301525b81516114a6576040518060c0016040528083600001518152602001836020015181526020018415158152602001836080015160020b815260200183606001516001600160a01b031681526020018360a001516001600160801b031681525095505050505050611551565b506114af6146f9565b60006114be8f84878988612177565b9092509050801561152e576040518060c0016040528083600001518152602001836040015181526020018515158152602001836080015160020b815260200183606001516001600160a01b031681526020018360a001516001600160801b03168152509650505050505050611551565b506000611548828787600001518f88886101400151612666565b96505050505050505b98975050505050505050565b60008060008061156c88611c97565b9050600061157988611c97565b90506115888b83838a8a612ad3565b9450611597858c8c8c8c612b97565b959c909b5094995093975050505050505050565b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b03831614156115d9575047611653565b6040516370a0823160e01b81523060048201526001600160a01b038316906370a082319060240160206040518083038186803b15801561161857600080fd5b505afa15801561162c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116509190614d5f565b90505b80156116655761166281614ed2565b90505b919050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610dd2908490612c6e565b600054600160a01b900460ff1661170c5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016102ea565b6000805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33611163565b8015806117c95750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e9060440160206040518083038186803b15801561178f57600080fd5b505afa1580156117a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c79190614d5f565b155b6118345760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b60648201526084016102ea565b6040516001600160a01b038316602482015260448101829052610dd290849063095ea7b360e01b906064016110a4565b600080600080600080866101a001515160001461189b5761189087602001518a8a8a6101a00151612ce1565b909650919450925090505b806118e65760006118d088602001518b8b8b60a001518c61010001518d61012001518e61014001518f610160015160016109f0565b8051610120820151604090920151965094509250505b60006118f58860200151610ff4565b509050831580159061194557508480156119205750806001600160a01b0316836001600160a01b0316105b806119455750841580156119455750806001600160a01b0316836001600160a01b0316115b15611b145784801561195657508984115b611977578415801561196757508884115b6119715783611979565b88611979565b895b935060008089602001516001600160a01b031663128acb08308989898f604001516040516020016119d7919081516001600160a01b03908116825260208084015162ffffff1690830152604092830151169181019190915260600190565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401611a06959493929190614f41565b6040805180830381600087803b158015611a1f57600080fd5b505af1158015611a33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a579190614f7c565b9150915086611a6f5780611a6a83614fa0565b611a79565b81611a7982614fa0565b60208c0151919a5098507f16f8587f8a9f281813ac427c74c7c6f1d3e4a44d8b82bb7e8f30ce194f7597129088611ab8578b6040015160400151611abf565b60408c0151515b89611acf5760408d015151611ad9565b8c60400151604001515b604080516001600160a01b0394851681529284166020840152921681830152606081018c9052608081018b905290519081900360a00190a150505b5050505093509350939050565b6000806000806000611b368860200151610ff4565b5090506000611b49896101000151611c97565b90506000611b5b8a6101200151611c97565b90506000611b6c8484848d8d612ad3565b90506001600160801b03811615611bad5760608b0151611ba257611b918a8a8d612e7a565b975097509750975050505050610feb565b611b918a8a8d613041565b50505060609097015197600097509350505050565b6000611c17826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166131a29092919063ffffffff16565b9050805160001480611c38575080806020019051810190611c389190614fbd565b610dd25760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016102ea565b60008060008360020b12611cae578260020b611cb6565b8260020b6000035b9050620d89e8811115611cef5760405162461bcd60e51b81526020600482015260016024820152601560fa1b60448201526064016102ea565b600060018216611d0357600160801b611d15565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615611d49576ffff97272373d413259a46990580e213a0260801c5b6004821615611d68576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615611d87576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615611da6576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615611dc5576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615611de4576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615611e03576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615611e23576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615611e43576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615611e63576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615611e83576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615611ea3576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615611ec3576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615611ee3576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615611f03576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615611f24576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615611f44576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615611f63576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615611f80576b048a170391f7dc42444e8fa20260801c5b60008460020b1315611fa1578060001981611f9d57611f9d614fda565b0490505b640100000000810615611fb5576001611fb8565b60005b60ff16602082901c0192505050919050565b6000806000868015611fee5750846001600160a01b0316866001600160a01b031611155b806120145750861580156120145750836001600160a01b0316866001600160a01b031610155b15612027575060009150819050806120ef565b600080856001600160a01b0316886001600160a01b031610156120525761204f88878d6131bb565b91505b866001600160a01b0316886001600160a01b0316111561207a5761207787898c61321d565b90505b866001600160a01b0316886001600160a01b03161180156120ac5750856001600160a01b0316886001600160a01b0316105b80156120d257508880156120bf57508082105b806120d25750881580156120d257508082115b156120e5576000945090925090506120ef565b6001945090925090505b96509650969350505050565b6000826001600160a01b031663ddca3f436040518163ffffffff1660e01b815260040160206040518083038186803b15801561213657600080fd5b505afa15801561214a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216e9190614ff0565b90505b92915050565b61217f6146f9565b845160808087015160020b908301526060808701516001600160a01b03169083015260a0808701516001600160801b031690830152600090831580156121df575084602001516001600160a01b031687606001516001600160a01b031610155b8061220c575083801561220c575084600001516001600160a01b031687606001516001600160a01b031611155b1561221b57506001905061265c565b83801561224257508661014001516001600160a01b031687606001516001600160a01b0316115b8061227057508315801561227057508661014001516001600160a01b031687606001516001600160a01b0316105b1561265657612289888860800151886020015187613250565b151561012089015260020b60e08801819052841580156122b25750856060015160020b8160020b135b156122c2575060608501516122e4565b8480156122d85750856040015160020b8160020b125b156122e4575060408501515b60608801516001600160a01b031660c089015261230081611c97565b6001600160a01b0316610100890152875161231b9083614dbb565b8452602080890151604086015288519085015260a0808901516001600160801b031690850152608080890151600290810b9186019190915281900b60c08501526060808901516001600160a01b03908116918601919091526101008901511660e0850152875161239157506001915061265c9050565b60008060006124148b60600151896123c7578c61014001516001600160a01b03168d61010001516001600160a01b0316116123e7565b8c61014001516001600160a01b03168d61010001516001600160a01b0316105b6123f6578c61010001516123fd565b8c61014001515b60a08e01518e5161240d906134e5565b8e516134fb565b6001600160a01b0390931660608f0152919450925090506124358383614da3565b8b518c90612444908390614dbb565b90525060208b01805182919061245b908390614da3565b905250600091506124a0905087612476578a60200151612479565b8a515b88612485578b5161248b565b8b602001515b898d606001518c600001518d60200151611fca565b50509050806124b757506000935061265c92505050565b8961010001516001600160a01b03168a606001516001600160a01b0316146125495789516124e59085614dbb565b86526020808b015160408801528a519087015260c08a015160608b01516001600160a01b0390811691161461252a576125218a6060015161371e565b60020b60808701525b505050506060868101516001600160a01b03169083015250600161265c565b86612554578261255f565b61255f60018461500d565b600290810b60808c015260e08b015184820b910b1415806125835750896101200151155b156125905750505061221b565b60e08a015160405163f30dba9360e01b815260029190910b60048201526000906001600160a01b038d169063f30dba93906024016101006040518083038186803b1580156125dd57600080fd5b505afa1580156125f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126159190615055565b50505050505091505087156126305761262d81615103565b90505b61263e8b60a0015182613a34565b6001600160801b031660a08c01525061221b92505050565b60019150505b9550959350505050565b6040805160c08082018352600080835260208084018290528385018290526060808501839052608080860184905260a0808701859052875160e08101895285815293840185905296830184905290820183905281018290529384018190529083015290836126fb578760e001516001600160a01b0316836001600160a01b0316106126f5578760e00151612724565b82612724565b826001600160a01b03168860e001516001600160a01b031610612722578760e00151612724565b825b60a08901519093506001600160801b0316156127c157600061275489606001518a60a001518b6020015188613af4565b905073fffd8963efd1fc6a506488495d951d5263988d2681116127bf578461279b57836001600160a01b0316816001600160a01b03161061279557836127bc565b806127bc565b806001600160a01b0316846001600160a01b0316106127ba57836127bc565b805b93505b505b836127e65760608801516127d6906001615133565b6127e1600185615155565b612802565b6127f1836001615133565b600189606001516128029190615155565b6001600160a01b039081166020808501919091529181168352895184526040808b0151928501929092528515159184019190915260a0808a01516001600160801b0316908401526060808a015190911660808085019190915289015160020b908301525b80602001516001600160a01b031681600001516001600160a01b031610801561288e57508415155b15612ac75761289c85614ed2565b9450600181602001516001600160a01b031682600001516001600160a01b03166128c69190614da3565b6001600160a01b03911c16604082018190526128e25750612ac9565b60008061290a8a6060015184604001518c60a001516129048e602001516134e5565b8c6134fb565b60c087019190915260a08601828152929450925082919061292c908390614da3565b905250600090506129af86612954578360c001518b6040015161294f9190614da3565b612968565b8360a001518b602001516129689190614dbb565b87612986578460a001518c602001516129819190614dbb565b61299a565b8460c001518c6040015161299a9190614da3565b8886604001518d600001518e60200151611fca565b60808601526060850152905080612a0a5785156129e65760408301516129d6906001615133565b6001600160a01b03168352612ac0565b600183604001516129f79190615155565b6001600160a01b03166020840152612ac0565b60a08301518a51612a1b9190614da3565b845260c083015160408b0151612a319190614da3565b602085015260408301516001600160a01b031660808501819052612a549061371e565b60020b606080860191909152608084015190840151612a739082613b58565b612a80906298968061517d565b1015612a8d575050612ac7565b8515612aa457600183604001516129f79190615155565b6040830151612ab4906001615133565b6001600160a01b031683525b5050612866565b505b9695505050505050565b6000836001600160a01b0316856001600160a01b03161115612af3579293925b846001600160a01b0316866001600160a01b031611612b1e57612b17858585613b7b565b9050612b8e565b836001600160a01b0316866001600160a01b03161015612b80576000612b45878686613b7b565b90506000612b54878986613bd7565b9050806001600160801b0316826001600160801b031610612b755780612b77565b815b92505050612b8e565b612b8b858584613bd7565b90505b95945050505050565b6000806000806000612ba887611c97565b90506000612bb587611c97565b90506000612bcb8c6001600160801b0316613c0d565b90508860020b8a60020b1215612bf157612be6838383613c28565b945060009350612c31565b8760020b8a60020b12612c15576000612c0b848484613c6f565b9095509350612c31565b612c208b8383613c28565b612c2b848d84613c6f565b90955093505b6000851215612c44578419600101612c46565b845b96506000841215612c5b578319600101612c5d565b835b955050505050509550959350505050565b6000612cc3826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613ca39092919063ffffffff16565b805190915015610dd25780806020019051810190611c389190614fbd565b600080600080600085806020019051810190612cfd919061519c565b6040810151909150608081901c906001600160801b0316818a1080612d215750808a115b15612d2e57505050612e6f565b6060830151608081901c906001600160801b0316818b1080612d4f5750808b115b15612d5e575050505050612e6f565b600080612d6a8f610ff4565b915091508660a001516001600160a01b0316826001600160a01b0316141580612d9d57508660c0015160020b8160020b14155b15612dae5750505050505050612e6f565b60008f6001600160a01b0316631a6865026040518163ffffffff1660e01b815260040160206040518083038186803b158015612de957600080fd5b505afa158015612dfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e219190614eb5565b90508760e001516001600160801b0316816001600160801b031614612e4d575050505050505050612e6f565b87600001519b5087602001519a50876080015199506001985050505050505050505b945094509450949050565b60008060008060006040518061016001604052808760400151600001516001600160a01b031681526020018760400151604001516001600160a01b0316815260200187604001516020015162ffffff16815260200187610100015160020b815260200187610120015160020b8152602001898152602001888152602001600081526020016000815260200187608001516001600160a01b03168152602001426014612f259190614da3565b90528651604051634418b22b60e11b815291925060009182916001600160a01b031690638831645690612f5c908690600401615251565b608060405180830381600087803b158015612f7657600080fd5b505af1158015612f8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fae9190615304565b6101008c01516101208d015160408051878152600293840b60208201529190920b918101919091526001600160801b03841660608201526080810183905260a08101829052939a50919850808d039750818c039650935091507f193c358f18eccb0cc6d0070f2c5deeaf31df751c086731b3875a657b5186b1b89060c0015b60405180910390a150505093509350935093565b6000806000808460600151935060006040518060c0016040528087606001518152602001898152602001888152602001600081526020016000815260200142601461308c9190614da3565b905286516040805163219f5d1760e01b81528351600482015260208401516024820152908301516044820152606083015160648201526080830151608482015260a083015160a482015291925060009182916001600160a01b03169063219f5d179060c401606060405180830381600087803b15801561310b57600080fd5b505af115801561311f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131439190615342565b604080518b81526001600160801b038516602082015290810183905260608101829052929850818d039750808c03965090935091507f5e05cebd0a135848d8599867582c7dd8fd644ef89195bf844734e0d6481837ce9060800161302d565b60606131b18484600085613cb2565b90505b9392505050565b6000826001600160a01b0316846001600160a01b031611156131db579192915b60006131fe856001600160a01b0316856001600160a01b0316600160601b613d4e565b9050612b8e838261320f8888615155565b6001600160a01b0316613d4e565b6000826001600160a01b0316846001600160a01b0316111561323d579192915b6131b182600160601b61320f8787615155565b6000808061325e8587615379565b905060008660020b12801561327e575061327885876153b3565b60020b15155b15613291578061328d816153d5565b9150505b83156133ab576000806132a383613e6d565b90925090506000600160ff831681901b906132be9082614dbb565b6132c89190614da3565b60405163299ce14b60e11b8152600185900b600482015290915060009082906001600160a01b038d1690635339c2969060240160206040518083038186803b15801561331357600080fd5b505afa158015613327573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061334b9190614d5f565b168015159650905085613375578861336660ff85168761500d565b61337091906153f9565b6133a0565b8861337f82613e8a565b6133899085615486565b6133969060ff168761500d565b6133a091906153f9565b9650505050506134db565b6000806133c16133bc8460016154a9565b613e6d565b909250905060006133d9600160ff841681901b614dbb565b60405163299ce14b60e11b8152600185900b60048201529019915060009082906001600160a01b038d1690635339c2969060240160206040518083038186803b15801561342557600080fd5b505afa158015613439573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061345d9190614d5f565b16801515965090508561349d57886134768460ff615486565b60ff166134848760016154a9565b61348e91906154a9565b61349891906153f9565b6134d4565b88836134a883613f7a565b6134b29190615486565b60ff166134c08760016154a9565b6134ca91906154a9565b6134d491906153f9565b9650505050505b5094509492505050565b6000600160ff1b82106134f757600080fd5b5090565b60008080806001600160a01b03808916908a16101581871280159061358f576000620f424061352a89826154f0565b6135399062ffffff168b61517d565b613543919061550c565b90508261355c576135578c8c8c60016140a5565b613569565b6135698b8d8c600161411e565b955085811061357a578a9650613589565b6135868c8b83866141da565b96505b506135e3565b816135a6576135a18b8b8b600061411e565b6135b3565b6135b38a8c8b60006140a5565b9350836135bf89614fa0565b106135cc578995506135e3565b6135e08b8a6135da8b614fa0565b85614226565b95505b6001600160a01b038a8116908716148215613646578080156136025750815b61361857613613878d8c600161411e565b61361a565b855b9550808015613627575081155b61363d57613638878d8c60006140a5565b61363f565b845b9450613690565b8080156136505750815b613666576136618c888c60016140a5565b613668565b855b9550808015613675575081155b61368b576136868c888c600061411e565b61368d565b845b94505b811580156136a557506136a289614fa0565b85115b156136b6576136b389614fa0565b94505b8180156136d557508a6001600160a01b0316876001600160a01b031614155b156136eb576136e4868a614dbb565b935061370f565b61370c8662ffffff8a166137028b620f42406154f0565b62ffffff16614272565b93505b50505095509550955095915050565b60006401000276a36001600160a01b0383161080159061375a575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038316105b61378a5760405162461bcd60e51b81526020600482015260016024820152602960f91b60448201526064016102ea565b640100000000600160c01b03602083901b166001600160801b03811160071b81811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c9790881196179094179092171790911717176080811061381e57607f810383901c9150613828565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b14613a2857886001600160a01b0316613a0d82611c97565b6001600160a01b03161115613a225781610c4c565b80610c4c565b50979650505050505050565b60008082600f0b1215613aa1576001600160801b038316613a5483615103565b613a5e9085615520565b9150816001600160801b031610613a9c5760405162461bcd60e51b81526020600482015260026024820152614c5360f01b60448201526064016102ea565b612171565b6001600160801b038316613ab58385614d78565b9150816001600160801b031610156121715760405162461bcd60e51b81526020600482015260026024820152614c4160f01b60448201526064016102ea565b600080856001600160a01b031611613b0b57600080fd5b6000846001600160801b031611613b2157600080fd5b81613b3657613b318585856142a4565b613b4d565b613b4385858560016142ff565b6001600160a01b03165b90505b949350505050565b600081831015613b7157613b6c8383614dbb565b61216e565b61216e8284614dbb565b6000826001600160a01b0316846001600160a01b03161115613b9b579192915b6000613bbe856001600160a01b0316856001600160a01b0316600160601b613d4e565b9050612b8e613bd2848361320f8989615155565b614419565b6000826001600160a01b0316846001600160a01b03161115613bf7579192915b6131b1613bd283600160601b61320f8888615155565b60006001607f1b826001600160801b0316106134f757600080fd5b60008082600f0b12613c4e57613c49613c44858585600161411e565b6134e5565b6131b1565b613c66613c448585613c5f86615103565b600061411e565b6131b190614fa0565b60008082600f0b12613c8b57613c49613c4485858560016140a5565b613c66613c448585613c9c86615103565b60006140a5565b60606131b1848460008561442f565b606082471015613cd45760405162461bcd60e51b81526004016102ea90615540565b600080866001600160a01b03168587604051613cf09190615586565b60006040518083038185875af1925050503d8060008114613d2d576040519150601f19603f3d011682016040523d82523d6000602084013e613d32565b606091505b5091509150613d438783838761450d565b979650505050505050565b600080806000198587098587029250828110838203039150508060001415613db55760008411613daa5760405162461bcd60e51b8152602060048201526007602482015266302064656e6f6d60c81b60448201526064016102ea565b5082900490506131b4565b808411613df55760405162461bcd60e51b815260206004820152600e60248201526d64656e6f6d203c3d2070726f643160901b60448201526064016102ea565b6000848688098084039381119092039190506000613e1586196001614da3565b8616958690049560026003880281188089028203028089028203028089028203028089028203028089028203028089029091030260008290038290046001019490940294049390931791909102925050509392505050565b600281900b60081d6000613e83610100846153b3565b9050915091565b6000808211613e9857600080fd5b600160801b8210613eb657608091821c91613eb390826155a2565b90505b680100000000000000008210613ed957604091821c91613ed690826155a2565b90505b6401000000008210613ef857602091821c91613ef590826155a2565b90505b620100008210613f1557601091821c91613f1290826155a2565b90505b6101008210613f3157600891821c91613f2e90826155a2565b90505b60108210613f4c57600491821c91613f4990826155a2565b90505b60048210613f6757600291821c91613f6490826155a2565b90505b60028210611665576116626001826155a2565b6000808211613f8857600080fd5b5060ff6001600160801b03821615613fac57613fa5608082615486565b9050613fb4565b608082901c91505b67ffffffffffffffff821615613fd657613fcf604082615486565b9050613fde565b604082901c91505b63ffffffff821615613ffc57613ff5602082615486565b9050614004565b602082901c91505b61ffff82161561402057614019601082615486565b9050614028565b601082901c91505b60ff8216156140435761403c600882615486565b905061404b565b600882901c91505b600f8216156140665761405f600482615486565b905061406e565b600482901c91505b600382161561408957614082600282615486565b9050614091565b600282901c91505b600182161561166557611662600182615486565b6000836001600160a01b0316856001600160a01b031611156140c5579293925b816140f457613b316001600160801b0384166140e18787615155565b6001600160a01b0316600160601b613d4e565b613b4d6001600160801b03841661410b8787615155565b6001600160a01b0316600160601b614272565b6000836001600160a01b0316856001600160a01b0316111561413e579293925b600160601b600160e01b03606084901b16600061415b8787615155565b6001600160a01b031690506000876001600160a01b03161161417c57600080fd5b836141ae57866001600160a01b031661419f8383896001600160a01b0316613d4e565b6141a9919061550c565b613d43565b613d436141c58383896001600160a01b0316614272565b886001600160a01b0316808204910615150190565b600080856001600160a01b0316116141f157600080fd5b6000846001600160801b03161161420757600080fd5b8161421957613b318585856001614583565b613b4d85858560016142ff565b600080856001600160a01b03161161423d57600080fd5b6000846001600160801b03161161425357600080fd5b8161426557613b3185858560006142ff565b613b4d8585856000614583565b600061427f848484613d4e565b90506000828061429157614291614fda565b84860911156131b45780612b8e81614d44565b6000806001600160a01b038311156142d3576142ce83600160601b866001600160801b0316613d4e565b6142ea565b6142ea6001600160801b038516606085901b61550c565b9050612b8e6001600160a01b03861682614665565b60008261430d575083613b50565b600160601b600160e01b03606085901b1682156143b75760006001600160a01b0387168561433b828261517d565b9250614347908361550c565b14156143825760006143598284614da3565b90508281106143805761437683896001600160a01b031683614272565b9350505050613b50565b505b6143ae826143a38761439d6001600160a01b038c168461550c565b90614665565b808204910615150190565b92505050613b50565b60006001600160a01b038716856143ce828261517d565b92506143da908361550c565b1480156143e657508082115b6143ef57600080fd5b60006143fb8284614dbb565b9050614376614414848a6001600160a01b031684614272565b614680565b806001600160801b038116811461166557600080fd5b6060824710156144515760405162461bcd60e51b81526004016102ea90615540565b843b61449f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102ea565b600080866001600160a01b031685876040516144bb9190615586565b60006040518083038185875af1925050503d80600081146144f8576040519150601f19603f3d011682016040523d82523d6000602084013e6144fd565b606091505b5091509150613d43828286614696565b60608315614579578251614572576001600160a01b0385163b6145725760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102ea565b5081613b50565b613b5083836146cf565b600081156145f05760006001600160a01b038411156145b9576145b484600160601b876001600160801b0316613d4e565b6145d0565b6145d06001600160801b038616606086901b61550c565b90506145e86144146001600160a01b03881683614665565b915050613b50565b60006001600160a01b0384111561461e5761461984600160601b876001600160801b0316614272565b61463b565b61463b606085901b6001600160801b038716808204910615150190565b905080866001600160a01b03161161465257600080fd5b6145e8816001600160a01b038816614dbb565b6000826146728382614da3565b915081101561217157600080fd5b806001600160a01b038116811461166557600080fd5b606083156146a55750816131b4565b8251156146b55782518084602001fd5b8160405162461bcd60e51b81526004016102ea91906155c7565b8151156146df5781518083602001fd5b8060405162461bcd60e51b81526004016102ea91906155c7565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081019190915290565b6001600160a01b0381168114610e6f57600080fd5b80356116658161473d565b60006020828403121561476f57600080fd5b81356131b48161473d565b8015158114610e6f57600080fd5b6000806040838503121561479b57600080fd5b82356147a68161473d565b915060208301356147b68161477a565b809150509250929050565b600080600080604085870312156147d757600080fd5b843567ffffffffffffffff808211156147ef57600080fd5b818701915087601f83011261480357600080fd5b81358181111561481257600080fd5b88602082850101111561482457600080fd5b60209283019650945090860135908082111561483f57600080fd5b818701915087601f83011261485357600080fd5b81358181111561486257600080fd5b8860208260051b850101111561487757600080fd5b95989497505060200194505050565b8060020b8114610e6f57600080fd5b803561166581614886565b60008060008060008060008060006101208a8c0312156148bf57600080fd5b89356148ca8161473d565b985060208a0135975060408a0135965060608a0135955060808a01356148ef81614886565b945060a08a01356148ff81614886565b935060c08a013561490f8161473d565b925060e08a013561491f8161473d565b91506101008a01356149308161477a565b809150509295985092959850929598565b6000610160820190508251825260208301516020830152604083015161496b604084018215159052565b50606083015161498660608401826001600160801b03169052565b506080830151608083015260a083015160a083015260c083015160c083015260e083015160e0830152610100808401516149c48285018260020b9052565b5050610120838101516001600160a01b038116848301525b505061014092830151919092015290565b600080600060608486031215614a0257600080fd5b8335614a0d8161473d565b9250602084013591506040840135614a248161473d565b809150509250925092565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052604160045260246000fd5b6040516101c0810167ffffffffffffffff81118282101715614a9e57614a9e614a64565b60405290565b62ffffff81168114610e6f57600080fd5b600060608284031215614ac757600080fd5b6040516060810181811067ffffffffffffffff82111715614aea57614aea614a64565b6040529050808235614afb8161473d565b81526020830135614b0b81614aa4565b60208201526040830135614b1e8161473d565b6040919091015292915050565b6001600160801b0381168114610e6f57600080fd5b803561166581614b2b565b600082601f830112614b5c57600080fd5b813567ffffffffffffffff80821115614b7757614b77614a64565b604051601f8301601f19908116603f01168101908282118183101715614b9f57614b9f614a64565b81604052838152866020858801011115614bb857600080fd5b836020870160208301376000602085830101528094505050505092915050565b600060208284031215614bea57600080fd5b813567ffffffffffffffff80821115614c0257600080fd5b908301906102008286031215614c1757600080fd5b614c1f614a7a565b614c2883614752565b8152614c3660208401614752565b6020820152614c488660408501614ab5565b604082015260a08301356060820152614c6360c08401614752565b608082015260e083013560a08201526101008084013560c08301526101208085013560e0840152610140614c98818701614895565b838501526101609250614cac838701614895565b828501526101809150614cc0828701614752565b908401526101a0614cd2868201614752565b83850152614ce36101c08701614b40565b828501526101e0860135925084831115614cfc57600080fd5b614d0889848801614b4b565b9084015250909695505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415614d5857614d58614d2e565b5060010190565b600060208284031215614d7157600080fd5b5051919050565b60006001600160801b03808316818516808303821115614d9a57614d9a614d2e565b01949350505050565b60008219821115614db657614db6614d2e565b500190565b600082821015614dcd57614dcd614d2e565b500390565b80516116658161473d565b805161166581614886565b805161ffff8116811461166557600080fd5b80516116658161477a565b600080600080600080600060e0888a031215614e2057600080fd5b8751614e2b8161473d565b6020890151909750614e3c81614886565b9550614e4a60408901614de8565b9450614e5860608901614de8565b9350614e6660808901614de8565b925060a0880151915060c0880151614e7d8161477a565b8091505092959891949750929550565b600060208284031215614e9f57600080fd5b81516131b481614886565b805161166581614b2b565b600060208284031215614ec757600080fd5b81516131b481614b2b565b600081614ee157614ee1614d2e565b506000190190565b60005b83811015614f04578181015183820152602001614eec565b83811115610db85750506000910152565b60008151808452614f2d816020860160208601614ee9565b601f01601f19169290920160200192915050565b6001600160a01b0386811682528515156020830152604082018590528316606082015260a060808201819052600090613d4390830184614f15565b60008060408385031215614f8f57600080fd5b505080516020909101519092909150565b6000600160ff1b821415614fb657614fb6614d2e565b5060000390565b600060208284031215614fcf57600080fd5b81516131b48161477a565b634e487b7160e01b600052601260045260246000fd5b60006020828403121561500257600080fd5b81516131b481614aa4565b60008160020b8360020b6000811281627fffff190183128115161561503457615034614d2e565b81627fffff01831381161561504b5761504b614d2e565b5090039392505050565b600080600080600080600080610100898b03121561507257600080fd5b885161507d81614b2b565b80985050602089015180600f0b811461509557600080fd5b80975050604089015195506060890151945060808901518060060b81146150bb57600080fd5b60a08a01519094506150cc8161473d565b60c08a015190935063ffffffff811681146150e657600080fd5b91506150f460e08a01614dfa565b90509295985092959890939650565b600081600f0b6f7fffffffffffffffffffffffffffffff1981141561512a5761512a614d2e565b60000392915050565b60006001600160a01b03828116848216808303821115614d9a57614d9a614d2e565b60006001600160a01b038381169083168181101561517557615175614d2e565b039392505050565b600081600019048311821515161561519757615197614d2e565b500290565b60006101008083850312156151b057600080fd5b6040519081019067ffffffffffffffff821181831017156151d3576151d3614a64565b8160405283518152602084015191506151eb8261473d565b816020820152604084015160408201526060840151606082015261521160808501614dfa565b608082015261522260a08501614dd2565b60a082015261523360c08501614ddd565b60c082015261524460e08501614eaa565b60e0820152949350505050565b81516001600160a01b031681526101608101602083015161527d60208401826001600160a01b03169052565b506040830151615294604084018262ffffff169052565b5060608301516152a9606084018260020b9052565b5060808301516152be608084018260020b9052565b5060a083015160a083015260c083015160c083015260e083015160e0830152610100808401518184015250610120808401516149dc828501826001600160a01b03169052565b6000806000806080858703121561531a57600080fd5b84519350602085015161532c81614b2b565b6040860151606090960151949790965092505050565b60008060006060848603121561535757600080fd5b835161536281614b2b565b602085015160409095015190969495509392505050565b60008160020b8360020b8061539057615390614fda565b627fffff198214600019821416156153aa576153aa614d2e565b90059392505050565b60008260020b806153c6576153c6614fda565b808360020b0791505092915050565b60008160020b627fffff198114156153ef576153ef614d2e565b6000190192915050565b60008160020b8360020b627fffff60008213600084138383048511828216161561542557615425614d2e565b627fffff19600085128281168783058712161561544457615444614d2e565b6000871292508582058712848416161561546057615460614d2e565b8585058712818416161561547657615476614d2e565b5050509290910295945050505050565b600060ff821660ff8416808210156154a0576154a0614d2e565b90039392505050565b60008160020b8360020b6000821282627fffff038213811516156154cf576154cf614d2e565b82627fffff190382128116156154e7576154e7614d2e565b50019392505050565b600062ffffff8381169083168181101561517557615175614d2e565b60008261551b5761551b614fda565b500490565b60006001600160801b038381169083168181101561517557615175614d2e565b60208082526026908201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6040820152651c8818d85b1b60d21b606082015260800190565b60008251615598818460208701614ee9565b9190910192915050565b600060ff821660ff84168060ff038211156155bf576155bf614d2e565b019392505050565b60208152600061216e6020830184614f1556fea264697066735822122027a9bdceeeefdfa68a13e3fb3bddafc9e83c8238926aa5fa34a9fe4537dab03464736f6c63430008090033