60806040523480156200001157600080fd5b50604051620041b8380380620041b8833981016040819052620000349162000a17565b8251839081906200004d906003906020840190620005d3565b50805162000063906004906020840190620005d3565b505060016005555081516009805460208501516040860151606087015161ffff90811666010000000000000261ffff60301b19928216640100000000029290921663ffffffff60201b19938216620100000263ffffffff1990951691909616179290921716929092179190911790556080820151600a5560a0820151600b80546001600160a01b039283166001600160a01b03199182161790915560c0840151600c805491841691831691909117905560e0840151600d8054918416918316919091179055610100840151600e8054918416918316919091179055610120840151600f80549184169183169190911790556101408401516010805491841691831691909117905561016084015160118054918416918316919091179055610180840151601280549184169183169190911790556101a0840151601380549190931691161790556101c08201516014556101e082015160155561020082015160165561022082015160175561024082015160185560005b81518163ffffffff161015620005c957818163ffffffff168151811062000204576200020462000b11565b602002602001015160066000848463ffffffff16815181106200022b576200022b62000b11565b602090810291909101810151516001600160a01b0390811683528282019390935260409182016000208451815492860151938601516060870151608088015160a089015160c08a015161ffff908116600160f01b026001600160f01b03928216600160e01b0261ffff60e01b19948316600160d01b029490941663ffffffff60d01b19958316600160c01b0261ffff60c01b19978416600160b01b029790971663ffffffff60b01b1993909b16600160a01b026001600160b01b0319909a1697909b1696909617979097179690961696909617919091171694909417929092171691909117815560e082015160018201805461010085015163ffffffff908116640100000000026001600160401b03199092169381169390931717905561012083015160028301556101409092015160039091015582517f5a145b33989f1c283c47a63ab8ec7c5fc977bad0184792321ce7b4fb2315e4119184919084169081106200039b576200039b62000b11565b602002602001015160000151838363ffffffff1681518110620003c257620003c262000b11565b602002602001015160200151848463ffffffff1681518110620003e957620003e962000b11565b602002602001015160400151858563ffffffff168151811062000410576200041062000b11565b602002602001015160e00151868663ffffffff168151811062000437576200043762000b11565b60200260200101516101000151878763ffffffff16815181106200045f576200045f62000b11565b602002602001015160600151888863ffffffff168151811062000486576200048662000b11565b602002602001015160800151898963ffffffff1681518110620004ad57620004ad62000b11565b602002602001015160a001518a8a63ffffffff1681518110620004d457620004d462000b11565b602002602001015160c001518b8b63ffffffff1681518110620004fb57620004fb62000b11565b602002602001015161012001518c8c63ffffffff168151811062000523576200052362000b11565b60200260200101516101400151604051620005ae9b9a999897969594939291906001600160a01b039b909b168b5261ffff998a1660208c015297891660408b015263ffffffff96871660608b015294909516608089015291861660a0880152851660c0870152841660e086015292166101008401526101208301919091526101408201526101600190565b60405180910390a1620005c18162000b27565b9050620001d9565b5050505062000b97565b828054620005e19062000b5a565b90600052602060002090601f01602090048101928262000605576000855562000650565b82601f106200062057805160ff191683800117855562000650565b8280016001018555821562000650579182015b828111156200065057825182559160200191906001019062000633565b506200065e92915062000662565b5090565b5b808211156200065e576000815560010162000663565b634e487b7160e01b600052604160045260246000fd5b60405161026081016001600160401b0381118282101715620006b557620006b562000679565b60405290565b60405161016081016001600160401b0381118282101715620006b557620006b562000679565b604051601f8201601f191681016001600160401b03811182821017156200070c576200070c62000679565b604052919050565b805161ffff811681146200072757600080fd5b919050565b80516001600160a01b03811681146200072757600080fd5b600061026082840312156200075857600080fd5b620007626200068f565b90506200076f8262000714565b81526200077f6020830162000714565b6020820152620007926040830162000714565b6040820152620007a56060830162000714565b606082015260808201516080820152620007c260a083016200072c565b60a0820152620007d560c083016200072c565b60c0820152620007e860e083016200072c565b60e0820152610100620007fd8184016200072c565b90820152610120620008118382016200072c565b90820152610140620008258382016200072c565b90820152610160620008398382016200072c565b908201526101806200084d8382016200072c565b908201526101a0620008618382016200072c565b908201526101c082810151908201526101e08083015190820152610200808301519082015261022080830151908201526102409182015191810191909152919050565b805163ffffffff811681146200072757600080fd5b600082601f830112620008cb57600080fd5b815160206001600160401b03821115620008e957620008e962000679565b620008f9818360051b01620006e1565b82815261016092830285018201928282019190878511156200091a57600080fd5b8387015b8581101562000a0a5781818a031215620009385760008081fd5b62000942620006bb565b6200094d826200072c565b81526200095c86830162000714565b8682015260406200096f81840162000714565b9082015260606200098283820162000714565b9082015260806200099583820162000714565b9082015260a0620009a883820162000714565b9082015260c0620009bb83820162000714565b9082015260e0620009ce838201620008a4565b90820152610100620009e2838201620008a4565b908201526101208281015190820152610140808301519082015284529284019281016200091e565b5090979650505050505050565b60008060006102a0848603121562000a2e57600080fd5b83516001600160401b038082111562000a4657600080fd5b818601915086601f83011262000a5b57600080fd5b81518181111562000a705762000a7062000679565b602062000a86601f8301601f19168201620006e1565b828152898284870101111562000a9b57600080fd5b60005b8381101562000abb57858101830151828201840152820162000a9e565b8381111562000acd5760008385840101525b50965062000ade8989830162000744565b9550505061028086015191508082111562000af857600080fd5b5062000b0786828701620008b9565b9150509250925092565b634e487b7160e01b600052603260045260246000fd5b600063ffffffff8083168181141562000b5057634e487b7160e01b600052601160045260246000fd5b6001019392505050565b600181811c9082168062000b6f57607f821691505b6020821081141562000b9157634e487b7160e01b600052602260045260246000fd5b50919050565b6136118062000ba76000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c806370a08231116100c3578063b00cc89f1161007c578063b00cc89f14610568578063bd38a8291461057b578063ce6e1c4e1461058e578063dd62ed3e146105a1578063e4849b32146105b4578063ea75e30b146105c757600080fd5b806370a08231146104eb57806379b7b50f146105145780637deb60251461052757806395d89b411461053a578063a457c2d714610542578063a9059cbb1461055557600080fd5b8063313ce56711610115578063313ce567146102f15780633950935114610300578063465bc7f51461031357806359ff9ffc146103415780635a2f3d091461034957806364f9016b146104d657600080fd5b806306fdde0314610152578063095ea7b31461017057806309bc893c1461019357806318160ddd146102cc57806323b872dd146102de575b600080fd5b61015a61060f565b6040516101679190612cf0565b60405180910390f35b61018361017e366004612d38565b6106a1565b6040519015158152602001610167565b6102bf6101a1366004612d64565b6040805161016081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810191909152506001600160a01b039081166000908152600660209081526040918290208251610160810184528154948516815261ffff600160a01b8604811693820193909352600160b01b8504831693810193909352600160c01b840482166060840152600160d01b840482166080840152600160e01b8404821660a0840152600160f01b9093041660c0820152600182015463ffffffff80821660e084015264010000000090910416610100820152600282015461012082015260039091015461014082015290565b6040516101679190612d88565b6002545b604051908152602001610167565b6101836102ec366004612e64565b6106bb565b60405160128152602001610167565b61018361030e366004612d38565b6106df565b610183610321366004612ea5565b600091825260086020908152604080842092845291905290205460ff1690565b6102d0610701565b6104c96040805161026081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c081018290526101e081018290526102008101829052610220810182905261024081019190915250604080516102608101825260095461ffff8082168352620100008204811660208401526401000000008204811693830193909352600160301b90049091166060820152600a546080820152600b546001600160a01b0390811660a0830152600c54811660c0830152600d54811660e0830152600e548116610100830152600f548116610120830152601054811661014083015260115481166101608301526012548116610180830152601354166101a08201526014546101c08201526015546101e082015260165461020082015260175461022082015260185461024082015290565b6040516101679190612ec7565b6104e96104e436600461300a565b610710565b005b6102d06104f9366004612d64565b6001600160a01b031660009081526020819052604090205490565b6104e961052236600461300a565b601755565b6104e9610535366004613023565b610cc4565b61015a610d08565b610183610550366004612d38565b610d17565b610183610563366004612d38565b610d97565b6104e9610576366004613053565b610da5565b6104e9610589366004612d38565b610f3d565b6104e961059c36600461300a565b610f62565b6102d06105af36600461306c565b611552565b6102d06105c236600461300a565b61157d565b6105da6105d536600461300a565b6118dd565b604051610167919081511515815260208083015190820152604080830151908201526060918201519181019190915260800190565b60606003805461061e9061309a565b80601f016020809104026020016040519081016040528092919081815260200182805461064a9061309a565b80156106975780601f1061066c57610100808354040283529160200191610697565b820191906000526020600020905b81548152906001019060200180831161067a57829003601f168201915b5050505050905090565b6000336106af818585611954565b60019150505b92915050565b6000336106c9858285611a78565b6106d4858585611af2565b506001949350505050565b6000336106af8185856106f28383611552565b6106fc91906130e5565b611954565b600061070b611c96565b905090565b610718611d10565b60115460405163e1dc076160e01b8152600481018390526000916001600160a01b03169063e1dc07619060240160c060405180830381865afa158015610762573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107869190613149565b60200151600e5460405163068bcd8d60e01b8152600481018390529192506000916001600160a01b039091169063068bcd8d906024016102a060405180830381865afa1580156107da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fe91906131f3565b9050806101a001516000141561082757604051633909199160e01b815260040160405180910390fd5b601054604051631bb9561760e01b8152600481018590526000916001600160a01b031690631bb95617906024016020604051808303816000875af1158015610873573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610897919061332f565b601154600e5460405163095ea7b360e01b81526001600160a01b03918216600482015260248101889052929350169063095ea7b390604401600060405180830381600087803b1580156108e957600080fd5b505af11580156108fd573d6000803e3d6000fd5b5050600e5460405163011736fb60e11b815260048101889052600093506001600160a01b03909116915063022e6df6906024016020604051808303816000875af115801561094f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610973919061332f565b9050600061271061ffff1661098b8560000151611d6a565b610993611dd9565b61099f90612710613348565b86516109aa90611e47565b6109b4908661335f565b6109be919061335f565b6109c89190613394565b6109d29190613394565b845160135460405163095ea7b360e01b81526001600160a01b03918216600482015260248101869052929350169063095ea7b3906044016020604051808303816000875af1158015610a28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4c91906133a8565b506013548451600d5460405163105f52cb60e21b81526001600160a01b0392831660048201526024810186905290821660448201526064810184905291169063417d4b2c906084016020604051808303816000875af1158015610ab3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad7919061332f565b60008781526007602052604081206001810154601480549495509193909290610b01908490613348565b9091555050600181015460158054600090610b1d9084906130e5565b90915550506001810154600090831115610bef5760095460018301546127109162010000900461ffff1690610b529086613348565b610b5c919061335f565b610b669190613394565b600d54600b5460405163a9059cbb60e01b81526001600160a01b03918216600482015260248101849052929350169063a9059cbb906044016020604051808303816000875af1158015610bbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be191906133a8565b50610bec8184613348565b92505b600282018390556003820181905560168054849190600090610c129084906130e5565b90915550506001820154600283810154600d548b938b937f33d8e76d6f79b1855242f05d591209ccc75dece9ed50e27a0a2c41eb881469ec9390928b90610c61906001600160a01b0316611eeb565b601454610c6c611c96565b6040805160ff90981688526020880196909652948601939093526060850191909152608084015260a083015260c082015260e081018590526101000160405180910390a350505050505050610cc16001600555565b50565b610ccc611d10565b601754421115610cef57604051633acd7fcd60e21b815260040160405180910390fd5b610cf98282611f56565b50610d046001600555565b5050565b60606004805461061e9061309a565b60003381610d258286611552565b905083811015610d8a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6106d48286868403611954565b6000336106af818585611af2565b610dad611d10565b600b546001600160a01b03163314610dd85760405163155d542b60e21b815260040160405180910390fd5b6000600681610dea6020850185612d64565b6001600160a01b039081168252602082019290925260400160002054161415610e2657604051636b2cb79b60e11b815260040160405180910390fd5b6000600681610e386020850185612d64565b6001600160a01b0390811682526020808301939093526040918201600020610120868101356002830181905561014080890135600385018190558454600186015488519782168852600160a01b820461ffff9081169a89019a909a52600160b01b82048a16888a015263ffffffff80821660608a0152640100000000909104166080880152600160c01b8104891660a0880152600160d01b8104891660c0880152600160e01b8104891660e0880152600160f01b90049097166101008601529184015282019390935290519192507f5a145b33989f1c283c47a63ab8ec7c5fc977bad0184792321ce7b4fb2315e41191908190036101600190a150610cc16001600555565b806009600b016000828254610f5291906130e5565b90915550610d0490508282612113565b610f6a611d10565b600e5460405163068bcd8d60e01b8152600481018390526000916001600160a01b03169063068bcd8d906024016102a060405180830381865afa158015610fb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd991906131f3565b601754909150421180610ff157506000816101a00151115b1561100f57604051633909199160e01b815260040160405180910390fd5b611018816121d2565b6110355760405163d1c3ba9760e01b815260040160405180910390fd5b80516001600160a01b0390811660009081526006602090815260408083208151610160810183528154958616815261ffff600160a01b8704811694820194909452600160b01b8604841692810192909252600160c01b850483166060830152600160d01b850483166080830152600160e01b8504831660a0830152600160f01b90940490911660c0820152600183015463ffffffff80821660e08401526401000000009091041661010082015260028301546101208201526003909201546101408301528061110485856123a7565b600087815260086020908152604080832063ffffffff9490941680845293909152902054919350915060ff161561114e5760405163db4a943760e01b815260040160405180910390fd5b60008581526008602090815260408083208484529091528120805460ff19166001179055600d54611187906001600160a01b0316611eeb565b905060006111988660000151611d6a565b905060006111a98760000151611e47565b905085610140015182828961014001516111c3919061335f565b6111cd9190613394565b11156111ec57604051631c9cdce560e21b815260040160405180910390fd5b600086610140015184116112005783611207565b8661014001515b905060008861014001518361121a611dd9565b611226906127106130e5565b612710611233888761335f565b61123d919061335f565b6112479190613394565b6112519190613394565b61125b9190613394565b90508089610140015161126e919061335f565b871161127a578661128b565b8089610140015161128b919061335f565b965080158061129e575088610140015187105b806112b757506101408901516112b490886133ca565b15155b156112d55760405163667b4a9960e11b815260040160405180910390fd5b836127106112e1611dd9565b6112ed906127106130e5565b6112f7868b61335f565b611301919061335f565b61130b9190613394565b6113159190613394565b600d5460135460405163095ea7b360e01b81526001600160a01b03918216600482015260248101849052929450169063095ea7b3906044016020604051808303816000875af115801561136c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061139091906133a8565b50601354600d548a51604051637b94a0c360e01b81526001600160a01b039283166004820152602481018690529082166044820152606481018a9052911690637b94a0c3906084016020604051808303816000875af11580156113f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141b919061332f565b8951600e5460405163095ea7b360e01b81526001600160a01b039182166004820152602481018b9052929450169063095ea7b3906044016020604051808303816000875af1158015611471573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149591906133a8565b5060006114a383898d61260f565b9050808b7f33d8e76d6f79b1855242f05d591209ccc75dece9ed50e27a0a2c41eb881469ec6001866000806114ef600960040160009054906101000a90046001600160a01b0316611eeb565b6014546114fa611c96565b6040805160ff90981688526020880196909652948601939093526060850191909152608084015260a083015260c0820152600060e08201526101000160405180910390a350505050505050505050610cc16001600555565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6000611587611d10565b81611591336104f9565b10156115b05760405163cc6f198b60e01b815260040160405180910390fd5b60006115ba61279c565b6115c2611c96565b6115cc908561335f565b6115d69190613394565b600d549091506000906115f1906001600160a01b0316611eeb565b9050808211156116145760405163cc6f198b60e01b815260040160405180910390fd5b60175442108015611626575060145415155b156116c9576009546014546127109161164b91600160301b90910461ffff169061335f565b6116559190613394565b81101561167557604051632f988f7d60e21b815260040160405180910390fd5b60095460145483916127109161169691600160301b900461ffff169061335f565b6116a09190613394565b6116aa9083613348565b10156116c957604051632f988f7d60e21b815260040160405180910390fd5b6018546000901580156116de57506017544210155b156116fc5760056116ee60025490565b6116f89190613394565b6018555b6018541580159061172157506018548561171560025490565b61171f9190613348565b105b156117c05760185460009061173560025490565b11611740578561175a565b6018546002546117509190613348565b61175a9087613348565b9050670de0b6b3a764000061176d6127aa565b611777908361335f565b6117819190613394565b915061178b6127e2565b8211611797578161179f565b61179f6127e2565b915081156117be576117be33600f546001600160a01b0316908461282b565b505b6117ca3386612893565b600954600090612710906117e29061ffff168661335f565b6117ec9190613394565b905061180f336117fc8387613348565b600d546001600160a01b0316919061282b565b600c54600d5461182c916001600160a01b0391821691168361282b565b7fa8ae08e0093a1812c92898f16967e9bba5bd73a73521e0980ac54d295dd356ed33600d54889087908590879061186b906001600160a01b0316611eeb565b601454611876611c96565b604080516001600160a01b0390991689526020890197909752958701949094526060860192909252608085015260a084015260c083015260e08201526101000160405180910390a16118c88185613348565b9450505050506118d86001600555565b919050565b61190a60405180608001604052806000151581526020016000815260200160008152602001600081525090565b506000908152600760209081526040918290208251608081018452815460ff1615158152600182015492810192909252600281015492820192909252600390910154606082015290565b6001600160a01b0383166119b65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610d81565b6001600160a01b038216611a175760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610d81565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000611a848484611552565b90506000198114611aec5781811015611adf5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610d81565b611aec8484848403611954565b50505050565b6001600160a01b038316611b565760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610d81565b6001600160a01b038216611bb85760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610d81565b6001600160a01b03831660009081526020819052604090205481811015611c305760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610d81565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3611aec565b600080611ca260025490565b905080611cc457600d54611cbe906001600160a01b0316611d6a565b91505090565b601454600d5460009190611ce0906001600160a01b0316611eeb565b611cea91906130e5565b905081611cff670de0b6b3a76400008361335f565b611d099190613394565b9250505090565b60026005541415611d635760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610d81565b6002600555565b6000816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611daa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dce91906133de565b6106b590600a6134e5565b60135460408051633f273b8f60e21b815290516000926001600160a01b03169163fc9cee3c9160048083019260209291908290030181865afa158015611e23573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061070b919061332f565b600d54600090670de0b6b3a764000090611e69906001600160a01b0316611d6a565b6012546040516341976e0960e01b81526001600160a01b038681166004830152909116906341976e0990602401602060405180830381865afa158015611eb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ed7919061332f565b611ee1919061335f565b6106b59190613394565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611f32573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b5919061332f565b600d546000908190611f70906001600160a01b0316611eeb565b600a54601454919250908590611f8690846130e5565b611f9091906130e5565b1115611faf57604051638e62e1a760e01b815260040160405180910390fd5b600954601454600091829161271091611fd59164010000000090910461ffff169061335f565b611fdf9190613394565b90506000611fec60025490565b118015611ff857508083105b156120385760648661200a8584613348565b1161201e576120198483613348565b612020565b865b61202b90600261335f565b6120359190613394565b91505b600d5461204d906001600160a01b0316611d6a565b61205783886130e5565b61205f6129c5565b612069919061335f565b6120739190613394565b935061208d33600d546001600160a01b0316903089612a2a565b6120978585612113565b7f178f20a8980b4e6cdc2c84f3ef670f5047f63638f90a8acc6b724b43f1da778d8585886120c581886130e5565b6014546120d0611c96565b604080516001600160a01b0390971687526020870195909552938501929092526060840152608083015260a082015260c00160405180910390a150505092915050565b6001600160a01b0382166121695760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610d81565b806002600082825461217b91906130e5565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b80516001600160a01b0390811660009081526006602090815260408083208151610160810183528154958616815261ffff600160a01b87048116948201859052600160b01b8704811693820193909352600160c01b86048316606080830191909152600160d01b870484166080830152600160e01b8704841660a0830152600160f01b909604831660c0820152600182015463ffffffff80821660e0840152640100000000909104166101008201526002820154610120820152600390910154610140820152938501519293921610806122bb5750806040015161ffff16836060015161ffff16115b156122c95750600092915050565b806060015161ffff16836080015161ffff1610806122f65750806080015161ffff16836080015161ffff16115b156123045750600092915050565b8060a0015161ffff168360a0015161ffff16108061233157508060c0015161ffff168360a0015161ffff16115b1561233f5750600092915050565b8060e0015163ffffffff168360c0015163ffffffff161080612375575080610100015163ffffffff168360c0015163ffffffff16115b156123835750600092915050565b806101200151836101e00151101561239e5750600092915050565b50600192915050565b60125481516040516341976e0960e01b81526001600160a01b039182166004820152600092839283929116906341976e0990602401602060405180830381865afa1580156123f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061241d919061332f565b610100850151600e54604051631af922ed60e11b81526004810189905263ffffffff831660248201529194509192506000916001600160a01b0316906335f245da90604401608060405180830381865afa15801561247f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124a391906134f4565b9050806020015181606001516124b99190613348565b9350600061271061ffff1686606001516127106124d69190613568565b61ffff16876101c001516124ea919061335f565b6124f49190613394565b9050808311158061251c5750856101c00151831115801561251c575081602001518260600151115b6125395760405163308218e560e21b815260040160405180910390fd5b8083116126055760318661028001511061255957816060015194506125f7565b6101c086015160608701516000919061ffff166127106125798784613348565b612583919061335f565b61258d9190613394565b6125979190613394565b905060006031828961028001516125ae91906130e5565b116125b957816125ca565b6102808801516125ca906031613348565b60e089015190915063ffffffff166125e2828261358b565b85606001516125f1919061335f565b97505050505b612602846001613597565b93505b5050509250929050565b60006126506040518060c00160405280600063ffffffff16815260200160008152602001600081526020016000815260200160008152602001600081525090565b60208101838152604080830186815260016060850190815260808501888152600e549351635f79711760e11b8152865163ffffffff166004820152945160248601529151604485015251606484015251608483015260a083015160a48301526001600160a01b03169063bef2e22e9060c4016020604051808303816000875af11580156126e1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612705919061332f565b9150846009600b01600082825461271c91906130e5565b909155505060008281526007602052604090819020600101869055601054905163049878f360e01b8152600481018490526001600160a01b039091169063049878f390602401600060405180830381600087803b15801561277c57600080fd5b505af1158015612790573d6000803e3d6000fd5b50505050509392505050565b600061070b6012600a6134e5565b6018546000906127ba5750600090565b601854670de0b6b3a76400006127ce6127e2565b6127d8919061335f565b61070b9190613394565b600f546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015611e23573d6000803e3d6000fd5b6040516001600160a01b03831660248201526044810182905261288e90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612a62565b505050565b6001600160a01b0382166128f35760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610d81565b6001600160a01b038216600090815260208190526040902054818110156129675760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610d81565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6000806129d160025490565b9050806129e057611cbe61279c565b601454600d54600091906129fc906001600160a01b0316611eeb565b612a0691906130e5565b600d549091508190612a20906001600160a01b0316611d6a565b611cff908461335f565b6040516001600160a01b0380851660248301528316604482015260648101829052611aec9085906323b872dd60e01b90608401612857565b6000612ab7826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612b379092919063ffffffff16565b9050805160001480612ad8575080806020019051810190612ad891906133a8565b61288e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610d81565b6060612b468484600085612b4e565b949350505050565b606082471015612baf5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610d81565b600080866001600160a01b03168587604051612bcb91906135bf565b60006040518083038185875af1925050503d8060008114612c08576040519150601f19603f3d011682016040523d82523d6000602084013e612c0d565b606091505b5091509150612c1e87838387612c29565b979650505050505050565b60608315612c95578251612c8e576001600160a01b0385163b612c8e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610d81565b5081612b46565b612b468383815115612caa5781518083602001fd5b8060405162461bcd60e51b8152600401610d819190612cf0565b60005b83811015612cdf578181015183820152602001612cc7565b83811115611aec5750506000910152565b6020815260008251806020840152612d0f816040850160208701612cc4565b601f01601f19169190910160400192915050565b6001600160a01b0381168114610cc157600080fd5b60008060408385031215612d4b57600080fd5b8235612d5681612d23565b946020939093013593505050565b600060208284031215612d7657600080fd5b8135612d8181612d23565b9392505050565b81516001600160a01b0316815261016081016020830151612daf602084018261ffff169052565b506040830151612dc5604084018261ffff169052565b506060830151612ddb606084018261ffff169052565b506080830151612df1608084018261ffff169052565b5060a0830151612e0760a084018261ffff169052565b5060c0830151612e1d60c084018261ffff169052565b5060e0830151612e3560e084018263ffffffff169052565b506101008381015163ffffffff1690830152610120808401519083015261014092830151929091019190915290565b600080600060608486031215612e7957600080fd5b8335612e8481612d23565b92506020840135612e9481612d23565b929592945050506040919091013590565b60008060408385031215612eb857600080fd5b50508035926020909101359150565b815161ffff16815261026081016020830151612ee9602084018261ffff169052565b506040830151612eff604084018261ffff169052565b506060830151612f15606084018261ffff169052565b506080830151608083015260a0830151612f3a60a08401826001600160a01b03169052565b5060c0830151612f5560c08401826001600160a01b03169052565b5060e0830151612f7060e08401826001600160a01b03169052565b50610100838101516001600160a01b0390811691840191909152610120808501518216908401526101408085015182169084015261016080850151821690840152610180808501518216908401526101a080850151909116908301526101c080840151908301526101e080840151908301526102008084015190830152610220808401519083015261024092830151929091019190915290565b60006020828403121561301c57600080fd5b5035919050565b6000806040838503121561303657600080fd5b82359150602083013561304881612d23565b809150509250929050565b6000610160828403121561306657600080fd5b50919050565b6000806040838503121561307f57600080fd5b823561308a81612d23565b9150602083013561304881612d23565b600181811c908216806130ae57607f821691505b6020821081141561306657634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156130f8576130f86130cf565b500190565b6040516102a0810167ffffffffffffffff8111828210171561312f57634e487b7160e01b600052604160045260246000fd5b60405290565b805163ffffffff811681146118d857600080fd5b600060c0828403121561315b57600080fd5b60405160c0810181811067ffffffffffffffff8211171561318c57634e487b7160e01b600052604160045260246000fd5b60405261319883613135565b81526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a08201528091505092915050565b80516118d881612d23565b805161ffff811681146118d857600080fd5b60006102a0828403121561320657600080fd5b61320e6130fd565b613217836131d6565b8152613225602084016131d6565b6020820152613236604084016131d6565b6040820152613247606084016131e1565b6060820152613258608084016131e1565b608082015261326960a084016131e1565b60a082015261327a60c08401613135565b60c082015261328b60e08401613135565b60e082015261010061329e818501613135565b9082015261012083810151908201526101408084015190820152610160808401519082015261018080840151908201526101a080840151908201526101c080840151908201526101e080840151908201526102008084015190820152610220808401519082015261024080840151908201526102608084015190820152610280928301519281019290925250919050565b60006020828403121561334157600080fd5b5051919050565b60008282101561335a5761335a6130cf565b500390565b6000816000190483118215151615613379576133796130cf565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826133a3576133a361337e565b500490565b6000602082840312156133ba57600080fd5b81518015158114612d8157600080fd5b6000826133d9576133d961337e565b500690565b6000602082840312156133f057600080fd5b815160ff81168114612d8157600080fd5b600181815b8085111561343c578160001904821115613422576134226130cf565b8085161561342f57918102915b93841c9390800290613406565b509250929050565b600082613453575060016106b5565b81613460575060006106b5565b816001811461347657600281146134805761349c565b60019150506106b5565b60ff841115613491576134916130cf565b50506001821b6106b5565b5060208310610133831016604e8410600b84101617156134bf575081810a6106b5565b6134c98383613401565b80600019048211156134dd576134dd6130cf565b029392505050565b6000612d8160ff841683613444565b60006080828403121561350657600080fd5b6040516080810181811067ffffffffffffffff8211171561353757634e487b7160e01b600052604160045260246000fd5b8060405250825181526020830151602082015260408301516040820152606083015160608201528091505092915050565b600061ffff83811690831681811015613583576135836130cf565b039392505050565b6000612d818383613444565b600063ffffffff8083168185168083038211156135b6576135b66130cf565b01949350505050565b600082516135d1818460208701612cc4565b919091019291505056fea26469706673582212203b53f5923c990f0b9b3b27ddfe93ef498f6c8b2423f5dba774423ea81d76e47464736f6c634300080c003300000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000007d000000000000000000000000000000000000000000000000000000000000007d00000000000000000000000000000000000000000000000000000000000001388000000000000000000000000000000000000000000000000000000a2fb40580000000000000000000000000045207fc9f87aba5d89c25492b38ecceff003e1af000000000000000000000000d5566364612a8082b2f031d0cb398089df196e9e0000000000000000000000008f552a9f9da35b36142e15525287d132f41a473500000000000000000000000002425d244a67d271acaee8e5e1f8241f1e3a89a1000000000000000000000000fac28460c74cf0504ebab547d8e9bab5507992c3000000000000000000000000ce51d7945d6e59f8345d198711f863f5854f636a0000000000000000000000008416f5bf5e7e57120c2cbbff32f875afa5d9a809000000000000000000000000bd94882f82d3ec5eda8ec8a42f4495b2754eb5300000000000000000000000003c8801136e925ea721701e8e7e542f8615b422c9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006667f6ec000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002e000000000000000000000000000000000000000000000000000000000000000044d502d37000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000c2e3492cf1aa218b2e1dd78925740fe7981e63f200000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000001edc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000027100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000004e20000000000000000000000000000000000000000000000000002386f26fc10000000000000000000000000000000000000000000000000ed2b525841adfc00000