60e06040523480156200001157600080fd5b506040518060400160405280600481526020017f4c515459000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4c5154590000000000000000000000000000000000000000000000000000000081525060128260009081620000919190620003e4565b508160019081620000a39190620003e4565b508060ff1660808160ff16815250504660a08181525050620000ca620000da60201b60201c565b60c0818152505050505062000661565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60006040516200010e91906200057a565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc646306040516020016200014f95949392919062000604565b60405160208183030381529060405280519060200120905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620001ec57607f821691505b602082108103620002025762000201620001a4565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200026c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200022d565b6200027886836200022d565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620002c5620002bf620002b98462000290565b6200029a565b62000290565b9050919050565b6000819050919050565b620002e183620002a4565b620002f9620002f082620002cc565b8484546200023a565b825550505050565b600090565b6200031062000301565b6200031d818484620002d6565b505050565b5b8181101562000345576200033960008262000306565b60018101905062000323565b5050565b601f82111562000394576200035e8162000208565b62000369846200021d565b8101602085101562000379578190505b6200039162000388856200021d565b83018262000322565b50505b505050565b600082821c905092915050565b6000620003b96000198460080262000399565b1980831691505092915050565b6000620003d48383620003a6565b9150826002028217905092915050565b620003ef826200016a565b67ffffffffffffffff8111156200040b576200040a62000175565b5b620004178254620001d3565b6200042482828562000349565b600060209050601f8311600181146200045c576000841562000447578287015190505b620004538582620003c6565b865550620004c3565b601f1984166200046c8662000208565b60005b8281101562000496578489015182556001820191506020850194506020810190506200046f565b86831015620004b65784890151620004b2601f891682620003a6565b8355505b6001600288020188555050505b505050505050565b600081905092915050565b60008190508160005260206000209050919050565b60008154620004fa81620001d3565b620005068186620004cb565b945060018216600081146200052457600181146200053a5762000571565b60ff198316865281151582028601935062000571565b6200054585620004d6565b60005b83811015620005695781548189015260018201915060208101905062000548565b838801955050505b50505092915050565b6000620005888284620004eb565b915081905092915050565b6000819050919050565b620005a88162000593565b82525050565b620005b98162000290565b82525050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620005ec82620005bf565b9050919050565b620005fe81620005df565b82525050565b600060a0820190506200061b60008301886200059d565b6200062a60208301876200059d565b6200063960408301866200059d565b620006486060830185620005ae565b620006576080830184620005f3565b9695505050505050565b60805160a05160c05161161f6200069160003960006106ee015260006106ba01526000610694015261161f6000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370a082311161008c578063a0712d6811610066578063a0712d681461022a578063a9059cbb14610246578063d505accf14610276578063dd62ed3e14610292576100cf565b806370a08231146101ac5780637ecebe00146101dc57806395d89b411461020c576100cf565b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461012257806323b872dd14610140578063313ce567146101705780633644e5151461018e575b600080fd5b6100dc6102c2565b6040516100e99190610dfc565b60405180910390f35b61010c60048036038101906101079190610eb7565b610350565b6040516101199190610f12565b60405180910390f35b61012a610442565b6040516101379190610f3c565b60405180910390f35b61015a60048036038101906101559190610f57565b610448565b6040516101679190610f12565b60405180910390f35b610178610692565b6040516101859190610fc6565b60405180910390f35b6101966106b6565b6040516101a39190610ffa565b60405180910390f35b6101c660048036038101906101c19190611015565b610713565b6040516101d39190610f3c565b60405180910390f35b6101f660048036038101906101f19190611015565b61072b565b6040516102039190610f3c565b60405180910390f35b610214610743565b6040516102219190610dfc565b60405180910390f35b610244600480360381019061023f9190611042565b6107d1565b005b610260600480360381019061025b9190610eb7565b6107de565b60405161026d9190610f12565b60405180910390f35b610290600480360381019061028b91906110c7565b6108f2565b005b6102ac60048036038101906102a79190611169565b610beb565b6040516102b99190610f3c565b60405180910390f35b600080546102cf906111d8565b80601f01602080910402602001604051908101604052809291908181526020018280546102fb906111d8565b80156103485780601f1061031d57610100808354040283529160200191610348565b820191906000526020600020905b81548152906001019060200180831161032b57829003601f168201915b505050505081565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104309190610f3c565b60405180910390a36001905092915050565b60025481565b600080600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461057e5782816104fd9190611238565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b82600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546105cd9190611238565b9250508190555082600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161067e9190610f3c565b60405180910390a360019150509392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60007f000000000000000000000000000000000000000000000000000000000000000046146106ec576106e7610c10565b61070e565b7f00000000000000000000000000000000000000000000000000000000000000005b905090565b60036020528060005260406000206000915090505481565b60056020528060005260406000206000915090505481565b60018054610750906111d8565b80601f016020809104026020016040519081016040528092919081815260200182805461077c906111d8565b80156107c95780601f1061079e576101008083540402835291602001916107c9565b820191906000526020600020905b8154815290600101906020018083116107ac57829003601f168201915b505050505081565b6107db3382610c9c565b50565b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461082f9190611238565b9250508190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516108e09190610f3c565b60405180910390a36001905092915050565b42841015610935576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092c906112b8565b60405180910390fd5b600060016109416106b6565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98a8a8a600560008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600101919050558b6040516020016109c9969594939291906112e7565b604051602081830303815290604052805190602001206040516020016109f09291906113c0565b6040516020818303038152906040528051906020012085858560405160008152602001604052604051610a2694939291906113f7565b6020604051602081039080840390855afa158015610a48573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015610abc57508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b610afb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af290611488565b60405180910390fd5b85600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92587604051610bda9190610f3c565b60405180910390a350505050505050565b6004602052816000526040600020602052806000526040600020600091509150505481565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6000604051610c42919061154b565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc64630604051602001610c81959493929190611562565b60405160208183030381529060405280519060200120905090565b8060026000828254610cae91906115b5565b9250508190555080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610d609190610f3c565b60405180910390a35050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610da6578082015181840152602081019050610d8b565b60008484015250505050565b6000601f19601f8301169050919050565b6000610dce82610d6c565b610dd88185610d77565b9350610de8818560208601610d88565b610df181610db2565b840191505092915050565b60006020820190508181036000830152610e168184610dc3565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610e4e82610e23565b9050919050565b610e5e81610e43565b8114610e6957600080fd5b50565b600081359050610e7b81610e55565b92915050565b6000819050919050565b610e9481610e81565b8114610e9f57600080fd5b50565b600081359050610eb181610e8b565b92915050565b60008060408385031215610ece57610ecd610e1e565b5b6000610edc85828601610e6c565b9250506020610eed85828601610ea2565b9150509250929050565b60008115159050919050565b610f0c81610ef7565b82525050565b6000602082019050610f276000830184610f03565b92915050565b610f3681610e81565b82525050565b6000602082019050610f516000830184610f2d565b92915050565b600080600060608486031215610f7057610f6f610e1e565b5b6000610f7e86828701610e6c565b9350506020610f8f86828701610e6c565b9250506040610fa086828701610ea2565b9150509250925092565b600060ff82169050919050565b610fc081610faa565b82525050565b6000602082019050610fdb6000830184610fb7565b92915050565b6000819050919050565b610ff481610fe1565b82525050565b600060208201905061100f6000830184610feb565b92915050565b60006020828403121561102b5761102a610e1e565b5b600061103984828501610e6c565b91505092915050565b60006020828403121561105857611057610e1e565b5b600061106684828501610ea2565b91505092915050565b61107881610faa565b811461108357600080fd5b50565b6000813590506110958161106f565b92915050565b6110a481610fe1565b81146110af57600080fd5b50565b6000813590506110c18161109b565b92915050565b600080600080600080600060e0888a0312156110e6576110e5610e1e565b5b60006110f48a828b01610e6c565b97505060206111058a828b01610e6c565b96505060406111168a828b01610ea2565b95505060606111278a828b01610ea2565b94505060806111388a828b01611086565b93505060a06111498a828b016110b2565b92505060c061115a8a828b016110b2565b91505092959891949750929550565b600080604083850312156111805761117f610e1e565b5b600061118e85828601610e6c565b925050602061119f85828601610e6c565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806111f057607f821691505b602082108103611203576112026111a9565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061124382610e81565b915061124e83610e81565b925082820390508181111561126657611265611209565b5b92915050565b7f5045524d49545f444541444c494e455f45585049524544000000000000000000600082015250565b60006112a2601783610d77565b91506112ad8261126c565b602082019050919050565b600060208201905081810360008301526112d181611295565b9050919050565b6112e181610e43565b82525050565b600060c0820190506112fc6000830189610feb565b61130960208301886112d8565b61131660408301876112d8565b6113236060830186610f2d565b6113306080830185610f2d565b61133d60a0830184610f2d565b979650505050505050565b600081905092915050565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b6000611389600283611348565b915061139482611353565b600282019050919050565b6000819050919050565b6113ba6113b582610fe1565b61139f565b82525050565b60006113cb8261137c565b91506113d782856113a9565b6020820191506113e782846113a9565b6020820191508190509392505050565b600060808201905061140c6000830187610feb565b6114196020830186610fb7565b6114266040830185610feb565b6114336060830184610feb565b95945050505050565b7f494e56414c49445f5349474e4552000000000000000000000000000000000000600082015250565b6000611472600e83610d77565b915061147d8261143c565b602082019050919050565b600060208201905081810360008301526114a181611465565b9050919050565b600081905092915050565b60008190508160005260206000209050919050565b600081546114d5816111d8565b6114df81866114a8565b945060018216600081146114fa576001811461150f57611542565b60ff1983168652811515820286019350611542565b611518856114b3565b60005b8381101561153a5781548189015260018201915060208101905061151b565b838801955050505b50505092915050565b600061155782846114c8565b915081905092915050565b600060a0820190506115776000830188610feb565b6115846020830187610feb565b6115916040830186610feb565b61159e6060830185610f2d565b6115ab60808301846112d8565b9695505050505050565b60006115c082610e81565b91506115cb83610e81565b92508282019050808211156115e3576115e2611209565b5b9291505056fea264697066735822122042ec62aebb25c6701e4dad75c5028c2c679d957197d3c62857d520eeba77568164736f6c63430008120033