0x60806040523480156200001157600080fd5b506040518060400160405280601481526020017f547261696e696e67204974656d7320546f6b656e0000000000000000000000008152506040518060400160405280600381526020017f544954000000000000000000000000000000000000000000000000000000000081525081600090816200008f919062000453565b508060019081620000a1919062000453565b505050620000c4620000b86200010b60201b60201c565b6200011360201b60201c565b33600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200053a565b600033905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200025b57607f821691505b60208210810362000271576200027062000213565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620002db7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200029c565b620002e786836200029c565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620003346200032e6200032884620002ff565b62000309565b620002ff565b9050919050565b6000819050919050565b620003508362000313565b620003686200035f826200033b565b848454620002a9565b825550505050565b600090565b6200037f62000370565b6200038c81848462000345565b505050565b5b81811015620003b457620003a860008262000375565b60018101905062000392565b5050565b601f8211156200040357620003cd8162000277565b620003d8846200028c565b81016020851015620003e8578190505b62000400620003f7856200028c565b83018262000391565b50505b505050565b600082821c905092915050565b6000620004286000198460080262000408565b1980831691505092915050565b600062000443838362000415565b9150826002028217905092915050565b6200045e82620001d9565b67ffffffffffffffff8111156200047a5762000479620001e4565b5b62000486825462000242565b62000493828285620003b8565b600060209050601f831160018114620004cb5760008415620004b6578287015190505b620004c2858262000435565b86555062000532565b601f198416620004db8662000277565b60005b828110156200050557848901518255600182019150602085019450602081019050620004de565b8683101562000525578489015162000521601f89168262000415565b8355505b6001600288020188555050505b505050505050565b614865806200054a6000396000f3fe6080604052600436106101d75760003560e01c806370a0823111610102578063b88d4fde11610095578063e985e9c511610064578063e985e9c5146106f9578063ec9ca25814610736578063f2fde38b1461075f578063f851a44014610788576101d7565b8063b88d4fde1461064e578063be9af53614610677578063c87b56dd14610693578063cfd825a2146106d0576101d7565b806386481d40116100d157806386481d40146105925780638da5cb5b146105cf57806395d89b41146105fa578063a22cb46514610625576101d7565b806370a08231146104d8578063715018a6146105155780637e9a08c61461052c5780637f5fa46114610569576101d7565b806323b872dd1161017a57806345576f941161014957806345576f9414610405578063559e775b146104425780636352211e1461047f5780636ad85cb7146104bc576101d7565b806323b872dd146103615780632d864a061461038a57806342842e0e146103b357806342966c68146103dc576101d7565b8063081812fc116101b6578063081812fc14610281578063095ea7b3146102be5780630d029755146102e75780631ab4d7de14610324576101d7565b8062923f9e146101dc57806301ffc9a71461021957806306fdde0314610256575b600080fd5b3480156101e857600080fd5b5061020360048036038101906101fe9190613010565b6107b3565b6040516102109190613058565b60405180910390f35b34801561022557600080fd5b50610240600480360381019061023b91906130cb565b6107c5565b60405161024d9190613058565b60405180910390f35b34801561026257600080fd5b5061026b6108a7565b6040516102789190613188565b60405180910390f35b34801561028d57600080fd5b506102a860048036038101906102a39190613010565b610939565b6040516102b591906131eb565b60405180910390f35b3480156102ca57600080fd5b506102e560048036038101906102e09190613232565b61097f565b005b3480156102f357600080fd5b5061030e60048036038101906103099190613010565b610a96565b60405161031b9190613058565b60405180910390f35b34801561033057600080fd5b5061034b60048036038101906103469190613010565b610bb6565b6040516103589190613188565b60405180910390f35b34801561036d57600080fd5b5061038860048036038101906103839190613272565b610ca6565b005b34801561039657600080fd5b506103b160048036038101906103ac91906132c5565b610d06565b005b3480156103bf57600080fd5b506103da60048036038101906103d59190613272565b610dfd565b005b3480156103e857600080fd5b5061040360048036038101906103fe9190613010565b610e1d565b005b34801561041157600080fd5b5061042c6004803603810190610427919061343a565b610eba565b6040516104399190613492565b60405180910390f35b34801561044e57600080fd5b5061046960048036038101906104649190613010565b610f33565b6040516104769190613492565b60405180910390f35b34801561048b57600080fd5b506104a660048036038101906104a19190613010565b610f9b565b6040516104b391906131eb565b60405180910390f35b6104d660048036038101906104d191906134ad565b611021565b005b3480156104e457600080fd5b506104ff60048036038101906104fa919061351c565b6112fc565b60405161050c9190613492565b60405180910390f35b34801561052157600080fd5b5061052a6113b3565b005b34801561053857600080fd5b50610553600480360381019061054e9190613010565b6113c7565b6040516105609190613492565b60405180910390f35b34801561057557600080fd5b50610590600480360381019061058b9190613549565b6114da565b005b34801561059e57600080fd5b506105b960048036038101906105b49190613010565b6115da565b6040516105c69190613492565b60405180910390f35b3480156105db57600080fd5b506105e4611642565b6040516105f191906131eb565b60405180910390f35b34801561060657600080fd5b5061060f61166c565b60405161061c9190613188565b60405180910390f35b34801561063157600080fd5b5061064c600480360381019061064791906135d1565b6116fe565b005b34801561065a57600080fd5b50610675600480360381019061067091906136b2565b611714565b005b610691600480360381019061068c9190613010565b611776565b005b34801561069f57600080fd5b506106ba60048036038101906106b59190613010565b611b83565b6040516106c79190613188565b60405180910390f35b3480156106dc57600080fd5b506106f760048036038101906106f29190613010565b611beb565b005b34801561070557600080fd5b50610720600480360381019061071b9190613735565b611cae565b60405161072d9190613058565b60405180910390f35b34801561074257600080fd5b5061075d600480360381019061075891906132c5565b611d42565b005b34801561076b57600080fd5b506107866004803603810190610781919061351c565b611e99565b005b34801561079457600080fd5b5061079d611f1c565b6040516107aa91906131eb565b60405180910390f35b60006107be82611f42565b9050919050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061089057507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806108a0575061089f82611f83565b5b9050919050565b6060600080546108b6906137a4565b80601f01602080910402602001604051908101604052809291908181526020018280546108e2906137a4565b801561092f5780601f106109045761010080835404028352916020019161092f565b820191906000526020600020905b81548152906001019060200180831161091257829003601f168201915b5050505050905090565b600061094482611fed565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061098a82610f9b565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036109fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f190613847565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610a19612038565b73ffffffffffffffffffffffffffffffffffffffff161480610a485750610a4781610a42612038565b611cae565b5b610a87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7e906138d9565b60405180910390fd5b610a918383612040565b505050565b6000610aa182611f42565b610ae0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad790613945565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600a600084815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610b85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7c906139d7565b60405180910390fd5b6000600a600084815260200190815260200160002060060160009054906101000a900460ff16905080915050919050565b6060610bc182611f42565b610c00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf790613945565b60405180910390fd5b600960008381526020019081526020016000206000018054610c21906137a4565b80601f0160208091040260200160405190810160405280929190818152602001828054610c4d906137a4565b8015610c9a5780601f10610c6f57610100808354040283529160200191610c9a565b820191906000526020600020905b815481529060010190602001808311610c7d57829003601f168201915b50505050509050919050565b610cb7610cb1612038565b826120f9565b610cf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ced90613a69565b60405180910390fd5b610d0183838361218e565b505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8d90613afb565b60405180910390fd5b610d9f82611f42565b610dde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd590613945565b60405180910390fd5b8060096000848152602001908152602001600020600101819055505050565b610e1883838360405180602001604052806000815250611714565b505050565b610e2681611f42565b610e65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5c90613945565b60405180910390fd5b610e6f33826120f9565b610eae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea590613b8d565b60405180910390fd5b610eb781612487565b50565b6000610ec660086125d5565b6000610ed260086125eb565b9050610ede33826125f9565b60405180604001604052808481526020016001815250600960008381526020019081526020016000206000820151816000019081610f1c9190613d59565b506020820151816001015590505080915050919050565b6000610f3e82611f42565b610f7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7490613945565b60405180910390fd5b600a6000838152602001908152602001600020600501549050919050565b600080610fa783612617565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611018576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100f90613e77565b60405180910390fd5b80915050919050565b61102a83611f42565b611069576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106090613945565b60405180910390fd5b600082116110ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a390613ee3565b60405180910390fd5b6040518060e0016040528084815260200182815260200160096000868152602001908152602001600020600101548152602001600960008681526020019081526020016000206000018054611100906137a4565b80601f016020809104026020016040519081016040528092919081815260200182805461112c906137a4565b80156111795780601f1061114e57610100808354040283529160200191611179565b820191906000526020600020905b81548152906001019060200180831161115c57829003601f168201915b505050505081526020013373ffffffffffffffffffffffffffffffffffffffff16815260200183815260200160001515815250600a60008581526020019081526020016000206000820151816000015560208201518160010190816111de9190613d59565b506040820151816002015560608201518160030190816111fe9190613d59565b5060808201518160040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060a0820151816005015560c08201518160060160006101000a81548160ff021916908315150217905550905050600015153373ffffffffffffffffffffffffffffffffffffffff16847f69ae156f0913ea2d2d177c80b5dc7c561b5b1b3129a259a65466a6505ad0b66f846009600089815260200190815260200160002060010154600960008a8152602001908152602001600020600001886040516112ef9493929190613f87565b60405180910390a4505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361136c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113639061404c565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6113bb612654565b6113c560006126d2565b565b60006113d282611f42565b611411576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140890613945565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600a600084815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036114b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ad906139d7565b60405180910390fd5b6000600a600084815260200190815260200160002060050154905080915050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461156a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156190613afb565b60405180910390fd5b61157382611f42565b6115b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a990613945565b60405180910390fd5b806009600084815260200190815260200160002060000190816115d59190613d59565b505050565b60006115e582611f42565b611624576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161b90613945565b60405180910390fd5b60096000838152602001908152602001600020600101549050919050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606001805461167b906137a4565b80601f01602080910402602001604051908101604052809291908181526020018280546116a7906137a4565b80156116f45780601f106116c9576101008083540402835291602001916116f4565b820191906000526020600020905b8154815290600101906020018083116116d757829003601f168201915b5050505050905090565b611710611709612038565b8383612798565b5050565b61172561171f612038565b836120f9565b611764576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175b90613a69565b60405180910390fd5b61177084848484612904565b50505050565b61177f81611f42565b6117be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b590613945565b60405180910390fd5b600a600082815260200190815260200160002060060160009054906101000a900460ff1615611822576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611819906140b8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600a600083815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036118c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118be906139d7565b60405180910390fd5b600a600082815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661191d82610f9b565b73ffffffffffffffffffffffffffffffffffffffff1614611973576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196a90614124565b60405180910390fd5b6000600a60008381526020019081526020016000206005015490508034146119d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c7906141b6565b60405180910390fd5b60003390506000600a600085815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a600086815260200190815260200160002060040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a600086815260200190815260200160002060060160006101000a81548160ff021916908315150217905550611a9f81838661218e565b8073ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015611ae5573d6000803e3d6000fd5b5082341115611b41578173ffffffffffffffffffffffffffffffffffffffff166108fc8434611b149190614205565b9081150290604051600060405180830381858888f19350505050158015611b3f573d6000803e3d6000fd5b505b837f04ddd54c6b746e69ba87f862311f7670bd1d7276846778ac81cd38747b27a746838386604051611b759392919061428e565b60405180910390a250505050565b6060611b8e82611fed565b6000611b98612960565b90506000815111611bb85760405180602001604052806000815250611be3565b80611bc284612977565b604051602001611bd3929190614301565b6040516020818303038152906040525b915050919050565b611bf481611f42565b611c33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2a90613945565b60405180910390fd5b611c3d33826120f9565b611c7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7390613b8d565b60405180910390fd5b6001600a600083815260200190815260200160002060060160006101000a81548160ff02191690831515021790555050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611d4a612654565b611d5382611f42565b611d92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8990613945565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600a600084815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611e37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2e906139d7565b60405180910390fd5b60008111611e7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7190613ee3565b60405180910390fd5b80600a6000848152602001908152602001600020600501819055505050565b611ea1612654565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611f10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0790614397565b60405180910390fd5b611f19816126d2565b50565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008073ffffffffffffffffffffffffffffffffffffffff16611f6483612617565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b611ff681611f42565b612035576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202c90613e77565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166120b383610f9b565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061210583610f9b565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061214757506121468185611cae565b5b8061218557508373ffffffffffffffffffffffffffffffffffffffff1661216d84610939565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166121ae82610f9b565b73ffffffffffffffffffffffffffffffffffffffff1614612204576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121fb90614429565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612273576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226a906144bb565b60405180910390fd5b6122808383836001612a45565b8273ffffffffffffffffffffffffffffffffffffffff166122a082610f9b565b73ffffffffffffffffffffffffffffffffffffffff16146122f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ed90614429565b60405180910390fd5b6004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46124828383836001612a4b565b505050565b600061249282610f9b565b90506124a2816000846001612a45565b6124ab82610f9b565b90506004600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506002600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46125d1816000846001612a4b565b5050565b6001816000016000828254019250508190555050565b600081600001549050919050565b612613828260405180602001604052806000815250612a51565b5050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b61265c612038565b73ffffffffffffffffffffffffffffffffffffffff1661267a611642565b73ffffffffffffffffffffffffffffffffffffffff16146126d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c790614527565b60405180910390fd5b565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612806576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127fd90614593565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516128f79190613058565b60405180910390a3505050565b61290f84848461218e565b61291b84848484612aac565b61295a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295190614625565b60405180910390fd5b50505050565b606060405180602001604052806000815250905090565b60606000600161298684612c33565b01905060008167ffffffffffffffff8111156129a5576129a461330f565b5b6040519080825280601f01601f1916602001820160405280156129d75781602001600182028036833780820191505090505b509050600082602001820190505b600115612a3a578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581612a2e57612a2d614645565b5b049450600085036129e5575b819350505050919050565b50505050565b50505050565b612a5b8383612d86565b612a686000848484612aac565b612aa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9e90614625565b60405180910390fd5b505050565b6000612acd8473ffffffffffffffffffffffffffffffffffffffff16612fa3565b15612c26578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612af6612038565b8786866040518563ffffffff1660e01b8152600401612b1894939291906146c9565b6020604051808303816000875af1925050508015612b5457506040513d601f19601f82011682018060405250810190612b51919061472a565b60015b612bd6573d8060008114612b84576040519150601f19603f3d011682016040523d82523d6000602084013e612b89565b606091505b506000815103612bce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc590614625565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612c2b565b600190505b949350505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612c91577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381612c8757612c86614645565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310612cce576d04ee2d6d415b85acef81000000008381612cc457612cc3614645565b5b0492506020810190505b662386f26fc100008310612cfd57662386f26fc100008381612cf357612cf2614645565b5b0492506010810190505b6305f5e1008310612d26576305f5e1008381612d1c57612d1b614645565b5b0492506008810190505b6127108310612d4b576127108381612d4157612d40614645565b5b0492506004810190505b60648310612d6e5760648381612d6457612d63614645565b5b0492506002810190505b600a8310612d7d576001810190505b80915050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612df5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dec906147a3565b60405180910390fd5b612dfe81611f42565b15612e3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e359061480f565b60405180910390fd5b612e4c600083836001612a45565b612e5581611f42565b15612e95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e8c9061480f565b60405180910390fd5b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612f9f600083836001612a4b565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b612fed81612fda565b8114612ff857600080fd5b50565b60008135905061300a81612fe4565b92915050565b60006020828403121561302657613025612fd0565b5b600061303484828501612ffb565b91505092915050565b60008115159050919050565b6130528161303d565b82525050565b600060208201905061306d6000830184613049565b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6130a881613073565b81146130b357600080fd5b50565b6000813590506130c58161309f565b92915050565b6000602082840312156130e1576130e0612fd0565b5b60006130ef848285016130b6565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613132578082015181840152602081019050613117565b60008484015250505050565b6000601f19601f8301169050919050565b600061315a826130f8565b6131648185613103565b9350613174818560208601613114565b61317d8161313e565b840191505092915050565b600060208201905081810360008301526131a2818461314f565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006131d5826131aa565b9050919050565b6131e5816131ca565b82525050565b600060208201905061320060008301846131dc565b92915050565b61320f816131ca565b811461321a57600080fd5b50565b60008135905061322c81613206565b92915050565b6000806040838503121561324957613248612fd0565b5b60006132578582860161321d565b925050602061326885828601612ffb565b9150509250929050565b60008060006060848603121561328b5761328a612fd0565b5b60006132998682870161321d565b93505060206132aa8682870161321d565b92505060406132bb86828701612ffb565b9150509250925092565b600080604083850312156132dc576132db612fd0565b5b60006132ea85828601612ffb565b92505060206132fb85828601612ffb565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6133478261313e565b810181811067ffffffffffffffff821117156133665761336561330f565b5b80604052505050565b6000613379612fc6565b9050613385828261333e565b919050565b600067ffffffffffffffff8211156133a5576133a461330f565b5b6133ae8261313e565b9050602081019050919050565b82818337600083830152505050565b60006133dd6133d88461338a565b61336f565b9050828152602081018484840111156133f9576133f861330a565b5b6134048482856133bb565b509392505050565b600082601f83011261342157613420613305565b5b81356134318482602086016133ca565b91505092915050565b6000602082840312156134505761344f612fd0565b5b600082013567ffffffffffffffff81111561346e5761346d612fd5565b5b61347a8482850161340c565b91505092915050565b61348c81612fda565b82525050565b60006020820190506134a76000830184613483565b92915050565b6000806000606084860312156134c6576134c5612fd0565b5b60006134d486828701612ffb565b93505060206134e586828701612ffb565b925050604084013567ffffffffffffffff81111561350657613505612fd5565b5b6135128682870161340c565b9150509250925092565b60006020828403121561353257613531612fd0565b5b60006135408482850161321d565b91505092915050565b600080604083850312156135605761355f612fd0565b5b600061356e85828601612ffb565b925050602083013567ffffffffffffffff81111561358f5761358e612fd5565b5b61359b8582860161340c565b9150509250929050565b6135ae8161303d565b81146135b957600080fd5b50565b6000813590506135cb816135a5565b92915050565b600080604083850312156135e8576135e7612fd0565b5b60006135f68582860161321d565b9250506020613607858286016135bc565b9150509250929050565b600067ffffffffffffffff82111561362c5761362b61330f565b5b6136358261313e565b9050602081019050919050565b600061365561365084613611565b61336f565b9050828152602081018484840111156136715761367061330a565b5b61367c8482856133bb565b509392505050565b600082601f83011261369957613698613305565b5b81356136a9848260208601613642565b91505092915050565b600080600080608085870312156136cc576136cb612fd0565b5b60006136da8782880161321d565b94505060206136eb8782880161321d565b93505060406136fc87828801612ffb565b925050606085013567ffffffffffffffff81111561371d5761371c612fd5565b5b61372987828801613684565b91505092959194509250565b6000806040838503121561374c5761374b612fd0565b5b600061375a8582860161321d565b925050602061376b8582860161321d565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806137bc57607f821691505b6020821081036137cf576137ce613775565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000613831602183613103565b915061383c826137d5565b604082019050919050565b6000602082019050818103600083015261386081613824565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b60006138c3603d83613103565b91506138ce82613867565b604082019050919050565b600060208201905081810360008301526138f2816138b6565b9050919050565b7f546f6b656e20646f6573206e6f74206578697374000000000000000000000000600082015250565b600061392f601483613103565b915061393a826138f9565b602082019050919050565b6000602082019050818103600083015261395e81613922565b9050919050565b7f546f6b656e206973206e6f74207265676973746572656420696e20746865206d60008201527f61726b6574000000000000000000000000000000000000000000000000000000602082015250565b60006139c1602583613103565b91506139cc82613965565b604082019050919050565b600060208201905081810360008301526139f0816139b4565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b6000613a53602d83613103565b9150613a5e826139f7565b604082019050919050565b60006020820190508181036000830152613a8281613a46565b9050919050565b7f4f6e6c792061646d696e2063616e2063616c6c20746869732066756e6374696f60008201527f6e00000000000000000000000000000000000000000000000000000000000000602082015250565b6000613ae5602183613103565b9150613af082613a89565b604082019050919050565b60006020820190508181036000830152613b1481613ad8565b9050919050565b7f6275726e206973206f6e6c7920616c6c6f77656420746f20746865206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000613b77602183613103565b9150613b8282613b1b565b604082019050919050565b60006020820190508181036000830152613ba681613b6a565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302613c0f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613bd2565b613c198683613bd2565b95508019841693508086168417925050509392505050565b6000819050919050565b6000613c56613c51613c4c84612fda565b613c31565b612fda565b9050919050565b6000819050919050565b613c7083613c3b565b613c84613c7c82613c5d565b848454613bdf565b825550505050565b600090565b613c99613c8c565b613ca4818484613c67565b505050565b5b81811015613cc857613cbd600082613c91565b600181019050613caa565b5050565b601f821115613d0d57613cde81613bad565b613ce784613bc2565b81016020851015613cf6578190505b613d0a613d0285613bc2565b830182613ca9565b50505b505050565b600082821c905092915050565b6000613d3060001984600802613d12565b1980831691505092915050565b6000613d498383613d1f565b9150826002028217905092915050565b613d62826130f8565b67ffffffffffffffff811115613d7b57613d7a61330f565b5b613d8582546137a4565b613d90828285613ccc565b600060209050601f831160018114613dc35760008415613db1578287015190505b613dbb8582613d3d565b865550613e23565b601f198416613dd186613bad565b60005b82811015613df957848901518255600182019150602085019450602081019050613dd4565b86831015613e165784890151613e12601f891682613d1f565b8355505b6001600288020188555050505b505050505050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b6000613e61601883613103565b9150613e6c82613e2b565b602082019050919050565b60006020820190508181036000830152613e9081613e54565b9050919050565b7f5072696365206d757374206265206174206c656173742031206d6f6e65790000600082015250565b6000613ecd601e83613103565b9150613ed882613e97565b602082019050919050565b60006020820190508181036000830152613efc81613ec0565b9050919050565b60008154613f10816137a4565b613f1a8186613103565b94506001821660008114613f355760018114613f4b57613f7e565b60ff198316865281151560200286019350613f7e565b613f5485613bad565b60005b83811015613f7657815481890152600182019150602081019050613f57565b808801955050505b50505092915050565b60006080820190508181036000830152613fa1818761314f565b9050613fb06020830186613483565b8181036040830152613fc28185613f03565b9050613fd16060830184613483565b95945050505050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b6000614036602983613103565b915061404182613fda565b604082019050919050565b6000602082019050818103600083015261406581614029565b9050919050565b7f6e6674206973206e6f7420736f6c640000000000000000000000000000000000600082015250565b60006140a2600f83613103565b91506140ad8261406c565b602082019050919050565b600060208201905081810360008301526140d181614095565b9050919050565b7f546f6b656e206973206e6f74206f776e65642062792073656c6c657200000000600082015250565b600061410e601c83613103565b9150614119826140d8565b602082019050919050565b6000602082019050818103600083015261413d81614101565b9050919050565b7f506c65617365207375626d6974207468652061736b696e67207072696365206960008201527f6e206f7264657220746f20636f6d706c65746520746865207075726368617365602082015250565b60006141a0604083613103565b91506141ab82614144565b604082019050919050565b600060208201905081810360008301526141cf81614193565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061421082612fda565b915061421b83612fda565b9250828203905081811115614233576142326141d6565b5b92915050565b600061425461424f61424a846131aa565b613c31565b6131aa565b9050919050565b600061426682614239565b9050919050565b60006142788261425b565b9050919050565b6142888161426d565b82525050565b60006060820190506142a3600083018661427f565b6142b060208301856131dc565b6142bd6040830184613483565b949350505050565b600081905092915050565b60006142db826130f8565b6142e581856142c5565b93506142f5818560208601613114565b80840191505092915050565b600061430d82856142d0565b915061431982846142d0565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614381602683613103565b915061438c82614325565b604082019050919050565b600060208201905081810360008301526143b081614374565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000614413602583613103565b915061441e826143b7565b604082019050919050565b6000602082019050818103600083015261444281614406565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006144a5602483613103565b91506144b082614449565b604082019050919050565b600060208201905081810360008301526144d481614498565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614511602083613103565b915061451c826144db565b602082019050919050565b6000602082019050818103600083015261454081614504565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b600061457d601983613103565b915061458882614547565b602082019050919050565b600060208201905081810360008301526145ac81614570565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b600061460f603283613103565b915061461a826145b3565b604082019050919050565b6000602082019050818103600083015261463e81614602565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081519050919050565b600082825260208201905092915050565b600061469b82614674565b6146a5818561467f565b93506146b5818560208601613114565b6146be8161313e565b840191505092915050565b60006080820190506146de60008301876131dc565b6146eb60208301866131dc565b6146f86040830185613483565b818103606083015261470a8184614690565b905095945050505050565b6000815190506147248161309f565b92915050565b6000602082840312156147405761473f612fd0565b5b600061474e84828501614715565b91505092915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b600061478d602083613103565b915061479882614757565b602082019050919050565b600060208201905081810360008301526147bc81614780565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b60006147f9601c83613103565b9150614804826147c3565b602082019050919050565b60006020820190508181036000830152614828816147ec565b905091905056fea264697066735822122054e9941be52961f0f2c577a9a53785bfdadf810552adbcc918c0316705c2836464736f6c63430008130033
0x6080604052600436106101d75760003560e01c806370a0823111610102578063b88d4fde11610095578063e985e9c511610064578063e985e9c5146106f9578063ec9ca25814610736578063f2fde38b1461075f578063f851a44014610788576101d7565b8063b88d4fde1461064e578063be9af53614610677578063c87b56dd14610693578063cfd825a2146106d0576101d7565b806386481d40116100d157806386481d40146105925780638da5cb5b146105cf57806395d89b41146105fa578063a22cb46514610625576101d7565b806370a08231146104d8578063715018a6146105155780637e9a08c61461052c5780637f5fa46114610569576101d7565b806323b872dd1161017a57806345576f941161014957806345576f9414610405578063559e775b146104425780636352211e1461047f5780636ad85cb7146104bc576101d7565b806323b872dd146103615780632d864a061461038a57806342842e0e146103b357806342966c68146103dc576101d7565b8063081812fc116101b6578063081812fc14610281578063095ea7b3146102be5780630d029755146102e75780631ab4d7de14610324576101d7565b8062923f9e146101dc57806301ffc9a71461021957806306fdde0314610256575b600080fd5b3480156101e857600080fd5b5061020360048036038101906101fe9190613010565b6107b3565b6040516102109190613058565b60405180910390f35b34801561022557600080fd5b50610240600480360381019061023b91906130cb565b6107c5565b60405161024d9190613058565b60405180910390f35b34801561026257600080fd5b5061026b6108a7565b6040516102789190613188565b60405180910390f35b34801561028d57600080fd5b506102a860048036038101906102a39190613010565b610939565b6040516102b591906131eb565b60405180910390f35b3480156102ca57600080fd5b506102e560048036038101906102e09190613232565b61097f565b005b3480156102f357600080fd5b5061030e60048036038101906103099190613010565b610a96565b60405161031b9190613058565b60405180910390f35b34801561033057600080fd5b5061034b60048036038101906103469190613010565b610bb6565b6040516103589190613188565b60405180910390f35b34801561036d57600080fd5b5061038860048036038101906103839190613272565b610ca6565b005b34801561039657600080fd5b506103b160048036038101906103ac91906132c5565b610d06565b005b3480156103bf57600080fd5b506103da60048036038101906103d59190613272565b610dfd565b005b3480156103e857600080fd5b5061040360048036038101906103fe9190613010565b610e1d565b005b34801561041157600080fd5b5061042c6004803603810190610427919061343a565b610eba565b6040516104399190613492565b60405180910390f35b34801561044e57600080fd5b5061046960048036038101906104649190613010565b610f33565b6040516104769190613492565b60405180910390f35b34801561048b57600080fd5b506104a660048036038101906104a19190613010565b610f9b565b6040516104b391906131eb565b60405180910390f35b6104d660048036038101906104d191906134ad565b611021565b005b3480156104e457600080fd5b506104ff60048036038101906104fa919061351c565b6112fc565b60405161050c9190613492565b60405180910390f35b34801561052157600080fd5b5061052a6113b3565b005b34801561053857600080fd5b50610553600480360381019061054e9190613010565b6113c7565b6040516105609190613492565b60405180910390f35b34801561057557600080fd5b50610590600480360381019061058b9190613549565b6114da565b005b34801561059e57600080fd5b506105b960048036038101906105b49190613010565b6115da565b6040516105c69190613492565b60405180910390f35b3480156105db57600080fd5b506105e4611642565b6040516105f191906131eb565b60405180910390f35b34801561060657600080fd5b5061060f61166c565b60405161061c9190613188565b60405180910390f35b34801561063157600080fd5b5061064c600480360381019061064791906135d1565b6116fe565b005b34801561065a57600080fd5b50610675600480360381019061067091906136b2565b611714565b005b610691600480360381019061068c9190613010565b611776565b005b34801561069f57600080fd5b506106ba60048036038101906106b59190613010565b611b83565b6040516106c79190613188565b60405180910390f35b3480156106dc57600080fd5b506106f760048036038101906106f29190613010565b611beb565b005b34801561070557600080fd5b50610720600480360381019061071b9190613735565b611cae565b60405161072d9190613058565b60405180910390f35b34801561074257600080fd5b5061075d600480360381019061075891906132c5565b611d42565b005b34801561076b57600080fd5b506107866004803603810190610781919061351c565b611e99565b005b34801561079457600080fd5b5061079d611f1c565b6040516107aa91906131eb565b60405180910390f35b60006107be82611f42565b9050919050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061089057507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806108a0575061089f82611f83565b5b9050919050565b6060600080546108b6906137a4565b80601f01602080910402602001604051908101604052809291908181526020018280546108e2906137a4565b801561092f5780601f106109045761010080835404028352916020019161092f565b820191906000526020600020905b81548152906001019060200180831161091257829003601f168201915b5050505050905090565b600061094482611fed565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061098a82610f9b565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036109fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f190613847565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610a19612038565b73ffffffffffffffffffffffffffffffffffffffff161480610a485750610a4781610a42612038565b611cae565b5b610a87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7e906138d9565b60405180910390fd5b610a918383612040565b505050565b6000610aa182611f42565b610ae0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad790613945565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600a600084815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610b85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7c906139d7565b60405180910390fd5b6000600a600084815260200190815260200160002060060160009054906101000a900460ff16905080915050919050565b6060610bc182611f42565b610c00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf790613945565b60405180910390fd5b600960008381526020019081526020016000206000018054610c21906137a4565b80601f0160208091040260200160405190810160405280929190818152602001828054610c4d906137a4565b8015610c9a5780601f10610c6f57610100808354040283529160200191610c9a565b820191906000526020600020905b815481529060010190602001808311610c7d57829003601f168201915b50505050509050919050565b610cb7610cb1612038565b826120f9565b610cf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ced90613a69565b60405180910390fd5b610d0183838361218e565b505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8d90613afb565b60405180910390fd5b610d9f82611f42565b610dde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd590613945565b60405180910390fd5b8060096000848152602001908152602001600020600101819055505050565b610e1883838360405180602001604052806000815250611714565b505050565b610e2681611f42565b610e65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5c90613945565b60405180910390fd5b610e6f33826120f9565b610eae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea590613b8d565b60405180910390fd5b610eb781612487565b50565b6000610ec660086125d5565b6000610ed260086125eb565b9050610ede33826125f9565b60405180604001604052808481526020016001815250600960008381526020019081526020016000206000820151816000019081610f1c9190613d59565b506020820151816001015590505080915050919050565b6000610f3e82611f42565b610f7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7490613945565b60405180910390fd5b600a6000838152602001908152602001600020600501549050919050565b600080610fa783612617565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611018576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100f90613e77565b60405180910390fd5b80915050919050565b61102a83611f42565b611069576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106090613945565b60405180910390fd5b600082116110ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a390613ee3565b60405180910390fd5b6040518060e0016040528084815260200182815260200160096000868152602001908152602001600020600101548152602001600960008681526020019081526020016000206000018054611100906137a4565b80601f016020809104026020016040519081016040528092919081815260200182805461112c906137a4565b80156111795780601f1061114e57610100808354040283529160200191611179565b820191906000526020600020905b81548152906001019060200180831161115c57829003601f168201915b505050505081526020013373ffffffffffffffffffffffffffffffffffffffff16815260200183815260200160001515815250600a60008581526020019081526020016000206000820151816000015560208201518160010190816111de9190613d59565b506040820151816002015560608201518160030190816111fe9190613d59565b5060808201518160040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060a0820151816005015560c08201518160060160006101000a81548160ff021916908315150217905550905050600015153373ffffffffffffffffffffffffffffffffffffffff16847f69ae156f0913ea2d2d177c80b5dc7c561b5b1b3129a259a65466a6505ad0b66f846009600089815260200190815260200160002060010154600960008a8152602001908152602001600020600001886040516112ef9493929190613f87565b60405180910390a4505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361136c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113639061404c565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6113bb612654565b6113c560006126d2565b565b60006113d282611f42565b611411576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140890613945565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600a600084815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036114b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ad906139d7565b60405180910390fd5b6000600a600084815260200190815260200160002060050154905080915050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461156a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156190613afb565b60405180910390fd5b61157382611f42565b6115b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a990613945565b60405180910390fd5b806009600084815260200190815260200160002060000190816115d59190613d59565b505050565b60006115e582611f42565b611624576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161b90613945565b60405180910390fd5b60096000838152602001908152602001600020600101549050919050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606001805461167b906137a4565b80601f01602080910402602001604051908101604052809291908181526020018280546116a7906137a4565b80156116f45780601f106116c9576101008083540402835291602001916116f4565b820191906000526020600020905b8154815290600101906020018083116116d757829003601f168201915b5050505050905090565b611710611709612038565b8383612798565b5050565b61172561171f612038565b836120f9565b611764576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175b90613a69565b60405180910390fd5b61177084848484612904565b50505050565b61177f81611f42565b6117be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b590613945565b60405180910390fd5b600a600082815260200190815260200160002060060160009054906101000a900460ff1615611822576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611819906140b8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600a600083815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036118c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118be906139d7565b60405180910390fd5b600a600082815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661191d82610f9b565b73ffffffffffffffffffffffffffffffffffffffff1614611973576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196a90614124565b60405180910390fd5b6000600a60008381526020019081526020016000206005015490508034146119d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c7906141b6565b60405180910390fd5b60003390506000600a600085815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a600086815260200190815260200160002060040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a600086815260200190815260200160002060060160006101000a81548160ff021916908315150217905550611a9f81838661218e565b8073ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015611ae5573d6000803e3d6000fd5b5082341115611b41578173ffffffffffffffffffffffffffffffffffffffff166108fc8434611b149190614205565b9081150290604051600060405180830381858888f19350505050158015611b3f573d6000803e3d6000fd5b505b837f04ddd54c6b746e69ba87f862311f7670bd1d7276846778ac81cd38747b27a746838386604051611b759392919061428e565b60405180910390a250505050565b6060611b8e82611fed565b6000611b98612960565b90506000815111611bb85760405180602001604052806000815250611be3565b80611bc284612977565b604051602001611bd3929190614301565b6040516020818303038152906040525b915050919050565b611bf481611f42565b611c33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2a90613945565b60405180910390fd5b611c3d33826120f9565b611c7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7390613b8d565b60405180910390fd5b6001600a600083815260200190815260200160002060060160006101000a81548160ff02191690831515021790555050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611d4a612654565b611d5382611f42565b611d92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8990613945565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600a600084815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611e37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2e906139d7565b60405180910390fd5b60008111611e7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7190613ee3565b60405180910390fd5b80600a6000848152602001908152602001600020600501819055505050565b611ea1612654565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611f10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0790614397565b60405180910390fd5b611f19816126d2565b50565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008073ffffffffffffffffffffffffffffffffffffffff16611f6483612617565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b611ff681611f42565b612035576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202c90613e77565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166120b383610f9b565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061210583610f9b565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061214757506121468185611cae565b5b8061218557508373ffffffffffffffffffffffffffffffffffffffff1661216d84610939565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166121ae82610f9b565b73ffffffffffffffffffffffffffffffffffffffff1614612204576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121fb90614429565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612273576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226a906144bb565b60405180910390fd5b6122808383836001612a45565b8273ffffffffffffffffffffffffffffffffffffffff166122a082610f9b565b73ffffffffffffffffffffffffffffffffffffffff16146122f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ed90614429565b60405180910390fd5b6004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46124828383836001612a4b565b505050565b600061249282610f9b565b90506124a2816000846001612a45565b6124ab82610f9b565b90506004600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506002600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46125d1816000846001612a4b565b5050565b6001816000016000828254019250508190555050565b600081600001549050919050565b612613828260405180602001604052806000815250612a51565b5050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b61265c612038565b73ffffffffffffffffffffffffffffffffffffffff1661267a611642565b73ffffffffffffffffffffffffffffffffffffffff16146126d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c790614527565b60405180910390fd5b565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612806576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127fd90614593565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516128f79190613058565b60405180910390a3505050565b61290f84848461218e565b61291b84848484612aac565b61295a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295190614625565b60405180910390fd5b50505050565b606060405180602001604052806000815250905090565b60606000600161298684612c33565b01905060008167ffffffffffffffff8111156129a5576129a461330f565b5b6040519080825280601f01601f1916602001820160405280156129d75781602001600182028036833780820191505090505b509050600082602001820190505b600115612a3a578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581612a2e57612a2d614645565b5b049450600085036129e5575b819350505050919050565b50505050565b50505050565b612a5b8383612d86565b612a686000848484612aac565b612aa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9e90614625565b60405180910390fd5b505050565b6000612acd8473ffffffffffffffffffffffffffffffffffffffff16612fa3565b15612c26578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612af6612038565b8786866040518563ffffffff1660e01b8152600401612b1894939291906146c9565b6020604051808303816000875af1925050508015612b5457506040513d601f19601f82011682018060405250810190612b51919061472a565b60015b612bd6573d8060008114612b84576040519150601f19603f3d011682016040523d82523d6000602084013e612b89565b606091505b506000815103612bce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc590614625565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612c2b565b600190505b949350505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612c91577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381612c8757612c86614645565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310612cce576d04ee2d6d415b85acef81000000008381612cc457612cc3614645565b5b0492506020810190505b662386f26fc100008310612cfd57662386f26fc100008381612cf357612cf2614645565b5b0492506010810190505b6305f5e1008310612d26576305f5e1008381612d1c57612d1b614645565b5b0492506008810190505b6127108310612d4b576127108381612d4157612d40614645565b5b0492506004810190505b60648310612d6e5760648381612d6457612d63614645565b5b0492506002810190505b600a8310612d7d576001810190505b80915050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612df5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dec906147a3565b60405180910390fd5b612dfe81611f42565b15612e3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e359061480f565b60405180910390fd5b612e4c600083836001612a45565b612e5581611f42565b15612e95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e8c9061480f565b60405180910390fd5b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612f9f600083836001612a4b565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b612fed81612fda565b8114612ff857600080fd5b50565b60008135905061300a81612fe4565b92915050565b60006020828403121561302657613025612fd0565b5b600061303484828501612ffb565b91505092915050565b60008115159050919050565b6130528161303d565b82525050565b600060208201905061306d6000830184613049565b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6130a881613073565b81146130b357600080fd5b50565b6000813590506130c58161309f565b92915050565b6000602082840312156130e1576130e0612fd0565b5b60006130ef848285016130b6565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613132578082015181840152602081019050613117565b60008484015250505050565b6000601f19601f8301169050919050565b600061315a826130f8565b6131648185613103565b9350613174818560208601613114565b61317d8161313e565b840191505092915050565b600060208201905081810360008301526131a2818461314f565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006131d5826131aa565b9050919050565b6131e5816131ca565b82525050565b600060208201905061320060008301846131dc565b92915050565b61320f816131ca565b811461321a57600080fd5b50565b60008135905061322c81613206565b92915050565b6000806040838503121561324957613248612fd0565b5b60006132578582860161321d565b925050602061326885828601612ffb565b9150509250929050565b60008060006060848603121561328b5761328a612fd0565b5b60006132998682870161321d565b93505060206132aa8682870161321d565b92505060406132bb86828701612ffb565b9150509250925092565b600080604083850312156132dc576132db612fd0565b5b60006132ea85828601612ffb565b92505060206132fb85828601612ffb565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6133478261313e565b810181811067ffffffffffffffff821117156133665761336561330f565b5b80604052505050565b6000613379612fc6565b9050613385828261333e565b919050565b600067ffffffffffffffff8211156133a5576133a461330f565b5b6133ae8261313e565b9050602081019050919050565b82818337600083830152505050565b60006133dd6133d88461338a565b61336f565b9050828152602081018484840111156133f9576133f861330a565b5b6134048482856133bb565b509392505050565b600082601f83011261342157613420613305565b5b81356134318482602086016133ca565b91505092915050565b6000602082840312156134505761344f612fd0565b5b600082013567ffffffffffffffff81111561346e5761346d612fd5565b5b61347a8482850161340c565b91505092915050565b61348c81612fda565b82525050565b60006020820190506134a76000830184613483565b92915050565b6000806000606084860312156134c6576134c5612fd0565b5b60006134d486828701612ffb565b93505060206134e586828701612ffb565b925050604084013567ffffffffffffffff81111561350657613505612fd5565b5b6135128682870161340c565b9150509250925092565b60006020828403121561353257613531612fd0565b5b60006135408482850161321d565b91505092915050565b600080604083850312156135605761355f612fd0565b5b600061356e85828601612ffb565b925050602083013567ffffffffffffffff81111561358f5761358e612fd5565b5b61359b8582860161340c565b9150509250929050565b6135ae8161303d565b81146135b957600080fd5b50565b6000813590506135cb816135a5565b92915050565b600080604083850312156135e8576135e7612fd0565b5b60006135f68582860161321d565b9250506020613607858286016135bc565b9150509250929050565b600067ffffffffffffffff82111561362c5761362b61330f565b5b6136358261313e565b9050602081019050919050565b600061365561365084613611565b61336f565b9050828152602081018484840111156136715761367061330a565b5b61367c8482856133bb565b509392505050565b600082601f83011261369957613698613305565b5b81356136a9848260208601613642565b91505092915050565b600080600080608085870312156136cc576136cb612fd0565b5b60006136da8782880161321d565b94505060206136eb8782880161321d565b93505060406136fc87828801612ffb565b925050606085013567ffffffffffffffff81111561371d5761371c612fd5565b5b61372987828801613684565b91505092959194509250565b6000806040838503121561374c5761374b612fd0565b5b600061375a8582860161321d565b925050602061376b8582860161321d565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806137bc57607f821691505b6020821081036137cf576137ce613775565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000613831602183613103565b915061383c826137d5565b604082019050919050565b6000602082019050818103600083015261386081613824565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b60006138c3603d83613103565b91506138ce82613867565b604082019050919050565b600060208201905081810360008301526138f2816138b6565b9050919050565b7f546f6b656e20646f6573206e6f74206578697374000000000000000000000000600082015250565b600061392f601483613103565b915061393a826138f9565b602082019050919050565b6000602082019050818103600083015261395e81613922565b9050919050565b7f546f6b656e206973206e6f74207265676973746572656420696e20746865206d60008201527f61726b6574000000000000000000000000000000000000000000000000000000602082015250565b60006139c1602583613103565b91506139cc82613965565b604082019050919050565b600060208201905081810360008301526139f0816139b4565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b6000613a53602d83613103565b9150613a5e826139f7565b604082019050919050565b60006020820190508181036000830152613a8281613a46565b9050919050565b7f4f6e6c792061646d696e2063616e2063616c6c20746869732066756e6374696f60008201527f6e00000000000000000000000000000000000000000000000000000000000000602082015250565b6000613ae5602183613103565b9150613af082613a89565b604082019050919050565b60006020820190508181036000830152613b1481613ad8565b9050919050565b7f6275726e206973206f6e6c7920616c6c6f77656420746f20746865206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000613b77602183613103565b9150613b8282613b1b565b604082019050919050565b60006020820190508181036000830152613ba681613b6a565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302613c0f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613bd2565b613c198683613bd2565b95508019841693508086168417925050509392505050565b6000819050919050565b6000613c56613c51613c4c84612fda565b613c31565b612fda565b9050919050565b6000819050919050565b613c7083613c3b565b613c84613c7c82613c5d565b848454613bdf565b825550505050565b600090565b613c99613c8c565b613ca4818484613c67565b505050565b5b81811015613cc857613cbd600082613c91565b600181019050613caa565b5050565b601f821115613d0d57613cde81613bad565b613ce784613bc2565b81016020851015613cf6578190505b613d0a613d0285613bc2565b830182613ca9565b50505b505050565b600082821c905092915050565b6000613d3060001984600802613d12565b1980831691505092915050565b6000613d498383613d1f565b9150826002028217905092915050565b613d62826130f8565b67ffffffffffffffff811115613d7b57613d7a61330f565b5b613d8582546137a4565b613d90828285613ccc565b600060209050601f831160018114613dc35760008415613db1578287015190505b613dbb8582613d3d565b865550613e23565b601f198416613dd186613bad565b60005b82811015613df957848901518255600182019150602085019450602081019050613dd4565b86831015613e165784890151613e12601f891682613d1f565b8355505b6001600288020188555050505b505050505050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b6000613e61601883613103565b9150613e6c82613e2b565b602082019050919050565b60006020820190508181036000830152613e9081613e54565b9050919050565b7f5072696365206d757374206265206174206c656173742031206d6f6e65790000600082015250565b6000613ecd601e83613103565b9150613ed882613e97565b602082019050919050565b60006020820190508181036000830152613efc81613ec0565b9050919050565b60008154613f10816137a4565b613f1a8186613103565b94506001821660008114613f355760018114613f4b57613f7e565b60ff198316865281151560200286019350613f7e565b613f5485613bad565b60005b83811015613f7657815481890152600182019150602081019050613f57565b808801955050505b50505092915050565b60006080820190508181036000830152613fa1818761314f565b9050613fb06020830186613483565b8181036040830152613fc28185613f03565b9050613fd16060830184613483565b95945050505050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b6000614036602983613103565b915061404182613fda565b604082019050919050565b6000602082019050818103600083015261406581614029565b9050919050565b7f6e6674206973206e6f7420736f6c640000000000000000000000000000000000600082015250565b60006140a2600f83613103565b91506140ad8261406c565b602082019050919050565b600060208201905081810360008301526140d181614095565b9050919050565b7f546f6b656e206973206e6f74206f776e65642062792073656c6c657200000000600082015250565b600061410e601c83613103565b9150614119826140d8565b602082019050919050565b6000602082019050818103600083015261413d81614101565b9050919050565b7f506c65617365207375626d6974207468652061736b696e67207072696365206960008201527f6e206f7264657220746f20636f6d706c65746520746865207075726368617365602082015250565b60006141a0604083613103565b91506141ab82614144565b604082019050919050565b600060208201905081810360008301526141cf81614193565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061421082612fda565b915061421b83612fda565b9250828203905081811115614233576142326141d6565b5b92915050565b600061425461424f61424a846131aa565b613c31565b6131aa565b9050919050565b600061426682614239565b9050919050565b60006142788261425b565b9050919050565b6142888161426d565b82525050565b60006060820190506142a3600083018661427f565b6142b060208301856131dc565b6142bd6040830184613483565b949350505050565b600081905092915050565b60006142db826130f8565b6142e581856142c5565b93506142f5818560208601613114565b80840191505092915050565b600061430d82856142d0565b915061431982846142d0565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614381602683613103565b915061438c82614325565b604082019050919050565b600060208201905081810360008301526143b081614374565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000614413602583613103565b915061441e826143b7565b604082019050919050565b6000602082019050818103600083015261444281614406565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006144a5602483613103565b91506144b082614449565b604082019050919050565b600060208201905081810360008301526144d481614498565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614511602083613103565b915061451c826144db565b602082019050919050565b6000602082019050818103600083015261454081614504565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b600061457d601983613103565b915061458882614547565b602082019050919050565b600060208201905081810360008301526145ac81614570565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b600061460f603283613103565b915061461a826145b3565b604082019050919050565b6000602082019050818103600083015261463e81614602565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081519050919050565b600082825260208201905092915050565b600061469b82614674565b6146a5818561467f565b93506146b5818560208601613114565b6146be8161313e565b840191505092915050565b60006080820190506146de60008301876131dc565b6146eb60208301866131dc565b6146f86040830185613483565b818103606083015261470a8184614690565b905095945050505050565b6000815190506147248161309f565b92915050565b6000602082840312156147405761473f612fd0565b5b600061474e84828501614715565b91505092915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b600061478d602083613103565b915061479882614757565b602082019050919050565b600060208201905081810360008301526147bc81614780565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b60006147f9601c83613103565b9150614804826147c3565b602082019050919050565b60006020820190508181036000830152614828816147ec565b905091905056fea264697066735822122054e9941be52961f0f2c577a9a53785bfdadf810552adbcc918c0316705c2836464736f6c63430008130033