60806040526001600a553480156200001657600080fd5b506040518060400160405280600781526020017f4950546f6b656e000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f495054000000000000000000000000000000000000000000000000000000000081525081600090816200009491906200036a565b508060019081620000a691906200036a565b50505033600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000451565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200017257607f821691505b6020821081036200018857620001876200012a565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620001f27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620001b3565b620001fe8683620001b3565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200024b620002456200023f8462000216565b62000220565b62000216565b9050919050565b6000819050919050565b62000267836200022a565b6200027f620002768262000252565b848454620001c0565b825550505050565b600090565b6200029662000287565b620002a38184846200025c565b505050565b5b81811015620002cb57620002bf6000826200028c565b600181019050620002a9565b5050565b601f8211156200031a57620002e4816200018e565b620002ef84620001a3565b81016020851015620002ff578190505b620003176200030e85620001a3565b830182620002a8565b50505b505050565b600082821c905092915050565b60006200033f600019846008026200031f565b1980831691505092915050565b60006200035a83836200032c565b9150826002028217905092915050565b6200037582620000f0565b67ffffffffffffffff811115620003915762000390620000fb565b5b6200039d825462000159565b620003aa828285620002cf565b600060209050601f831160018114620003e25760008415620003cd578287015190505b620003d985826200034c565b86555062000449565b601f198416620003f2866200018e565b60005b828110156200041c57848901518255600182019150602085019450602081019050620003f5565b868310156200043c578489015162000438601f8916826200032c565b8355505b6001600288020188555050505b505050505050565b613fce80620004616000396000f3fe6080604052600436106101405760003560e01c806372b3b620116100b6578063c322579c1161006f578063c322579c14610478578063c87b56dd14610494578063d1a88ae5146104d1578063e0391b09146104fc578063e985e9c514610527578063ef2d17461461056457610140565b806372b3b620146103725780638e264590146103a257806395d89b41146103df5780639b1225c41461040a578063a22cb46514610426578063b88d4fde1461044f57610140565b806323b872dd1161010857806323b872dd1461025057806342842e0e14610279578063629cb2e4146102a25780636352211e146102cd57806368f1945f1461030a57806370a082311461033557610140565b806301ffc9a714610145578063024bd6911461018257806306fdde03146101bf578063081812fc146101ea578063095ea7b314610227575b600080fd5b34801561015157600080fd5b5061016c6004803603810190610167919061295b565b61058f565b60405161017991906129a3565b60405180910390f35b34801561018e57600080fd5b506101a960048036038101906101a49190612b3a565b610671565b6040516101b69190612ba5565b60405180910390f35b3480156101cb57600080fd5b506101d46106b3565b6040516101e19190612c3f565b60405180910390f35b3480156101f657600080fd5b50610211600480360381019061020c9190612c61565b610745565b60405161021e9190612ccf565b60405180910390f35b34801561023357600080fd5b5061024e60048036038101906102499190612d16565b61078b565b005b34801561025c57600080fd5b5061027760048036038101906102729190612d56565b6108a2565b005b34801561028557600080fd5b506102a0600480360381019061029b9190612d56565b610902565b005b3480156102ae57600080fd5b506102b7610922565b6040516102c49190612eff565b60405180910390f35b3480156102d957600080fd5b506102f460048036038101906102ef9190612c61565b610d03565b6040516103019190612ccf565b60405180910390f35b34801561031657600080fd5b5061031f610d89565b60405161032c9190612ba5565b60405180910390f35b34801561034157600080fd5b5061035c60048036038101906103579190612f21565b610d93565b6040516103699190612ba5565b60405180910390f35b61038c60048036038101906103879190612b3a565b610e4a565b6040516103999190612ba5565b60405180910390f35b3480156103ae57600080fd5b506103c960048036038101906103c49190612c61565b610e8c565b6040516103d69190612fb6565b60405180910390f35b3480156103eb57600080fd5b506103f4610f94565b6040516104019190612c3f565b60405180910390f35b610424600480360381019061041f9190612c61565b611026565b005b34801561043257600080fd5b5061044d60048036038101906104489190612ffd565b611218565b005b34801561045b57600080fd5b50610476600480360381019061047191906130de565b61122e565b005b610492600480360381019061048d9190612c61565b611290565b005b3480156104a057600080fd5b506104bb60048036038101906104b69190612c61565b61132a565b6040516104c89190612c3f565b60405180910390f35b3480156104dd57600080fd5b506104e661143c565b6040516104f39190612fb6565b60405180910390f35b34801561050857600080fd5b50610511611551565b60405161051e9190612eff565b60405180910390f35b34801561053357600080fd5b5061054e60048036038101906105499190613161565b611723565b60405161055b91906129a3565b60405180910390f35b34801561057057600080fd5b506105796117b7565b6040516105869190612ba5565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061065a57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061066a5750610669826117c8565b5b9050919050565b600061067d6007611832565b60006106896007611848565b90506106953382611856565b61069f8185611874565b6106a981846118e1565b8091505092915050565b6060600080546106c2906131d0565b80601f01602080910402602001604051908101604052809291908181526020018280546106ee906131d0565b801561073b5780601f106107105761010080835404028352916020019161073b565b820191906000526020600020905b81548152906001019060200180831161071e57829003601f168201915b5050505050905090565b600061075082611ae4565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061079682610d03565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610806576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fd90613273565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610825611b2f565b73ffffffffffffffffffffffffffffffffffffffff16148061085457506108538161084e611b2f565b611723565b5b610893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088a90613305565b60405180910390fd5b61089d8383611b37565b505050565b6108b36108ad611b2f565b82611bf0565b6108f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e990613397565b60405180910390fd5b6108fd838383611c85565b505050565b61091d8383836040518060200160405280600081525061122e565b505050565b606060006109306007611848565b9050600080600080600090505b84811015610a56573373ffffffffffffffffffffffffffffffffffffffff16600b600060018461096d91906133e6565b815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610a2e57503373ffffffffffffffffffffffffffffffffffffffff16600b60006001846109e491906133e6565b815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b15610a4357600184610a4091906133e6565b93505b8080610a4e9061341a565b91505061093d565b5060008367ffffffffffffffff811115610a7357610a726129d9565b5b604051908082528060200260200182016040528015610aac57816020015b610a99612892565b815260200190600190039081610a915790505b50905060005b85811015610cf7573373ffffffffffffffffffffffffffffffffffffffff16600b6000600184610ae291906133e6565b815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610ba357503373ffffffffffffffffffffffffffffffffffffffff16600b6000600184610b5991906133e6565b815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b15610ce457600181610bb591906133e6565b92506000600b60008581526020019081526020016000209050806040518060a0016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382015481526020016004820160009054906101000a900460ff161515151581525050838681518110610cc857610cc7613462565b5b6020026020010181905250600185610ce091906133e6565b9450505b8080610cef9061341a565b915050610ab2565b50809550505050505090565b600080610d0f83611f7e565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d77906134dd565b60405180910390fd5b80915050919050565b6000600a54905090565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfa9061356f565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000610e566007611832565b6000610e626007611848565b9050610e6e3382611856565b610e788185611874565b610e8281846118e1565b8091505092915050565b610e94612892565b600b60008381526020019081526020016000206040518060a0016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382015481526020016004820160009054906101000a900460ff1615151515815250509050919050565b606060018054610fa3906131d0565b80601f0160208091040260200160405190810160405280929190818152602001828054610fcf906131d0565b801561101c5780601f10610ff15761010080835404028352916020019161101c565b820191906000526020600020905b815481529060010190602001808311610fff57829003601f168201915b5050505050905090565b6000600b60008381526020019081526020016000206003015490506000600b600084815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508134146110be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b590613601565b60405180910390fd5b6001600b600085815260200190815260200160002060040160006101000a81548160ff02191690831515021790555033600b600085815260200190815260200160002060020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061114c6008611832565b611157303385611c85565b611161308461078b565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc600a549081150290604051600060405180830381858888f193505050501580156111cb573d6000803e3d6000fd5b508073ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015611212573d6000803e3d6000fd5b50505050565b61122a611223611b2f565b8383611fbb565b5050565b61123f611239611b2f565b83611bf0565b61127e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127590613397565b60405180910390fd5b61128a84848484612127565b50505050565b3373ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611320576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131790613693565b60405180910390fd5b80600a8190555050565b606061133582611ae4565b6000600660008481526020019081526020016000208054611355906131d0565b80601f0160208091040260200160405190810160405280929190818152602001828054611381906131d0565b80156113ce5780601f106113a3576101008083540402835291602001916113ce565b820191906000526020600020905b8154815290600101906020018083116113b157829003601f168201915b5050505050905060006113df612183565b905060008151036113f4578192505050611437565b6000825111156114295780826040516020016114119291906136ef565b60405160208183030381529060405292505050611437565b6114328461219a565b925050505b919050565b611444612892565b60006114506007611848565b9050600b60008281526020019081526020016000206040518060a0016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382015481526020016004820160009054906101000a900460ff16151515158152505091505090565b6060600061155f6007611848565b905060008167ffffffffffffffff81111561157d5761157c6129d9565b5b6040519080825280602002602001820160405280156115b657816020015b6115a3612892565b81526020019060019003908161159b5790505b50905060008080600090505b84811015611718576001816115d791906133e6565b91506000600b60008481526020019081526020016000209050806040518060a0016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382015481526020016004820160009054906101000a900460ff1615151515815250508585815181106116ea576116e9613462565b5b602002602001018190525060018461170291906133e6565b93505080806117109061341a565b9150506115c2565b508294505050505090565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60006117c36007611848565b905090565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6001816000016000828254019250508190555050565b600081600001549050919050565b611870828260405180602001604052806000815250612202565b5050565b61187d8261225d565b6118bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b390613785565b60405180910390fd5b806006600084815260200190815260200160002090816118dc9190613951565b505050565b600a543414611925576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191c90613a95565b60405180910390fd5b60008111611968576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195f90613b27565b60405180910390fd5b6040518060a001604052808381526020013073ffffffffffffffffffffffffffffffffffffffff1681526020013373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200160011515815250600b60008481526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506060820151816003015560808201518160040160006101000a81548160ff021916908315150217905550905050611aa1333084611c85565b817f9339409317fd01fabff48b703019016f49159bacc801ae872d2ca637d226e4c03033846001604051611ad89493929190613b47565b60405180910390a25050565b611aed8161225d565b611b2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b23906134dd565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611baa83610d03565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611bfc83610d03565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611c3e5750611c3d8185611723565b5b80611c7c57508373ffffffffffffffffffffffffffffffffffffffff16611c6484610745565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611ca582610d03565b73ffffffffffffffffffffffffffffffffffffffff1614611cfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf290613bfe565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6190613c90565b60405180910390fd5b611d77838383600161229e565b8273ffffffffffffffffffffffffffffffffffffffff16611d9782610d03565b73ffffffffffffffffffffffffffffffffffffffff1614611ded576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de490613bfe565b60405180910390fd5b6004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611f7983838360016122a4565b505050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612029576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202090613cfc565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161211a91906129a3565b60405180910390a3505050565b612132848484611c85565b61213e848484846122aa565b61217d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217490613d8e565b60405180910390fd5b50505050565b606060405180602001604052806000815250905090565b60606121a582611ae4565b60006121af612183565b905060008151116121cf57604051806020016040528060008152506121fa565b806121d984612431565b6040516020016121ea9291906136ef565b6040516020818303038152906040525b915050919050565b61220c83836124ff565b61221960008484846122aa565b612258576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224f90613d8e565b60405180910390fd5b505050565b60008073ffffffffffffffffffffffffffffffffffffffff1661227f83611f7e565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b50505050565b50505050565b60006122cb8473ffffffffffffffffffffffffffffffffffffffff1661271c565b15612424578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026122f4611b2f565b8786866040518563ffffffff1660e01b81526004016123169493929190613e03565b6020604051808303816000875af192505050801561235257506040513d601f19601f8201168201806040525081019061234f9190613e64565b60015b6123d4573d8060008114612382576040519150601f19603f3d011682016040523d82523d6000602084013e612387565b606091505b5060008151036123cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c390613d8e565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612429565b600190505b949350505050565b6060600060016124408461273f565b01905060008167ffffffffffffffff81111561245f5761245e6129d9565b5b6040519080825280601f01601f1916602001820160405280156124915781602001600182028036833780820191505090505b509050600082602001820190505b6001156124f4578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85816124e8576124e7613e91565b5b0494506000850361249f575b819350505050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361256e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256590613f0c565b60405180910390fd5b6125778161225d565b156125b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ae90613f78565b60405180910390fd5b6125c560008383600161229e565b6125ce8161225d565b1561260e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260590613f78565b60405180910390fd5b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46127186000838360016122a4565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061279d577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161279357612792613e91565b5b0492506040810190505b6d04ee2d6d415b85acef810000000083106127da576d04ee2d6d415b85acef810000000083816127d0576127cf613e91565b5b0492506020810190505b662386f26fc10000831061280957662386f26fc1000083816127ff576127fe613e91565b5b0492506010810190505b6305f5e1008310612832576305f5e100838161282857612827613e91565b5b0492506008810190505b612710831061285757612710838161284d5761284c613e91565b5b0492506004810190505b6064831061287a57606483816128705761286f613e91565b5b0492506002810190505b600a8310612889576001810190505b80915050919050565b6040518060a0016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000151581525090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61293881612903565b811461294357600080fd5b50565b6000813590506129558161292f565b92915050565b600060208284031215612971576129706128f9565b5b600061297f84828501612946565b91505092915050565b60008115159050919050565b61299d81612988565b82525050565b60006020820190506129b86000830184612994565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612a11826129c8565b810181811067ffffffffffffffff82111715612a3057612a2f6129d9565b5b80604052505050565b6000612a436128ef565b9050612a4f8282612a08565b919050565b600067ffffffffffffffff821115612a6f57612a6e6129d9565b5b612a78826129c8565b9050602081019050919050565b82818337600083830152505050565b6000612aa7612aa284612a54565b612a39565b905082815260208101848484011115612ac357612ac26129c3565b5b612ace848285612a85565b509392505050565b600082601f830112612aeb57612aea6129be565b5b8135612afb848260208601612a94565b91505092915050565b6000819050919050565b612b1781612b04565b8114612b2257600080fd5b50565b600081359050612b3481612b0e565b92915050565b60008060408385031215612b5157612b506128f9565b5b600083013567ffffffffffffffff811115612b6f57612b6e6128fe565b5b612b7b85828601612ad6565b9250506020612b8c85828601612b25565b9150509250929050565b612b9f81612b04565b82525050565b6000602082019050612bba6000830184612b96565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612bfa578082015181840152602081019050612bdf565b60008484015250505050565b6000612c1182612bc0565b612c1b8185612bcb565b9350612c2b818560208601612bdc565b612c34816129c8565b840191505092915050565b60006020820190508181036000830152612c598184612c06565b905092915050565b600060208284031215612c7757612c766128f9565b5b6000612c8584828501612b25565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612cb982612c8e565b9050919050565b612cc981612cae565b82525050565b6000602082019050612ce46000830184612cc0565b92915050565b612cf381612cae565b8114612cfe57600080fd5b50565b600081359050612d1081612cea565b92915050565b60008060408385031215612d2d57612d2c6128f9565b5b6000612d3b85828601612d01565b9250506020612d4c85828601612b25565b9150509250929050565b600080600060608486031215612d6f57612d6e6128f9565b5b6000612d7d86828701612d01565b9350506020612d8e86828701612d01565b9250506040612d9f86828701612b25565b9150509250925092565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612dde81612b04565b82525050565b6000612def82612c8e565b9050919050565b612dff81612de4565b82525050565b612e0e81612988565b82525050565b60a082016000820151612e2a6000850182612dd5565b506020820151612e3d6020850182612df6565b506040820151612e506040850182612df6565b506060820151612e636060850182612dd5565b506080820151612e766080850182612e05565b50505050565b6000612e888383612e14565b60a08301905092915050565b6000602082019050919050565b6000612eac82612da9565b612eb68185612db4565b9350612ec183612dc5565b8060005b83811015612ef2578151612ed98882612e7c565b9750612ee483612e94565b925050600181019050612ec5565b5085935050505092915050565b60006020820190508181036000830152612f198184612ea1565b905092915050565b600060208284031215612f3757612f366128f9565b5b6000612f4584828501612d01565b91505092915050565b60a082016000820151612f646000850182612dd5565b506020820151612f776020850182612df6565b506040820151612f8a6040850182612df6565b506060820151612f9d6060850182612dd5565b506080820151612fb06080850182612e05565b50505050565b600060a082019050612fcb6000830184612f4e565b92915050565b612fda81612988565b8114612fe557600080fd5b50565b600081359050612ff781612fd1565b92915050565b60008060408385031215613014576130136128f9565b5b600061302285828601612d01565b925050602061303385828601612fe8565b9150509250929050565b600067ffffffffffffffff821115613058576130576129d9565b5b613061826129c8565b9050602081019050919050565b600061308161307c8461303d565b612a39565b90508281526020810184848401111561309d5761309c6129c3565b5b6130a8848285612a85565b509392505050565b600082601f8301126130c5576130c46129be565b5b81356130d584826020860161306e565b91505092915050565b600080600080608085870312156130f8576130f76128f9565b5b600061310687828801612d01565b945050602061311787828801612d01565b935050604061312887828801612b25565b925050606085013567ffffffffffffffff811115613149576131486128fe565b5b613155878288016130b0565b91505092959194509250565b60008060408385031215613178576131776128f9565b5b600061318685828601612d01565b925050602061319785828601612d01565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806131e857607f821691505b6020821081036131fb576131fa6131a1565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b600061325d602183612bcb565b915061326882613201565b604082019050919050565b6000602082019050818103600083015261328c81613250565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b60006132ef603d83612bcb565b91506132fa82613293565b604082019050919050565b6000602082019050818103600083015261331e816132e2565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b6000613381602d83612bcb565b915061338c82613325565b604082019050919050565b600060208201905081810360008301526133b081613374565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006133f182612b04565b91506133fc83612b04565b9250828201905080821115613414576134136133b7565b5b92915050565b600061342582612b04565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613457576134566133b7565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b60006134c7601883612bcb565b91506134d282613491565b602082019050919050565b600060208201905081810360008301526134f6816134ba565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b6000613559602983612bcb565b9150613564826134fd565b604082019050919050565b600060208201905081810360008301526135888161354c565b9050919050565b7f506c65617365207375626d6974207468652061736b696e67207072696365206960008201527f6e206f7264657220746f20636f6d706c65746520746865207075726368617365602082015250565b60006135eb604083612bcb565b91506135f68261358f565b604082019050919050565b6000602082019050818103600083015261361a816135de565b9050919050565b7f4f6e6c79206f776e65722063616e20757064617465206c697374696e6720707260008201527f6963650000000000000000000000000000000000000000000000000000000000602082015250565b600061367d602383612bcb565b915061368882613621565b604082019050919050565b600060208201905081810360008301526136ac81613670565b9050919050565b600081905092915050565b60006136c982612bc0565b6136d381856136b3565b93506136e3818560208601612bdc565b80840191505092915050565b60006136fb82856136be565b915061370782846136be565b91508190509392505050565b7f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60008201527f6578697374656e7420746f6b656e000000000000000000000000000000000000602082015250565b600061376f602e83612bcb565b915061377a82613713565b604082019050919050565b6000602082019050818103600083015261379e81613762565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026138077fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826137ca565b61381186836137ca565b95508019841693508086168417925050509392505050565b6000819050919050565b600061384e61384961384484612b04565b613829565b612b04565b9050919050565b6000819050919050565b61386883613833565b61387c61387482613855565b8484546137d7565b825550505050565b600090565b613891613884565b61389c81848461385f565b505050565b5b818110156138c0576138b5600082613889565b6001810190506138a2565b5050565b601f821115613905576138d6816137a5565b6138df846137ba565b810160208510156138ee578190505b6139026138fa856137ba565b8301826138a1565b50505b505050565b600082821c905092915050565b60006139286000198460080261390a565b1980831691505092915050565b60006139418383613917565b9150826002028217905092915050565b61395a82612bc0565b67ffffffffffffffff811115613973576139726129d9565b5b61397d82546131d0565b6139888282856138c4565b600060209050601f8311600181146139bb57600084156139a9578287015190505b6139b38582613935565b865550613a1b565b601f1984166139c9866137a5565b60005b828110156139f1578489015182556001820191506020850194506020810190506139cc565b86831015613a0e5784890151613a0a601f891682613917565b8355505b6001600288020188555050505b505050505050565b7f486f706566756c6c792073656e64696e672074686520636f727265637420707260008201527f6963650000000000000000000000000000000000000000000000000000000000602082015250565b6000613a7f602383612bcb565b9150613a8a82613a23565b604082019050919050565b60006020820190508181036000830152613aae81613a72565b9050919050565b7f4d616b652073757265207468652070726963652069736e2774206e656761746960008201527f7665000000000000000000000000000000000000000000000000000000000000602082015250565b6000613b11602283612bcb565b9150613b1c82613ab5565b604082019050919050565b60006020820190508181036000830152613b4081613b04565b9050919050565b6000608082019050613b5c6000830187612cc0565b613b696020830186612cc0565b613b766040830185612b96565b613b836060830184612994565b95945050505050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000613be8602583612bcb565b9150613bf382613b8c565b604082019050919050565b60006020820190508181036000830152613c1781613bdb565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613c7a602483612bcb565b9150613c8582613c1e565b604082019050919050565b60006020820190508181036000830152613ca981613c6d565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000613ce6601983612bcb565b9150613cf182613cb0565b602082019050919050565b60006020820190508181036000830152613d1581613cd9565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000613d78603283612bcb565b9150613d8382613d1c565b604082019050919050565b60006020820190508181036000830152613da781613d6b565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000613dd582613dae565b613ddf8185613db9565b9350613def818560208601612bdc565b613df8816129c8565b840191505092915050565b6000608082019050613e186000830187612cc0565b613e256020830186612cc0565b613e326040830185612b96565b8181036060830152613e448184613dca565b905095945050505050565b600081519050613e5e8161292f565b92915050565b600060208284031215613e7a57613e796128f9565b5b6000613e8884828501613e4f565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000613ef6602083612bcb565b9150613f0182613ec0565b602082019050919050565b60006020820190508181036000830152613f2581613ee9565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000613f62601c83612bcb565b9150613f6d82613f2c565b602082019050919050565b60006020820190508181036000830152613f9181613f55565b905091905056fea2646970667358221220afd8a6b03c887b2ea107995e17477efbcd7ee82af9fa483089879822f16d10da64736f6c63430008120033