60806040526040518060400160405280600481526020017f57454233000000000000000000000000000000000000000000000000000000008152505f908162000049919062000546565b506040518060400160405280600481526020017f57454233000000000000000000000000000000000000000000000000000000008152506001908162000090919062000546565b506b033b2e3c91efc989409c0000600255601260035f6101000a81548160ff021916908360ff1602179055505f6009555f600a555f600b5f6101000a81548160ff0219169083151502179055505f600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff0219169083151502179055503480156200011e575f80fd5b5060405162003fea38038062003fea8339818101604052810190620001449190620006be565b3360065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060088190555060025460045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506001600c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600c5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550505062000703565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200035e57607f821691505b60208210810362000374576200037362000319565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620003d87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200039b565b620003e486836200039b565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6200042e620004286200042284620003fc565b62000405565b620003fc565b9050919050565b5f819050919050565b62000449836200040e565b62000461620004588262000435565b848454620003a7565b825550505050565b5f90565b6200047762000469565b620004848184846200043e565b505050565b5b81811015620004ab576200049f5f826200046d565b6001810190506200048a565b5050565b601f821115620004fa57620004c4816200037a565b620004cf846200038c565b81016020851015620004df578190505b620004f7620004ee856200038c565b83018262000489565b50505b505050565b5f82821c905092915050565b5f6200051c5f1984600802620004ff565b1980831691505092915050565b5f6200053683836200050b565b9150826002028217905092915050565b6200055182620002e2565b67ffffffffffffffff8111156200056d576200056c620002ec565b5b62000579825462000346565b62000586828285620004af565b5f60209050601f831160018114620005bc575f8415620005a7578287015190505b620005b3858262000529565b86555062000622565b601f198416620005cc866200037a565b5f5b82811015620005f557848901518255600182019150602085019450602081019050620005ce565b8683101562000615578489015162000611601f8916826200050b565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000659826200062e565b9050919050565b6200066b816200064d565b811462000676575f80fd5b50565b5f81519050620006898162000660565b92915050565b6200069a81620003fc565b8114620006a5575f80fd5b50565b5f81519050620006b8816200068f565b92915050565b5f8060408385031215620006d757620006d66200062a565b5b5f620006e68582860162000679565b9250506020620006f985828601620006a8565b9150509250929050565b6138d980620007115f395ff3fe60806040526004361061014a575f3560e01c806370a08231116100b5578063a9059cbb1161006e578063a9059cbb14610454578063b390c0ab14610490578063c31c9c07146104b8578063dd62ed3e146104e2578063e4849b321461051e578063f2fde38b146105465761014a565b806370a082311461037a578063715018a6146103b65780638da5cb5b146103cc57806395d89b41146103f6578063a64e4f8a14610420578063a6f2ae3a1461044a5761014a565b80632b14ca56116101075780632b14ca561461026c578063313ce567146102965780633f4218e0146102c057806347062402146102fc57806347b5dd541461032657806364bcf5f4146103505761014a565b8063036978631461014e57806306fdde0314610176578063095ea7b3146101a057806318160ddd146101dc57806323b872dd1461020657806325e0e4d014610242575b5f80fd5b348015610159575f80fd5b50610174600480360381019061016f9190612d53565b61056e565b005b348015610181575f80fd5b5061018a6105bf565b6040516101979190612e08565b60405180910390f35b3480156101ab575f80fd5b506101c660048036038101906101c19190612e82565b61064a565b6040516101d39190612eda565b60405180910390f35b3480156101e7575f80fd5b506101f0610737565b6040516101fd9190612f02565b60405180910390f35b348015610211575f80fd5b5061022c60048036038101906102279190612f1b565b61073d565b6040516102399190612eda565b60405180910390f35b34801561024d575f80fd5b50610256611289565b6040516102639190612eda565b60405180910390f35b348015610277575f80fd5b5061028061129b565b60405161028d9190612f02565b60405180910390f35b3480156102a1575f80fd5b506102aa6112a1565b6040516102b79190612f86565b60405180910390f35b3480156102cb575f80fd5b506102e660048036038101906102e19190612f9f565b6112b3565b6040516102f39190612eda565b60405180910390f35b348015610307575f80fd5b506103106112d0565b60405161031d9190612f02565b60405180910390f35b348015610331575f80fd5b5061033a6112d6565b6040516103479190612f02565b60405180910390f35b34801561035b575f80fd5b506103646112dc565b6040516103719190612eda565b60405180910390f35b348015610385575f80fd5b506103a0600480360381019061039b9190612f9f565b6112ef565b6040516103ad9190612f02565b60405180910390f35b3480156103c1575f80fd5b506103ca611304565b005b3480156103d7575f80fd5b506103e0611450565b6040516103ed9190612fd9565b60405180910390f35b348015610401575f80fd5b5061040a611475565b6040516104179190612e08565b60405180910390f35b34801561042b575f80fd5b50610434611501565b6040516104419190612eda565b60405180910390f35b610452611514565b005b34801561045f575f80fd5b5061047a60048036038101906104759190612e82565b611b57565b6040516104879190612eda565b60405180910390f35b34801561049b575f80fd5b506104b660048036038101906104b19190612ff2565b611f5f565b005b3480156104c3575f80fd5b506104cc612135565b6040516104d99190612fd9565b60405180910390f35b3480156104ed575f80fd5b5061050860048036038101906105039190613030565b61215a565b6040516105159190612f02565b60405180910390f35b348015610529575f80fd5b50610544600480360381019061053f9190612d53565b61217a565b005b348015610551575f80fd5b5061056c60048036038101906105679190612f9f565b6129de565b005b3373ffffffffffffffffffffffffffffffffffffffff167fb6e8f04cf03b5aef7f64b05be34717ced7ad18d9e25d848dcd9542d070ce2ddb826040516105b49190612f02565b60405180910390a250565b5f80546105cb9061309b565b80601f01602080910402602001604051908101604052809291908181526020018280546105f79061309b565b80156106425780601f1061061957610100808354040283529160200191610642565b820191905f5260205f20905b81548152906001019060200180831161062557829003601f168201915b505050505081565b5f8160055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516107259190612f02565b60405180910390a36001905092915050565b60025481565b5f83600b60029054906101000a900460ff16806107a05750600c5f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806107cf5750600b5f9054906101000a900460ff161580156107ce5750600b60019054906101000a900460ff165b5b806108905750600b5f9054906101000a900460ff1680156108365750600c5f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b801561088f575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b5b806108f4575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480156108f357505f600a54145b5b610933576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092a90613115565b60405180910390fd5b8260045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156109b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109aa9061317d565b60405180910390fd5b8260055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610a6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a65906131e5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610adc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad39061324d565b60405180910390fd5b5f80849050600b60019054906101000a900460ff168015610afe57505f600a54115b8015610b57575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b8015610baa5750600c5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15610bef57610bd76064610bc9600a5488612b9990919063ffffffff16565b612c1090919063ffffffff16565b9150610bec8286612c6790919063ffffffff16565b90505b610c3f8560045f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612c6790919063ffffffff16565b60045f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550610cd08160045f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612cbf90919063ffffffff16565b60045f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610d6e9190612f02565b60405180910390a35f821115610fbd575f735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f90508073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1603610ec457610e198360045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612cbf90919063ffffffff16565b60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610eb79190612f02565b60405180910390a3610fbb565b610f148360045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612cbf90919063ffffffff16565b60045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610fb29190612f02565b60405180910390a35b505b3373ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161415801561109157507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60055f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205414155b1561127b576111218560055f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612c6790919063ffffffff16565b60055f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560055f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546040516112729190612f02565b60405180910390a35b600193505050509392505050565b600b5f9054906101000a900460ff1681565b600a5481565b60035f9054906101000a900460ff1681565b600c602052805f5260405f205f915054906101000a900460ff1681565b60095481565b60085481565b600b60029054906101000a900460ff1681565b6004602052805f5260405f205f915090505481565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611393576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138a906132b5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600180546114829061309b565b80601f01602080910402602001604051908101604052809291908181526020018280546114ae9061309b565b80156114f95780601f106114d0576101008083540402835291602001916114f9565b820191905f5260205f20905b8154815290600101906020018083116114dc57829003601f168201915b505050505081565b600b60019054906101000a900460ff1681565b33600b60029054906101000a900460ff16806115765750600c5f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806115a55750600b5f9054906101000a900460ff161580156115a45750600b60019054906101000a900460ff165b5b806116665750600b5f9054906101000a900460ff16801561160c5750600c5f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015611665575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b5b806116ca575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480156116c957505f600a54145b5b611709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170090613115565b60405180910390fd5b5f341161174b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117429061331d565b60405180910390fd5b5f3490505f60095411156119f9575f611782606461177460095485612b9990919063ffffffff16565b612c1090919063ffffffff16565b90505f6117988284612c6790919063ffffffff16565b905061180b8160045f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612cbf90919063ffffffff16565b60045f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516118eb9190612f02565b60405180910390a35f8211156119f25761194b8260045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612cbf90919063ffffffff16565b60045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516119e99190612f02565b60405180910390a35b5050611b53565b611a6a8160045f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612cbf90919063ffffffff16565b60045f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611b4a9190612f02565b60405180910390a35b5050565b5f33600b60029054906101000a900460ff1680611bba5750600c5f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611be95750600b5f9054906101000a900460ff16158015611be85750600b60019054906101000a900460ff165b5b80611caa5750600b5f9054906101000a900460ff168015611c505750600c5f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015611ca9575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b5b80611d0e575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16148015611d0d57505f600a54145b5b611d4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4490613115565b60405180910390fd5b8260045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015611d96575f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611dcd575f80fd5b611e1d8360045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612c6790919063ffffffff16565b60045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611eae8360045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612cbf90919063ffffffff16565b60045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611f4c9190612f02565b60405180910390a3600191505092915050565b730bde71b005e30129b7cf6852bfd9741d31dd1d2873ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611fe1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd890613385565b60405180910390fd5b600b5f9054906101000a900460ff1615612030576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612027906133ed565b60405180910390fd5b5f8214612072576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206990613455565b60405180910390fd5b606381146120b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ac906134bd565b60405180910390fd5b8160098190555080600a819055506001600b5f6101000a81548160ff0219169083151502179055506001600b60016101000a81548160ff0219169083151502179055507f5c6323bf1c2d7aaea2c091a4751c1c87af7f2864650c336507a77d0557af37a182826040516121299291906134db565b60405180910390a15050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6005602052815f5260405f20602052805f5260405f205f91509150505481565b33600b60029054906101000a900460ff16806121dc5750600c5f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8061220b5750600b5f9054906101000a900460ff1615801561220a5750600b60019054906101000a900460ff165b5b806122cc5750600b5f9054906101000a900460ff1680156122725750600c5f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156122cb575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b5b80612330575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614801561232f57505f600a54145b5b61236f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236690613115565b60405180910390fd5b8160045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156123ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e69061354c565b60405180910390fd5b600b60019054906101000a900460ff16156127ef575f808390505f600a54118015612467575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b80156124ba5750600c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156124ff576124e760646124d9600a5487612b9990919063ffffffff16565b612c1090919063ffffffff16565b91506124fc8285612c6790919063ffffffff16565b90505b61254f8460045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612c6790919063ffffffff16565b60045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506126018160045f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612cbf90919063ffffffff16565b60045f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516126e19190612f02565b60405180910390a35f8211156127e8576127418260045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612cbf90919063ffffffff16565b60045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516127df9190612f02565b60405180910390a35b50506129da565b61283f8260045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612c6790919063ffffffff16565b60045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506128f18260045f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612cbf90919063ffffffff16565b60045f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516129d19190612f02565b60405180910390a35b5050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612a6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a64906132b5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612adb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ad2906135b4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f808303612ba9575f9050612c0a565b5f8284612bb691906135ff565b9050828482612bc5919061366d565b14612c05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bfc906136e7565b60405180910390fd5b809150505b92915050565b5f808211612c53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4a9061374f565b60405180910390fd5b8183612c5f919061366d565b905092915050565b5f82821115612cab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ca2906137b7565b60405180910390fd5b8183612cb791906137d5565b905092915050565b5f808284612ccd9190613808565b905083811015612d12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d0990613885565b60405180910390fd5b8091505092915050565b5f80fd5b5f819050919050565b612d3281612d20565b8114612d3c575f80fd5b50565b5f81359050612d4d81612d29565b92915050565b5f60208284031215612d6857612d67612d1c565b5b5f612d7584828501612d3f565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612db5578082015181840152602081019050612d9a565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612dda82612d7e565b612de48185612d88565b9350612df4818560208601612d98565b612dfd81612dc0565b840191505092915050565b5f6020820190508181035f830152612e208184612dd0565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612e5182612e28565b9050919050565b612e6181612e47565b8114612e6b575f80fd5b50565b5f81359050612e7c81612e58565b92915050565b5f8060408385031215612e9857612e97612d1c565b5b5f612ea585828601612e6e565b9250506020612eb685828601612d3f565b9150509250929050565b5f8115159050919050565b612ed481612ec0565b82525050565b5f602082019050612eed5f830184612ecb565b92915050565b612efc81612d20565b82525050565b5f602082019050612f155f830184612ef3565b92915050565b5f805f60608486031215612f3257612f31612d1c565b5b5f612f3f86828701612e6e565b9350506020612f5086828701612e6e565b9250506040612f6186828701612d3f565b9150509250925092565b5f60ff82169050919050565b612f8081612f6b565b82525050565b5f602082019050612f995f830184612f77565b92915050565b5f60208284031215612fb457612fb3612d1c565b5b5f612fc184828501612e6e565b91505092915050565b612fd381612e47565b82525050565b5f602082019050612fec5f830184612fca565b92915050565b5f806040838503121561300857613007612d1c565b5b5f61301585828601612d3f565b925050602061302685828601612d3f565b9150509250929050565b5f806040838503121561304657613045612d1c565b5b5f61305385828601612e6e565b925050602061306485828601612e6e565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806130b257607f821691505b6020821081036130c5576130c461306e565b5b50919050565b7f57454233574542335745423357454233574542335745423300000000000000005f82015250565b5f6130ff601883612d88565b915061310a826130cb565b602082019050919050565b5f6020820190508181035f83015261312c816130f3565b9050919050565b7f31574542330000000000000000000000000000000000000000000000000000005f82015250565b5f613167600583612d88565b915061317282613133565b602082019050919050565b5f6020820190508181035f8301526131948161315b565b9050919050565b7f32574542330000000000000000000000000000000000000000000000000000005f82015250565b5f6131cf600583612d88565b91506131da8261319b565b602082019050919050565b5f6020820190508181035f8301526131fc816131c3565b9050919050565b7f33574542330000000000000000000000000000000000000000000000000000005f82015250565b5f613237600583612d88565b915061324282613203565b602082019050919050565b5f6020820190508181035f8301526132648161322b565b9050919050565b7f57454233574542335745423357454233574542330000000000000000000000005f82015250565b5f61329f601483612d88565b91506132aa8261326b565b602082019050919050565b5f6020820190508181035f8301526132cc81613293565b9050919050565b7f39574542330000000000000000000000000000000000000000000000000000005f82015250565b5f613307600583612d88565b9150613312826132d3565b602082019050919050565b5f6020820190508181035f830152613334816132fb565b9050919050565b7f35574542330000000000000000000000000000000000000000000000000000005f82015250565b5f61336f600583612d88565b915061337a8261333b565b602082019050919050565b5f6020820190508181035f83015261339c81613363565b9050919050565b7f36574542330000000000000000000000000000000000000000000000000000005f82015250565b5f6133d7600583612d88565b91506133e2826133a3565b602082019050919050565b5f6020820190508181035f830152613404816133cb565b9050919050565b7f37574542330000000000000000000000000000000000000000000000000000005f82015250565b5f61343f600583612d88565b915061344a8261340b565b602082019050919050565b5f6020820190508181035f83015261346c81613433565b9050919050565b7f38574542330000000000000000000000000000000000000000000000000000005f82015250565b5f6134a7600583612d88565b91506134b282613473565b602082019050919050565b5f6020820190508181035f8301526134d48161349b565b9050919050565b5f6040820190506134ee5f830185612ef3565b6134fb6020830184612ef3565b9392505050565b7f31305745423300000000000000000000000000000000000000000000000000005f82015250565b5f613536600683612d88565b915061354182613502565b602082019050919050565b5f6020820190508181035f8301526135638161352a565b9050919050565b7f34574542330000000000000000000000000000000000000000000000000000005f82015250565b5f61359e600583612d88565b91506135a98261356a565b602082019050919050565b5f6020820190508181035f8301526135cb81613592565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61360982612d20565b915061361483612d20565b925082820261362281612d20565b91508282048414831517613639576136386135d2565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61367782612d20565b915061368283612d20565b92508261369257613691613640565b5b828204905092915050565b7f57454233574542335745423300000000000000000000000000000000000000005f82015250565b5f6136d1600c83612d88565b91506136dc8261369d565b602082019050919050565b5f6020820190508181035f8301526136fe816136c5565b9050919050565b7f57454233574542335745423357454233000000000000000000000000000000005f82015250565b5f613739601083612d88565b915061374482613705565b602082019050919050565b5f6020820190508181035f8301526137668161372d565b9050919050565b7f57454233000000000000000000000000000000000000000000000000000000005f82015250565b5f6137a1600483612d88565b91506137ac8261376d565b602082019050919050565b5f6020820190508181035f8301526137ce81613795565b9050919050565b5f6137df82612d20565b91506137ea83612d20565b9250828203905081811115613802576138016135d2565b5b92915050565b5f61381282612d20565b915061381d83612d20565b9250828201905080821115613835576138346135d2565b5b92915050565b7f57454233574542330000000000000000000000000000000000000000000000005f82015250565b5f61386f600883612d88565b915061387a8261383b565b602082019050919050565b5f6020820190508181035f83015261389c81613863565b905091905056fea26469706673582212203cf0693c6909e1a3c5e07453b92aca34a455f7ba88de5495d0856468de21011864736f6c634300081500330000000000000000000000000bde71b005e30129b7cf6852bfd9741d31dd1d280000000000000000000000000000000000000000033b2e3c9fd0803ce7ffffff