0x60806040526000600c60006101000a81548160ff0219169083151502179055506014600f553480156200003157600080fd5b506040516200536638038062005366833981810160405281019062000057919062000699565b6040518060400160405280600c81526020017f536b656c65746f6e6775657300000000000000000000000000000000000000008152506040518060400160405280600c81526020017f536b656c65746f6e6775657300000000000000000000000000000000000000008152508160009080519060200190620000db929190620003e7565b508060019080519060200190620000f4929190620003e7565b505050620001176200010b6200014960201b60201c565b6200015160201b60201c565b6001600b8190555062000130826200021760201b60201c565b6200014181620002ba60201b60201c565b5050620007e7565b600033905090565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620002276200014960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200024d6200035d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620002a6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200029d9062000760565b60405180910390fd5b620002b7816200038760201b60201c565b50565b620002ca6200014960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620002f06200035d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000349576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003409062000760565b60405180910390fd5b6200035a81620003a360201b60201c565b50565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b80600d90805190602001906200039f929190620003e7565b5050565b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b828054620003f590620007b1565b90600052602060002090601f01602090048101928262000419576000855562000465565b82601f106200043457805160ff191683800117855562000465565b8280016001018555821562000465579182015b828111156200046457825182559160200191906001019062000447565b5b50905062000474919062000478565b5090565b5b808211156200049357600081600090555060010162000479565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200050082620004b5565b810181811067ffffffffffffffff82111715620005225762000521620004c6565b5b80604052505050565b60006200053762000497565b9050620005458282620004f5565b919050565b600067ffffffffffffffff821115620005685762000567620004c6565b5b6200057382620004b5565b9050602081019050919050565b60005b83811015620005a057808201518184015260208101905062000583565b83811115620005b0576000848401525b50505050565b6000620005cd620005c7846200054a565b6200052b565b905082815260208101848484011115620005ec57620005eb620004b0565b5b620005f984828562000580565b509392505050565b600082601f830112620006195762000618620004ab565b5b81516200062b848260208601620005b6565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620006618262000634565b9050919050565b620006738162000654565b81146200067f57600080fd5b50565b600081519050620006938162000668565b92915050565b60008060408385031215620006b357620006b2620004a1565b5b600083015167ffffffffffffffff811115620006d457620006d3620004a6565b5b620006e28582860162000601565b9250506020620006f58582860162000682565b9150509250929050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000748602083620006ff565b9150620007558262000710565b602082019050919050565b600060208201905081810360008301526200077b8162000739565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620007ca57607f821691505b60208210811415620007e157620007e062000782565b5b50919050565b614b6f80620007f76000396000f3fe6080604052600436106101f95760003560e01c80636352211e1161010d57806395d89b41116100a0578063c87b56dd1161006f578063c87b56dd1461075a578063cb3cb5c414610797578063cd85cdb5146107c0578063e985e9c5146107d7578063f2fde38b14610814576101f9565b806395d89b41146106b4578063a22cb465146106df578063b7864c4d14610708578063b88d4fde14610731576101f9565b8063853828b6116100dc578063853828b6146106055780638ab9f5a71461060f5780638da5cb5b1461064c578063929eea5e14610677576101f9565b80636352211e1461053757806370a0823114610574578063715018a6146105b15780638462151c146105c8576101f9565b80632be09561116101905780634f6ccce71161015f5780634f6ccce71461042c578063544736e61461046957806355f804b3146104945780635fe1113d146104bd578063628abf0f146104fa576101f9565b80632be09561146103725780632f745c59146103895780633870c761146103c657806342842e0e14610403576101f9565b8063095ea7b3116101cc578063095ea7b3146102cc57806318160ddd146102f557806323b872dd146103205780632b26a6bf14610349576101f9565b806301ffc9a7146101fe578063059513a61461023b57806306fdde0314610264578063081812fc1461028f575b600080fd5b34801561020a57600080fd5b506102256004803603810190610220919061320d565b61083d565b6040516102329190613255565b60405180910390f35b34801561024757600080fd5b50610262600480360381019061025d91906132a6565b61084f565b005b34801561027057600080fd5b50610279610a02565b604051610286919061336c565b60405180910390f35b34801561029b57600080fd5b506102b660048036038101906102b191906132a6565b610a94565b6040516102c391906133cf565b60405180910390f35b3480156102d857600080fd5b506102f360048036038101906102ee9190613416565b610b19565b005b34801561030157600080fd5b5061030a610c31565b6040516103179190613465565b60405180910390f35b34801561032c57600080fd5b5061034760048036038101906103429190613480565b610c3e565b005b34801561035557600080fd5b50610370600480360381019061036b91906132a6565b610c9e565b005b34801561037e57600080fd5b50610387610d24565b005b34801561039557600080fd5b506103b060048036038101906103ab9190613416565b610dbd565b6040516103bd9190613465565b60405180910390f35b3480156103d257600080fd5b506103ed60048036038101906103e891906132a6565b610e62565b6040516103fa9190613255565b60405180910390f35b34801561040f57600080fd5b5061042a60048036038101906104259190613480565b610f62565b005b34801561043857600080fd5b50610453600480360381019061044e91906132a6565b610f82565b6040516104609190613465565b60405180910390f35b34801561047557600080fd5b5061047e610ff3565b60405161048b9190613255565b60405180910390f35b3480156104a057600080fd5b506104bb60048036038101906104b69190613608565b611006565b005b3480156104c957600080fd5b506104e460048036038101906104df91906132a6565b61108e565b6040516104f19190613255565b60405180910390f35b34801561050657600080fd5b50610521600480360381019061051c9190613651565b6110a1565b60405161052e919061373c565b60405180910390f35b34801561054357600080fd5b5061055e600480360381019061055991906132a6565b611345565b60405161056b91906133cf565b60405180910390f35b34801561058057600080fd5b5061059b60048036038101906105969190613651565b6113f7565b6040516105a89190613465565b60405180910390f35b3480156105bd57600080fd5b506105c66114af565b005b3480156105d457600080fd5b506105ef60048036038101906105ea9190613651565b611537565b6040516105fc919061373c565b60405180910390f35b61060d611641565b005b34801561061b57600080fd5b5061063660048036038101906106319190613651565b6116fd565b604051610643919061373c565b60405180910390f35b34801561065857600080fd5b506106616117bc565b60405161066e91906133cf565b60405180910390f35b34801561068357600080fd5b5061069e600480360381019061069991906132a6565b6117e6565b6040516106ab9190613255565b60405180910390f35b3480156106c057600080fd5b506106c961181a565b6040516106d6919061336c565b60405180910390f35b3480156106eb57600080fd5b506107066004803603810190610701919061378a565b6118ac565b005b34801561071457600080fd5b5061072f600480360381019061072a9190613651565b611a2d565b005b34801561073d57600080fd5b506107586004803603810190610753919061386b565b611ab5565b005b34801561076657600080fd5b50610781600480360381019061077c91906132a6565b611b17565b60405161078e919061336c565b60405180910390f35b3480156107a357600080fd5b506107be60048036038101906107b991906132a6565b611b6d565b005b3480156107cc57600080fd5b506107d5611c59565b005b3480156107e357600080fd5b506107fe60048036038101906107f991906138ee565b611cf2565b60405161080b9190613255565b60405180910390f35b34801561082057600080fd5b5061083b60048036038101906108369190613651565b611d86565b005b600061084882611e7e565b9050919050565b600c60009054906101000a900460ff1661089e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108959061397a565b60405180910390fd5b60006108a9336110a1565b905060008151116108ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e6906139e6565b60405180910390fd5b600f54821115610934576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092b90613a52565b60405180910390fd5b8051821115610978576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096f90613a52565b60405180910390fd5b600082116109bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b290613abe565b60405180910390fd5b60005b828110156109fd576109ea338383815181106109dd576109dc613ade565b5b6020026020010151611ef8565b80806109f590613b3c565b9150506109be565b505050565b606060008054610a1190613bb4565b80601f0160208091040260200160405190810160405280929190818152602001828054610a3d90613bb4565b8015610a8a5780601f10610a5f57610100808354040283529160200191610a8a565b820191906000526020600020905b815481529060010190602001808311610a6d57829003601f168201915b5050505050905090565b6000610a9f82611f16565b610ade576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad590613c58565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610b2482611345565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610b95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8c90613cea565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610bb4611f82565b73ffffffffffffffffffffffffffffffffffffffff161480610be35750610be281610bdd611f82565b611cf2565b5b610c22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1990613d7c565b60405180910390fd5b610c2c8383611f8a565b505050565b6000600880549050905090565b610c4f610c49611f82565b82612043565b610c8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8590613e0e565b60405180910390fd5b610c99838383612121565b505050565b610ca6611f82565b73ffffffffffffffffffffffffffffffffffffffff16610cc46117bc565b73ffffffffffffffffffffffffffffffffffffffff1614610d1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1190613e7a565b60405180910390fd5b80600f8190555050565b610d2c611f82565b73ffffffffffffffffffffffffffffffffffffffff16610d4a6117bc565b73ffffffffffffffffffffffffffffffffffffffff1614610da0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9790613e7a565b60405180910390fd5b6001600c60006101000a81548160ff021916908315150217905550565b6000610dc8836113f7565b8210610e09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0090613f0c565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b600080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff16636352211e856040518263ffffffff1660e01b8152600401610ec59190613465565b60206040518083038186803b158015610edd57600080fd5b505afa158015610ef1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f159190613f41565b90503273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610f5657600192505050610f5d565b6000925050505b919050565b610f7d83838360405180602001604052806000815250611ab5565b505050565b6000610f8c610c31565b8210610fcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc490613fe0565b60405180910390fd5b60088281548110610fe157610fe0613ade565b5b90600052602060002001549050919050565b600c60009054906101000a900460ff1681565b61100e611f82565b73ffffffffffffffffffffffffffffffffffffffff1661102c6117bc565b73ffffffffffffffffffffffffffffffffffffffff1614611082576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107990613e7a565b60405180910390fd5b61108b8161237d565b50565b600061109982611f16565b159050919050565b60606000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff16638462151c856040518263ffffffff1660e01b815260040161110591906133cf565b60006040518083038186803b15801561111d57600080fd5b505afa158015611131573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061115a91906140dd565b905060008151116111a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119790614172565b60405180910390fd5b6000600f5467ffffffffffffffff8111156111be576111bd6134dd565b5b6040519080825280602002602001820160405280156111ec5781602001602082028036833780820191505090505b509050600080600090505b83518110156112915761122384828151811061121657611215613ade565b5b6020026020010151611f16565b61127e5783818151811061123a57611239613ade565b5b602002602001015183838151811061125557611254613ade565b5b602002602001018181525050818061126c90613b3c565b925050600f54821061127d57611291565b5b808061128990613b3c565b9150506111f7565b5060008167ffffffffffffffff8111156112ae576112ad6134dd565b5b6040519080825280602002602001820160405280156112dc5781602001602082028036833780820191505090505b50905060005b82811015611337578381815181106112fd576112fc613ade565b5b602002602001015182828151811061131857611317613ade565b5b602002602001018181525050808061132f90613b3c565b9150506112e2565b508095505050505050919050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156113ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e590614204565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611468576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145f90614296565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6114b7611f82565b73ffffffffffffffffffffffffffffffffffffffff166114d56117bc565b73ffffffffffffffffffffffffffffffffffffffff161461152b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152290613e7a565b60405180910390fd5b6115356000612397565b565b60606000611544836113f7565b905060008114156115a157600067ffffffffffffffff81111561156a576115696134dd565b5b6040519080825280602002602001820160405280156115985781602001602082028036833780820191505090505b5091505061163c565b60008167ffffffffffffffff8111156115bd576115bc6134dd565b5b6040519080825280602002602001820160405280156115eb5781602001602082028036833780820191505090505b50905060005b82811015611635576116038582610dbd565b82828151811061161657611615613ade565b5b602002602001018181525050808061162d90613b3c565b9150506115f1565b8193505050505b919050565b611649611f82565b73ffffffffffffffffffffffffffffffffffffffff166116676117bc565b73ffffffffffffffffffffffffffffffffffffffff16146116bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b490613e7a565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050506116fb57600080fd5b565b60606000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff16638462151c846040518263ffffffff1660e01b815260040161175f91906133cf565b60006040518083038186803b15801561177757600080fd5b505afa15801561178b573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906117b491906140dd565b915050919050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006117f18261245d565b801561180257506118018261108e565b5b8015611813575061181282610e62565b5b9050919050565b60606001805461182990613bb4565b80601f016020809104026020016040519081016040528092919081815260200182805461185590613bb4565b80156118a25780601f10611877576101008083540402835291602001916118a2565b820191906000526020600020905b81548152906001019060200180831161188557829003601f168201915b5050505050905090565b6118b4611f82565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611922576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191990614302565b60405180910390fd5b806005600061192f611f82565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166119dc611f82565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611a219190613255565b60405180910390a35050565b611a35611f82565b73ffffffffffffffffffffffffffffffffffffffff16611a536117bc565b73ffffffffffffffffffffffffffffffffffffffff1614611aa9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa090613e7a565b60405180910390fd5b611ab281612476565b50565b611ac6611ac0611f82565b83612043565b611b05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afc90613e0e565b60405180910390fd5b611b11848484846124ba565b50505050565b60606000611b2483612516565b90506000815111611b445760405180602001604052806000815250611b65565b80604051602001611b5591906143aa565b6040516020818303038152906040525b915050919050565b611b768161245d565b611bb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bac90614418565b60405180910390fd5b600c60009054906101000a900460ff16611c04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfb9061397a565b60405180910390fd5b611c0d81610e62565b611c4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4390614484565b60405180910390fd5b611c563382611ef8565b50565b611c61611f82565b73ffffffffffffffffffffffffffffffffffffffff16611c7f6117bc565b73ffffffffffffffffffffffffffffffffffffffff1614611cd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccc90613e7a565b60405180910390fd5b6000600c60006101000a81548160ff021916908315150217905550565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611d8e611f82565b73ffffffffffffffffffffffffffffffffffffffff16611dac6117bc565b73ffffffffffffffffffffffffffffffffffffffff1614611e02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df990613e7a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611e72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6990614516565b60405180910390fd5b611e7b81612397565b50565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611ef15750611ef0826125bd565b5b9050919050565b611f1282826040518060200160405280600081525061269f565b5050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611ffd83611345565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600061204e82611f16565b61208d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612084906145a8565b60405180910390fd5b600061209883611345565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061210757508373ffffffffffffffffffffffffffffffffffffffff166120ef84610a94565b73ffffffffffffffffffffffffffffffffffffffff16145b8061211857506121178185611cf2565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661214182611345565b73ffffffffffffffffffffffffffffffffffffffff1614612197576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218e9061463a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612207576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121fe906146cc565b60405180910390fd5b6122128383836126fa565b61221d600082611f8a565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461226d91906146ec565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546122c49190614720565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b80600d90805190602001906123939291906130fe565b5050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808211801561246f575061271182105b9050919050565b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6124c5848484612121565b6124d18484848461270a565b612510576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612507906147e8565b60405180910390fd5b50505050565b606061252182611f16565b612560576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125579061487a565b60405180910390fd5b600061256a6128a1565b9050600081511161258a57604051806020016040528060008152506125b5565b8061259484612933565b6040516020016125a592919061489a565b6040516020818303038152906040525b915050919050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061268857507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80612698575061269782612a94565b5b9050919050565b6126a98383612afe565b6126b6600084848461270a565b6126f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ec906147e8565b60405180910390fd5b505050565b612705838383612ccc565b505050565b600061272b8473ffffffffffffffffffffffffffffffffffffffff16612de0565b15612894578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612754611f82565b8786866040518563ffffffff1660e01b81526004016127769493929190614913565b602060405180830381600087803b15801561279057600080fd5b505af19250505080156127c157506040513d601f19601f820116820180604052508101906127be9190614974565b60015b612844573d80600081146127f1576040519150601f19603f3d011682016040523d82523d6000602084013e6127f6565b606091505b5060008151141561283c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612833906147e8565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612899565b600190505b949350505050565b6060600d80546128b090613bb4565b80601f01602080910402602001604051908101604052809291908181526020018280546128dc90613bb4565b80156129295780601f106128fe57610100808354040283529160200191612929565b820191906000526020600020905b81548152906001019060200180831161290c57829003601f168201915b5050505050905090565b6060600082141561297b576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612a8f565b600082905060005b600082146129ad57808061299690613b3c565b915050600a826129a691906149d0565b9150612983565b60008167ffffffffffffffff8111156129c9576129c86134dd565b5b6040519080825280601f01601f1916602001820160405280156129fb5781602001600182028036833780820191505090505b5090505b60008514612a8857600182612a1491906146ec565b9150600a85612a239190614a01565b6030612a2f9190614720565b60f81b818381518110612a4557612a44613ade565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612a8191906149d0565b94506129ff565b8093505050505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6590614a7e565b60405180910390fd5b612b7781611f16565b15612bb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bae90614aea565b60405180910390fd5b612bc3600083836126fa565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612c139190614720565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b612cd7838383612df3565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612d1a57612d1581612df8565b612d59565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612d5857612d578382612e41565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612d9c57612d9781612fae565b612ddb565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612dda57612dd9828261307f565b5b5b505050565b600080823b905060008111915050919050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b60006001612e4e846113f7565b612e5891906146ec565b9050600060076000848152602001908152602001600020549050818114612f3d576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b60006001600880549050612fc291906146ec565b9050600060096000848152602001908152602001600020549050600060088381548110612ff257612ff1613ade565b5b90600052602060002001549050806008838154811061301457613013613ade565b5b90600052602060002001819055508160096000838152602001908152602001600020819055506009600085815260200190815260200160002060009055600880548061306357613062614b0a565b5b6001900381819060005260206000200160009055905550505050565b600061308a836113f7565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b82805461310a90613bb4565b90600052602060002090601f01602090048101928261312c5760008555613173565b82601f1061314557805160ff1916838001178555613173565b82800160010185558215613173579182015b82811115613172578251825591602001919060010190613157565b5b5090506131809190613184565b5090565b5b8082111561319d576000816000905550600101613185565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6131ea816131b5565b81146131f557600080fd5b50565b600081359050613207816131e1565b92915050565b600060208284031215613223576132226131ab565b5b6000613231848285016131f8565b91505092915050565b60008115159050919050565b61324f8161323a565b82525050565b600060208201905061326a6000830184613246565b92915050565b6000819050919050565b61328381613270565b811461328e57600080fd5b50565b6000813590506132a08161327a565b92915050565b6000602082840312156132bc576132bb6131ab565b5b60006132ca84828501613291565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561330d5780820151818401526020810190506132f2565b8381111561331c576000848401525b50505050565b6000601f19601f8301169050919050565b600061333e826132d3565b61334881856132de565b93506133588185602086016132ef565b61336181613322565b840191505092915050565b600060208201905081810360008301526133868184613333565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006133b98261338e565b9050919050565b6133c9816133ae565b82525050565b60006020820190506133e460008301846133c0565b92915050565b6133f3816133ae565b81146133fe57600080fd5b50565b600081359050613410816133ea565b92915050565b6000806040838503121561342d5761342c6131ab565b5b600061343b85828601613401565b925050602061344c85828601613291565b9150509250929050565b61345f81613270565b82525050565b600060208201905061347a6000830184613456565b92915050565b600080600060608486031215613499576134986131ab565b5b60006134a786828701613401565b93505060206134b886828701613401565b92505060406134c986828701613291565b9150509250925092565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61351582613322565b810181811067ffffffffffffffff82111715613534576135336134dd565b5b80604052505050565b60006135476131a1565b9050613553828261350c565b919050565b600067ffffffffffffffff821115613573576135726134dd565b5b61357c82613322565b9050602081019050919050565b82818337600083830152505050565b60006135ab6135a684613558565b61353d565b9050828152602081018484840111156135c7576135c66134d8565b5b6135d2848285613589565b509392505050565b600082601f8301126135ef576135ee6134d3565b5b81356135ff848260208601613598565b91505092915050565b60006020828403121561361e5761361d6131ab565b5b600082013567ffffffffffffffff81111561363c5761363b6131b0565b5b613648848285016135da565b91505092915050565b600060208284031215613667576136666131ab565b5b600061367584828501613401565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6136b381613270565b82525050565b60006136c583836136aa565b60208301905092915050565b6000602082019050919050565b60006136e98261367e565b6136f38185613689565b93506136fe8361369a565b8060005b8381101561372f57815161371688826136b9565b9750613721836136d1565b925050600181019050613702565b5085935050505092915050565b6000602082019050818103600083015261375681846136de565b905092915050565b6137678161323a565b811461377257600080fd5b50565b6000813590506137848161375e565b92915050565b600080604083850312156137a1576137a06131ab565b5b60006137af85828601613401565b92505060206137c085828601613775565b9150509250929050565b600067ffffffffffffffff8211156137e5576137e46134dd565b5b6137ee82613322565b9050602081019050919050565b600061380e613809846137ca565b61353d565b90508281526020810184848401111561382a576138296134d8565b5b613835848285613589565b509392505050565b600082601f830112613852576138516134d3565b5b81356138628482602086016137fb565b91505092915050565b60008060008060808587031215613885576138846131ab565b5b600061389387828801613401565b94505060206138a487828801613401565b93505060406138b587828801613291565b925050606085013567ffffffffffffffff8111156138d6576138d56131b0565b5b6138e28782880161383d565b91505092959194509250565b60008060408385031215613905576139046131ab565b5b600061391385828601613401565b925050602061392485828601613401565b9150509250929050565b7f4e4f5f5354415254000000000000000000000000000000000000000000000000600082015250565b60006139646008836132de565b915061396f8261392e565b602082019050919050565b6000602082019050818103600083015261399381613957565b9050919050565b7f4e4f5f4d494e5400000000000000000000000000000000000000000000000000600082015250565b60006139d06007836132de565b91506139db8261399a565b602082019050919050565b600060208201905081810360008301526139ff816139c3565b9050919050565b7f544f4f5f4d554348000000000000000000000000000000000000000000000000600082015250565b6000613a3c6008836132de565b9150613a4782613a06565b602082019050919050565b60006020820190508181036000830152613a6b81613a2f565b9050919050565b7f5a45524f5f414d4f554e54000000000000000000000000000000000000000000600082015250565b6000613aa8600b836132de565b9150613ab382613a72565b602082019050919050565b60006020820190508181036000830152613ad781613a9b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613b4782613270565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613b7a57613b79613b0d565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613bcc57607f821691505b60208210811415613be057613bdf613b85565b5b50919050565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000613c42602c836132de565b9150613c4d82613be6565b604082019050919050565b60006020820190508181036000830152613c7181613c35565b9050919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000613cd46021836132de565b9150613cdf82613c78565b604082019050919050565b60006020820190508181036000830152613d0381613cc7565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b6000613d666038836132de565b9150613d7182613d0a565b604082019050919050565b60006020820190508181036000830152613d9581613d59565b9050919050565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b6000613df86031836132de565b9150613e0382613d9c565b604082019050919050565b60006020820190508181036000830152613e2781613deb565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613e646020836132de565b9150613e6f82613e2e565b602082019050919050565b60006020820190508181036000830152613e9381613e57565b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b6000613ef6602b836132de565b9150613f0182613e9a565b604082019050919050565b60006020820190508181036000830152613f2581613ee9565b9050919050565b600081519050613f3b816133ea565b92915050565b600060208284031215613f5757613f566131ab565b5b6000613f6584828501613f2c565b91505092915050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b6000613fca602c836132de565b9150613fd582613f6e565b604082019050919050565b60006020820190508181036000830152613ff981613fbd565b9050919050565b600067ffffffffffffffff82111561401b5761401a6134dd565b5b602082029050602081019050919050565b600080fd5b6000815190506140408161327a565b92915050565b600061405961405484614000565b61353d565b9050808382526020820190506020840283018581111561407c5761407b61402c565b5b835b818110156140a557806140918882614031565b84526020840193505060208101905061407e565b5050509392505050565b600082601f8301126140c4576140c36134d3565b5b81516140d4848260208601614046565b91505092915050565b6000602082840312156140f3576140f26131ab565b5b600082015167ffffffffffffffff811115614111576141106131b0565b5b61411d848285016140af565b91505092915050565b7f4e4f5f5347420000000000000000000000000000000000000000000000000000600082015250565b600061415c6006836132de565b915061416782614126565b602082019050919050565b6000602082019050818103600083015261418b8161414f565b9050919050565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b60006141ee6029836132de565b91506141f982614192565b604082019050919050565b6000602082019050818103600083015261421d816141e1565b9050919050565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b6000614280602a836132de565b915061428b82614224565b604082019050919050565b600060208201905081810360008301526142af81614273565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b60006142ec6019836132de565b91506142f7826142b6565b602082019050919050565b6000602082019050818103600083015261431b816142df565b9050919050565b600081905092915050565b6000614338826132d3565b6143428185614322565b93506143528185602086016132ef565b80840191505092915050565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b6000614394600583614322565b915061439f8261435e565b600582019050919050565b60006143b6828461432d565b91506143c182614387565b915081905092915050565b7f494e56414c49445f494400000000000000000000000000000000000000000000600082015250565b6000614402600a836132de565b915061440d826143cc565b602082019050919050565b60006020820190508181036000830152614431816143f5565b9050919050565b7f4e4f5f4f574e0000000000000000000000000000000000000000000000000000600082015250565b600061446e6006836132de565b915061447982614438565b602082019050919050565b6000602082019050818103600083015261449d81614461565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006145006026836132de565b915061450b826144a4565b604082019050919050565b6000602082019050818103600083015261452f816144f3565b9050919050565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000614592602c836132de565b915061459d82614536565b604082019050919050565b600060208201905081810360008301526145c181614585565b9050919050565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b60006146246029836132de565b915061462f826145c8565b604082019050919050565b6000602082019050818103600083015261465381614617565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006146b66024836132de565b91506146c18261465a565b604082019050919050565b600060208201905081810360008301526146e5816146a9565b9050919050565b60006146f782613270565b915061470283613270565b92508282101561471557614714613b0d565b5b828203905092915050565b600061472b82613270565b915061473683613270565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561476b5761476a613b0d565b5b828201905092915050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b60006147d26032836132de565b91506147dd82614776565b604082019050919050565b60006020820190508181036000830152614801816147c5565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b6000614864602f836132de565b915061486f82614808565b604082019050919050565b6000602082019050818103600083015261489381614857565b9050919050565b60006148a6828561432d565b91506148b2828461432d565b91508190509392505050565b600081519050919050565b600082825260208201905092915050565b60006148e5826148be565b6148ef81856148c9565b93506148ff8185602086016132ef565b61490881613322565b840191505092915050565b600060808201905061492860008301876133c0565b61493560208301866133c0565b6149426040830185613456565b818103606083015261495481846148da565b905095945050505050565b60008151905061496e816131e1565b92915050565b60006020828403121561498a576149896131ab565b5b60006149988482850161495f565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006149db82613270565b91506149e683613270565b9250826149f6576149f56149a1565b5b828204905092915050565b6000614a0c82613270565b9150614a1783613270565b925082614a2757614a266149a1565b5b828206905092915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000614a686020836132de565b9150614a7382614a32565b602082019050919050565b60006020820190508181036000830152614a9781614a5b565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000614ad4601c836132de565b9150614adf82614a9e565b602082019050919050565b60006020820190508181036000830152614b0381614ac7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220938d8814f729e13bc4d4814908cb0627855f5a022e1c04f5b20031357c725e0564736f6c634300080900330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000335eeef8e93a7a757d9e7912044d9cd264e2b2d8000000000000000000000000000000000000000000000000000000000000002968747470733a2f2f736b656c65746f6e677565732e7361646769726c736261722e696f2f6a736f6e2f0000000000000000000000000000000000000000000000