60e0604052602b600f5534801562000015575f80fd5b5060405162004ff038038062004ff083398101604081905262000038916200041a565b806040518060400160405280601a81526020017f43727970746f2056616c6c65797320416476656e7475726572730000000000008152506040518060400160405280600381526020016243564160e81b815250815f90816200009b9190620005b2565b506001620000aa8282620005b2565b5050506001600160a01b03166080528151600e556020820151600d805460408501516001600160401b0390811668010000000000000000026001600160801b03199092169316929092179190911790556060820151600c906200010e9082620005b2565b5060408051808201909152600781526670726f66696c6560c81b6020820152620001389062000234565b6001600160a01b031660a0526040805180820190915260058152641e5a595b1960da1b60208201526200016b9062000234565b6001600160a01b031660c052620001835f33620002ae565b6200019d5f8051602062004fb083398151915233620002ae565b620001b75f8051602062004fd083398151915233620002ae565b5f620001e960405180604001604052806008815260200167747265617375727960c01b8152506200023460201b60201c565b9050620001f75f82620002ae565b620002115f8051602062004fb083398151915282620002ae565b6200022b5f8051602062004fd083398151915282620002ae565b505050620006d1565b60805160405163bf40fac160e01b81525f916001600160a01b03169063bf40fac190620002669085906004016200067a565b602060405180830381865afa15801562000282573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002a89190620006ae565b92915050565b5f828152600a602090815260408083206001600160a01b038516845290915290205460ff166200034d575f828152600a602090815260408083206001600160a01b03851684529091529020805460ff191660011790556200030c3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b03811182821017156200038a576200038a62000351565b60405290565b604051601f8201601f191681016001600160401b0381118282101715620003bb57620003bb62000351565b604052919050565b80516001600160401b0381168114620003da575f80fd5b919050565b5f5b83811015620003fb578181015183820152602001620003e1565b50505f910152565b80516001600160a01b0381168114620003da575f80fd5b5f80604083850312156200042c575f80fd5b82516001600160401b038082111562000443575f80fd5b908401906080828703121562000457575f80fd5b6200046162000365565b82518152602062000474818501620003c3565b818301526200048660408501620003c3565b60408301526060840151838111156200049d575f80fd5b80850194505087601f850112620004b2575f80fd5b835183811115620004c757620004c762000351565b620004db601f8201601f1916830162000390565b93508084528882828701011115620004f1575f80fd5b6200050281838601848801620003df565b508260608301528195506200051981880162000403565b9450505050509250929050565b600181811c908216806200053b57607f821691505b6020821081036200055a57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620005ad575f81815260208120601f850160051c81016020861015620005885750805b601f850160051c820191505b81811015620005a95782815560010162000594565b5050505b505050565b81516001600160401b03811115620005ce57620005ce62000351565b620005e681620005df845462000526565b8462000560565b602080601f8311600181146200061c575f8415620006045750858301515b5f19600386901b1c1916600185901b178555620005a9565b5f85815260208120601f198616915b828110156200064c578886015182559484019460019091019084016200062b565b50858210156200066a57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b602081525f82518060208401526200069a816040850160208701620003df565b601f01601f19169190910160400192915050565b5f60208284031215620006bf575f80fd5b620006ca8262000403565b9392505050565b60805160a05160c0516148b4620006fc5f395f61349b01525f61343401525f61077901526148b45ff3fe608060405260043610610366575f3560e01c80638406c079116101c8578063b6bde534116100fd578063dc36f6691161009d578063ec0d75571161006d578063ec0d755714610c98578063f5aa406d14610cac578063f8e6f95e14610ccb578063ffc9896b14610cea575f80fd5b8063dc36f66914610c06578063e1c29fb514610c25578063e8656fcc14610c38578063e985e9c514610c51575f80fd5b8063c2ca0ac5116100d8578063c2ca0ac514610b76578063c87b56dd14610b95578063d539139314610bb4578063d547741f14610be7575f80fd5b8063b6bde53414610b26578063b88d4fde14610b3a578063ba1c621714610b59575f80fd5b8063a217fddf11610168578063a500cb6511610143578063a500cb65146108a5578063a853211a146108c4578063b09afec1146108e4578063b38a45b914610b07575f80fd5b8063a217fddf1461085e578063a22cb46514610871578063a329e1db14610890575f80fd5b80639769dc0e116101a35780639769dc0e146107e55780639a0a508314610804578063a0bcfc7f1461082a578063a1bd5fc714610849575f80fd5b80638406c0791461076857806391d148541461079b57806395d89b41146107ba575f80fd5b8063386bfc981161029e5780636352211e1161023e5780637894505e116102195780637894505e146106d45780637a95f5bf146106f35780637b7d7411146107125780637db3aecc14610731575f80fd5b80636352211e146106605780636dc92b651461067f57806370a08231146106b5575f80fd5b80634e6ecc4e116102795780634e6ecc4e146105dc5780634f6ccce7146105f95780635de6dc5514610618578063611f3f1014610644575f80fd5b8063386bfc981461058957806342842e0e1461059e578063477c4f93146105bd575f80fd5b806321480614116103095780632f2ff15d116102e45780632f2ff15d1461050d5780632f745c591461052c578063327fbb9a1461054b57806336568abe1461056a575f80fd5b806321480614146104a157806323b872dd146104c0578063248a9ca3146104df575f80fd5b8063095ea7b311610344578063095ea7b3146104235780630ff26ccb1461044457806317e7f2951461046357806318160ddd1461048d575f80fd5b806301ffc9a71461036a57806306fdde031461039e578063081812fc146103ec575b5f80fd5b348015610375575f80fd5b50610389610384366004613b5c565b610d54565b60405190151581526020015b60405180910390f35b3480156103a9575f80fd5b5060408051808201909152601a81527f43727970746f2056616c6c65797320416476656e74757265727300000000000060208201525b6040516103959190613bc4565b3480156103f7575f80fd5b5061040b610406366004613bd6565b610d73565b6040516001600160a01b039091168152602001610395565b34801561042e575f80fd5b5061044261043d366004613c08565b610dfe565b005b34801561044f575f80fd5b5061044261045e366004613cd6565b610f12565b34801561046e575f80fd5b5061047f681b1ae4d6e2ef50000081565b604051908152602001610395565b348015610498575f80fd5b5060085461047f565b3480156104ac575f80fd5b506104426104bb366004613e83565b610f34565b3480156104cb575f80fd5b506104426104da366004613edd565b610fb9565b3480156104ea575f80fd5b5061047f6104f9366004613bd6565b5f908152600a602052604090206001015490565b348015610518575f80fd5b50610442610527366004613f16565b610fea565b348015610537575f80fd5b5061047f610546366004613c08565b61100f565b348015610556575f80fd5b50610442610565366004613f40565b6110a3565b348015610575575f80fd5b50610442610584366004613f16565b6110e8565b348015610594575f80fd5b5061047f600e5481565b3480156105a9575f80fd5b506104426105b8366004613edd565b611166565b3480156105c8575f80fd5b506104426105d7366004613f40565b611180565b3480156105e7575f80fd5b5061047f69054b40b1f852bda0000081565b348015610604575f80fd5b5061047f610613366004613bd6565b6111c5565b348015610623575f80fd5b50610637610632366004613f61565b611255565b6040516103959190613f7a565b34801561064f575f80fd5b5061047f682b5e3af16b1880000081565b34801561066b575f80fd5b5061040b61067a366004613bd6565b6112f3565b34801561068a575f80fd5b50610693611369565b6040805194151585526020850193909352918301526060820152608001610395565b3480156106c0575f80fd5b5061047f6106cf366004613f61565b6113a6565b3480156106df575f80fd5b506104426106ee366004613f40565b61142b565b3480156106fe575f80fd5b5061044261070d366004613fbd565b6114b4565b34801561071d575f80fd5b5061044261072c366004613f40565b6116fc565b34801561073c575f80fd5b50600d54610750906001600160401b031681565b6040516001600160401b039091168152602001610395565b348015610773575f80fd5b5061040b7f000000000000000000000000000000000000000000000000000000000000000081565b3480156107a6575f80fd5b506103896107b5366004613f16565b611741565b3480156107c5575f80fd5b5060408051808201909152600381526243564160e81b60208201526103df565b3480156107f0575f80fd5b506104426107ff366004613f61565b61176b565b34801561080f575f80fd5b50600d5461075090600160401b90046001600160401b031681565b348015610835575f80fd5b50610442610844366004613fdd565b6117ba565b348015610854575f80fd5b5061047f60115481565b348015610869575f80fd5b5061047f5f81565b34801561087c575f80fd5b5061044261088b366004614048565b6117d8565b34801561089b575f80fd5b5061047f610bb881565b3480156108b0575f80fd5b506104426108bf36600461407d565b6117e3565b3480156108cf575f80fd5b5061047f5f8051602061485f83398151915281565b3480156108ef575f80fd5b50610afa6108fe366004613bd6565b604080516102a0810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c081018290526101e081018290526102008101829052610220810182905261024081018290526102608101829052610280810191909152505f9081526014602090815260409182902082516102a081018452815461ffff808216835262010000820481169483019490945264010000000081048416948201949094526601000000000000840483166060820152600160401b840483166080820152600160501b8404831660a0820152600160601b8404831660c0820152600160701b840490921660e083015260ff600160801b84048116610100840152600160881b84048116610120840152600160901b84048116610140840152600160981b84048116610160840152600160a01b84048116610180840152600160a81b840481166101a0840152600160b01b840481166101c0840152600160b81b840481166101e0840152600160c01b84048116610200840152600160c81b84048116610220840152600160d01b9093049092161515610240820152600182015461026082015260029091015461028082015290565b60405161039591906140b6565b348015610b12575f80fd5b50610442610b21366004613bd6565b61183c565b348015610b31575f80fd5b5061047f601981565b348015610b45575f80fd5b50610442610b54366004614210565b61184d565b348015610b64575f80fd5b5061047f690a968163f0a57b40000081565b348015610b81575f80fd5b50610442610b90366004613bd6565b61187f565b348015610ba0575f80fd5b506103df610baf366004613bd6565b611b35565b348015610bbf575f80fd5b5061047f7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b348015610bf2575f80fd5b50610442610c01366004613f16565b611bbe565b348015610c11575f80fd5b50610442610c203660046142c8565b611be3565b610442610c33366004614342565b611d32565b348015610c43575f80fd5b506012546103899060ff1681565b348015610c5c575f80fd5b50610389610c6b36600461435d565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205460ff1690565b348015610ca3575f80fd5b50610442611dd9565b348015610cb7575f80fd5b50610442610cc6366004613bd6565b611df9565b348015610cd6575f80fd5b50610442610ce5366004614385565b611e0a565b348015610cf5575f80fd5b50610d09610d04366004613f61565b612053565b60405161039591905f60c082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015292915050565b5f610d5e826120e7565b80610d6d5750610d6d82612136565b92915050565b5f610d7d8261215a565b610de35760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b505f908152600460205260409020546001600160a01b031690565b5f610e08826112f3565b9050806001600160a01b0316836001600160a01b031603610e755760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610dda565b336001600160a01b0382161480610e915750610e918133610c6b565b610f035760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610dda565b610f0d8383612176565b505050565b5f8051602061485f833981519152610f2a81336121e3565b610f0d8383612247565b5f8051602061485f833981519152610f4c81336121e3565b505f94855260146020526040909420805461ffff60b01b1916600160b01b60ff9586160260ff60b81b191617600160b81b938516939093029290921761ffff60c01b1916600160c01b9184169190910260ff60c81b191617600160c81b9290931691909102919091179055565b610fc3338261260d565b610fdf5760405162461bcd60e51b8152600401610dda9061440b565b610f0d8383836126f4565b5f828152600a602052604090206001015461100581336121e3565b610f0d838361289b565b5f611019836113a6565b821061107b5760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610dda565b506001600160a01b03919091165f908152600660209081526040808320938352929052205490565b5f8051602061485f8339815191526110bb81336121e3565b505f91825260146020526040909120805460ff909216600160981b0260ff60981b19909216919091179055565b6001600160a01b03811633146111585760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610dda565b6111628282612920565b5050565b610f0d83838360405180602001604052805f81525061184d565b5f8051602061485f83398151915261119881336121e3565b505f91825260146020526040909120805460ff909216600160a81b0260ff60a81b19909216919091179055565b5f6111cf60085490565b82106112325760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610dda565b600882815481106112455761124561445c565b905f5260205f2001549050919050565b60605f611261836113a6565b90505f816001600160401b0381111561127c5761127c613c30565b6040519080825280602002602001820160405280156112a5578160200160208202803683370190505b5090505f5b828110156112eb576112bc858261100f565b8282815181106112ce576112ce61445c565b6020908102919091010152806112e381614484565b9150506112aa565b509392505050565b5f818152600260205260408120546001600160a01b031680610d6d5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610dda565b6012545f9081908190819060ff16611380600b5490565b600d5491955093506001600160401b038082169350600160401b90910416905090919293565b5f6001600160a01b0382166114105760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610dda565b506001600160a01b03165f9081526003602052604090205490565b5f8051602061485f83398151915261144381336121e3565b60058260ff16106114875760405162461bcd60e51b815260206004820152600e60248201526d496e76616c69642072617269747960901b6044820152606401610dda565b505f91825260146020526040909120805460ff909216600160901b0260ff60901b19909216919091179055565b5f6114bf81336121e3565b6114c88361215a565b6114e45760405162461bcd60e51b8152600401610dda9061449c565b5f6114ee846112f3565b6001600160a01b0381165f908152601360209081526040808320815160c08101835281548152600182015481850152600282015481840152600382015460608201526004820154608082015260059091015460a082015288845260149092529091205491925090600160d01b900460ff16156115a55760405162461bcd60e51b8152602060048201526016602482015275151bdad95b88185b1c9958591e481c995d99585b195960521b6044820152606401610dda565b848160a00151146115ea5760405162461bcd60e51b815260206004820152600f60248201526e125b9d985b1a59081d1bdad95b9259608a1b6044820152606401610dda565b5f816080015111801561160057505f8160a00151115b61163d5760405162461bcd60e51b815260206004820152600e60248201526d4e6f20636f6d6d6974206461746160901b6044820152606401610dda565b6001600160a01b0382165f90815260136020526040812060058101829055600401819055601080546116cd918791908461167683614484565b9190505560408051602080820193909352808201939093527f41445645544e52554945524d494e54534f554c52414e444f4d0000000000000060608401528051605981850301815260799093019052815191012090565b90506116d98187612986565b50506001600160a01b03165f908152601360205260409020600301929092555050565b5f8051602061485f83398151915261171481336121e3565b505f91825260146020526040909120805460ff909216600160a01b0260ff60a01b19909216919091179055565b5f918252600a602090815260408084206001600160a01b0393909316845291905290205460ff1690565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a661179681336121e3565b5f6117a0600b5490565b90506117ac8382612f1e565b610f0d600b80546001019055565b5f6117c581336121e3565b600c6117d2838583614541565b50505050565b61116233838361305a565b5f8051602061485f8339815191526117fb81336121e3565b505f92835260146020526040909220805461ffff60801b1916600160801b60ff9384160260ff60881b191617600160881b9290931691909102919091179055565b5f61184781336121e3565b50600f55565b611857338361260d565b6118735760405162461bcd60e51b8152600401610dda9061440b565b6117d284848484613127565b6118888161215a565b6118a45760405162461bcd60e51b8152600401610dda9061449c565b336118ae826112f3565b6001600160a01b0316146118f05760405162461bcd60e51b81526020600482015260096024820152682737ba1037bbb732b960b91b6044820152606401610dda565b335f908152601360209081526040808320815160c08101835281548152600182015481850152600282015481840152600382015460608201526004820154608082015260059091015460a0820152848452601490925290912054600160d01b900460ff161561199a5760405162461bcd60e51b8152602060048201526016602482015275151bdad95b88185b1c9958591e481c995d99585b195960521b6044820152606401610dda565b818160a00151146119df5760405162461bcd60e51b815260206004820152600f60248201526e125b9d985b1a59081d1bdad95b9259608a1b6044820152606401610dda565b5f81608001511180156119f557505f8160a00151115b611a325760405162461bcd60e51b815260206004820152600e60248201526d4e6f20636f6d6d6974206461746160901b6044820152606401610dda565b6080810151611a429060036145fc565b4311611a865760405162461bcd60e51b8152602060048201526013602482015272426c6f636b68617368206e6f7420726561647960681b6044820152606401610dda565b5f81608001516003611a9891906145fc565b4090505f819003611adf5760405162461bcd60e51b8152602060048201526011602482015270092dcecc2d8d2c840c4d8dec6d6d0c2e6d607b1b6044820152606401610dda565b335f9081526013602052604081206005810182905560040181905560108054611b0f918491908461167683614484565b9050611b1b8482612986565b5050335f9081526013602052604090206003019190915550565b6060611b408261215a565b611b8c5760405162461bcd60e51b815260206004820152601860248201527f546f6b656e20646f6573206e6f742065786973742079657400000000000000006044820152606401610dda565b600c611b978361315a565b604051602001611ba892919061460f565b6040516020818303038152906040529050919050565b5f828152600a6020526040902060010154611bd981336121e3565b610f0d8383612920565b5f8051602061485f833981519152611bfb81336121e3565b60088761ffff1610158015611c15575060088661ffff1610155b8015611c26575060088561ffff1610155b8015611c37575060088461ffff1610155b8015611c48575060088361ffff1610155b8015611c59575060018261ffff1610155b611c955760405162461bcd60e51b815260206004820152600d60248201526c496e76616c696420737461747360981b6044820152606401610dda565b505f96875260146020526040909620805461ffff978816600160501b0261ffff60501b19938916600160401b02939093166bffffffff00000000000000001994891666010000000000000267ffff00000000000019968a16640100000000029690961667ffffffff0000000019978a16620100000263ffffffff199093169990981698909817179490941694909417919091171692909217179055565b60125460ff16611d745760405162461bcd60e51b815260206004820152600d60248201526c4d696e74206e6f74206c69766560981b6044820152606401610dda565b600d54600160401b90046001600160401b03164211611dcc5760405162461bcd60e51b81526020600482015260146024820152735075626c6963206d696e74206e6f74206c69766560601b6044820152606401610dda565b611dd6815f613256565b50565b5f611de481336121e3565b506012805460ff19811660ff90911615179055565b5f611e0481336121e3565b50600e55565b60125460ff16611e4c5760405162461bcd60e51b815260206004820152600d60248201526c4d696e74206e6f74206c69766560981b6044820152606401610dda565b600d546001600160401b031642118015611e775750600d54600160401b90046001600160401b031642105b611eb85760405162461bcd60e51b815260206004820152601260248201527157686974656c697374206e6f74206c69766560701b6044820152606401610dda565b335f90815260136020908152604091829020825160c081018452815480825260018084015494830194909452600283015494820194909452600382015460608201526004820154608082015260059091015460a0820152918491611f1c91906145fc565b1115611f6a5760405162461bcd60e51b815260206004820152601760248201527f57686974656c697374206d696e742065786365656465640000000000000000006044820152606401610dda565b604080513360208201529081018490525f9060600160408051601f1981840301815282825280516020918201209083015201604051602081830303815290604052805190602001209050611ff48686808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525050600e549150849050613592565b6120405760405162461bcd60e51b815260206004820152601b60248201527f57686974656c697374206d696e7420756e617574686f72697a656400000000006044820152606401610dda565b61204b836001613256565b505050505050565b6120866040518060c001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b506001600160a01b03165f90815260136020908152604091829020825160c08101845281548152600182015492810192909252600281015492820192909252600382015460608201526004820154608082015260059091015460a082015290565b5f6001600160e01b031982166380ac58cd60e01b148061211757506001600160e01b03198216635b5e139f60e01b145b80610d6d57506301ffc9a760e01b6001600160e01b0319831614610d6d565b5f6001600160e01b03198216637965db0b60e01b1480610d6d5750610d6d826135a7565b5f908152600260205260409020546001600160a01b0316151590565b5f81815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906121aa826112f3565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6121ed8282611741565b61116257612205816001600160a01b031660146135cb565b6122108360206135cb565b604051602001612221929190614692565b60408051601f198184030181529082905262461bcd60e51b8252610dda91600401613bc4565b6122508261215a565b61226c5760405162461bcd60e51b8152600401610dda9061449c565b600581610140015160ff16106122b55760405162461bcd60e51b815260206004820152600e60248201526d496e76616c69642072617269747960901b6044820152606401610dda565b6008815f015161ffff16101580156122d657506008816020015161ffff1610155b80156122eb57506008816040015161ffff1610155b801561230057506008816060015161ffff1610155b801561231557506008816080015161ffff1610155b801561232a575060018160a0015161ffff1610155b6123665760405162461bcd60e51b815260206004820152600d60248201526c496e76616c696420737461747360981b6044820152606401610dda565b8060145f8481526020019081526020015f205f820151815f015f6101000a81548161ffff021916908361ffff1602179055506020820151815f0160026101000a81548161ffff021916908361ffff1602179055506040820151815f0160046101000a81548161ffff021916908361ffff1602179055506060820151815f0160066101000a81548161ffff021916908361ffff1602179055506080820151815f0160086101000a81548161ffff021916908361ffff16021790555060a0820151815f01600a6101000a81548161ffff021916908361ffff16021790555060c0820151815f01600c6101000a81548161ffff021916908361ffff16021790555060e0820151815f01600e6101000a81548161ffff021916908361ffff160217905550610100820151815f0160106101000a81548160ff021916908360ff160217905550610120820151815f0160116101000a81548160ff021916908360ff160217905550610140820151815f0160126101000a81548160ff021916908360ff160217905550610160820151815f0160136101000a81548160ff021916908360ff160217905550610180820151815f0160146101000a81548160ff021916908360ff1602179055506101a0820151815f0160156101000a81548160ff021916908360ff1602179055506101c0820151815f0160166101000a81548160ff021916908360ff1602179055506101e0820151815f0160176101000a81548160ff021916908360ff160217905550610200820151815f0160186101000a81548160ff021916908360ff160217905550610220820151815f0160196101000a81548160ff021916908360ff160217905550610240820151815f01601a6101000a81548160ff021916908315150217905550610260820151816001015561028082015181600201559050505050565b5f6126178261215a565b6126785760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610dda565b5f612682836112f3565b9050806001600160a01b0316846001600160a01b031614806126bd5750836001600160a01b03166126b284610d73565b6001600160a01b0316145b806126ec57506001600160a01b038082165f9081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b0316612707826112f3565b6001600160a01b03161461276f5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401610dda565b6001600160a01b0382166127d15760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610dda565b6127dc838383613767565b6127e65f82612176565b6001600160a01b0383165f90815260036020526040812080546001929061280e908490614706565b90915550506001600160a01b0382165f90815260036020526040812080546001929061283b9084906145fc565b90915550505f8181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6128a58282611741565b611162575f828152600a602090815260408083206001600160a01b03851684529091529020805460ff191660011790556128dc3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b61292a8282611741565b15611162575f828152600a602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b5f612990826137d3565b90505f8080808480156129c257600181146129cb57600281146129d457600381146129dd57600481146129e6576129eb565b600a94506129eb565b600f94506129eb565b601694506129eb565b602094506129eb565b602d94505b5060408051600680825260e082019092525f916020820160c0803683370190505090505b8415612acd57612a2060068861472d565b935083600503612a335760019250612a87565b600a8510612a42576004612a45565b60025b60ff16915083600403612a6057612a5d600283614740565b91505b818510612a6d5781612a6f565b845b612a79908861472d565b612a849060016145fc565b92505b612a918386614706565b945082818581518110612aa657612aa661445c565b60200260200101818151612aba9190614753565b61ffff1690525060059690961c95612a0f565b5f612ad88888613834565b9050604051806102a00160405280835f81518110612af857612af861445c565b602002602001015161ffff16815260200183600181518110612b1c57612b1c61445c565b602002602001015161ffff16815260200183600281518110612b4057612b4061445c565b602002602001015161ffff16815260200183600381518110612b6457612b6461445c565b602002602001015161ffff16815260200183600481518110612b8857612b8861445c565b602002602001015161ffff16815260200183600581518110612bac57612bac61445c565b602002602001015161ffff1681526020015f61ffff1681526020015f61ffff168152602001825f81518110612be357612be361445c565b602002602001015160ff16815260200182600181518110612c0657612c0661445c565b602002602001015160ff1681526020018860ff1681526020015f60ff1681526020015f60ff1681526020015f60ff1681526020015f60ff1681526020015f60ff1681526020015f60ff1681526020015f60ff1681526020016001151581526020015f81526020015f81525060145f8b81526020019081526020015f205f820151815f015f6101000a81548161ffff021916908361ffff1602179055506020820151815f0160026101000a81548161ffff021916908361ffff1602179055506040820151815f0160046101000a81548161ffff021916908361ffff1602179055506060820151815f0160066101000a81548161ffff021916908361ffff1602179055506080820151815f0160086101000a81548161ffff021916908361ffff16021790555060a0820151815f01600a6101000a81548161ffff021916908361ffff16021790555060c0820151815f01600c6101000a81548161ffff021916908361ffff16021790555060e0820151815f01600e6101000a81548161ffff021916908361ffff160217905550610100820151815f0160106101000a81548160ff021916908360ff160217905550610120820151815f0160116101000a81548160ff021916908360ff160217905550610140820151815f0160126101000a81548160ff021916908360ff160217905550610160820151815f0160136101000a81548160ff021916908360ff160217905550610180820151815f0160146101000a81548160ff021916908360ff1602179055506101a0820151815f0160156101000a81548160ff021916908360ff1602179055506101c0820151815f0160166101000a81548160ff021916908360ff1602179055506101e0820151815f0160176101000a81548160ff021916908360ff160217905550610200820151815f0160186101000a81548160ff021916908360ff160217905550610220820151815f0160196101000a81548160ff021916908360ff160217905550610240820151815f01601a6101000a81548160ff02191690831515021790555061026082015181600101556102808201518160020155905050505050505050505050565b6001600160a01b038216612f745760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610dda565b612f7d8161215a565b15612fca5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610dda565b612fd55f8383613767565b6001600160a01b0382165f908152600360205260408120805460019290612ffd9084906145fc565b90915550505f8181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b816001600160a01b0316836001600160a01b0316036130bb5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610dda565b6001600160a01b038381165f81815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6131328484846126f4565b61313e848484846139a8565b6117d25760405162461bcd60e51b8152600401610dda9061476e565b6060815f036131805750506040805180820190915260018152600360fc1b602082015290565b815f5b81156131a9578061319381614484565b91506131a29050600a83614740565b9150613183565b5f816001600160401b038111156131c2576131c2613c30565b6040519080825280601f01601f1916602001820160405280156131ec576020820181803683370190505b5090505b84156126ec57613201600183614706565b915061320e600a8661472d565b6132199060306145fc565b60f81b81838151811061322e5761322e61445c565b60200101906001600160f81b03191690815f1a90535061324f600a86614740565b94506131f0565b335f90815260136020908152604091829020825160c081018452815481526001820154928101929092526002810154928201929092526003820154606082015260048201546080820181905260059092015460a0820152901580156132bd575060a0810151155b6133095760405162461bcd60e51b815260206004820152601760248201527f436f6d6d69742064617461206e6f7420636c65617265640000000000000000006044820152606401610dda565b80516019906133199060016145fc565b11156133575760405162461bcd60e51b815260206004820152600d60248201526c135a5b9d08195e18d959591959609a1b6044820152606401610dda565b5f613361600b5490565b9050610bb86133718260016145fc565b11156133b15760405162461bcd60e51b815260206004820152600f60248201526e14dd5c1c1b1e48195e18d959591959608a1b6044820152606401610dda565b8315613499575f826040015169054b40b1f852bda000006133d291906147c0565b6133e690690a968163f0a57b4000006145fc565b90508060115f8282546133f991906145fc565b90915550506040830180519061340e82614484565b9052506040516349a01c2960e01b815233600482015260016024820152604481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906349a01c29906064015f604051808303815f87803b15801561347d575f80fd5b505af115801561348f573d5f803e3d5ffd5b5050505050613560565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166323b872dd3330866134de57682b5e3af16b188000006134e9565b681b1ae4d6e2ef5000005b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303815f875af115801561353a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061355e91906147d7565b505b335f8181526013602052604090204360048201556005018290556135849082612f1e565b6117d2600b80546001019055565b5f8261359e8584613aa5565b14949350505050565b5f6001600160e01b0319821663780e9d6360e01b1480610d6d5750610d6d826120e7565b60605f6135d98360026147c0565b6135e49060026145fc565b6001600160401b038111156135fb576135fb613c30565b6040519080825280601f01601f191660200182016040528015613625576020820181803683370190505b509050600360fc1b815f8151811061363f5761363f61445c565b60200101906001600160f81b03191690815f1a905350600f60fb1b8160018151811061366d5761366d61445c565b60200101906001600160f81b03191690815f1a9053505f61368f8460026147c0565b61369a9060016145fc565b90505b6001811115613711576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106136ce576136ce61445c565b1a60f81b8282815181106136e4576136e461445c565b60200101906001600160f81b03191690815f1a90535060049490941c9361370a816147f2565b905061369d565b5083156137605760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610dda565b9392505050565b5f81815260146020526040902054600160d01b900460ff166001600160a01b03841615806137925750805b6117d25760405162461bcd60e51b8152602060048201526012602482015271151bdad95b881b9959591cc81c995d99585b60721b6044820152606401610dda565b5f806137e060648461472d565b9050602d8110156137f3575f915061382e565b604b811015613805576001915061382e565b605a811015613817576002915061382e565b6062811015613829576003915061382e565b600491505b50919050565b60605f606484068380156138675760018114613872576002811461387d576003811461388b57600481146138995761389e565b60198210925061389e565b60328210925061389e565b600a8210600101925061389e565b604b8210600101925061389e565b600292505b5050805f036138ad5750610d6d565b6040805160028082526060820183529091602083019080368337019050509150600f54846138db919061472d565b6138e69060016145fc565b825f815181106138f8576138f861445c565b602002602001018181525050806002036139a1575f600f54600886901c61391f919061472d565b61392a9060016145fc565b90505b825f8151811061393f5761393f61445c565b6020026020010151810361397557600f54600886901c95613963919060101c61472d565b61396e9060016145fc565b905061392d565b6139808160016145fc565b836001815181106139935761399361445c565b602002602001018181525050505b5092915050565b5f6001600160a01b0384163b15613a9a57604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906139eb903390899088908890600401614807565b6020604051808303815f875af1925050508015613a25575060408051601f3d908101601f19168201909252613a2291810190614843565b60015b613a80573d808015613a52576040519150601f19603f3d011682016040523d82523d5f602084013e613a57565b606091505b5080515f03613a785760405162461bcd60e51b8152600401610dda9061476e565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506126ec565b506001949350505050565b5f81815b84518110156112eb575f858281518110613ac557613ac561445c565b60200260200101519050808311613b07576040805160208101859052908101829052606001604051602081830303815290604052805190602001209250613b34565b60408051602081018390529081018490526060016040516020818303038152906040528051906020012092505b5080613b3f81614484565b915050613aa9565b6001600160e01b031981168114611dd6575f80fd5b5f60208284031215613b6c575f80fd5b813561376081613b47565b5f5b83811015613b91578181015183820152602001613b79565b50505f910152565b5f8151808452613bb0816020860160208601613b77565b601f01601f19169290920160200192915050565b602081525f6137606020830184613b99565b5f60208284031215613be6575f80fd5b5035919050565b80356001600160a01b0381168114613c03575f80fd5b919050565b5f8060408385031215613c19575f80fd5b613c2283613bed565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b6040516102a081016001600160401b0381118282101715613c6757613c67613c30565b60405290565b604051601f8201601f191681016001600160401b0381118282101715613c9557613c95613c30565b604052919050565b803561ffff81168114613c03575f80fd5b803560ff81168114613c03575f80fd5b8015158114611dd6575f80fd5b8035613c0381613cbe565b5f808284036102c0811215613ce9575f80fd5b833592506102a080601f1983011215613d00575f80fd5b613d08613c44565b9150613d1660208601613c9d565b8252613d2460408601613c9d565b6020830152613d3560608601613c9d565b6040830152613d4660808601613c9d565b6060830152613d5760a08601613c9d565b6080830152613d6860c08601613c9d565b60a0830152613d7960e08601613c9d565b60c0830152610100613d8c818701613c9d565b60e0840152610120613d9f818801613cae565b828501526101409150613db3828801613cae565b90840152610160613dc5878201613cae565b828501526101809150613dd9828801613cae565b908401526101a0613deb878201613cae565b828501526101c09150613dff828801613cae565b908401526101e0613e11878201613cae565b828501526102009150613e25828801613cae565b90840152610220613e37878201613cae565b828501526102409150613e4b828801613cae565b90840152610260613e5d878201613ccb565b918401919091526102808681013591840191909152940135938101939093525092909150565b5f805f805f60a08688031215613e97575f80fd5b85359450613ea760208701613cae565b9350613eb560408701613cae565b9250613ec360608701613cae565b9150613ed160808701613cae565b90509295509295909350565b5f805f60608486031215613eef575f80fd5b613ef884613bed565b9250613f0660208501613bed565b9150604084013590509250925092565b5f8060408385031215613f27575f80fd5b82359150613f3760208401613bed565b90509250929050565b5f8060408385031215613f51575f80fd5b82359150613f3760208401613cae565b5f60208284031215613f71575f80fd5b61376082613bed565b602080825282518282018190525f9190848201906040850190845b81811015613fb157835183529284019291840191600101613f95565b50909695505050505050565b5f8060408385031215613fce575f80fd5b50508035926020909101359150565b5f8060208385031215613fee575f80fd5b82356001600160401b0380821115614004575f80fd5b818501915085601f830112614017575f80fd5b813581811115614025575f80fd5b866020828501011115614036575f80fd5b60209290920196919550909350505050565b5f8060408385031215614059575f80fd5b61406283613bed565b9150602083013561407281613cbe565b809150509250929050565b5f805f6060848603121561408f575f80fd5b8335925061409f60208501613cae565b91506140ad60408501613cae565b90509250925092565b815161ffff1681526102a0810160208301516140d8602084018261ffff169052565b5060408301516140ee604084018261ffff169052565b506060830151614104606084018261ffff169052565b50608083015161411a608084018261ffff169052565b5060a083015161413060a084018261ffff169052565b5060c083015161414660c084018261ffff169052565b5060e083015161415c60e084018261ffff169052565b506101008381015160ff90811691840191909152610120808501518216908401526101408085015182169084015261016080850151821690840152610180808501518216908401526101a0808501518216908401526101c0808501518216908401526101e08085015182169084015261020080850151821690840152610220808501519091169083015261024080840151151590830152610260808401519083015261028092830151929091019190915290565b5f805f8060808587031215614223575f80fd5b61422c85613bed565b9350602061423b818701613bed565b93506040860135925060608601356001600160401b038082111561425d575f80fd5b818801915088601f830112614270575f80fd5b81358181111561428257614282613c30565b614294601f8201601f19168501613c6d565b915080825289848285010111156142a9575f80fd5b80848401858401375f8482840101525080935050505092959194509250565b5f805f805f805f60e0888a0312156142de575f80fd5b873596506142ee60208901613c9d565b95506142fc60408901613c9d565b945061430a60608901613c9d565b935061431860808901613c9d565b925061432660a08901613c9d565b915061433460c08901613c9d565b905092959891949750929550565b5f60208284031215614352575f80fd5b813561376081613cbe565b5f806040838503121561436e575f80fd5b61437783613bed565b9150613f3760208401613bed565b5f805f8060608587031215614398575f80fd5b84356001600160401b03808211156143ae575f80fd5b818701915087601f8301126143c1575f80fd5b8135818111156143cf575f80fd5b8860208260051b85010111156143e3575f80fd5b602092830196509450508501359150604085013561440081613cbe565b939692955090935050565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f6001820161449557614495614470565b5060010190565b602080825260149082015273151bdad95b88191bd95cc81b9bdd08195e1a5cdd60621b604082015260600190565b600181811c908216806144de57607f821691505b60208210810361382e57634e487b7160e01b5f52602260045260245ffd5b601f821115610f0d575f81815260208120601f850160051c810160208610156145225750805b601f850160051c820191505b8181101561204b5782815560010161452e565b6001600160401b0383111561455857614558613c30565b61456c8361456683546144ca565b836144fc565b5f601f84116001811461459d575f85156145865750838201355b5f19600387901b1c1916600186901b1783556145f5565b5f83815260209020601f19861690835b828110156145cd57868501358255602094850194600190920191016145ad565b50868210156145e9575f1960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b80820180821115610d6d57610d6d614470565b5f80845461461c816144ca565b60018281168015614634576001811461464957614675565b60ff1984168752821515830287019450614675565b885f526020805f205f5b8581101561466c5781548a820152908401908201614653565b50505082870194505b505050508351614689818360208801613b77565b01949350505050565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081525f83516146c9816017850160208801613b77565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516146fa816028840160208801613b77565b01602801949350505050565b81810381811115610d6d57610d6d614470565b634e487b7160e01b5f52601260045260245ffd5b5f8261473b5761473b614719565b500690565b5f8261474e5761474e614719565b500490565b61ffff8181168382160190808211156139a1576139a1614470565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b8082028115828204841417610d6d57610d6d614470565b5f602082840312156147e7575f80fd5b815161376081613cbe565b5f8161480057614800614470565b505f190190565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f9061483990830184613b99565b9695505050505050565b5f60208284031215614853575f80fd5b815161376081613b4756fe21d1167972f621f75904fb065136bc8b53c7ba1c60ccd3a7758fbee465851e9ca26469706673582212202de5c9972c9412a8f43c964bfa2c0efcccd30617c351e7ef51cdae10bba4dbdd64736f6c634300081400339f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a621d1167972f621f75904fb065136bc8b53c7ba1c60ccd3a7758fbee465851e9c00000000000000000000000000000000000000000000000000000000000000400000000000000000000000001401439789259ac682637b1e87ea77df0599dc55437b59aacc1eb5a1ae45712ea58e30b40dd0c7278266800ed83bc1e431c3081100000000000000000000000000000000000000000000000000000000663165d00000000000000000000000000000000000000000000000000000000066316bac0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000001368747470733a2f2f736f756c6e66742e696f2f00000000000000000000000000