60806040523480156200001157600080fd5b5062000032620000266200094e60201b60201c565b6200095660201b60201c565b6040518060400160405280600781526020017f50575243415348000000000000000000000000000000000000000000000000008152506005908162000078919062000ec7565b506040518060400160405280600481526020017f505752430000000000000000000000000000000000000000000000000000000081525060069081620000bf919062000ec7565b506012600760006101000a81548160ff021916908360ff160217905550620000ec62000a1a60201b60201c565b600a620000fa91906200113e565b6305f5e1006200010b91906200118f565b60048190555033600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550604b6008604051620003b89062001235565b908152602001604051809103902081905550604b6008604051620003dc906200129c565b908152602001604051809103902081905550604b6008604051620004009062001303565b908152602001604051809103902081905550604b600860405162000424906200136a565b90815260200160405180910390208190555062000453606460045462000a3160201b620012d91790919060201c565b600b600001819055506200047a61019060045462000a3160201b620012d91790919060201c565b600b60010181905550620004a161070260045462000a3160201b620012d91790919060201c565b600e60000181905550670de0b6b3a7640000600e6003018190555061012c600e600201819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200055930601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660045462000a4960201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620005a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005cb9190620013eb565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000633573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006599190620013eb565b6040518363ffffffff1660e01b8152600401620006789291906200142e565b6020604051808303816000875af115801562000698573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006be9190620013eb565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016200079f9291906200146c565b6020604051808303816000875af1158015620007bf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007e59190620014d6565b506200081c601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660045462000c1a60201b60201c565b50600160096000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600454600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6004546040516200093f919062001508565b60405180910390a350620016cd565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600760009054906101000a900460ff16905090565b6000818362000a41919062001554565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000abb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ab29062001613565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000b2d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b2490620016ab565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000c0d919062001508565b60405180910390a3505050565b60008062000c2d6200094e60201b60201c565b905062000c4281858562000a4960201b60201c565b600191505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000ccf57607f821691505b60208210810362000ce55762000ce462000c87565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000d4f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000d10565b62000d5b868362000d10565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000da862000da262000d9c8462000d73565b62000d7d565b62000d73565b9050919050565b6000819050919050565b62000dc48362000d87565b62000ddc62000dd38262000daf565b84845462000d1d565b825550505050565b600090565b62000df362000de4565b62000e0081848462000db9565b505050565b5b8181101562000e285762000e1c60008262000de9565b60018101905062000e06565b5050565b601f82111562000e775762000e418162000ceb565b62000e4c8462000d00565b8101602085101562000e5c578190505b62000e7462000e6b8562000d00565b83018262000e05565b50505b505050565b600082821c905092915050565b600062000e9c6000198460080262000e7c565b1980831691505092915050565b600062000eb7838362000e89565b9150826002028217905092915050565b62000ed28262000c4d565b67ffffffffffffffff81111562000eee5762000eed62000c58565b5b62000efa825462000cb6565b62000f0782828562000e2c565b600060209050601f83116001811462000f3f576000841562000f2a578287015190505b62000f36858262000ea9565b86555062000fa6565b601f19841662000f4f8662000ceb565b60005b8281101562000f795784890151825560018201915060208501945060208101905062000f52565b8683101562000f99578489015162000f95601f89168262000e89565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200103c5780860481111562001014576200101362000fae565b5b6001851615620010245780820291505b8081029050620010348562000fdd565b945062000ff4565b94509492505050565b6000826200105757600190506200112a565b816200106757600090506200112a565b81600181146200108057600281146200108b57620010c1565b60019150506200112a565b60ff841115620010a0576200109f62000fae565b5b8360020a915084821115620010ba57620010b962000fae565b5b506200112a565b5060208310610133831016604e8410600b8410161715620010fb5782820a905083811115620010f557620010f462000fae565b5b6200112a565b6200110a848484600162000fea565b9250905081840481111562001124576200112362000fae565b5b81810290505b9392505050565b600060ff82169050919050565b60006200114b8262000d73565b9150620011588362001131565b9250620011877fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462001045565b905092915050565b60006200119c8262000d73565b9150620011a98362000d73565b9250828202620011b98162000d73565b91508282048414831517620011d357620011d262000fae565b5b5092915050565b600081905092915050565b7f6d61726b6574696e674275790000000000000000000000000000000000000000600082015250565b60006200121d600c83620011da565b91506200122a82620011e5565b600c82019050919050565b600062001242826200120e565b9150819050919050565b7f6661726d696e6742757900000000000000000000000000000000000000000000600082015250565b600062001284600a83620011da565b915062001291826200124c565b600a82019050919050565b6000620012a98262001275565b9150819050919050565b7f6d61726b6574696e6753656c6c00000000000000000000000000000000000000600082015250565b6000620012eb600d83620011da565b9150620012f882620012b3565b600d82019050919050565b60006200131082620012dc565b9150819050919050565b7f6661726d696e6753656c6c000000000000000000000000000000000000000000600082015250565b600062001352600b83620011da565b91506200135f826200131a565b600b82019050919050565b6000620013778262001343565b9150819050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620013b38262001386565b9050919050565b620013c581620013a6565b8114620013d157600080fd5b50565b600081519050620013e581620013ba565b92915050565b60006020828403121562001404576200140362001381565b5b60006200141484828501620013d4565b91505092915050565b6200142881620013a6565b82525050565b60006040820190506200144560008301856200141d565b6200145460208301846200141d565b9392505050565b620014668162000d73565b82525050565b60006040820190506200148360008301856200141d565b6200149260208301846200145b565b9392505050565b60008115159050919050565b620014b08162001499565b8114620014bc57600080fd5b50565b600081519050620014d081620014a5565b92915050565b600060208284031215620014ef57620014ee62001381565b5b6000620014ff84828501620014bf565b91505092915050565b60006020820190506200151f60008301846200145b565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620015618262000d73565b91506200156e8362000d73565b92508262001581576200158062001525565b5b828204905092915050565b600082825260208201905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000620015fb6024836200158c565b915062001608826200159d565b604082019050919050565b600060208201905081810360008301526200162e81620015ec565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000620016936022836200158c565b9150620016a08262001635565b604082019050919050565b60006020820190508181036000830152620016c68162001684565b9050919050565b6138b380620016dd6000396000f3fe6080604052600436106101e75760003560e01c80636519aa24116101025780638da5cb5b11610095578063a9059cbb11610064578063a9059cbb146106e3578063bcab75ab14610720578063dd62ed3e14610737578063f2fde38b14610774576101ee565b80638da5cb5b1461062757806395d89b4114610652578063a1883d261461067d578063a457c2d7146106a6576101ee565b8063751039fc116100d1578063751039fc1461058e57806377f59966146105a5578063844cd9e8146105d35780638ce12f0f146105fe576101ee565b80636519aa24146104e357806370a082311461050c578063715018a61461054957806373d0022414610560576101ee565b8063395093511161017a578063526731e611610149578063526731e61461042b57806354f05ed5146104545780636006a9a41461047d57806361b97324146104ba576101ee565b8063395093511461038357806342966c68146103c057806349bd5a5e146103e957806349d3c13514610414576101ee565b80631694505e116101b65780631694505e146102c557806318160ddd146102f057806323b872dd1461031b578063313ce56714610358576101ee565b806303f3d310146101f35780630402a4d21461022057806306fdde031461025d578063095ea7b314610288576101ee565b366101ee57005b600080fd5b3480156101ff57600080fd5b5061020861079d565b6040516102179392919061252d565b60405180910390f35b34801561022c57600080fd5b50610247600480360381019061024291906125c7565b6107cc565b60405161025491906125f4565b60405180910390f35b34801561026957600080fd5b506102726107ec565b60405161027f919061269f565b60405180910390f35b34801561029457600080fd5b506102af60048036038101906102aa91906126ed565b61087e565b6040516102bc91906125f4565b60405180910390f35b3480156102d157600080fd5b506102da6108a1565b6040516102e7919061278c565b60405180910390f35b3480156102fc57600080fd5b506103056108c7565b60405161031291906127a7565b60405180910390f35b34801561032757600080fd5b50610342600480360381019061033d91906127c2565b6108d1565b60405161034f91906125f4565b60405180910390f35b34801561036457600080fd5b5061036d610900565b60405161037a9190612831565b60405180910390f35b34801561038f57600080fd5b506103aa60048036038101906103a591906126ed565b610917565b6040516103b791906125f4565b60405180910390f35b3480156103cc57600080fd5b506103e760048036038101906103e2919061284c565b61094e565b005b3480156103f557600080fd5b506103fe610962565b60405161040b9190612888565b60405180910390f35b34801561042057600080fd5b50610429610988565b005b34801561043757600080fd5b50610452600480360381019061044d919061291f565b6109a1565b005b34801561046057600080fd5b5061047b6004803603810190610476919061298b565b610aa5565b005b34801561048957600080fd5b506104a4600480360381019061049f91906125c7565b610b08565b6040516104b191906125f4565b60405180910390f35b3480156104c657600080fd5b506104e160048036038101906104dc91906129cb565b610b28565b005b3480156104ef57600080fd5b5061050a6004803603810190610505919061284c565b610b5e565b005b34801561051857600080fd5b50610533600480360381019061052e91906125c7565b610da9565b60405161054091906127a7565b60405180910390f35b34801561055557600080fd5b5061055e610df2565b005b34801561056c57600080fd5b50610575610e06565b6040516105859493929190612a32565b60405180910390f35b34801561059a57600080fd5b506105a3610e24565b005b3480156105b157600080fd5b506105ba610e4c565b6040516105ca9493929190612a32565b60405180910390f35b3480156105df57600080fd5b506105e8610ed4565b6040516105f59190612888565b60405180910390f35b34801561060a57600080fd5b506106256004803603810190610620919061298b565b610efa565b005b34801561063357600080fd5b5061063c610f5d565b6040516106499190612888565b60405180910390f35b34801561065e57600080fd5b50610667610f86565b604051610674919061269f565b60405180910390f35b34801561068957600080fd5b506106a4600480360381019061069f91906125c7565b611018565b005b3480156106b257600080fd5b506106cd60048036038101906106c891906126ed565b611064565b6040516106da91906125f4565b60405180910390f35b3480156106ef57600080fd5b5061070a600480360381019061070591906126ed565b6110db565b60405161071791906125f4565b60405180910390f35b34801561072c57600080fd5b506107356110fe565b005b34801561074357600080fd5b5061075e60048036038101906107599190612a77565b6111cf565b60405161076b91906127a7565b60405180910390f35b34801561078057600080fd5b5061079b600480360381019061079691906125c7565b611256565b005b6000806000600b60000154600b60010154600b60020160009054906101000a900460ff16925092509250909192565b60096020528060005260406000206000915054906101000a900460ff1681565b6060600580546107fb90612ae6565b80601f016020809104026020016040519081016040528092919081815260200182805461082790612ae6565b80156108745780601f1061084957610100808354040283529160200191610874565b820191906000526020600020905b81548152906001019060200180831161085757829003601f168201915b5050505050905090565b6000806108896112ef565b90506108968185856112f7565b600191505092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600454905090565b6000806108dc6112ef565b90506108e98582856114c0565b6108f485858561154c565b60019150509392505050565b6000600760009054906101000a900460ff16905090565b6000806109226112ef565b905061094381858561093485896111cf565b61093e9190612b46565b6112f7565b600191505092915050565b61095f6109596112ef565b82611d67565b50565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610990611f1e565b600047905061099e81611f9c565b50565b6109a9611f1e565b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb838373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016109ff9190612888565b602060405180830381865afa158015610a1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a409190612b8f565b6040518363ffffffff1660e01b8152600401610a5d929190612bdd565b6020604051808303816000875af1158015610a7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa09190612c1b565b505050565b610aad611f1e565b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600a6020528060005260406000206000915054906101000a900460ff1681565b610b30611f1e565b83600e6000018190555082600e6001018190555081600e6002018190555080600e6003018190555050505050565b610b66611f1e565b6000600267ffffffffffffffff811115610b8357610b82612c48565b5b604051908082528060200260200182016040528015610bb15781602001602082028036833780820191505090505b5090503081600081518110610bc957610bc8612c77565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c949190612cbb565b81600181518110610ca857610ca7612c77565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050610d0f30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846112f7565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401610d73959493929190612de1565b600060405180830381600087803b158015610d8d57600080fd5b505af1158015610da1573d6000803e3d6000fd5b505050505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610dfa611f1e565b610e046000612008565b565b600e8060000154908060010154908060020154908060030154905084565b610e2c611f1e565b6001600b60020160006101000a81548160ff021916908315150217905550565b6000806000806008604051610e6090612e92565b9081526020016040518091039020546008604051610e7d90612ef3565b9081526020016040518091039020546008604051610e9a90612f54565b9081526020016040518091039020546008604051610eb790612fb5565b908152602001604051809103902054935093509350935090919293565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610f02611f1e565b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060068054610f9590612ae6565b80601f0160208091040260200160405190810160405280929190818152602001828054610fc190612ae6565b801561100e5780601f10610fe35761010080835404028352916020019161100e565b820191906000526020600020905b815481529060010190602001808311610ff157829003601f168201915b5050505050905090565b611020611f1e565b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008061106f6112ef565b9050600061107d82866111cf565b9050838110156110c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b99061303c565b60405180910390fd5b6110cf82868684036112f7565b60019250505092915050565b6000806110e66112ef565b90506110f381858561154c565b600191505092915050565b611106611f1e565b6000600860405161111690612e92565b9081526020016040518091039020819055506000600860405161113890612ef3565b9081526020016040518091039020819055506000600860405161115a90612f54565b9081526020016040518091039020819055506000600860405161117c90612fb5565b9081526020016040518091039020819055507fbd15f91222454d1b865dec8cc9c6f4b629fa59ff68ce2e1230ebf4b870e56c746000806000806040516111c5949392919061305c565b60405180910390a1565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61125e611f1e565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036112cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c490613113565b60405180910390fd5b6112d681612008565b50565b600081836112e79190613162565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611366576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135d90613205565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cc90613297565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516114b391906127a7565b60405180910390a3505050565b60006114cc84846111cf565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146115465781811015611538576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152f90613303565b60405180910390fd5b61154584848484036112f7565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b290613395565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361162a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162190613427565b60405180910390fd5b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156116b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a8906134b9565b60405180910390fd5b600080600060019050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff160361175c5761171986866120cc565b600860405161172790612e92565b9081526020016040518091039020549250600860405161174690612ef3565b90815260200160405180910390205491506117fb565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036117fa576117bb8786612193565b60086040516117c990612f54565b908152602001604051809103902054925060086040516117e890612fb5565b90815260200160405180910390205491505b5b848403600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806118e25750600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156118ec57600090505b80801561199e5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16148061199d5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16145b5b15611ca3576119ab6124df565b6119d26127106119c4868961225a90919063ffffffff16565b6112d990919063ffffffff16565b816000018181525050611a026127106119f4858961225a90919063ffffffff16565b6112d990919063ffffffff16565b8160200181815250506000611a288260200151836000015161227090919063ffffffff16565b9050611a3d818861228690919063ffffffff16565b965080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a8e9190612b46565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611af291906127a7565b60405180910390a36000600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600e6000015481118015611b665750600e60020154600e60010154611b639190612b46565b42115b8015611bbf5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16145b15611c9f576000670de0b6b3a764000061c3504233604051602001611be5929190613542565b6040516020818303038152906040528051906020012060001c611c08919061356e565b611c12919061359f565b9050611c54612710611c466105dc611c3885600e6000015461227090919063ffffffff16565b61225a90919063ffffffff16565b6112d990919063ffffffff16565b821115611c7c57611c7b611c7682600e6000015461227090919063ffffffff16565b61229c565b5b42600e60010181905550600e60030154471115611c9d57611c9c47611f9c565b5b505b5050505b84600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611cf29190612b46565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051611d5691906127a7565b60405180910390a350505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611dd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dcd90613653565b60405180910390fd5b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611e5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e54906136e5565b60405180910390fd5b818103600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611f1191906127a7565b60405180910390a3505050565b611f266112ef565b73ffffffffffffffffffffffffffffffffffffffff16611f44610f5d565b73ffffffffffffffffffffffffffffffffffffffff1614611f9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9190613751565b60405180910390fd5b565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612004573d6000803e3d6000fd5b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60011515600b60020160009054906101000a900460ff1615151480612141575060011515600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b806121505750600b6000015481105b61218f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612186906137bd565b60405180910390fd5b5050565b60011515600b60020160009054906101000a900460ff1615151480612208575060011515600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b806122175750600b6001015481105b612256576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224d90613829565b60405180910390fd5b5050565b60008183612268919061359f565b905092915050565b6000818361227e9190612b46565b905092915050565b600081836122949190613849565b905092915050565b6000600267ffffffffffffffff8111156122b9576122b8612c48565b5b6040519080825280602002602001820160405280156122e75781602001602082028036833780820191505090505b50905030816000815181106122ff576122fe612c77565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ca9190612cbb565b816001815181106123de576123dd612c77565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061244530601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846112f7565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016124a9959493929190612de1565b600060405180830381600087803b1580156124c357600080fd5b505af11580156124d7573d6000803e3d6000fd5b505050505050565b604051806040016040528060008152602001600081525090565b6000819050919050565b61250c816124f9565b82525050565b60008115159050919050565b61252781612512565b82525050565b60006060820190506125426000830186612503565b61254f6020830185612503565b61255c604083018461251e565b949350505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061259482612569565b9050919050565b6125a481612589565b81146125af57600080fd5b50565b6000813590506125c18161259b565b92915050565b6000602082840312156125dd576125dc612564565b5b60006125eb848285016125b2565b91505092915050565b6000602082019050612609600083018461251e565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561264957808201518184015260208101905061262e565b60008484015250505050565b6000601f19601f8301169050919050565b60006126718261260f565b61267b818561261a565b935061268b81856020860161262b565b61269481612655565b840191505092915050565b600060208201905081810360008301526126b98184612666565b905092915050565b6126ca816124f9565b81146126d557600080fd5b50565b6000813590506126e7816126c1565b92915050565b6000806040838503121561270457612703612564565b5b6000612712858286016125b2565b9250506020612723858286016126d8565b9150509250929050565b6000819050919050565b600061275261274d61274884612569565b61272d565b612569565b9050919050565b600061276482612737565b9050919050565b600061277682612759565b9050919050565b6127868161276b565b82525050565b60006020820190506127a1600083018461277d565b92915050565b60006020820190506127bc6000830184612503565b92915050565b6000806000606084860312156127db576127da612564565b5b60006127e9868287016125b2565b93505060206127fa868287016125b2565b925050604061280b868287016126d8565b9150509250925092565b600060ff82169050919050565b61282b81612815565b82525050565b60006020820190506128466000830184612822565b92915050565b60006020828403121561286257612861612564565b5b6000612870848285016126d8565b91505092915050565b61288281612589565b82525050565b600060208201905061289d6000830184612879565b92915050565b60006128ae82612569565b9050919050565b6128be816128a3565b81146128c957600080fd5b50565b6000813590506128db816128b5565b92915050565b60006128ec82612589565b9050919050565b6128fc816128e1565b811461290757600080fd5b50565b600081359050612919816128f3565b92915050565b6000806040838503121561293657612935612564565b5b6000612944858286016128cc565b92505060206129558582860161290a565b9150509250929050565b61296881612512565b811461297357600080fd5b50565b6000813590506129858161295f565b92915050565b600080604083850312156129a2576129a1612564565b5b60006129b0858286016125b2565b92505060206129c185828601612976565b9150509250929050565b600080600080608085870312156129e5576129e4612564565b5b60006129f3878288016126d8565b9450506020612a04878288016126d8565b9350506040612a15878288016126d8565b9250506060612a26878288016126d8565b91505092959194509250565b6000608082019050612a476000830187612503565b612a546020830186612503565b612a616040830185612503565b612a6e6060830184612503565b95945050505050565b60008060408385031215612a8e57612a8d612564565b5b6000612a9c858286016125b2565b9250506020612aad858286016125b2565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612afe57607f821691505b602082108103612b1157612b10612ab7565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612b51826124f9565b9150612b5c836124f9565b9250828201905080821115612b7457612b73612b17565b5b92915050565b600081519050612b89816126c1565b92915050565b600060208284031215612ba557612ba4612564565b5b6000612bb384828501612b7a565b91505092915050565b6000612bc782612759565b9050919050565b612bd781612bbc565b82525050565b6000604082019050612bf26000830185612bce565b612bff6020830184612503565b9392505050565b600081519050612c158161295f565b92915050565b600060208284031215612c3157612c30612564565b5b6000612c3f84828501612c06565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612cb58161259b565b92915050565b600060208284031215612cd157612cd0612564565b5b6000612cdf84828501612ca6565b91505092915050565b6000819050919050565b6000612d0d612d08612d0384612ce8565b61272d565b6124f9565b9050919050565b612d1d81612cf2565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612d5881612589565b82525050565b6000612d6a8383612d4f565b60208301905092915050565b6000602082019050919050565b6000612d8e82612d23565b612d988185612d2e565b9350612da383612d3f565b8060005b83811015612dd4578151612dbb8882612d5e565b9750612dc683612d76565b925050600181019050612da7565b5085935050505092915050565b600060a082019050612df66000830188612503565b612e036020830187612d14565b8181036040830152612e158186612d83565b9050612e246060830185612879565b612e316080830184612503565b9695505050505050565b600081905092915050565b7f6d61726b6574696e674275790000000000000000000000000000000000000000600082015250565b6000612e7c600c83612e3b565b9150612e8782612e46565b600c82019050919050565b6000612e9d82612e6f565b9150819050919050565b7f6661726d696e6742757900000000000000000000000000000000000000000000600082015250565b6000612edd600a83612e3b565b9150612ee882612ea7565b600a82019050919050565b6000612efe82612ed0565b9150819050919050565b7f6d61726b6574696e6753656c6c00000000000000000000000000000000000000600082015250565b6000612f3e600d83612e3b565b9150612f4982612f08565b600d82019050919050565b6000612f5f82612f31565b9150819050919050565b7f6661726d696e6753656c6c000000000000000000000000000000000000000000600082015250565b6000612f9f600b83612e3b565b9150612faa82612f69565b600b82019050919050565b6000612fc082612f92565b9150819050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061302660258361261a565b915061303182612fca565b604082019050919050565b6000602082019050818103600083015261305581613019565b9050919050565b60006080820190506130716000830187612d14565b61307e6020830186612d14565b61308b6040830185612d14565b6130986060830184612d14565b95945050505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006130fd60268361261a565b9150613108826130a1565b604082019050919050565b6000602082019050818103600083015261312c816130f0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061316d826124f9565b9150613178836124f9565b92508261318857613187613133565b5b828204905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006131ef60248361261a565b91506131fa82613193565b604082019050919050565b6000602082019050818103600083015261321e816131e2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061328160228361261a565b915061328c82613225565b604082019050919050565b600060208201905081810360008301526132b081613274565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006132ed601d8361261a565b91506132f8826132b7565b602082019050919050565b6000602082019050818103600083015261331c816132e0565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061337f60258361261a565b915061338a82613323565b604082019050919050565b600060208201905081810360008301526133ae81613372565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061341160238361261a565b915061341c826133b5565b604082019050919050565b6000602082019050818103600083015261344081613404565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006134a360268361261a565b91506134ae82613447565b604082019050919050565b600060208201905081810360008301526134d281613496565b9050919050565b6000819050919050565b6134f46134ef826124f9565b6134d9565b82525050565b60008160601b9050919050565b6000613512826134fa565b9050919050565b600061352482613507565b9050919050565b61353c61353782612589565b613519565b82525050565b600061354e82856134e3565b60208201915061355e828461352b565b6014820191508190509392505050565b6000613579826124f9565b9150613584836124f9565b92508261359457613593613133565b5b828206905092915050565b60006135aa826124f9565b91506135b5836124f9565b92508282026135c3816124f9565b915082820484148315176135da576135d9612b17565b5b5092915050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600061363d60218361261a565b9150613648826135e1565b604082019050919050565b6000602082019050818103600083015261366c81613630565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b60006136cf60228361261a565b91506136da82613673565b604082019050919050565b600060208201905081810360008301526136fe816136c2565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061373b60208361261a565b915061374682613705565b602082019050919050565b6000602082019050818103600083015261376a8161372e565b9050919050565b7f427579207472616e73616374696f6e206c696d69742072656163686564210000600082015250565b60006137a7601e8361261a565b91506137b282613771565b602082019050919050565b600060208201905081810360008301526137d68161379a565b9050919050565b7f53656c6c207472616e73616374696f6e206c696d697420726561636865642100600082015250565b6000613813601f8361261a565b915061381e826137dd565b602082019050919050565b6000602082019050818103600083015261384281613806565b9050919050565b6000613854826124f9565b915061385f836124f9565b925082820390508181111561387757613876612b17565b5b9291505056fea2646970667358221220c7d3b799b7be028b9ee956c5834cd0b9c79df1a426c082a83dd2bcf96a2bd9f964736f6c63430008120033