60e06040523480156200001157600080fd5b50604051620058ce380380620058ce8339810160408190526200003491620004a2565b868660088783838383818180806200004c33620001f8565b6001600160a01b0316608052505060ff1660a052505081516200007790600a90602085019062000312565b5080516200008d90600b90602084019062000312565b5050506000620000a26200024860201b60201c565b90508060ff168360ff161115620001105760405162461bcd60e51b815260206004820152602760248201527f4f46543a20736861726564446563696d616c73206d757374206265203c3d20646044820152666563696d616c7360c81b60648201526084015b60405180910390fd5b6200011c83826200056d565b6200012990600a62000692565b60c0525050600c805460ff1916905550506001600d55506001600160a01b0385166200016857604051639fabe1c160e01b815260040160405180910390fd5b6001600160a01b0384166200019057604051639fabe1c160e01b815260040160405180910390fd5b6001600160a01b038316620001b857604051639fabe1c160e01b815260040160405180910390fd5b601180546001600160a01b0319166001600160a01b03851617905560108190558115620001eb57620001eb84836200024d565b5050505050505062000702565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b601290565b6001600160a01b038216620002a55760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000107565b8060096000828254620002b99190620006aa565b90915550506001600160a01b0382166000818152600760209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b8280546200032090620006c5565b90600052602060002090601f0160209004810192826200034457600085556200038f565b82601f106200035f57805160ff19168380011785556200038f565b828001600101855582156200038f579182015b828111156200038f57825182559160200191906001019062000372565b506200039d929150620003a1565b5090565b5b808211156200039d5760008155600101620003a2565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620003e057600080fd5b81516001600160401b0380821115620003fd57620003fd620003b8565b604051601f8301601f19908116603f01168101908282118183101715620004285762000428620003b8565b816040528381526020925086838588010111156200044557600080fd5b600091505b838210156200046957858201830151818301840152908201906200044a565b838211156200047b5760008385830101525b9695505050505050565b80516001600160a01b03811681146200049d57600080fd5b919050565b600080600080600080600060e0888a031215620004be57600080fd5b87516001600160401b0380821115620004d657600080fd5b620004e48b838c01620003ce565b985060208a0151915080821115620004fb57600080fd5b506200050a8a828b01620003ce565b9650506200051b6040890162000485565b94506200052b6060890162000485565b93506200053b6080890162000485565b925060a0880151915060c0880151905092959891949750929550565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff8416808210156200058a576200058a62000557565b90039392505050565b600181815b80851115620005d4578160001904821115620005b857620005b862000557565b80851615620005c657918102915b93841c939080029062000598565b509250929050565b600082620005ed575060016200068c565b81620005fc575060006200068c565b8160018114620006155760028114620006205762000640565b60019150506200068c565b60ff84111562000634576200063462000557565b50506001821b6200068c565b5060208310610133831016604e8410600b841016171562000665575081810a6200068c565b62000671838362000593565b806000190482111562000688576200068862000557565b0290505b92915050565b6000620006a360ff841683620005dc565b9392505050565b60008219821115620006c057620006c062000557565b500190565b600181811c90821680620006da57607f821691505b60208210811415620006fc57634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05160c05161514f6200077f600039600081816138ee015281816139440152613d7b0152600061087d015260008181610a9801528181610cb30152818161102d015281816111060152818161145a01528181611b3b0152818161238e015281816130d50152818161330a0152613b14015261514f6000f3fe6080604052600436106104135760003560e01c80638456cb5911610228578063b888879e11610128578063e6a20ae6116100bb578063f066bca91161008a578063f2fde38b1161006f578063f2fde38b14610c5d578063f5ecbdbc14610c7d578063fc0c546a14610c9d57600080fd5b8063f066bca914610c1d578063f0f4426014610c3d57600080fd5b8063e6a20ae614610ba8578063eaffd49a14610bbd578063eb8d72b714610bdd578063efc8f3c814610bfd57600080fd5b8063d1deba1f116100f7578063d1deba1f14610b1a578063dd62ed3e14610b2d578063dde6f61514610b73578063df2a5b3b14610b8857600080fd5b8063b888879e14610aba578063baf3292d14610ada578063c4461834146109d0578063cbed8b9c14610afa57600080fd5b80639bdb9812116101bb578063a457c2d71161018a578063a6c3d1651161016f578063a6c3d16514610a46578063a9059cbb14610a66578063b353aaa714610a8657600080fd5b8063a457c2d714610a06578063a4c51df514610a2657600080fd5b80639bdb9812146109685780639c281430146109ba5780639e93ad8e146109d05780639f38369a146109e657600080fd5b80639358928b116101f75780639358928b14610909578063950c8a741461091e57806395d89b411461093e578063971679641461095357600080fd5b80638456cb5914610856578063857749b01461086b5780638cfd8f5c1461089f5780638da5cb5b146108d757600080fd5b80633d8b38f6116103335780634c42899a116102c6578063695ef6bf11610295578063715018a61161027a578063715018a61461080e5780637533d7881461082357806376203b481461084357600080fd5b8063695ef6bf146107c557806370a08231146107d857600080fd5b80634c42899a146107295780635b8c41e61461073e5780635c975abb1461078d57806366ad5c8a146107a557600080fd5b806341744dd41161030257806341744dd4146106be57806342966c68146106d457806342d65a8d146106f4578063447705151461071457600080fd5b80633d8b38f61461063c5780633f1f4fa41461065c5780633f4ba83a1461068957806340c10f191461069e57600080fd5b806318160ddd116103ab578063313ce5671161037a578063313ce567146105a5578063365260b4146105c7578063372aa224146105fc578063395093511461061c57600080fd5b806318160ddd1461053157806319f4ff2f1461055057806323b872dd14610570578063269510a21461059057600080fd5b8063095ea7b3116103e7578063095ea7b3146104b15780630df37483146104d157806310ddb137146104f1578063140e75631461051157600080fd5b80621d35671461041857806301ffc9a71461043a57806306fdde031461046f57806307e0db1714610491575b600080fd5b34801561042457600080fd5b5061043861043336600461423c565b610cb0565b005b34801561044657600080fd5b5061045a6104553660046142d0565b610ef8565b60405190151581526020015b60405180910390f35b34801561047b57600080fd5b50610484610f61565b6040516104669190614352565b34801561049d57600080fd5b506104386104ac366004614365565b610ff3565b3480156104bd57600080fd5b5061045a6104cc366004614395565b611095565b3480156104dd57600080fd5b506104386104ec3660046143c1565b6110ad565b3480156104fd57600080fd5b5061043861050c366004614365565b6110cc565b34801561051d57600080fd5b5061043861052c3660046143dd565b61113d565b34801561053d57600080fd5b506009545b604051908152602001610466565b34801561055c57600080fd5b5061043861056b3660046143dd565b61114a565b34801561057c57600080fd5b5061045a61058b3660046143f6565b6111c0565b34801561059c57600080fd5b50610542606481565b3480156105b157600080fd5b5060125b60405160ff9091168152602001610466565b3480156105d357600080fd5b506105e76105e2366004614447565b6111e4565b60408051928352602083019190915201610466565b34801561060857600080fd5b506104386106173660046144ad565b61121a565b34801561062857600080fd5b5061045a610637366004614395565b6112a0565b34801561064857600080fd5b5061045a6106573660046144ca565b6112df565b34801561066857600080fd5b50610542610677366004614365565b60036020526000908152604090205481565b34801561069557600080fd5b506104386113ab565b3480156106aa57600080fd5b506104386106b9366004614395565b6113bd565b3480156106ca57600080fd5b5061054260125481565b3480156106e057600080fd5b506104386106ef3660046143dd565b611415565b34801561070057600080fd5b5061043861070f3660046144ca565b611422565b34801561072057600080fd5b50610542600081565b34801561073557600080fd5b506105b5600081565b34801561074a57600080fd5b5061054261075936600461458c565b6005602090815260009384526040808520845180860184018051928152908401958401959095209452929052825290205481565b34801561079957600080fd5b50600c5460ff1661045a565b3480156107b157600080fd5b506104386107c036600461423c565b6114c1565b6104386107d3366004614645565b6115b4565b3480156107e457600080fd5b506105426107f33660046144ad565b6001600160a01b031660009081526007602052604090205490565b34801561081a57600080fd5b5061043861161f565b34801561082f57600080fd5b5061048461083e366004614365565b611631565b6104386108513660046146b9565b6116cb565b34801561086257600080fd5b5061043861177a565b34801561087757600080fd5b506105b57f000000000000000000000000000000000000000000000000000000000000000081565b3480156108ab57600080fd5b506105426108ba36600461476c565b600260209081526000928352604080842090915290825290205481565b3480156108e357600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610466565b34801561091557600080fd5b5061054261178a565b34801561092a57600080fd5b506004546108f1906001600160a01b031681565b34801561094a57600080fd5b5061048461179a565b34801561095f57600080fd5b506105b5600881565b34801561097457600080fd5b5061045a61098336600461458c565b6006602090815260009384526040808520845180860184018051928152908401958401959095209452929052825290205460ff1681565b3480156109c657600080fd5b5061054260105481565b3480156109dc57600080fd5b5061054261271081565b3480156109f257600080fd5b50610484610a01366004614365565b6117a9565b348015610a1257600080fd5b5061045a610a21366004614395565b6118c0565b348015610a3257600080fd5b506105e7610a4136600461479f565b61196a565b348015610a5257600080fd5b50610438610a613660046144ca565b6119f9565b348015610a7257600080fd5b5061045a610a81366004614395565b611a8c565b348015610a9257600080fd5b506108f17f000000000000000000000000000000000000000000000000000000000000000081565b348015610ac657600080fd5b506013546108f1906001600160a01b031681565b348015610ae657600080fd5b50610438610af53660046144ad565b611a9a565b348015610b0657600080fd5b50610438610b15366004614859565b611b03565b610438610b2836600461423c565b611ba6565b348015610b3957600080fd5b50610542610b483660046148c8565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b348015610b7f57600080fd5b50610438611df4565b348015610b9457600080fd5b50610438610ba3366004614901565b611e74565b348015610bb457600080fd5b506105b5600181565b348015610bc957600080fd5b50610438610bd836600461493d565b611ede565b348015610be957600080fd5b50610438610bf83660046144ca565b612016565b348015610c0957600080fd5b50610438610c18366004614a06565b612070565b348015610c2957600080fd5b50610542610c383660046143dd565b6120a3565b348015610c4957600080fd5b50610438610c583660046144ad565b612231565b348015610c6957600080fd5b50610438610c783660046144ad565b6122b7565b348015610c8957600080fd5b50610484610c98366004614a32565b612344565b348015610ca957600080fd5b50306108f1565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614610d2d5760405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c6572000060448201526064015b60405180910390fd5b61ffff861660009081526001602052604081208054610d4b90614a7f565b80601f0160208091040260200160405190810160405280929190818152602001828054610d7790614a7f565b8015610dc45780601f10610d9957610100808354040283529160200191610dc4565b820191906000526020600020905b815481529060010190602001808311610da757829003601f168201915b50505050509050805186869050148015610ddf575060008151115b8015610e07575080516020820120604051610dfd9088908890614ab4565b6040518091039020145b610e795760405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f60448201527f6e747261637400000000000000000000000000000000000000000000000000006064820152608401610d24565b610eef8787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881528a93509150889088908190840183828082843760009201919091525061240592505050565b50505050505050565b60006001600160e01b031982167f1f7ecdf7000000000000000000000000000000000000000000000000000000001480610f5b57507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b03198316145b92915050565b6060600a8054610f7090614a7f565b80601f0160208091040260200160405190810160405280929190818152602001828054610f9c90614a7f565b8015610fe95780601f10610fbe57610100808354040283529160200191610fe9565b820191906000526020600020905b815481529060010190602001808311610fcc57829003601f168201915b5050505050905090565b610ffb612493565b6040517f07e0db1700000000000000000000000000000000000000000000000000000000815261ffff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906307e0db17906024015b600060405180830381600087803b15801561107a57600080fd5b505af115801561108e573d6000803e3d6000fd5b5050505050565b6000336110a38185856124ed565b5060019392505050565b6110b5612493565b61ffff909116600090815260036020526040902055565b6110d4612493565b6040517f10ddb13700000000000000000000000000000000000000000000000000000000815261ffff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906310ddb13790602401611060565b611145612493565b601055565b611152612493565b606481111561118d576040517f648564d300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601281905560405181907fbbfc7e3ffb06fe644da11f58a6ec60dd89c955d9d80b37cbc787f11776efcd1e90600090a250565b6000336111ce858285612645565b6111d98585856126d7565b506001949350505050565b6000806111f58888888888886128cb565b9092509050611203866120a3565b61120d9083614ada565b9150965096945050505050565b611222612493565b6001600160a01b03811661124957604051639fabe1c160e01b815260040160405180910390fd5b6013805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040517fb266add5f3044b17d27db796af992cecbe413921b4e8aaaee03c719e16b9806a90600090a250565b3360008181526008602090815260408083206001600160a01b03871684529091528120549091906110a390829086906112da908790614ada565b6124ed565b61ffff83166000908152600160205260408120805482919061130090614a7f565b80601f016020809104026020016040519081016040528092919081815260200182805461132c90614a7f565b80156113795780601f1061134e57610100808354040283529160200191611379565b820191906000526020600020905b81548152906001019060200180831161135c57829003601f168201915b505050505090508383604051611390929190614ab4565b60405180910390208180519060200120149150509392505050565b6113b3612493565b6113bb612920565b565b336000818152600f602052604090205460ff16611406576040517f824f725900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114108383612972565b505050565b61141f3382612a33565b50565b61142a612493565b6040517f42d65a8d0000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906342d65a8d9061149390869086908690600401614b1b565b600060405180830381600087803b1580156114ad57600080fd5b505af1158015610eef573d6000803e3d6000fd5b3330146115365760405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d75737420626560448201527f204c7a41707000000000000000000000000000000000000000000000000000006064820152608401610d24565b6115ac8686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f890181900481028201810190925287815289935091508790879081908401838280828437600092019190915250612b9e92505050565b505050505050565b6115ac858585856115c860208701876144ad565b6115d860408801602089016144ad565b6115e56040890189614b39565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612c2592505050565b611627612493565b6113bb6000612daa565b6001602052600090815260409020805461164a90614a7f565b80601f016020809104026020016040519081016040528092919081815260200182805461167690614a7f565b80156116c35780601f10611698576101008083540402835291602001916116c3565b820191906000526020600020905b8154815290600101906020018083116116a657829003601f168201915b505050505081565b61176f8888888888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a925061171891505060208901896144ad565b61172860408a0160208b016144ad565b61173560408b018b614b39565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612e0792505050565b505050505050505050565b611782612493565b6113bb612f3c565b600061179560095490565b905090565b6060600b8054610f7090614a7f565b61ffff81166000908152600160205260408120805460609291906117cc90614a7f565b80601f01602080910402602001604051908101604052809291908181526020018280546117f890614a7f565b80156118455780601f1061181a57610100808354040283529160200191611845565b820191906000526020600020905b81548152906001019060200180831161182857829003601f168201915b5050505050905080516000141561189e5760405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606401610d24565b6118b96000601483516118b19190614b80565b839190612f79565b9392505050565b3360008181526008602090815260408083206001600160a01b03871684529091528120549091908381101561195d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610d24565b6111d982868684036124ed565b6000806119e78b8b8b8b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b81528e93508d9250908c908c90819084018382808284376000920191909152506130a192505050565b91509150995099975050505050505050565b611a01612493565b818130604051602001611a1693929190614b97565b60408051601f1981840301815291815261ffff85166000908152600160209081529190208251611a4b939192909101906140b7565b507f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce838383604051611a7f93929190614b1b565b60405180910390a1505050565b6000336110a38185856126d7565b611aa2612493565b6004805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040519081527f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b9060200160405180910390a150565b611b0b612493565b6040517fcbed8b9c0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063cbed8b9c90611b789088908890889088908890600401614bbd565b600060405180830381600087803b158015611b9257600080fd5b505af115801561176f573d6000803e3d6000fd5b61ffff86166000908152600560205260408082209051611bc99088908890614ab4565b908152604080516020928190038301902067ffffffffffffffff871660009081529252902054905080611c645760405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201527f61676500000000000000000000000000000000000000000000000000000000006064820152608401610d24565b808383604051611c75929190614ab4565b604051809103902014611cf05760405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f6160448201527f64000000000000000000000000000000000000000000000000000000000000006064820152608401610d24565b61ffff87166000908152600560205260408082209051611d139089908990614ab4565b908152604080516020928190038301812067ffffffffffffffff8916600090815290845282902093909355601f88018290048202830182019052868252611dac918991899089908190840183828082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250612b9e92505050565b7fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e58787878785604051611de3959493929190614beb565b60405180910390a150505050505050565b336000818152600e6020526040902054611e12906201518090614ada565b421015611e4b576040517f662ab8f400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0381166000908152600e6020526040902042905560105461141f908290612972565b611e7c612493565b61ffff83811660008181526002602090815260408083209487168084529482529182902085905581519283528201929092529081018290527f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac090606001611a7f565b333014611f2d5760405162461bcd60e51b815260206004820152601f60248201527f4f4654436f72653a2063616c6c6572206d757374206265204f4654436f7265006044820152606401610d24565b611f38308686613163565b9350846001600160a01b03168a61ffff167fbf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf86604051611f7a91815260200190565b60405180910390a36040517f7fcf35da0000000000000000000000000000000000000000000000000000000081526001600160a01b03861690637fcf35da908390611fd7908e908e908e908e908e908d908d908d90600401614c27565b600060405180830381600088803b158015611ff157600080fd5b5087f1158015612005573d6000803e3d6000fd5b505050505050505050505050505050565b61201e612493565b61ffff8316600090815260016020526040902061203c90838361413b565b507ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab838383604051611a7f93929190614b1b565b612078612493565b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055565b6013546000906001600160a01b03166120be57506000919050565b601354604080517f4b94f50e00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b031691634b94f50e9160048083019260209291908290030181865afa158015612121573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121459190614c83565b90506000601360009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561219c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121c09190614c83565b905060006121d06012600a614d80565b6121db83600a614d8f565b6121e58588614d9b565b6121f790670de0b6b3a7640000614d9b565b6122019190614dd0565b61220b9190614dd0565b90506127106012548261221e9190614d9b565b6122289190614dd0565b95945050505050565b612239612493565b6001600160a01b03811661226057604051639fabe1c160e01b815260040160405180910390fd5b6011805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040517f7dae230f18360d76a040c81f050aa14eb9d6dc7901b20fc5d855e2a20fe814d190600090a250565b6122bf612493565b6001600160a01b03811661233b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610d24565b61141f81612daa565b6040517ff5ecbdbc00000000000000000000000000000000000000000000000000000000815261ffff808616600483015284166024820152306044820152606481018290526060907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f5ecbdbc90608401600060405180830381865afa1580156123dd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526122289190810190614de4565b60008061247d5a60966366ad5c8a60e01b8989898960405160240161242d9493929190614e52565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166001600160e01b031990931692909217909152309291906131b5565b91509150816115ac576115ac8686868685613240565b6000546001600160a01b031633146113bb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d24565b6001600160a01b0383166125685760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610d24565b6001600160a01b0382166125e45760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610d24565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383811660009081526008602090815260408083209386168352929052205460001981146126d157818110156126c45760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610d24565b6126d184848484036124ed565b50505050565b6001600160a01b0383166127535760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610d24565b6001600160a01b0382166127cf5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610d24565b6001600160a01b0383166000908152600760205260409020548181101561285e5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610d24565b6001600160a01b0380851660008181526007602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906128be9086815260200190565b60405180910390a36126d1565b6000806129118888888888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506132de92505050565b91509150965096945050505050565b612928613396565b600c805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b0382166129c85760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610d24565b80600960008282546129da9190614ada565b90915550506001600160a01b0382166000818152600760209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b038216612aaf5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610d24565b6001600160a01b03821660009081526007602052604090205481811015612b3e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610d24565b6001600160a01b03831660008181526007602090815260408083208686039055600980548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6000612baa82826133e8565b905060ff8116612bc557612bc08585858561344e565b61108e565b60ff811660011415612bdd57612bc0858585856134de565b60405162461bcd60e51b815260206004820152601c60248201527f4f4654436f72653a20756e6b6e6f776e207061636b65742074797065000000006044820152606401610d24565b6000612c2f6136ef565b612c37613749565b612c3f61379c565b612c4c8760008481613811565b612c55856138e6565b5090506000612c63826120a3565b905080341015612c8657604051633dc69bdf60e11b815260040160405180910390fd5b612c9289898985613926565b915081612cb25760405163617ab12d60e11b815260040160405180910390fd5b6000612d1588612cc18561393c565b6040805160006020820152602181019390935260c09190911b7fffffffffffffffff000000000000000000000000000000000000000000000000166041830152805160298184030181526049909201905290565b9050612d2e8982888888612d298834614b80565b6139c3565b8115612d4a57601154612d4a906001600160a01b031683613b90565b878a6001600160a01b03168a61ffff167fd81fc9b8523134ed613870ed029d6170cbb73aa6a6bc311b9a642689fb9df59a86604051612d8b91815260200190565b60405180910390a45050612d9f6001600d55565b979650505050505050565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000612e116136ef565b612e19613749565b612e2161379c565b612e2e8960008481613811565b612e37876138e6565b5090506000612e45826120a3565b905080341015612e6857604051633dc69bdf60e11b815260040160405180910390fd5b612e748b8b8b85613926565b5081612e935760405163617ab12d60e11b815260040160405180910390fd5b6000612eaa338b612ea38661393c565b8b8b613ca9565b9050612ebe8b82888888612d298834614b80565b8115612eda57601154612eda906001600160a01b031683613b90565b898c6001600160a01b03168c61ffff167fd81fc9b8523134ed613870ed029d6170cbb73aa6a6bc311b9a642689fb9df59a86604051612f1b91815260200190565b60405180910390a45050612f2f6001600d55565b9998505050505050505050565b612f44613749565b600c805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586129553390565b606081612f8781601f614ada565b1015612fd55760405162461bcd60e51b815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610d24565b612fdf8284614ada565b8451101561302f5760405162461bcd60e51b815260206004820152601160248201527f736c6963655f6f75744f66426f756e64730000000000000000000000000000006044820152606401610d24565b60608215801561304e5760405191506000825260208201604052613098565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561308757805183526020928301920161306f565b5050858452601f01601f1916604052505b50949350505050565b60008060006130bb338a6130b48b61393c565b8a8a613ca9565b60405163040a7bb160e41b81529091506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906340a7bb1090613112908d90309086908b908b90600401614e91565b6040805180830381865afa15801561312e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131529190614ee3565b925092505097509795505050505050565b600033306001600160a01b038616148015906131915750806001600160a01b0316856001600160a01b031614155b156131a1576131a1858285612645565b6131ac8585856126d7565b50909392505050565b6000606060008060008661ffff1667ffffffffffffffff8111156131db576131db61451d565b6040519080825280601f01601f191660200182016040528015613205576020820181803683370190505b50905060008087516020890160008d8df191503d925086831115613227578692505b828152826000602083013e909890975095505050505050565b8180519060200120600560008761ffff1661ffff168152602001908152602001600020856040516132719190614f07565b90815260408051918290036020908101832067ffffffffffffffff88166000908152915220919091557fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c906132cf9087908790879087908790614f23565b60405180910390a15050505050565b60008060006132f087612cc18861393c565b60405163040a7bb160e41b81529091506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906340a7bb1090613347908b90309086908b908b90600401614e91565b6040805180830381865afa158015613363573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133879190614ee3565b92509250509550959350505050565b600c5460ff166113bb5760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610d24565b60006133f5826001614ada565b835110156134455760405162461bcd60e51b815260206004820152601360248201527f746f55696e74385f6f75744f66426f756e6473000000000000000000000000006044820152606401610d24565b50016001015190565b60008061345a83613cea565b90925090506001600160a01b0382166134735761dead91505b600061347e82613d74565b905061348b878483613daa565b9050826001600160a01b03168761ffff167fbf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf836040516134cd91815260200190565b60405180910390a350505050505050565b60008060008060006134ef86613dbd565b945094509450945094506000600660008b61ffff1661ffff168152602001908152602001600020896040516135249190614f07565b908152604080516020928190038301902067ffffffffffffffff8b166000908152925281205460ff16915061355885613d74565b9050816135c75761356a8b3083613daa565b61ffff8c16600090815260066020526040908190209051919250600191613592908d90614f07565b908152604080516020928190038301902067ffffffffffffffff8d16600090815292529020805460ff19169115159190911790555b6001600160a01b0386163b61361e576040516001600160a01b03871681527f9aedf5fdba8716db3b6705ca00150643309995d4f818a249ed6dde6677e7792d9060200160405180910390a1505050505050506126d1565b8a8a8a8a8a8a868a60008a61363d578b67ffffffffffffffff1661363f565b5a5b90506000806136715a609663eaffd49a60e01b8e8e8e8d8d8d8d8d60405160240161242d989796959493929190614f76565b9150915081156136ca578751602089012060405161ffff8d16907fb8890edbfc1c74692f527444645f95489c3703cc2df42e4a366f5d06fa6cd884906136bc908e908e908690614fe9565b60405180910390a2506136d7565b6136d78b8b8b8b85613240565b50505050505050505050505050505050505050505050565b6002600d5414156137425760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610d24565b6002600d55565b600c5460ff16156113bb5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610d24565b6013546001600160a01b0316156113bb57601360009054906101000a90046001600160a01b03166001600160a01b031663a2e620456040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156137fd57600080fd5b505af11580156126d1573d6000803e3d6000fd5b600061381c83613e79565b61ffff8087166000908152600260209081526040808320938916835292905220549091508061388d5760405162461bcd60e51b815260206004820152601a60248201527f4c7a4170703a206d696e4761734c696d6974206e6f74207365740000000000006044820152606401610d24565b6138978382614ada565b8210156115ac5760405162461bcd60e51b815260206004820152601b60248201527f4c7a4170703a20676173206c696d697420697320746f6f206c6f7700000000006044820152606401610d24565b6000806139137f000000000000000000000000000000000000000000000000000000000000000084615018565b905061391f8184614b80565b9150915091565b6000613930613749565b61222885858585613ed5565b6000806139697f000000000000000000000000000000000000000000000000000000000000000084614dd0565b905067ffffffffffffffff811115610f5b5760405162461bcd60e51b815260206004820152601a60248201527f4f4654436f72653a20616d6f756e745344206f766572666c6f770000000000006044820152606401610d24565b61ffff8616600090815260016020526040812080546139e190614a7f565b80601f0160208091040260200160405190810160405280929190818152602001828054613a0d90614a7f565b8015613a5a5780601f10613a2f57610100808354040283529160200191613a5a565b820191906000526020600020905b815481529060010190602001808311613a3d57829003601f168201915b50505050509050805160001415613ad95760405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201527f61207472757374656420736f75726365000000000000000000000000000000006064820152608401610d24565b613ae4878751613f07565b6040517fc58031000000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c5803100908490613b55908b9086908c908c908c908c9060040161502c565b6000604051808303818588803b158015613b6e57600080fd5b505af1158015613b82573d6000803e3d6000fd5b505050505050505050505050565b80471015613be05760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610d24565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114613c2d576040519150601f19603f3d011682016040523d82523d6000602084013e613c32565b606091505b50509050806114105760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610d24565b6060600185856001600160a01b0389168587604051602001613cd096959493929190615086565b604051602081830303815290604052905095945050505050565b60008080613cf884826133e8565b60ff16148015613d09575082516029145b613d555760405162461bcd60e51b815260206004820152601860248201527f4f4654436f72653a20696e76616c6964207061796c6f616400000000000000006044820152606401610d24565b613d6083600d613f75565b9150613d6d836021613feb565b9050915091565b6000610f5b7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff8416614d9b565b6000613db68383612972565b5092915050565b600080806060816001613dd087836133e8565b60ff1614613e205760405162461bcd60e51b815260206004820152601860248201527f4f4654436f72653a20696e76616c6964207061796c6f616400000000000000006044820152606401610d24565b613e2b86600d613f75565b9350613e38866021613feb565b9250613e45866029614051565b9450613e52866049613feb565b9050613e6e6051808851613e669190614b80565b889190612f79565b915091939590929450565b6000602282511015613ecd5760405162461bcd60e51b815260206004820152601c60248201527f4c7a4170703a20696e76616c69642061646170746572506172616d73000000006044820152606401610d24565b506022015190565b6000336001600160a01b0386168114613ef357613ef3868285612645565b613efd8684612a33565b5090949350505050565b61ffff821660009081526003602052604090205480613f2557506127105b808211156114105760405162461bcd60e51b815260206004820181905260248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152606401610d24565b6000613f82826014614ada565b83511015613fd25760405162461bcd60e51b815260206004820152601560248201527f746f416464726573735f6f75744f66426f756e647300000000000000000000006044820152606401610d24565b5001602001516c01000000000000000000000000900490565b6000613ff8826008614ada565b835110156140485760405162461bcd60e51b815260206004820152601460248201527f746f55696e7436345f6f75744f66426f756e64730000000000000000000000006044820152606401610d24565b50016008015190565b600061405e826020614ada565b835110156140ae5760405162461bcd60e51b815260206004820152601560248201527f746f427974657333325f6f75744f66426f756e647300000000000000000000006044820152606401610d24565b50016020015190565b8280546140c390614a7f565b90600052602060002090601f0160209004810192826140e5576000855561412b565b82601f106140fe57805160ff191683800117855561412b565b8280016001018555821561412b579182015b8281111561412b578251825591602001919060010190614110565b506141379291506141af565b5090565b82805461414790614a7f565b90600052602060002090601f016020900481019282614169576000855561412b565b82601f106141825782800160ff1982351617855561412b565b8280016001018555821561412b579182015b8281111561412b578235825591602001919060010190614194565b5b8082111561413757600081556001016141b0565b803561ffff811681146141d657600080fd5b919050565b60008083601f8401126141ed57600080fd5b50813567ffffffffffffffff81111561420557600080fd5b60208301915083602082850101111561421d57600080fd5b9250929050565b803567ffffffffffffffff811681146141d657600080fd5b6000806000806000806080878903121561425557600080fd5b61425e876141c4565b9550602087013567ffffffffffffffff8082111561427b57600080fd5b6142878a838b016141db565b909750955085915061429b60408a01614224565b945060608901359150808211156142b157600080fd5b506142be89828a016141db565b979a9699509497509295939492505050565b6000602082840312156142e257600080fd5b81356001600160e01b0319811681146118b957600080fd5b60005b838110156143155781810151838201526020016142fd565b838111156126d15750506000910152565b6000815180845261433e8160208601602086016142fa565b601f01601f19169290920160200192915050565b6020815260006118b96020830184614326565b60006020828403121561437757600080fd5b6118b9826141c4565b6001600160a01b038116811461141f57600080fd5b600080604083850312156143a857600080fd5b82356143b381614380565b946020939093013593505050565b600080604083850312156143d457600080fd5b6143b3836141c4565b6000602082840312156143ef57600080fd5b5035919050565b60008060006060848603121561440b57600080fd5b833561441681614380565b9250602084013561442681614380565b929592945050506040919091013590565b803580151581146141d657600080fd5b60008060008060008060a0878903121561446057600080fd5b614469876141c4565b9550602087013594506040870135935061448560608801614437565b9250608087013567ffffffffffffffff8111156144a157600080fd5b6142be89828a016141db565b6000602082840312156144bf57600080fd5b81356118b981614380565b6000806000604084860312156144df57600080fd5b6144e8846141c4565b9250602084013567ffffffffffffffff81111561450457600080fd5b614510868287016141db565b9497909650939450505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561455c5761455c61451d565b604052919050565b600067ffffffffffffffff82111561457e5761457e61451d565b50601f01601f191660200190565b6000806000606084860312156145a157600080fd5b6145aa846141c4565b9250602084013567ffffffffffffffff8111156145c657600080fd5b8401601f810186136145d757600080fd5b80356145ea6145e582614564565b614533565b8181528760208385010111156145ff57600080fd5b8160208401602083013760006020838301015280945050505061462460408501614224565b90509250925092565b60006060828403121561463f57600080fd5b50919050565b600080600080600060a0868803121561465d57600080fd5b853561466881614380565b9450614676602087016141c4565b93506040860135925060608601359150608086013567ffffffffffffffff8111156146a057600080fd5b6146ac8882890161462d565b9150509295509295909350565b60008060008060008060008060e0898b0312156146d557600080fd5b88356146e081614380565b97506146ee60208a016141c4565b96506040890135955060608901359450608089013567ffffffffffffffff8082111561471957600080fd5b6147258c838d016141db565b909650945084915061473960a08c01614224565b935060c08b013591508082111561474f57600080fd5b5061475c8b828c0161462d565b9150509295985092959890939650565b6000806040838503121561477f57600080fd5b614788836141c4565b9150614796602084016141c4565b90509250929050565b600080600080600080600080600060e08a8c0312156147bd57600080fd5b6147c68a6141c4565b985060208a0135975060408a0135965060608a013567ffffffffffffffff808211156147f157600080fd5b6147fd8d838e016141db565b909850965086915061481160808d01614224565b955061481f60a08d01614437565b945060c08c013591508082111561483557600080fd5b506148428c828d016141db565b915080935050809150509295985092959850929598565b60008060008060006080868803121561487157600080fd5b61487a866141c4565b9450614888602087016141c4565b935060408601359250606086013567ffffffffffffffff8111156148ab57600080fd5b6148b7888289016141db565b969995985093965092949392505050565b600080604083850312156148db57600080fd5b82356148e681614380565b915060208301356148f681614380565b809150509250929050565b60008060006060848603121561491657600080fd5b61491f846141c4565b925061492d602085016141c4565b9150604084013590509250925092565b6000806000806000806000806000806101008b8d03121561495d57600080fd5b6149668b6141c4565b995060208b013567ffffffffffffffff8082111561498357600080fd5b61498f8e838f016141db565b909b5099508991506149a360408e01614224565b985060608d0135975060808d013591506149bc82614380565b90955060a08c0135945060c08c013590808211156149d957600080fd5b506149e68d828e016141db565b9150809450508092505060e08b013590509295989b9194979a5092959850565b60008060408385031215614a1957600080fd5b8235614a2481614380565b915061479660208401614437565b60008060008060808587031215614a4857600080fd5b614a51856141c4565b9350614a5f602086016141c4565b92506040850135614a6f81614380565b9396929550929360600135925050565b600181811c90821680614a9357607f821691505b6020821081141561463f57634e487b7160e01b600052602260045260246000fd5b8183823760009101908152919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115614aed57614aed614ac4565b500190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b61ffff84168152604060208201526000612228604083018486614af2565b6000808335601e19843603018112614b5057600080fd5b83018035915067ffffffffffffffff821115614b6b57600080fd5b60200191503681900382131561421d57600080fd5b600082821015614b9257614b92614ac4565b500390565b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b600061ffff808816835280871660208401525084604083015260806060830152612d9f608083018486614af2565b61ffff86168152608060208201526000614c09608083018688614af2565b67ffffffffffffffff94909416604083015250606001529392505050565b61ffff8916815260c060208201526000614c4560c08301898b614af2565b67ffffffffffffffff8816604084015286606084015285608084015282810360a0840152614c74818587614af2565b9b9a5050505050505050505050565b600060208284031215614c9557600080fd5b5051919050565b600181815b80851115614cd7578160001904821115614cbd57614cbd614ac4565b80851615614cca57918102915b93841c9390800290614ca1565b509250929050565b600082614cee57506001610f5b565b81614cfb57506000610f5b565b8160018114614d115760028114614d1b57614d37565b6001915050610f5b565b60ff841115614d2c57614d2c614ac4565b50506001821b610f5b565b5060208310610133831016604e8410600b8410161715614d5a575081810a610f5b565b614d648383614c9c565b8060001904821115614d7857614d78614ac4565b029392505050565b60006118b960ff841683614cdf565b60006118b98383614cdf565b6000816000190483118215151615614db557614db5614ac4565b500290565b634e487b7160e01b600052601260045260246000fd5b600082614ddf57614ddf614dba565b500490565b600060208284031215614df657600080fd5b815167ffffffffffffffff811115614e0d57600080fd5b8201601f81018413614e1e57600080fd5b8051614e2c6145e582614564565b818152856020838501011115614e4157600080fd5b6122288260208301602086016142fa565b61ffff85168152608060208201526000614e6f6080830186614326565b67ffffffffffffffff851660408401528281036060840152612d9f8185614326565b61ffff861681526001600160a01b038516602082015260a060408201526000614ebd60a0830186614326565b84151560608401528281036080840152614ed78185614326565b98975050505050505050565b60008060408385031215614ef657600080fd5b505080516020909101519092909150565b60008251614f198184602087016142fa565b9190910192915050565b61ffff8616815260a060208201526000614f4060a0830187614326565b67ffffffffffffffff861660408401528281036060840152614f628186614326565b90508281036080840152614ed78185614326565b600061010061ffff8b168352806020840152614f948184018b614326565b905067ffffffffffffffff891660408401528760608401526001600160a01b03871660808401528560a084015282810360c0840152614fd38186614326565b9150508260e08301529998505050505050505050565b606081526000614ffc6060830186614326565b67ffffffffffffffff9490941660208301525060400152919050565b60008261502757615027614dba565b500690565b61ffff8716815260c06020820152600061504960c0830188614326565b828103604084015261505b8188614326565b6001600160a01b0387811660608601528616608085015283810360a08501529050612f2f8185614326565b7fff000000000000000000000000000000000000000000000000000000000000008760f81b16815285600182015260007fffffffffffffffff000000000000000000000000000000000000000000000000808760c01b166021840152856029840152808560c01b1660498401525082516151078160518501602087016142fa565b9190910160510197965050505050505056fea264697066735822122042bec2b06cbe5677ab393ce78f400dca1dcf69faadd95156b69da9193419fe7164736f6c634300080c003300000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000006edce65403992e310a62460808c4b910d972f10f000000000000000000000000de8023f05d831fb7381486d041237ddeb06c1ba2000000000000000000000000de8023f05d831fb7381486d041237ddeb06c1ba20000000000000000000000000000000000000000033b2e3c9fd0803ce800000000000000000000000000000000000000000000000000000002c68af0bb14000000000000000000000000000000000000000000000000000000000000000000055072696d65000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000450524e5400000000000000000000000000000000000000000000000000000000