60806040523480156200001157600080fd5b5060405162001f7a38038062001f7a833981810160405281019062000037919062000279565b6040518060400160405280600681526020017f506978656c730000000000000000000000000000000000000000000000000000815250600190816200007d919062000525565b506040518060400160405280600581526020017f504958454c00000000000000000000000000000000000000000000000000000081525060029081620000c4919062000525565b506012600360146101000a81548160ff021916908360ff160217905550600360149054906101000a900460ff16600a620000ff91906200079c565b64012a05f200620001119190620007ed565b600081905550600054600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600054604051620001bf919062000849565b60405180910390a380600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062000866565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620002418262000214565b9050919050565b620002538162000234565b81146200025f57600080fd5b50565b600081519050620002738162000248565b92915050565b6000602082840312156200029257620002916200020f565b5b6000620002a28482850162000262565b91505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200032d57607f821691505b602082108103620003435762000342620002e5565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620003ad7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200036e565b620003b986836200036e565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200040662000400620003fa84620003d1565b620003db565b620003d1565b9050919050565b6000819050919050565b6200042283620003e5565b6200043a62000431826200040d565b8484546200037b565b825550505050565b600090565b6200045162000442565b6200045e81848462000417565b505050565b5b8181101562000486576200047a60008262000447565b60018101905062000464565b5050565b601f821115620004d5576200049f8162000349565b620004aa846200035e565b81016020851015620004ba578190505b620004d2620004c9856200035e565b83018262000463565b50505b505050565b600082821c905092915050565b6000620004fa60001984600802620004da565b1980831691505092915050565b6000620005158383620004e7565b9150826002028217905092915050565b6200053082620002ab565b67ffffffffffffffff8111156200054c576200054b620002b6565b5b62000558825462000314565b620005658282856200048a565b600060209050601f8311600181146200059d576000841562000588578287015190505b62000594858262000507565b86555062000604565b601f198416620005ad8662000349565b60005b82811015620005d757848901518255600182019150602085019450602081019050620005b0565b86831015620005f75784890151620005f3601f891682620004e7565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200069a578086048111156200067257620006716200060c565b5b6001851615620006825780820291505b808102905062000692856200063b565b945062000652565b94509492505050565b600082620006b5576001905062000788565b81620006c5576000905062000788565b8160018114620006de5760028114620006e9576200071f565b600191505062000788565b60ff841115620006fe57620006fd6200060c565b5b8360020a9150848211156200071857620007176200060c565b5b5062000788565b5060208310610133831016604e8410600b8410161715620007595782820a9050838111156200075357620007526200060c565b5b62000788565b62000768848484600162000648565b925090508184048111156200078257620007816200060c565b5b81810290505b9392505050565b600060ff82169050919050565b6000620007a982620003d1565b9150620007b6836200078f565b9250620007e57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620006a3565b905092915050565b6000620007fa82620003d1565b91506200080783620003d1565b92508282026200081781620003d1565b915082820484148315176200083157620008306200060c565b5b5092915050565b6200084381620003d1565b82525050565b600060208201905062000860600083018462000838565b92915050565b61170480620008766000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c8063671f3db811610071578063671f3db81461018f57806370a08231146101ab57806395d89b41146101db578063a9059cbb146101f9578063b8c9d25c14610229578063dd62ed3e14610247576100b4565b806306fdde03146100b9578063095ea7b3146100d757806318160ddd1461010757806323b872dd14610125578063313ce5671461015557806356ec63a514610173575b600080fd5b6100c1610277565b6040516100ce9190610dbd565b60405180910390f35b6100f160048036038101906100ec9190610e78565b610309565b6040516100fe9190610ed3565b60405180910390f35b61010f610320565b60405161011c9190610efd565b60405180910390f35b61013f600480360381019061013a9190610f18565b610329565b60405161014c9190610ed3565b60405180910390f35b61015d610351565b60405161016a9190610f87565b60405180910390f35b61018d60048036038101906101889190610fa2565b610368565b005b6101a960048036038101906101a49190610fcf565b6104ec565b005b6101c560048036038101906101c09190610fa2565b6105bf565b6040516101d29190610efd565b60405180910390f35b6101e3610608565b6040516101f09190610dbd565b60405180910390f35b610213600480360381019061020e9190610e78565b61069a565b6040516102209190610ed3565b60405180910390f35b6102316106b1565b60405161023e919061100b565b60405180910390f35b610261600480360381019061025c9190611026565b61075c565b60405161026e9190610efd565b60405180910390f35b60606001805461028690611095565b80601f01602080910402602001604051908101604052809291908181526020018280546102b290611095565b80156102ff5780601f106102d4576101008083540402835291602001916102ff565b820191906000526020600020905b8154815290600101906020018083116102e257829003601f168201915b5050505050905090565b60006103163384846107e3565b6001905092915050565b60008054905090565b60008033905061033a8582856109ac565b610345858585610a41565b60019150509392505050565b6000600360149054906101000a900460ff16905090565b3373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614801561041357508073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b801561045257508073ffffffffffffffffffffffffffffffffffffffff166104396106b1565b73ffffffffffffffffffffffffffffffffffffffff1614155b801561049e5750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b156104e9576000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b50565b3373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036105bc57600360149054906101000a900460ff16600a61055d9190611228565b8164746a52880061056e9190611273565b6105789190611273565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b50565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606002805461061790611095565b80601f016020809104026020016040519081016040528092919081815260200182805461064390611095565b80156106905780601f1061066557610100808354040283529160200191610690565b820191906000526020600020905b81548152906001019060200180831161067357829003601f168201915b5050505050905090565b60006106a7338484610a41565b6001905092915050565b6000735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f73ffffffffffffffffffffffffffffffffffffffff1663e6a4390573c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2306040518363ffffffff1660e01b81526004016107169291906112b5565b602060405180830381865afa158015610733573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075791906112f3565b905090565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610852576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084990611392565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036108c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b890611424565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161099f9190610efd565b60405180910390a3505050565b60006109b8848461075c565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610a3b5781811015610a24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1b90611490565b60405180910390fd5b610a3a84848484610a3591906114b0565b6107e3565b5b50505050565b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610ac8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abf90611556565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2e906115e8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ba6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9d9061167a565b60405180910390fd5b81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bf191906114b0565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c7f919061169a565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d1f9190610efd565b60405180910390a350505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610d67578082015181840152602081019050610d4c565b60008484015250505050565b6000601f19601f8301169050919050565b6000610d8f82610d2d565b610d998185610d38565b9350610da9818560208601610d49565b610db281610d73565b840191505092915050565b60006020820190508181036000830152610dd78184610d84565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610e0f82610de4565b9050919050565b610e1f81610e04565b8114610e2a57600080fd5b50565b600081359050610e3c81610e16565b92915050565b6000819050919050565b610e5581610e42565b8114610e6057600080fd5b50565b600081359050610e7281610e4c565b92915050565b60008060408385031215610e8f57610e8e610ddf565b5b6000610e9d85828601610e2d565b9250506020610eae85828601610e63565b9150509250929050565b60008115159050919050565b610ecd81610eb8565b82525050565b6000602082019050610ee86000830184610ec4565b92915050565b610ef781610e42565b82525050565b6000602082019050610f126000830184610eee565b92915050565b600080600060608486031215610f3157610f30610ddf565b5b6000610f3f86828701610e2d565b9350506020610f5086828701610e2d565b9250506040610f6186828701610e63565b9150509250925092565b600060ff82169050919050565b610f8181610f6b565b82525050565b6000602082019050610f9c6000830184610f78565b92915050565b600060208284031215610fb857610fb7610ddf565b5b6000610fc684828501610e2d565b91505092915050565b600060208284031215610fe557610fe4610ddf565b5b6000610ff384828501610e63565b91505092915050565b61100581610e04565b82525050565b60006020820190506110206000830184610ffc565b92915050565b6000806040838503121561103d5761103c610ddf565b5b600061104b85828601610e2d565b925050602061105c85828601610e2d565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806110ad57607f821691505b6020821081036110c0576110bf611066565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561114c57808604811115611128576111276110c6565b5b60018516156111375780820291505b8081029050611145856110f5565b945061110c565b94509492505050565b6000826111655760019050611221565b816111735760009050611221565b81600181146111895760028114611193576111c2565b6001915050611221565b60ff8411156111a5576111a46110c6565b5b8360020a9150848211156111bc576111bb6110c6565b5b50611221565b5060208310610133831016604e8410600b84101617156111f75782820a9050838111156111f2576111f16110c6565b5b611221565b6112048484846001611102565b9250905081840481111561121b5761121a6110c6565b5b81810290505b9392505050565b600061123382610e42565b915061123e83610f6b565b925061126b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484611155565b905092915050565b600061127e82610e42565b915061128983610e42565b925082820261129781610e42565b915082820484148315176112ae576112ad6110c6565b5b5092915050565b60006040820190506112ca6000830185610ffc565b6112d76020830184610ffc565b9392505050565b6000815190506112ed81610e16565b92915050565b60006020828403121561130957611308610ddf565b5b6000611317848285016112de565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061137c602483610d38565b915061138782611320565b604082019050919050565b600060208201905081810360008301526113ab8161136f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061140e602283610d38565b9150611419826113b2565b604082019050919050565b6000602082019050818103600083015261143d81611401565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b600061147a601d83610d38565b915061148582611444565b602082019050919050565b600060208201905081810360008301526114a98161146d565b9050919050565b60006114bb82610e42565b91506114c683610e42565b92508282039050818111156114de576114dd6110c6565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611540602683610d38565b915061154b826114e4565b604082019050919050565b6000602082019050818103600083015261156f81611533565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006115d2602583610d38565b91506115dd82611576565b604082019050919050565b60006020820190508181036000830152611601816115c5565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611664602383610d38565b915061166f82611608565b604082019050919050565b6000602082019050818103600083015261169381611657565b9050919050565b60006116a582610e42565b91506116b083610e42565b92508282019050808211156116c8576116c76110c6565b5b9291505056fea2646970667358221220124b208404e95ed24b0ade7ef488c8e92fc13c31235734084c6360078288789764736f6c63430008130033000000000000000000000000cdded97a06de65518705f81e06f763c40ca56348