0x60806040523480156200001157600080fd5b5060405162001f1c38038062001f1c8339810160408190526200003491620000f6565b6200003f3362000089565b60018055600280546001600160a01b039384166001600160a01b0319918216179091556003805492841692821692909217909155600054600480549190931691161790556200012e565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b0381168114620000f157600080fd5b919050565b600080604083850312156200010a57600080fd5b6200011583620000d9565b91506200012560208401620000d9565b90509250929050565b611dde806200013e6000396000f3fe6080604052600436106101445760003560e01c80639150d09a116100b6578063bf0a7e8e1161006f578063bf0a7e8e14610352578063c14da0e914610372578063d9daed4514610392578063e2410338146103b2578063ea414b28146103d2578063f2fde38b146103f257600080fd5b80639150d09a146102c657806394d5951f146102d9578063a00bcf61146102ec578063a348f032146102ff578063a4d30dda14610312578063b6b55f251461033257600080fd5b8063715018a611610108578063715018a61461022d5780637a719770146102425780637af3bc3c146102625780637fa05c04146102825780638b3444af146102955780638da5cb5b146102a857600080fd5b80630e3fd8ac146101505780632e1a7d4d1461017257806352894ceb1461019257806366228e9d146101c957806370a08231146101e957600080fd5b3661014b57005b600080fd5b34801561015c57600080fd5b5061017061016b3660046115f2565b610412565b005b34801561017e57600080fd5b5061017061018d36600461166d565b61044f565b34801561019e57600080fd5b506004546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b3480156101d557600080fd5b506101706101e4366004611686565b6104f1565b3480156101f557600080fd5b5061021f6102043660046116f7565b6001600160a01b031660009081526005602052604090205490565b6040519081526020016101c0565b34801561023957600080fd5b50610170610501565b34801561024e57600080fd5b5061017061025d366004611714565b610515565b34801561026e57600080fd5b5061017061027d36600461176f565b61054e565b6101706102903660046117e9565b610578565b6101706102a336600461182a565b6105cf565b3480156102b457600080fd5b506000546001600160a01b03166101ac565b6101706102d436600461187c565b61062a565b6101706102e73660046118c6565b61063b565b6101706102fa36600461190e565b610657565b61017061030d36600461196a565b610675565b34801561031e57600080fd5b5061017061032d3660046119d1565b610686565b34801561033e57600080fd5b5061017061034d36600461166d565b6106a4565b34801561035e57600080fd5b5061017061036d366004611a1c565b610705565b34801561037e57600080fd5b5061017061038d366004611a60565b610715565b34801561039e57600080fd5b506101706103ad366004611aa1565b610731565b3480156103be57600080fd5b506101706103cd366004611b26565b610741565b3480156103de57600080fd5b506101706103ed3660046116f7565b61075e565b3480156103fe57600080fd5b5061017061040d3660046116f7565b610811565b6000610422878787878787610887565b905061044533896104338985610999565b6001600160a01b038b169291906109ac565b5050505050505050565b610457610a1d565b3360009081526005602052604090205481111561048f5760405162461bcd60e51b815260040161048690611b78565b60405180910390fd5b6104b98160056000335b6001600160a01b0316815260208101919091526040016000205490610999565b336000818152600560205260409020919091556002546104e5916001600160a01b039091169083610a77565b6104ee60018055565b50565b6000610422878787878787610aac565b610509610bb8565b6105136000610c12565b565b600061052385858585610c62565b905061054633876105348785610999565b6001600160a01b0389169291906109ac565b505050505050565b600061055e898887878787610aac565b905061056d8989898985610c8c565b505050505050505050565b60006105876000348585610c62565b90506001600160a01b0384166108fc6105a03484610999565b6040518115909202916000818181858888f193505050501580156105c8573d6000803e3d6000fd5b5050505050565b60006105e060003487878787610aac565b90506001600160a01b0386166108fc6105f93484610999565b6040518115909202916000818181858888f19350505050158015610621573d6000803e3d6000fd5b50505050505050565b60006105e060003487878787610887565b600061064a6000348585610c62565b90506105c8858583610e73565b600061066860003487878787610aac565b9050610621878783610e73565b600061066860003487878787610887565b6000610696888887878787610aac565b905061044588888884610fd0565b6106ac610a1d565b6106c4336002546001600160a01b03169030846109ac565b6106ee8160056000335b6001600160a01b031681526020810191909152604001600020549061114f565b336000908152600560205260409020556001805550565b6000610696888887878787610887565b600061072386868585610c62565b905061054686868684610fd0565b600061055e898887878787610887565b600061074f87868585610c62565b90506106218787878785610c8c565b6000546001600160a01b031633148061078a57506004546001600160a01b0316336001600160a01b0316145b6107ef5760405162461bcd60e51b815260206004820152603060248201527f4f776c526f757465723a2063616c6c6572206973206e6f7420746865206f776e60448201526f195c881bdc881d185e081dd85b1b195d60821b6064820152608401610486565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b610819610bb8565b6001600160a01b03811661087e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610486565b6104ee81610c12565b6001600160a01b03821660009081526005602052604081205484111561090e5760405162461bcd60e51b815260206004820152603660248201527f4f776c526f757465723a206170702077616c6c657420646f6573206e6f74206860448201527561766520656e6f756768204f574c2062616c616e636560501b6064820152608401610486565b6001600160a01b0383166000908152600560205260409020546109319085610999565b6001600160a01b038085166000908152600560205260408082209390935560045490911681522054610963908561114f565b6004546001600160a01b031660009081526005602052604090205561098c87878588868061115b565b90505b9695505050505050565b60006109a58284611be0565b9392505050565b6040516001600160a01b0380851660248301528316604482015260648101829052610a179085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526112b6565b50505050565b60026001541415610a705760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610486565b6002600155565b6040516001600160a01b038316602482015260448101829052610aa790849063a9059cbb60e01b906064016109e0565b505050565b600084610ab9848461114f565b1115610b1a5760405162461bcd60e51b815260206004820152602a60248201527f4f776c526f757465723a20726566657272616c20626f6e7573657320657863656044820152696564207461782066656560b01b6064820152608401610486565b600454600090610b4d90899089906001600160a01b031660018a610b4889610b42838d610999565b90610999565b61115b565b6001600160a01b038616600090815260056020526040902054909150610b73908561114f565b6001600160a01b0386166000908152600560208190526040822092909255610b9d918591336106ce565b33600090815260056020526040902055979650505050505050565b6000546001600160a01b031633146105135760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610486565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600454600090610c8190869086906001600160a01b031686868061115b565b90505b949350505050565b60408051600380825260808201909252600091602082016060803683370190505090508581600081518110610cc357610cc3611bf7565b6001600160a01b03928316602091820292909201810191909152600354604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015610d1757600080fd5b505afa158015610d2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4f9190611c0d565b81600181518110610d6257610d62611bf7565b60200260200101906001600160a01b031690816001600160a01b0316815250508481600281518110610d9657610d96611bf7565b6001600160a01b0390921660209283029190910190910152610dcf3330610dbd8786610999565b6001600160a01b038a169291906109ac565b600354610dfa906001600160a01b0316610de98685610999565b6001600160a01b038916919061138b565b6003546001600160a01b0316635c11d795610e158685610999565b858433426040518663ffffffff1660e01b8152600401610e39959493929190611c6e565b600060405180830381600087803b158015610e5357600080fd5b505af1158015610e67573d6000803e3d6000fd5b50505050505050505050565b6040805160028082526060820183526000926020830190803683375050600354604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b158015610ed857600080fd5b505afa158015610eec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f109190611c0d565b81600081518110610f2357610f23611bf7565b60200260200101906001600160a01b031690816001600160a01b0316815250508381600181518110610f5757610f57611bf7565b6001600160a01b0392831660209182029290920101526003541663b6f9de95610f803485610999565b858433426040518663ffffffff1660e01b8152600401610fa39493929190611caa565b6000604051808303818588803b158015610fbc57600080fd5b505af115801561056d573d6000803e3d6000fd5b604080516002808252606082018352600092602083019080368337019050509050848160008151811061100557611005611bf7565b6001600160a01b03928316602091820292909201810191909152600354604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561105957600080fd5b505afa15801561106d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110919190611c0d565b816001815181106110a4576110a4611bf7565b6001600160a01b03909216602092830291909101909101526110cb33306105348786610999565b6003546110f6906001600160a01b03166110e58685610999565b6001600160a01b038816919061138b565b6003546001600160a01b031663791ac9476111118685610999565b858433426040518663ffffffff1660e01b8152600401611135959493929190611c6e565b600060405180830381600087803b158015610fbc57600080fd5b60006109a58284611cdf565b60008261116a5750600061098f565b83156111fc573360009081526005602052604090205483111561119f5760405162461bcd60e51b815260040161048690611b78565b6111ad836005600033610499565b33600090815260056020526040808220929092556001600160a01b038716815220546111d9908361114f565b6001600160a01b038616600090815260056020526040812091909155905061098f565b8583111561124c5760405162461bcd60e51b815260206004820181905260248201527f4f776c526f757465723a20746178466565206578636565647320616d6f756e746044820152606401610486565b6001600160a01b038716611296576040516001600160a01b0386169084156108fc029085906000818181858888f19350505050158015611290573d6000803e3d6000fd5b506112ab565b6112ab6001600160a01b0388163387866109ac565b509095945050505050565b600061130b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166114af9092919063ffffffff16565b905080516000148061132c57508080602001905181019061132c9190611cf7565b610aa75760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610486565b8015806114145750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e9060440160206040518083038186803b1580156113da57600080fd5b505afa1580156113ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114129190611d14565b155b61147f5760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b6064820152608401610486565b6040516001600160a01b038316602482015260448101829052610aa790849063095ea7b360e01b906064016109e0565b6060610c84848460008585600080866001600160a01b031685876040516114d69190611d59565b60006040518083038185875af1925050503d8060008114611513576040519150601f19603f3d011682016040523d82523d6000602084013e611518565b606091505b509150915061152987838387611534565b979650505050505050565b606083156115a0578251611599576001600160a01b0385163b6115995760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610486565b5081610c84565b610c8483838151156115b55781518083602001fd5b8060405162461bcd60e51b81526004016104869190611d75565b6001600160a01b03811681146104ee57600080fd5b80151581146104ee57600080fd5b600080600080600080600060e0888a03121561160d57600080fd5b8735611618816115cf565b96506020880135611628816115cf565b955060408801359450606088013561163f816115e4565b93506080880135925060a0880135611656816115cf565b8092505060c0880135905092959891949750929550565b60006020828403121561167f57600080fd5b5035919050565b600080600080600080600060e0888a0312156116a157600080fd5b87356116ac816115cf565b965060208801356116bc816115cf565b9550604088013594506060880135935060808801356116da816115cf565b9699959850939692959460a0840135945060c09093013592915050565b60006020828403121561170957600080fd5b81356109a5816115cf565b600080600080600060a0868803121561172c57600080fd5b8535611737816115cf565b94506020860135611747816115cf565b935060408601359250606086013561175e816115e4565b949793965091946080013592915050565b600080600080600080600080610100898b03121561178c57600080fd5b8835611797816115cf565b975060208901356117a7816115cf565b965060408901359550606089013594506080890135935060a08901356117cc816115cf565b979a969950949793969295929450505060c08201359160e0013590565b6000806000606084860312156117fe57600080fd5b8335611809816115cf565b92506020840135611819816115e4565b929592945050506040919091013590565b600080600080600060a0868803121561184257600080fd5b853561184d816115cf565b9450602086013593506040860135611864816115cf565b94979396509394606081013594506080013592915050565b600080600080600060a0868803121561189457600080fd5b853561189f816115cf565b945060208601356118af816115e4565b935060408601359250606086013561175e816115cf565b600080600080608085870312156118dc57600080fd5b84356118e7816115cf565b93506020850135925060408501356118fe816115e4565b9396929550929360600135925050565b60008060008060008060c0878903121561192757600080fd5b8635611932816115cf565b955060208701359450604087013593506060870135611950816115cf565b9598949750929560808101359460a0909101359350915050565b60008060008060008060c0878903121561198357600080fd5b863561198e816115cf565b95506020870135945060408701356119a5816115e4565b93506060870135925060808701356119bc816115cf565b8092505060a087013590509295509295509295565b600080600080600080600060e0888a0312156119ec57600080fd5b87356119f7816115cf565b965060208801359550604088013594506060880135935060808801356116da816115cf565b600080600080600080600060e0888a031215611a3757600080fd5b8735611a42816115cf565b96506020880135955060408801359450606088013561163f816115e4565b600080600080600060a08688031215611a7857600080fd5b8535611a83816115cf565b94506020860135935060408601359250606086013561175e816115e4565b600080600080600080600080610100898b031215611abe57600080fd5b8835611ac9816115cf565b97506020890135611ad9816115cf565b965060408901359550606089013594506080890135611af7816115e4565b935060a0890135925060c0890135611b0e816115cf565b8092505060e089013590509295985092959890939650565b60008060008060008060c08789031215611b3f57600080fd5b8635611b4a816115cf565b95506020870135611b5a816115cf565b9450604087013593506060870135925060808701356119bc816115e4565b60208082526032908201527f4f776c526f757465723a2073656e64657220646f6573206e6f74206861766520604082015271656e6f756768204f574c2062616c616e636560701b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600082821015611bf257611bf2611bca565b500390565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611c1f57600080fd5b81516109a5816115cf565b600081518084526020808501945080840160005b83811015611c635781516001600160a01b031687529582019590820190600101611c3e565b509495945050505050565b85815284602082015260a060408201526000611c8d60a0830186611c2a565b6001600160a01b0394909416606083015250608001529392505050565b848152608060208201526000611cc36080830186611c2a565b6001600160a01b03949094166040830152506060015292915050565b60008219821115611cf257611cf2611bca565b500190565b600060208284031215611d0957600080fd5b81516109a5816115e4565b600060208284031215611d2657600080fd5b5051919050565b60005b83811015611d48578181015183820152602001611d30565b83811115610a175750506000910152565b60008251611d6b818460208701611d2d565b9190910192915050565b6020815260008251806020840152611d94816040850160208701611d2d565b601f01601f1916919091016040019291505056fea26469706673582212204da31d7055babe03d5ec149afe524930a44d10e1b4cdb7fc171b229afc0685c364736f6c63430008090033000000000000000000000000bda06080ea4961fc423396a704009873fe612b3f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d