608060405260016016556040518060600160405280603581526020016200555260359139601790816200003391906200046d565b506040518060600160405280603581526020016200551d60359139601890816200005e91906200046d565b503480156200006c57600080fd5b506040518060400160405280600881526020017f46506574204e66740000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f46504554000000000000000000000000000000000000000000000000000000008152508160009081620000ea91906200046d565b508060019081620000fc91906200046d565b5050506200011f620001136200012560201b60201c565b6200012d60201b60201c565b62000554565b600033905090565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200027557607f821691505b6020821081036200028b576200028a6200022d565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620002f57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620002b6565b620003018683620002b6565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200034e62000348620003428462000319565b62000323565b62000319565b9050919050565b6000819050919050565b6200036a836200032d565b62000382620003798262000355565b848454620002c3565b825550505050565b600090565b620003996200038a565b620003a68184846200035f565b505050565b5b81811015620003ce57620003c26000826200038f565b600181019050620003ac565b5050565b601f8211156200041d57620003e78162000291565b620003f284620002a6565b8101602085101562000402578190505b6200041a6200041185620002a6565b830182620003ab565b50505b505050565b600082821c905092915050565b6000620004426000198460080262000422565b1980831691505092915050565b60006200045d83836200042f565b9150826002028217905092915050565b6200047882620001f3565b67ffffffffffffffff811115620004945762000493620001fe565b5b620004a082546200025c565b620004ad828285620003d2565b600060209050601f831160018114620004e55760008415620004d0578287015190505b620004dc85826200044f565b8655506200054c565b601f198416620004f58662000291565b60005b828110156200051f57848901518255600182019150602085019450602081019050620004f8565b868310156200053f57848901516200053b601f8916826200042f565b8355505b6001600288020188555050505b505050505050565b614fb980620005646000396000f3fe608060405234801561001057600080fd5b50600436106102485760003560e01c80638da5cb5b1161013b578063d1236ffb116100b8578063ec93c1c71161007c578063ec93c1c7146107ab578063ef6f446f146107db578063f12e5bec1461080b578063f2fde38b14610827578063f7be1aae1461084357610248565b8063d1236ffb146106cd578063d5101690146106fd578063dc11a0501461072d578063e43252d71461075f578063e985e9c51461077b57610248565b8063b7ed752a116100ff578063b7ed752a14610617578063b88d4fde14610647578063bebd897914610663578063c0c53b8b14610681578063c87b56dd1461069d57610248565b80638da5cb5b1461055f57806395d89b411461057d57806396bfc2291461059b5780639b19251a146105cb578063a22cb465146105fb57610248565b80634814f035116101c9578063715018a61161018d578063715018a6146104bd57806373e3dd24146104c75780637a82b5be146104e3578063845ddcb2146105135780638ab1d6811461054357610248565b80634814f035146103cd5780635e4808a0146103fd5780636352211e1461042d5780636a6278421461045d57806370a082311461048d57610248565b8063095ea7b311610210578063095ea7b31461032b5780631e83409a1461034757806323b872dd1461037757806339422b381461039357806342842e0e146103b157610248565b806301ffc9a71461024d578063051698c61461027d57806306fdde03146102ad578063081812fc146102cb5780630818951d146102fb575b600080fd5b610267600480360381019061026291906131ff565b61085f565b6040516102749190613247565b60405180910390f35b61029760048036038101906102929190613298565b6108c0565b6040516102a4919061333c565b60405180910390f35b6102b56108e0565b6040516102c291906133e7565b60405180910390f35b6102e560048036038101906102e09190613298565b610972565b6040516102f2919061344a565b60405180910390f35b61031560048036038101906103109190613298565b6109b8565b6040516103229190613474565b60405180910390f35b610345600480360381019061034091906134bb565b610b27565b005b610361600480360381019061035c91906134fb565b610c3e565b60405161036e9190613474565b60405180910390f35b610391600480360381019061038c9190613528565b610f22565b005b61039b6110c0565b6040516103a89190613474565b60405180910390f35b6103cb60048036038101906103c69190613528565b611107565b005b6103e760048036038101906103e291906134fb565b611127565b6040516103f49190613474565b60405180910390f35b610417600480360381019061041291906134fb565b61113f565b6040516104249190613247565b60405180910390f35b61044760048036038101906104429190613298565b61115f565b604051610454919061344a565b60405180910390f35b610477600480360381019061047291906134fb565b6111e5565b6040516104849190613474565b60405180910390f35b6104a760048036038101906104a291906134fb565b61136f565b6040516104b49190613474565b60405180910390f35b6104c5611426565b005b6104e160048036038101906104dc91906135e0565b61143a565b005b6104fd60048036038101906104f89190613298565b61164f565b60405161050a9190613474565b60405180910390f35b61052d60048036038101906105289190613298565b611667565b60405161053a91906136a9565b60405180910390f35b61055d600480360381019061055891906134fb565b611687565b005b6105676116ea565b604051610574919061344a565b60405180910390f35b610585611714565b60405161059291906133e7565b60405180910390f35b6105b560048036038101906105b091906134fb565b6117a6565b6040516105c29190613247565b60405180910390f35b6105e560048036038101906105e091906134fb565b6117fc565b6040516105f29190613247565b60405180910390f35b610615600480360381019061061091906136f0565b61181c565b005b610631600480360381019061062c9190613298565b611832565b60405161063e9190613474565b60405180910390f35b610661600480360381019061065c9190613860565b61184a565b005b61066b6118ac565b6040516106789190613942565b60405180910390f35b61069b6004803603810190610696919061395d565b6118d2565b005b6106b760048036038101906106b29190613298565b6119a2565b6040516106c491906133e7565b60405180910390f35b6106e760048036038101906106e291906134fb565b611a47565b6040516106f49190613474565b60405180910390f35b610717600480360381019061071291906134fb565b611a5f565b6040516107249190613247565b60405180910390f35b61074760048036038101906107429190613298565b611ae2565b604051610756939291906139b0565b60405180910390f35b610779600480360381019061077491906134fb565b611b1c565b005b610795600480360381019061079091906139e7565b611b7f565b6040516107a29190613247565b60405180910390f35b6107c560048036038101906107c09190613298565b611c13565b6040516107d29190613474565b60405180910390f35b6107f560048036038101906107f09190613298565b611c2b565b60405161080291906133e7565b60405180910390f35b61082560048036038101906108209190613a27565b611ccb565b005b610841600480360381019061083c91906134fb565b611da3565b005b61085d60048036038101906108589190613a8e565b611e26565b005b6000634906490660e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108b957506108b882611efe565b5b9050919050565b600e6020528060005260406000206000915054906101000a900460ff1681565b6060600080546108ef90613b10565b80601f016020809104026020016040519081016040528092919081815260200182805461091b90613b10565b80156109685780601f1061093d57610100808354040283529160200191610968565b820191906000526020600020905b81548152906001019060200180831161094b57829003601f168201915b5050505050905090565b600061097d82611fe0565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60008060009050600060016014805490506109d39190613b70565b90505b808211610b1b576000600283836109ed9190613b70565b6109f79190613bd3565b83610a029190613c04565b90508460148281548110610a1957610a18613c38565b5b90600052602060002090600302016000015411610a4457600181610a3d9190613c04565b9250610b15565b8460148281548110610a5957610a58613c38565b5b9060005260206000209060030201600101541115610a8557600181610a7e9190613b70565b9150610b14565b8460148281548110610a9a57610a99613c38565b5b90600052602060002090600302016001015411158015610ade575060148181548110610ac957610ac8613c38565b5b90600052602060002090600302016000015485105b15610b135760148181548110610af757610af6613c38565b5b9060005260206000209060030201600201549350505050610b22565b5b5b506109d6565b6000925050505b919050565b6000610b328261115f565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ba2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9990613cd9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610bc161202b565b73ffffffffffffffffffffffffffffffffffffffff161480610bf05750610bef81610bea61202b565b611b7f565b5b610c2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2690613d6b565b60405180910390fd5b610c398383612033565b505050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc790613dd7565b60405180910390fd5b601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610d5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5490613e43565b60405180910390fd5b610d66826120ec565b90506001601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c726117b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb39190613e9c565b600a610ebf9190613ffc565b6064610ecb9190614047565b856040518563ffffffff1660e01b8152600401610eeb9493929190614089565b600060405180830381600087803b158015610f0557600080fd5b505af1158015610f19573d6000803e3d6000fd5b50505050919050565b8273ffffffffffffffffffffffffffffffffffffffff16610f428261115f565b73ffffffffffffffffffffffffffffffffffffffff1614610f98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8f9061411a565b60405180910390fd5b6000601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061102c838383612168565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634b14e00384846040518363ffffffff1660e01b815260040161108992919061413a565b600060405180830381600087803b1580156110a357600080fd5b505af11580156110b7573d6000803e3d6000fd5b50505050505050565b6000601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905090565b6111228383836040518060200160405280600081525061184a565b505050565b60126020528060005260406000206000915090505481565b60156020528060005260406000206000915054906101000a900460ff1681565b60008061116b836121c8565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d3906141af565b60405180910390fd5b80915050919050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611277576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126e9061421b565b60405180910390fd5b6000601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146112f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f090614287565b60405180910390fd5b611302826120ec565b90506017600f600083815260200190815260200160002090816113259190614474565b5080601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d6906145ce565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61142e612205565b6114386000612283565b565b611442612205565b81819050848490501461148a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114819061463a565b60405180910390fd5b600084849050905060005b6001826114a29190613b70565b811015611577576014604051806060016040528088886001866114c59190613c04565b8181106114d5576114d4613c38565b5b9050602002013581526020018888858181106114f4576114f3613c38565b5b90506020020135815260200186868581811061151357611512613c38565b5b9050602002013581525090806001815401808255809150506001900390600052602060002090600302016000909190919091506000820151816000015560208201518160010155604082015181600201555050806115709061465a565b9050611495565b50601460405180606001604052807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff815260200187876001866115ba9190613b70565b8181106115ca576115c9613c38565b5b90506020020135815260200185856001866115e59190613b70565b8181106115f5576115f4613c38565b5b90506020020135815250908060018154018082558091505060019003906000526020600020906003020160009091909190915060008201518160000155602082015181600101556040820151816002015550505050505050565b60106020528060005260406000206000915090505481565b600b6020528060005260406000206000915054906101000a900460ff1681565b61168f612205565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606001805461172390613b10565b80601f016020809104026020016040519081016040528092919081815260200182805461174f90613b10565b801561179c5780601f106117715761010080835404028352916020019161179c565b820191906000526020600020905b81548152906001019060200180831161177f57829003601f168201915b5050505050905090565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60116020528060005260406000206000915054906101000a900460ff1681565b61182e61182761202b565b8383612349565b5050565b600c6020528060005260406000206000915090505481565b61185b61185561202b565b836124b5565b61189a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189190614714565b60405180910390fd5b6118a68484848461254a565b50505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6118da612205565b82600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6060600f600083815260200190815260200160002080546119c290613b10565b80601f01602080910402602001604051908101604052809291908181526020018280546119ee90613b10565b8015611a3b5780601f10611a1057610100808354040283529160200191611a3b565b820191906000526020600020905b815481529060010190602001808311611a1e57829003601f168201915b50505050509050919050565b60136020528060005260406000206000915090505481565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611acf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac690614780565b60405180910390fd5b6001611ada8361136f565b149050919050565b60148181548110611af257600080fd5b90600052602060002090600302016000915090508060000154908060010154908060020154905083565b611b24612205565b6001601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600d6020528060005260406000206000915090505481565b600f6020528060005260406000206000915090508054611c4a90613b10565b80601f0160208091040260200160405190810160405280929190818152602001828054611c7690613b10565b8015611cc35780601f10611c9857610100808354040283529160200191611cc3565b820191906000526020600020905b815481529060010190602001808311611ca657829003601f168201915b505050505081565b6001601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611d4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d45906147ec565b60405180910390fd5b611d598484846125a6565b80601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505050565b611dab612205565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611e1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e119061487e565b60405180910390fd5b611e2381612283565b50565b6001601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611ea9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea0906147ec565b60405180910390fd5b611eb48383836125a6565b6000601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611fc957507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611fd95750611fd882612669565b5b9050919050565b611fe9816126d3565b612028576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201f906141af565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166120a68361115f565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600060016016541015612134576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212b906148ea565b60405180910390fd5b61214082601654612714565b600060165490506016600081548092919061215a9061465a565b919050555080915050919050565b61217961217361202b565b826124b5565b6121b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121af90614714565b60405180910390fd5b6121c3838383612931565b505050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b61220d61202b565b73ffffffffffffffffffffffffffffffffffffffff1661222b6116ea565b73ffffffffffffffffffffffffffffffffffffffff1614612281576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227890614956565b60405180910390fd5b565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ae906149c2565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516124a89190613247565b60405180910390a3505050565b6000806124c18361115f565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061250357506125028185611b7f565b5b8061254157508373ffffffffffffffffffffffffffffffffffffffff1661252984610972565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b612555848484612931565b61256184848484612c2a565b6125a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259790614a54565b60405180910390fd5b50505050565b6000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050811561261f57836010600083815260200190815260200160002060008282546126139190613c04565b9250508190555061264a565b836010600083815260200190815260200160002060008282546126429190613b70565b925050819055505b61265381612db1565b15612663576126628383612ecc565b5b50505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166126f5836121c8565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612783576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277a90614ac0565b60405180910390fd5b61278c816126d3565b156127cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c390614b2c565b60405180910390fd5b6127da6000838360016130c0565b6127e3816126d3565b15612823576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281a90614b2c565b60405180910390fd5b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461292d6000838360016130c6565b5050565b8273ffffffffffffffffffffffffffffffffffffffff166129518261115f565b73ffffffffffffffffffffffffffffffffffffffff16146129a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299e90614bbe565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a0d90614c50565b60405180910390fd5b612a2383838360016130c0565b8273ffffffffffffffffffffffffffffffffffffffff16612a438261115f565b73ffffffffffffffffffffffffffffffffffffffff1614612a99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9090614bbe565b60405180910390fd5b6004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612c2583838360016130c6565b505050565b6000612c4b8473ffffffffffffffffffffffffffffffffffffffff166130cc565b15612da4578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612c7461202b565b8786866040518563ffffffff1660e01b8152600401612c969493929190614cc5565b6020604051808303816000875af1925050508015612cd257506040513d601f19601f82011682018060405250810190612ccf9190614d26565b60015b612d54573d8060008114612d02576040519150601f19603f3d011682016040523d82523d6000602084013e612d07565b606091505b506000815103612d4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d4390614a54565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612da9565b600190505b949350505050565b600080601060008481526020019081526020016000205490506003811015612dfa576017600f60008581526020019081526020016000209081612df49190614474565b50612e1d565b6018600f60008581526020019081526020016000209081612e1b9190614474565b505b612ec283600f60008681526020019081526020016000208054612e3f90613b10565b80601f0160208091040260200160405190810160405280929190818152602001828054612e6b90613b10565b8015612eb85780601f10612e8d57610100808354040283529160200191612eb8565b820191906000526020600020905b815481529060010190602001808311612e9b57829003601f168201915b50505050506130ef565b6001915050919050565b6001601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612f4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f46906147ec565b60405180910390fd5b601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612fdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fd290614d9f565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fff9d1d83384846040518463ffffffff1660e01b815260040161303a93929190614dbf565b600060405180830381600087803b15801561305457600080fd5b505af1158015613068573d6000803e3d6000fd5b505050503373ffffffffffffffffffffffffffffffffffffffff167f0a474ce738cc8873eb2ed6f1d7dd3f2c24d7c68dbef4dd0e9bce2d0ab261db3c83836040516130b4929190614df6565b60405180910390a25050565b50505050565b50505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6130f8826126d3565b613137576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161312e90614e91565b60405180910390fd5b806006600084815260200190815260200160002090816131579190614eb1565b507ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce7826040516131879190613474565b60405180910390a15050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6131dc816131a7565b81146131e757600080fd5b50565b6000813590506131f9816131d3565b92915050565b6000602082840312156132155761321461319d565b5b6000613223848285016131ea565b91505092915050565b60008115159050919050565b6132418161322c565b82525050565b600060208201905061325c6000830184613238565b92915050565b6000819050919050565b61327581613262565b811461328057600080fd5b50565b6000813590506132928161326c565b92915050565b6000602082840312156132ae576132ad61319d565b5b60006132bc84828501613283565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60038110613305576133046132c5565b5b50565b6000819050613316826132f4565b919050565b600061332682613308565b9050919050565b6133368161331b565b82525050565b6000602082019050613351600083018461332d565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613391578082015181840152602081019050613376565b60008484015250505050565b6000601f19601f8301169050919050565b60006133b982613357565b6133c38185613362565b93506133d3818560208601613373565b6133dc8161339d565b840191505092915050565b6000602082019050818103600083015261340181846133ae565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061343482613409565b9050919050565b61344481613429565b82525050565b600060208201905061345f600083018461343b565b92915050565b61346e81613262565b82525050565b60006020820190506134896000830184613465565b92915050565b61349881613429565b81146134a357600080fd5b50565b6000813590506134b58161348f565b92915050565b600080604083850312156134d2576134d161319d565b5b60006134e0858286016134a6565b92505060206134f185828601613283565b9150509250929050565b6000602082840312156135115761351061319d565b5b600061351f848285016134a6565b91505092915050565b6000806000606084860312156135415761354061319d565b5b600061354f868287016134a6565b9350506020613560868287016134a6565b925050604061357186828701613283565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f8401126135a05761359f61357b565b5b8235905067ffffffffffffffff8111156135bd576135bc613580565b5b6020830191508360208202830111156135d9576135d8613585565b5b9250929050565b600080600080604085870312156135fa576135f961319d565b5b600085013567ffffffffffffffff811115613618576136176131a2565b5b6136248782880161358a565b9450945050602085013567ffffffffffffffff811115613647576136466131a2565b5b6136538782880161358a565b925092505092959194509250565b60068110613672576136716132c5565b5b50565b600081905061368382613661565b919050565b600061369382613675565b9050919050565b6136a381613688565b82525050565b60006020820190506136be600083018461369a565b92915050565b6136cd8161322c565b81146136d857600080fd5b50565b6000813590506136ea816136c4565b92915050565b600080604083850312156137075761370661319d565b5b6000613715858286016134a6565b9250506020613726858286016136db565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61376d8261339d565b810181811067ffffffffffffffff8211171561378c5761378b613735565b5b80604052505050565b600061379f613193565b90506137ab8282613764565b919050565b600067ffffffffffffffff8211156137cb576137ca613735565b5b6137d48261339d565b9050602081019050919050565b82818337600083830152505050565b60006138036137fe846137b0565b613795565b90508281526020810184848401111561381f5761381e613730565b5b61382a8482856137e1565b509392505050565b600082601f8301126138475761384661357b565b5b81356138578482602086016137f0565b91505092915050565b6000806000806080858703121561387a5761387961319d565b5b6000613888878288016134a6565b9450506020613899878288016134a6565b93505060406138aa87828801613283565b925050606085013567ffffffffffffffff8111156138cb576138ca6131a2565b5b6138d787828801613832565b91505092959194509250565b6000819050919050565b60006139086139036138fe84613409565b6138e3565b613409565b9050919050565b600061391a826138ed565b9050919050565b600061392c8261390f565b9050919050565b61393c81613921565b82525050565b60006020820190506139576000830184613933565b92915050565b6000806000606084860312156139765761397561319d565b5b6000613984868287016134a6565b9350506020613995868287016134a6565b92505060406139a6868287016134a6565b9150509250925092565b60006060820190506139c56000830186613465565b6139d26020830185613465565b6139df6040830184613465565b949350505050565b600080604083850312156139fe576139fd61319d565b5b6000613a0c858286016134a6565b9250506020613a1d858286016134a6565b9150509250929050565b60008060008060808587031215613a4157613a4061319d565b5b6000613a4f87828801613283565b9450506020613a6087828801613283565b9350506040613a71878288016136db565b9250506060613a8287828801613283565b91505092959194509250565b600080600060608486031215613aa757613aa661319d565b5b6000613ab586828701613283565b9350506020613ac686828701613283565b9250506040613ad7868287016136db565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613b2857607f821691505b602082108103613b3b57613b3a613ae1565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613b7b82613262565b9150613b8683613262565b9250828203905081811115613b9e57613b9d613b41565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613bde82613262565b9150613be983613262565b925082613bf957613bf8613ba4565b5b828204905092915050565b6000613c0f82613262565b9150613c1a83613262565b9250828201905080821115613c3257613c31613b41565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000613cc3602183613362565b9150613cce82613c67565b604082019050919050565b60006020820190508181036000830152613cf281613cb6565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b6000613d55603d83613362565b9150613d6082613cf9565b604082019050919050565b60006020820190508181036000830152613d8481613d48565b9050919050565b7f6e6f20726967687420746f20636c61696d210000000000000000000000000000600082015250565b6000613dc1601283613362565b9150613dcc82613d8b565b602082019050919050565b60006020820190508181036000830152613df081613db4565b9050919050565b7f686173206265656e20636c61696d656421000000000000000000000000000000600082015250565b6000613e2d601183613362565b9150613e3882613df7565b602082019050919050565b60006020820190508181036000830152613e5c81613e20565b9050919050565b600060ff82169050919050565b613e7981613e63565b8114613e8457600080fd5b50565b600081519050613e9681613e70565b92915050565b600060208284031215613eb257613eb161319d565b5b6000613ec084828501613e87565b91505092915050565b60008160011c9050919050565b6000808291508390505b6001851115613f2057808604811115613efc57613efb613b41565b5b6001851615613f0b5780820291505b8081029050613f1985613ec9565b9450613ee0565b94509492505050565b600082613f395760019050613ff5565b81613f475760009050613ff5565b8160018114613f5d5760028114613f6757613f96565b6001915050613ff5565b60ff841115613f7957613f78613b41565b5b8360020a915084821115613f9057613f8f613b41565b5b50613ff5565b5060208310610133831016604e8410600b8410161715613fcb5782820a905083811115613fc657613fc5613b41565b5b613ff5565b613fd88484846001613ed6565b92509050818404811115613fef57613fee613b41565b5b81810290505b9392505050565b600061400782613262565b915061401283613e63565b925061403f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613f29565b905092915050565b600061405282613262565b915061405d83613262565b925082820261406b81613262565b9150828204841483151761408257614081613b41565b5b5092915050565b600060808201905061409e600083018761343b565b6140ab602083018661343b565b6140b86040830185613465565b6140c56060830184613465565b95945050505050565b7f4e6f7420746865206f776e6572206f6620746865204e46540000000000000000600082015250565b6000614104601883613362565b915061410f826140ce565b602082019050919050565b60006020820190508181036000830152614133816140f7565b9050919050565b600060408201905061414f600083018561343b565b61415c602083018461343b565b9392505050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b6000614199601883613362565b91506141a482614163565b602082019050919050565b600060208201905081810360008301526141c88161418c565b9050919050565b7f6e6f20726967687420746f2063616c6c21000000000000000000000000000000600082015250565b6000614205601183613362565b9150614210826141cf565b602082019050919050565b60006020820190508181036000830152614234816141f8565b9050919050565b7f4164647265737320616c7265616479206f776e7320616e204e46540000000000600082015250565b6000614271601b83613362565b915061427c8261423b565b602082019050919050565b600060208201905081810360008301526142a081614264565b9050919050565b6000815490506142b681613b10565b9050919050565b60008190508160005260206000209050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026143347fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826142f7565b61433e86836142f7565b95508019841693508086168417925050509392505050565b600061437161436c61436784613262565b6138e3565b613262565b9050919050565b6000819050919050565b61438b83614356565b61439f61439782614378565b848454614304565b825550505050565b600090565b6143b46143a7565b6143bf818484614382565b505050565b5b818110156143e3576143d86000826143ac565b6001810190506143c5565b5050565b601f821115614428576143f9816142bd565b614402846142e7565b81016020851015614411578190505b61442561441d856142e7565b8301826143c4565b50505b505050565b600082821c905092915050565b600061444b6000198460080261442d565b1980831691505092915050565b6000614464838361443a565b9150826002028217905092915050565b81810361448257505061455a565b61448b826142a7565b67ffffffffffffffff8111156144a4576144a3613735565b5b6144ae8254613b10565b6144b98282856143e7565b6000601f8311600181146144e857600084156144d6578287015490505b6144e08582614458565b865550614553565b601f1984166144f6876142d2565b9650614501866142bd565b60005b8281101561452957848901548255600182019150600185019450602081019050614504565b868310156145465784890154614542601f89168261443a565b8355505b6001600288020188555050505b5050505050505b565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b60006145b8602983613362565b91506145c38261455c565b604082019050919050565b600060208201905081810360008301526145e7816145ab565b9050919050565b7f4d617070696e67206e6f74206571000000000000000000000000000000000000600082015250565b6000614624600e83613362565b915061462f826145ee565b602082019050919050565b6000602082019050818103600083015261465381614617565b9050919050565b600061466582613262565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361469757614696613b41565b5b600182019050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b60006146fe602d83613362565b9150614709826146a2565b604082019050919050565b6000602082019050818103600083015261472d816146f1565b9050919050565b7f465065744e66743a20696e76616c696420616464726573730000000000000000600082015250565b600061476a601883613362565b915061477582614734565b602082019050919050565b600060208201905081810360008301526147998161475d565b9050919050565b7f4e6f74204d696e74000000000000000000000000000000000000000000000000600082015250565b60006147d6600883613362565b91506147e1826147a0565b602082019050919050565b60006020820190508181036000830152614805816147c9565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614868602683613362565b91506148738261480c565b604082019050919050565b600060208201905081810360008301526148978161485b565b9050919050565b7f746f6b656e496473203c20310000000000000000000000000000000000000000600082015250565b60006148d4600c83613362565b91506148df8261489e565b602082019050919050565b60006020820190508181036000830152614903816148c7565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614940602083613362565b915061494b8261490a565b602082019050919050565b6000602082019050818103600083015261496f81614933565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b60006149ac601983613362565b91506149b782614976565b602082019050919050565b600060208201905081810360008301526149db8161499f565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000614a3e603283613362565b9150614a49826149e2565b604082019050919050565b60006020820190508181036000830152614a6d81614a31565b9050919050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000614aaa602083613362565b9150614ab582614a74565b602082019050919050565b60006020820190508181036000830152614ad981614a9d565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000614b16601c83613362565b9150614b2182614ae0565b602082019050919050565b60006020820190508181036000830152614b4581614b09565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000614ba8602583613362565b9150614bb382614b4c565b604082019050919050565b60006020820190508181036000830152614bd781614b9b565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614c3a602483613362565b9150614c4582614bde565b604082019050919050565b60006020820190508181036000830152614c6981614c2d565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000614c9782614c70565b614ca18185614c7b565b9350614cb1818560208601613373565b614cba8161339d565b840191505092915050565b6000608082019050614cda600083018761343b565b614ce7602083018661343b565b614cf46040830185613465565b8181036060830152614d068184614c8c565b905095945050505050565b600081519050614d20816131d3565b92915050565b600060208284031215614d3c57614d3b61319d565b5b6000614d4a84828501614d11565b91505092915050565b7f4e6f74206f6e205768696c746973740000000000000000000000000000000000600082015250565b6000614d89600f83613362565b9150614d9482614d53565b602082019050919050565b60006020820190508181036000830152614db881614d7c565b9050919050565b6000606082019050614dd4600083018661343b565b614de16020830185613465565b614dee6040830184613238565b949350505050565b6000604082019050614e0b6000830185613465565b614e186020830184613238565b9392505050565b7f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60008201527f6578697374656e7420746f6b656e000000000000000000000000000000000000602082015250565b6000614e7b602e83613362565b9150614e8682614e1f565b604082019050919050565b60006020820190508181036000830152614eaa81614e6e565b9050919050565b614eba82613357565b67ffffffffffffffff811115614ed357614ed2613735565b5b614edd8254613b10565b614ee88282856143e7565b600060209050601f831160018114614f1b5760008415614f09578287015190505b614f138582614458565b865550614f7b565b601f198416614f29866142bd565b60005b82811015614f5157848901518255600182019150602085019450602081019050614f2c565b86831015614f6e5784890151614f6a601f89168261443a565b8355505b6001600288020188555050505b50505050505056fea2646970667358221220e075c1295f7ca3b7be533a22571ed18b66cbf5b9c6446fd2a1c4153fc16e0d5564736f6c63430008140033697066733a2f2f516d5242315a38676b6e6164736a6567616b534a5952553141626d43746272426a7444503851445568464d515154697066733a2f2f516d65546a3735536b56624c444536614c3561794b443833486b554b44647a514b6654733455646f544b32387977