{"remainingRequest":"D:\\源码\\vue-element-admin-master\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\源码\\vue-element-admin-master\\src\\components\\ImageCropper\\index.vue?vue&type=style&index=0&lang=scss&","dependencies":[{"path":"D:\\源码\\vue-element-admin-master\\src\\components\\ImageCropper\\index.vue","mtime":1649647926000},{"path":"D:\\源码\\vue-element-admin-master\\node_modules\\css-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\源码\\vue-element-admin-master\\node_modules\\vue-loader\\lib\\loaders\\stylePostLoader.js","mtime":499162500000},{"path":"D:\\源码\\vue-element-admin-master\\node_modules\\postcss-loader\\src\\index.js","mtime":499162500000},{"path":"D:\\源码\\vue-element-admin-master\\node_modules\\sass-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\源码\\vue-element-admin-master\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\源码\\vue-element-admin-master\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgpAY2hhcnNldCAiVVRGLTgiOwpALXdlYmtpdC1rZXlmcmFtZXMgdmljcF9wcm9ncmVzcyB7CiAgMCUgewogICAgYmFja2dyb3VuZC1wb3NpdGlvbi15OiAwOwogIH0KICAxMDAlIHsKICAgIGJhY2tncm91bmQtcG9zaXRpb24teTogNDBweDsKICB9Cn0KQGtleWZyYW1lcyB2aWNwX3Byb2dyZXNzIHsKICAwJSB7CiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uLXk6IDA7CiAgfQogIDEwMCUgewogICAgYmFja2dyb3VuZC1wb3NpdGlvbi15OiA0MHB4OwogIH0KfQpALXdlYmtpdC1rZXlmcmFtZXMgdmljcCB7CiAgMCUgewogICAgb3BhY2l0eTogMDsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwKSB0cmFuc2xhdGV5KC02MHB4KTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMCkgdHJhbnNsYXRleSgtNjBweCk7CiAgfQogIDEwMCUgewogICAgb3BhY2l0eTogMTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKSB0cmFuc2xhdGV5KDApOwogICAgdHJhbnNmb3JtOiBzY2FsZSgxKSB0cmFuc2xhdGV5KDApOwogIH0KfQpAa2V5ZnJhbWVzIHZpY3AgewogIDAlIHsKICAgIG9wYWNpdHk6IDA7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMCkgdHJhbnNsYXRleSgtNjBweCk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDApIHRyYW5zbGF0ZXkoLTYwcHgpOwogIH0KICAxMDAlIHsKICAgIG9wYWNpdHk6IDE7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSkgdHJhbnNsYXRleSgwKTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMSkgdHJhbnNsYXRleSgwKTsKICB9Cn0KLnZ1ZS1pbWFnZS1jcm9wLXVwbG9hZCB7CiAgcG9zaXRpb246IGZpeGVkOwogIGRpc3BsYXk6IGJsb2NrOwogIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsKICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogIHotaW5kZXg6IDEwMDAwOwogIHRvcDogMDsKICBib3R0b206IDA7CiAgbGVmdDogMDsKICByaWdodDogMDsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IDEwMCU7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjY1KTsKICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50OwogIC1tb3otdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KLnZ1ZS1pbWFnZS1jcm9wLXVwbG9hZCAudmljcC13cmFwIHsKICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMXB4IDNweCAwIHJnYmEoMCwgMCwgMCwgMC4yMyk7CiAgYm94LXNoYWRvdzogMCAxcHggM3B4IDAgcmdiYSgwLCAwLCAwLCAwLjIzKTsKICBwb3NpdGlvbjogZml4ZWQ7CiAgZGlzcGxheTogYmxvY2s7CiAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94OwogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgei1pbmRleDogMTAwMDA7CiAgdG9wOiAwOwogIGJvdHRvbTogMDsKICBsZWZ0OiAwOwogIHJpZ2h0OiAwOwogIG1hcmdpbjogYXV0bzsKICB3aWR0aDogNjAwcHg7CiAgaGVpZ2h0OiAzMzBweDsKICBwYWRkaW5nOiAyNXB4OwogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgYm9yZGVyLXJhZGl1czogMnB4OwogIC13ZWJraXQtYW5pbWF0aW9uOiB2aWNwIDAuMTJzIGVhc2UtaW47CiAgYW5pbWF0aW9uOiB2aWNwIDAuMTJzIGVhc2UtaW47Cn0KLnZ1ZS1pbWFnZS1jcm9wLXVwbG9hZCAudmljcC13cmFwIC52aWNwLWNsb3NlIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgcmlnaHQ6IC0zMHB4OwogIHRvcDogLTMwcHg7Cn0KLnZ1ZS1pbWFnZS1jcm9wLXVwbG9hZCAudmljcC13cmFwIC52aWNwLWNsb3NlIC52aWNwLWljb240IHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZGlzcGxheTogYmxvY2s7CiAgd2lkdGg6IDMwcHg7CiAgaGVpZ2h0OiAzMHB4OwogIGN1cnNvcjogcG9pbnRlcjsKICAtd2Via2l0LXRyYW5zaXRpb246IC13ZWJraXQtdHJhbnNmb3JtIDAuMThzOwogIHRyYW5zaXRpb246IC13ZWJraXQtdHJhbnNmb3JtIDAuMThzOwogIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjE4czsKICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4xOHMsIC13ZWJraXQtdHJhbnNmb3JtIDAuMThzOwogIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMCk7CiAgLW1zLXRyYW5zZm9ybTogcm90YXRlKDApOwogIHRyYW5zZm9ybTogcm90YXRlKDApOwp9Ci52dWUtaW1hZ2UtY3JvcC11cGxvYWQgLnZpY3Atd3JhcCAudmljcC1jbG9zZSAudmljcC1pY29uNDo6YWZ0ZXIsCi52dWUtaW1hZ2UtY3JvcC11cGxvYWQgLnZpY3Atd3JhcCAudmljcC1jbG9zZSAudmljcC1pY29uNDo6YmVmb3JlIHsKICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMXB4IDNweCAwIHJnYmEoMCwgMCwgMCwgMC4yMyk7CiAgYm94LXNoYWRvdzogMCAxcHggM3B4IDAgcmdiYSgwLCAwLCAwLCAwLjIzKTsKICBjb250ZW50OiAiIjsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAxMnB4OwogIGxlZnQ6IDRweDsKICB3aWR0aDogMjBweDsKICBoZWlnaHQ6IDNweDsKICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTsKICAtbXMtdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpOwogIHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwp9Ci52dWUtaW1hZ2UtY3JvcC11cGxvYWQgLnZpY3Atd3JhcCAudmljcC1jbG9zZSAudmljcC1pY29uNDo6YWZ0ZXIgewogIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTsKICAtbXMtdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTsKICB0cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpOwp9Ci52dWUtaW1hZ2UtY3JvcC11cGxvYWQgLnZpY3Atd3JhcCAudmljcC1jbG9zZSAudmljcC1pY29uNDpob3ZlciB7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7CiAgLW1zLXRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsKICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7Cn0KLnZ1ZS1pbWFnZS1jcm9wLXVwbG9hZCAudmljcC13cmFwIC52aWNwLXN0ZXAxIC52aWNwLWRyb3AtYXJlYSB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsKICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogIHBhZGRpbmc6IDM1cHg7CiAgaGVpZ2h0OiAxNzBweDsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDMpOwogIHRleHQtYWxpZ246IGNlbnRlcjsKICBib3JkZXI6IDFweCBkYXNoZWQgcmdiYSgwLCAwLCAwLCAwLjA4KTsKICBvdmVyZmxvdzogaGlkZGVuOwp9Ci52dWUtaW1hZ2UtY3JvcC11cGxvYWQgLnZpY3Atd3JhcCAudmljcC1zdGVwMSAudmljcC1kcm9wLWFyZWEgLnZpY3AtaWNvbjEgewogIGRpc3BsYXk6IGJsb2NrOwogIG1hcmdpbjogMCBhdXRvIDZweDsKICB3aWR0aDogNDJweDsKICBoZWlnaHQ6IDQycHg7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQoudnVlLWltYWdlLWNyb3AtdXBsb2FkCiAgLnZpY3Atd3JhcAogIC52aWNwLXN0ZXAxCiAgLnZpY3AtZHJvcC1hcmVhCiAgLnZpY3AtaWNvbjEKICAudmljcC1pY29uMS1hcnJvdyB7CiAgZGlzcGxheTogYmxvY2s7CiAgbWFyZ2luOiAwIGF1dG87CiAgd2lkdGg6IDA7CiAgaGVpZ2h0OiAwOwogIGJvcmRlci1ib3R0b206IDE0LjdweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMyk7CiAgYm9yZGVyLWxlZnQ6IDE0LjdweCBzb2xpZCB0cmFuc3BhcmVudDsKICBib3JkZXItcmlnaHQ6IDE0LjdweCBzb2xpZCB0cmFuc3BhcmVudDsKfQoudnVlLWltYWdlLWNyb3AtdXBsb2FkCiAgLnZpY3Atd3JhcAogIC52aWNwLXN0ZXAxCiAgLnZpY3AtZHJvcC1hcmVhCiAgLnZpY3AtaWNvbjEKICAudmljcC1pY29uMS1ib2R5IHsKICBkaXNwbGF5OiBibG9jazsKICB3aWR0aDogMTIuNnB4OwogIGhlaWdodDogMTQuN3B4OwogIG1hcmdpbjogMCBhdXRvOwogIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4zKTsKfQoudnVlLWltYWdlLWNyb3AtdXBsb2FkCiAgLnZpY3Atd3JhcAogIC52aWNwLXN0ZXAxCiAgLnZpY3AtZHJvcC1hcmVhCiAgLnZpY3AtaWNvbjEKICAudmljcC1pY29uMS1ib3R0b20gewogIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsKICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogIGRpc3BsYXk6IGJsb2NrOwogIGhlaWdodDogMTIuNnB4OwogIGJvcmRlcjogNnB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4zKTsKICBib3JkZXItdG9wOiBub25lOwp9Ci52dWUtaW1hZ2UtY3JvcC11cGxvYWQgLnZpY3Atd3JhcCAudmljcC1zdGVwMSAudmljcC1kcm9wLWFyZWEgLnZpY3AtaGludCB7CiAgZGlzcGxheTogYmxvY2s7CiAgcGFkZGluZzogMTVweDsKICBmb250LXNpemU6IDE0cHg7CiAgY29sb3I6ICM2NjY7CiAgbGluZS1oZWlnaHQ6IDMwcHg7Cn0KLnZ1ZS1pbWFnZS1jcm9wLXVwbG9hZAogIC52aWNwLXdyYXAKICAudmljcC1zdGVwMQogIC52aWNwLWRyb3AtYXJlYQogIC52aWNwLW5vLXN1cHBvcnRlZC1oaW50IHsKICBkaXNwbGF5OiBibG9jazsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAwOwogIGxlZnQ6IDA7CiAgcGFkZGluZzogMzBweDsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IDYwcHg7CiAgbGluZS1oZWlnaHQ6IDMwcHg7CiAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgY29sb3I6ICM2NjY7CiAgZm9udC1zaXplOiAxNHB4Owp9Ci52dWUtaW1hZ2UtY3JvcC11cGxvYWQgLnZpY3Atd3JhcCAudmljcC1zdGVwMSAudmljcC1kcm9wLWFyZWE6aG92ZXIgewogIGN1cnNvcjogcG9pbnRlcjsKICBib3JkZXItY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4xKTsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDUpOwp9Ci52dWUtaW1hZ2UtY3JvcC11cGxvYWQgLnZpY3Atd3JhcCAudmljcC1zdGVwMiAudmljcC1jcm9wIHsKICBvdmVyZmxvdzogaGlkZGVuOwp9Ci52dWUtaW1hZ2UtY3JvcC11cGxvYWQgLnZpY3Atd3JhcCAudmljcC1zdGVwMiAudmljcC1jcm9wIC52aWNwLWNyb3AtbGVmdCB7CiAgZmxvYXQ6IGxlZnQ7Cn0KLnZ1ZS1pbWFnZS1jcm9wLXVwbG9hZAogIC52aWNwLXdyYXAKICAudmljcC1zdGVwMgogIC52aWNwLWNyb3AKICAudmljcC1jcm9wLWxlZnQKICAudmljcC1pbWctY29udGFpbmVyIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZGlzcGxheTogYmxvY2s7CiAgd2lkdGg6IDI0MHB4OwogIGhlaWdodDogMTgwcHg7CiAgYmFja2dyb3VuZC1jb2xvcjogI2U1ZTVlMDsKICBvdmVyZmxvdzogaGlkZGVuOwp9Ci52dWUtaW1hZ2UtY3JvcC11cGxvYWQKICAudmljcC13cmFwCiAgLnZpY3Atc3RlcDIKICAudmljcC1jcm9wCiAgLnZpY3AtY3JvcC1sZWZ0CiAgLnZpY3AtaW1nLWNvbnRhaW5lcgogIC52aWNwLWltZyB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGRpc3BsYXk6IGJsb2NrOwogIGN1cnNvcjogbW92ZTsKICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwogIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7CiAgLW1zLXVzZXItc2VsZWN0OiBub25lOwogIHVzZXItc2VsZWN0OiBub25lOwp9Ci52dWUtaW1hZ2UtY3JvcC11cGxvYWQKICAudmljcC13cmFwCiAgLnZpY3Atc3RlcDIKICAudmljcC1jcm9wCiAgLnZpY3AtY3JvcC1sZWZ0CiAgLnZpY3AtaW1nLWNvbnRhaW5lcgogIC52aWNwLWltZy1zaGFkZSB7CiAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDJweCA2cHggMCByZ2JhKDAsIDAsIDAsIDAuMTgpOwogIGJveC1zaGFkb3c6IDAgMnB4IDZweCAwIHJnYmEoMCwgMCwgMCwgMC4xOCk7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjQxLCAyNDIsIDI0MywgMC44KTsKfQoudnVlLWltYWdlLWNyb3AtdXBsb2FkCiAgLnZpY3Atd3JhcAogIC52aWNwLXN0ZXAyCiAgLnZpY3AtY3JvcAogIC52aWNwLWNyb3AtbGVmdAogIC52aWNwLWltZy1jb250YWluZXIKICAudmljcC1pbWctc2hhZGUudmljcC1pbWctc2hhZGUtMSB7CiAgdG9wOiAwOwogIGxlZnQ6IDA7Cn0KLnZ1ZS1pbWFnZS1jcm9wLXVwbG9hZAogIC52aWNwLXdyYXAKICAudmljcC1zdGVwMgogIC52aWNwLWNyb3AKICAudmljcC1jcm9wLWxlZnQKICAudmljcC1pbWctY29udGFpbmVyCiAgLnZpY3AtaW1nLXNoYWRlLnZpY3AtaW1nLXNoYWRlLTIgewogIGJvdHRvbTogMDsKICByaWdodDogMDsKfQoudnVlLWltYWdlLWNyb3AtdXBsb2FkCiAgLnZpY3Atd3JhcAogIC52aWNwLXN0ZXAyCiAgLnZpY3AtY3JvcAogIC52aWNwLWNyb3AtbGVmdAogIC52aWNwLXJvdGF0ZSB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHdpZHRoOiAyNDBweDsKICBoZWlnaHQ6IDE4cHg7Cn0KLnZ1ZS1pbWFnZS1jcm9wLXVwbG9hZAogIC52aWNwLXdyYXAKICAudmljcC1zdGVwMgogIC52aWNwLWNyb3AKICAudmljcC1jcm9wLWxlZnQKICAudmljcC1yb3RhdGUKICBpIHsKICBkaXNwbGF5OiBibG9jazsKICB3aWR0aDogMThweDsKICBoZWlnaHQ6IDE4cHg7CiAgYm9yZGVyLXJhZGl1czogMTAwJTsKICBsaW5lLWhlaWdodDogMThweDsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgZm9udC1zaXplOiAxMnB4OwogIGZvbnQtd2VpZ2h0OiBib2xkOwogIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4wOCk7CiAgY29sb3I6ICNmZmY7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQoudnVlLWltYWdlLWNyb3AtdXBsb2FkCiAgLnZpY3Atd3JhcAogIC52aWNwLXN0ZXAyCiAgLnZpY3AtY3JvcAogIC52aWNwLWNyb3AtbGVmdAogIC52aWNwLXJvdGF0ZQogIGk6aG92ZXIgewogIC13ZWJraXQtYm94LXNoYWRvdzogMCAxcHggM3B4IDAgcmdiYSgwLCAwLCAwLCAwLjEyKTsKICBib3gtc2hhZG93OiAwIDFweCAzcHggMCByZ2JhKDAsIDAsIDAsIDAuMTIpOwogIGN1cnNvcjogcG9pbnRlcjsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMTQpOwp9Ci52dWUtaW1hZ2UtY3JvcC11cGxvYWQKICAudmljcC13cmFwCiAgLnZpY3Atc3RlcDIKICAudmljcC1jcm9wCiAgLnZpY3AtY3JvcC1sZWZ0CiAgLnZpY3Atcm90YXRlCiAgaTpmaXJzdC1jaGlsZCB7CiAgZmxvYXQ6IGxlZnQ7Cn0KLnZ1ZS1pbWFnZS1jcm9wLXVwbG9hZAogIC52aWNwLXdyYXAKICAudmljcC1zdGVwMgogIC52aWNwLWNyb3AKICAudmljcC1jcm9wLWxlZnQKICAudmljcC1yb3RhdGUKICBpOmxhc3QtY2hpbGQgewogIGZsb2F0OiByaWdodDsKfQoudnVlLWltYWdlLWNyb3AtdXBsb2FkCiAgLnZpY3Atd3JhcAogIC52aWNwLXN0ZXAyCiAgLnZpY3AtY3JvcAogIC52aWNwLWNyb3AtbGVmdAogIC52aWNwLXJhbmdlIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgbWFyZ2luOiAzMHB4IDAgMTBweCAwOwogIHdpZHRoOiAyNDBweDsKICBoZWlnaHQ6IDE4cHg7Cn0KLnZ1ZS1pbWFnZS1jcm9wLXVwbG9hZAogIC52aWNwLXdyYXAKICAudmljcC1zdGVwMgogIC52aWNwLWNyb3AKICAudmljcC1jcm9wLWxlZnQKICAudmljcC1yYW5nZQogIC52aWNwLWljb241LAoudnVlLWltYWdlLWNyb3AtdXBsb2FkCiAgLnZpY3Atd3JhcAogIC52aWNwLXN0ZXAyCiAgLnZpY3AtY3JvcAogIC52aWNwLWNyb3AtbGVmdAogIC52aWNwLXJhbmdlCiAgLnZpY3AtaWNvbjYgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDA7CiAgd2lkdGg6IDE4cHg7CiAgaGVpZ2h0OiAxOHB4OwogIGJvcmRlci1yYWRpdXM6IDEwMCU7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjA4KTsKfQoudnVlLWltYWdlLWNyb3AtdXBsb2FkCiAgLnZpY3Atd3JhcAogIC52aWNwLXN0ZXAyCiAgLnZpY3AtY3JvcAogIC52aWNwLWNyb3AtbGVmdAogIC52aWNwLXJhbmdlCiAgLnZpY3AtaWNvbjU6aG92ZXIsCi52dWUtaW1hZ2UtY3JvcC11cGxvYWQKICAudmljcC13cmFwCiAgLnZpY3Atc3RlcDIKICAudmljcC1jcm9wCiAgLnZpY3AtY3JvcC1sZWZ0CiAgLnZpY3AtcmFuZ2UKICAudmljcC1pY29uNjpob3ZlciB7CiAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDFweCAzcHggMCByZ2JhKDAsIDAsIDAsIDAuMTIpOwogIGJveC1zaGFkb3c6IDAgMXB4IDNweCAwIHJnYmEoMCwgMCwgMCwgMC4xMik7CiAgY3Vyc29yOiBwb2ludGVyOwogIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4xNCk7Cn0KLnZ1ZS1pbWFnZS1jcm9wLXVwbG9hZAogIC52aWNwLXdyYXAKICAudmljcC1zdGVwMgogIC52aWNwLWNyb3AKICAudmljcC1jcm9wLWxlZnQKICAudmljcC1yYW5nZQogIC52aWNwLWljb241IHsKICBsZWZ0OiAwOwp9Ci52dWUtaW1hZ2UtY3JvcC11cGxvYWQKICAudmljcC13cmFwCiAgLnZpY3Atc3RlcDIKICAudmljcC1jcm9wCiAgLnZpY3AtY3JvcC1sZWZ0CiAgLnZpY3AtcmFuZ2UKICAudmljcC1pY29uNTo6YmVmb3JlIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgY29udGVudDogIiI7CiAgZGlzcGxheTogYmxvY2s7CiAgbGVmdDogM3B4OwogIHRvcDogOHB4OwogIHdpZHRoOiAxMnB4OwogIGhlaWdodDogMnB4OwogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7Cn0KLnZ1ZS1pbWFnZS1jcm9wLXVwbG9hZAogIC52aWNwLXdyYXAKICAudmljcC1zdGVwMgogIC52aWNwLWNyb3AKICAudmljcC1jcm9wLWxlZnQKICAudmljcC1yYW5nZQogIC52aWNwLWljb242IHsKICByaWdodDogMDsKfQoudnVlLWltYWdlLWNyb3AtdXBsb2FkCiAgLnZpY3Atd3JhcAogIC52aWNwLXN0ZXAyCiAgLnZpY3AtY3JvcAogIC52aWNwLWNyb3AtbGVmdAogIC52aWNwLXJhbmdlCiAgLnZpY3AtaWNvbjY6OmJlZm9yZSB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGNvbnRlbnQ6ICIiOwogIGRpc3BsYXk6IGJsb2NrOwogIGxlZnQ6IDNweDsKICB0b3A6IDhweDsKICB3aWR0aDogMTJweDsKICBoZWlnaHQ6IDJweDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwp9Ci52dWUtaW1hZ2UtY3JvcC11cGxvYWQKICAudmljcC13cmFwCiAgLnZpY3Atc3RlcDIKICAudmljcC1jcm9wCiAgLnZpY3AtY3JvcC1sZWZ0CiAgLnZpY3AtcmFuZ2UKICAudmljcC1pY29uNjo6YWZ0ZXIgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBjb250ZW50OiAiIjsKICBkaXNwbGF5OiBibG9jazsKICB0b3A6IDNweDsKICBsZWZ0OiA4cHg7CiAgd2lkdGg6IDJweDsKICBoZWlnaHQ6IDEycHg7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKfQoudnVlLWltYWdlLWNyb3AtdXBsb2FkCiAgLnZpY3Atd3JhcAogIC52aWNwLXN0ZXAyCiAgLnZpY3AtY3JvcAogIC52aWNwLWNyb3AtbGVmdAogIC52aWNwLXJhbmdlCiAgaW5wdXRbdHlwZT0icmFuZ2UiXSB7CiAgZGlzcGxheTogYmxvY2s7CiAgcGFkZGluZy10b3A6IDVweDsKICBtYXJnaW46IDAgYXV0bzsKICB3aWR0aDogMTgwcHg7CiAgaGVpZ2h0OiA4cHg7CiAgdmVydGljYWwtYWxpZ246IHRvcDsKICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CiAgLW1vei1hcHBlYXJhbmNlOiBub25lOwogIGFwcGVhcmFuY2U6IG5vbmU7CiAgY3Vyc29yOiBwb2ludGVyOwogIC8qIOa7keWdlwogICAgICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIC8qIOi9qOmBkwogICAgICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwp9Ci52dWUtaW1hZ2UtY3JvcC11cGxvYWQKICAudmljcC13cmFwCiAgLnZpY3Atc3RlcDIKICAudmljcC1jcm9wCiAgLnZpY3AtY3JvcC1sZWZ0CiAgLnZpY3AtcmFuZ2UKICBpbnB1dFt0eXBlPSJyYW5nZSJdOmZvY3VzIHsKICBvdXRsaW5lOiBub25lOwp9Ci52dWUtaW1hZ2UtY3JvcC11cGxvYWQKICAudmljcC13cmFwCiAgLnZpY3Atc3RlcDIKICAudmljcC1jcm9wCiAgLnZpY3AtY3JvcC1sZWZ0CiAgLnZpY3AtcmFuZ2UKICBpbnB1dFt0eXBlPSJyYW5nZSJdOjotd2Via2l0LXNsaWRlci10aHVtYiB7CiAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDJweCA2cHggMCByZ2JhKDAsIDAsIDAsIDAuMTgpOwogIGJveC1zaGFkb3c6IDAgMnB4IDZweCAwIHJnYmEoMCwgMCwgMCwgMC4xOCk7CiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwogIGFwcGVhcmFuY2U6IG5vbmU7CiAgbWFyZ2luLXRvcDogLTNweDsKICB3aWR0aDogMTJweDsKICBoZWlnaHQ6IDEycHg7CiAgYmFja2dyb3VuZC1jb2xvcjogIzYxYzA5MTsKICBib3JkZXItcmFkaXVzOiAxMDAlOwogIGJvcmRlcjogbm9uZTsKICAtd2Via2l0LXRyYW5zaXRpb246IDAuMnM7CiAgdHJhbnNpdGlvbjogMC4yczsKfQoudnVlLWltYWdlLWNyb3AtdXBsb2FkCiAgLnZpY3Atd3JhcAogIC52aWNwLXN0ZXAyCiAgLnZpY3AtY3JvcAogIC52aWNwLWNyb3AtbGVmdAogIC52aWNwLXJhbmdlCiAgaW5wdXRbdHlwZT0icmFuZ2UiXTo6LW1vei1yYW5nZS10aHVtYiB7CiAgYm94LXNoYWRvdzogMCAycHggNnB4IDAgcmdiYSgwLCAwLCAwLCAwLjE4KTsKICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7CiAgYXBwZWFyYW5jZTogbm9uZTsKICB3aWR0aDogMTJweDsKICBoZWlnaHQ6IDEycHg7CiAgYmFja2dyb3VuZC1jb2xvcjogIzYxYzA5MTsKICBib3JkZXItcmFkaXVzOiAxMDAlOwogIGJvcmRlcjogbm9uZTsKICAtd2Via2l0LXRyYW5zaXRpb246IDAuMnM7CiAgdHJhbnNpdGlvbjogMC4yczsKfQoudnVlLWltYWdlLWNyb3AtdXBsb2FkCiAgLnZpY3Atd3JhcAogIC52aWNwLXN0ZXAyCiAgLnZpY3AtY3JvcAogIC52aWNwLWNyb3AtbGVmdAogIC52aWNwLXJhbmdlCiAgaW5wdXRbdHlwZT0icmFuZ2UiXTo6LW1zLXRodW1iIHsKICBib3gtc2hhZG93OiAwIDJweCA2cHggMCByZ2JhKDAsIDAsIDAsIDAuMTgpOwogIGFwcGVhcmFuY2U6IG5vbmU7CiAgd2lkdGg6IDEycHg7CiAgaGVpZ2h0OiAxMnB4OwogIGJhY2tncm91bmQtY29sb3I6ICM2MWMwOTE7CiAgYm9yZGVyOiBub25lOwogIGJvcmRlci1yYWRpdXM6IDEwMCU7CiAgLXdlYmtpdC10cmFuc2l0aW9uOiAwLjJzOwogIHRyYW5zaXRpb246IDAuMnM7Cn0KLnZ1ZS1pbWFnZS1jcm9wLXVwbG9hZAogIC52aWNwLXdyYXAKICAudmljcC1zdGVwMgogIC52aWNwLWNyb3AKICAudmljcC1jcm9wLWxlZnQKICAudmljcC1yYW5nZQogIGlucHV0W3R5cGU9InJhbmdlIl06YWN0aXZlOjotbW96LXJhbmdlLXRodW1iIHsKICBib3gtc2hhZG93OiAwIDFweCAzcHggMCByZ2JhKDAsIDAsIDAsIDAuMjMpOwogIHdpZHRoOiAxNHB4OwogIGhlaWdodDogMTRweDsKfQoudnVlLWltYWdlLWNyb3AtdXBsb2FkCiAgLnZpY3Atd3JhcAogIC52aWNwLXN0ZXAyCiAgLnZpY3AtY3JvcAogIC52aWNwLWNyb3AtbGVmdAogIC52aWNwLXJhbmdlCiAgaW5wdXRbdHlwZT0icmFuZ2UiXTphY3RpdmU6Oi1tcy10aHVtYiB7CiAgYm94LXNoYWRvdzogMCAxcHggM3B4IDAgcmdiYSgwLCAwLCAwLCAwLjIzKTsKICB3aWR0aDogMTRweDsKICBoZWlnaHQ6IDE0cHg7Cn0KLnZ1ZS1pbWFnZS1jcm9wLXVwbG9hZAogIC52aWNwLXdyYXAKICAudmljcC1zdGVwMgogIC52aWNwLWNyb3AKICAudmljcC1jcm9wLWxlZnQKICAudmljcC1yYW5nZQogIGlucHV0W3R5cGU9InJhbmdlIl06YWN0aXZlOjotd2Via2l0LXNsaWRlci10aHVtYiB7CiAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDFweCAzcHggMCByZ2JhKDAsIDAsIDAsIDAuMjMpOwogIGJveC1zaGFkb3c6IDAgMXB4IDNweCAwIHJnYmEoMCwgMCwgMCwgMC4yMyk7CiAgbWFyZ2luLXRvcDogLTRweDsKICB3aWR0aDogMTRweDsKICBoZWlnaHQ6IDE0cHg7Cn0KLnZ1ZS1pbWFnZS1jcm9wLXVwbG9hZAogIC52aWNwLXdyYXAKICAudmljcC1zdGVwMgogIC52aWNwLWNyb3AKICAudmljcC1jcm9wLWxlZnQKICAudmljcC1yYW5nZQogIGlucHV0W3R5cGU9InJhbmdlIl06Oi13ZWJraXQtc2xpZGVyLXJ1bm5hYmxlLXRyYWNrIHsKICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMXB4IDNweCAwIHJnYmEoMCwgMCwgMCwgMC4xMik7CiAgYm94LXNoYWRvdzogMCAxcHggM3B4IDAgcmdiYSgwLCAwLCAwLCAwLjEyKTsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IDZweDsKICBjdXJzb3I6IHBvaW50ZXI7CiAgYm9yZGVyLXJhZGl1czogMnB4OwogIGJvcmRlcjogbm9uZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDY4LCAxNzAsIDExOSwgMC4zKTsKfQoudnVlLWltYWdlLWNyb3AtdXBsb2FkCiAgLnZpY3Atd3JhcAogIC52aWNwLXN0ZXAyCiAgLnZpY3AtY3JvcAogIC52aWNwLWNyb3AtbGVmdAogIC52aWNwLXJhbmdlCiAgaW5wdXRbdHlwZT0icmFuZ2UiXTo6LW1vei1yYW5nZS10cmFjayB7CiAgYm94LXNoYWRvdzogMCAxcHggM3B4IDAgcmdiYSgwLCAwLCAwLCAwLjEyKTsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IDZweDsKICBjdXJzb3I6IHBvaW50ZXI7CiAgYm9yZGVyLXJhZGl1czogMnB4OwogIGJvcmRlcjogbm9uZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDY4LCAxNzAsIDExOSwgMC4zKTsKfQoudnVlLWltYWdlLWNyb3AtdXBsb2FkCiAgLnZpY3Atd3JhcAogIC52aWNwLXN0ZXAyCiAgLnZpY3AtY3JvcAogIC52aWNwLWNyb3AtbGVmdAogIC52aWNwLXJhbmdlCiAgaW5wdXRbdHlwZT0icmFuZ2UiXTo6LW1zLXRyYWNrIHsKICBib3gtc2hhZG93OiAwIDFweCAzcHggMCByZ2JhKDAsIDAsIDAsIDAuMTIpOwogIHdpZHRoOiAxMDAlOwogIGN1cnNvcjogcG9pbnRlcjsKICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50OwogIGNvbG9yOiB0cmFuc3BhcmVudDsKICBoZWlnaHQ6IDZweDsKICBib3JkZXItcmFkaXVzOiAycHg7CiAgYm9yZGVyOiBub25lOwp9Ci52dWUtaW1hZ2UtY3JvcC11cGxvYWQKICAudmljcC13cmFwCiAgLnZpY3Atc3RlcDIKICAudmljcC1jcm9wCiAgLnZpY3AtY3JvcC1sZWZ0CiAgLnZpY3AtcmFuZ2UKICBpbnB1dFt0eXBlPSJyYW5nZSJdOjotbXMtZmlsbC1sb3dlciB7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg2OCwgMTcwLCAxMTksIDAuMyk7Cn0KLnZ1ZS1pbWFnZS1jcm9wLXVwbG9hZAogIC52aWNwLXdyYXAKICAudmljcC1zdGVwMgogIC52aWNwLWNyb3AKICAudmljcC1jcm9wLWxlZnQKICAudmljcC1yYW5nZQogIGlucHV0W3R5cGU9InJhbmdlIl06Oi1tcy1maWxsLXVwcGVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDY4LCAxNzAsIDExOSwgMC4xNSk7Cn0KLnZ1ZS1pbWFnZS1jcm9wLXVwbG9hZAogIC52aWNwLXdyYXAKICAudmljcC1zdGVwMgogIC52aWNwLWNyb3AKICAudmljcC1jcm9wLWxlZnQKICAudmljcC1yYW5nZQogIGlucHV0W3R5cGU9InJhbmdlIl06Zm9jdXM6Oi13ZWJraXQtc2xpZGVyLXJ1bm5hYmxlLXRyYWNrIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDY4LCAxNzAsIDExOSwgMC41KTsKfQoudnVlLWltYWdlLWNyb3AtdXBsb2FkCiAgLnZpY3Atd3JhcAogIC52aWNwLXN0ZXAyCiAgLnZpY3AtY3JvcAogIC52aWNwLWNyb3AtbGVmdAogIC52aWNwLXJhbmdlCiAgaW5wdXRbdHlwZT0icmFuZ2UiXTpmb2N1czo6LW1vei1yYW5nZS10cmFjayB7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg2OCwgMTcwLCAxMTksIDAuNSk7Cn0KLnZ1ZS1pbWFnZS1jcm9wLXVwbG9hZAogIC52aWNwLXdyYXAKICAudmljcC1zdGVwMgogIC52aWNwLWNyb3AKICAudmljcC1jcm9wLWxlZnQKICAudmljcC1yYW5nZQogIGlucHV0W3R5cGU9InJhbmdlIl06Zm9jdXM6Oi1tcy1maWxsLWxvd2VyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDY4LCAxNzAsIDExOSwgMC40NSk7Cn0KLnZ1ZS1pbWFnZS1jcm9wLXVwbG9hZAogIC52aWNwLXdyYXAKICAudmljcC1zdGVwMgogIC52aWNwLWNyb3AKICAudmljcC1jcm9wLWxlZnQKICAudmljcC1yYW5nZQogIGlucHV0W3R5cGU9InJhbmdlIl06Zm9jdXM6Oi1tcy1maWxsLXVwcGVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDY4LCAxNzAsIDExOSwgMC4yNSk7Cn0KLnZ1ZS1pbWFnZS1jcm9wLXVwbG9hZCAudmljcC13cmFwIC52aWNwLXN0ZXAyIC52aWNwLWNyb3AgLnZpY3AtY3JvcC1yaWdodCB7CiAgZmxvYXQ6IHJpZ2h0Owp9Ci52dWUtaW1hZ2UtY3JvcC11cGxvYWQKICAudmljcC13cmFwCiAgLnZpY3Atc3RlcDIKICAudmljcC1jcm9wCiAgLnZpY3AtY3JvcC1yaWdodAogIC52aWNwLXByZXZpZXcgewogIGhlaWdodDogMTUwcHg7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQoudnVlLWltYWdlLWNyb3AtdXBsb2FkCiAgLnZpY3Atd3JhcAogIC52aWNwLXN0ZXAyCiAgLnZpY3AtY3JvcAogIC52aWNwLWNyb3AtcmlnaHQKICAudmljcC1wcmV2aWV3CiAgLnZpY3AtcHJldmlldy1pdGVtIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgcGFkZGluZzogNXB4OwogIHdpZHRoOiAxMDBweDsKICBoZWlnaHQ6IDEwMHB4OwogIGZsb2F0OiBsZWZ0OwogIG1hcmdpbi1yaWdodDogMTZweDsKfQoudnVlLWltYWdlLWNyb3AtdXBsb2FkCiAgLnZpY3Atd3JhcAogIC52aWNwLXN0ZXAyCiAgLnZpY3AtY3JvcAogIC52aWNwLWNyb3AtcmlnaHQKICAudmljcC1wcmV2aWV3CiAgLnZpY3AtcHJldmlldy1pdGVtCiAgc3BhbiB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGJvdHRvbTogLTMwcHg7CiAgd2lkdGg6IDEwMCU7CiAgZm9udC1zaXplOiAxNHB4OwogIGNvbG9yOiAjYmJiOwogIGRpc3BsYXk6IGJsb2NrOwogIHRleHQtYWxpZ246IGNlbnRlcjsKfQoudnVlLWltYWdlLWNyb3AtdXBsb2FkCiAgLnZpY3Atd3JhcAogIC52aWNwLXN0ZXAyCiAgLnZpY3AtY3JvcAogIC52aWNwLWNyb3AtcmlnaHQKICAudmljcC1wcmV2aWV3CiAgLnZpY3AtcHJldmlldy1pdGVtCiAgaW1nIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgZGlzcGxheTogYmxvY2s7CiAgdG9wOiAwOwogIGJvdHRvbTogMDsKICBsZWZ0OiAwOwogIHJpZ2h0OiAwOwogIG1hcmdpbjogYXV0bzsKICBwYWRkaW5nOiAzcHg7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMTUpOwogIG92ZXJmbG93OiBoaWRkZW47CiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAtbW96LXVzZXItc2VsZWN0OiBub25lOwogIC1tcy11c2VyLXNlbGVjdDogbm9uZTsKICB1c2VyLXNlbGVjdDogbm9uZTsKfQoudnVlLWltYWdlLWNyb3AtdXBsb2FkCiAgLnZpY3Atd3JhcAogIC52aWNwLXN0ZXAyCiAgLnZpY3AtY3JvcAogIC52aWNwLWNyb3AtcmlnaHQKICAudmljcC1wcmV2aWV3CiAgLnZpY3AtcHJldmlldy1pdGVtLnZpY3AtcHJldmlldy1pdGVtLWNpcmNsZSB7CiAgbWFyZ2luLXJpZ2h0OiAwOwp9Ci52dWUtaW1hZ2UtY3JvcC11cGxvYWQKICAudmljcC13cmFwCiAgLnZpY3Atc3RlcDIKICAudmljcC1jcm9wCiAgLnZpY3AtY3JvcC1yaWdodAogIC52aWNwLXByZXZpZXcKICAudmljcC1wcmV2aWV3LWl0ZW0udmljcC1wcmV2aWV3LWl0ZW0tY2lyY2xlCiAgaW1nIHsKICBib3JkZXItcmFkaXVzOiAxMDAlOwp9Ci52dWUtaW1hZ2UtY3JvcC11cGxvYWQgLnZpY3Atd3JhcCAudmljcC1zdGVwMyAudmljcC11cGxvYWQgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICBwYWRkaW5nOiAzNXB4OwogIGhlaWdodDogMTcwcHg7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjAzKTsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgYm9yZGVyOiAxcHggZGFzaGVkICNkZGQ7Cn0KLnZ1ZS1pbWFnZS1jcm9wLXVwbG9hZCAudmljcC13cmFwIC52aWNwLXN0ZXAzIC52aWNwLXVwbG9hZCAudmljcC1sb2FkaW5nIHsKICBkaXNwbGF5OiBibG9jazsKICBwYWRkaW5nOiAxNXB4OwogIGZvbnQtc2l6ZTogMTZweDsKICBjb2xvcjogIzk5OTsKICBsaW5lLWhlaWdodDogMzBweDsKfQoudnVlLWltYWdlLWNyb3AtdXBsb2FkIC52aWNwLXdyYXAgLnZpY3Atc3RlcDMgLnZpY3AtdXBsb2FkIC52aWNwLXByb2dyZXNzLXdyYXAgewogIG1hcmdpbi10b3A6IDEycHg7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjA4KTsKICBib3JkZXItcmFkaXVzOiAzcHg7Cn0KLnZ1ZS1pbWFnZS1jcm9wLXVwbG9hZAogIC52aWNwLXdyYXAKICAudmljcC1zdGVwMwogIC52aWNwLXVwbG9hZAogIC52aWNwLXByb2dyZXNzLXdyYXAKICAudmljcC1wcm9ncmVzcyB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGRpc3BsYXk6IGJsb2NrOwogIGhlaWdodDogNXB4OwogIGJvcmRlci1yYWRpdXM6IDNweDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGE3OwogIC13ZWJraXQtYm94LXNoYWRvdzogMCAycHggNnB4IDAgcmdiYSg2OCwgMTcwLCAxMTksIDAuMyk7CiAgYm94LXNoYWRvdzogMCAycHggNnB4IDAgcmdiYSg2OCwgMTcwLCAxMTksIDAuMyk7CiAgLXdlYmtpdC10cmFuc2l0aW9uOiB3aWR0aCAwLjE1cyBsaW5lYXI7CiAgdHJhbnNpdGlvbjogd2lkdGggMC4xNXMgbGluZWFyOwogIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KAogICAgMTM1ZGVnLAogICAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpIDI1JSwKICAgIHRyYW5zcGFyZW50IDI1JSwKICAgIHRyYW5zcGFyZW50IDUwJSwKICAgIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKSA1MCUsCiAgICByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMikgNzUlLAogICAgdHJhbnNwYXJlbnQgNzUlLAogICAgdHJhbnNwYXJlbnQKICApOwogIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCgKICAgIC00NWRlZywKICAgIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKSAyNSUsCiAgICB0cmFuc3BhcmVudCAyNSUsCiAgICB0cmFuc3BhcmVudCA1MCUsCiAgICByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMikgNTAlLAogICAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpIDc1JSwKICAgIHRyYW5zcGFyZW50IDc1JSwKICAgIHRyYW5zcGFyZW50CiAgKTsKICBiYWNrZ3JvdW5kLXNpemU6IDQwcHggNDBweDsKICAtd2Via2l0LWFuaW1hdGlvbjogdmljcF9wcm9ncmVzcyAwLjVzIGxpbmVhciBpbmZpbml0ZTsKICBhbmltYXRpb246IHZpY3BfcHJvZ3Jlc3MgMC41cyBsaW5lYXIgaW5maW5pdGU7Cn0KLnZ1ZS1pbWFnZS1jcm9wLXVwbG9hZAogIC52aWNwLXdyYXAKICAudmljcC1zdGVwMwogIC52aWNwLXVwbG9hZAogIC52aWNwLXByb2dyZXNzLXdyYXAKICAudmljcC1wcm9ncmVzczo6YWZ0ZXIgewogIGNvbnRlbnQ6ICIiOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBkaXNwbGF5OiBibG9jazsKICB0b3A6IC0zcHg7CiAgcmlnaHQ6IC0zcHg7CiAgd2lkdGg6IDlweDsKICBoZWlnaHQ6IDlweDsKICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI0NSwgMjQ2LCAyNDcsIDAuNyk7CiAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDFweCA0cHggMCByZ2JhKDY4LCAxNzAsIDExOSwgMC43KTsKICBib3gtc2hhZG93OiAwIDFweCA0cHggMCByZ2JhKDY4LCAxNzAsIDExOSwgMC43KTsKICBib3JkZXItcmFkaXVzOiAxMDAlOwogIGJhY2tncm91bmQtY29sb3I6ICM0YTc7Cn0KLnZ1ZS1pbWFnZS1jcm9wLXVwbG9hZCAudmljcC13cmFwIC52aWNwLXN0ZXAzIC52aWNwLXVwbG9hZCAudmljcC1lcnJvciwKLnZ1ZS1pbWFnZS1jcm9wLXVwbG9hZCAudmljcC13cmFwIC52aWNwLXN0ZXAzIC52aWNwLXVwbG9hZCAudmljcC1zdWNjZXNzIHsKICBoZWlnaHQ6IDEwMHB4OwogIGxpbmUtaGVpZ2h0OiAxMDBweDsKfQoudnVlLWltYWdlLWNyb3AtdXBsb2FkIC52aWNwLXdyYXAgLnZpY3Atb3BlcmF0ZSB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHJpZ2h0OiAyMHB4OwogIGJvdHRvbTogMjBweDsKfQoudnVlLWltYWdlLWNyb3AtdXBsb2FkIC52aWNwLXdyYXAgLnZpY3Atb3BlcmF0ZSBhIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZmxvYXQ6IGxlZnQ7CiAgZGlzcGxheTogYmxvY2s7CiAgbWFyZ2luLWxlZnQ6IDEwcHg7CiAgd2lkdGg6IDEwMHB4OwogIGhlaWdodDogMzZweDsKICBsaW5lLWhlaWdodDogMzZweDsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgY3Vyc29yOiBwb2ludGVyOwogIGZvbnQtc2l6ZTogMTRweDsKICBjb2xvcjogIzRhNzsKICBib3JkZXItcmFkaXVzOiAycHg7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwogIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7CiAgLW1zLXVzZXItc2VsZWN0OiBub25lOwogIHVzZXItc2VsZWN0OiBub25lOwp9Ci52dWUtaW1hZ2UtY3JvcC11cGxvYWQgLnZpY3Atd3JhcCAudmljcC1vcGVyYXRlIGE6aG92ZXIgewogIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4wMyk7Cn0KLnZ1ZS1pbWFnZS1jcm9wLXVwbG9hZCAudmljcC13cmFwIC52aWNwLWVycm9yLAoudnVlLWltYWdlLWNyb3AtdXBsb2FkIC52aWNwLXdyYXAgLnZpY3Atc3VjY2VzcyB7CiAgZGlzcGxheTogYmxvY2s7CiAgZm9udC1zaXplOiAxNHB4OwogIGxpbmUtaGVpZ2h0OiAyNHB4OwogIGhlaWdodDogMjRweDsKICBjb2xvcjogI2QxMDsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgdmVydGljYWwtYWxpZ246IHRvcDsKfQoudnVlLWltYWdlLWNyb3AtdXBsb2FkIC52aWNwLXdyYXAgLnZpY3Atc3VjY2VzcyB7CiAgY29sb3I6ICM0YTc7Cn0KLnZ1ZS1pbWFnZS1jcm9wLXVwbG9hZCAudmljcC13cmFwIC52aWNwLWljb24zIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHdpZHRoOiAyMHB4OwogIGhlaWdodDogMjBweDsKICB0b3A6IDRweDsKfQoudnVlLWltYWdlLWNyb3AtdXBsb2FkIC52aWNwLXdyYXAgLnZpY3AtaWNvbjM6OmFmdGVyIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAzcHg7CiAgbGVmdDogNnB4OwogIHdpZHRoOiA2cHg7CiAgaGVpZ2h0OiAxMHB4OwogIGJvcmRlci13aWR0aDogMCAycHggMnB4IDA7CiAgYm9yZGVyLWNvbG9yOiAjNGE3OwogIGJvcmRlci1zdHlsZTogc29saWQ7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7CiAgLW1zLXRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTsKICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7CiAgY29udGVudDogIiI7Cn0KLnZ1ZS1pbWFnZS1jcm9wLXVwbG9hZCAudmljcC13cmFwIC52aWNwLWljb24yIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHdpZHRoOiAyMHB4OwogIGhlaWdodDogMjBweDsKICB0b3A6IDRweDsKfQoudnVlLWltYWdlLWNyb3AtdXBsb2FkIC52aWNwLXdyYXAgLnZpY3AtaWNvbjI6OmFmdGVyLAoudnVlLWltYWdlLWNyb3AtdXBsb2FkIC52aWNwLXdyYXAgLnZpY3AtaWNvbjI6OmJlZm9yZSB7CiAgY29udGVudDogIiI7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogOXB4OwogIGxlZnQ6IDRweDsKICB3aWR0aDogMTNweDsKICBoZWlnaHQ6IDJweDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDEwOwogIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpOwogIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7CiAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpOwp9Ci52dWUtaW1hZ2UtY3JvcC11cGxvYWQgLnZpY3Atd3JhcCAudmljcC1pY29uMjo6YWZ0ZXIgewogIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTsKICAtbXMtdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTsKICB0cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpOwp9Ci5lLXJpcHBsZSB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGJvcmRlci1yYWRpdXM6IDEwMCU7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjE1KTsKICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94OwogIHBvaW50ZXItZXZlbnRzOiBub25lOwogIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7CiAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDApOwogIC1tcy10cmFuc2Zvcm06IHNjYWxlKDApOwogIHRyYW5zZm9ybTogc2NhbGUoMCk7CiAgb3BhY2l0eTogMTsKfQouZS1yaXBwbGUuei1hY3RpdmUgewogIG9wYWNpdHk6IDA7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDIpOwogIC1tcy10cmFuc2Zvcm06IHNjYWxlKDIpOwogIHRyYW5zZm9ybTogc2NhbGUoMik7CiAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5IDEuMnMgZWFzZS1vdXQsIC13ZWJraXQtdHJhbnNmb3JtIDAuNnMgZWFzZS1vdXQ7CiAgdHJhbnNpdGlvbjogb3BhY2l0eSAxLjJzIGVhc2Utb3V0LCAtd2Via2l0LXRyYW5zZm9ybSAwLjZzIGVhc2Utb3V0OwogIHRyYW5zaXRpb246IG9wYWNpdHkgMS4ycyBlYXNlLW91dCwgdHJhbnNmb3JtIDAuNnMgZWFzZS1vdXQ7CiAgdHJhbnNpdGlvbjogb3BhY2l0eSAxLjJzIGVhc2Utb3V0LCB0cmFuc2Zvcm0gMC42cyBlYXNlLW91dCwKICAgIC13ZWJraXQtdHJhbnNmb3JtIDAuNnMgZWFzZS1vdXQ7Cn0K"},{"version":3,"sources":["index.vue"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"index.vue","sourceRoot":"src/components/ImageCropper","sourcesContent":["<template>\n <div v-show=\"value\" class=\"vue-image-crop-upload\">\n <div class=\"vicp-wrap\">\n <div class=\"vicp-close\" @click=\"off\">\n <i class=\"vicp-icon4\" />\n </div>\n\n <div v-show=\"step == 1\" class=\"vicp-step1\">\n <div\n class=\"vicp-drop-area\"\n @dragleave=\"preventDefault\"\n @dragover=\"preventDefault\"\n @dragenter=\"preventDefault\"\n @click=\"handleClick\"\n @drop=\"handleChange\"\n >\n <i v-show=\"loading != 1\" class=\"vicp-icon1\">\n <i class=\"vicp-icon1-arrow\" />\n <i class=\"vicp-icon1-body\" />\n <i class=\"vicp-icon1-bottom\" />\n </i>\n <span v-show=\"loading !== 1\" class=\"vicp-hint\">{{ lang.hint }}</span>\n <span v-show=\"!isSupported\" class=\"vicp-no-supported-hint\">{{ lang.noSupported }}</span>\n <input v-show=\"false\" v-if=\"step == 1\" ref=\"fileinput\" type=\"file\" @change=\"handleChange\">\n </div>\n <div v-show=\"hasError\" class=\"vicp-error\">\n <i class=\"vicp-icon2\" />\n {{ errorMsg }}\n </div>\n <div class=\"vicp-operate\">\n <a @click=\"off\" @mousedown=\"ripple\">{{ lang.btn.off }}</a>\n </div>\n </div>\n\n <div v-if=\"step == 2\" class=\"vicp-step2\">\n <div class=\"vicp-crop\">\n <div v-show=\"true\" class=\"vicp-crop-left\">\n <div class=\"vicp-img-container\">\n <img\n ref=\"img\"\n :src=\"sourceImgUrl\"\n :style=\"sourceImgStyle\"\n class=\"vicp-img\"\n draggable=\"false\"\n @drag=\"preventDefault\"\n @dragstart=\"preventDefault\"\n @dragend=\"preventDefault\"\n @dragleave=\"preventDefault\"\n @dragover=\"preventDefault\"\n @dragenter=\"preventDefault\"\n @drop=\"preventDefault\"\n @touchstart=\"imgStartMove\"\n @touchmove=\"imgMove\"\n @touchend=\"createImg\"\n @touchcancel=\"createImg\"\n @mousedown=\"imgStartMove\"\n @mousemove=\"imgMove\"\n @mouseup=\"createImg\"\n @mouseout=\"createImg\"\n >\n <div :style=\"sourceImgShadeStyle\" class=\"vicp-img-shade vicp-img-shade-1\" />\n <div :style=\"sourceImgShadeStyle\" class=\"vicp-img-shade vicp-img-shade-2\" />\n </div>\n\n <div class=\"vicp-range\">\n <input\n :value=\"scale.range\"\n type=\"range\"\n step=\"1\"\n min=\"0\"\n max=\"100\"\n @input=\"zoomChange\"\n >\n <i\n class=\"vicp-icon5\"\n @mousedown=\"startZoomSub\"\n @mouseout=\"endZoomSub\"\n @mouseup=\"endZoomSub\"\n />\n <i\n class=\"vicp-icon6\"\n @mousedown=\"startZoomAdd\"\n @mouseout=\"endZoomAdd\"\n @mouseup=\"endZoomAdd\"\n />\n </div>\n\n <div v-if=\"!noRotate\" class=\"vicp-rotate\">\n <i @mousedown=\"startRotateLeft\" @mouseout=\"endRotate\" @mouseup=\"endRotate\">↺</i>\n <i @mousedown=\"startRotateRight\" @mouseout=\"endRotate\" @mouseup=\"endRotate\">↻</i>\n </div>\n </div>\n <div v-show=\"true\" class=\"vicp-crop-right\">\n <div class=\"vicp-preview\">\n <div v-if=\"!noSquare\" class=\"vicp-preview-item\">\n <img :src=\"createImgUrl\" :style=\"previewStyle\">\n <span>{{ lang.preview }}</span>\n </div>\n <div v-if=\"!noCircle\" class=\"vicp-preview-item vicp-preview-item-circle\">\n <img :src=\"createImgUrl\" :style=\"previewStyle\">\n <span>{{ lang.preview }}</span>\n </div>\n </div>\n </div>\n </div>\n <div class=\"vicp-operate\">\n <a @click=\"setStep(1)\" @mousedown=\"ripple\">{{ lang.btn.back }}</a>\n <a class=\"vicp-operate-btn\" @click=\"prepareUpload\" @mousedown=\"ripple\">{{ lang.btn.save }}</a>\n </div>\n </div>\n\n <div v-if=\"step == 3\" class=\"vicp-step3\">\n <div class=\"vicp-upload\">\n <span v-show=\"loading === 1\" class=\"vicp-loading\">{{ lang.loading }}</span>\n <div class=\"vicp-progress-wrap\">\n <span v-show=\"loading === 1\" :style=\"progressStyle\" class=\"vicp-progress\" />\n </div>\n <div v-show=\"hasError\" class=\"vicp-error\">\n <i class=\"vicp-icon2\" />\n {{ errorMsg }}\n </div>\n <div v-show=\"loading === 2\" class=\"vicp-success\">\n <i class=\"vicp-icon3\" />\n {{ lang.success }}\n </div>\n </div>\n <div class=\"vicp-operate\">\n <a @click=\"setStep(2)\" @mousedown=\"ripple\">{{ lang.btn.back }}</a>\n <a @click=\"off\" @mousedown=\"ripple\">{{ lang.btn.close }}</a>\n </div>\n </div>\n <canvas v-show=\"false\" ref=\"canvas\" :width=\"width\" :height=\"height\" />\n </div>\n </div>\n</template>\n\n<script>\n'use strict'\nimport request from '@/utils/request'\nimport language from './utils/language.js'\nimport mimes from './utils/mimes.js'\nimport data2blob from './utils/data2blob.js'\nimport effectRipple from './utils/effectRipple.js'\nexport default {\n props: {\n // 域,上传文件name,触发事件会带上(如果一个页面多个图片上传控件,可以做区分\n field: {\n type: String,\n default: 'avatar'\n },\n // 原名key,类似于id,触发事件会带上(如果一个页面多个图片上传控件,可以做区分\n ki: {\n type: Number,\n default: 0\n },\n // 显示该控件与否\n value: {\n type: Boolean,\n default: true\n },\n // 上传地址\n url: {\n type: String,\n default: ''\n },\n // 其他要上传文件附带的数据,对象格式\n params: {\n type: Object,\n default: null\n },\n // Add custom headers\n headers: {\n type: Object,\n default: null\n },\n // 剪裁图片的宽\n width: {\n type: Number,\n default: 200\n },\n // 剪裁图片的高\n height: {\n type: Number,\n default: 200\n },\n // 不显示旋转功能\n noRotate: {\n type: Boolean,\n default: true\n },\n // 不预览圆形图片\n noCircle: {\n type: Boolean,\n default: false\n },\n // 不预览方形图片\n noSquare: {\n type: Boolean,\n default: false\n },\n // 单文件大小限制\n maxSize: {\n type: Number,\n default: 10240\n },\n // 语言类型\n langType: {\n type: String,\n default: 'zh'\n },\n // 语言包\n langExt: {\n type: Object,\n default: null\n },\n // 图片上传格式\n imgFormat: {\n type: String,\n default: 'png'\n },\n // 是否支持跨域\n withCredentials: {\n type: Boolean,\n default: false\n }\n },\n data() {\n const { imgFormat, langType, langExt, width, height } = this\n let isSupported = true\n const allowImgFormat = ['jpg', 'png']\n const tempImgFormat =\n allowImgFormat.indexOf(imgFormat) === -1 ? 'jpg' : imgFormat\n const lang = language[langType] ? language[langType] : language['en']\n const mime = mimes[tempImgFormat]\n // 规范图片格式\n this.imgFormat = tempImgFormat\n if (langExt) {\n Object.assign(lang, langExt)\n }\n if (typeof FormData !== 'function') {\n isSupported = false\n }\n return {\n // 图片的mime\n mime,\n // 语言包\n lang,\n // 浏览器是否支持该控件\n isSupported,\n // 浏览器是否支持触屏事件\n // eslint-disable-next-line no-prototype-builtins\n isSupportTouch: document.hasOwnProperty('ontouchstart'),\n // 步骤\n step: 1, // 1选择文件 2剪裁 3上传\n // 上传状态及进度\n loading: 0, // 0未开始 1正在 2成功 3错误\n progress: 0,\n // 是否有错误及错误信息\n hasError: false,\n errorMsg: '',\n // 需求图宽高比\n ratio: width / height,\n // 原图地址、生成图片地址\n sourceImg: null,\n sourceImgUrl: '',\n createImgUrl: '',\n // 原图片拖动事件初始值\n sourceImgMouseDown: {\n on: false,\n mX: 0, // 鼠标按下的坐标\n mY: 0,\n x: 0, // scale原图坐标\n y: 0\n },\n // 生成图片预览的容器大小\n previewContainer: {\n width: 100,\n height: 100\n },\n // 原图容器宽高\n sourceImgContainer: {\n // sic\n width: 240,\n height: 184 // 如果生成图比例与此一致会出现bug,先改成特殊的格式吧,哈哈哈\n },\n // 原图展示属性\n scale: {\n zoomAddOn: false, // 按钮缩放事件开启\n zoomSubOn: false, // 按钮缩放事件开启\n range: 1, // 最大100\n rotateLeft: false, // 按钮向左旋转事件开启\n rotateRight: false, // 按钮向右旋转事件开启\n degree: 0, // 旋转度数\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n maxWidth: 0,\n maxHeight: 0,\n minWidth: 0, // 最宽\n minHeight: 0,\n naturalWidth: 0, // 原宽\n naturalHeight: 0\n }\n }\n },\n computed: {\n // 进度条样式\n progressStyle() {\n const { progress } = this\n return {\n width: progress + '%'\n }\n },\n // 原图样式\n sourceImgStyle() {\n const { scale, sourceImgMasking } = this\n const top = scale.y + sourceImgMasking.y + 'px'\n const left = scale.x + sourceImgMasking.x + 'px'\n return {\n top,\n left,\n width: scale.width + 'px',\n height: scale.height + 'px',\n transform: 'rotate(' + scale.degree + 'deg)', // 旋转时 左侧原始图旋转样式\n '-ms-transform': 'rotate(' + scale.degree + 'deg)', // 兼容IE9\n '-moz-transform': 'rotate(' + scale.degree + 'deg)', // 兼容FireFox\n '-webkit-transform': 'rotate(' + scale.degree + 'deg)', // 兼容Safari 和 chrome\n '-o-transform': 'rotate(' + scale.degree + 'deg)' // 兼容 Opera\n }\n },\n // 原图蒙版属性\n sourceImgMasking() {\n const { width, height, ratio, sourceImgContainer } = this\n const sic = sourceImgContainer\n const sicRatio = sic.width / sic.height // 原图容器宽高比\n let x = 0\n let y = 0\n let w = sic.width\n let h = sic.height\n let scale = 1\n if (ratio < sicRatio) {\n scale = sic.height / height\n w = sic.height * ratio\n x = (sic.width - w) / 2\n }\n if (ratio > sicRatio) {\n scale = sic.width / width\n h = sic.width / ratio\n y = (sic.height - h) / 2\n }\n return {\n scale, // 蒙版相对需求宽高的缩放\n x,\n y,\n width: w,\n height: h\n }\n },\n // 原图遮罩样式\n sourceImgShadeStyle() {\n const { sourceImgMasking, sourceImgContainer } = this\n const sic = sourceImgContainer\n const sim = sourceImgMasking\n const w =\n sim.width === sic.width ? sim.width : (sic.width - sim.width) / 2\n const h =\n sim.height === sic.height ? sim.height : (sic.height - sim.height) / 2\n return {\n width: w + 'px',\n height: h + 'px'\n }\n },\n previewStyle() {\n const { ratio, previewContainer } = this\n const pc = previewContainer\n let w = pc.width\n let h = pc.height\n const pcRatio = w / h\n if (ratio < pcRatio) {\n w = pc.height * ratio\n }\n if (ratio > pcRatio) {\n h = pc.width / ratio\n }\n return {\n width: w + 'px',\n height: h + 'px'\n }\n }\n },\n watch: {\n value(newValue) {\n if (newValue && this.loading !== 1) {\n this.reset()\n }\n }\n },\n created() {\n // 绑定按键esc隐藏此插件事件\n document.addEventListener('keyup', this.closeHandler)\n },\n destroyed() {\n document.removeEventListener('keyup', this.closeHandler)\n },\n methods: {\n // 点击波纹效果\n ripple(e) {\n effectRipple(e)\n },\n // 关闭控件\n off() {\n setTimeout(() => {\n this.$emit('input', false)\n this.$emit('close')\n if (this.step === 3 && this.loading === 2) {\n this.setStep(1)\n }\n }, 200)\n },\n // 设置步骤\n setStep(no) {\n // 延时是为了显示动画效果呢,哈哈哈\n setTimeout(() => {\n this.step = no\n }, 200)\n },\n /* 图片选择区域函数绑定\n ---------------------------------------------------------------*/\n preventDefault(e) {\n e.preventDefault()\n return false\n },\n handleClick(e) {\n if (this.loading !== 1) {\n if (e.target !== this.$refs.fileinput) {\n e.preventDefault()\n if (document.activeElement !== this.$refs) {\n this.$refs.fileinput.click()\n }\n }\n }\n },\n handleChange(e) {\n e.preventDefault()\n if (this.loading !== 1) {\n const files = e.target.files || e.dataTransfer.files\n this.reset()\n if (this.checkFile(files[0])) {\n this.setSourceImg(files[0])\n }\n }\n },\n /* ---------------------------------------------------------------*/\n // 检测选择的文件是否合适\n checkFile(file) {\n const { lang, maxSize } = this\n // 仅限图片\n if (file.type.indexOf('image') === -1) {\n this.hasError = true\n this.errorMsg = lang.error.onlyImg\n return false\n }\n // 超出大小\n if (file.size / 1024 > maxSize) {\n this.hasError = true\n this.errorMsg = lang.error.outOfSize + maxSize + 'kb'\n return false\n }\n return true\n },\n // 重置控件\n reset() {\n this.loading = 0\n this.hasError = false\n this.errorMsg = ''\n this.progress = 0\n },\n // 设置图片源\n setSourceImg(file) {\n const fr = new FileReader()\n fr.onload = e => {\n this.sourceImgUrl = fr.result\n this.startCrop()\n }\n fr.readAsDataURL(file)\n },\n // 剪裁前准备工作\n startCrop() {\n const {\n width,\n height,\n ratio,\n scale,\n sourceImgUrl,\n sourceImgMasking,\n lang\n } = this\n const sim = sourceImgMasking\n const img = new Image()\n img.src = sourceImgUrl\n img.onload = () => {\n const nWidth = img.naturalWidth\n const nHeight = img.naturalHeight\n const nRatio = nWidth / nHeight\n let w = sim.width\n let h = sim.height\n let x = 0\n let y = 0\n // 图片像素不达标\n if (nWidth < width || nHeight < height) {\n this.hasError = true\n this.errorMsg = lang.error.lowestPx + width + '*' + height\n return false\n }\n if (ratio > nRatio) {\n h = w / nRatio\n y = (sim.height - h) / 2\n }\n if (ratio < nRatio) {\n w = h * nRatio\n x = (sim.width - w) / 2\n }\n scale.range = 0\n scale.x = x\n scale.y = y\n scale.width = w\n scale.height = h\n scale.degree = 0\n scale.minWidth = w\n scale.minHeight = h\n scale.maxWidth = nWidth * sim.scale\n scale.maxHeight = nHeight * sim.scale\n scale.naturalWidth = nWidth\n scale.naturalHeight = nHeight\n this.sourceImg = img\n this.createImg()\n this.setStep(2)\n }\n },\n // 鼠标按下图片准备移动\n imgStartMove(e) {\n e.preventDefault()\n // 支持触摸事件,则鼠标事件无效\n if (this.isSupportTouch && !e.targetTouches) {\n return false\n }\n const et = e.targetTouches ? e.targetTouches[0] : e\n const { sourceImgMouseDown, scale } = this\n const simd = sourceImgMouseDown\n simd.mX = et.screenX\n simd.mY = et.screenY\n simd.x = scale.x\n simd.y = scale.y\n simd.on = true\n },\n // 鼠标按下状态下移动,图片移动\n imgMove(e) {\n e.preventDefault()\n // 支持触摸事件,则鼠标事件无效\n if (this.isSupportTouch && !e.targetTouches) {\n return false\n }\n const et = e.targetTouches ? e.targetTouches[0] : e\n const {\n sourceImgMouseDown: { on, mX, mY, x, y },\n scale,\n sourceImgMasking\n } = this\n const sim = sourceImgMasking\n const nX = et.screenX\n const nY = et.screenY\n const dX = nX - mX\n const dY = nY - mY\n let rX = x + dX\n let rY = y + dY\n if (!on) return\n if (rX > 0) {\n rX = 0\n }\n if (rY > 0) {\n rY = 0\n }\n if (rX < sim.width - scale.width) {\n rX = sim.width - scale.width\n }\n if (rY < sim.height - scale.height) {\n rY = sim.height - scale.height\n }\n scale.x = rX\n scale.y = rY\n },\n // 按钮按下开始向右旋转\n startRotateRight(e) {\n const { scale } = this\n scale.rotateRight = true\n const rotate = () => {\n if (scale.rotateRight) {\n const degree = ++scale.degree\n this.createImg(degree)\n setTimeout(function() {\n rotate()\n }, 60)\n }\n }\n rotate()\n },\n // 按钮按下开始向左旋转\n startRotateLeft(e) {\n const { scale } = this\n scale.rotateLeft = true\n const rotate = () => {\n if (scale.rotateLeft) {\n const degree = --scale.degree\n this.createImg(degree)\n setTimeout(function() {\n rotate()\n }, 60)\n }\n }\n rotate()\n },\n // 停止旋转\n endRotate() {\n const { scale } = this\n scale.rotateLeft = false\n scale.rotateRight = false\n },\n // 按钮按下开始放大\n startZoomAdd(e) {\n const { scale } = this\n scale.zoomAddOn = true\n const zoom = () => {\n if (scale.zoomAddOn) {\n const range = scale.range >= 100 ? 100 : ++scale.range\n this.zoomImg(range)\n setTimeout(function() {\n zoom()\n }, 60)\n }\n }\n zoom()\n },\n // 按钮松开或移开取消放大\n endZoomAdd(e) {\n this.scale.zoomAddOn = false\n },\n // 按钮按下开始缩小\n startZoomSub(e) {\n const { scale } = this\n scale.zoomSubOn = true\n const zoom = () => {\n if (scale.zoomSubOn) {\n const range = scale.range <= 0 ? 0 : --scale.range\n this.zoomImg(range)\n setTimeout(function() {\n zoom()\n }, 60)\n }\n }\n zoom()\n },\n // 按钮松开或移开取消缩小\n endZoomSub(e) {\n const { scale } = this\n scale.zoomSubOn = false\n },\n zoomChange(e) {\n this.zoomImg(e.target.value)\n },\n // 缩放原图\n zoomImg(newRange) {\n const { sourceImgMasking, scale } = this\n const {\n maxWidth,\n maxHeight,\n minWidth,\n minHeight,\n width,\n height,\n x,\n y\n } = scale\n const sim = sourceImgMasking\n // 蒙版宽高\n const sWidth = sim.width\n const sHeight = sim.height\n // 新宽高\n const nWidth = minWidth + ((maxWidth - minWidth) * newRange) / 100\n const nHeight = minHeight + ((maxHeight - minHeight) * newRange) / 100\n // 新坐标(根据蒙版中心点缩放)\n let nX = sWidth / 2 - (nWidth / width) * (sWidth / 2 - x)\n let nY = sHeight / 2 - (nHeight / height) * (sHeight / 2 - y)\n // 判断新坐标是否超过蒙版限制\n if (nX > 0) {\n nX = 0\n }\n if (nY > 0) {\n nY = 0\n }\n if (nX < sWidth - nWidth) {\n nX = sWidth - nWidth\n }\n if (nY < sHeight - nHeight) {\n nY = sHeight - nHeight\n }\n // 赋值处理\n scale.x = nX\n scale.y = nY\n scale.width = nWidth\n scale.height = nHeight\n scale.range = newRange\n setTimeout(() => {\n if (scale.range === newRange) {\n this.createImg()\n }\n }, 300)\n },\n // 生成需求图片\n createImg(e) {\n const {\n mime,\n sourceImg,\n scale: { x, y, width, height, degree },\n sourceImgMasking: { scale }\n } = this\n const canvas = this.$refs.canvas\n const ctx = canvas.getContext('2d')\n if (e) {\n // 取消鼠标按下移动状态\n this.sourceImgMouseDown.on = false\n }\n canvas.width = this.width\n canvas.height = this.height\n ctx.clearRect(0, 0, this.width, this.height)\n // 将透明区域设置为白色底边\n ctx.fillStyle = '#fff'\n ctx.fillRect(0, 0, this.width, this.height)\n ctx.translate(this.width * 0.5, this.height * 0.5)\n ctx.rotate((Math.PI * degree) / 180)\n ctx.translate(-this.width * 0.5, -this.height * 0.5)\n ctx.drawImage(\n sourceImg,\n x / scale,\n y / scale,\n width / scale,\n height / scale\n )\n this.createImgUrl = canvas.toDataURL(mime)\n },\n prepareUpload() {\n const { url, createImgUrl, field, ki } = this\n this.$emit('crop-success', createImgUrl, field, ki)\n if (typeof url === 'string' && url) {\n this.upload()\n } else {\n this.off()\n }\n },\n // 上传图片\n upload() {\n const {\n lang,\n imgFormat,\n mime,\n url,\n params,\n field,\n ki,\n createImgUrl\n } = this\n const fmData = new FormData()\n fmData.append(\n field,\n data2blob(createImgUrl, mime),\n field + '.' + imgFormat\n )\n // 添加其他参数\n if (typeof params === 'object' && params) {\n Object.keys(params).forEach(k => {\n fmData.append(k, params[k])\n })\n }\n // 监听进度回调\n // const uploadProgress = (event) => {\n // if (event.lengthComputable) {\n // this.progress = 100 * Math.round(event.loaded) / event.total\n // }\n // }\n // 上传文件\n this.reset()\n this.loading = 1\n this.setStep(3)\n request({\n url,\n method: 'post',\n data: fmData\n })\n .then(resData => {\n this.loading = 2\n this.$emit('crop-upload-success', resData.data)\n })\n .catch(err => {\n if (this.value) {\n this.loading = 3\n this.hasError = true\n this.errorMsg = lang.fail\n this.$emit('crop-upload-fail', err, field, ki)\n }\n })\n },\n closeHandler(e) {\n if (this.value && (e.key === 'Escape' || e.keyCode === 27)) {\n this.off()\n }\n }\n }\n}\n</script>\n\n<style lang=\"scss\">\n@charset \"UTF-8\";\n@-webkit-keyframes vicp_progress {\n 0% {\n background-position-y: 0;\n }\n 100% {\n background-position-y: 40px;\n }\n}\n@keyframes vicp_progress {\n 0% {\n background-position-y: 0;\n }\n 100% {\n background-position-y: 40px;\n }\n}\n@-webkit-keyframes vicp {\n 0% {\n opacity: 0;\n -webkit-transform: scale(0) translatey(-60px);\n transform: scale(0) translatey(-60px);\n }\n 100% {\n opacity: 1;\n -webkit-transform: scale(1) translatey(0);\n transform: scale(1) translatey(0);\n }\n}\n@keyframes vicp {\n 0% {\n opacity: 0;\n -webkit-transform: scale(0) translatey(-60px);\n transform: scale(0) translatey(-60px);\n }\n 100% {\n opacity: 1;\n -webkit-transform: scale(1) translatey(0);\n transform: scale(1) translatey(0);\n }\n}\n.vue-image-crop-upload {\n position: fixed;\n display: block;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n z-index: 10000;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.65);\n -webkit-tap-highlight-color: transparent;\n -moz-tap-highlight-color: transparent;\n}\n.vue-image-crop-upload .vicp-wrap {\n -webkit-box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.23);\n box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.23);\n position: fixed;\n display: block;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n z-index: 10000;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n margin: auto;\n width: 600px;\n height: 330px;\n padding: 25px;\n background-color: #fff;\n border-radius: 2px;\n -webkit-animation: vicp 0.12s ease-in;\n animation: vicp 0.12s ease-in;\n}\n.vue-image-crop-upload .vicp-wrap .vicp-close {\n position: absolute;\n right: -30px;\n top: -30px;\n}\n.vue-image-crop-upload .vicp-wrap .vicp-close .vicp-icon4 {\n position: relative;\n display: block;\n width: 30px;\n height: 30px;\n cursor: pointer;\n -webkit-transition: -webkit-transform 0.18s;\n transition: -webkit-transform 0.18s;\n transition: transform 0.18s;\n transition: transform 0.18s, -webkit-transform 0.18s;\n -webkit-transform: rotate(0);\n -ms-transform: rotate(0);\n transform: rotate(0);\n}\n.vue-image-crop-upload .vicp-wrap .vicp-close .vicp-icon4::after,\n.vue-image-crop-upload .vicp-wrap .vicp-close .vicp-icon4::before {\n -webkit-box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.23);\n box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.23);\n content: \"\";\n position: absolute;\n top: 12px;\n left: 4px;\n width: 20px;\n height: 3px;\n -webkit-transform: rotate(45deg);\n -ms-transform: rotate(45deg);\n transform: rotate(45deg);\n background-color: #fff;\n}\n.vue-image-crop-upload .vicp-wrap .vicp-close .vicp-icon4::after {\n -webkit-transform: rotate(-45deg);\n -ms-transform: rotate(-45deg);\n transform: rotate(-45deg);\n}\n.vue-image-crop-upload .vicp-wrap .vicp-close .vicp-icon4:hover {\n -webkit-transform: rotate(90deg);\n -ms-transform: rotate(90deg);\n transform: rotate(90deg);\n}\n.vue-image-crop-upload .vicp-wrap .vicp-step1 .vicp-drop-area {\n position: relative;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n padding: 35px;\n height: 170px;\n background-color: rgba(0, 0, 0, 0.03);\n text-align: center;\n border: 1px dashed rgba(0, 0, 0, 0.08);\n overflow: hidden;\n}\n.vue-image-crop-upload .vicp-wrap .vicp-step1 .vicp-drop-area .vicp-icon1 {\n display: block;\n margin: 0 auto 6px;\n width: 42px;\n height: 42px;\n overflow: hidden;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step1\n .vicp-drop-area\n .vicp-icon1\n .vicp-icon1-arrow {\n display: block;\n margin: 0 auto;\n width: 0;\n height: 0;\n border-bottom: 14.7px solid rgba(0, 0, 0, 0.3);\n border-left: 14.7px solid transparent;\n border-right: 14.7px solid transparent;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step1\n .vicp-drop-area\n .vicp-icon1\n .vicp-icon1-body {\n display: block;\n width: 12.6px;\n height: 14.7px;\n margin: 0 auto;\n background-color: rgba(0, 0, 0, 0.3);\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step1\n .vicp-drop-area\n .vicp-icon1\n .vicp-icon1-bottom {\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n display: block;\n height: 12.6px;\n border: 6px solid rgba(0, 0, 0, 0.3);\n border-top: none;\n}\n.vue-image-crop-upload .vicp-wrap .vicp-step1 .vicp-drop-area .vicp-hint {\n display: block;\n padding: 15px;\n font-size: 14px;\n color: #666;\n line-height: 30px;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step1\n .vicp-drop-area\n .vicp-no-supported-hint {\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n padding: 30px;\n width: 100%;\n height: 60px;\n line-height: 30px;\n background-color: #eee;\n text-align: center;\n color: #666;\n font-size: 14px;\n}\n.vue-image-crop-upload .vicp-wrap .vicp-step1 .vicp-drop-area:hover {\n cursor: pointer;\n border-color: rgba(0, 0, 0, 0.1);\n background-color: rgba(0, 0, 0, 0.05);\n}\n.vue-image-crop-upload .vicp-wrap .vicp-step2 .vicp-crop {\n overflow: hidden;\n}\n.vue-image-crop-upload .vicp-wrap .vicp-step2 .vicp-crop .vicp-crop-left {\n float: left;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-img-container {\n position: relative;\n display: block;\n width: 240px;\n height: 180px;\n background-color: #e5e5e0;\n overflow: hidden;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-img-container\n .vicp-img {\n position: absolute;\n display: block;\n cursor: move;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-img-container\n .vicp-img-shade {\n -webkit-box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.18);\n box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.18);\n position: absolute;\n background-color: rgba(241, 242, 243, 0.8);\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-img-container\n .vicp-img-shade.vicp-img-shade-1 {\n top: 0;\n left: 0;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-img-container\n .vicp-img-shade.vicp-img-shade-2 {\n bottom: 0;\n right: 0;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-rotate {\n position: relative;\n width: 240px;\n height: 18px;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-rotate\n i {\n display: block;\n width: 18px;\n height: 18px;\n border-radius: 100%;\n line-height: 18px;\n text-align: center;\n font-size: 12px;\n font-weight: bold;\n background-color: rgba(0, 0, 0, 0.08);\n color: #fff;\n overflow: hidden;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-rotate\n i:hover {\n -webkit-box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.12);\n box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.12);\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.14);\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-rotate\n i:first-child {\n float: left;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-rotate\n i:last-child {\n float: right;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-range {\n position: relative;\n margin: 30px 0 10px 0;\n width: 240px;\n height: 18px;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-range\n .vicp-icon5,\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-range\n .vicp-icon6 {\n position: absolute;\n top: 0;\n width: 18px;\n height: 18px;\n border-radius: 100%;\n background-color: rgba(0, 0, 0, 0.08);\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-range\n .vicp-icon5:hover,\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-range\n .vicp-icon6:hover {\n -webkit-box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.12);\n box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.12);\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.14);\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-range\n .vicp-icon5 {\n left: 0;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-range\n .vicp-icon5::before {\n position: absolute;\n content: \"\";\n display: block;\n left: 3px;\n top: 8px;\n width: 12px;\n height: 2px;\n background-color: #fff;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-range\n .vicp-icon6 {\n right: 0;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-range\n .vicp-icon6::before {\n position: absolute;\n content: \"\";\n display: block;\n left: 3px;\n top: 8px;\n width: 12px;\n height: 2px;\n background-color: #fff;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-range\n .vicp-icon6::after {\n position: absolute;\n content: \"\";\n display: block;\n top: 3px;\n left: 8px;\n width: 2px;\n height: 12px;\n background-color: #fff;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-range\n input[type=\"range\"] {\n display: block;\n padding-top: 5px;\n margin: 0 auto;\n width: 180px;\n height: 8px;\n vertical-align: top;\n background: transparent;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n cursor: pointer;\n /* 滑块\n ---------------------------------------------------------------*/\n /* 轨道\n ---------------------------------------------------------------*/\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-range\n input[type=\"range\"]:focus {\n outline: none;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-range\n input[type=\"range\"]::-webkit-slider-thumb {\n -webkit-box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.18);\n box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.18);\n -webkit-appearance: none;\n appearance: none;\n margin-top: -3px;\n width: 12px;\n height: 12px;\n background-color: #61c091;\n border-radius: 100%;\n border: none;\n -webkit-transition: 0.2s;\n transition: 0.2s;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-range\n input[type=\"range\"]::-moz-range-thumb {\n box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.18);\n -moz-appearance: none;\n appearance: none;\n width: 12px;\n height: 12px;\n background-color: #61c091;\n border-radius: 100%;\n border: none;\n -webkit-transition: 0.2s;\n transition: 0.2s;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-range\n input[type=\"range\"]::-ms-thumb {\n box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.18);\n appearance: none;\n width: 12px;\n height: 12px;\n background-color: #61c091;\n border: none;\n border-radius: 100%;\n -webkit-transition: 0.2s;\n transition: 0.2s;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-range\n input[type=\"range\"]:active::-moz-range-thumb {\n box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.23);\n width: 14px;\n height: 14px;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-range\n input[type=\"range\"]:active::-ms-thumb {\n box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.23);\n width: 14px;\n height: 14px;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-range\n input[type=\"range\"]:active::-webkit-slider-thumb {\n -webkit-box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.23);\n box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.23);\n margin-top: -4px;\n width: 14px;\n height: 14px;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-range\n input[type=\"range\"]::-webkit-slider-runnable-track {\n -webkit-box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.12);\n box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.12);\n width: 100%;\n height: 6px;\n cursor: pointer;\n border-radius: 2px;\n border: none;\n background-color: rgba(68, 170, 119, 0.3);\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-range\n input[type=\"range\"]::-moz-range-track {\n box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.12);\n width: 100%;\n height: 6px;\n cursor: pointer;\n border-radius: 2px;\n border: none;\n background-color: rgba(68, 170, 119, 0.3);\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-range\n input[type=\"range\"]::-ms-track {\n box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.12);\n width: 100%;\n cursor: pointer;\n background: transparent;\n border-color: transparent;\n color: transparent;\n height: 6px;\n border-radius: 2px;\n border: none;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-range\n input[type=\"range\"]::-ms-fill-lower {\n background-color: rgba(68, 170, 119, 0.3);\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-range\n input[type=\"range\"]::-ms-fill-upper {\n background-color: rgba(68, 170, 119, 0.15);\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-range\n input[type=\"range\"]:focus::-webkit-slider-runnable-track {\n background-color: rgba(68, 170, 119, 0.5);\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-range\n input[type=\"range\"]:focus::-moz-range-track {\n background-color: rgba(68, 170, 119, 0.5);\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-range\n input[type=\"range\"]:focus::-ms-fill-lower {\n background-color: rgba(68, 170, 119, 0.45);\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-left\n .vicp-range\n input[type=\"range\"]:focus::-ms-fill-upper {\n background-color: rgba(68, 170, 119, 0.25);\n}\n.vue-image-crop-upload .vicp-wrap .vicp-step2 .vicp-crop .vicp-crop-right {\n float: right;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-right\n .vicp-preview {\n height: 150px;\n overflow: hidden;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-right\n .vicp-preview\n .vicp-preview-item {\n position: relative;\n padding: 5px;\n width: 100px;\n height: 100px;\n float: left;\n margin-right: 16px;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-right\n .vicp-preview\n .vicp-preview-item\n span {\n position: absolute;\n bottom: -30px;\n width: 100%;\n font-size: 14px;\n color: #bbb;\n display: block;\n text-align: center;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-right\n .vicp-preview\n .vicp-preview-item\n img {\n position: absolute;\n display: block;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n margin: auto;\n padding: 3px;\n background-color: #fff;\n border: 1px solid rgba(0, 0, 0, 0.15);\n overflow: hidden;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-right\n .vicp-preview\n .vicp-preview-item.vicp-preview-item-circle {\n margin-right: 0;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step2\n .vicp-crop\n .vicp-crop-right\n .vicp-preview\n .vicp-preview-item.vicp-preview-item-circle\n img {\n border-radius: 100%;\n}\n.vue-image-crop-upload .vicp-wrap .vicp-step3 .vicp-upload {\n position: relative;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n padding: 35px;\n height: 170px;\n background-color: rgba(0, 0, 0, 0.03);\n text-align: center;\n border: 1px dashed #ddd;\n}\n.vue-image-crop-upload .vicp-wrap .vicp-step3 .vicp-upload .vicp-loading {\n display: block;\n padding: 15px;\n font-size: 16px;\n color: #999;\n line-height: 30px;\n}\n.vue-image-crop-upload .vicp-wrap .vicp-step3 .vicp-upload .vicp-progress-wrap {\n margin-top: 12px;\n background-color: rgba(0, 0, 0, 0.08);\n border-radius: 3px;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step3\n .vicp-upload\n .vicp-progress-wrap\n .vicp-progress {\n position: relative;\n display: block;\n height: 5px;\n border-radius: 3px;\n background-color: #4a7;\n -webkit-box-shadow: 0 2px 6px 0 rgba(68, 170, 119, 0.3);\n box-shadow: 0 2px 6px 0 rgba(68, 170, 119, 0.3);\n -webkit-transition: width 0.15s linear;\n transition: width 0.15s linear;\n background-image: -webkit-linear-gradient(\n 135deg,\n rgba(255, 255, 255, 0.2) 25%,\n transparent 25%,\n transparent 50%,\n rgba(255, 255, 255, 0.2) 50%,\n rgba(255, 255, 255, 0.2) 75%,\n transparent 75%,\n transparent\n );\n background-image: linear-gradient(\n -45deg,\n rgba(255, 255, 255, 0.2) 25%,\n transparent 25%,\n transparent 50%,\n rgba(255, 255, 255, 0.2) 50%,\n rgba(255, 255, 255, 0.2) 75%,\n transparent 75%,\n transparent\n );\n background-size: 40px 40px;\n -webkit-animation: vicp_progress 0.5s linear infinite;\n animation: vicp_progress 0.5s linear infinite;\n}\n.vue-image-crop-upload\n .vicp-wrap\n .vicp-step3\n .vicp-upload\n .vicp-progress-wrap\n .vicp-progress::after {\n content: \"\";\n position: absolute;\n display: block;\n top: -3px;\n right: -3px;\n width: 9px;\n height: 9px;\n border: 1px solid rgba(245, 246, 247, 0.7);\n -webkit-box-shadow: 0 1px 4px 0 rgba(68, 170, 119, 0.7);\n box-shadow: 0 1px 4px 0 rgba(68, 170, 119, 0.7);\n border-radius: 100%;\n background-color: #4a7;\n}\n.vue-image-crop-upload .vicp-wrap .vicp-step3 .vicp-upload .vicp-error,\n.vue-image-crop-upload .vicp-wrap .vicp-step3 .vicp-upload .vicp-success {\n height: 100px;\n line-height: 100px;\n}\n.vue-image-crop-upload .vicp-wrap .vicp-operate {\n position: absolute;\n right: 20px;\n bottom: 20px;\n}\n.vue-image-crop-upload .vicp-wrap .vicp-operate a {\n position: relative;\n float: left;\n display: block;\n margin-left: 10px;\n width: 100px;\n height: 36px;\n line-height: 36px;\n text-align: center;\n cursor: pointer;\n font-size: 14px;\n color: #4a7;\n border-radius: 2px;\n overflow: hidden;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n.vue-image-crop-upload .vicp-wrap .vicp-operate a:hover {\n background-color: rgba(0, 0, 0, 0.03);\n}\n.vue-image-crop-upload .vicp-wrap .vicp-error,\n.vue-image-crop-upload .vicp-wrap .vicp-success {\n display: block;\n font-size: 14px;\n line-height: 24px;\n height: 24px;\n color: #d10;\n text-align: center;\n vertical-align: top;\n}\n.vue-image-crop-upload .vicp-wrap .vicp-success {\n color: #4a7;\n}\n.vue-image-crop-upload .vicp-wrap .vicp-icon3 {\n position: relative;\n display: inline-block;\n width: 20px;\n height: 20px;\n top: 4px;\n}\n.vue-image-crop-upload .vicp-wrap .vicp-icon3::after {\n position: absolute;\n top: 3px;\n left: 6px;\n width: 6px;\n height: 10px;\n border-width: 0 2px 2px 0;\n border-color: #4a7;\n border-style: solid;\n -webkit-transform: rotate(45deg);\n -ms-transform: rotate(45deg);\n transform: rotate(45deg);\n content: \"\";\n}\n.vue-image-crop-upload .vicp-wrap .vicp-icon2 {\n position: relative;\n display: inline-block;\n width: 20px;\n height: 20px;\n top: 4px;\n}\n.vue-image-crop-upload .vicp-wrap .vicp-icon2::after,\n.vue-image-crop-upload .vicp-wrap .vicp-icon2::before {\n content: \"\";\n position: absolute;\n top: 9px;\n left: 4px;\n width: 13px;\n height: 2px;\n background-color: #d10;\n -webkit-transform: rotate(45deg);\n -ms-transform: rotate(45deg);\n transform: rotate(45deg);\n}\n.vue-image-crop-upload .vicp-wrap .vicp-icon2::after {\n -webkit-transform: rotate(-45deg);\n -ms-transform: rotate(-45deg);\n transform: rotate(-45deg);\n}\n.e-ripple {\n position: absolute;\n border-radius: 100%;\n background-color: rgba(0, 0, 0, 0.15);\n background-clip: padding-box;\n pointer-events: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n -webkit-transform: scale(0);\n -ms-transform: scale(0);\n transform: scale(0);\n opacity: 1;\n}\n.e-ripple.z-active {\n opacity: 0;\n -webkit-transform: scale(2);\n -ms-transform: scale(2);\n transform: scale(2);\n -webkit-transition: opacity 1.2s ease-out, -webkit-transform 0.6s ease-out;\n transition: opacity 1.2s ease-out, -webkit-transform 0.6s ease-out;\n transition: opacity 1.2s ease-out, transform 0.6s ease-out;\n transition: opacity 1.2s ease-out, transform 0.6s ease-out,\n -webkit-transform 0.6s ease-out;\n}\n</style>\n"]}]}
|