608060405273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506004600a620000ee9190620008a1565b64174876e800620001009190620008f2565b6005556004600a620001139190620008a1565b64174876e800620001259190620008f2565b6006556004600a620001389190620008a1565b64174876e8006200014a9190620008f2565b6007556000600c556000600d556000600e55600e54600c54600d546200017191906200093d565b6200017d91906200093d565b600f556064601055606460115560646012556064601355601e60165560646017556001601960146101000a81548160ff0219169083151502179055506001601960156101000a81548160ff02191690831515021790555060fa600554620001e59190620009a7565b601a55348015620001f557600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050737a250d5630b4cf539739df2c5dacb4c659f2488d601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000352573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000378919062000a49565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b8152600401620003d692919062000a8c565b6020604051808303816000875af1158015620003f6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200041c919062000a49565b601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600554600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600554604051620006f9919062000aca565b60405180910390a362000ae7565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000795578086048111156200076d576200076c62000707565b5b60018516156200077d5780820291505b80810290506200078d8562000736565b94506200074d565b94509492505050565b600082620007b0576001905062000883565b81620007c0576000905062000883565b8160018114620007d95760028114620007e4576200081a565b600191505062000883565b60ff841115620007f957620007f862000707565b5b8360020a91508482111562000813576200081262000707565b5b5062000883565b5060208310610133831016604e8410600b8410161715620008545782820a9050838111156200084e576200084d62000707565b5b62000883565b62000863848484600162000743565b925090508184048111156200087d576200087c62000707565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620008ae826200088a565b9150620008bb8362000894565b9250620008ea7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200079e565b905092915050565b6000620008ff826200088a565b91506200090c836200088a565b92508282026200091c816200088a565b9150828204841483151762000936576200093562000707565b5b5092915050565b60006200094a826200088a565b915062000957836200088a565b925082820190508082111562000972576200097162000707565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620009b4826200088a565b9150620009c1836200088a565b925082620009d457620009d362000978565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000a1182620009e4565b9050919050565b62000a238162000a04565b811462000a2f57600080fd5b50565b60008151905062000a438162000a18565b92915050565b60006020828403121562000a625762000a61620009df565b5b600062000a728482850162000a32565b91505092915050565b62000a868162000a04565b82525050565b600060408201905062000aa3600083018562000a7b565b62000ab2602083018462000a7b565b9392505050565b62000ac4816200088a565b82525050565b600060208201905062000ae1600083018462000ab9565b92915050565b61357e8062000af76000396000f3fe6080604052600436106102135760003560e01c806370a0823111610118578063a8aa1b31116100a0578063dd62ed3e1161006f578063dd62ed3e146107ee578063df20fd491461082b578063f887ea4014610854578063fed0d2a11461087f578063ffb54a99146108aa5761021a565b8063a8aa1b311461071e578063a9059cbb14610749578063d51ed1c814610786578063d58f2f27146107c35761021a565b8063894375e5116100e7578063894375e51461063957806395d89b411461066257806398118cb41461068d57806398e0ae14146106b85780639c75dd35146106f55761021a565b806370a082311461057b57806378109e54146105b85780637d1db4a5146105e3578063893d20e81461060e5761021a565b806323b872dd1161019b578063313ce5671161016a578063313ce56714610492578063571ac8b0146104bd5780635921652f146104fa5780636b67c4df146105255780636ddd1713146105505761021a565b806323b872dd146103c25780632b112e49146103ff5780632f54bf6e1461042a5780633121c7c0146104675761021a565b8063180b0d7e116101e2578063180b0d7e146102ef57806318160ddd1461031a5780631df4ccfc146103455780631f76a7af14610370578063201e7991146103995761021a565b80630445b6671461021f57806306fdde031461024a578063095ea7b3146102755780631161ae39146102b25761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b506102346108d5565b60405161024191906126d6565b60405180910390f35b34801561025657600080fd5b5061025f6108db565b60405161026c9190612781565b60405180910390f35b34801561028157600080fd5b5061029c60048036038101906102979190612837565b610918565b6040516102a99190612892565b60405180910390f35b3480156102be57600080fd5b506102d960048036038101906102d491906128ad565b610a0a565b6040516102e69190612892565b60405180910390f35b3480156102fb57600080fd5b50610304610a1f565b60405161031191906126d6565b60405180910390f35b34801561032657600080fd5b5061032f610a25565b60405161033c91906126d6565b60405180910390f35b34801561035157600080fd5b5061035a610a2f565b60405161036791906126d6565b60405180910390f35b34801561037c57600080fd5b506103976004803603810190610392919061292b565b610a35565b005b3480156103a557600080fd5b506103c060048036038101906103bb91906128ad565b610b4e565b005b3480156103ce57600080fd5b506103e960048036038101906103e49190612958565b610ba8565b6040516103f69190612892565b60405180910390f35b34801561040b57600080fd5b50610414610da8565b60405161042191906126d6565b60405180910390f35b34801561043657600080fd5b50610451600480360381019061044c91906129ab565b610e2a565b60405161045e9190612892565b60405180910390f35b34801561047357600080fd5b5061047c610e83565b60405161048991906126d6565b60405180910390f35b34801561049e57600080fd5b506104a7610e89565b6040516104b491906129f4565b60405180910390f35b3480156104c957600080fd5b506104e460048036038101906104df91906129ab565b610e92565b6040516104f19190612892565b60405180910390f35b34801561050657600080fd5b5061050f610ec5565b60405161051c91906126d6565b60405180910390f35b34801561053157600080fd5b5061053a610ecb565b60405161054791906126d6565b60405180910390f35b34801561055c57600080fd5b50610565610ed1565b6040516105729190612892565b60405180910390f35b34801561058757600080fd5b506105a2600480360381019061059d91906129ab565b610ee4565b6040516105af91906126d6565b60405180910390f35b3480156105c457600080fd5b506105cd610f2d565b6040516105da91906126d6565b60405180910390f35b3480156105ef57600080fd5b506105f8610f33565b60405161060591906126d6565b60405180910390f35b34801561061a57600080fd5b50610623610f39565b6040516106309190612a1e565b60405180910390f35b34801561064557600080fd5b50610660600480360381019061065b9190612a9e565b610f62565b005b34801561066e57600080fd5b506106776110ab565b6040516106849190612781565b60405180910390f35b34801561069957600080fd5b506106a26110e8565b6040516106af91906126d6565b60405180910390f35b3480156106c457600080fd5b506106df60048036038101906106da9190612837565b6110ee565b6040516106ec9190612892565b60405180910390f35b34801561070157600080fd5b5061071c60048036038101906107179190612b12565b611198565b005b34801561072a57600080fd5b50610733611221565b6040516107409190612a1e565b60405180910390f35b34801561075557600080fd5b50610770600480360381019061076b9190612837565b611247565b60405161077d9190612892565b60405180910390f35b34801561079257600080fd5b506107ad60048036038101906107a89190612b12565b61125c565b6040516107ba91906126d6565b60405180910390f35b3480156107cf57600080fd5b506107d86112ce565b6040516107e591906126d6565b60405180910390f35b3480156107fa57600080fd5b5061081560048036038101906108109190612b3f565b6112d4565b60405161082291906126d6565b60405180910390f35b34801561083757600080fd5b50610852600480360381019061084d9190612bab565b61135b565b005b34801561086057600080fd5b506108696113c8565b6040516108769190612c4a565b60405180910390f35b34801561088b57600080fd5b506108946113ee565b6040516108a191906126d6565b60405180910390f35b3480156108b657600080fd5b506108bf6113f4565b6040516108cc9190612892565b60405180910390f35b601a5481565b60606040518060400160405280600d81526020017f5065706556657273696f6e203300000000000000000000000000000000000000815250905090565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109f891906126d6565b60405180910390a36001905092915050565b600082610a168361125c565b11905092915050565b60105481565b6000600554905090565b600f5481565b610a3e33610e2a565b610a7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7490612cb1565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051610b439190612cf2565b60405180910390a150565b610b5733610e2a565b610b96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8d90612cb1565b60405180910390fd5b81601681905550806017819055505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610d9457610d13826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114079092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610d9f84848461146b565b90509392505050565b6000610e25610dd8600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610ee4565b610e17610e06600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610ee4565b6005546119ad90919063ffffffff16565b6119ad90919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60125481565b60006004905090565b6000610ebe827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610918565b9050919050565b60135481565b600d5481565b601960159054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60075481565b60065481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610f6b33610e2a565b610faa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa190612cb1565b60405180910390fd5b6107d18383905010610ff1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe890612d7f565b60405180910390fd5b600083839050826110029190612dce565b90508061100e86610ee4565b101561104f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104690612e5c565b60405180910390fd5b60005b848490508110156110a35761108f8686868481811061107457611073612e7c565b5b905060200201602081019061108991906129ab565b856119f7565b50808061109b90612eab565b915050611052565b505050505050565b60606040518060400160405280600681526020017f5045504556330000000000000000000000000000000000000000000000000000815250905090565b600c5481565b60008273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b815260040161114d929190612ef3565b6020604051808303816000875af115801561116c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111909190612f31565b905092915050565b6000479050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc606484846111e79190612dce565b6111f19190612f8d565b9081150290604051600060405180830381858888f1935050505015801561121c573d6000803e3d6000fd5b505050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061125433848461146b565b905092915050565b60006112c7611269610da8565b6112b96112aa600261129c601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610ee4565b611bca90919063ffffffff16565b85611bca90919063ffffffff16565b611c4490919063ffffffff16565b9050919050565b600e5481565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61136433610e2a565b6113a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139a90612cb1565b60405180910390fd5b81601960156101000a81548160ff02191690831515021790555080601a819055505050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b601960149054906101000a900460ff1681565b600083831115829061144f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114469190612781565b60405180910390fd5b506000838561145e9190612fbe565b9050809150509392505050565b6000601b60009054906101000a900460ff16156114945761148d8484846119f7565b90506119a6565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156115385750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561158d57601960149054906101000a900460ff1661158c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115839061303e565b60405180910390fd5b5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561161357503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561166d5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156116c75750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156117215750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561178557600061173184610ee4565b90506007548382611742919061305e565b1115611783576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177a90613104565b60405180910390fd5b505b61178f8483611c8e565b611797611d2b565b156117a5576117a4611e02565b5b61182e826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114079092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061187c85612379565b158061188e575061188c84612379565b155b6118a25761189d8584866123d0565b6118a4565b825b90506118f881600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125fc90919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161199891906126d6565b60405180910390a360019150505b9392505050565b60006119ef83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611407565b905092915050565b6000611a82826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114079092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611b1782600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125fc90919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611bb791906126d6565b60405180910390a3600190509392505050565b6000808303611bdc5760009050611c3e565b60008284611bea9190612dce565b9050828482611bf99190612f8d565b14611c39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3090613196565b60405180910390fd5b809150505b92915050565b6000611c8683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061265a565b905092915050565b60065481111580611ce85750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611d27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1e90613202565b60405180910390fd5b5050565b6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015611d985750601b60009054906101000a900460ff16155b8015611db05750601960159054906101000a900460ff165b8015611dfd5750601a54600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601b60006101000a81548160ff0219169083151502179055506000611e2d601654601754610a0a565b611e3957600c54611e3c565b60005b90506000611e7c6002611e6e600f54611e6086601a54611bca90919063ffffffff16565b611c4490919063ffffffff16565b611c4490919063ffffffff16565b90506000611e9582601a546119ad90919063ffffffff16565b90506000600267ffffffffffffffff811115611eb457611eb3613222565b5b604051908082528060200260200182016040528015611ee25781602001602082028036833780820191505090505b5090503081600081518110611efa57611ef9612e7c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110611f6b57611f6a612e7c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b815260040161200e95949392919061334a565b600060405180830381600087803b15801561202857600080fd5b505af115801561203c573d6000803e3d6000fd5b50505050600061205582476119ad90919063ffffffff16565b90506000612081612070600289611c4490919063ffffffff16565b600f546119ad90919063ffffffff16565b905060006120bd60026120af846120a18c88611bca90919063ffffffff16565b611c4490919063ffffffff16565b611c4490919063ffffffff16565b905060006120e8836120da600d5487611bca90919063ffffffff16565b611c4490919063ffffffff16565b9050600061211384612105600e5488611bca90919063ffffffff16565b611c4490919063ffffffff16565b90506000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168361753090604051612161906133d5565b600060405180830381858888f193505050503d806000811461219f576040519150601f19603f3d011682016040523d82523d6000602084013e6121a4565b606091505b50509050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682617530906040516121f2906133d5565b600060405180830381858888f193505050503d8060008114612230576040519150601f19603f3d011682016040523d82523d6000602084013e612235565b606091505b5050809150506000905060008a111561235157601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71985308d600080601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016122d1969594939291906133ea565b60606040518083038185885af11580156122ef573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906123149190613460565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506848b6040516123489291906134b3565b60405180910390a15b50505050505050505050506000601b60006101000a81548160ff021916908315150217905550565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b6000806013549050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612437576011549050612493565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036124925760125490505b5b60006124dc60646010546124a79190612dce565b6124ce846124c0600f548a611bca90919063ffffffff16565b611bca90919063ffffffff16565b611c4490919063ffffffff16565b9050600081905061253581600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125fc90919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125d591906126d6565b60405180910390a36125f082876119ad90919063ffffffff16565b93505050509392505050565b600080828461260b919061305e565b905083811015612650576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264790613528565b60405180910390fd5b8091505092915050565b600080831182906126a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126989190612781565b60405180910390fd5b50600083856126b09190612f8d565b9050809150509392505050565b6000819050919050565b6126d0816126bd565b82525050565b60006020820190506126eb60008301846126c7565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561272b578082015181840152602081019050612710565b60008484015250505050565b6000601f19601f8301169050919050565b6000612753826126f1565b61275d81856126fc565b935061276d81856020860161270d565b61277681612737565b840191505092915050565b6000602082019050818103600083015261279b8184612748565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006127d8826127ad565b9050919050565b6127e8816127cd565b81146127f357600080fd5b50565b600081359050612805816127df565b92915050565b612814816126bd565b811461281f57600080fd5b50565b6000813590506128318161280b565b92915050565b6000806040838503121561284e5761284d6127a3565b5b600061285c858286016127f6565b925050602061286d85828601612822565b9150509250929050565b60008115159050919050565b61288c81612877565b82525050565b60006020820190506128a76000830184612883565b92915050565b600080604083850312156128c4576128c36127a3565b5b60006128d285828601612822565b92505060206128e385828601612822565b9150509250929050565b60006128f8826127ad565b9050919050565b612908816128ed565b811461291357600080fd5b50565b600081359050612925816128ff565b92915050565b600060208284031215612941576129406127a3565b5b600061294f84828501612916565b91505092915050565b600080600060608486031215612971576129706127a3565b5b600061297f868287016127f6565b9350506020612990868287016127f6565b92505060406129a186828701612822565b9150509250925092565b6000602082840312156129c1576129c06127a3565b5b60006129cf848285016127f6565b91505092915050565b600060ff82169050919050565b6129ee816129d8565b82525050565b6000602082019050612a0960008301846129e5565b92915050565b612a18816127cd565b82525050565b6000602082019050612a336000830184612a0f565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612a5e57612a5d612a39565b5b8235905067ffffffffffffffff811115612a7b57612a7a612a3e565b5b602083019150836020820283011115612a9757612a96612a43565b5b9250929050565b60008060008060608587031215612ab857612ab76127a3565b5b6000612ac6878288016127f6565b945050602085013567ffffffffffffffff811115612ae757612ae66127a8565b5b612af387828801612a48565b93509350506040612b0687828801612822565b91505092959194509250565b600060208284031215612b2857612b276127a3565b5b6000612b3684828501612822565b91505092915050565b60008060408385031215612b5657612b556127a3565b5b6000612b64858286016127f6565b9250506020612b75858286016127f6565b9150509250929050565b612b8881612877565b8114612b9357600080fd5b50565b600081359050612ba581612b7f565b92915050565b60008060408385031215612bc257612bc16127a3565b5b6000612bd085828601612b96565b9250506020612be185828601612822565b9150509250929050565b6000819050919050565b6000612c10612c0b612c06846127ad565b612beb565b6127ad565b9050919050565b6000612c2282612bf5565b9050919050565b6000612c3482612c17565b9050919050565b612c4481612c29565b82525050565b6000602082019050612c5f6000830184612c3b565b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000612c9b6006836126fc565b9150612ca682612c65565b602082019050919050565b60006020820190508181036000830152612cca81612c8e565b9050919050565b6000612cdc82612c17565b9050919050565b612cec81612cd1565b82525050565b6000602082019050612d076000830184612ce3565b92915050565b7f474153204572726f723a206d61782061697264726f70206c696d69742069732060008201527f3230303020616464726573736573000000000000000000000000000000000000602082015250565b6000612d69602e836126fc565b9150612d7482612d0d565b604082019050919050565b60006020820190508181036000830152612d9881612d5c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612dd9826126bd565b9150612de4836126bd565b9250828202612df2816126bd565b91508282048414831517612e0957612e08612d9f565b5b5092915050565b7f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c65740000000000600082015250565b6000612e46601b836126fc565b9150612e5182612e10565b602082019050919050565b60006020820190508181036000830152612e7581612e39565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000612eb6826126bd565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612ee857612ee7612d9f565b5b600182019050919050565b6000604082019050612f086000830185612a0f565b612f1560208301846126c7565b9392505050565b600081519050612f2b81612b7f565b92915050565b600060208284031215612f4757612f466127a3565b5b6000612f5584828501612f1c565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612f98826126bd565b9150612fa3836126bd565b925082612fb357612fb2612f5e565b5b828204905092915050565b6000612fc9826126bd565b9150612fd4836126bd565b9250828203905081811115612fec57612feb612d9f565b5b92915050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b60006130286014836126fc565b915061303382612ff2565b602082019050919050565b600060208201905081810360008301526130578161301b565b9050919050565b6000613069826126bd565b9150613074836126bd565b925082820190508082111561308c5761308b612d9f565b5b92915050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460008201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000602082015250565b60006130ee603e836126fc565b91506130f982613092565b604082019050919050565b6000602082019050818103600083015261311d816130e1565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006131806021836126fc565b915061318b82613124565b604082019050919050565b600060208201905081810360008301526131af81613173565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b60006131ec6011836126fc565b91506131f7826131b6565b602082019050919050565b6000602082019050818103600083015261321b816131df565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b600061327661327161326c84613251565b612beb565b6126bd565b9050919050565b6132868161325b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6132c1816127cd565b82525050565b60006132d383836132b8565b60208301905092915050565b6000602082019050919050565b60006132f78261328c565b6133018185613297565b935061330c836132a8565b8060005b8381101561333d57815161332488826132c7565b975061332f836132df565b925050600181019050613310565b5085935050505092915050565b600060a08201905061335f60008301886126c7565b61336c602083018761327d565b818103604083015261337e81866132ec565b905061338d6060830185612a0f565b61339a60808301846126c7565b9695505050505050565b600081905092915050565b50565b60006133bf6000836133a4565b91506133ca826133af565b600082019050919050565b60006133e0826133b2565b9150819050919050565b600060c0820190506133ff6000830189612a0f565b61340c60208301886126c7565b613419604083018761327d565b613426606083018661327d565b6134336080830185612a0f565b61344060a08301846126c7565b979650505050505050565b60008151905061345a8161280b565b92915050565b600080600060608486031215613479576134786127a3565b5b60006134878682870161344b565b93505060206134988682870161344b565b92505060406134a98682870161344b565b9150509250925092565b60006040820190506134c860008301856126c7565b6134d560208301846126c7565b9392505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613512601b836126fc565b915061351d826134dc565b602082019050919050565b6000602082019050818103600083015261354181613505565b905091905056fea26469706673582212208dad56109da24951f4cb80895b33fd1b8dab51a27ac5ea7c04c91236354b888d64736f6c63430008120033