60806040526023600a556023600b556001600c556000600d556000601360156101000a81548160ff0219169083151502179055506000601360166101000a81548160ff0219169083151502179055503480156200005b57600080fd5b506040518060400160405280600581526020017f48796472610000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f48594452410000000000000000000000000000000000000000000000000000008152508160039081620000d991906200087f565b508060049081620000eb91906200087f565b5050506200010e620001026200038260201b60201c565b6200038a60201b60201c565b6000620001206200045060201b60201c565b600a6200012e919062000af6565b633b9aca006200013f919062000b47565b90506103e8600a8262000153919062000b47565b6200015f919062000bc1565b600e819055506103e8600a8262000177919062000b47565b62000183919062000bc1565b600f819055506127106005826200019b919062000b47565b620001a7919062000bc1565b601081905550612710606482620001bf919062000b47565b620001cb919062000bc1565b601181905550620001e16200038260201b60201c565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160066000620002376200045960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200037b6200036e6200038260201b60201c565b826200048360201b60201c565b5062000ce5565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006012905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620004f5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004ec9062000c5a565b60405180910390fd5b6200050960008383620005fb60201b60201c565b80600260008282546200051d919062000c7c565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000574919062000c7c565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620005db919062000cc8565b60405180910390a3620005f7600083836200060060201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200068757607f821691505b6020821081036200069d576200069c6200063f565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620007077fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620006c8565b620007138683620006c8565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620007606200075a62000754846200072b565b62000735565b6200072b565b9050919050565b6000819050919050565b6200077c836200073f565b620007946200078b8262000767565b848454620006d5565b825550505050565b600090565b620007ab6200079c565b620007b881848462000771565b505050565b5b81811015620007e057620007d4600082620007a1565b600181019050620007be565b5050565b601f8211156200082f57620007f981620006a3565b6200080484620006b8565b8101602085101562000814578190505b6200082c6200082385620006b8565b830182620007bd565b50505b505050565b600082821c905092915050565b6000620008546000198460080262000834565b1980831691505092915050565b60006200086f838362000841565b9150826002028217905092915050565b6200088a8262000605565b67ffffffffffffffff811115620008a657620008a562000610565b5b620008b282546200066e565b620008bf828285620007e4565b600060209050601f831160018114620008f75760008415620008e2578287015190505b620008ee858262000861565b8655506200095e565b601f1984166200090786620006a3565b60005b8281101562000931578489015182556001820191506020850194506020810190506200090a565b868310156200095157848901516200094d601f89168262000841565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620009f457808604811115620009cc57620009cb62000966565b5b6001851615620009dc5780820291505b8081029050620009ec8562000995565b9450620009ac565b94509492505050565b60008262000a0f576001905062000ae2565b8162000a1f576000905062000ae2565b816001811462000a38576002811462000a435762000a79565b600191505062000ae2565b60ff84111562000a585762000a5762000966565b5b8360020a91508482111562000a725762000a7162000966565b5b5062000ae2565b5060208310610133831016604e8410600b841016171562000ab35782820a90508381111562000aad5762000aac62000966565b5b62000ae2565b62000ac28484846001620009a2565b9250905081840481111562000adc5762000adb62000966565b5b81810290505b9392505050565b600060ff82169050919050565b600062000b03826200072b565b915062000b108362000ae9565b925062000b3f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620009fd565b905092915050565b600062000b54826200072b565b915062000b61836200072b565b925082820262000b71816200072b565b9150828204841483151762000b8b5762000b8a62000966565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000bce826200072b565b915062000bdb836200072b565b92508262000bee5762000bed62000b92565b5b828204905092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000c42601f8362000bf9565b915062000c4f8262000c0a565b602082019050919050565b6000602082019050818103600083015262000c758162000c33565b9050919050565b600062000c89826200072b565b915062000c96836200072b565b925082820190508082111562000cb15762000cb062000966565b5b92915050565b62000cc2816200072b565b82525050565b600060208201905062000cdf600083018462000cb7565b92915050565b613e6f8062000cf56000396000f3fe60806040526004361061014f5760003560e01c806395d89b41116100b6578063df8408fe1161006f578063df8408fe14610492578063ea1644d5146104bb578063ec28438a146104e4578063efdcd9741461050d578063f2fde38b14610536578063ff6ee23f1461055f57610156565b806395d89b4114610369578063a457c2d714610394578063a9059cbb146103d1578063ae6014801461040e578063c9567bf91461043e578063dd62ed3e1461045557610156565b8063313ce56711610108578063313ce5671461026b578063395093511461029657806370a08231146102d3578063715018a614610310578063751039fc146103275780638da5cb5b1461033e57610156565b80630614117a1461015b57806306fdde0314610172578063095ea7b31461019d5780630b78f9c0146101da57806318160ddd1461020357806323b872dd1461022e57610156565b3661015657005b600080fd5b34801561016757600080fd5b50610170610588565b005b34801561017e57600080fd5b50610187610683565b6040516101949190612ac1565b60405180910390f35b3480156101a957600080fd5b506101c460048036038101906101bf9190612b7c565b610715565b6040516101d19190612bd7565b60405180910390f35b3480156101e657600080fd5b5061020160048036038101906101fc9190612bf2565b610733565b005b34801561020f57600080fd5b50610218610882565b6040516102259190612c41565b60405180910390f35b34801561023a57600080fd5b5061025560048036038101906102509190612c5c565b61088c565b6040516102629190612bd7565b60405180910390f35b34801561027757600080fd5b50610280610984565b60405161028d9190612ccb565b60405180910390f35b3480156102a257600080fd5b506102bd60048036038101906102b89190612b7c565b61098d565b6040516102ca9190612bd7565b60405180910390f35b3480156102df57600080fd5b506102fa60048036038101906102f59190612ce6565b610a39565b6040516103079190612c41565b60405180910390f35b34801561031c57600080fd5b50610325610a81565b005b34801561033357600080fd5b5061033c610b09565b005b34801561034a57600080fd5b50610353610c1f565b6040516103609190612d22565b60405180910390f35b34801561037557600080fd5b5061037e610c49565b60405161038b9190612ac1565b60405180910390f35b3480156103a057600080fd5b506103bb60048036038101906103b69190612b7c565b610cdb565b6040516103c89190612bd7565b60405180910390f35b3480156103dd57600080fd5b506103f860048036038101906103f39190612b7c565b610dc6565b6040516104059190612bd7565b60405180910390f35b34801561041a57600080fd5b50610423610de4565b60405161043596959493929190612d3d565b60405180910390f35b34801561044a57600080fd5b50610453610e13565b005b34801561046157600080fd5b5061047c60048036038101906104779190612d9e565b6113d1565b6040516104899190612c41565b60405180910390f35b34801561049e57600080fd5b506104b960048036038101906104b49190612e0a565b611458565b005b3480156104c757600080fd5b506104e260048036038101906104dd9190612e4a565b611568565b005b3480156104f057600080fd5b5061050b60048036038101906105069190612e4a565b611688565b005b34801561051957600080fd5b50610534600480360381019061052f9190612eb5565b6117a8565b005b34801561054257600080fd5b5061055d60048036038101906105589190612ce6565b61189f565b005b34801561056b57600080fd5b5061058660048036038101906105819190612bf2565b611996565b005b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610618576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060f90612f2e565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610680573d6000803e3d6000fd5b50565b60606003805461069290612f7d565b80601f01602080910402602001604051908101604052809291908181526020018280546106be90612f7d565b801561070b5780601f106106e05761010080835404028352916020019161070b565b820191906000526020600020905b8154815290600101906020018083116106ee57829003601f168201915b5050505050905090565b6000610729610722611a9b565b8484611aa3565b6001905092915050565b61073b611a9b565b73ffffffffffffffffffffffffffffffffffffffff16610759610c1f565b73ffffffffffffffffffffffffffffffffffffffff16146107af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a690612ffa565b60405180910390fd5b60328211156107f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ea90613066565b60405180910390fd5b6032811115610837576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082e906130d2565b60405180910390fd5b81600a8190555080600b819055507f5c6323bf1c2d7aaea2c091a4751c1c87af7f2864650c336507a77d0557af37a182826040516108769291906130f2565b60405180910390a15050565b6000600254905090565b6000610899848484611c6c565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108e4611a9b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610964576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095b9061318d565b60405180910390fd5b61097885610970611a9b565b858403611aa3565b60019150509392505050565b60006012905090565b6000610a2f61099a611a9b565b8484600160006109a8611a9b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610a2a91906131dc565b611aa3565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610a89611a9b565b73ffffffffffffffffffffffffffffffffffffffff16610aa7610c1f565b73ffffffffffffffffffffffffffffffffffffffff1614610afd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af490612ffa565b60405180910390fd5b610b07600061233f565b565b610b11611a9b565b73ffffffffffffffffffffffffffffffffffffffff16610b2f610c1f565b73ffffffffffffffffffffffffffffffffffffffff1614610b85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7c90612ffa565b60405180910390fd5b610b8d610882565b600e81905550610b9b610882565b600f819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf610bca610882565b604051610bd79190612c41565b60405180910390a17f4b39c36d20c57d220f61fd25c4349d4435cc03ef6c2a680942f15333c3c3e001610c08610882565b604051610c159190612c41565b60405180910390a1565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610c5890612f7d565b80601f0160208091040260200160405190810160405280929190818152602001828054610c8490612f7d565b8015610cd15780601f10610ca657610100808354040283529160200191610cd1565b820191906000526020600020905b815481529060010190602001808311610cb457829003601f168201915b5050505050905090565b60008060016000610cea611a9b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610da7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9e90613282565b60405180910390fd5b610dbb610db2611a9b565b85858403611aa3565b600191505092915050565b6000610dda610dd3611a9b565b8484611c6c565b6001905092915050565b600080600080600080600a54600b54600e54600f54601054601154955095509550955095509550909192939495565b610e1b611a9b565b73ffffffffffffffffffffffffffffffffffffffff16610e39610c1f565b73ffffffffffffffffffffffffffffffffffffffff1614610e8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8690612ffa565b60405180910390fd5b601360149054906101000a900460ff1615610edf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed6906132ee565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610f6830601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f63610882565b611aa3565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff99190613323565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611082573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a69190613323565b6040518363ffffffff1660e01b81526004016110c3929190613350565b6020604051808303816000875af11580156110e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111069190613323565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061118f30610a39565b60008061119a610c1f565b426040518863ffffffff1660e01b81526004016111bc969594939291906133be565b60606040518083038185885af11580156111da573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906111ff9190613434565b505050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016112a1929190613487565b6020604051808303816000875af11580156112c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e491906134c5565b506001601360166101000a81548160ff0219169083151502179055506001601360146101000a81548160ff0219169083151502179055504360088190555043600960006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fea4359d5c4b8f0945a64ab9c37fe830b3407d45e0e6e6f84275977a570457d6f60405160405180910390a1565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611460611a9b565b73ffffffffffffffffffffffffffffffffffffffff1661147e610c1f565b73ffffffffffffffffffffffffffffffffffffffff16146114d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cb90612ffa565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f2d43abd87b27cee7b0aa8c6f7e0b4a3247b683262a83cbc2318b0df398a49aa9828260405161155c9291906134f2565b60405180910390a15050565b611570611a9b565b73ffffffffffffffffffffffffffffffffffffffff1661158e610c1f565b73ffffffffffffffffffffffffffffffffffffffff16146115e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115db90612ffa565b60405180910390fd5b6001811015611628576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161f9061358d565b60405180910390fd5b6103e881611634610882565b61163e91906135ad565b611648919061361e565b600f819055507f4b39c36d20c57d220f61fd25c4349d4435cc03ef6c2a680942f15333c3c3e0018160405161167d9190612c41565b60405180910390a150565b611690611a9b565b73ffffffffffffffffffffffffffffffffffffffff166116ae610c1f565b73ffffffffffffffffffffffffffffffffffffffff1614611704576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fb90612ffa565b60405180910390fd5b6001811015611748576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173f9061369b565b60405180910390fd5b6103e881611754610882565b61175e91906135ad565b611768919061361e565b600e819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf8160405161179d9190612c41565b60405180910390a150565b6117b0611a9b565b73ffffffffffffffffffffffffffffffffffffffff166117ce610c1f565b73ffffffffffffffffffffffffffffffffffffffff1614611824576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181b90612ffa565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f27aae5db36d94179909d019ae0b1ac7c16d96d953148f63c0f6a0a9c8ead79ee816040516118949190613710565b60405180910390a150565b6118a7611a9b565b73ffffffffffffffffffffffffffffffffffffffff166118c5610c1f565b73ffffffffffffffffffffffffffffffffffffffff161461191b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191290612ffa565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361198a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119819061379d565b60405180910390fd5b6119938161233f565b50565b61199e611a9b565b73ffffffffffffffffffffffffffffffffffffffff166119bc610c1f565b73ffffffffffffffffffffffffffffffffffffffff1614611a12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0990612ffa565b60405180910390fd5b61271082611a1e610882565b611a2891906135ad565b611a32919061361e565b60108190555061271081611a44610882565b611a4e91906135ad565b611a58919061361e565b6011819055507f2b3f4c022d9943b151090e389857495bb9d8493714259cc19a540f5a11475fb18282604051611a8f9291906130f2565b60405180910390a15050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b099061382f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b78906138c1565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c5f9190612c41565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd290613953565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d41906139e5565b60405180910390fd5b60008111611d8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8490613a77565b60405180910390fd5b6000611d97610c1f565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611e055750611dd5610c1f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611e1e5750601360159054906101000a900460ff16155b1561230757611e4b6064611e3d600a548561240590919063ffffffff16565b61241b90919063ffffffff16565b9050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611ef85750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611f4e5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561203357600e54821115611f98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8f90613ae3565b60405180910390fd5b600f5482611fa585610a39565b611faf91906131dc565b1115611ff0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe790613b4f565b60405180910390fd5b43600360085461200091906131dc565b111561201a5761200f83612431565b1561201957600080fd5b5b600d600081548092919061202d90613b6f565b91905055505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156120db5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561213957600f54826120ed85610a39565b6120f791906131dc565b1115612138576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212f90613b4f565b60405180910390fd5b5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156121c257503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156121f2576121ef60646121e1600b548561240590919063ffffffff16565b61241b90919063ffffffff16565b90505b60006121fd30610a39565b9050601360159054906101000a900460ff161580156122695750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156122815750601360169054906101000a900460ff165b801561228e575060105481115b801561229d5750600c54600d54115b80156122d357504367ffffffffffffffff16600960009054906101000a900467ffffffffffffffff1667ffffffffffffffff1614155b15612305576122ec6122e782601154612444565b61245d565b60004790506000811115612303576123026126ff565b5b505b505b600081111561231c5761231b843083612792565b5b61233984846123348486612a1190919063ffffffff16565b612792565b50505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000818361241391906135ad565b905092915050565b60008183612429919061361e565b905092915050565b600080823b905060008111915050919050565b60008183116124535782612455565b815b905092915050565b6001601360156101000a81548160ff02191690831515021790555043600960006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600267ffffffffffffffff8111156124be576124bd613bb7565b5b6040519080825280602002602001820160405280156124ec5781602001602082028036833780820191505090505b509050308160008151811061250457612503613be6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125cf9190613323565b816001815181106125e3576125e2613be6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061264a30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611aa3565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016126ae959493929190613cd3565b600060405180830381600087803b1580156126c857600080fd5b505af11580156126dc573d6000803e3d6000fd5b50505050506000601360156101000a81548160ff02191690831515021790555050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161274790613d5e565b60006040518083038185875af1925050503d8060008114612784576040519150601f19603f3d011682016040523d82523d6000602084013e612789565b606091505b50508091505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612801576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f890613953565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612870576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612867906139e5565b60405180910390fd5b61287b838383612a27565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612901576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f890613de5565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461299491906131dc565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516129f89190612c41565b60405180910390a3612a0b848484612a2c565b50505050565b60008183612a1f9190613e05565b905092915050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612a6b578082015181840152602081019050612a50565b60008484015250505050565b6000601f19601f8301169050919050565b6000612a9382612a31565b612a9d8185612a3c565b9350612aad818560208601612a4d565b612ab681612a77565b840191505092915050565b60006020820190508181036000830152612adb8184612a88565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b1382612ae8565b9050919050565b612b2381612b08565b8114612b2e57600080fd5b50565b600081359050612b4081612b1a565b92915050565b6000819050919050565b612b5981612b46565b8114612b6457600080fd5b50565b600081359050612b7681612b50565b92915050565b60008060408385031215612b9357612b92612ae3565b5b6000612ba185828601612b31565b9250506020612bb285828601612b67565b9150509250929050565b60008115159050919050565b612bd181612bbc565b82525050565b6000602082019050612bec6000830184612bc8565b92915050565b60008060408385031215612c0957612c08612ae3565b5b6000612c1785828601612b67565b9250506020612c2885828601612b67565b9150509250929050565b612c3b81612b46565b82525050565b6000602082019050612c566000830184612c32565b92915050565b600080600060608486031215612c7557612c74612ae3565b5b6000612c8386828701612b31565b9350506020612c9486828701612b31565b9250506040612ca586828701612b67565b9150509250925092565b600060ff82169050919050565b612cc581612caf565b82525050565b6000602082019050612ce06000830184612cbc565b92915050565b600060208284031215612cfc57612cfb612ae3565b5b6000612d0a84828501612b31565b91505092915050565b612d1c81612b08565b82525050565b6000602082019050612d376000830184612d13565b92915050565b600060c082019050612d526000830189612c32565b612d5f6020830188612c32565b612d6c6040830187612c32565b612d796060830186612c32565b612d866080830185612c32565b612d9360a0830184612c32565b979650505050505050565b60008060408385031215612db557612db4612ae3565b5b6000612dc385828601612b31565b9250506020612dd485828601612b31565b9150509250929050565b612de781612bbc565b8114612df257600080fd5b50565b600081359050612e0481612dde565b92915050565b60008060408385031215612e2157612e20612ae3565b5b6000612e2f85828601612b31565b9250506020612e4085828601612df5565b9150509250929050565b600060208284031215612e6057612e5f612ae3565b5b6000612e6e84828501612b67565b91505092915050565b6000612e8282612ae8565b9050919050565b612e9281612e77565b8114612e9d57600080fd5b50565b600081359050612eaf81612e89565b92915050565b600060208284031215612ecb57612eca612ae3565b5b6000612ed984828501612ea0565b91505092915050565b7f4f6e6c7920666565207265636569766572207061697220747269676765720000600082015250565b6000612f18601e83612a3c565b9150612f2382612ee2565b602082019050919050565b60006020820190508181036000830152612f4781612f0b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612f9557607f821691505b602082108103612fa857612fa7612f4e565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612fe4602083612a3c565b9150612fef82612fae565b602082019050919050565b6000602082019050818103600083015261301381612fd7565b9050919050565b7f496e76616c696420627579207461782076616c75650000000000000000000000600082015250565b6000613050601583612a3c565b915061305b8261301a565b602082019050919050565b6000602082019050818103600083015261307f81613043565b9050919050565b7f496e76616c69642073656c6c207461782076616c756500000000000000000000600082015250565b60006130bc601683612a3c565b91506130c782613086565b602082019050919050565b600060208201905081810360008301526130eb816130af565b9050919050565b60006040820190506131076000830185612c32565b6131146020830184612c32565b9392505050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613177602883612a3c565b91506131828261311b565b604082019050919050565b600060208201905081810360008301526131a68161316a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006131e782612b46565b91506131f283612b46565b925082820190508082111561320a576132096131ad565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061326c602583612a3c565b915061327782613210565b604082019050919050565b6000602082019050818103600083015261329b8161325f565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b60006132d8601783612a3c565b91506132e3826132a2565b602082019050919050565b60006020820190508181036000830152613307816132cb565b9050919050565b60008151905061331d81612b1a565b92915050565b60006020828403121561333957613338612ae3565b5b60006133478482850161330e565b91505092915050565b60006040820190506133656000830185612d13565b6133726020830184612d13565b9392505050565b6000819050919050565b6000819050919050565b60006133a86133a361339e84613379565b613383565b612b46565b9050919050565b6133b88161338d565b82525050565b600060c0820190506133d36000830189612d13565b6133e06020830188612c32565b6133ed60408301876133af565b6133fa60608301866133af565b6134076080830185612d13565b61341460a0830184612c32565b979650505050505050565b60008151905061342e81612b50565b92915050565b60008060006060848603121561344d5761344c612ae3565b5b600061345b8682870161341f565b935050602061346c8682870161341f565b925050604061347d8682870161341f565b9150509250925092565b600060408201905061349c6000830185612d13565b6134a96020830184612c32565b9392505050565b6000815190506134bf81612dde565b92915050565b6000602082840312156134db576134da612ae3565b5b60006134e9848285016134b0565b91505092915050565b60006040820190506135076000830185612d13565b6135146020830184612bc8565b9392505050565b7f4d61782077616c6c65742063616e74206265206c6f776572207468616e20302e60008201527f3125000000000000000000000000000000000000000000000000000000000000602082015250565b6000613577602283612a3c565b91506135828261351b565b604082019050919050565b600060208201905081810360008301526135a68161356a565b9050919050565b60006135b882612b46565b91506135c383612b46565b92508282026135d181612b46565b915082820484148315176135e8576135e76131ad565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061362982612b46565b915061363483612b46565b925082613644576136436135ef565b5b828204905092915050565b7f4d61782074782063616e74206265206c6f776572207468616e20302e31250000600082015250565b6000613685601e83612a3c565b91506136908261364f565b602082019050919050565b600060208201905081810360008301526136b481613678565b9050919050565b60006136d66136d16136cc84612ae8565b613383565b612ae8565b9050919050565b60006136e8826136bb565b9050919050565b60006136fa826136dd565b9050919050565b61370a816136ef565b82525050565b60006020820190506137256000830184613701565b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613787602683612a3c565b91506137928261372b565b604082019050919050565b600060208201905081810360008301526137b68161377a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613819602483612a3c565b9150613824826137bd565b604082019050919050565b600060208201905081810360008301526138488161380c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006138ab602283612a3c565b91506138b68261384f565b604082019050919050565b600060208201905081810360008301526138da8161389e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061393d602583612a3c565b9150613948826138e1565b604082019050919050565b6000602082019050818103600083015261396c81613930565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006139cf602383612a3c565b91506139da82613973565b604082019050919050565b600060208201905081810360008301526139fe816139c2565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613a61602983612a3c565b9150613a6c82613a05565b604082019050919050565b60006020820190508181036000830152613a9081613a54565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b6000613acd601983612a3c565b9150613ad882613a97565b602082019050919050565b60006020820190508181036000830152613afc81613ac0565b9050919050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b6000613b39601a83612a3c565b9150613b4482613b03565b602082019050919050565b60006020820190508181036000830152613b6881613b2c565b9050919050565b6000613b7a82612b46565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613bac57613bab6131ad565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613c4a81612b08565b82525050565b6000613c5c8383613c41565b60208301905092915050565b6000602082019050919050565b6000613c8082613c15565b613c8a8185613c20565b9350613c9583613c31565b8060005b83811015613cc6578151613cad8882613c50565b9750613cb883613c68565b925050600181019050613c99565b5085935050505092915050565b600060a082019050613ce86000830188612c32565b613cf560208301876133af565b8181036040830152613d078186613c75565b9050613d166060830185612d13565b613d236080830184612c32565b9695505050505050565b600081905092915050565b50565b6000613d48600083613d2d565b9150613d5382613d38565b600082019050919050565b6000613d6982613d3b565b9150819050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613dcf602683612a3c565b9150613dda82613d73565b604082019050919050565b60006020820190508181036000830152613dfe81613dc2565b9050919050565b6000613e1082612b46565b9150613e1b83612b46565b9250828203905081811115613e3357613e326131ad565b5b9291505056fea264697066735822122060452dd6114b87ead979296263e1d69f89b8ef8ac684038c5702650187fbb9dc64736f6c63430008130033