diff --git a/.prettierrc b/.prettierrc
index bb94764..e75a771 100644
--- a/.prettierrc
+++ b/.prettierrc
@@ -6,5 +6,5 @@
"singleQuote": true,
"jsxSingleQuote": true,
"jsxBracketSameLine": true,
- "trailingComma": "all"
+ "trailingComma": "es5"
}
diff --git a/demo/CIDemos/ai.js b/demo/CIDemos/ai.js
index 36cf908..f45eadb 100644
--- a/demo/CIDemos/ai.js
+++ b/demo/CIDemos/ai.js
@@ -1,6 +1,6 @@
/**
* AI内容识别demo集合
-*/
+ */
// 开通AI内容识别
export const CreateAIProcessBucket = {
@@ -10,20 +10,23 @@ export const CreateAIProcessBucket = {
const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
const url = `https://${host}/${key}`;
- cos.request({
- Method: 'POST', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ cos.request(
+ {
+ Method: 'POST', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 关闭AI内容识别
@@ -34,20 +37,23 @@ export const closeAIBucket = {
const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
const url = `https://${host}/${key}`;
- cos.request({
- Method: 'DELETE', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ cos.request(
+ {
+ Method: 'DELETE', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 查询开通AI内容识别的桶
@@ -58,33 +64,35 @@ export const DescribeAIProcessBuckets = {
const host = `ci.${config.Region}.myqcloud.com`;
const url = `https://${host}/${key}`;
- cos.request({
- Method: 'GET', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Query: {
- // 地域信息,例如 ap-shanghai、ap-beijing,若查询多个地域以“,”分隔字符串,详情请参见 地域与域名;是否必传:是
- // regions: '',
- // 存储桶名称,以“,”分隔,支持多个存储桶,精确搜索;是否必传:是
- // bucketNames: '',
- // 存储桶名称前缀,前缀搜索;是否必传:是
- // bucketName: '',
- // 第几页;是否必传:是
- // pageNumber: 1,
- // 每页个数,大于0且小于等于100的整数;是否必传:是
- // pageSize: 10,
+ cos.request(
+ {
+ Method: 'GET', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Query: {
+ // 地域信息,例如 ap-shanghai、ap-beijing,若查询多个地域以“,”分隔字符串,详情请参见 地域与域名;是否必传:是
+ // regions: '',
+ // 存储桶名称,以“,”分隔,支持多个存储桶,精确搜索;是否必传:是
+ // bucketNames: '',
+ // 存储桶名称前缀,前缀搜索;是否必传:是
+ // bucketName: '',
+ // 第几页;是否必传:是
+ // pageNumber: 1,
+ // 每页个数,大于0且小于等于100的整数;是否必传:是
+ // pageSize: 10,
+ },
},
-
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 查询AI内容识别队列
@@ -95,31 +103,33 @@ export const DescribeAiProcessQueues = {
const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
const url = `https://${host}/${key}`;
- cos.request({
- Method: 'GET', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Query: {
- // 队列 ID,以“,”符号分割字符串;是否必传:否
- // queueIds: '',
- // Active 表示队列内的作业会被调度执行Paused 表示队列暂停,作业不再会被调度执行,队列内的所有作业状态维持在暂停状态,已经执行中的任务不受影响;是否必传:否
- state: 'Active',
- // 第几页,默认值1;是否必传:否
- // pageNumber: 0,
- // 每页个数,默认值10;是否必传:否
- // pageSize: 0,
+ cos.request(
+ {
+ Method: 'GET', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Query: {
+ // 队列 ID,以“,”符号分割字符串;是否必传:否
+ // queueIds: '',
+ // Active 表示队列内的作业会被调度执行Paused 表示队列暂停,作业不再会被调度执行,队列内的所有作业状态维持在暂停状态,已经执行中的任务不受影响;是否必传:否
+ state: 'Active',
+ // 第几页,默认值1;是否必传:否
+ // pageNumber: 0,
+ // 每页个数,默认值10;是否必传:否
+ // pageSize: 0,
+ },
},
-
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 更新AI内容识别队列
@@ -158,78 +168,87 @@ export const UpdateAiProcessQueue = {
},
});
- cos.request({
- Method: 'PUT', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Body: body, // 请求体参数,必须
- ContentType: 'application/xml', // 固定值,必须
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ cos.request(
+ {
+ Method: 'PUT', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Body: body, // 请求体参数,必须
+ ContentType: 'application/xml', // 固定值,必须
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 识别图片标签
export const getImageLabel = {
name: '识别图片标签',
fn: function getImageLabel() {
- cos.request({
- Bucket: config.Bucket,
- Region: config.Region,
- Method: 'GET', // 固定值,必须
- Key: 'ci/dog.jpeg', // 与detect-url二选一传递
- Query: {
- // 固定值detect-label;是否必传:是
- 'ci-process': 'detect-label',
- // 本次调用支持的识别场景,可选值如下:web,针对网络图片优化;camera,针对手机摄像头拍摄图片优化;album,针对手机相册、网盘产品优化;news,针对新闻、资讯、广电等行业优化;如果不传此参数,则默认为camera。支持多场景(scenes)一起检测,以,分隔。例如,使用 scenes=web,camera 即对一张图片使用两个模型同时检测,输出两套识别结果。;是否必传:否
- // scenes: '',
- // 您可以通过填写 detect-url 处理任意公网可访问的图片链接。不填写 detect-url 时,后台会默认处理 ObjectKey ,填写了 detect-url 时,后台会处理 detect-url 链接,无需再填写 ObjectKey detect-url 示例:http://www.example.com/abc.jpg ,需要进行 UrlEncode,处理后为http%25253A%25252F%25252Fwww.example.com%25252Fabc.jpg;是否必传:否
- // 'detect-url': '',
+ cos.request(
+ {
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET', // 固定值,必须
+ Key: 'ci/dog.jpeg', // 与detect-url二选一传递
+ Query: {
+ // 固定值detect-label;是否必传:是
+ 'ci-process': 'detect-label',
+ // 本次调用支持的识别场景,可选值如下:web,针对网络图片优化;camera,针对手机摄像头拍摄图片优化;album,针对手机相册、网盘产品优化;news,针对新闻、资讯、广电等行业优化;如果不传此参数,则默认为camera。支持多场景(scenes)一起检测,以,分隔。例如,使用 scenes=web,camera 即对一张图片使用两个模型同时检测,输出两套识别结果。;是否必传:否
+ // scenes: '',
+ // 您可以通过填写 detect-url 处理任意公网可访问的图片链接。不填写 detect-url 时,后台会默认处理 ObjectKey ,填写了 detect-url 时,后台会处理 detect-url 链接,无需再填写 ObjectKey detect-url 示例:http://www.example.com/abc.jpg ,需要进行 UrlEncode,处理后为http%25253A%25252F%25252Fwww.example.com%25252Fabc.jpg;是否必传:否
+ // 'detect-url': '',
+ },
},
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
// 二维码识别(云上图片识别)
export const recognitionQRcode = {
name: '二维码识别(云上图片识别)',
fn: function recognitionQRcode() {
- cos.request({
- Bucket: config.Bucket,
- Region: config.Region,
- Method: 'GET', // 固定值,必须
- Key: 'ci/二维码.png', // 必须
- Query: {
- // 万象处理能力,二维码识别固定为 QRcode;是否必传:是
- 'ci-process': 'QRcode',
- // 二维码覆盖功能,将对识别出的二维码覆盖上马赛克。取值为0或1。0表示不开启二维码覆盖,1表示开启二维码覆盖,默认值0;是否必传:否
- cover: 0,
+ cos.request(
+ {
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET', // 固定值,必须
+ Key: 'ci/二维码.png', // 必须
+ Query: {
+ // 万象处理能力,二维码识别固定为 QRcode;是否必传:是
+ 'ci-process': 'QRcode',
+ // 二维码覆盖功能,将对识别出的二维码覆盖上马赛克。取值为0或1。0表示不开启二维码覆盖,1表示开启二维码覆盖,默认值0;是否必传:否
+ cover: 0,
+ },
},
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 二维码识别(上传时识别)
@@ -261,10 +280,10 @@ export const identifyQrcode_put = {
// 处理请求成功
console.log(data);
}
- },
+ }
);
});
- }
+ },
};
// 二维码识别(下载时识别)
@@ -272,139 +291,153 @@ export const identifyQrcode_get = {
name: '二维码识别(下载时识别)',
fn: function identifyQrcode_get() {
const key = '1/二维码图片.png';
- cos.request({
- Bucket: config.Bucket,
- Region: config.Region,
- Method: 'GET',
- Key: key,
- Query: {
- 'ci-process': 'QRcode',
+ cos.request(
+ {
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET',
+ Key: key,
+ Query: {
+ 'ci-process': 'QRcode',
+ },
},
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
// 二维码生成
export const createCRcode = {
name: '二维码生成',
fn: function createCRcode() {
- cos.request({
- Bucket: config.Bucket,
- Region: config.Region,
- Method: 'GET',
- Query: {
- 'ci-process': 'qrcode-generate', // 必须,对象存储处理能力,二维码生成参数为 qrcode-generate
- 'qrcode-content': '二维码文案', // 必须,可识别的二维码文本信息
- // mode: 0, // 非必须,生成的二维码类型,可选值:0或1。0为二维码,1为条形码,默认值为0
- width: 200, //必须,指定生成的二维码或条形码的宽度,高度会进行等比压缩
+ cos.request(
+ {
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET',
+ Query: {
+ 'ci-process': 'qrcode-generate', // 必须,对象存储处理能力,二维码生成参数为 qrcode-generate
+ 'qrcode-content': '二维码文案', // 必须,可识别的二维码文本信息
+ // mode: 0, // 非必须,生成的二维码类型,可选值:0或1。0为二维码,1为条形码,默认值为0
+ width: 200, //必须,指定生成的二维码或条形码的宽度,高度会进行等比压缩
+ },
},
- }, function (err, data) {
- if (!err) {
- // 获得二维码base64
- const imgBase64 = data.Response.ResultImage;
- // 比如可拼接前缀直接展示在img里
- // document.querySelector('#img').src = 'data:image/jpg;base64,' + imgBase64;
+ function (err, data) {
+ if (!err) {
+ // 获得二维码base64
+ const imgBase64 = data.Response.ResultImage;
+ // 比如可拼接前缀直接展示在img里
+ // document.querySelector('#img').src = 'data:image/jpg;base64,' + imgBase64;
+ }
}
- });
- }
+ );
+ },
};
// 图片文字识别
export const cOSOCR = {
name: '图片文字识别',
fn: function cOSOCR() {
- cos.request({
- Bucket: config.Bucket,
- Region: config.Region,
- Method: 'GET', // 固定值,必须
- Key: 'ci/0.jpg', // 与detect-url二选一传递
- Query: {
- // 数据万象处理能力,图片文字识别固定为OCR;是否必传:是
- 'ci-process': 'OCR',
- // 您可以通过填写 detect-url 处理任意公网可访问的图片链接。不填写 detect-url 时,后台会默认处理 ObjectKey ,填写了 detect-url 时,后台会处理 detect-url 链接,无需再填写 ObjectKey detect-url 示例:http://www.example.com/abc.jpg ,需要进行 UrlEncode,处理后为http%25253A%25252F%25252Fwww.example.com%25252Fabc.jpg;是否必传:否
- // 'detect-url': '',
- // ocr的识别类型,有效值为general,accurate,efficient,fast,handwriting。general表示通用印刷体识别;accurate表示印刷体高精度版;efficient表示印刷体精简版;fast表示印刷体高速版;handwriting表示手写体识别。默认值为general。;是否必传:否
- type: 'general',
- // type值为general时有效,表示识别语言类型。支持自动识别语言类型,同时支持自选语言种类,默认中英文混合(zh),各种语言均支持与英文混合的文字识别。可选值:zh:中英混合zh_rare:支持英文、数字、中文生僻字、繁体字,特殊符号等auto:自动mix:混合语种jap:日语kor:韩语spa:西班牙语fre:法语ger:德语por:葡萄牙语vie:越语may:马来语rus:俄语ita:意大利语hol:荷兰语swe:瑞典语fin:芬兰语dan:丹麦语nor:挪威语hun:匈牙利语tha:泰语hi:印地语ara:阿拉伯语;是否必传:否
- 'language-type': 'zh',
- // type值为general,fast时有效,表示是否开启PDF识别,有效值为true和false,默认值为false,开启后可同时支持图片和PDF的识别。;是否必传:否
- ispdf: false,
- // type值为general,fast时有效,表示需要识别的PDF页面的对应页码,仅支持PDF单页识别,当上传文件为PDF且ispdf参数值为true时有效,默认值为1。;是否必传:否
- // 'pdf-pagenumber': 0,
- // type值为general,accurate时有效,表示识别后是否需要返回单字信息,有效值为true和false,默认为false;是否必传:否
- isword: false,
- // type值为handwriting时有效,表示是否开启单字的四点定位坐标输出,有效值为true和false,默认值为false。;是否必传:否
- 'enable-word-polygon': false,
+ cos.request(
+ {
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET', // 固定值,必须
+ Key: 'ci/0.jpg', // 与detect-url二选一传递
+ Query: {
+ // 数据万象处理能力,图片文字识别固定为OCR;是否必传:是
+ 'ci-process': 'OCR',
+ // 您可以通过填写 detect-url 处理任意公网可访问的图片链接。不填写 detect-url 时,后台会默认处理 ObjectKey ,填写了 detect-url 时,后台会处理 detect-url 链接,无需再填写 ObjectKey detect-url 示例:http://www.example.com/abc.jpg ,需要进行 UrlEncode,处理后为http%25253A%25252F%25252Fwww.example.com%25252Fabc.jpg;是否必传:否
+ // 'detect-url': '',
+ // ocr的识别类型,有效值为general,accurate,efficient,fast,handwriting。general表示通用印刷体识别;accurate表示印刷体高精度版;efficient表示印刷体精简版;fast表示印刷体高速版;handwriting表示手写体识别。默认值为general。;是否必传:否
+ type: 'general',
+ // type值为general时有效,表示识别语言类型。支持自动识别语言类型,同时支持自选语言种类,默认中英文混合(zh),各种语言均支持与英文混合的文字识别。可选值:zh:中英混合zh_rare:支持英文、数字、中文生僻字、繁体字,特殊符号等auto:自动mix:混合语种jap:日语kor:韩语spa:西班牙语fre:法语ger:德语por:葡萄牙语vie:越语may:马来语rus:俄语ita:意大利语hol:荷兰语swe:瑞典语fin:芬兰语dan:丹麦语nor:挪威语hun:匈牙利语tha:泰语hi:印地语ara:阿拉伯语;是否必传:否
+ 'language-type': 'zh',
+ // type值为general,fast时有效,表示是否开启PDF识别,有效值为true和false,默认值为false,开启后可同时支持图片和PDF的识别。;是否必传:否
+ ispdf: false,
+ // type值为general,fast时有效,表示需要识别的PDF页面的对应页码,仅支持PDF单页识别,当上传文件为PDF且ispdf参数值为true时有效,默认值为1。;是否必传:否
+ // 'pdf-pagenumber': 0,
+ // type值为general,accurate时有效,表示识别后是否需要返回单字信息,有效值为true和false,默认为false;是否必传:否
+ isword: false,
+ // type值为handwriting时有效,表示是否开启单字的四点定位坐标输出,有效值为true和false,默认值为false。;是否必传:否
+ 'enable-word-polygon': false,
+ },
},
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 车辆识别
export const aIDetectCar = {
name: '车辆识别',
fn: function aIDetectCar() {
- cos.request({
- Bucket: config.Bucket,
- Region: config.Region,
- Method: 'GET', // 固定值,必须
- Key: 'ci/car.png', // 对象文件名,必须,例如:folder/document.jpg
- Query: {
- // 数据万象处理能力,车辆识别固定为 DetectCar;是否必传:是
- 'ci-process': 'DetectCar',
+ cos.request(
+ {
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET', // 固定值,必须
+ Key: 'ci/car.png', // 对象文件名,必须,例如:folder/document.jpg
+ Query: {
+ // 数据万象处理能力,车辆识别固定为 DetectCar;是否必传:是
+ 'ci-process': 'DetectCar',
+ },
},
-
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 宠物识别
export const aIDetectPet = {
name: '宠物识别',
fn: function aIDetectPet() {
- cos.request({
- Bucket: config.Bucket,
- Region: config.Region,
- Method: 'GET', // 固定值,必须
- Key: 'ci/dog.jpeg', // 对象文件名,必须,例如:folder/document.jpg须
- Query: {
- // 数据万象处理能力,宠物识别固定为 detect-pet;是否必传:是
- 'ci-process': 'detect-pet',
+ cos.request(
+ {
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET', // 固定值,必须
+ Key: 'ci/dog.jpeg', // 对象文件名,必须,例如:folder/document.jpg须
+ Query: {
+ // 数据万象处理能力,宠物识别固定为 detect-pet;是否必传:是
+ 'ci-process': 'detect-pet',
+ },
},
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 创建视频目标检测模板
@@ -432,22 +465,25 @@ export const postVideoTargetTemplete = {
},
});
- cos.request({
- Method: 'POST', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Body: body, // 请求体参数,必须
- ContentType: 'application/xml', // 固定值,必须
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ cos.request(
+ {
+ Method: 'POST', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Body: body, // 请求体参数,必须
+ ContentType: 'application/xml', // 固定值,必须
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 更新视频目标检测模板
@@ -476,22 +512,25 @@ export const updateVideoTargetTemplete = {
},
});
- cos.request({
- Method: 'PUT', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Body: body, // 请求体参数,必须
- ContentType: 'application/xml', // 固定值,必须
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ cos.request(
+ {
+ Method: 'PUT', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Body: body, // 请求体参数,必须
+ ContentType: 'application/xml', // 固定值,必须
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 提交一个视频目标检测任务
@@ -546,22 +585,25 @@ export const postVideoTargetRec = {
},
});
- cos.request({
- Method: 'POST', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Body: body, // 请求体参数,必须
- ContentType: 'application/xml', // 固定值,必须
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ cos.request(
+ {
+ Method: 'POST', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Body: body, // 请求体参数,必须
+ ContentType: 'application/xml', // 固定值,必须
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 提交词性分析任务
@@ -612,134 +654,149 @@ export const postWordsGeneralize = {
},
});
- cos.request({
- Method: 'POST', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Body: body, // 请求体参数,必须
- ContentType: 'application/xml', // 固定值,必须
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ cos.request(
+ {
+ Method: 'POST', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Body: body, // 请求体参数,必须
+ ContentType: 'application/xml', // 固定值,必须
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 活体人脸核身
export const LivenessRecognition = {
name: '活体人脸核身',
fn: function LivenessRecognition() {
- cos.request({
- Bucket: config.Bucket,
- Region: config.Region,
- Method: 'GET', // 固定值,必须
- Key: 'ci/tf.mp4', // 必须
- Query: {
- // 数据万象处理能力,人脸核身固定为 LivenessRecognition;是否必传:是
- 'ci-process': 'LivenessRecognition',
- // 身份证号;是否必传:是
- IdCard: '610321199411040019',
- // 姓名。中文请使用 UTF-8编码;是否必传:是
- Name: '田丰',
- // 活体检测类型,取值:LIP/ACTION/SILENTLIP 为数字模式,ACTION 为动作模式,SILENT 为静默模式,三种模式选择一种传入;是否必传:是
- LivenessType: 'SILENT',
- // 数字模式传参:数字验证码(1234),需先调用接口获取数字验证码动作模式传参:传动作顺序(2,1 or 1,2),需先调用接口获取动作顺序静默模式传参:空;是否必传:否
- ValidateData: '',
- // 需要返回多张最佳截图,取值范围1 - 10,不设置默认返回一张最佳截图;是否必传:否
- BestFrameNum: 1,
+ cos.request(
+ {
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET', // 固定值,必须
+ Key: 'ci/tf.mp4', // 必须
+ Query: {
+ // 数据万象处理能力,人脸核身固定为 LivenessRecognition;是否必传:是
+ 'ci-process': 'LivenessRecognition',
+ // 身份证号;是否必传:是
+ IdCard: '610321199411040019',
+ // 姓名。中文请使用 UTF-8编码;是否必传:是
+ Name: '田丰',
+ // 活体检测类型,取值:LIP/ACTION/SILENTLIP 为数字模式,ACTION 为动作模式,SILENT 为静默模式,三种模式选择一种传入;是否必传:是
+ LivenessType: 'SILENT',
+ // 数字模式传参:数字验证码(1234),需先调用接口获取数字验证码动作模式传参:传动作顺序(2,1 or 1,2),需先调用接口获取动作顺序静默模式传参:空;是否必传:否
+ ValidateData: '',
+ // 需要返回多张最佳截图,取值范围1 - 10,不设置默认返回一张最佳截图;是否必传:否
+ BestFrameNum: 1,
+ },
},
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 获取动作顺序
export const GetActionSequence = {
name: '获取动作顺序',
fn: function GetActionSequence() {
- cos.request({
- Bucket: config.Bucket,
- Region: config.Region,
- Method: 'GET', // 固定值,必须
- Query: {
- // 数据万象处理能力,获取动作顺序固定为 GetActionSequence;是否必传:是
- 'ci-process': 'GetActionSequence',
+ cos.request(
+ {
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET', // 固定值,必须
+ Query: {
+ // 数据万象处理能力,获取动作顺序固定为 GetActionSequence;是否必传:是
+ 'ci-process': 'GetActionSequence',
+ },
},
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 获取数字验证码
export const GetLiveCode = {
name: '获取数字验证码',
fn: function GetLiveCode() {
- cos.request({
- Bucket: config.Bucket,
- Region: config.Region,
- Method: 'GET', // 固定值,必须
- Query: {
- // 数据万象处理能力,获取数字验证码固定为 GetLiveCode;是否必传:是
- 'ci-process': 'GetLiveCode',
+ cos.request(
+ {
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET', // 固定值,必须
+ Query: {
+ // 数据万象处理能力,获取数字验证码固定为 GetLiveCode;是否必传:是
+ 'ci-process': 'GetLiveCode',
+ },
},
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 卡证识别
export const aILicenseRec = {
name: '卡证识别',
fn: function aILicenseRec() {
- cos.request({
- Bucket: config.Bucket,
- Region: config.Region,
- Method: 'GET', // 固定值,必须
- Key: 'ci/card.jpeg', // 与detect-url二选一传递
- Query: {
- // 数据万象处理能力,卡证识别固定为AILicenseRec;是否必传:是
- 'ci-process': 'AILicenseRec',
- // 您可以通过填写 detect-url 处理任意公网可访问的图片链接。不填写 detect-url 时,后台会默认处理 ObjectKey ,填写了 detect-url 时,后台会处理 detect-url 链接,无需再填写 ObjectKey detect-url 示例:http://www.example.com/abc.jpg ,需要进行 UrlEncode,处理后为http%25253A%25252F%25252Fwww.example.com%25252Fabc.jpg;是否必传:否
- 'detect-url': '',
- // 卡证识别类型,有效值为IDCard,DriverLicense。
IDCard表示身份证;DriverLicense表示驾驶证,默认:DriverLicense;是否必传:是
- CardType: 'IDCard',
+ cos.request(
+ {
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET', // 固定值,必须
+ Key: 'ci/card.jpeg', // 与detect-url二选一传递
+ Query: {
+ // 数据万象处理能力,卡证识别固定为AILicenseRec;是否必传:是
+ 'ci-process': 'AILicenseRec',
+ // 您可以通过填写 detect-url 处理任意公网可访问的图片链接。不填写 detect-url 时,后台会默认处理 ObjectKey ,填写了 detect-url 时,后台会处理 detect-url 链接,无需再填写 ObjectKey detect-url 示例:http://www.example.com/abc.jpg ,需要进行 UrlEncode,处理后为http%25253A%25252F%25252Fwww.example.com%25252Fabc.jpg;是否必传:否
+ 'detect-url': '',
+ // 卡证识别类型,有效值为IDCard,DriverLicense。
IDCard表示身份证;DriverLicense表示驾驶证,默认:DriverLicense;是否必传:是
+ CardType: 'IDCard',
+ },
},
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 开通以图搜图
@@ -758,51 +815,57 @@ export const CreateImageSearchBucket = {
},
});
- cos.request({
- Method: 'POST', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Body: body, // 请求体参数,必须
- ContentType: 'application/xml', // 固定值,必须
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ cos.request(
+ {
+ Method: 'POST', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Body: body, // 请求体参数,必须
+ ContentType: 'application/xml', // 固定值,必须
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 商品抠图
export const goodsMatting = {
name: '商品抠图',
fn: function goodsMatting() {
- cos.request({
- Bucket: config.Bucket,
- Region: config.Region,
- Method: 'GET', // 固定值,必须
- Key: 'ci/goods.jpeg', // 与detect-url二选一传递
- Query: {
- // ;是否必传:是
- 'ci-process': 'GoodsMatting',
- // ;是否必传:否
- // 'detect-url': '',
+ cos.request(
+ {
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET', // 固定值,必须
+ Key: 'ci/goods.jpeg', // 与detect-url二选一传递
+ Query: {
+ // ;是否必传:是
+ 'ci-process': 'GoodsMatting',
+ // ;是否必传:否
+ // 'detect-url': '',
+ },
+ RawBody: true,
+ DataType: 'blob',
},
- RawBody: true,
- DataType: 'blob',
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
// 添加图库图片
@@ -820,29 +883,32 @@ export const AddImage = {
},
});
- cos.request({
- Bucket: config.Bucket,
- Region: config.Region,
- Method: 'POST', // 固定值,必须
- Key: 'ci/goods.jpeg', // 必须
- Query: {
- // 固定值:ImageSearch;是否必传:是
- 'ci-process': 'ImageSearch',
- // 固定值:AddImage;是否必传:是
- action: 'AddImage',
+ cos.request(
+ {
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'POST', // 固定值,必须
+ Key: 'ci/goods.jpeg', // 必须
+ Query: {
+ // 固定值:ImageSearch;是否必传:是
+ 'ci-process': 'ImageSearch',
+ // 固定值:AddImage;是否必传:是
+ action: 'AddImage',
+ },
+ Body: body, // 请求体参数,必须
+ ContentType: 'application/xml', // 固定值,必须
},
- Body: body, // 请求体参数,必须
- ContentType: 'application/xml', // 固定值,必须
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
// 删除图库图片
@@ -856,56 +922,62 @@ export const DeleteImage = {
},
});
- cos.request({
- Bucket: config.Bucket,
- Region: config.Region,
- Method: 'POST', // 固定值,必须
- Key: key, // 必须
- Body: body, // 请求体参数,必须
- ContentType: 'application/xml', // 固定值,必须
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ cos.request(
+ {
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'POST', // 固定值,必须
+ Key: key, // 必须
+ Body: body, // 请求体参数,必须
+ ContentType: 'application/xml', // 固定值,必须
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 检索图片
export const SearchImage = {
name: '检索图片',
fn: function SearchImage() {
- cos.request({
- Bucket: config.Bucket,
- Region: config.Region,
- Method: 'GET', // 固定值,必须
- Key: 'ci/goods.jpeg', // 必须
- Query: {
- 'ci-process': 'ImageSearch',
- action: 'SearchImage',
- // 出参 Score 中,只有超过 MatchThreshold 值的结果才会返回。默认为0;是否必传:否
- MatchThreshold: 0,
- // 起始序号,默认值为0;是否必传:否
- Offset: 0,
- // 返回数量,默认值为10,最大值为100;是否必传:否
- Limit: 0,
- // 针对入库时提交的 Tags 信息进行条件过滤。支持>、>=、<、<=、=、!=,多个条件之间支持 AND 和 OR 进行连接;是否必传:否
- Filter: '',
+ cos.request(
+ {
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET', // 固定值,必须
+ Key: 'ci/goods.jpeg', // 必须
+ Query: {
+ 'ci-process': 'ImageSearch',
+ action: 'SearchImage',
+ // 出参 Score 中,只有超过 MatchThreshold 值的结果才会返回。默认为0;是否必传:否
+ MatchThreshold: 0,
+ // 起始序号,默认值为0;是否必传:否
+ Offset: 0,
+ // 返回数量,默认值为10,最大值为100;是否必传:否
+ Limit: 0,
+ // 针对入库时提交的 Tags 信息进行条件过滤。支持>、>=、<、<=、=、!=,多个条件之间支持 AND 和 OR 进行连接;是否必传:否
+ Filter: '',
+ },
},
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
// 提交内容翻译任务
@@ -973,267 +1045,294 @@ export const postTranslation = {
},
});
- cos.request({
- Method: 'POST', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Body: body, // 请求体参数,必须
- ContentType: 'application/xml', // 固定值,必须
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ cos.request(
+ {
+ Method: 'POST', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Body: body, // 请求体参数,必须
+ ContentType: 'application/xml', // 固定值,必须
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 人脸检测
export const aIDetectFace = {
name: '人脸检测',
fn: function aIDetectFace() {
- cos.request({
- Bucket: config.Bucket,
- Region: config.Region,
- Method: 'GET', // 固定值,必须
- Key: 'ci/1.jpg', // 必须
- Query: {
- // 数据万象处理能力,人脸特效固定为 DetectFace。;是否必传:是
- 'ci-process': 'DetectFace',
- // 最多处理的人脸数目。默认值为1(仅检测图片中面积最大的那张人脸),最大���为120。此参数用于控制处理待检测图片中的人脸个数,值越小,处理速度越快。;是否必传:否
- 'max-face-num': 1,
+ cos.request(
+ {
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET', // 固定值,必须
+ Key: 'ci/1.jpg', // 必须
+ Query: {
+ // 数据万象处理能力,人脸特效固定为 DetectFace。;是否必传:是
+ 'ci-process': 'DetectFace',
+ // 最多处理的人脸数目。默认值为1(仅检测图片中面积最大的那张人脸),最大���为120。此参数用于控制处理待检测图片中的人脸个数,值越小,处理速度越快。;是否必传:否
+ 'max-face-num': 1,
+ },
},
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 人脸美颜
export const FaceBeautify = {
name: '人脸美颜',
fn: function aIFaceEffect() {
- cos.request({
- Bucket: config.Bucket,
- Region: config.Region,
- Method: 'GET', // 固定值,必须
- Key: 'ci/tom.jpeg', // 对象文件名,例如:folder/document.jpg,与detect-url二选一传递
- Query: {
- // 万象处理能力,人脸特效固定为face-effect;是否必传:是
- 'ci-process': 'face-effect',
- // 您可以通过填写 detect-url 处理任意公网可访问的图片链接。不填写 detect-url 时,后台会默认处理 ObjectKey ,填写了 detect-url 时,后台会处理 detect-url 链接,无需再填写 ObjectKey detect-url 示例:http://www.example.com/abc.jpg ,需要进行 UrlEncode,处理后为http%25253A%25252F%25252Fwww.example.com%25252Fabc.jpg。;是否必传:否
- // 'detect-url': '',
- // 人脸特效类型,人脸美颜:face-beautify;人脸性别转换:face-gender-transformation;人脸年龄变化:face-age-transformation;人像分割:face-segmentation;是否必传:是
- type: 'face-beautify',
- // type为face-beautify时生效,美白程度,取值范围[0,100]。0不美白,100代表最高程度。默认值30;是否必传:否
- whitening: 50,
- // type为face-beautify时生效,磨皮程度,取值范围[0,100]。0不磨皮,100代表最高程度。默认值10;是否必传:否
- smoothing: 50,
- // type为face-beautify时生效,瘦脸程度,取值范围[0,100]。0不瘦脸,100代表最高程度。默认值70;是否必传:否
- faceLifting: 50,
- // type为face-beautify时生效,大眼程度,取值范围[0,100]。0不大眼,100代表最高程度。默认值70;是否必传:否
- eyeEnlarging: 50,
+ cos.request(
+ {
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET', // 固定值,必须
+ Key: 'ci/tom.jpeg', // 对象文件名,例如:folder/document.jpg,与detect-url二选一传递
+ Query: {
+ // 万象处理能力,人脸特效固定为face-effect;是否必传:是
+ 'ci-process': 'face-effect',
+ // 您可以通过填写 detect-url 处理任意公网可访问的图片链接。不填写 detect-url 时,后台会默认处理 ObjectKey ,填写了 detect-url 时,后台会处理 detect-url 链接,无需再填写 ObjectKey detect-url 示例:http://www.example.com/abc.jpg ,需要进行 UrlEncode,处理后为http%25253A%25252F%25252Fwww.example.com%25252Fabc.jpg。;是否必传:否
+ // 'detect-url': '',
+ // 人脸特效类型,人脸美颜:face-beautify;人脸性别转换:face-gender-transformation;人脸年龄变化:face-age-transformation;人像分割:face-segmentation;是否必传:是
+ type: 'face-beautify',
+ // type为face-beautify时生效,美白程度,取值范围[0,100]。0不美白,100代表最高程度。默认值30;是否必传:否
+ whitening: 50,
+ // type为face-beautify时生效,磨皮程度,取值范围[0,100]。0不磨皮,100代表最高程度。默认值10;是否必传:否
+ smoothing: 50,
+ // type为face-beautify时生效,瘦脸程度,取值范围[0,100]。0不瘦脸,100代表最高程度。默认值70;是否必传:否
+ faceLifting: 50,
+ // type为face-beautify时生效,大眼程度,取值范围[0,100]。0不大眼,100代表最高程度。默认值70;是否必传:否
+ eyeEnlarging: 50,
+ },
},
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 人脸性别转换
export const FaceGenderTransformation = {
name: '人脸性别转换',
fn: function FaceGenderTransformation() {
- cos.request({
- Bucket: config.Bucket,
- Region: config.Region,
- Method: 'GET', // 固定值,必须
- Key: 'ci/tom.jpeg', // 对象文件名,例如:folder/document.jpg,与detect-url二选一传递
- Query: {
- // 万象处理能力,人脸特效固定为face-effect;是否必传:是
- 'ci-process': 'face-effect',
- // 您可以通过填写 detect-url 处理任意公网可访问的图片链接。不填写 detect-url 时,后台会默认处理 ObjectKey ,填写了 detect-url 时,后台会处理 detect-url 链接,无需再填写 ObjectKey detect-url 示例:http://www.example.com/abc.jpg ,需要进行 UrlEncode,处理后为http%25253A%25252F%25252Fwww.example.com%25252Fabc.jpg。;是否必传:否
- // 'detect-url': '',
- // 人脸特效类型,人脸美颜:face-beautify;人脸性别转换:face-gender-transformation;人脸年龄变化:face-age-transformation;人像分割:face-segmentation;是否必传:是
- type: 'face-gender-transformation',
- // type为face-gender-transformation时生效,选择转换方向,0:男变女,1:女变男。无默认值,为必选项。限制:仅对图片中面积最大的人脸进行转换。;是否必传:否
- gender: 0,
+ cos.request(
+ {
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET', // 固定值,必须
+ Key: 'ci/tom.jpeg', // 对象文件名,例如:folder/document.jpg,与detect-url二选一传递
+ Query: {
+ // 万象处理能力,人脸特效固定为face-effect;是否必传:是
+ 'ci-process': 'face-effect',
+ // 您可以通过填写 detect-url 处理任意公网可访问的图片链接。不填写 detect-url 时,后台会默认处理 ObjectKey ,填写了 detect-url 时,后台会处理 detect-url 链接,无需再填写 ObjectKey detect-url 示例:http://www.example.com/abc.jpg ,需要进行 UrlEncode,处理后为http%25253A%25252F%25252Fwww.example.com%25252Fabc.jpg。;是否必传:否
+ // 'detect-url': '',
+ // 人脸特效类型,人脸美颜:face-beautify;人脸性别转换:face-gender-transformation;人脸年龄变化:face-age-transformation;人像分割:face-segmentation;是否必传:是
+ type: 'face-gender-transformation',
+ // type为face-gender-transformation时生效,选择转换方向,0:男变女,1:女变男。无默认值,为必选项。限制:仅对图片中面积最大的人脸进行转换。;是否必传:否
+ gender: 0,
+ },
},
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 人脸年龄变化
export const FaceAgeTransformation = {
name: '人脸年龄变化',
fn: function FaceAgeTransformation() {
- cos.request({
- Bucket: config.Bucket,
- Region: config.Region,
- Method: 'GET', // 固定值,必须
- Key: 'ci/tom.jpeg', // 对象文件名,例如:folder/document.jpg,与detect-url二选一传递
- Query: {
- // 万象处理能力,人脸特效固定为face-effect;是否必传:是
- 'ci-process': 'face-effect',
- // 您可以通过填写 detect-url 处理任意公网可访问的图片链接。不填写 detect-url 时,后台会默认处理 ObjectKey ,填写了 detect-url 时,后台会处理 detect-url 链接,无需再填写 ObjectKey detect-url 示例:http://www.example.com/abc.jpg ,需要进行 UrlEncode,处理后为http%25253A%25252F%25252Fwww.example.com%25252Fabc.jpg。;是否必传:否
- // 'detect-url': '',
- // 人脸特效类型,人脸美颜:face-beautify;人脸性别转换:face-gender-transformation;人脸年龄变化:face-age-transformation;人像分割:face-segmentation;是否必传:是
- type: 'face-age-transformation',
- // type 为 face-age-transformation 时生效,变化到的人脸年龄,范围为[10,80],无默认值。注意:仅对图片中面积最大的人脸进行转换
- age: 40,
+ cos.request(
+ {
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET', // 固定值,必须
+ Key: 'ci/tom.jpeg', // 对象文件名,例如:folder/document.jpg,与detect-url二选一传递
+ Query: {
+ // 万象处理能力,人脸特效固定为face-effect;是否必传:是
+ 'ci-process': 'face-effect',
+ // 您可以通过填写 detect-url 处理任意公网可访问的图片链接。不填写 detect-url 时,后台会默认处理 ObjectKey ,填写了 detect-url 时,后台会处理 detect-url 链接,无需再填写 ObjectKey detect-url 示例:http://www.example.com/abc.jpg ,需要进行 UrlEncode,处理后为http%25253A%25252F%25252Fwww.example.com%25252Fabc.jpg。;是否必传:否
+ // 'detect-url': '',
+ // 人脸特效类型,人脸美颜:face-beautify;人脸性别转换:face-gender-transformation;人脸年龄变化:face-age-transformation;人像分割:face-segmentation;是否必传:是
+ type: 'face-age-transformation',
+ // type 为 face-age-transformation 时生效,变化到的人脸年龄,范围为[10,80],无默认值。注意:仅对图片中面积最大的人脸进行转换
+ age: 40,
+ },
},
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 人像分割
export const FaceSegmentation = {
name: '人像分割',
fn: function FaceSegmentation() {
- cos.request({
- Bucket: config.Bucket,
- Region: config.Region,
- Method: 'GET', // 固定值,必须
- Key: 'ci/tom.jpeg', // 对象文件名,例如:folder/document.jpg,与detect-url二选一传递
- Query: {
- // 万象处理能力,人脸特效固定为face-effect;是否必传:是
- 'ci-process': 'face-effect',
- // 您可以通过填写 detect-url 处理任意公网可访问的图片链接。不填写 detect-url 时,后台会默认处理 ObjectKey ,填写了 detect-url 时,后台会处理 detect-url 链接,无需再填写 ObjectKey detect-url 示例:http://www.example.com/abc.jpg ,需要进行 UrlEncode,处理后为http%25253A%25252F%25252Fwww.example.com%25252Fabc.jpg。;是否必传:否
- // 'detect-url': '',
- // 人脸特效类型,人脸美颜:face-beautify;人脸性别转换:face-gender-transformation;人脸年龄变化:face-age-transformation;人像分割:face-segmentation;是否必传:是
- type: 'face-segmentation',
+ cos.request(
+ {
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET', // 固定值,必须
+ Key: 'ci/tom.jpeg', // 对象文件名,例如:folder/document.jpg,与detect-url二选一传递
+ Query: {
+ // 万象处理能力,人脸特效固定为face-effect;是否必传:是
+ 'ci-process': 'face-effect',
+ // 您可以通过填写 detect-url 处理任意公网可访问的图片链接。不填写 detect-url 时,后台会默认处理 ObjectKey ,填写了 detect-url 时,后台会处理 detect-url 链接,无需再填写 ObjectKey detect-url 示例:http://www.example.com/abc.jpg ,需要进行 UrlEncode,处理后为http%25253A%25252F%25252Fwww.example.com%25252Fabc.jpg。;是否必传:否
+ // 'detect-url': '',
+ // 人脸特效类型,人脸美颜:face-beautify;人脸性别转换:face-gender-transformation;人脸年龄变化:face-age-transformation;人像分割:face-segmentation;是否必传:是
+ type: 'face-segmentation',
+ },
},
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 人体识别
export const aIBodyRecognition = {
name: '人体识别',
fn: function aIBodyRecognition() {
- cos.request({
- Bucket: config.Bucket,
- Region: config.Region,
- Method: 'GET', // 固定值,必须
- Key: 'ci/dog.jpeg', // 与detect-url二选一传递
- Query: {
- // 数据万象处理能力,人体识别固定为AIBodyRecognition;是否必传:是
- 'ci-process': 'AIBodyRecognition',
- // 您可以通过填写 detect-url 处理任意公网可访问的图片链接。不填写 detect-url 时,后台会默认处理 ObjectKey ,填写了 detect-url 时,后台会处理 detect-url 链接,无需再填写 ObjectKey detect-url 示例:http://www.example.com/abc.jpg ,需要进行 UrlEncode,处理后为http%25253A%25252F%25252Fwww.example.com%25252Fabc.jpg;是否必传:否
- // 'detect-url': '',
+ cos.request(
+ {
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET', // 固定值,必须
+ Key: 'ci/dog.jpeg', // 与detect-url二选一传递
+ Query: {
+ // 数据万象处理能力,人体识别固定为AIBodyRecognition;是否必传:是
+ 'ci-process': 'AIBodyRecognition',
+ // 您可以通过填写 detect-url 处理任意公网可访问的图片链接。不填写 detect-url 时,后台会默认处理 ObjectKey ,填写了 detect-url 时,后台会处理 detect-url 链接,无需再填写 ObjectKey detect-url 示例:http://www.example.com/abc.jpg ,需要进行 UrlEncode,处理后为http%25253A%25252F%25252Fwww.example.com%25252Fabc.jpg;是否必传:否
+ // 'detect-url': '',
+ },
},
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
// 身份证识别
export const IDCardOCR = {
name: '身份证识别',
fn: function IDCardOCR() {
- cos.request({
- Bucket: config.Bucket,
- Region: config.Region,
- Method: 'GET', // 固定值,必须
- Key: 'ci/card.jpeg', // 必须
- Query: {
- // 数据万象处理能力,身份证识别固定为 IDCardOCR;是否必传:是
- 'ci-process': 'IDCardOCR',
- // FRONT:身份证有照片的一面(人像面)BACK:身份证有国徽的一面(国徽面)该参数如果不填,将为您自动判断身份证正反面;是否必传:否
- CardSide: 'FRONT',
- // 以下可选字段均为 bool 类型,默认 false:CropIdCard,身份证照片裁剪(去掉证件外多余的边缘、自动矫正拍摄角度)CropPortrait,人像照片裁剪(自动抠取身份证头像区域)CopyWarn,复印件告警BorderCheckWarn,边框和框内遮挡告警ReshootWarn,翻拍告警DetectPsWarn,PS 检测告警TempIdWarn,临时身份证告警InvalidDateWarn,身份证有效日期不合法告警Quality,图片质量分数(评价图片的模糊程度)MultiCardDetect,是否开启多卡证检测参数设置方式参考:Config = {"CropIdCard":true,"CropPortrait":true};是否必传:否
- // Config: {},
+ cos.request(
+ {
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET', // 固定值,必须
+ Key: 'ci/card.jpeg', // 必须
+ Query: {
+ // 数据万象处理能力,身份证识别固定为 IDCardOCR;是否必传:是
+ 'ci-process': 'IDCardOCR',
+ // FRONT:身份证有照片的一面(人像面)BACK:身份证有国徽的一面(国徽面)该参数如果不填,将为您自动判断身份证正反面;是否必传:否
+ CardSide: 'FRONT',
+ // 以下可选字段均为 bool 类型,默认 false:CropIdCard,身份证照片裁剪(去掉证件外多余的边缘、自动矫正拍摄角度)CropPortrait,人像照片裁剪(自动抠取身份证头像区域)CopyWarn,复印件告警BorderCheckWarn,边框和框内遮挡告警ReshootWarn,翻拍告警DetectPsWarn,PS 检测告警TempIdWarn,临时身份证告警InvalidDateWarn,身份证有效日期不合法告警Quality,图片质量分数(评价图片的模糊程度)MultiCardDetect,是否开启多卡证检测参数设置方式参考:Config = {"CropIdCard":true,"CropPortrait":true};是否必传:否
+ // Config: {},
+ },
},
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 实时文字翻译
export const autoTranslationBlock = {
name: '实时文字翻译',
fn: function autoTranslationBlock() {
- cos.request({
- Bucket: config.Bucket,
- Region: config.Region,
- Method: 'GET', // 固定值,必须
- Query: {
- // 数据万象处理能力,文本块翻译固定为 AutoTranslationBlock。;是否必传:是
- 'ci-process': 'AutoTranslationBlock',
- // 待翻译的文本;是否必传:是
- InputText: '我是张三',
- // 输入语言,如 "zh";是否必传:是
- SourceLang: 'zh',
- // 输出语言,如 "en";是否必传:是
- TargetLang: 'en',
- // 文本所属业务领域,如: "ecommerce", //缺省值为 general;是否必传:否
- // TextDomain: '',
- // 文本类型,如: "title", //缺省值为 sentence;是否必传:否
- // TextStyle: '',
+ cos.request(
+ {
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET', // 固定值,必须
+ Query: {
+ // 数据万象处理能力,文本块翻译固定为 AutoTranslationBlock。;是否必传:是
+ 'ci-process': 'AutoTranslationBlock',
+ // 待翻译的文本;是否必传:是
+ InputText: '我是张三',
+ // 输入语言,如 "zh";是否必传:是
+ SourceLang: 'zh',
+ // 输出语言,如 "en";是否必传:是
+ TargetLang: 'en',
+ // 文本所属业务领域,如: "ecommerce", //缺省值为 general;是否必传:否
+ // TextDomain: '',
+ // 文本类型,如: "title", //缺省值为 sentence;是否必传:否
+ // TextStyle: '',
+ },
},
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
// 提交一个视频人像抠图任务
@@ -1309,259 +1408,286 @@ export const postSegmentVideoBody = {
},
});
- cos.request({
- Method: 'POST', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Body: body, // 请求体参数,必须
- ContentType: 'application/xml', // 固定值,必须
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ cos.request(
+ {
+ Method: 'POST', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Body: body, // 请求体参数,必须
+ ContentType: 'application/xml', // 固定值,必须
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 图片上色
export const aIImageColoring = {
name: '图片上色',
fn: function aIImageColoring() {
- cos.request({
- Bucket: config.Bucket,
- Region: config.Region,
- Method: 'GET', // 固定值,必须
- Key: 'ci/1.jpg', // 与detect-url二选一传递
- Query: {
- // 数据万象处理能力,图片上色参固定为AIImageColoring。;是否必传:是
- 'ci-process': 'AIImageColoring',
- // 待上色图片url,需要进行urlencode,与ObjectKey二选其一,如果同时存在,则默认以ObjectKey为准;是否必传:否
- // 'detect-url': '',
+ cos.request(
+ {
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET', // 固定值,必须
+ Key: 'ci/1.jpg', // 与detect-url二选一传递
+ Query: {
+ // 数据万象处理能力,图片上色参固定为AIImageColoring。;是否必传:是
+ 'ci-process': 'AIImageColoring',
+ // 待上色图片url,需要进行urlencode,与ObjectKey二选其一,如果同时存在,则默认以ObjectKey为准;是否必传:否
+ // 'detect-url': '',
+ },
+ RawBody: true,
+ DataType: 'blob',
},
- RawBody: true,
- DataType: 'blob',
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
// 图片质量评分
export const assessQuality = {
name: '图片质量评分',
fn: function assessQuality() {
- cos.request({
- Bucket: config.Bucket,
- Region: config.Region,
- Method: 'GET', // 固定值,必须
- Key: 'ci/dog.jpeg', // 必须
- Query: {
- // 数据万象处理能力,图像质量检测固定为 AssessQuality。;是否必传:是
- 'ci-process': 'AssessQuality',
+ cos.request(
+ {
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET', // 固定值,必须
+ Key: 'ci/dog.jpeg', // 必须
+ Query: {
+ // 数据万象处理能力,图像质量检测固定为 AssessQuality。;是否必传:是
+ 'ci-process': 'AssessQuality',
+ },
},
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 图像超分
export const aISuperResolution = {
name: '图像超分',
fn: function aISuperResolution() {
- cos.request({
- Bucket: config.Bucket,
- Region: config.Region,
- Method: 'GET', // 固定值,必须
- Key: 'ci/test.jpeg', // 与detect-url二选一传递
- Query: {
- // 数据万象处理能力,只能裁剪参固定为AISuperResolution。;是否必传:否
- 'ci-process': 'AISuperResolution',
- // 您可以通过填写 detect-url 处理任意公网可访问的图片链接。不填写 detect-url 时,后台会默认处理 ObjectKey ,填写了 detect-url 时,后台会处理 detect-url 链接,无需再填写 ObjectKey,detect-url 示例:http://www.example.com/abc.jpg ,需要进行 UrlEncode,处理后为http%25253A%25252F%25252Fwww.example.com%25252Fabc.jpg。;是否必传:否
- // 'detect-url': '',
+ cos.request(
+ {
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET', // 固定值,必须
+ Key: 'ci/test.jpeg', // 与detect-url二选一传递
+ Query: {
+ // 数据万象处理能力,只能裁剪参固定为AISuperResolution。;是否必传:否
+ 'ci-process': 'AISuperResolution',
+ // 您可以通过填写 detect-url 处理任意公网可访问的图片链接。不填写 detect-url 时,后台会默认处理 ObjectKey ,填写了 detect-url 时,后台会处理 detect-url 链接,无需再填写 ObjectKey,detect-url 示例:http://www.example.com/abc.jpg ,需要进行 UrlEncode,处理后为http%25253A%25252F%25252Fwww.example.com%25252Fabc.jpg。;是否必传:否
+ // 'detect-url': '',
+ },
+ RawBody: true,
+ DataType: 'blob',
},
- RawBody: true,
- DataType: 'blob'
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
// 图像修复
export const imageRepair = {
name: '图像修复',
fn: function imageRepair() {
- cos.request({
- Bucket: config.Bucket,
- Region: config.Region,
- Method: 'GET', // 固定值,必须
- Key: 'ci/card.jpeg', // 必须
- Query: {
- // 固定值:ImageRepair;是否必传:是
- 'ci-process': 'ImageRepair',
- // 遮罩(白色区域为需要去除的水印位置)图片地址,私有图片需携带签名,需要经过 URL 安全的 Base64 编码
- // 比如图片url为 http://test.com/test.jpg
- MaskPic: COS.util.encodeBase64('http://test.com/test.jpg', true),
+ cos.request(
+ {
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET', // 固定值,必须
+ Key: 'ci/card.jpeg', // 必须
+ Query: {
+ // 固定值:ImageRepair;是否必传:是
+ 'ci-process': 'ImageRepair',
+ // 遮罩(白色区域为需要去除的水印位置)图片地址,私有图片需携带签名,需要经过 URL 安全的 Base64 编码
+ // 比如图片url为 http://test.com/test.jpg
+ MaskPic: COS.util.encodeBase64('http://test.com/test.jpg', true),
+ },
+ RawBody: true,
+ DataType: 'blob',
},
- RawBody: true,
- DataType: 'blob',
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
// 图像增强
export const aIEnhanceImage = {
name: '图像增强',
fn: function aIEnhanceImage() {
- cos.request({
- Bucket: config.Bucket,
- Region: config.Region,
- Method: 'GET', // 固定值,必须
- Key: 'ci/1.jpg', // 与detect-url二选一传递
- Query: {
- // 数据万象处理能力,只能裁剪参固定为 AIEnhanceImage。;是否必传:是
- 'ci-process': 'AIEnhanceImage',
- // 去噪强度值,取值范围为 0 - 5 之间的整数,值为 0 时不进行去噪操作,默认值为3。;是否必传:否
- denoise: 0,
- // 锐化强度值,取值范围为 0 - 5 之间的整数,值为 0 时不进行锐化操作,默认值为3。;是否必传:否
- sharpen: 0,
- // 您可以通过填写 detect-url 处理任意公网可访问的图片链接。不填写 detect-url 时,后台会默认处理 ObjectKey ,填写了detect-url 时,后台会处理 detect-url链接,无需再填写 ObjectKey ,detect-url 示例:http://www.example.com/abc.jpg ,需要进行 UrlEncode,处理后为 http%25253A%25252F%25252Fwww.example.com%25252Fabc.jpg;是否必传:否
- // 'detect-url': '',
- // ;是否必传:否
- 'ignore-error': 0,
+ cos.request(
+ {
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET', // 固定值,必须
+ Key: 'ci/1.jpg', // 与detect-url二选一传递
+ Query: {
+ // 数据万象处理能力,只能裁剪参固定为 AIEnhanceImage。;是否必传:是
+ 'ci-process': 'AIEnhanceImage',
+ // 去噪强度值,取值范围为 0 - 5 之间的整数,值为 0 时不进行去噪操作,默认值为3。;是否必传:否
+ denoise: 0,
+ // 锐化强度值,取值范围为 0 - 5 之间的整数,值为 0 时不进行锐化操作,默认值为3。;是否必传:否
+ sharpen: 0,
+ // 您可以通过填写 detect-url 处理任意公网可访问的图片链接。不填写 detect-url 时,后台会默认处理 ObjectKey ,填写了detect-url 时,后台会处理 detect-url链接,无需再填写 ObjectKey ,detect-url 示例:http://www.example.com/abc.jpg ,需要进行 UrlEncode,处理后为 http%25253A%25252F%25252Fwww.example.com%25252Fabc.jpg;是否必传:否
+ // 'detect-url': '',
+ // ;是否必传:否
+ 'ignore-error': 0,
+ },
+ RawBody: true,
+ DataType: 'blob',
},
- RawBody: true,
- DataType: 'blob',
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
// 图像智能裁剪
export const aIImageCrop = {
name: '图像智能裁剪',
fn: function aIImageCrop() {
- cos.request({
- Bucket: config.Bucket,
- Region: config.Region,
- Method: 'GET', // 固定值,必须
- Key: 'ci/dog.jpeg', // 与detect-url二选一传递
- Query: {
- // 数据万象处理能力,智能裁剪固定为AIImageCrop;是否必传:是
- 'ci-process': 'AIImageCrop',
- // 您可以通过填写 detect-url 处理任意公网可访问的图片链接。不填写 detect-url 时,后台会默认处理 ObjectKey ,填写了 detect-url 时,后台会处理 detect-url 链接,无需再填写 ObjectKey detect-url 示例:http://www.example.com/abc.jpg ,需要进行 UrlEncode,处理后为http%25253A%25252F%25252Fwww.example.com%25252Fabc.jpg;是否必传:否
- // 'detect-url': '',
- // 需要裁剪区域的宽度,与height共同组成所需裁剪的图片宽高比例;输入数字请大于0、小于图片宽度的像素值;是否必传:是
- width: 0,
- // 需要裁剪区域的高度,与width共同组成所需裁剪的图片宽高比例;输入数字请大于0、小于图片高度的像素值;width : height建议取值在[1, 2.5]之间,超过这个范围可能会影响效果;是否必传:是
- height: 0,
- // 是否严格按照 width 和 height 的值进行输出。取值为0时,宽高比例(width : height)会简化为最简分数,即如果width输入10、height输入20,会简化为1:2;取值为1时,输出图片的宽度等于width,高度等于height;默认值为0;是否必传:否
- fixed: 0,
- // 当此参数为1时,针对文件过大等导致处理失败的场景,会直接返回原图而不报错;是否必传:否
- 'ignore-error': 0,
+ cos.request(
+ {
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET', // 固定值,必须
+ Key: 'ci/dog.jpeg', // 与detect-url二选一传递
+ Query: {
+ // 数据万象处理能力,智能裁剪固定为AIImageCrop;是否必传:是
+ 'ci-process': 'AIImageCrop',
+ // 您可以通过填写 detect-url 处理任意公网可访问的图片链接。不填写 detect-url 时,后台会默认处理 ObjectKey ,填写了 detect-url 时,后台会处理 detect-url 链接,无需再填写 ObjectKey detect-url 示例:http://www.example.com/abc.jpg ,需要进行 UrlEncode,处理后为http%25253A%25252F%25252Fwww.example.com%25252Fabc.jpg;是否必传:否
+ // 'detect-url': '',
+ // 需要裁剪区域的宽度,与height共同组成所需裁剪的图片宽高比例;输入数字请大于0、小于图片宽度的像素值;是否必传:是
+ width: 0,
+ // 需要裁剪区域的高度,与width共同组成所需裁剪的图片宽高比例;输入数字请大于0、小于图片高度的像素值;width : height建议取值在[1, 2.5]之间,超过这个范围可能会影响效果;是否必传:是
+ height: 0,
+ // 是否严格按照 width 和 height 的值进行输出。取值为0时,宽高比例(width : height)会简化为最简分数,即如果width输入10、height输入20,会简化为1:2;取值为1时,输出图片的宽度等于width,高度等于height;默认值为0;是否必传:否
+ fixed: 0,
+ // 当此参数为1时,针对文件过大等导致处理失败的场景,会直接返回原图而不报错;是否必传:否
+ 'ignore-error': 0,
+ },
+ RawBody: true,
+ DataType: 'blob',
},
- RawBody: true,
- DataType: 'blob',
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
// 游戏场景识别
export const aIGameRec = {
name: '游戏场景识别',
fn: function aIGameRec() {
- cos.request({
- Bucket: config.Bucket,
- Region: config.Region,
- Method: 'GET', // 固定值,必须
- Key: 'ci/game.jpeg', // 与detect-url二选一传递
- Query: {
- // 数据万象处理能力,游戏场景识别固定为 AIGameRec;是否必传:是
- 'ci-process': 'AIGameRec',
- // 您可以通过填写 detect-url 对任意公网可访问的图片进行游戏场景识别。不填写 detect-url 时,后台会默认处理 objectkey ;填写了 detect-url 时,后台会处理 detect-url 链接,无需再填写 objectkey , detect-url 示例:http://www.example.com/abc.jpg。;是否必传:是
- // 'detect-url': '',
+ cos.request(
+ {
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET', // 固定值,必须
+ Key: 'ci/game.jpeg', // 与detect-url二选一传递
+ Query: {
+ // 数据万象处理能力,游戏场景识别固定为 AIGameRec;是否必传:是
+ 'ci-process': 'AIGameRec',
+ // 您可以通过填写 detect-url 对任意公网可访问的图片进行游戏场景识别。不填写 detect-url 时,后台会默认处理 objectkey ;填写了 detect-url 时,后台会处理 detect-url 链接,无需再填写 objectkey , detect-url 示例:http://www.example.com/abc.jpg。;是否必传:是
+ // 'detect-url': '',
+ },
},
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
// Logo 识别
export const recognizeLogo = {
name: 'Logo 识别',
fn: function recognizeLogo() {
- cos.request({
- Bucket: config.Bucket,
- Region: config.Region,
- Method: 'GET', // 固定值,必须
- Key: 'ci/logo.png', // 与detect-url二选一传递
- Query: {
- // 数据万象处理能力,Logo识别固定为RecognizeLogo;是否必传:是
- 'ci-process': 'RecognizeLogo',
- // 待检查图片url,需要进行urlencode;是否必传:是
- // 'detect-url': '',
+ cos.request(
+ {
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET', // 固定值,必须
+ Key: 'ci/logo.png', // 与detect-url二选一传递
+ Query: {
+ // 数据万象处理能力,Logo识别固定为RecognizeLogo;是否必传:是
+ 'ci-process': 'RecognizeLogo',
+ // 待检查图片url,需要进行urlencode;是否必传:是
+ // 'detect-url': '',
+ },
},
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
-};
\ No newline at end of file
+ );
+ },
+};
diff --git a/demo/CIDemos/asr.js b/demo/CIDemos/asr.js
index d8e9627..b479f6c 100644
--- a/demo/CIDemos/asr.js
+++ b/demo/CIDemos/asr.js
@@ -1,6 +1,6 @@
/**
* 智能语音demo集合
-*/
+ */
// 查询语音识别开通状态
export const getAsrBucket = {
@@ -10,33 +10,35 @@ export const getAsrBucket = {
const host = `ci.${config.Region}.myqcloud.com`;
const url = `https://${host}/${key}`;
- cos.request({
- Method: 'GET', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Query: {
- // 地域信息,例如 ap-shanghai、ap-beijing,若查询多个地域以“,”分隔字符串,详情请参见 地域与域名;是否必传:是
- // regions: "",
- // 存储桶名称,以“,”分隔,支持多个存储桶,精确搜索;是否必传:是
- // bucketNames: "",
- // 存储桶名称前缀,前缀搜索;是否必传:是
- // bucketName: "",
- // 第几页;是否必传:是
- // pageNumber: 1,
- // 每页个数,大于0且小于等于100的整数;是否必传:是
- // pageSize: 10,
- },
-
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ cos.request(
+ {
+ Method: 'GET', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Query: {
+ // 地域信息,例如 ap-shanghai、ap-beijing,若查询多个地域以“,”分隔字符串,详情请参见 地域与域名;是否必传:是
+ // regions: "",
+ // 存储桶名称,以“,”分隔,支持多个存储桶,精确搜索;是否必传:是
+ // bucketNames: "",
+ // 存储桶名称前缀,前缀搜索;是否必传:是
+ // bucketName: "",
+ // 第几页;是否必传:是
+ // pageNumber: 1,
+ // 每页个数,大于0且小于等于100的整数;是否必传:是
+ // pageSize: 10,
+ },
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 开通智能语音
@@ -47,20 +49,23 @@ export const CreateAsrBucket = {
const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
const url = `https://${host}/${key}`;
- cos.request({
- Method: 'POST', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ cos.request(
+ {
+ Method: 'POST', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 关闭智能语音
@@ -70,20 +75,23 @@ export const DeleteAsrBucket = {
const key = 'asrbucket'; // 固定值
const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
const url = `https://${host}/${key}`;
- cos.request({
- Method: 'DELETE', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ cos.request(
+ {
+ Method: 'DELETE', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 查询语音识别队列
@@ -94,31 +102,33 @@ export const getAsrQueue = {
const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
const url = `https://${host}/${key}`;
- cos.request({
- Method: 'GET', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Query: {
- // 队列 ID,以“,”符号分割字符串;是否必传:否
- // queueIds: '',
- // Active 表示队列内的作业会被调度执行Paused 表示队列暂停,作业不再会被调度执行,队列内的所有作业状态维持在暂停状态,已经执行中的任务不受影响;是否必传:否
- // state: '',
- // 第几页,默认值1;是否必传:否
- // pageNumber: '',
- // 每页个数,默认值10;是否必传:否
- // pageSize: '',
- },
-
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ cos.request(
+ {
+ Method: 'GET', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Query: {
+ // 队列 ID,以“,”符号分割字符串;是否必传:否
+ // queueIds: '',
+ // Active 表示队列内的作业会被调度执行Paused 表示队列暂停,作业不再会被调度执行,队列内的所有作业状态维持在暂停状态,已经执行中的任务不受影响;是否必传:否
+ // state: '',
+ // 第几页,默认值1;是否必传:否
+ // pageNumber: '',
+ // 每页个数,默认值10;是否必传:否
+ // pageSize: '',
+ },
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 更新语音识别队列
@@ -142,22 +152,25 @@ export const updateAsrQueue = {
},
},
});
- cos.request({
- Method: 'PUT',
- Key: 'asrqueue/' + queueId,
- Url: url,
- Body: body,
- ContentType: 'application/xml',
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ cos.request(
+ {
+ Method: 'PUT',
+ Key: 'asrqueue/' + queueId,
+ Url: url,
+ Body: body,
+ ContentType: 'application/xml',
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 提交音频降噪任务
@@ -187,22 +200,25 @@ export const postNoiseReduction = {
// CallBackMqConfig: '', // 任务回调 TDMQ 配置,当 CallBackType 为 TDMQ 时必填,非必须
},
});
- cos.request({
- Method: 'POST',
- Key: 'jobs',
- Url: url,
- Body: body,
- ContentType: 'application/xml',
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ cos.request(
+ {
+ Method: 'POST',
+ Key: 'jobs',
+ Url: url,
+ Body: body,
+ ContentType: 'application/xml',
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 提交人声分离任务
@@ -236,22 +252,25 @@ export const postVoiceSeparate = {
// CallBackMqConfig: '', // 任务回调 TDMQ 配置,当 CallBackType 为 TDMQ 时必填,非必须
},
});
- cos.request({
- Method: 'POST',
- Key: 'jobs',
- Url: url,
- Body: body,
- ContentType: 'application/xml',
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ cos.request(
+ {
+ Method: 'POST',
+ Key: 'jobs',
+ Url: url,
+ Body: body,
+ ContentType: 'application/xml',
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 创建人声分离模板
@@ -280,26 +299,28 @@ export const postVoiceSeparateTemplete = {
// 声道数当 Codec 设置为 aac/flac,支持1、2、4、5、6、8当 Codec 设置为 mp3,支持1、2 当 Codec 设置为 amr,只支持1当 Request.AudioMode 为 MusicMode 时,该参数无效;是否必传:否
// Channels: '',
},
- }
+ },
});
- cos.request({
- Method: 'POST', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Body: body, // 请求体参数,必须
- ContentType: 'application/xml', // 固定值,必须
-
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ cos.request(
+ {
+ Method: 'POST', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Body: body, // 请求体参数,必须
+ ContentType: 'application/xml', // 固定值,必须
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 更新人声分离模板
@@ -329,26 +350,28 @@ export const updateVoiceSeparateTemplete = {
// 声道数当 Codec 设置为 aac/flac,支持1、2、4、5、6、8当 Codec 设置为 mp3,支持1、2 当 Codec 设置为 amr,只支持1当 Request.AudioMode 为 MusicMode 时,该参数无效;是否必传:否
// Channels: '',
},
- }
+ },
});
- cos.request({
- Method: 'PUT', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Body: body, // 请求体参数,必须
- ContentType: 'application/xml', // 固定值,必须
-
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ cos.request(
+ {
+ Method: 'PUT', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Body: body, // 请求体参数,必须
+ ContentType: 'application/xml', // 固定值,必须
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 提交一个语音合成任务
@@ -420,22 +443,25 @@ export const postVoiceSynthesis = {
},
});
- cos.request({
- Method: 'POST', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Body: body, // 请求体参数,必须
- ContentType: 'application/xml', // 固定值,必须
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ cos.request(
+ {
+ Method: 'POST', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Body: body, // 请求体参数,必须
+ ContentType: 'application/xml', // 固定值,必须
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 创建语音合成模板
@@ -466,22 +492,25 @@ export const postVoiceSynthesisTemplete = {
},
});
- cos.request({
- Method: 'POST', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Body: body, // 请求体参数,必须
- ContentType: 'application/xml', // 固定值,必须
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ cos.request(
+ {
+ Method: 'POST', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Body: body, // 请求体参数,必须
+ ContentType: 'application/xml', // 固定值,必须
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 更新语音合成模板
@@ -513,22 +542,25 @@ export const updateVoiceSynthesisTemplete = {
},
});
- cos.request({
- Method: 'PUT', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Body: body, // 请求体参数,必须
- ContentType: 'application/xml', // 固定值,必须
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ cos.request(
+ {
+ Method: 'PUT', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Body: body, // 请求体参数,必须
+ ContentType: 'application/xml', // 固定值,必须
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 提交语音识别任务
@@ -567,22 +599,25 @@ export const postSpeechRecognition = {
// CallBackMqConfig: '', // 任务回调 TDMQ 配置,当 CallBackType 为 TDMQ 时必填,非必须
},
});
- cos.request({
- Method: 'POST',
- Key: key,
- Url: url,
- Body: body,
- ContentType: 'application/xml',
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ cos.request(
+ {
+ Method: 'POST',
+ Key: key,
+ Url: url,
+ Body: body,
+ ContentType: 'application/xml',
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 创建语音识别模板
@@ -634,22 +669,25 @@ export const postSpeechRecognitionTemplete = {
},
});
- cos.request({
- Method: 'POST', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Body: body, // 请求体参数,必须
- ContentType: 'application/xml', // 固定值,必须
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ cos.request(
+ {
+ Method: 'POST', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Body: body, // 请求体参数,必须
+ ContentType: 'application/xml', // 固定值,必须
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 更新语音识别模板
@@ -702,22 +740,25 @@ export const updateSpeechRecognitionTemplete = {
},
});
- cos.request({
- Method: 'PUT', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Body: body, // 请求体参数,必须
- ContentType: 'application/xml', // 固定值,必须
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ cos.request(
+ {
+ Method: 'PUT', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Body: body, // 请求体参数,必须
+ ContentType: 'application/xml', // 固定值,必须
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 创建音频降噪模版
@@ -743,22 +784,25 @@ export const postNoiseReductionTemplete = {
},
});
- cos.request({
- Method: 'POST', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Body: body, // 请求体参数,必须
- ContentType: 'application/xml', // 固定值,必须
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ cos.request(
+ {
+ Method: 'POST', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Body: body, // 请求体参数,必须
+ ContentType: 'application/xml', // 固定值,必须
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 更新音频降噪模板
@@ -785,22 +829,25 @@ export const updateNoiseReductionTemplete = {
},
});
- cos.request({
- Method: 'PUT', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Body: body, // 请求体参数,必须
- ContentType: 'application/xml', // 固定值,必须
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ cos.request(
+ {
+ Method: 'PUT', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Body: body, // 请求体参数,必须
+ ContentType: 'application/xml', // 固定值,必须
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 提交听歌识曲任务
@@ -844,22 +891,25 @@ export const postSoundHound = {
},
});
- cos.request({
- Method: 'POST', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Body: body, // 请求体参数,必须
- ContentType: 'application/xml', // 固定值,必须
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ cos.request(
+ {
+ Method: 'POST', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Body: body, // 请求体参数,必须
+ ContentType: 'application/xml', // 固定值,必须
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 音乐评分
@@ -908,20 +958,23 @@ export const vocalScore = {
},
});
- cos.request({
- Method: 'POST', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Body: body, // 请求体参数,必须
- ContentType: 'application/xml', // 固定值,必须
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ cos.request(
+ {
+ Method: 'POST', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Body: body, // 请求体参数,必须
+ ContentType: 'application/xml', // 固定值,必须
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
-};
\ No newline at end of file
+ );
+ },
+};
diff --git a/demo/CIDemos/audit.js b/demo/CIDemos/audit.js
index 04d816a..b15a6a1 100644
--- a/demo/CIDemos/audit.js
+++ b/demo/CIDemos/audit.js
@@ -1,34 +1,37 @@
/**
* 内容审核demo集合
-*/
+ */
// 图片同步审核
export const getImageAuditing = {
name: '图片同步审核',
fn: function getImageAuditing() {
- cos.request({
- Bucket: config.Bucket,
- Region: config.Region,
- Method: 'GET',
- Key: '1.png', // 与detect-url二选一传递
- Query: {
- 'ci-process': 'sensitive-content-recognition', // 固定值,必须
- 'biz-type': '', // 审核类型,非必须
- 'detect-url': '', // 审核任意公网可访问的图片链接,非必须
- interval: 5, // 审核 GIF 动图时,每隔interval帧截取一帧,非必须
- 'max-frames': 5, // 审核 GIF 动图时,最大截帧数,非必须
- 'large-image-detect': '0', // 是否需要压缩图片后再审核,非必须
+ cos.request(
+ {
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET',
+ Key: '1.png', // 与detect-url二选一传递
+ Query: {
+ 'ci-process': 'sensitive-content-recognition', // 固定值,必须
+ 'biz-type': '', // 审核类型,非必须
+ 'detect-url': '', // 审核任意公网可访问的图片链接,非必须
+ interval: 5, // 审核 GIF 动图时,每隔interval帧截取一帧,非必须
+ 'max-frames': 5, // 审核 GIF 动图时,最大截帧数,非必须
+ 'large-image-detect': '0', // 是否需要压缩图片后再审核,非必须
+ },
},
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
// 图片批量审核
@@ -52,24 +55,27 @@ export const postImagesAuditing = {
},
},
});
- cos.request({
- Bucket: config.Bucket,
- Region: config.Region,
- Method: 'POST',
- Url: url,
- Key: 'image/auditing',
- ContentType: 'application/xml',
- Body: body,
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ cos.request(
+ {
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'POST',
+ Url: url,
+ Key: 'image/auditing',
+ ContentType: 'application/xml',
+ Body: body,
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
// 查询图片审核任务结果
@@ -79,22 +85,25 @@ export const getImageAuditingResult = {
const jobId = 'si8263213daf3711eca0d1525400d88xxx'; // jobId可以通过图片批量审核返回
const host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
const url = 'https://' + host + '/image/auditing/' + jobId;
- cos.request({
- Bucket: config.Bucket,
- Region: config.Region,
- Method: 'GET',
- Key: '/image/auditing/' + jobId,
- Url: url,
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ cos.request(
+ {
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET',
+ Key: '/image/auditing/' + jobId,
+ Url: url,
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
// 反馈处理结果
@@ -114,24 +123,27 @@ export const reportBadCase = {
// ModerationTime: '',
},
});
- cos.request({
- Bucket: config.Bucket,
- Region: config.Region,
- Method: 'POST',
- Url: url,
- Key: key,
- ContentType: 'application/xml',
- Body: body,
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ cos.request(
+ {
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'POST',
+ Url: url,
+ Key: key,
+ ContentType: 'application/xml',
+ Body: body,
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
// 提交视频审核任务
@@ -154,24 +166,27 @@ export const postVideoAuditing = {
},
},
});
- cos.request({
- Bucket: config.Bucket,
- Region: config.Region,
- Method: 'POST',
- Url: url,
- Key: '/video/auditing',
- ContentType: 'application/xml',
- Body: body,
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ cos.request(
+ {
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'POST',
+ Url: url,
+ Key: '/video/auditing',
+ ContentType: 'application/xml',
+ Body: body,
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
// 查询视频审核任务结果
@@ -181,22 +196,25 @@ export const getVideoAuditingResult = {
const jobId = 'av14d9ca15af3a11eca0d6525400d88xxx'; // jobId可以通过提交视频审核任务返回
const host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
const url = 'https://' + host + '/video/auditing/' + jobId;
- cos.request({
- Bucket: config.Bucket,
- Region: config.Region,
- Method: 'GET',
- Key: '/video/auditing/' + jobId,
- Url: url,
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ cos.request(
+ {
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET',
+ Key: '/video/auditing/' + jobId,
+ Url: url,
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
// 提交音频审核任务
@@ -215,24 +233,27 @@ export const postAudioAuditing = {
},
},
});
- cos.request({
- Bucket: config.Bucket,
- Region: config.Region,
- Method: 'POST',
- Url: url,
- Key: '/audio/auditing',
- ContentType: 'application/xml',
- Body: body,
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ cos.request(
+ {
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'POST',
+ Url: url,
+ Key: '/audio/auditing',
+ ContentType: 'application/xml',
+ Body: body,
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
// 查询音频审核任务结果
@@ -242,22 +263,25 @@ export const getAudioAuditingResult = {
const jobId = 'sa0c28d41daff411ecb23352540078cxxx'; // jobId可以通过提交音频审核任务返回
const host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
const url = 'https://' + host + '/audio/auditing/' + jobId;
- cos.request({
- Bucket: config.Bucket,
- Region: config.Region,
- Method: 'GET',
- Key: '/audio/auditing/' + jobId,
- Url: url,
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ cos.request(
+ {
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET',
+ Key: '/audio/auditing/' + jobId,
+ Url: url,
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
// 提交文本审核任务
@@ -277,24 +301,27 @@ export const postTextAuditing = {
},
},
});
- cos.request({
- Bucket: config.Bucket,
- Region: config.Region,
- Method: 'POST',
- Url: url,
- Key: '/text/auditing',
- ContentType: 'application/xml',
- Body: body,
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ cos.request(
+ {
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'POST',
+ Url: url,
+ Key: '/text/auditing',
+ ContentType: 'application/xml',
+ Body: body,
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
// 查询文本审核任务结果
@@ -304,22 +331,25 @@ export const getTextAuditingResult = {
const jobId = 'st8d88c664aff511ecb23352540078cxxx'; // jobId可以通过提交文本审核任务返回(Input传入Object)
const host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
const url = 'https://' + host + '/text/auditing/' + jobId;
- cos.request({
- Bucket: config.Bucket,
- Region: config.Region,
- Method: 'GET',
- Key: '/text/auditing/' + jobId,
- Url: url,
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ cos.request(
+ {
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET',
+ Key: '/text/auditing/' + jobId,
+ Url: url,
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
// 提交文档审核任务
@@ -338,24 +368,27 @@ export const postDocumentAuditing = {
},
},
});
- cos.request({
- Bucket: config.Bucket,
- Region: config.Region,
- Method: 'POST',
- Url: url,
- Key: '/document/auditing',
- ContentType: 'application/xml',
- Body: body,
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ cos.request(
+ {
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'POST',
+ Url: url,
+ Key: '/document/auditing',
+ ContentType: 'application/xml',
+ Body: body,
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
// 查询文档审核任务结果
@@ -365,22 +398,25 @@ export const getDocumentAuditingResult = {
const jobId = 'sd7815c21caff611eca12f525400d88xxx'; // jobId可以通过提交文档审核任务返回
const host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
const url = 'https://' + host + '/document/auditing/' + jobId;
- cos.request({
- Bucket: config.Bucket,
- Region: config.Region,
- Method: 'GET',
- Key: '/document/auditing/' + jobId,
- Url: url,
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ cos.request(
+ {
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET',
+ Key: '/document/auditing/' + jobId,
+ Url: url,
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
// 提交网页审核任务
@@ -399,24 +435,27 @@ export const postWebpageAuditing = {
},
},
});
- cos.request({
- Bucket: config.Bucket,
- Region: config.Region,
- Method: 'POST',
- Url: url,
- Key: '/webpage/auditing',
- ContentType: 'application/xml',
- Body: body,
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ cos.request(
+ {
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'POST',
+ Url: url,
+ Key: '/webpage/auditing',
+ ContentType: 'application/xml',
+ Body: body,
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
// 查询网页审核任务结果
@@ -426,22 +465,25 @@ export const getWebpageAuditingResult = {
const jobId = 'shce868019aff611ecb1155254009a4xxx'; // jobId可以通过提交网页审核任务返回
const host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
const url = 'https://' + host + '/webpage/auditing/' + jobId;
- cos.request({
- Bucket: config.Bucket,
- Region: config.Region,
- Method: 'GET',
- Key: '/webpage/auditing/' + jobId,
- Url: url,
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ cos.request(
+ {
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET',
+ Key: '/webpage/auditing/' + jobId,
+ Url: url,
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
// 提交直播审核任务
@@ -465,24 +507,27 @@ export const postLiveAuditing = {
},
},
});
- cos.request({
- Bucket: config.Bucket,
- Region: config.Region,
- Method: 'POST',
- Url: url,
- Key: '/video/auditing',
- ContentType: 'application/xml',
- Body: body,
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ cos.request(
+ {
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'POST',
+ Url: url,
+ Key: '/video/auditing',
+ ContentType: 'application/xml',
+ Body: body,
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
// 查询直播审核任务结果
@@ -492,22 +537,25 @@ export const getLiveAuditingResult = {
const jobId = 'av0ca69557bd6111ed904c5254009411xx'; // jobId可以通过提交直播审核任务返回
const host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
const url = 'https://' + host + '/video/auditing/' + jobId;
- cos.request({
- Bucket: config.Bucket,
- Region: config.Region,
- Method: 'GET',
- Key: '/video/auditing/' + jobId,
- Url: url,
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ cos.request(
+ {
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET',
+ Key: '/video/auditing/' + jobId,
+ Url: url,
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
// 取消直播审核
@@ -518,20 +566,23 @@ export const cancelLiveAuditing = {
const jobId = 'av8088af71359c11eeb17c525400941xxx';
const key = `video/cancel_auditing/${jobId}`;
const url = `https://${host}/${key}`;
- cos.request({
- Bucket: config.Bucket,
- Region: config.Region,
- Method: 'POST',
- Url: url,
- Key: key,
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ cos.request(
+ {
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'POST',
+ Url: url,
+ Key: key,
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
-};
\ No newline at end of file
+ );
+ },
+};
diff --git a/demo/CIDemos/common.js b/demo/CIDemos/common.js
index 0bc2c7e..af8c96a 100644
--- a/demo/CIDemos/common.js
+++ b/demo/CIDemos/common.js
@@ -1,6 +1,6 @@
/**
* 其他demo集合
-*/
+ */
// 开通数据万象
export const createCIBucket = {
@@ -8,42 +8,47 @@ export const createCIBucket = {
fn: function createCIBucket() {
const host = `${config.Bucket}.pic.${config.Region}.myqcloud.com`;
const url = `https://${host}`;
- cos.request({
- Method: 'PUT', // 固定值,必须
- Url: url, // 请求的url,必须
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ cos.request(
+ {
+ Method: 'PUT', // 固定值,必须
+ Url: url, // 请求的url,必须
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
-
// 关闭数据万象
export const deleteCIBucket = {
name: '关闭数据万象',
fn: function deleteCIBucket() {
const host = `${config.Bucket}.pic.${config.Region}.myqcloud.com`;
const url = `https://${host}`;
- cos.request({
- Method: 'PUT', // 固定值,必须
- Url: url, // 请求的url,必须
- Action: 'unbind'// 固定值
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ cos.request(
+ {
+ Method: 'PUT', // 固定值,必须
+ Url: url, // 请求的url,必须
+ Action: 'unbind', // 固定值
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 查询查询数据处理服务
@@ -52,19 +57,22 @@ export const queryCIBucket = {
fn: function queryCIBucket() {
const host = `${config.Bucket}.pic.${config.Region}.myqcloud.com`;
const url = `https://${host}`;
- cos.request({
- Method: 'GET', // 固定值,必须
- Url: url, // 请求的url,必须
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ cos.request(
+ {
+ Method: 'GET', // 固定值,必须
+ Url: url, // 请求的url,必须
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
// 提交病毒检测任务
@@ -85,22 +93,25 @@ export const postVirusDetect = {
},
},
});
- cos.request({
- Method: 'POST',
- Key: 'virus/detect',
- Url: url,
- Body: body,
- ContentType: 'application/xml',
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ cos.request(
+ {
+ Method: 'POST',
+ Key: 'virus/detect',
+ Url: url,
+ Body: body,
+ ContentType: 'application/xml',
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
// 查询病毒检测任务结果
@@ -110,20 +121,23 @@ export const getVirusDetectResult = {
const jobId = 'ssdb2dab23bcdb11ed9efb5254009411xx'; // 提交病毒检测任务后会返回当前任务的jobId
const host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/virus/detect/' + jobId;
const url = 'https://' + host;
- cos.request({
- Method: 'GET',
- Key: 'virus/detect/' + jobId,
- Url: url,
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ cos.request(
+ {
+ Method: 'GET',
+ Key: 'virus/detect/' + jobId,
+ Url: url,
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
// 查询防盗链
@@ -132,19 +146,22 @@ export const describeRefer = {
fn: function describeRefer() {
const host = config.Bucket + '.pic.' + config.Region + '.myqcloud.com/?hotlink';
const url = 'https://' + host;
- cos.request({
- Method: 'GET',
- Url: url,
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ cos.request(
+ {
+ Method: 'GET',
+ Url: url,
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
// 设置防盗链
@@ -159,19 +176,22 @@ export const setRefer = {
Type: 'white', // 必须,防盗链类型,white 为白名单,black 为黑名单,off 为关闭。
},
});
- cos.request({
- Method: 'PUT',
- Url: url,
- Body: body,
- ContentType: 'application/xml',
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ cos.request(
+ {
+ Method: 'PUT',
+ Url: url,
+ Body: body,
+ ContentType: 'application/xml',
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
-};
\ No newline at end of file
+ );
+ },
+};
diff --git a/demo/CIDemos/docPreview.js b/demo/CIDemos/docPreview.js
index 54c016a..aa99fcf 100644
--- a/demo/CIDemos/docPreview.js
+++ b/demo/CIDemos/docPreview.js
@@ -1,6 +1,6 @@
/**
* 文档预览demo集合
-*/
+ */
// 查询已经开通文档预览的存储桶
export const describeDocProcessBuckets = {
@@ -8,59 +8,65 @@ export const describeDocProcessBuckets = {
fn: function describeDocProcessBuckets() {
const host = 'ci.' + config.Region + '.myqcloud.com/docbucket';
const url = 'https://' + host;
- cos.request({
- Method: 'GET',
- Key: 'docbucket',
- Url: url,
- Query: {
- // regions: '', // 非必须,地域信息,以“,”分隔字符串,支持 All、ap-shanghai、ap-beijing
- // bucketNames: '', // 非必须,存储桶名称,以“,”分隔,支持多个存储桶,精确搜索
- // bucketName: '', // 非必须,存储桶名称前缀,前缀搜索
- // pageNumber: 1, // 非必须,第几页
- // pageSize: 10, // 非必须,每页个数
+ cos.request(
+ {
+ Method: 'GET',
+ Key: 'docbucket',
+ Url: url,
+ Query: {
+ // regions: '', // 非必须,地域信息,以“,”分隔字符串,支持 All、ap-shanghai、ap-beijing
+ // bucketNames: '', // 非必须,存储桶名称,以“,”分隔,支持多个存储桶,精确搜索
+ // bucketName: '', // 非必须,存储桶名称前缀,前缀搜索
+ // pageNumber: 1, // 非必须,第几页
+ // pageSize: 10, // 非必须,每页个数
+ },
},
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
// 文档转码同步请求
export const getDocPreview = {
name: '文档转码同步请求',
fn: function getDocPreview() {
- cos.getObjectUrl({
- Bucket: config.Bucket, // Bucket 格式:test-1250000000
- Region: config.Region,
- Key: '1/文档.docx',
- Query: {
- 'ci-process': 'doc-preview', // 必须,数据万象处理能力,文档预览固定为 doc-preview
- srcType: 'docx', // 非必须,源数据的后缀类型,当前文档转换根据 COS 对象的后缀名来确定源数据类型。当 COS 对象没有后缀名时,可以设置该值
- // page: '', // 非必须,需转换的文档页码,默认从1开始计数;表格文件中 page 表示转换的第 X 个 sheet 的第 X 张图
- // dstType: '', // 非必须,转换输出目标文件类型
+ cos.getObjectUrl(
+ {
+ Bucket: config.Bucket, // Bucket 格式:test-1250000000
+ Region: config.Region,
+ Key: '1/文档.docx',
+ Query: {
+ 'ci-process': 'doc-preview', // 必须,数据万象处理能力,文档预览固定为 doc-preview
+ srcType: 'docx', // 非必须,源数据的后缀类型,当前文档转换根据 COS 对象的后缀名来确定源数据类型。当 COS 对象没有后缀名时,可以设置该值
+ // page: '', // 非必须,需转换的文档页码,默认从1开始计数;表格文件中 page 表示转换的第 X 个 sheet 的第 X 张图
+ // dstType: '', // 非必须,转换输出目标文件类型
+ },
+ DataType: 'blob',
},
- DataType: 'blob',
- }, function (err, data) {
- if (err) {
- console.log(err);
- } else {
- // Body为转码后的内容 可展示在img里 比如
- const body = data.Body;
- // const url = URL.createObjectURL(body);
- // const img = document.getElementById('image');
- // img.src = url;
- // 获取总页数(需要在跨域配置的Expose-Headers配置需要暴露出的头部 比如下方的X-Total-Page)
- // 跨域配置可参考文档 https://cloud.tencent.com/document/product/436/13318
- const totalPage = data.headers['X-Total-Page'];
+ function (err, data) {
+ if (err) {
+ console.log(err);
+ } else {
+ // Body为转码后的内容 可展示在img里 比如
+ const body = data.Body;
+ // const url = URL.createObjectURL(body);
+ // const img = document.getElementById('image');
+ // img.src = url;
+ // 获取总页数(需要在跨域配置的Expose-Headers配置需要暴露出的头部 比如下方的X-Total-Page)
+ // 跨域配置可参考文档 https://cloud.tencent.com/document/product/436/13318
+ const totalPage = data.headers['X-Total-Page'];
+ }
}
- });
- }
+ );
+ },
};
// 查询文档转码队列
@@ -69,26 +75,29 @@ export const describeDocProcessQueues = {
fn: function describeDocProcessQueues() {
const host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/docqueue';
const url = 'https://' + host;
- cos.request({
- Method: 'GET',
- Key: 'docqueue',
- Url: url,
- Query: {
- // queueIds: '', // 非必须,队列 ID,以“,”符号分割字符串
- // state: '', // 非必须,1=Active,2=Paused
- // pageNumber: 1, // 非必须,第几页
- // pageSize: 2, // 非必须,每页个数
+ cos.request(
+ {
+ Method: 'GET',
+ Key: 'docqueue',
+ Url: url,
+ Query: {
+ // queueIds: '', // 非必须,队列 ID,以“,”符号分割字符串
+ // state: '', // 非必须,1=Active,2=Paused
+ // pageNumber: 1, // 非必须,第几页
+ // pageSize: 2, // 非必须,每页个数
+ },
},
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
// 更新文档预览队列
@@ -109,22 +118,25 @@ export const updateDocProcessQueue = {
},
},
});
- cos.request({
- Method: 'PUT',
- Key: 'docqueue/' + queueId,
- Url: url,
- Body: body,
- ContentType: 'application/xml',
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ cos.request(
+ {
+ Method: 'PUT',
+ Key: 'docqueue/' + queueId,
+ Url: url,
+ Body: body,
+ ContentType: 'application/xml',
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
// 提交文档转码任务
@@ -151,25 +163,27 @@ export const createDocProcessJobs = {
},
},
});
- cos.request({
- Method: 'POST',
- Key: 'doc_jobs',
- Url: url,
- Body: body,
- ContentType: 'application/xml',
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ cos.request(
+ {
+ Method: 'POST',
+ Key: 'doc_jobs',
+ Url: url,
+ Body: body,
+ ContentType: 'application/xml',
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
-
// 查询指定的文档预览任务
export const describeDocProcessJob = {
name: '查询指定的文档预览任务',
@@ -177,20 +191,23 @@ export const describeDocProcessJob = {
const jobId = 'd87fbabd07b8611ed974b3f4b40648xxx'; // 替换成自己的jogId
const host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/doc_jobs/' + jobId;
const url = 'https://' + host;
- cos.request({
- Method: 'GET',
- Key: 'doc_jobs/' + jobId,
- Url: url,
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ cos.request(
+ {
+ Method: 'GET',
+ Key: 'doc_jobs/' + jobId,
+ Url: url,
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
// 拉取符合条件的文档预览任务
@@ -199,49 +216,55 @@ export const describeDocProcessJobs = {
fn: function describeDocProcessJobs() {
const host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/doc_jobs';
const url = 'https://' + host;
- cos.request({
- Method: 'GET',
- Key: 'doc_jobs',
- Url: url,
- Query: {
- tag: 'DocProcess',
+ cos.request(
+ {
+ Method: 'GET',
+ Key: 'doc_jobs',
+ Url: url,
+ Query: {
+ tag: 'DocProcess',
+ },
},
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
// 文档转 HTML
export const getDocHtmlUrl = {
name: '文档转 HTML',
fn: function getDocHtmlUrl() {
- cos.getObjectUrl({
- Bucket: config.Bucket, // Bucket 格式:test-1250000000
- Region: config.Region,
- Key: '1/文档.docx',
- Query: {
- 'ci-process': 'doc-preview', // 必须,数据万象处理能力,文档预览固定为 doc-preview
- // srcType: '', // 非必须,源数据的后缀类型,当前文档转换根据 COS 对象的后缀名来确定源数据类型。当 COS 对象没有后缀名时,可以设置该值
- // page: '', // 非必须,需转换的文档页码,默认从1开始计数;表格文件中 page 表示转换的第 X 个 sheet 的第 X 张图
- dstType: 'html', // 非必须,转换输出目标文件类型
+ cos.getObjectUrl(
+ {
+ Bucket: config.Bucket, // Bucket 格式:test-1250000000
+ Region: config.Region,
+ Key: '1/文档.docx',
+ Query: {
+ 'ci-process': 'doc-preview', // 必须,数据万象处理能力,文档预览固定为 doc-preview
+ // srcType: '', // 非必须,源数据的后缀类型,当前文档转换根据 COS 对象的后缀名来确定源数据类型。当 COS 对象没有后缀名时,可以设置该值
+ // page: '', // 非必须,需转换的文档页码,默认从1开始计数;表格文件中 page 表示转换的第 X 个 sheet 的第 X 张图
+ dstType: 'html', // 非必须,转换输出目标文件类型
+ },
},
- }, function (err, data) {
- if (err) {
- console.log(err);
- } else {
- // 使用浏览器打开url即可预览
- const url = data.Url;
- console.log(url);
+ function (err, data) {
+ if (err) {
+ console.log(err);
+ } else {
+ // 使用浏览器打开url即可预览
+ const url = data.Url;
+ console.log(url);
+ }
}
- });
- }
+ );
+ },
};
// 获取在线文档预览地址
@@ -249,33 +272,36 @@ export const getDocHtmlPreviewUrl = {
name: '获取在线文档预览地址',
fn: function getDocHtmlPreviewUrl() {
const key = 'test.pdf';
- cos.request({
- Bucket: config.Bucket,
- Region: config.Region,
- Method: 'GET',
- Key: key,
- RawBody: true,
- Query: {
- 'ci-process': 'doc-preview', // 必须,预览固定参数,值为 doc-preview
- dstType: 'html', // 必须,预览类型,如需预览生成类型为 html 则填入 html
- weboffice_url: 1, // 非必须,是否获取预览链接。填入值为1会返回预览链接和Token信息;填入值为2只返回Token信息;不传会直接预览
+ cos.request(
+ {
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET',
+ Key: key,
+ RawBody: true,
+ Query: {
+ 'ci-process': 'doc-preview', // 必须,预览固定参数,值为 doc-preview
+ dstType: 'html', // 必须,预览类型,如需预览生成类型为 html 则填入 html
+ weboffice_url: 1, // 非必须,是否获取预览链接。填入值为1会返回预览链接和Token信息;填入值为2只返回Token信息;不传会直接预览
+ },
},
- }, function (err, data) {
- // 从响应数据中解析出在线文档预览地址
- let body = {};
- if (data && data.Body) {
- body = JSON.parse(data.Body) || {};
- }
- if (body && body.PreviewUrl) {
- data.PreviewUrl = body.PreviewUrl;
- }
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ function (err, data) {
+ // 从响应数据中解析出在线文档预览地址
+ let body = {};
+ if (data && data.Body) {
+ body = JSON.parse(data.Body) || {};
+ }
+ if (body && body.PreviewUrl) {
+ data.PreviewUrl = body.PreviewUrl;
+ }
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
-};
\ No newline at end of file
+ );
+ },
+};
diff --git a/demo/CIDemos/fileProcess.js b/demo/CIDemos/fileProcess.js
index c6384b8..9669f64 100644
--- a/demo/CIDemos/fileProcess.js
+++ b/demo/CIDemos/fileProcess.js
@@ -1,6 +1,6 @@
/**
* 文件处理demo集合
-*/
+ */
// 开通文件处理服务
export const createFileProcessBucket = {
@@ -8,20 +8,23 @@ export const createFileProcessBucket = {
fn: function createFileProcessBucket() {
const host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/file_bucket';
const url = 'https://' + host;
- cos.request({
- Method: 'POST',
- Key: 'file_bucket',
- Url: url,
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ cos.request(
+ {
+ Method: 'POST',
+ Key: 'file_bucket',
+ Url: url,
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
// 查询文件处理服务
@@ -31,27 +34,30 @@ export const DescribeFileProcessBuckets = {
const key = 'file_bucket';
const host = 'ci.' + config.Region + '.myqcloud.com/' + key;
const url = 'https://' + host;
- cos.request({
- Method: 'GET',
- Key: key,
- Url: url,
- Query: {
- // regions: '', // 地域信息,例如 ap-shanghai、ap-beijing,若查询多个地域以“,”分隔字符串,详情请参见 地域与域名
- // bucketNames: '', // 存储桶名称,以“,”分隔,支持多个存储桶,精确搜索
- // bucketName: '', // 存储桶名称前缀,前缀搜索
- // pageNumber: '', // 第几页
- // pageSize: '', // 每页个数,大于0且小于等于100的整数
+ cos.request(
+ {
+ Method: 'GET',
+ Key: key,
+ Url: url,
+ Query: {
+ // regions: '', // 地域信息,例如 ap-shanghai、ap-beijing,若查询多个地域以“,”分隔字符串,详情请参见 地域与域名
+ // bucketNames: '', // 存储桶名称,以“,”分隔,支持多个存储桶,精确搜索
+ // bucketName: '', // 存储桶名称前缀,前缀搜索
+ // pageNumber: '', // 第几页
+ // pageSize: '', // 每页个数,大于0且小于等于100的整数
+ },
},
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
// 关闭文件处理服务
@@ -61,20 +67,23 @@ export const DeleteFileProcessBucket = {
const key = 'file_bucket';
const host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/' + key;
const url = 'https://' + host;
- cos.request({
- Method: 'Delete',
- Key: key,
- Url: url,
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ cos.request(
+ {
+ Method: 'Delete',
+ Key: key,
+ Url: url,
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
// 提交文件压缩任务
@@ -108,22 +117,25 @@ export const postFileCompress = {
// CallBackType: 'Url', // 任务回调类型,Url 或 TDMQ,默认 Url
},
});
- cos.request({
- Method: 'POST',
- Key: 'file_jobs',
- Url: url,
- Body: body,
- ContentType: 'application/xml',
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ cos.request(
+ {
+ Method: 'POST',
+ Key: 'file_jobs',
+ Url: url,
+ Body: body,
+ ContentType: 'application/xml',
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
// 查询文件压缩任务结果
@@ -133,20 +145,23 @@ export const getFileCompress = {
const jobId = 'faf1d2774a13911ed88a65b0c303ae7xx'; // 提交文件压缩任务后会返回当前任务的jobId
const host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/file_jobs/' + jobId;
const url = 'https://' + host;
- cos.request({
- Method: 'GET',
- Key: 'file_jobs/' + jobId,
- Url: url,
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ cos.request(
+ {
+ Method: 'GET',
+ Key: 'file_jobs/' + jobId,
+ Url: url,
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
// 提交文件解压任务
@@ -177,22 +192,25 @@ export const postFileUnCompress = {
// CallBackType: 'Url', // 任务回调类型,Url 或 TDMQ,默认 Url
},
});
- cos.request({
- Method: 'POST',
- Key: 'file_jobs',
- Url: url,
- Body: body,
- ContentType: 'application/xml',
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ cos.request(
+ {
+ Method: 'POST',
+ Key: 'file_jobs',
+ Url: url,
+ Body: body,
+ ContentType: 'application/xml',
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
// 查询文件解压任务结果
@@ -202,20 +220,23 @@ export const getFileUnCompress = {
const jobId = 'fe7b0fa34a13911eda186254bb8f3aaxx'; // 提交文件解压任务后会返回当前任务的jobId
const host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/file_jobs/' + jobId;
const url = 'https://' + host;
- cos.request({
- Method: 'GET',
- Key: 'file_jobs/' + jobId,
- Url: url,
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ cos.request(
+ {
+ Method: 'GET',
+ Key: 'file_jobs/' + jobId,
+ Url: url,
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
// 提交哈希值计算任务
@@ -243,22 +264,25 @@ export const postFileHash = {
// CallBackType: 'Url', // 任务回调类型,Url 或 TDMQ,默认 Url
},
});
- cos.request({
- Method: 'POST',
- Key: 'file_jobs',
- Url: url,
- Body: body,
- ContentType: 'application/xml',
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ cos.request(
+ {
+ Method: 'POST',
+ Key: 'file_jobs',
+ Url: url,
+ Body: body,
+ ContentType: 'application/xml',
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
// 查询哈希值计算任务结果
@@ -268,20 +292,23 @@ export const getFileHashResult = {
const jobId = 'f3addcbd0a13811ed9b4ff5338d756fxx'; // 提交文件哈希值计算任务后会返回当前任务的jobId
const host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/file_jobs/' + jobId;
const url = 'https://' + host;
- cos.request({
- Method: 'GET',
- Key: 'file_jobs/' + jobId,
- Url: url,
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ cos.request(
+ {
+ Method: 'GET',
+ Key: 'file_jobs/' + jobId,
+ Url: url,
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
// 查询文件处理队列
@@ -290,26 +317,29 @@ export const describeFileProcessQueues = {
fn: function describeFileProcessQueues() {
const host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/file_queue';
const url = 'https://' + host;
- cos.request({
- Method: 'GET',
- Key: 'file_queue',
- Url: url,
- Query: {
- // queueIds: '', // 非必须,队列 ID,以“,”符号分割字符串
- state: 'Active', // 非必须,Active 表示队列内的作业会被调度执行。Paused 表示队列暂停,作业不再会被调度执行,队列内的所有作业状态维持在暂停状态,已经执行中的任务不受影响
- pageNumber: 1, // 第几页,默认值1
- pageSize: 10, // 非必须,每页个数,默认值10
+ cos.request(
+ {
+ Method: 'GET',
+ Key: 'file_queue',
+ Url: url,
+ Query: {
+ // queueIds: '', // 非必须,队列 ID,以“,”符号分割字符串
+ state: 'Active', // 非必须,Active 表示队列内的作业会被调度执行。Paused 表示队列暂停,作业不再会被调度执行,队列内的所有作业状态维持在暂停状态,已经执行中的任务不受影响
+ pageNumber: 1, // 第几页,默认值1
+ pageSize: 10, // 非必须,每页个数,默认值10
+ },
},
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
// 更新文件处理队列
@@ -337,22 +367,25 @@ export const updateFileProcessQueue = {
},
},
});
- cos.request({
- Method: 'POST',
- Key: 'file_queue/' + queueId,
- Url: url,
- Body: body,
- ContentType: 'application/xml',
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ cos.request(
+ {
+ Method: 'POST',
+ Key: 'file_queue/' + queueId,
+ Url: url,
+ Body: body,
+ ContentType: 'application/xml',
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
// 哈希值计算同步请求
@@ -360,24 +393,27 @@ export const generateFileHash = {
name: '哈希值计算同步请求',
fn: function generateFileHash() {
const key = 'test.pdf';
- cos.request({
- Bucket: config.Bucket,
- Region: config.Region,
- Method: 'GET',
- Key: key,
- Query: {
- 'ci-process': 'filehash', // 必须,操作类型,哈希值计算固定为:filehash
- type: 'md5', // 必须,支持的哈希算法类型,有效值:md5、sha1、sha256
- // 'addtoheader': false, // 非必须,是否将计算得到的哈希值,自动添加至文件的自定义header,格式为:x-cos-meta-md5/sha1/sha256;有效值:true、false,不填则默认为false。
+ cos.request(
+ {
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET',
+ Key: key,
+ Query: {
+ 'ci-process': 'filehash', // 必须,操作类型,哈希值计算固定为:filehash
+ type: 'md5', // 必须,支持的哈希算法类型,有效值:md5、sha1、sha256
+ // 'addtoheader': false, // 非必须,是否将计算得到的哈希值,自动添加至文件的自定义header,格式为:x-cos-meta-md5/sha1/sha256;有效值:true、false,不填则默认为false。
+ },
},
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
-};
\ No newline at end of file
+ );
+ },
+};
diff --git a/demo/CIDemos/index.js b/demo/CIDemos/index.js
index b647b12..f318989 100644
--- a/demo/CIDemos/index.js
+++ b/demo/CIDemos/index.js
@@ -83,7 +83,6 @@ for (let fnName in asr) {
setContent(fnName, asr, 'asr');
}
-
(function () {
const container = document.querySelector('.ci-main');
const html = [];
@@ -93,9 +92,11 @@ for (let fnName in asr) {
const content = `
${module.title}
`;
let a = '';
if (module.functions && module.functions.length > 0) {
- a += module.functions.map(item => {
- return `
${item.fnName}(${item.name})`;
- }).join('');
+ a += module.functions
+ .map((item) => {
+ return `
${item.fnName}(${item.name})`;
+ })
+ .join('');
}
html.push(content, a, '
');
}
diff --git a/demo/CIDemos/mediaProcess.js b/demo/CIDemos/mediaProcess.js
index 678978f..73b4686 100644
--- a/demo/CIDemos/mediaProcess.js
+++ b/demo/CIDemos/mediaProcess.js
@@ -1,6 +1,6 @@
/**
* 媒体处理demo集合
-*/
+ */
// 查询已经开通数据万象功能的存储桶
export const describeMediaBuckets = {
@@ -8,27 +8,30 @@ export const describeMediaBuckets = {
fn: function describeMediaBuckets() {
const host = 'ci.' + config.Region + '.myqcloud.com';
const url = 'https://' + host + '/mediabucket';
- cos.request({
- Method: 'GET',
- Key: 'mediabucket', // 固定值,必须
- Url: url,
- Query: {
- pageNumber: '1', // 第几页,非必须
- pageSize: '10', // 每页个数,非必须
- // regions: 'ap-chengdu', // 地域信息,例如'ap-beijing',支持多个值用逗号分隔如'ap-shanghai,ap-beijing',非必须
- // bucketNames: 'test-1250000000', // 存储桶名称,精确搜索,例如'test-1250000000',支持多个值用逗号分隔如'test1-1250000000,test2-1250000000',非必须
- // bucketName: 'test', //存储桶名称前缀,前缀搜索,例如'test',支持多个值用逗号分隔如'test1,test2',非必须
+ cos.request(
+ {
+ Method: 'GET',
+ Key: 'mediabucket', // 固定值,必须
+ Url: url,
+ Query: {
+ pageNumber: '1', // 第几页,非必须
+ pageSize: '10', // 每页个数,非必须
+ // regions: 'ap-chengdu', // 地域信息,例如'ap-beijing',支持多个值用逗号分隔如'ap-shanghai,ap-beijing',非必须
+ // bucketNames: 'test-1250000000', // 存储桶名称,精确搜索,例如'test-1250000000',支持多个值用逗号分隔如'test1-1250000000,test2-1250000000',非必须
+ // bucketName: 'test', //存储桶名称前缀,前缀搜索,例如'test',支持多个值用逗号分隔如'test1,test2',非必须
+ },
},
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 搜索媒体处理队列
@@ -38,32 +41,35 @@ export const searchMediaQueue = {
const key = `queue`; // 固定值
const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
const url = `https://${host}/${key}`;
- cos.request({
- Method: 'GET', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Query: {
- // 队列 ID,支持搜索多个,以“,”符号分割字符串,最多填10个。;是否必传:否
- queueIds: '',
- // 1. Active 表示队列内的作业会被媒体处理服务调度执行2. Paused 表示队列暂停,作业不再会被媒体处理调度执行,队列内的所有作业状态维持在暂停状态,已经执行中的任务不受影响;是否必传:否
- state: 'Active',
- // 1. CateAll:所有类型2. Transcoding:媒体处理队列3. SpeedTranscoding:媒体处理倍速转码队列4. 默认为 Transcoding;是否必传:否
- category: 'CateAll',
- // 第几页,默认值1;是否必传:否
- pageNumber: '',
- // 每页个数,默认值10;是否必传:否
- pageSize: '',
+ cos.request(
+ {
+ Method: 'GET', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Query: {
+ // 队列 ID,支持搜索多个,以“,”符号分割字符串,最多填10个。;是否必传:否
+ queueIds: '',
+ // 1. Active 表示队列内的作业会被媒体处理服务调度执行2. Paused 表示队列暂停,作业不再会被媒体处理调度执行,队列内的所有作业状态维持在暂停状态,已经执行中的任务不受影响;是否必传:否
+ state: 'Active',
+ // 1. CateAll:所有类型2. Transcoding:媒体处理队列3. SpeedTranscoding:媒体处理倍速转码队列4. 默认为 Transcoding;是否必传:否
+ category: 'CateAll',
+ // 第几页,默认值1;是否必传:否
+ pageNumber: '',
+ // 每页个数,默认值10;是否必传:否
+ pageSize: '',
+ },
},
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 更新媒体处理队列
@@ -101,47 +107,52 @@ export const updateMediaQueue = {
},
},
});
- cos.request({
- Method: 'PUT', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Body: body, // 请求体参数,必须
- ContentType: 'application/xml', // 固定值,必须
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ cos.request(
+ {
+ Method: 'PUT', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Body: body, // 请求体参数,必须
+ ContentType: 'application/xml', // 固定值,必须
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
-
// 获取媒体文件信息同步请求
export const getMediaInfo = {
name: '获取媒体文件信息同步请求',
fn: function getMediaInfo() {
- cos.request({
- Bucket: config.Bucket,
- Region: config.Region,
- Method: 'GET',
- Key: 'test.mp4',
- Query: {
- 'ci-process': 'videoinfo', // 固定值,必须
+ cos.request(
+ {
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET',
+ Key: 'test.mp4',
+ Query: {
+ 'ci-process': 'videoinfo', // 固定值,必须
+ },
},
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 获取媒体信息异步任务
@@ -176,22 +187,25 @@ export const postMediaInfo = {
},
});
- cos.request({
- Method: 'POST', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Body: body, // 请求体参数,必须
- ContentType: 'application/xml', // 固定值,必须
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ cos.request(
+ {
+ Method: 'POST', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Body: body, // 请求体参数,必须
+ ContentType: 'application/xml', // 固定值,必须
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 获取媒体文件某个时间的截图
@@ -201,42 +215,44 @@ export const getSnapshot = {
const key = 'test.mp4'; // ObjectKey: 存在cos的媒体文件路径,比如test.mp4
const host = `${config.Bucket}.cos.${config.Region}.myqcloud.com`;
const url = `https://${host}/${key}`;
- cos.request({
- Method: 'GET', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Query: {
- // 操作类型,固定使用 snapshot;是否必传:是
- 'ci-process': 'snapshot',
- // 截图的时间点,单位为秒;是否必传:是
- time: 1,
- // 截图的宽。默认为0;是否必传:否
- width: 0,
- // 截图的高。默认为0;是否必传:否
- height: 0,
- // 截图的格式,支持 jpg 和 png,默认 jpg;是否必传:否
- format: 'jpg',
- // 图片旋转方式auto:按视频旋转信息进行自动���转off:不旋转默认值为 auto;是否必传:否
- rotate: 'auto',
- // 截帧方式keyframe:截取指定时间点之前的最近的一个关键帧exactframe:截取指定时间点的帧默认值为 exactframe;是否必传:否
- mode: 'exactframe',
+ cos.request(
+ {
+ Method: 'GET', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Query: {
+ // 操作类型,固定使用 snapshot;是否必传:是
+ 'ci-process': 'snapshot',
+ // 截图的时间点,单位为秒;是否必传:是
+ time: 1,
+ // 截图的宽。默认为0;是否必传:否
+ width: 0,
+ // 截图的高。默认为0;是否必传:否
+ height: 0,
+ // 截图的格式,支持 jpg 和 png,默认 jpg;是否必传:否
+ format: 'jpg',
+ // 图片旋转方式auto:按视频旋转信息进行自动���转off:不旋转默认值为 auto;是否必传:否
+ rotate: 'auto',
+ // 截帧方式keyframe:截取指定时间点之前的最近的一个关键帧exactframe:截取指定时间点的帧默认值为 exactframe;是否必传:否
+ mode: 'exactframe',
+ },
+ RawBody: true,
+ // 可选返回文件格式为blob
+ DataType: 'blob',
},
- RawBody: true,
- // 可选返回文件格式为blob
- DataType: 'blob',
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Body);
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Body);
+ }
}
- });
- }
+ );
+ },
};
-
// 提交视频截帧任务
export const postSnapshot = {
name: '提交视频截帧任务',
@@ -282,22 +298,25 @@ export const postSnapshot = {
},
});
- cos.request({
- Method: 'POST', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Body: body, // 请求体参数,必须
- ContentType: 'application/xml', // 固定值,必须
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ cos.request(
+ {
+ Method: 'POST', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Body: body, // 请求体参数,必须
+ ContentType: 'application/xml', // 固定值,必须
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 获取私m3u8
@@ -305,28 +324,31 @@ export const getPrivateM3U8 = {
name: '获取私m3u8',
fn: function getPrivateM3U8() {
const key = '视频/peachtest.mp4.m3u8'; // ObjectKey: 存在cos的媒体文件路径,比如test.mp4
- cos.request({
- Bucket: config.Bucket,
- Region: config.Region,
- Method: 'GET', // 固定值,必须
- Key: key, // 必须
- Query: {
- // 操作类型,固定使用 pm3u8;是否必传:是
- 'ci-process': 'pm3u8',
- // 私有 ts 资源 url 下载凭证的相对有效期,单位为秒,范围为[3600, 43200];是否必传:是
- expires: 3600,
+ cos.request(
+ {
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET', // 固定值,必须
+ Key: key, // 必须
+ Query: {
+ // 操作类型,固定使用 pm3u8;是否必传:是
+ 'ci-process': 'pm3u8',
+ // 私有 ts 资源 url 下载凭证的相对有效期,单位为秒,范围为[3600, 43200];是否必传:是
+ expires: 3600,
+ },
+ RawBody: true, // 固定值,必须
},
- RawBody: true, // 固定值,必须
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Body);
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Body);
+ }
}
- });
- }
+ );
+ },
};
// 音视频转码
@@ -398,22 +420,25 @@ export const postTranscode = {
},
});
- cos.request({
- Method: 'POST', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Body: body, // 请求体参数,必须
- ContentType: 'application/xml', // 固定值,必须
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ cos.request(
+ {
+ Method: 'POST', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Body: body, // 请求体参数,必须
+ ContentType: 'application/xml', // 固定值,必须
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 极速高清
@@ -480,22 +505,25 @@ export const postExtremeHD = {
},
});
- cos.request({
- Method: 'POST', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Body: body, // 请求体参数,必须
- ContentType: 'application/xml', // 固定值,必须
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ cos.request(
+ {
+ Method: 'POST', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Body: body, // 请求体参数,必须
+ ContentType: 'application/xml', // 固定值,必须
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 音视频转封装
@@ -557,25 +585,27 @@ export const postSegment = {
},
});
- cos.request({
- Method: 'POST', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Body: body, // 请求体参数,必须
- ContentType: 'application/xml', // 固定值,必须
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ cos.request(
+ {
+ Method: 'POST', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Body: body, // 请求体参数,必须
+ ContentType: 'application/xml', // 固定值,必须
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
-
// 提交音视频拼接任务
export const postConcat = {
name: '提交音视频拼接任务',
@@ -636,22 +666,25 @@ export const postConcat = {
},
});
- cos.request({
- Method: 'POST', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Body: body, // 请求体参数,必须
- ContentType: 'application/xml', // 固定值,必须
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ cos.request(
+ {
+ Method: 'POST', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Body: body, // 请求体参数,必须
+ ContentType: 'application/xml', // 固定值,必须
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 提交视频转动图
@@ -700,22 +733,25 @@ export const postAnimation = {
},
});
- cos.request({
- Method: 'POST', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Body: body, // 请求体参数,必须
- ContentType: 'application/xml', // 固定值,必须
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ cos.request(
+ {
+ Method: 'POST', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Body: body, // 请求体参数,必须
+ ContentType: 'application/xml', // 固定值,必须
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 提交精彩集锦任务
@@ -764,22 +800,25 @@ export const postVideoMontage = {
},
});
- cos.request({
- Method: 'POST', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Body: body, // 请求体参数,必须
- ContentType: 'application/xml', // 固定值,必须
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ cos.request(
+ {
+ Method: 'POST', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Body: body, // 请求体参数,必须
+ ContentType: 'application/xml', // 固定值,必须
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 提交视频标签任务
@@ -819,22 +858,25 @@ export const postVideoTag = {
},
});
- cos.request({
- Method: 'POST', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Body: body, // 请求体参数,必须
- ContentType: 'application/xml', // 固定值,必须
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ cos.request(
+ {
+ Method: 'POST', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Body: body, // 请求体参数,必须
+ ContentType: 'application/xml', // 固定值,必须
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 提交智能封面任务
@@ -880,22 +922,25 @@ export const postSmartCover = {
},
});
- cos.request({
- Method: 'POST', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Body: body, // 请求体参数,必须
- ContentType: 'application/xml', // 固定值,必须
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ cos.request(
+ {
+ Method: 'POST', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Body: body, // 请求体参数,必须
+ ContentType: 'application/xml', // 固定值,必须
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 添加数字水印任务
@@ -944,22 +989,25 @@ export const postDigitalWatermark = {
},
});
- cos.request({
- Method: 'POST', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Body: body, // 请求体参数,必须
- ContentType: 'application/xml', // 固定值,必须
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ cos.request(
+ {
+ Method: 'POST', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Body: body, // 请求体参数,必须
+ ContentType: 'application/xml', // 固定值,必须
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 提取数字水印任务
@@ -1001,22 +1049,25 @@ export const postExtractDigitalWatermark = {
},
});
- cos.request({
- Method: 'POST', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Body: body, // 请求体参数,必须
- ContentType: 'application/xml', // 固定值,必须
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ cos.request(
+ {
+ Method: 'POST', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Body: body, // 请求体参数,必须
+ ContentType: 'application/xml', // 固定值,必须
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 提交图片异步处理任务
@@ -1062,20 +1113,23 @@ export const postPicProcess = {
},
});
- cos.request({
- Method: 'POST', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Body: body, // 请求体参数,必须
- ContentType: 'application/xml', // 固定值,必须
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ cos.request(
+ {
+ Method: 'POST', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Body: body, // 请求体参数,必须
+ ContentType: 'application/xml', // 固定值,必须
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
-};
\ No newline at end of file
+ );
+ },
+};
diff --git a/demo/CIDemos/picProcess.js b/demo/CIDemos/picProcess.js
index 8e19b1e..cf5c63a 100644
--- a/demo/CIDemos/picProcess.js
+++ b/demo/CIDemos/picProcess.js
@@ -1,34 +1,40 @@
/**
* 图片处理demo集合
-*/
+ */
// 获取带图片处理的访问url
export const getImageUrl = {
name: '获取带图片处理的访问url',
fn: function getImageUrl() {
// 生成带图片处理参数的文件签名URL,过期时间设置为 30 分钟。
- cos.getObjectUrl({
- Bucket: config.Bucket,
- Region: config.Region,
- Key: '02.png',
- Query: { 'imageMogr2/thumbnail/200x/': '' },
- Expires: 1800,
- Sign: true,
- }, function (err, data) {
- console.log('getObjectUrl with sign: ', err || (data && data.Url));
- });
+ cos.getObjectUrl(
+ {
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Key: '02.png',
+ Query: { 'imageMogr2/thumbnail/200x/': '' },
+ Expires: 1800,
+ Sign: true,
+ },
+ function (err, data) {
+ console.log('getObjectUrl with sign: ', err || (data && data.Url));
+ }
+ );
// 生成带图片处理参数的文件URL,不带签名。
- cos.getObjectUrl({
- Bucket: config.Bucket,
- Region: config.Region,
- Key: 'photo.png',
- QueryString: `imageMogr2/thumbnail/200x/`,
- Sign: false,
- }, function (err, data) {
- console.log('getObjectUrl without sign: ', err || (data && data.Url));
- });
- }
+ cos.getObjectUrl(
+ {
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Key: 'photo.png',
+ QueryString: `imageMogr2/thumbnail/200x/`,
+ Sign: false,
+ },
+ function (err, data) {
+ console.log('getObjectUrl without sign: ', err || (data && data.Url));
+ }
+ );
+ },
};
// 图片样式 - 查询样式
@@ -37,22 +43,25 @@ export const describeImageStyles = {
fn: function describeImageStyles() {
const host = config.Bucket + '.pic.' + config.Region + '.myqcloud.com/?style';
const url = 'https://' + host;
- cos.request({
- Method: 'GET',
- Url: url,
- Query: {
- 'style-name': 'style_name', // 非必填,样式名称
+ cos.request(
+ {
+ Method: 'GET',
+ Url: url,
+ Query: {
+ 'style-name': 'style_name', // 非必填,样式名称
+ },
},
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
// 图片样式 - 增加样式
@@ -67,21 +76,24 @@ export const addImageStyle = {
StyleBody: 'imageMogr2/thumbnail/!50px', // 必须,样式详情
},
});
- cos.request({
- Method: 'PUT',
- Url: url,
- Body: body,
- ContentType: 'application/xml',
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ cos.request(
+ {
+ Method: 'PUT',
+ Url: url,
+ Body: body,
+ ContentType: 'application/xml',
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
// 图片样式 - 删除样式
@@ -95,21 +107,24 @@ export const deleteImageStyle = {
StyleName: 'style_name1', // 必须,样式名称
},
});
- cos.request({
- Method: 'DELETE',
- Url: url,
- Body: body,
- ContentType: 'application/xml',
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ cos.request(
+ {
+ Method: 'DELETE',
+ Url: url,
+ Body: body,
+ ContentType: 'application/xml',
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
// 开通 Guetzli 压缩
@@ -118,19 +133,22 @@ export const openImageGuetzli = {
fn: function openImageGuetzli() {
const host = config.Bucket + '.pic.' + config.Region + '.myqcloud.com/?guetzli';
const url = 'https://' + host;
- cos.request({
- Method: 'PUT',
- Url: url,
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ cos.request(
+ {
+ Method: 'PUT',
+ Url: url,
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
// 查询 Guetzli 状态
@@ -139,19 +157,22 @@ export const describeImageGuetzli = {
fn: function describeImageGuetzli() {
const host = config.Bucket + '.pic.' + config.Region + '.myqcloud.com/?guetzli';
const url = 'https://' + host;
- cos.request({
- Method: 'GET',
- Url: url,
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ cos.request(
+ {
+ Method: 'GET',
+ Url: url,
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
// 关闭 Guetzli 压缩
@@ -160,19 +181,22 @@ export const closeImageGuetzli = {
fn: function closeImageGuetzli() {
const host = config.Bucket + '.pic.' + config.Region + '.myqcloud.com/?guetzli';
const url = 'https://' + host;
- cos.request({
- Method: 'DELETE',
- Url: url,
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ cos.request(
+ {
+ Method: 'DELETE',
+ Url: url,
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- })
- }
+ );
+ },
};
// 上传时使用图片处理
@@ -187,52 +211,56 @@ export const uploadPicOperation = {
return;
}
if (file.size > 1024 * 1024) {
- cos.sliceUploadFile({
- Bucket: config.Bucket, // Bucket 格式:test-1250000000
- Region: config.Region,
- Key: file.name,
- Body: file,
- Headers: {
- // 通过 imageMogr2 接口使用图片缩放功能:指定图片宽度为 200,宽度等比压缩
- 'Pic-Operations': JSON.stringify({
- is_pic_info: 1,
- rules: [{ fileid: 'desample_photo.jpg', rule: 'imageMogr2/thumbnail/200x/' }],
- }),
- },
- onHashProgress: function (progressData) {
- console.log('onHashProgress', JSON.stringify(progressData));
- },
- onProgress: function (progressData) {
- console.log('onProgress', JSON.stringify(progressData));
+ cos.sliceUploadFile(
+ {
+ Bucket: config.Bucket, // Bucket 格式:test-1250000000
+ Region: config.Region,
+ Key: file.name,
+ Body: file,
+ Headers: {
+ // 通过 imageMogr2 接口使用图片缩放功能:指定图片宽度为 200,宽度等比压缩
+ 'Pic-Operations': JSON.stringify({
+ is_pic_info: 1,
+ rules: [{ fileid: 'desample_photo.jpg', rule: 'imageMogr2/thumbnail/200x/' }],
+ }),
+ },
+ onHashProgress: function (progressData) {
+ console.log('onHashProgress', JSON.stringify(progressData));
+ },
+ onProgress: function (progressData) {
+ console.log('onProgress', JSON.stringify(progressData));
+ },
},
- }, function (err, data) {
- console.log('uploadPicOperation:', err || data);
- },
+ function (err, data) {
+ console.log('uploadPicOperation:', err || data);
+ }
);
} else {
- cos.putObject({
- Bucket: config.Bucket, // Bucket 格式:test-1250000000
- Region: config.Region,
- Key: file.name,
- Body: file,
- Headers: {
- // 通过 imageMogr2 接口进行 avif 压缩,可以根据需要压缩的类型填入不同的压缩格式:webp/heif/tpg/avif/svgc
- 'Pic-Operations':
- '{"is_pic_info": 1, "rules": [{"fileid": "desample_photo.jpg", "rule": "imageMogr2/format/avif"}]}',
- },
- onHashProgress: function (progressData) {
- console.log('onHashProgress', JSON.stringify(progressData));
- },
- onProgress: function (progressData) {
- console.log('onProgress', JSON.stringify(progressData));
+ cos.putObject(
+ {
+ Bucket: config.Bucket, // Bucket 格式:test-1250000000
+ Region: config.Region,
+ Key: file.name,
+ Body: file,
+ Headers: {
+ // 通过 imageMogr2 接口进行 avif 压缩,可以根据需要压缩的类型填入不同的压缩格式:webp/heif/tpg/avif/svgc
+ 'Pic-Operations':
+ '{"is_pic_info": 1, "rules": [{"fileid": "desample_photo.jpg", "rule": "imageMogr2/format/avif"}]}',
+ },
+ onHashProgress: function (progressData) {
+ console.log('onHashProgress', JSON.stringify(progressData));
+ },
+ onProgress: function (progressData) {
+ console.log('onProgress', JSON.stringify(progressData));
+ },
},
- }, function (err, data) {
- console.log('uploadPicOperation:', err || data);
- },
+ function (err, data) {
+ console.log('uploadPicOperation:', err || data);
+ }
);
}
});
- }
+ },
};
// 对云上数据处理
@@ -253,49 +281,55 @@ export const requestPicOperation = {
rules: [{ fileid: 'desample_photo.jpg', rule: waterMarkRule }],
});
- cos.request({
- Bucket: config.Bucket,
- Region: config.Region,
- Key: '02.png',
- Method: 'GET',
- Action: 'exif',
- RawBody: true,
- // Headers: {
- // // 通过 imageMogr2 接口使用图片缩放功能:指定图片宽度为 200,宽度等比压缩
- // 'Pic-Operations': picOperations,
- // },
- }, function (err, data) {
- const info = JSON.parse(data.Body);
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ cos.request(
+ {
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Key: '02.png',
+ Method: 'GET',
+ Action: 'exif',
+ RawBody: true,
+ // Headers: {
+ // // 通过 imageMogr2 接口使用图片缩放功能:指定图片宽度为 200,宽度等比压缩
+ // 'Pic-Operations': picOperations,
+ // },
+ },
+ function (err, data) {
+ const info = JSON.parse(data.Body);
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
// 下载时使用图片压缩
export const getObjectPicOperation = {
name: '下载时使用图片压缩',
fn: function getObjectPicOperation() {
- cos.getObject({
- Bucket: config.Bucket,
- Region: config.Region,
- Key: '1.png',
- QueryString: `imageMogr2/format/avif`, // 可以根据需要压缩的类型填入不同的压缩格式:webp/heif/tpg/avif/svgc
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ cos.getObject(
+ {
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Key: '1.png',
+ QueryString: `imageMogr2/format/avif`, // 可以根据需要压缩的类型填入不同的压缩格式:webp/heif/tpg/avif/svgc
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
// 异常图片检测
@@ -303,65 +337,69 @@ export const createImageInspectJob = {
name: '异常图片检测',
fn: function createImageInspectJob() {
const key = '1.png';
- cos.request({
- Bucket: config.Bucket,
- Region: config.Region,
- Method: 'GET',
- Key: key,
- RawBody: true,
- Query: {
- 'ci-process': 'ImageInspect', // 必须,操作类型,异常图片检测固定为:ImageInspect
+ cos.request(
+ {
+ Bucket: config.Bucket,
+ Region: config.Region,
+ Method: 'GET',
+ Key: key,
+ RawBody: true,
+ Query: {
+ 'ci-process': 'ImageInspect', // 必须,操作类型,异常图片检测固定为:ImageInspect
+ },
},
- }, function (err, data) {
- // 从响应数据中解析出异常图片检测结果
- let body = {};
- if (data && data.Body) {
- body = JSON.parse(data.Body) || {};
- if (body) {
- data.body = body;
+ function (err, data) {
+ // 从响应数据中解析出异常图片检测结果
+ let body = {};
+ if (data && data.Body) {
+ body = JSON.parse(data.Body) || {};
+ if (body) {
+ data.body = body;
+ }
+ }
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
}
}
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
- }
- });
- }
+ );
+ },
};
-
// 查询图片处理队列
export const describePicProcessQueues = {
name: '查询图片处理队列',
fn: function describePicProcessQueues() {
const host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/picqueue';
const url = 'https://' + host;
- cos.request({
- Method: 'GET',
- Key: 'picqueue',
- Url: url,
- Query: {
- // queueIds: '', // 非必须,队列 ID,以“,”符号分割字符串
- state: 'Active', // 非必须,1. Active 表示队列内的作业会被媒体处理服务调度执行。2. Paused 表示队列暂停,作业不再会被媒体处理调度执行,队列内的所有作业状态维持在暂停状态,已经执行中的任务不受影响。
- pageNumber: 1, // 非必须,第几页,默认值1
- pageSize: 10, // 非必须,每页个数,默认值10
+ cos.request(
+ {
+ Method: 'GET',
+ Key: 'picqueue',
+ Url: url,
+ Query: {
+ // queueIds: '', // 非必须,队列 ID,以“,”符号分割字符串
+ state: 'Active', // 非必须,1. Active 表示队列内的作业会被媒体处理服务调度执行。2. Paused 表示队列暂停,作业不再会被媒体处理调度执行,队列内的所有作业状态维持在暂停状态,已经执行中的任务不受影响。
+ pageNumber: 1, // 非必须,第几页,默认值1
+ pageSize: 10, // 非必须,每页个数,默认值10
+ },
},
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
-
// 更新图片处理队列
export const updatePicProcessQueue = {
name: '更新图片处理队列',
@@ -387,22 +425,25 @@ export const updatePicProcessQueue = {
},
},
});
- cos.request({
- Method: 'POST',
- Key: 'picqueue/' + queueId,
- Url: url,
- Body: body,
- ContentType: 'application/xml',
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ cos.request(
+ {
+ Method: 'POST',
+ Key: 'picqueue/' + queueId,
+ Url: url,
+ Body: body,
+ ContentType: 'application/xml',
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
// 查询原图保护状态
@@ -411,41 +452,46 @@ export const describeOriginProtect = {
fn: function describeOriginProtect() {
const host = config.Bucket + '.pic.' + config.Region + '.myqcloud.com/?origin-protect';
const url = 'https://' + host;
- cos.request({
- Method: 'GET',
- Url: url,
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ cos.request(
+ {
+ Method: 'GET',
+ Url: url,
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
-
// 开通原图保护
export const openOriginProtect = {
name: '开通原图保护',
fn: function openOriginProtect() {
const host = config.Bucket + '.pic.' + config.Region + '.myqcloud.com/?origin-protect';
const url = 'https://' + host;
- cos.request({
- Method: 'PUT',
- Url: url,
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ cos.request(
+ {
+ Method: 'PUT',
+ Url: url,
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
// 关闭原图保护
@@ -454,19 +500,22 @@ export const closeOriginProtect = {
fn: function closeOriginProtect() {
const host = config.Bucket + '.pic.' + config.Region + '.myqcloud.com/?origin-protect';
const url = 'https://' + host;
- cos.request({
- Method: 'DELETE',
- Url: url,
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ cos.request(
+ {
+ Method: 'DELETE',
+ Url: url,
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
// 开通图片处理(异步)服务
@@ -476,20 +525,23 @@ export const CreatePicProcessBucket = {
const key = 'picbucket'; // 固定值
const host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/' + key;
const url = 'https://' + host;
- cos.request({
- Method: 'POST',
- Key: key,
- Url: url,
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ cos.request(
+ {
+ Method: 'POST',
+ Key: key,
+ Url: url,
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
// 查询图片处理(异步)服务
@@ -499,21 +551,21 @@ export const DescribePicProcessBuckets = {
const key = 'picbucket'; // 固定值
const host = 'ci.' + config.Region + '.myqcloud.com/' + key;
const url = 'https://' + host;
- cos.request({
- Method: 'GET',
- Key: key,
- Url: url,
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data);
+ cos.request(
+ {
+ Method: 'GET',
+ Key: key,
+ Url: url,
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data);
+ }
}
- });
- }
+ );
+ },
};
-
-
-
diff --git a/demo/CIDemos/taskAndWorkflow.js b/demo/CIDemos/taskAndWorkflow.js
index fb486d2..ebde9e1 100644
--- a/demo/CIDemos/taskAndWorkflow.js
+++ b/demo/CIDemos/taskAndWorkflow.js
@@ -1,6 +1,6 @@
/**
* 任务和工作流demo集合
-*/
+ */
// 获取任务列表
export const DescribeFileProcessJobs = {
@@ -9,49 +9,51 @@ export const DescribeFileProcessJobs = {
const key = 'jobs'; // 固定值,必须
const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
const url = `https://${host}/${key}`;
- cos.request({
- Method: 'GET', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Query: {
- // 拉取该队列 ID 下的任务;是否必传:否
- // queueId: '',
- // 拉取队列类型下的任务,和 queueId 不同时生效,同时存在时 queueId 优先;是否必传:否
- // queueType: '',
- // 任务的 Tag;是否必传:是,比如查找视频转动图的任务
- tag: 'Animation',
- // 触发该任务的工作流ID;是否必传:否
- workflowId: '',
- // 触发该任务的存量触发任务ID;是否必传:否
- // inventoryTriggerJobId: '',
- // 该任务的输入文件名,暂仅支持精确匹配;是否必传:否
- // inputObject: '',
- // Desc 或者 Asc。默认为 Desc;是否必传:否
- // orderByTime: '',
- // 请求的上下文,用于翻页。上次返回的值;是否必传:否
- // nextToken: '',
- // 拉取的最大任务数。默认为10。最大为100;是否必传:否
- size: 10,
- // 拉取该状态的任务,以,分割,支持多状态:All、Submitted、Running、Success、Failed、Pause、Cancel。默认为 All;是否必传:否
- states: 'All',
- // 拉取创建时间大于该时间的任务。格式为:%Y-%m-%dT%H:%m:%S%z,示例:2001-01-01T00:00:00+0800;是否必传:否
- // startCreationTime: '',
- // 拉取创建时间小于该时间的任务。格式为:%Y-%m-%dT%H:%m:%S%z,示例:2001-01-01T23:59:59+0800;是否必传:否
- // endCreationTime: '',
+ cos.request(
+ {
+ Method: 'GET', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Query: {
+ // 拉取该队列 ID 下的任务;是否必传:否
+ // queueId: '',
+ // 拉取队列类型下的任务,和 queueId 不同时生效,同时存在时 queueId 优先;是否必传:否
+ // queueType: '',
+ // 任务的 Tag;是否必传:是,比如查找视频转动图的任务
+ tag: 'Animation',
+ // 触发该任务的工作流ID;是否必传:否
+ workflowId: '',
+ // 触发该任务的存量触发任务ID;是否必传:否
+ // inventoryTriggerJobId: '',
+ // 该任务的输入文件名,暂仅支持精确匹配;是否必传:否
+ // inputObject: '',
+ // Desc 或者 Asc。默认为 Desc;是否必传:否
+ // orderByTime: '',
+ // 请求的上下文,用于翻页。上次返回的值;是否必传:否
+ // nextToken: '',
+ // 拉取的最大任务数。默认为10。最大为100;是否必传:否
+ size: 10,
+ // 拉取该状态的任务,以,分割,支持多状态:All、Submitted、Running、Success、Failed、Pause、Cancel。默认为 All;是否必传:否
+ states: 'All',
+ // 拉取创建时间大于该时间的任务。格式为:%Y-%m-%dT%H:%m:%S%z,示例:2001-01-01T00:00:00+0800;是否必传:否
+ // startCreationTime: '',
+ // 拉取创建时间小于该时间的任务。格式为:%Y-%m-%dT%H:%m:%S%z,示例:2001-01-01T23:59:59+0800;是否必传:否
+ // endCreationTime: '',
+ },
},
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
-
// 查看指定任务
export const getJobDetail = {
name: '查看指定任务',
@@ -60,20 +62,23 @@ export const getJobDetail = {
const key = `jobs/${jobId}`; // jobId: 需要查询的jobId;
const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
const url = `https://${host}/${key}`;
- cos.request({
- Method: 'GET', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ cos.request(
+ {
+ Method: 'GET', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 查询工作流
@@ -83,30 +88,33 @@ export const DescribeWorkflow = {
const key = 'workflow'; // 固定值
const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
const url = `https://${host}/${key}`;
- cos.request({
- Method: 'GET', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Query: {
- // 工作流 ID,以,符号分割字符串;是否必传:否
- ids: '',
- // 工作流名称;是否必传:否
- name: '',
- // 第几页;是否必传:否
- pageNumber: '',
- // 每页个数;是否必传:否
- pageSize: '',
+ cos.request(
+ {
+ Method: 'GET', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Query: {
+ // 工作流 ID,以,符号分割字符串;是否必传:否
+ ids: '',
+ // 工作流名称;是否必传:否
+ name: '',
+ // 第几页;是否必传:否
+ pageNumber: '',
+ // 每页个数;是否必传:否
+ pageSize: '',
+ },
},
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 新增工作流
@@ -123,7 +131,7 @@ export const CreateWorkflow = {
const animationTemplate = 'xxx'; // 视频转动图模板
const concatTemplate = 'xxx'; // 音视频拼接模板
const voiceSeparateTemplate = 'xxx'; // 人声分离模板
- const videoMontageTemplate = 'xxx'; // 精彩集锦模板
+ const videoMontageTemplate = 'xxx'; // 精彩集锦模板
const watermarkTemplate = 'xxx'; // 视频水印模板
const videoProcessTemplate = 'xxx'; // 视频增强模板
const superResolutionTemplate = 'xxx'; // 超分辨率模板
@@ -294,22 +302,25 @@ export const CreateWorkflow = {
},
},
});
- cos.request({
- Method: 'POST', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Body: body, // 请求体参数,必须
- ContentType: 'application/xml', // 固定值,必须
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ cos.request(
+ {
+ Method: 'POST', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Body: body, // 请求体参数,必须
+ ContentType: 'application/xml', // 固定值,必须
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 更新工作流
@@ -327,7 +338,7 @@ export const UpdateWorkflow = {
const animationTemplate = 'xxx'; // 视频转动图模板
const concatTemplate = 'xxx'; // 音视频拼接模板
const voiceSeparateTemplate = 'xxx'; // 人声分离模板
- const videoMontageTemplate = 'xxx'; // 精彩集锦模板
+ const videoMontageTemplate = 'xxx'; // 精彩集锦模板
const watermarkTemplate = 'xxx'; // 视频水印模板
const videoProcessTemplate = 'xxx'; // 视频增强模板
const superResolutionTemplate = 'xxx'; // 超分辨率模板
@@ -498,22 +509,25 @@ export const UpdateWorkflow = {
},
},
});
- cos.request({
- Method: 'PUT', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Body: body, // 请求体参数,必须
- ContentType: 'application/xml', // 固定值,必须
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ cos.request(
+ {
+ Method: 'PUT', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Body: body, // 请求体参数,必须
+ ContentType: 'application/xml', // 固定值,必须
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 删除工作流
@@ -524,20 +538,23 @@ export const DeleteWorkflow = {
const key = `workflow/${workflowId}`; // 固定格式
const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
const url = `https://${host}/${key}`;
- cos.request({
- Method: 'DELETE', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ cos.request(
+ {
+ Method: 'DELETE', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 工作流实例列表
@@ -548,31 +565,34 @@ export const DescribeWorkflowExecutions = {
const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
const url = `https://${host}/${key}`;
- cos.request({
- Method: 'GET', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Query: {
- workflowId: 'xxx', // 工作流 ID,非必须
- // name: '', // 文件名称,非必须
- // orderByTime: 'Desc', // Desc 或者 Asc。默认为 Desc,非必须
- // size: '10', // 拉取的最大任务数。默认为10。最大为100,非必须
- // states: 'All', // 工作流实例状态,以,分割支持多状态,非必须
- // startCreationTime: '', // 拉取创建时间大于等于该时间。格式为:%Y-%m-%dT%H:%m:%S%z,非必须
- // endCreationTime: '', // 拉取创建时间小于等于该时间。格式为:%Y-%m-%dT%H:%m:%S%z,非必须
- // nextToken: '', // 请求的上下文,用于翻页。下一页输入 token,非必须
- // jobId: '' // 批量触发工作流任务 ID,用于扫描出批量触发任务 ID 对应执行的工作流实例,非必须
+ cos.request(
+ {
+ Method: 'GET', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Query: {
+ workflowId: 'xxx', // 工作流 ID,非必须
+ // name: '', // 文件名称,非必须
+ // orderByTime: 'Desc', // Desc 或者 Asc。默认为 Desc,非必须
+ // size: '10', // 拉取的最大任务数。默认为10。最大为100,非必须
+ // states: 'All', // 工作流实例状态,以,分割支持多状态,非必须
+ // startCreationTime: '', // 拉取创建时间大于等于该时间。格式为:%Y-%m-%dT%H:%m:%S%z,非必须
+ // endCreationTime: '', // 拉取创建时间小于等于该时间。格式为:%Y-%m-%dT%H:%m:%S%z,非必须
+ // nextToken: '', // 请求的上下文,用于翻页。下一页输入 token,非必须
+ // jobId: '' // 批量触发工作流任务 ID,用于扫描出批量触发任务 ID 对应执行的工作流实例,非必须
+ },
},
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 获取工作流实例详情
@@ -583,20 +603,23 @@ export const DescribeWorkflowExecution = {
const key = `workflowexecution/${runId}`; // 固定格式
const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
const url = `https://${host}/${key}`;
- cos.request({
- Method: 'GET', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ cos.request(
+ {
+ Method: 'GET', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 手动触发工作流
@@ -606,28 +629,31 @@ export const TriggerWorkflow = {
const key = 'triggerworkflow'; // 固定值
const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
const url = `https://${host}/${key}`;
- cos.request({
- Method: 'POST', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Query: {
- // 需要触发的工作流 ID;是否必传:是
- workflowId: 'xxxx',
- // 需要进行工作流处理的对象名称, 需要进行 url 编码;是否必传:是
- object: 'test.mp4',
- // 存量触发任务名称,支持中文、英文、数字、—和_,长度限制128字符,默认为空;是否必传:否
- // name: '',
+ cos.request(
+ {
+ Method: 'POST', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Query: {
+ // 需要触发的工作流 ID;是否必传:是
+ workflowId: 'xxxx',
+ // 需要进行工作流处理的对象名称, 需要进行 url 编码;是否必传:是
+ object: 'test.mp4',
+ // 存量触发任务名称,支持中文、英文、数字、—和_,长度限制128字符,默认为空;是否必传:否
+ // name: '',
+ },
},
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 取消任务
@@ -638,21 +664,24 @@ export const CancelMediaJob = {
const key = `jobs/${jobId}`; // 固定格式
const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
const url = `https://${host}/${key}`;
- cos.request({
- Method: 'PUT', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Action: 'cancel', // 固定值
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ cos.request(
+ {
+ Method: 'PUT', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Action: 'cancel', // 固定值
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 任务列表
@@ -662,32 +691,35 @@ export const DescribeMediaJobs = {
const key = 'jobs'; // 固定格式
const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
const url = `https://${host}/${key}`;
- cos.request({
- Method: 'GET', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Query: {
- tag: 'Animation', // 任务的 Tag,这里以视频转动图任务Animation为例,必须
- // workflowId: '', // 触发该任务的工作流ID,非必须
- // inventoryTriggerJobId: '', // 触发该任务的存量触发任务 ID,非必须
- // inputObject: '', // 该任务的输入文件名,暂仅支持精确匹配,非必须
- // orderByTime: 'Desc', // Desc 或者 Asc。默认为 Desc,非必须
- // size: '10', // 拉取的最大任务数。默认为10。最大为100,非必须
- // states: 'All', // 工作流实例状态,以,分割支持多状态,非必须
- // startCreationTime: '', // 拉取创建时间大于等于该时间。格式为:%Y-%m-%dT%H:%m:%S%z,非必须
- // endCreationTime: '', // 拉取创建时间小于等于该时间。格式为:%Y-%m-%dT%H:%m:%S%z,非必须
- // nextToken: '', // 请求的上下文,用于翻页。下一页输入 token,非必须
+ cos.request(
+ {
+ Method: 'GET', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Query: {
+ tag: 'Animation', // 任务的 Tag,这里以视频转动图任务Animation为例,必须
+ // workflowId: '', // 触发该任务的工作流ID,非必须
+ // inventoryTriggerJobId: '', // 触发该任务的存量触发任务 ID,非必须
+ // inputObject: '', // 该任务的输入文件名,暂仅支持精确匹配,非必须
+ // orderByTime: 'Desc', // Desc 或者 Asc。默认为 Desc,非必须
+ // size: '10', // 拉取的最大任务数。默认为10。最大为100,非必须
+ // states: 'All', // 工作流实例状态,以,分割支持多状态,非必须
+ // startCreationTime: '', // 拉取创建时间大于等于该时间。格式为:%Y-%m-%dT%H:%m:%S%z,非必须
+ // endCreationTime: '', // 拉取创建时间小于等于该时间。格式为:%Y-%m-%dT%H:%m:%S%z,非必须
+ // nextToken: '', // 请求的上下文,用于翻页。下一页输入 token,非必须
+ },
},
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 查询模板列表
@@ -697,28 +729,31 @@ export const DescribeMediaTemplates = {
const key = 'template'; // 固定格式
const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
const url = `https://${host}/${key}`;
- cos.request({
- Method: 'GET', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Query: {
- tag: 'All', // 模板类型,默认值: All
- // category: '', // Official(系统预设模板),Custom(自定义模板),默认值: Custom,非必须
- // ids: '', // 模板 ID,以,符号分割字符串,非必须
- // name: '', // 模板名称前缀,非必须
- // pageNumber: '1', // 第几页,默认值:1,非必须
- // pageSize: '10', // 每页个数,默认值:10,非必须
+ cos.request(
+ {
+ Method: 'GET', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Query: {
+ tag: 'All', // 模板类型,默认值: All
+ // category: '', // Official(系统预设模板),Custom(自定义模板),默认值: Custom,非必须
+ // ids: '', // 模板 ID,以,符号分割字符串,非必须
+ // name: '', // 模板名称前缀,非必须
+ // pageNumber: '1', // 第几页,默认值:1,非必须
+ // pageSize: '10', // 每页个数,默认值:10,非必须
+ },
},
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 创建模板
@@ -745,22 +780,25 @@ export const CreateMediaTemplate = {
},
},
});
- cos.request({
- Method: 'POST', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Body: body, // 请求体参数,必须
- ContentType: 'application/xml', // 固定值,必须
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ cos.request(
+ {
+ Method: 'POST', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Body: body, // 请求体参数,必须
+ ContentType: 'application/xml', // 固定值,必须
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 更新模版
@@ -788,22 +826,25 @@ export const UpdateMediaTemplate = {
},
},
});
- cos.request({
- Method: 'PUT', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Body: body, // 请求体参数,必须
- ContentType: 'application/xml', // 固定值,必须
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ cos.request(
+ {
+ Method: 'PUT', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Body: body, // 请求体参数,必须
+ ContentType: 'application/xml', // 固定值,必须
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 删除模板
@@ -814,20 +855,23 @@ export const DeleteMediaTemplate = {
const key = `template/${templateId}`; // 固定格式
const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
const url = `https://${host}/${key}`;
- cos.request({
- Method: 'DELETE', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ cos.request(
+ {
+ Method: 'DELETE', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 创建批量任务
@@ -842,7 +886,7 @@ export const CreateInventoryTriggerJob = {
Name: 'demo', // 批量触发任务名称,支持中文、英文、数字、—和_,长度限制128字符
Type: 'Workflow', // 批量处理任务类型: Workflow,也支持设置为Job
Input: {
- Prefix: 'inputtest', // Object 前缀
+ Prefix: 'inputtest', // Object 前缀
},
Operation: {
TimeInterval: {
@@ -853,22 +897,25 @@ export const CreateInventoryTriggerJob = {
},
},
});
- cos.request({
- Method: 'POST', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Body: body, // 请求体参数,必须
- ContentType: 'application/xml', // 固定值,必须
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ cos.request(
+ {
+ Method: 'POST', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Body: body, // 请求体参数,必须
+ ContentType: 'application/xml', // 固定值,必须
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 取消批量任务
@@ -879,21 +926,24 @@ export const CancelInventoryTriggerJob = {
const key = `inventorytriggerjob/${jobId}`; // 固定格式
const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
const url = `https://${host}/${key}`;
- cos.request({
- Method: 'PUT', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Action: 'cancel', // 固定值,必须
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ cos.request(
+ {
+ Method: 'PUT', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Action: 'cancel', // 固定值,必须
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 查询单个批量任务
@@ -904,20 +954,23 @@ export const DescribeInventoryTriggerJob = {
const key = `inventorytriggerjob/${jobId}`; // 固定格式
const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
const url = `https://${host}/${key}`;
- cos.request({
- Method: 'GET', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ cos.request(
+ {
+ Method: 'GET', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ },
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
// 批量任务列表
@@ -927,30 +980,33 @@ export const DescribeInventoryTriggerJobs = {
const key = 'inventorytriggerjob'; // 固定格式
const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
const url = `https://${host}/${key}`;
- cos.request({
- Method: 'GET', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Query: {
- // nextToken: '', // 请求的上下文,用于翻页。下一页输入 token,非必须
- // size: '10', // 拉取的最大任务数。默认为10。最大为100,非必须
- // type: 'Workflow', // 拉取批量任务类型,工作流类型 Workflow 、任务类型 Job,非必须
- // orderByTime: 'Desc', // Desc 或者 Asc。默认为 Desc,非必须
- // states: 'All', // 工作流实例状态,以,分割支持多状态,非必须
- // startCreationTime: '', // 拉取创建时间大于等于该时间。格式为:%Y-%m-%dT%H:%m:%S%z,非必须
- // endCreationTime: '', // 拉取创建时间小于等于该时间。格式为:%Y-%m-%dT%H:%m:%S%z,非必须
- // workflowId: '', // 工作流 ID,非必须
- // jobId: '', // 批量触发任务 ID,非必须
- // name: '', // 批量触发任务名称
+ cos.request(
+ {
+ Method: 'GET', // 固定值,必须
+ Key: key, // 必须
+ Url: url, // 请求的url,必须
+ Query: {
+ // nextToken: '', // 请求的上下文,用于翻页。下一页输入 token,非必须
+ // size: '10', // 拉取的最大任务数。默认为10。最大为100,非必须
+ // type: 'Workflow', // 拉取批量任务类型,工作流类型 Workflow 、任务类型 Job,非必须
+ // orderByTime: 'Desc', // Desc 或者 Asc。默认为 Desc,非必须
+ // states: 'All', // 工作流实例状态,以,分割支持多状态,非必须
+ // startCreationTime: '', // 拉取创建时间大于等于该时间。格式为:%Y-%m-%dT%H:%m:%S%z,非必须
+ // endCreationTime: '', // 拉取创建时间小于等于该时间。格式为:%Y-%m-%dT%H:%m:%S%z,非必须
+ // workflowId: '', // 工作流 ID,非必须
+ // jobId: '', // 批量触发任务 ID,非必须
+ // name: '', // 批量触发任务名称
+ },
},
- }, function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
+ function (err, data) {
+ if (err) {
+ // 处理请求失败
+ console.log(err);
+ } else {
+ // 处理请求成功
+ console.log(data.Response);
+ }
}
- });
- }
+ );
+ },
};
diff --git a/demo/demo.js b/demo/demo.js
index babcc0a..354a1cc 100644
--- a/demo/demo.js
+++ b/demo/demo.js
@@ -11,7 +11,7 @@ function getObjectUrl() {
},
function (err, data) {
logger.log('getObjectUrl:', err || (data && data.Url));
- },
+ }
);
logger.log('getObjectUrl:', url);
}
@@ -40,7 +40,7 @@ function getAuth() {
AuthData +
(AuthData.SecurityToken ? '&' + AuthData.SecurityToken : '');
logger.log('getAuth:', url);
- },
+ }
);
}
@@ -62,7 +62,7 @@ function putBucket() {
},
function (err, data) {
logger.log('putBucket:', err || data);
- },
+ }
);
}
@@ -75,7 +75,7 @@ function getBucket() {
},
function (err, data) {
logger.log('getBucket:', err || data);
- },
+ }
);
}
@@ -87,7 +87,7 @@ function headBucket() {
},
function (err, data) {
logger.log('headBucket:', err || data);
- },
+ }
);
}
@@ -99,7 +99,7 @@ function deleteBucket() {
},
function (err, data) {
logger.log('deleteBucket:', err || data);
- },
+ }
);
}
@@ -145,7 +145,7 @@ function putBucketAcl() {
},
function (err, data) {
logger.log('putBucketAcl:', err || data);
- },
+ }
);
}
@@ -157,7 +157,7 @@ function getBucketAcl() {
},
function (err, data) {
logger.log('getBucketAcl:', err || data);
- },
+ }
);
}
@@ -188,7 +188,7 @@ function putBucketCors() {
},
function (err, data) {
logger.log('putBucketCors:', err || data);
- },
+ }
);
}
@@ -200,7 +200,7 @@ function getBucketCors() {
},
function (err, data) {
logger.log('getBucketCors:', err || data);
- },
+ }
);
}
@@ -212,7 +212,7 @@ function deleteBucketCors() {
},
function (err, data) {
logger.log('deleteBucketCors:', err || data);
- },
+ }
);
}
@@ -230,7 +230,7 @@ function putBucketTagging() {
},
function (err, data) {
logger.log('putBucketTagging:', err || data);
- },
+ }
);
}
@@ -242,7 +242,7 @@ function getBucketTagging() {
},
function (err, data) {
logger.log('getBucketTagging:', err || data);
- },
+ }
);
}
@@ -254,7 +254,7 @@ function deleteBucketTagging() {
},
function (err, data) {
logger.log('deleteBucketTagging:', err || data);
- },
+ }
);
}
@@ -328,7 +328,7 @@ function putBucketPolicy() {
},
function (err, data) {
logger.log('putBucketPolicy:', err || data);
- },
+ }
);
}
@@ -340,7 +340,7 @@ function getBucketPolicy() {
},
function (err, data) {
logger.log('getBucketPolicy:', err || data);
- },
+ }
);
}
@@ -352,7 +352,7 @@ function deleteBucketPolicy() {
},
function (err, data) {
logger.log('deleteBucketPolicy:', err || data);
- },
+ }
);
}
@@ -364,7 +364,7 @@ function getBucketLocation() {
},
function (err, data) {
logger.log('getBucketLocation:', err || data);
- },
+ }
);
}
@@ -416,7 +416,7 @@ function putBucketLifecycle() {
},
function (err, data) {
logger.log('putBucketLifecycle:', err || data);
- },
+ }
);
}
@@ -428,7 +428,7 @@ function getBucketLifecycle() {
},
function (err, data) {
logger.log('getBucketLifecycle:', err || data);
- },
+ }
);
}
@@ -440,7 +440,7 @@ function deleteBucketLifecycle() {
},
function (err, data) {
logger.log('deleteBucketLifecycle:', err || data);
- },
+ }
);
}
@@ -455,7 +455,7 @@ function putBucketVersioning() {
},
function (err, data) {
logger.log('putBucketVersioning:', err || data);
- },
+ }
);
}
@@ -467,7 +467,7 @@ function getBucketVersioning() {
},
function (err, data) {
logger.log('getBucketVersioning:', err || data);
- },
+ }
);
}
@@ -481,7 +481,7 @@ function listObjectVersions() {
},
function (err, data) {
logger.log('listObjectVersions:', err || JSON.stringify(data, null, ' '));
- },
+ }
);
}
@@ -508,7 +508,7 @@ function putBucketReplication() {
},
function (err, data) {
logger.log('putBucketReplication:', err || data);
- },
+ }
);
}
@@ -520,7 +520,7 @@ function getBucketReplication() {
},
function (err, data) {
logger.log('getBucketReplication:', err || data);
- },
+ }
);
}
@@ -532,7 +532,7 @@ function deleteBucketReplication() {
},
function (err, data) {
logger.log('deleteBucketReplication:', err || data);
- },
+ }
);
}
@@ -580,7 +580,7 @@ function putBucketWebsite() {
},
function (err, data) {
logger.log('putBucketWebsite:', err || data);
- },
+ }
);
}
@@ -592,7 +592,7 @@ function getBucketWebsite() {
},
function (err, data) {
logger.log('getBucketWebsite:', err || data);
- },
+ }
);
}
@@ -604,7 +604,7 @@ function deleteBucketWebsite() {
},
function (err, data) {
logger.log('deleteBucketWebsite:', err || data);
- },
+ }
);
}
@@ -624,7 +624,7 @@ function putBucketReferer() {
},
function (err, data) {
logger.log('putBucketReferer:', err || data);
- },
+ }
);
}
@@ -636,7 +636,7 @@ function getBucketReferer() {
},
function (err, data) {
logger.log('getBucketReferer:', err || JSON.stringify(data, null, ' '));
- },
+ }
);
}
@@ -660,7 +660,7 @@ function putBucketDomain() {
},
function (err, data) {
logger.log('putBucketDomain:', err || data);
- },
+ }
);
}
@@ -672,7 +672,7 @@ function getBucketDomain() {
},
function (err, data) {
logger.log('getBucketDomain:', err || data);
- },
+ }
);
}
@@ -684,7 +684,7 @@ function deleteBucketDomain() {
},
function (err, data) {
logger.log('deleteBucketDomain:', err || data);
- },
+ }
);
}
@@ -703,7 +703,7 @@ function putBucketLogging() {
},
function (err, data) {
logger.log('putBucketLogging:', err || data);
- },
+ }
);
}
@@ -715,7 +715,7 @@ function getBucketLogging() {
},
function (err, data) {
logger.log('getBucketLogging:', err || data);
- },
+ }
);
}
@@ -728,7 +728,7 @@ function deleteBucketLogging() {
},
function (err, data) {
logger.log('deleteBucketLogging:', err || data);
- },
+ }
);
}
@@ -771,7 +771,7 @@ function putBucketInventory() {
},
function (err, data) {
logger.log('putBucketInventory:', err || data);
- },
+ }
);
}
@@ -819,7 +819,7 @@ function postBucketInventory() {
},
function (err, data) {
logger.log('postBucketInventory:', err || data);
- },
+ }
);
}
@@ -832,7 +832,7 @@ function getBucketInventory() {
},
function (err, data) {
logger.log('getBucketInventory:', err || JSON.stringify(data));
- },
+ }
);
}
@@ -845,7 +845,7 @@ function deleteBucketInventory() {
},
function (err, data) {
logger.log('deleteBucketInventory:', err || JSON.stringify(data));
- },
+ }
);
}
@@ -857,7 +857,7 @@ function listBucketInventory() {
},
function (err, data) {
logger.log('listBucketInventory:', err || JSON.stringify(data));
- },
+ }
);
}
@@ -878,7 +878,7 @@ function putBucketEncryption() {
},
function (err, data) {
logger.log('putBucketEncryption:', err || JSON.stringify(data));
- },
+ }
);
}
@@ -890,7 +890,7 @@ function getBucketEncryption() {
},
function (err, data) {
logger.log('getBucketEncryption:', err || JSON.stringify(data));
- },
+ }
);
}
@@ -902,7 +902,7 @@ function deleteBucketEncryption() {
},
function (err, data) {
logger.log('deleteBucketEncryption:', err || JSON.stringify(data));
- },
+ }
);
}
@@ -934,7 +934,7 @@ function putObject() {
},
function (err, data) {
logger.log('putObject:', err || data);
- },
+ }
);
}
@@ -976,7 +976,7 @@ function putObject_base64ToBlob() {
},
function (err, data) {
logger.log('putObject:', err || data);
- },
+ }
);
}
@@ -991,7 +991,7 @@ function appendObject() {
},
function (err, data) {
logger.log('putObject:', err || data);
- },
+ }
);
}
@@ -1018,9 +1018,9 @@ function appendObject_continue() {
// 也可以取到下一次上传的position继续追加上传
// var nextPosition = data.headers['x-cos-next-append-position'];
logger.log('putObject:', err || data);
- },
+ }
);
- },
+ }
);
}
@@ -1035,7 +1035,7 @@ function putObjectCopy() {
},
function (err, data) {
logger.log('putObjectCopy:', err || data);
- },
+ }
);
}
@@ -1051,7 +1051,7 @@ function getObject() {
},
function (err, data) {
logger.log('getObject:', err || data);
- },
+ }
);
}
@@ -1064,7 +1064,7 @@ function headObject() {
},
function (err, data) {
logger.log('headObject:', err || data);
- },
+ }
);
}
@@ -1095,7 +1095,7 @@ function putObjectAcl() {
},
function (err, data) {
logger.log('putObjectAcl:', err || data);
- },
+ }
);
}
@@ -1108,7 +1108,7 @@ function getObjectAcl() {
},
function (err, data) {
logger.log('getObjectAcl:', err || data);
- },
+ }
);
}
@@ -1121,7 +1121,7 @@ function deleteObject() {
},
function (err, data) {
logger.log('deleteObject:', err || data);
- },
+ }
);
}
@@ -1134,7 +1134,7 @@ function deleteMultipleObject() {
},
function (err, data) {
logger.log('deleteMultipleObject:', err || data);
- },
+ }
);
}
@@ -1153,7 +1153,7 @@ function restoreObject() {
},
function (err, data) {
logger.log('restoreObject:', err || data);
- },
+ }
);
}
@@ -1195,7 +1195,7 @@ function selectObjectContent() {
},
function (err, data) {
logger.log('selectObjectContent:', err || data);
- },
+ }
);
// 查询 JSON
cos.selectObjectContent(
@@ -1224,7 +1224,7 @@ function selectObjectContent() {
},
function (err, data) {
logger.log('selectObjectContent:', err || data);
- },
+ }
);
}
@@ -1245,7 +1245,7 @@ function abortUploadTask() {
},
function (err, data) {
logger.log('abortUploadTask:', err || data);
- },
+ }
);
}
@@ -1267,7 +1267,7 @@ function uploadFile() {
},
function (err, data) {
logger.log('uploadFile:', err || data);
- },
+ }
);
}
@@ -1295,7 +1295,7 @@ function sliceUploadFile() {
},
function (err, data) {
logger.log('sliceUploadFile:', err || data);
- },
+ }
);
}
@@ -1322,7 +1322,7 @@ function selectFileToUpload() {
},
function (err, data) {
logger.log('selectFileToUpload:', err || data);
- },
+ }
);
} else {
cos.putObject(
@@ -1343,7 +1343,7 @@ function selectFileToUpload() {
},
function (err, data) {
logger.log('selectFileToUpload:', err || data);
- },
+ }
);
}
});
@@ -1401,7 +1401,7 @@ function uploadFiles() {
},
function (err, data) {
logger.log('uploadFiles:', err || data);
- },
+ }
);
}
@@ -1432,7 +1432,7 @@ function sliceCopyFile() {
} else {
logger.log('sliceCopyFile:', data);
}
- },
+ }
);
}
@@ -1469,11 +1469,11 @@ function moveObject() {
},
function (err, data) {
logger.log(err || data);
- },
+ }
);
- },
+ }
);
- },
+ }
);
}
@@ -1491,7 +1491,7 @@ function uploadToFolder() {
},
function (err, data) {
logger.log(err || data);
- },
+ }
);
});
}
@@ -1507,7 +1507,7 @@ function createFolder() {
},
function (err, data) {
logger.log(err || data);
- },
+ }
);
}
@@ -1546,7 +1546,7 @@ function uploadFolder() {
},
function (err, data) {
logger.log('uploadFolder:', err || data);
- },
+ }
);
};
input.click();
@@ -1594,7 +1594,7 @@ function listFolder() {
},
function (err, data) {
logger.log('listFolder:', err || data);
- },
+ }
);
}
@@ -1639,7 +1639,7 @@ function deleteFolder() {
errorList.push(item);
});
afterDeleted();
- },
+ }
);
} else {
afterDeleted();
@@ -1656,7 +1656,7 @@ function deleteFolder() {
},
function (err, data) {
logger.log('deleteFolder:', err || data);
- },
+ }
);
}
@@ -1676,7 +1676,7 @@ function request() {
},
function (err, data) {
logger.log('request:', err || data);
- },
+ }
);
}
@@ -1792,11 +1792,11 @@ function request() {
} else {
html.push(
'' +
- name +
- (labelMap[name] ? ' (' + labelMap[name] + ')' : '') +
- '',
+ name +
+ '">' +
+ name +
+ (labelMap[name] ? ' (' + labelMap[name] + ')' : '') +
+ ''
);
}
});
diff --git a/dist/cos-js-sdk-v5.js b/dist/cos-js-sdk-v5.js
index 1a43ca5..c6621c5 100644
--- a/dist/cos-js-sdk-v5.js
+++ b/dist/cos-js-sdk-v5.js
@@ -2785,14 +2785,17 @@ var queryStringify = function queryStringify(obj, sep, eq, name) {
};
var xhrRes = function xhrRes(err, xhr, body) {
var headers = {};
- xhr.getAllResponseHeaders().trim().split('\n').forEach(function (item) {
- if (item) {
- var index = item.indexOf(':');
- var key = item.substr(0, index).trim().toLowerCase();
- var val = item.substr(index + 1).trim();
- headers[key] = val;
- }
- });
+ var strHeaders = xhr.getAllResponseHeaders();
+ if (strHeaders && strHeaders.length > 0) {
+ strHeaders.trim().split('\n').forEach(function (item) {
+ if (item) {
+ var index = item.indexOf(':');
+ var key = item.substr(0, index).trim().toLowerCase();
+ var val = item.substr(index + 1).trim();
+ headers[key] = val;
+ }
+ });
+ }
return {
error: err,
statusCode: xhr.status,
@@ -8684,7 +8687,7 @@ module.exports = function(module) {
/*! exports provided: name, version, description, main, types, scripts, repository, keywords, author, license, bugs, homepage, dependencies, devDependencies, default */
/***/ (function(module) {
-module.exports = JSON.parse("{\"name\":\"cos-js-sdk-v5\",\"version\":\"1.4.21\",\"description\":\"JavaScript SDK for [腾讯云对象存储](https://cloud.tencent.com/product/cos)\",\"main\":\"dist/cos-js-sdk-v5.js\",\"types\":\"index.d.ts\",\"scripts\":{\"prettier\":\"prettier --write src demo/demo.js test/test.js server/sts.js index.d.ts\",\"server\":\"node server/sts.js\",\"dev\":\"cross-env NODE_ENV=development webpack -w --mode=development\",\"build\":\"cross-env NODE_ENV=production webpack --mode=production\",\"cos-auth.min.js\":\"uglifyjs ./demo/common/cos-auth.js -o ./demo/common/cos-auth.min.js -c -m\",\"test\":\"jest --runInBand --coverage\"},\"repository\":{\"type\":\"git\",\"url\":\"git+https://github.com/tencentyun/cos-js-sdk-v5.git\"},\"keywords\":[],\"author\":\"carsonxu\",\"license\":\"ISC\",\"bugs\":{\"url\":\"https://github.com/tencentyun/cos-js-sdk-v5/issues\"},\"homepage\":\"https://github.com/tencentyun/cos-js-sdk-v5#readme\",\"dependencies\":{\"@xmldom/xmldom\":\"^0.8.6\"},\"devDependencies\":{\"@babel/core\":\"7.17.9\",\"@babel/plugin-transform-runtime\":\"7.18.10\",\"@babel/preset-env\":\"7.16.11\",\"babel-loader\":\"8.2.5\",\"body-parser\":\"^1.18.3\",\"cross-env\":\"^5.2.0\",\"express\":\"^4.16.4\",\"jest\":\"^29.3.1\",\"jest-environment-jsdom\":\"^29.3.1\",\"prettier\":\"^3.0.1\",\"qcloud-cos-sts\":\"^3.0.2\",\"request\":\"^2.87.0\",\"terser-webpack-plugin\":\"4.2.3\",\"uglifyjs\":\"^2.4.11\",\"webpack\":\"4.46.0\",\"webpack-cli\":\"4.10.0\"}}");
+module.exports = JSON.parse("{\"name\":\"cos-js-sdk-v5\",\"version\":\"1.4.21\",\"description\":\"JavaScript SDK for [腾讯云对象存储](https://cloud.tencent.com/product/cos)\",\"main\":\"dist/cos-js-sdk-v5.js\",\"types\":\"index.d.ts\",\"scripts\":{\"prettier\":\"prettier --write src demo/demo.js demo/CIDemos/*.js test/test.js server/sts.js index.d.ts\",\"server\":\"node server/sts.js\",\"dev\":\"cross-env NODE_ENV=development webpack -w --mode=development\",\"build\":\"cross-env NODE_ENV=production webpack --mode=production\",\"cos-auth.min.js\":\"uglifyjs ./demo/common/cos-auth.js -o ./demo/common/cos-auth.min.js -c -m\",\"test\":\"jest --runInBand --coverage\"},\"repository\":{\"type\":\"git\",\"url\":\"git+https://github.com/tencentyun/cos-js-sdk-v5.git\"},\"keywords\":[],\"author\":\"carsonxu\",\"license\":\"ISC\",\"bugs\":{\"url\":\"https://github.com/tencentyun/cos-js-sdk-v5/issues\"},\"homepage\":\"https://github.com/tencentyun/cos-js-sdk-v5#readme\",\"dependencies\":{\"@xmldom/xmldom\":\"^0.8.6\"},\"devDependencies\":{\"@babel/core\":\"7.17.9\",\"@babel/plugin-transform-runtime\":\"7.18.10\",\"@babel/preset-env\":\"7.16.11\",\"babel-loader\":\"8.2.5\",\"body-parser\":\"^1.18.3\",\"cross-env\":\"^5.2.0\",\"express\":\"^4.16.4\",\"jest\":\"^29.3.1\",\"jest-environment-jsdom\":\"^29.3.1\",\"prettier\":\"^3.0.1\",\"qcloud-cos-sts\":\"^3.0.2\",\"request\":\"^2.87.0\",\"terser-webpack-plugin\":\"4.2.3\",\"uglifyjs\":\"^2.4.11\",\"webpack\":\"4.46.0\",\"webpack-cli\":\"4.10.0\"}}");
/***/ }),
diff --git a/dist/cos-js-sdk-v5.min.js b/dist/cos-js-sdk-v5.min.js
index c3f2493..e57f149 100644
--- a/dist/cos-js-sdk-v5.min.js
+++ b/dist/cos-js-sdk-v5.min.js
@@ -1 +1 @@
-!function (e, t) { "object" == typeof exports && "object" == typeof module ? module.exports = t() : "function" == typeof define && define.amd ? define([], t) : "object" == typeof exports ? exports.COS = t() : e.COS = t() }(this, (function () { return function (e) { var t = {}; function r(n) { if (t[n]) return t[n].exports; var o = t[n] = { i: n, l: !1, exports: {} }; return e[n].call(o.exports, o, o.exports, r), o.l = !0, o.exports } return r.m = e, r.c = t, r.d = function (e, t, n) { r.o(e, t) || Object.defineProperty(e, t, { enumerable: !0, get: n }) }, r.r = function (e) { "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, { value: "Module" }), Object.defineProperty(e, "__esModule", { value: !0 }) }, r.t = function (e, t) { if (1 & t && (e = r(e)), 8 & t) return e; if (4 & t && "object" == typeof e && e && e.__esModule) return e; var n = Object.create(null); if (r.r(n), Object.defineProperty(n, "default", { enumerable: !0, value: e }), 2 & t && "string" != typeof e) for (var o in e) r.d(n, o, function (t) { return e[t] }.bind(null, o)); return n }, r.n = function (e) { var t = e && e.__esModule ? function () { return e.default } : function () { return e }; return r.d(t, "a", t), t }, r.o = function (e, t) { return Object.prototype.hasOwnProperty.call(e, t) }, r.p = "/dist/", r(r.s = 10) }([function (e, t) { function r(t) { return e.exports = r = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) { return typeof e } : function (e) { return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e }, e.exports.__esModule = !0, e.exports.default = e.exports, r(t) } e.exports = r, e.exports.__esModule = !0, e.exports.default = e.exports }, function (e, t, r) { "use strict"; (function (t) { var n = r(0), o = r(12), i = r(15), a = r(16), s = r(21), c = r(22), u = r(6); function l(e) { return encodeURIComponent(e).replace(/!/g, "%21").replace(/'/g, "%27").replace(/\(/g, "%28").replace(/\)/g, "%29").replace(/\*/g, "%2A") } function d(e, t) { var r = []; for (var n in e) e.hasOwnProperty(n) && r.push(t ? l(n).toLowerCase() : n); return r.sort((function (e, t) { return (e = e.toLowerCase()) === (t = t.toLowerCase()) ? 0 : e > t ? 1 : -1 })) } var p, f = ["cache-control", "content-disposition", "content-encoding", "content-length", "content-md5", "expect", "expires", "host", "if-match", "if-modified-since", "if-none-match", "if-unmodified-since", "origin", "range", "transfer-encoding"], h = function (e, t, r) { var n = t / 8, o = e.slice(r, r + n); return new Uint8Array(o).reverse(), new { 8: Uint8Array, 16: Uint16Array, 32: Uint32Array }[t](o)[0] }, g = function (e, t, r, n) { var o = e.slice(t, r), i = ""; return new Uint8Array(o).forEach((function (e) { i += String.fromCharCode(e) })), n && (i = decodeURIComponent(escape(i))), i }, m = function () { }, y = function (e) { var t = {}; for (var r in e) e.hasOwnProperty(r) && void 0 !== e[r] && null !== e[r] && (t[r] = e[r]); return t }, v = (p = function (e, t) { e = e.split("."), t = t.split("."); for (var r = 0; r < t.length; r++)if (e[r] !== t[r]) return parseInt(e[r]) > parseInt(t[r]) ? 1 : -1; return 0 }, function (e) { if (!e) return !1; var t = (e.match(/Chrome\/([.\d]+)/) || [])[1], r = (e.match(/QBCore\/([.\d]+)/) || [])[1], n = (e.match(/QQBrowser\/([.\d]+)/) || [])[1]; return t && p(t, "53.0.2785.116") < 0 && r && p(r, "3.53.991.400") < 0 && n && p(n, "9.0.2524.400") <= 0 || !1 }("undefined" != typeof navigator && navigator.userAgent)), b = 1048576; function C(e) { return T(e, (function (e) { return "object" === n(e) && null !== e ? C(e) : e })) } function k(e, t) { return w(t, (function (r, n) { e[n] = t[n] })), e } function S(e) { return e instanceof Array } function w(e, t) { for (var r in e) e.hasOwnProperty(r) && t(e[r], r) } function T(e, t) { var r = S(e) ? [] : {}; for (var n in e) e.hasOwnProperty(n) && (r[n] = t(e[n], n)); return r } var E = function (e, t) { var r = t.Bucket, n = t.Region, o = t.Key, i = this.options.Domain, a = !i || "string" == typeof i && i.indexOf("{Bucket}") > -1, s = !i || "string" == typeof i && i.indexOf("{Region}") > -1; if (e.indexOf("Bucket") > -1 || "deleteMultipleObject" === e || "multipartList" === e || "listObjectVersions" === e) { if (a && !r) return "Bucket"; if (s && !n) return "Region" } else if (e.indexOf("Object") > -1 || e.indexOf("multipart") > -1 || "sliceUploadFile" === e || "abortUploadTask" === e) { if (a && !r) return "Bucket"; if (s && !n) return "Region"; if (!o) return "Key" } return !1 }, R = function (e, t) { if (t = k({}, t), "getAuth" !== e && "getV4Auth" !== e && "getObjectUrl" !== e) { var r = t.Headers || {}; if (t && "object" === n(t)) { !function () { for (var e in t) t.hasOwnProperty(e) && e.indexOf("x-cos-") > -1 && (r[e] = t[e]) }(); I.each({ "x-cos-mfa": "MFA", "Content-MD5": "ContentMD5", "Content-Length": "ContentLength", "Content-Type": "ContentType", Expect: "Expect", Expires: "Expires", "Cache-Control": "CacheControl", "Content-Disposition": "ContentDisposition", "Content-Encoding": "ContentEncoding", Range: "Range", "If-Modified-Since": "IfModifiedSince", "If-Unmodified-Since": "IfUnmodifiedSince", "If-Match": "IfMatch", "If-None-Match": "IfNoneMatch", "x-cos-copy-source": "CopySource", "x-cos-copy-source-Range": "CopySourceRange", "x-cos-metadata-directive": "MetadataDirective", "x-cos-copy-source-If-Modified-Since": "CopySourceIfModifiedSince", "x-cos-copy-source-If-Unmodified-Since": "CopySourceIfUnmodifiedSince", "x-cos-copy-source-If-Match": "CopySourceIfMatch", "x-cos-copy-source-If-None-Match": "CopySourceIfNoneMatch", "x-cos-acl": "ACL", "x-cos-grant-read": "GrantRead", "x-cos-grant-write": "GrantWrite", "x-cos-grant-full-control": "GrantFullControl", "x-cos-grant-read-acp": "GrantReadAcp", "x-cos-grant-write-acp": "GrantWriteAcp", "x-cos-storage-class": "StorageClass", "x-cos-traffic-limit": "TrafficLimit", "x-cos-mime-limit": "MimeLimit", "x-cos-server-side-encryption-customer-algorithm": "SSECustomerAlgorithm", "x-cos-server-side-encryption-customer-key": "SSECustomerKey", "x-cos-server-side-encryption-customer-key-MD5": "SSECustomerKeyMD5", "x-cos-server-side-encryption": "ServerSideEncryption", "x-cos-server-side-encryption-cos-kms-key-id": "SSEKMSKeyId", "x-cos-server-side-encryption-context": "SSEContext", "Pic-Operations": "PicOperations" }, (function (e, n) { void 0 !== t[e] && (r[n] = t[e]) })), t.Headers = y(r) } } return t }, x = function (e) { return Date.now() + (e || 0) }, A = "object" === ("undefined" == typeof navigator ? "undefined" : n(navigator)) && !!navigator.userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), B = "object" === ("undefined" == typeof navigator ? "undefined" : n(navigator)) && /\sQQ/i.test(navigator.userAgent), I = { noop: m, formatParams: R, apiWrapper: function (e, t) { return function (r, n) { var o, i = this; if ("function" == typeof r && (n = r, r = {}), r = R(e, r), i.options.EnableTracker) if ("sliceUploadFile" === r.calledBySdk) o = r.tracker && r.tracker.generateSubTracker({ apiName: e }); else if (["uploadFile", "uploadFiles"].includes(e)) o = null; else { var a = -1; r.Body && (a = "string" == typeof r.Body ? r.Body.length : r.Body.size || r.Body.byteLength || -1), o = new u({ bucket: r.Bucket, region: r.Region, apiName: e, fileKey: r.Key, fileSize: a, deepTracker: i.options.DeepTracker, customId: i.options.CustomId, delay: i.options.TrackerDelay }) } r.tracker = o; var s = function (e) { return e && e.headers && (e.headers["x-cos-request-id"] && (e.RequestId = e.headers["x-cos-request-id"]), e.headers["x-ci-request-id"] && (e.RequestId = e.headers["x-ci-request-id"]), e.headers["x-cos-version-id"] && (e.VersionId = e.headers["x-cos-version-id"]), e.headers["x-cos-delete-marker"] && (e.DeleteMarker = e.headers["x-cos-delete-marker"])), e }, c = function (e, t) { o && o.formatResult(e, t), n && n(s(e), s(t)) }, l = function () { if ("getService" !== e && "abortUploadTask" !== e) { var t = E.call(i, e, r); if (t) return "missing param " + t; if (r.Region) { if (i.options.CompatibilityMode) { if (!/^([a-z\d-.]+)$/.test(r.Region)) return "Region format error." } else { if (r.Region.indexOf("cos.") > -1) return 'param Region should not be start with "cos."'; if (!/^([a-z\d-]+)$/.test(r.Region)) return "Region format error." } !i.options.CompatibilityMode && -1 === r.Region.indexOf("-") && "yfb" !== r.Region && "default" !== r.Region && r.Region } if (r.Bucket) { if (!/^([a-z\d-]+)-(\d+)$/.test(r.Bucket)) if (r.AppId) r.Bucket = r.Bucket + "-" + r.AppId; else { if (!i.options.AppId) return 'Bucket should format as "test-1250000000".'; r.Bucket = r.Bucket + "-" + i.options.AppId } r.AppId && delete r.AppId } !i.options.UseRawKey && r.Key && "/" === r.Key.substr(0, 1) && (r.Key = r.Key.substr(1)) } }(), d = ["getAuth", "getObjectUrl"].includes(e); if ("function" == typeof Promise && !d && !n) return new Promise((function (e, o) { if (n = function (t, r) { t ? o(t) : e(r) }, l) return c(I.error(new Error(l))); t.call(i, r, c) })); if (l) return c(I.error(new Error(l))); var p = t.call(i, r, c); return d ? p : void 0 } }, xml2json: a, json2xml: s, md5: o, clearKey: y, fileSlice: function (e, t, r, n, o) { var i; if (e.slice ? i = e.slice(t, r) : e.mozSlice ? i = e.mozSlice(t, r) : e.webkitSlice && (i = e.webkitSlice(t, r)), n && v) { var a = new FileReader; a.onload = function (e) { i = null, o(new Blob([a.result])) }, a.readAsArrayBuffer(i) } else o(i) }, getBodyMd5: function (e, t, r, n) { r = r || m, e ? "string" == typeof t ? r(I.md5(t, !0)) : Blob && t instanceof Blob ? I.getFileMd5(t, (function (e, t) { r(t) }), n) : r() : r() }, getFileMd5: function (e, t, r) { var n = e.size, i = 0, a = o.getCtx(); !function o(s) { if (s >= n) { var c = a.digest("hex"); t(null, c) } else { var u = Math.min(n, s + b); I.fileSlice(e, s, u, !1, (function (e) { !function (e, t) { var r, n = new FileReader; FileReader.prototype.readAsBinaryString ? (r = FileReader.prototype.readAsBinaryString, n.onload = function () { t(this.result) }) : FileReader.prototype.readAsArrayBuffer && (r = function (e) { var r = "", n = new FileReader; n.onload = function (e) { for (var o = new Uint8Array(n.result), i = o.byteLength, a = 0; a < i; a++)r += String.fromCharCode(o[a]); t(r) }, n.readAsArrayBuffer(e) }), r.call(n, e) }(e, (function (t) { e = null, a = a.update(t, !0), i += t.length, t = null, r && r({ loaded: i, total: n, percent: Math.round(i / n * 1e4) / 1e4 }), o(s + b) })) })) } }(0) }, b64: function (e) { var t, r, n, o = ""; for (t = 0, r = e.length / 2; t < r; t++)n = parseInt(e[2 * t] + e[2 * t + 1], 16), o += String.fromCharCode(n); return btoa(o) }, extend: k, isArray: S, isInArray: function (e, t) { for (var r = !1, n = 0; n < e.length; n++)if (t === e[n]) { r = !0; break } return r }, makeArray: function (e) { return S(e) ? e : [e] }, each: w, map: T, filter: function (e, t) { var r = S(e), n = r ? [] : {}; for (var o in e) e.hasOwnProperty(o) && t(e[o], o) && (r ? n.push(e[o]) : n[o] = e[o]); return n }, clone: C, attr: function (e, t, r) { return e && t in e ? e[t] : r }, uuid: function () { var e = function () { return (65536 * (1 + Math.random()) | 0).toString(16).substring(1) }; return e() + e() + "-" + e() + "-" + e() + "-" + e() + "-" + e() + e() + e() }, camSafeUrlEncode: l, throttleOnProgress: function (e, t) { var r, n, o = this, i = 0, a = 0, s = Date.now(); function c() { if (n = 0, t && "function" == typeof t) { r = Date.now(); var o, c = Math.max(0, Math.round((a - i) / ((r - s) / 1e3) * 100) / 100) || 0; o = 0 === a && 0 === e ? 1 : Math.floor(a / e * 100) / 100 || 0, s = r, i = a; try { t({ loaded: a, total: e, speed: c, percent: o }) } catch (e) { } } } return function (t, r) { if (t && (a = t.loaded, e = t.total), r) clearTimeout(n), c(); else { if (n) return; n = setTimeout(c, o.options.ProgressInterval) } } }, getFileSize: function (e, t, r) { var n; "string" == typeof t.Body ? t.Body = new Blob([t.Body], { type: "text/plain" }) : t.Body instanceof ArrayBuffer && (t.Body = new Blob([t.Body])), t.Body && (t.Body instanceof Blob || "[object File]" === t.Body.toString() || "[object Blob]" === t.Body.toString()) ? (n = t.Body.size, t.ContentLength = n, r(null, n)) : r(I.error(new Error("params body format error, Only allow File|Blob|String."))) }, getSkewTime: x, error: function (e, t) { var r = e; return e.message = e.message || null, "string" == typeof t ? (e.error = t, e.message = t) : "object" === n(t) && null !== t && (k(e, t), (t.code || t.name) && (e.code = t.code || t.name), t.message && (e.message = t.message), t.stack && (e.stack = t.stack)), "function" == typeof Object.defineProperty && (Object.defineProperty(e, "name", { writable: !0, enumerable: !1 }), Object.defineProperty(e, "message", { enumerable: !0 })), e.name = t && t.name || e.name || e.code || "Error", e.code || (e.code = e.name), e.error || (e.error = C(r)), e }, obj2str: function (e, t) { var r, n, o, i = [], a = d(e); for (r = 0; r < a.length; r++)o = void 0 === e[n = a[r]] || null === e[n] ? "" : "" + e[n], n = t ? l(n).toLowerCase() : l(n), o = l(o) || "", i.push(n + "=" + o); return i.join("&") }, getAuth: function (e) { var t, r = (e = e || {}).SecretId, n = e.SecretKey, o = e.KeyTime, a = (e.method || e.Method || "get").toLowerCase(), s = C(e.Query || e.params || {}), c = function (e) { var t = {}; for (var r in e) { var n = r.toLowerCase(); (n.indexOf("x-cos-") > -1 || f.indexOf(n) > -1) && (t[r] = e[r]) } return t }(C(e.Headers || e.headers || {})), u = e.Key || ""; e.UseRawKey ? t = e.Pathname || e.pathname || "/" + u : 0 !== (t = e.Pathname || e.pathname || u).indexOf("/") && (t = "/" + t); var l = !1 !== e.ForceSignHost; if (!c.Host && !c.host && e.Bucket && e.Region && l && (c.Host = e.Bucket + ".cos." + e.Region + ".myqcloud.com"), !r) throw new Error("missing param SecretId"); if (!n) throw new Error("missing param SecretKey"); var p = Math.round(x(e.SystemClockOffset) / 1e3) - 1, h = p, g = e.Expires || e.expires; h += void 0 === g ? 900 : 1 * g || 0; var m = r, y = o || p + ";" + h, v = o || p + ";" + h, b = d(c, !0).join(";").toLowerCase(), k = d(s, !0).join(";").toLowerCase(), S = i.HmacSHA1(v, n).toString(), w = [a, t, I.obj2str(s, !0), I.obj2str(c, !0), ""].join("\n"), T = ["sha1", y, i.SHA1(w).toString(), ""].join("\n"); return ["q-sign-algorithm=sha1", "q-ak=" + m, "q-sign-time=" + y, "q-key-time=" + v, "q-header-list=" + b, "q-url-param-list=" + k, "q-signature=" + i.HmacSHA1(T, S).toString()].join("&") }, parseSelectPayload: function (e) { for (var t = {}, r = g(e), n = { records: [] }; e.byteLength;) { var o, i = h(e, 32, 0), a = h(e, 32, 4), s = i - a - 16, c = 0; for (e = e.slice(12); c < a;) { var u = h(e, 8, c), l = g(e, c + 1, c + 1 + u), d = h(e, 16, c + u + 2), p = g(e, c + u + 4, c + u + 4 + d); t[l] = p, c += u + 4 + d } if ("Records" === t[":event-type"]) o = g(e, c, c + s, !0), n.records.push(o); else if ("Stats" === t[":event-type"]) o = g(e, c, c + s, !0), n.stats = I.xml2json(o).Stats; else if ("error" === t[":event-type"]) { var f = t[":error-code"], m = t[":error-message"], y = new Error(m); y.message = m, y.name = y.code = f, n.error = y } else["Progress", "Continuation", "End"].includes(t[":event-type"]); e = e.slice(c + s + 4) } return { payload: n.records.join(""), body: r } }, getSourceParams: function (e) { var t = this.options.CopySourceParser; if (t) return t(e); var r = e.match(/^([^.]+-\d+)\.cos(v6|-cdc|-cdz|-internal)?\.([^.]+)\.((myqcloud\.com)|(tencentcos\.cn))\/(.+)$/); return r ? { Bucket: r[1], Region: r[3], Key: r[7] } : null }, isBrowser: !0, isNode: function () { return "object" !== ("undefined" == typeof window ? "undefined" : n(window)) && "object" === (void 0 === t ? "undefined" : n(t)) && !("object" === ("undefined" == typeof globalThis ? "undefined" : n(globalThis)) && ("DedicatedWorkerGlobalScope" === globalThis.constructor.name || globalThis.FileReaderSync)) }, isCIHost: function (e) { return /^https?:\/\/([^/]+\.)?ci\.[^/]+/.test(e) }, isIOS_QQ: A && B, encodeBase64: function (e, t) { var r = c.encode(e); return t && (r = r.replaceAll("+", "-").replaceAll("/", "_").replaceAll("=", "")), r } }; e.exports = I }).call(this, r(3)) }, function (e, t, r) { "use strict"; function n(e, t) { return void 0 === t && (t = Object), t && "function" == typeof t.freeze ? t.freeze(e) : e } var o = n({ HTML: "text/html", isHTML: function (e) { return e === o.HTML }, XML_APPLICATION: "application/xml", XML_TEXT: "text/xml", XML_XHTML_APPLICATION: "application/xhtml+xml", XML_SVG_IMAGE: "image/svg+xml" }), i = n({ HTML: "http://www.w3.org/1999/xhtml", isHTML: function (e) { return e === i.HTML }, SVG: "http://www.w3.org/2000/svg", XML: "http://www.w3.org/XML/1998/namespace", XMLNS: "http://www.w3.org/2000/xmlns/" }); t.assign = function (e, t) { if (null === e || "object" != typeof e) throw new TypeError("target is not an object"); for (var r in t) Object.prototype.hasOwnProperty.call(t, r) && (e[r] = t[r]); return e }, t.find = function (e, t, r) { if (void 0 === r && (r = Array.prototype), e && "function" == typeof r.find) return r.find.call(e, t); for (var n = 0; n < e.length; n++)if (Object.prototype.hasOwnProperty.call(e, n)) { var o = e[n]; if (t.call(void 0, o, n, e)) return o } }, t.freeze = n, t.MIME_TYPE = o, t.NAMESPACE = i }, function (e, t) { var r, n, o = e.exports = {}; function i() { throw new Error("setTimeout has not been defined") } function a() { throw new Error("clearTimeout has not been defined") } function s(e) { if (r === setTimeout) return setTimeout(e, 0); if ((r === i || !r) && setTimeout) return r = setTimeout, setTimeout(e, 0); try { return r(e, 0) } catch (t) { try { return r.call(null, e, 0) } catch (t) { return r.call(this, e, 0) } } } !function () { try { r = "function" == typeof setTimeout ? setTimeout : i } catch (e) { r = i } try { n = "function" == typeof clearTimeout ? clearTimeout : a } catch (e) { n = a } }(); var c, u = [], l = !1, d = -1; function p() { l && c && (l = !1, c.length ? u = c.concat(u) : d = -1, u.length && f()) } function f() { if (!l) { var e = s(p); l = !0; for (var t = u.length; t;) { for (c = u, u = []; ++d < t;)c && c[d].run(); d = -1, t = u.length } c = null, l = !1, function (e) { if (n === clearTimeout) return clearTimeout(e); if ((n === a || !n) && clearTimeout) return n = clearTimeout, clearTimeout(e); try { return n(e) } catch (t) { try { return n.call(null, e) } catch (t) { return n.call(this, e) } } }(e) } } function h(e, t) { this.fun = e, this.array = t } function g() { } o.nextTick = function (e) { var t = new Array(arguments.length - 1); if (arguments.length > 1) for (var r = 1; r < arguments.length; r++)t[r - 1] = arguments[r]; u.push(new h(e, t)), 1 !== u.length || l || s(f) }, h.prototype.run = function () { this.fun.apply(null, this.array) }, o.title = "browser", o.browser = !0, o.env = {}, o.argv = [], o.version = "", o.versions = {}, o.on = g, o.addListener = g, o.once = g, o.off = g, o.removeListener = g, o.removeAllListeners = g, o.emit = g, o.prependListener = g, o.prependOnceListener = g, o.listeners = function (e) { return [] }, o.binding = function (e) { throw new Error("process.binding is not supported") }, o.cwd = function () { return "/" }, o.chdir = function (e) { throw new Error("process.chdir is not supported") }, o.umask = function () { return 0 } }, function (e, t) { e.exports = function (e) { return e.webpackPolyfill || (e.deprecate = function () { }, e.paths = [], e.children || (e.children = []), Object.defineProperty(e, "loaded", { enumerable: !0, get: function () { return e.l } }), Object.defineProperty(e, "id", { enumerable: !0, get: function () { return e.i } }), e.webpackPolyfill = 1), e } }, function (e, t, r) { var n = r(2), o = n.find, i = n.NAMESPACE; function a(e) { return "" !== e } function s(e, t) { return e.hasOwnProperty(t) || (e[t] = !0), e } function c(e) { if (!e) return []; var t = function (e) { return e ? e.split(/[\t\n\f\r ]+/).filter(a) : [] }(e); return Object.keys(t.reduce(s, {})) } function u(e, t) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) } function l(e, t) { var r = e.prototype; if (!(r instanceof t)) { function n() { } n.prototype = t.prototype, u(r, n = new n), e.prototype = r = n } r.constructor != e && (r.constructor = e) } var d = {}, p = d.ELEMENT_NODE = 1, f = d.ATTRIBUTE_NODE = 2, h = d.TEXT_NODE = 3, g = d.CDATA_SECTION_NODE = 4, m = d.ENTITY_REFERENCE_NODE = 5, y = d.ENTITY_NODE = 6, v = d.PROCESSING_INSTRUCTION_NODE = 7, b = d.COMMENT_NODE = 8, C = d.DOCUMENT_NODE = 9, k = d.DOCUMENT_TYPE_NODE = 10, S = d.DOCUMENT_FRAGMENT_NODE = 11, w = d.NOTATION_NODE = 12, T = {}, E = {}, R = (T.INDEX_SIZE_ERR = (E[1] = "Index size error", 1), T.DOMSTRING_SIZE_ERR = (E[2] = "DOMString size error", 2), T.HIERARCHY_REQUEST_ERR = (E[3] = "Hierarchy request error", 3)), x = (T.WRONG_DOCUMENT_ERR = (E[4] = "Wrong document", 4), T.INVALID_CHARACTER_ERR = (E[5] = "Invalid character", 5), T.NO_DATA_ALLOWED_ERR = (E[6] = "No data allowed", 6), T.NO_MODIFICATION_ALLOWED_ERR = (E[7] = "No modification allowed", 7), T.NOT_FOUND_ERR = (E[8] = "Not found", 8)), A = (T.NOT_SUPPORTED_ERR = (E[9] = "Not supported", 9), T.INUSE_ATTRIBUTE_ERR = (E[10] = "Attribute in use", 10)); T.INVALID_STATE_ERR = (E[11] = "Invalid state", 11), T.SYNTAX_ERR = (E[12] = "Syntax error", 12), T.INVALID_MODIFICATION_ERR = (E[13] = "Invalid modification", 13), T.NAMESPACE_ERR = (E[14] = "Invalid namespace", 14), T.INVALID_ACCESS_ERR = (E[15] = "Invalid access", 15); function B(e, t) { if (t instanceof Error) var r = t; else r = this, Error.call(this, E[e]), this.message = E[e], Error.captureStackTrace && Error.captureStackTrace(this, B); return r.code = e, t && (this.message = this.message + ": " + t), r } function I() { } function D(e, t) { this._node = e, this._refresh = t, O(this) } function O(e) { var t = e._node._inc || e._node.ownerDocument._inc; if (e._inc !== t) { var r = e._refresh(e._node); if (be(e, "length", r.length), !e.$$length || r.length < e.$$length) for (var n = r.length; n in e; n++)Object.prototype.hasOwnProperty.call(e, n) && delete e[n]; u(r, e), e._inc = t } } function _() { } function N(e, t) { for (var r = e.length; r--;)if (e[r] === t) return r } function P(e, t, r, n) { if (n ? t[N(t, n)] = r : t[t.length++] = r, e) { r.ownerElement = e; var o = e.ownerDocument; o && (n && F(o, e, n), function (e, t, r) { e && e._inc++; var n = r.namespaceURI; n === i.XMLNS && (t._nsMap[r.prefix ? r.localName : ""] = r.value) }(o, e, r)) } } function U(e, t, r) { var n = N(t, r); if (!(n >= 0)) throw new B(x, new Error(e.tagName + "@" + r)); for (var o = t.length - 1; n < o;)t[n] = t[++n]; if (t.length = o, e) { var i = e.ownerDocument; i && (F(i, e, r), r.ownerElement = null) } } function L() { } function q() { } function M(e) { return ("<" == e ? "<" : ">" == e && ">") || "&" == e && "&" || '"' == e && """ || "" + e.charCodeAt() + ";" } function H(e, t) { if (t(e)) return !0; if (e = e.firstChild) do { if (H(e, t)) return !0 } while (e = e.nextSibling) } function j() { this.ownerDocument = this } function F(e, t, r, n) { e && e._inc++, r.namespaceURI === i.XMLNS && delete t._nsMap[r.prefix ? r.localName : ""] } function K(e, t, r) { if (e && e._inc) { e._inc++; var n = t.childNodes; if (r) n[n.length++] = r; else { for (var o = t.firstChild, i = 0; o;)n[i++] = o, o = o.nextSibling; n.length = i, delete n[n.length] } } } function z(e, t) { var r = t.previousSibling, n = t.nextSibling; return r ? r.nextSibling = n : e.firstChild = n, n ? n.previousSibling = r : e.lastChild = r, t.parentNode = null, t.previousSibling = null, t.nextSibling = null, K(e.ownerDocument, e), t } function V(e) { return e && e.nodeType === q.DOCUMENT_TYPE_NODE } function G(e) { return e && e.nodeType === q.ELEMENT_NODE } function X(e) { return e && e.nodeType === q.TEXT_NODE } function W(e, t) { var r = e.childNodes || []; if (o(r, G) || V(t)) return !1; var n = o(r, V); return !(t && n && r.indexOf(n) > r.indexOf(t)) } function Q(e, t) { var r = e.childNodes || []; if (o(r, (function (e) { return G(e) && e !== t }))) return !1; var n = o(r, V); return !(t && n && r.indexOf(n) > r.indexOf(t)) } function J(e, t, r) { if (!function (e) { return e && (e.nodeType === q.DOCUMENT_NODE || e.nodeType === q.DOCUMENT_FRAGMENT_NODE || e.nodeType === q.ELEMENT_NODE) }(e)) throw new B(R, "Unexpected parent node type " + e.nodeType); if (r && r.parentNode !== e) throw new B(x, "child not in parent"); if (!function (e) { return e && (G(e) || X(e) || V(e) || e.nodeType === q.DOCUMENT_FRAGMENT_NODE || e.nodeType === q.COMMENT_NODE || e.nodeType === q.PROCESSING_INSTRUCTION_NODE) }(t) || V(t) && e.nodeType !== q.DOCUMENT_NODE) throw new B(R, "Unexpected node type " + t.nodeType + " for parent node type " + e.nodeType) } function $(e, t, r) { var n = e.childNodes || [], i = t.childNodes || []; if (t.nodeType === q.DOCUMENT_FRAGMENT_NODE) { var a = i.filter(G); if (a.length > 1 || o(i, X)) throw new B(R, "More than one element or text in fragment"); if (1 === a.length && !W(e, r)) throw new B(R, "Element in fragment can not be inserted before doctype") } if (G(t) && !W(e, r)) throw new B(R, "Only one element can be added and only after doctype"); if (V(t)) { if (o(n, V)) throw new B(R, "Only one doctype is allowed"); var s = o(n, G); if (r && n.indexOf(s) < n.indexOf(r)) throw new B(R, "Doctype can only be inserted before an element"); if (!r && s) throw new B(R, "Doctype can not be appended since element is present") } } function Y(e, t, r) { var n = e.childNodes || [], i = t.childNodes || []; if (t.nodeType === q.DOCUMENT_FRAGMENT_NODE) { var a = i.filter(G); if (a.length > 1 || o(i, X)) throw new B(R, "More than one element or text in fragment"); if (1 === a.length && !Q(e, r)) throw new B(R, "Element in fragment can not be inserted before doctype") } if (G(t) && !Q(e, r)) throw new B(R, "Only one element can be added and only after doctype"); if (V(t)) { if (o(n, (function (e) { return V(e) && e !== r }))) throw new B(R, "Only one doctype is allowed"); var s = o(n, G); if (r && n.indexOf(s) < n.indexOf(r)) throw new B(R, "Doctype can only be inserted before an element") } } function Z(e, t, r, n) { J(e, t, r), e.nodeType === q.DOCUMENT_NODE && (n || $)(e, t, r); var o = t.parentNode; if (o && o.removeChild(t), t.nodeType === S) { var i = t.firstChild; if (null == i) return t; var a = t.lastChild } else i = a = t; var s = r ? r.previousSibling : e.lastChild; i.previousSibling = s, a.nextSibling = r, s ? s.nextSibling = i : e.firstChild = i, null == r ? e.lastChild = a : r.previousSibling = a; do { i.parentNode = e } while (i !== a && (i = i.nextSibling)); return K(e.ownerDocument || e, e), t.nodeType == S && (t.firstChild = t.lastChild = null), t } function ee() { this._nsMap = {} } function te() { } function re() { } function ne() { } function oe() { } function ie() { } function ae() { } function se() { } function ce() { } function ue() { } function le() { } function de() { } function pe() { } function fe(e, t) { var r = [], n = 9 == this.nodeType && this.documentElement || this, o = n.prefix, i = n.namespaceURI; if (i && null == o && null == (o = n.lookupPrefix(i))) var a = [{ namespace: i, prefix: null }]; return me(this, r, e, t, a), r.join("") } function he(e, t, r) { var n = e.prefix || "", o = e.namespaceURI; if (!o) return !1; if ("xml" === n && o === i.XML || o === i.XMLNS) return !1; for (var a = r.length; a--;) { var s = r[a]; if (s.prefix === n) return s.namespace !== o } return !0 } function ge(e, t, r) { e.push(" ", t, '="', r.replace(/[<>&"\t\n\r]/g, M), '"') } function me(e, t, r, n, o) { if (o || (o = []), n) { if (!(e = n(e))) return; if ("string" == typeof e) return void t.push(e) } switch (e.nodeType) { case p: var a = e.attributes, s = a.length, c = e.firstChild, u = e.tagName, l = u; if (!(r = i.isHTML(e.namespaceURI) || r) && !e.prefix && e.namespaceURI) { for (var d, y = 0; y < a.length; y++)if ("xmlns" === a.item(y).name) { d = a.item(y).value; break } if (!d) for (var w = o.length - 1; w >= 0; w--) { if ("" === (T = o[w]).prefix && T.namespace === e.namespaceURI) { d = T.namespace; break } } if (d !== e.namespaceURI) for (w = o.length - 1; w >= 0; w--) { var T; if ((T = o[w]).namespace === e.namespaceURI) { T.prefix && (l = T.prefix + ":" + u); break } } } t.push("<", l); for (var E = 0; E < s; E++) { "xmlns" == (R = a.item(E)).prefix ? o.push({ prefix: R.localName, namespace: R.value }) : "xmlns" == R.nodeName && o.push({ prefix: "", namespace: R.value }) } for (E = 0; E < s; E++) { var R, x, A; if (he(R = a.item(E), 0, o)) ge(t, (x = R.prefix || "") ? "xmlns:" + x : "xmlns", A = R.namespaceURI), o.push({ prefix: x, namespace: A }); me(R, t, r, n, o) } if (u === l && he(e, 0, o)) ge(t, (x = e.prefix || "") ? "xmlns:" + x : "xmlns", A = e.namespaceURI), o.push({ prefix: x, namespace: A }); if (c || r && !/^(?:meta|link|img|br|hr|input)$/i.test(u)) { if (t.push(">"), r && /^script$/i.test(u)) for (; c;)c.data ? t.push(c.data) : me(c, t, r, n, o.slice()), c = c.nextSibling; else for (; c;)me(c, t, r, n, o.slice()), c = c.nextSibling; t.push("", l, ">") } else t.push("/>"); return; case C: case S: for (c = e.firstChild; c;)me(c, t, r, n, o.slice()), c = c.nextSibling; return; case f: return ge(t, e.name, e.value); case h: return t.push(e.data.replace(/[<&>]/g, M)); case g: return t.push(""); case b: return t.push("\x3c!--", e.data, "--\x3e"); case k: var B = e.publicId, I = e.systemId; if (t.push(""); else if (I && "." != I) t.push(" SYSTEM ", I, ">"); else { var D = e.internalSubset; D && t.push(" [", D, "]"), t.push(">") } return; case v: return t.push("", e.target, " ", e.data, "?>"); case m: return t.push("&", e.nodeName, ";"); default: t.push("??", e.nodeName) } } function ye(e, t, r) { var n; switch (t.nodeType) { case p: (n = t.cloneNode(!1)).ownerDocument = e; case S: break; case f: r = !0 }if (n || (n = t.cloneNode(!1)), n.ownerDocument = e, n.parentNode = null, r) for (var o = t.firstChild; o;)n.appendChild(ye(e, o, r)), o = o.nextSibling; return n } function ve(e, t, r) { var n = new t.constructor; for (var o in t) if (Object.prototype.hasOwnProperty.call(t, o)) { var i = t[o]; "object" != typeof i && i != n[o] && (n[o] = i) } switch (t.childNodes && (n.childNodes = new I), n.ownerDocument = e, n.nodeType) { case p: var a = t.attributes, s = n.attributes = new _, c = a.length; s._ownerElement = n; for (var u = 0; u < c; u++)n.setAttributeNode(ve(e, a.item(u), !0)); break; case f: r = !0 }if (r) for (var l = t.firstChild; l;)n.appendChild(ve(e, l, r)), l = l.nextSibling; return n } function be(e, t, r) { e[t] = r } B.prototype = Error.prototype, u(T, B), I.prototype = { length: 0, item: function (e) { return e >= 0 && e < this.length ? this[e] : null }, toString: function (e, t) { for (var r = [], n = 0; n < this.length; n++)me(this[n], r, e, t); return r.join("") }, filter: function (e) { return Array.prototype.filter.call(this, e) }, indexOf: function (e) { return Array.prototype.indexOf.call(this, e) } }, D.prototype.item = function (e) { return O(this), this[e] || null }, l(D, I), _.prototype = { length: 0, item: I.prototype.item, getNamedItem: function (e) { for (var t = this.length; t--;) { var r = this[t]; if (r.nodeName == e) return r } }, setNamedItem: function (e) { var t = e.ownerElement; if (t && t != this._ownerElement) throw new B(A); var r = this.getNamedItem(e.nodeName); return P(this._ownerElement, this, e, r), r }, setNamedItemNS: function (e) { var t, r = e.ownerElement; if (r && r != this._ownerElement) throw new B(A); return t = this.getNamedItemNS(e.namespaceURI, e.localName), P(this._ownerElement, this, e, t), t }, removeNamedItem: function (e) { var t = this.getNamedItem(e); return U(this._ownerElement, this, t), t }, removeNamedItemNS: function (e, t) { var r = this.getNamedItemNS(e, t); return U(this._ownerElement, this, r), r }, getNamedItemNS: function (e, t) { for (var r = this.length; r--;) { var n = this[r]; if (n.localName == t && n.namespaceURI == e) return n } return null } }, L.prototype = { hasFeature: function (e, t) { return !0 }, createDocument: function (e, t, r) { var n = new j; if (n.implementation = this, n.childNodes = new I, n.doctype = r || null, r && n.appendChild(r), t) { var o = n.createElementNS(e, t); n.appendChild(o) } return n }, createDocumentType: function (e, t, r) { var n = new ae; return n.name = e, n.nodeName = e, n.publicId = t || "", n.systemId = r || "", n } }, q.prototype = { firstChild: null, lastChild: null, previousSibling: null, nextSibling: null, attributes: null, parentNode: null, childNodes: null, ownerDocument: null, nodeValue: null, namespaceURI: null, prefix: null, localName: null, insertBefore: function (e, t) { return Z(this, e, t) }, replaceChild: function (e, t) { Z(this, e, t, Y), t && this.removeChild(t) }, removeChild: function (e) { return z(this, e) }, appendChild: function (e) { return this.insertBefore(e, null) }, hasChildNodes: function () { return null != this.firstChild }, cloneNode: function (e) { return ve(this.ownerDocument || this, this, e) }, normalize: function () { for (var e = this.firstChild; e;) { var t = e.nextSibling; t && t.nodeType == h && e.nodeType == h ? (this.removeChild(t), e.appendData(t.data)) : (e.normalize(), e = t) } }, isSupported: function (e, t) { return this.ownerDocument.implementation.hasFeature(e, t) }, hasAttributes: function () { return this.attributes.length > 0 }, lookupPrefix: function (e) { for (var t = this; t;) { var r = t._nsMap; if (r) for (var n in r) if (Object.prototype.hasOwnProperty.call(r, n) && r[n] === e) return n; t = t.nodeType == f ? t.ownerDocument : t.parentNode } return null }, lookupNamespaceURI: function (e) { for (var t = this; t;) { var r = t._nsMap; if (r && Object.prototype.hasOwnProperty.call(r, e)) return r[e]; t = t.nodeType == f ? t.ownerDocument : t.parentNode } return null }, isDefaultNamespace: function (e) { return null == this.lookupPrefix(e) } }, u(d, q), u(d, q.prototype), j.prototype = { nodeName: "#document", nodeType: C, doctype: null, documentElement: null, _inc: 1, insertBefore: function (e, t) { if (e.nodeType == S) { for (var r = e.firstChild; r;) { var n = r.nextSibling; this.insertBefore(r, t), r = n } return e } return Z(this, e, t), e.ownerDocument = this, null === this.documentElement && e.nodeType === p && (this.documentElement = e), e }, removeChild: function (e) { return this.documentElement == e && (this.documentElement = null), z(this, e) }, replaceChild: function (e, t) { Z(this, e, t, Y), e.ownerDocument = this, t && this.removeChild(t), G(e) && (this.documentElement = e) }, importNode: function (e, t) { return ye(this, e, t) }, getElementById: function (e) { var t = null; return H(this.documentElement, (function (r) { if (r.nodeType == p && r.getAttribute("id") == e) return t = r, !0 })), t }, getElementsByClassName: function (e) { var t = c(e); return new D(this, (function (r) { var n = []; return t.length > 0 && H(r.documentElement, (function (o) { if (o !== r && o.nodeType === p) { var i = o.getAttribute("class"); if (i) { var a = e === i; if (!a) { var s = c(i); a = t.every((u = s, function (e) { return u && -1 !== u.indexOf(e) })) } a && n.push(o) } } var u })), n })) }, createElement: function (e) { var t = new ee; return t.ownerDocument = this, t.nodeName = e, t.tagName = e, t.localName = e, t.childNodes = new I, (t.attributes = new _)._ownerElement = t, t }, createDocumentFragment: function () { var e = new le; return e.ownerDocument = this, e.childNodes = new I, e }, createTextNode: function (e) { var t = new ne; return t.ownerDocument = this, t.appendData(e), t }, createComment: function (e) { var t = new oe; return t.ownerDocument = this, t.appendData(e), t }, createCDATASection: function (e) { var t = new ie; return t.ownerDocument = this, t.appendData(e), t }, createProcessingInstruction: function (e, t) { var r = new de; return r.ownerDocument = this, r.tagName = r.nodeName = r.target = e, r.nodeValue = r.data = t, r }, createAttribute: function (e) { var t = new te; return t.ownerDocument = this, t.name = e, t.nodeName = e, t.localName = e, t.specified = !0, t }, createEntityReference: function (e) { var t = new ue; return t.ownerDocument = this, t.nodeName = e, t }, createElementNS: function (e, t) { var r = new ee, n = t.split(":"), o = r.attributes = new _; return r.childNodes = new I, r.ownerDocument = this, r.nodeName = t, r.tagName = t, r.namespaceURI = e, 2 == n.length ? (r.prefix = n[0], r.localName = n[1]) : r.localName = t, o._ownerElement = r, r }, createAttributeNS: function (e, t) { var r = new te, n = t.split(":"); return r.ownerDocument = this, r.nodeName = t, r.name = t, r.namespaceURI = e, r.specified = !0, 2 == n.length ? (r.prefix = n[0], r.localName = n[1]) : r.localName = t, r } }, l(j, q), ee.prototype = { nodeType: p, hasAttribute: function (e) { return null != this.getAttributeNode(e) }, getAttribute: function (e) { var t = this.getAttributeNode(e); return t && t.value || "" }, getAttributeNode: function (e) { return this.attributes.getNamedItem(e) }, setAttribute: function (e, t) { var r = this.ownerDocument.createAttribute(e); r.value = r.nodeValue = "" + t, this.setAttributeNode(r) }, removeAttribute: function (e) { var t = this.getAttributeNode(e); t && this.removeAttributeNode(t) }, appendChild: function (e) { return e.nodeType === S ? this.insertBefore(e, null) : function (e, t) { return t.parentNode && t.parentNode.removeChild(t), t.parentNode = e, t.previousSibling = e.lastChild, t.nextSibling = null, t.previousSibling ? t.previousSibling.nextSibling = t : e.firstChild = t, e.lastChild = t, K(e.ownerDocument, e, t), t }(this, e) }, setAttributeNode: function (e) { return this.attributes.setNamedItem(e) }, setAttributeNodeNS: function (e) { return this.attributes.setNamedItemNS(e) }, removeAttributeNode: function (e) { return this.attributes.removeNamedItem(e.nodeName) }, removeAttributeNS: function (e, t) { var r = this.getAttributeNodeNS(e, t); r && this.removeAttributeNode(r) }, hasAttributeNS: function (e, t) { return null != this.getAttributeNodeNS(e, t) }, getAttributeNS: function (e, t) { var r = this.getAttributeNodeNS(e, t); return r && r.value || "" }, setAttributeNS: function (e, t, r) { var n = this.ownerDocument.createAttributeNS(e, t); n.value = n.nodeValue = "" + r, this.setAttributeNode(n) }, getAttributeNodeNS: function (e, t) { return this.attributes.getNamedItemNS(e, t) }, getElementsByTagName: function (e) { return new D(this, (function (t) { var r = []; return H(t, (function (n) { n === t || n.nodeType != p || "*" !== e && n.tagName != e || r.push(n) })), r })) }, getElementsByTagNameNS: function (e, t) { return new D(this, (function (r) { var n = []; return H(r, (function (o) { o === r || o.nodeType !== p || "*" !== e && o.namespaceURI !== e || "*" !== t && o.localName != t || n.push(o) })), n })) } }, j.prototype.getElementsByTagName = ee.prototype.getElementsByTagName, j.prototype.getElementsByTagNameNS = ee.prototype.getElementsByTagNameNS, l(ee, q), te.prototype.nodeType = f, l(te, q), re.prototype = { data: "", substringData: function (e, t) { return this.data.substring(e, e + t) }, appendData: function (e) { e = this.data + e, this.nodeValue = this.data = e, this.length = e.length }, insertData: function (e, t) { this.replaceData(e, 0, t) }, appendChild: function (e) { throw new Error(E[R]) }, deleteData: function (e, t) { this.replaceData(e, t, "") }, replaceData: function (e, t, r) { r = this.data.substring(0, e) + r + this.data.substring(e + t), this.nodeValue = this.data = r, this.length = r.length } }, l(re, q), ne.prototype = { nodeName: "#text", nodeType: h, splitText: function (e) { var t = this.data, r = t.substring(e); t = t.substring(0, e), this.data = this.nodeValue = t, this.length = t.length; var n = this.ownerDocument.createTextNode(r); return this.parentNode && this.parentNode.insertBefore(n, this.nextSibling), n } }, l(ne, re), oe.prototype = { nodeName: "#comment", nodeType: b }, l(oe, re), ie.prototype = { nodeName: "#cdata-section", nodeType: g }, l(ie, re), ae.prototype.nodeType = k, l(ae, q), se.prototype.nodeType = w, l(se, q), ce.prototype.nodeType = y, l(ce, q), ue.prototype.nodeType = m, l(ue, q), le.prototype.nodeName = "#document-fragment", le.prototype.nodeType = S, l(le, q), de.prototype.nodeType = v, l(de, q), pe.prototype.serializeToString = function (e, t, r) { return fe.call(e, t, r) }, q.prototype.toString = fe; try { if (Object.defineProperty) { function Ce(e) { switch (e.nodeType) { case p: case S: var t = []; for (e = e.firstChild; e;)7 !== e.nodeType && 8 !== e.nodeType && t.push(Ce(e)), e = e.nextSibling; return t.join(""); default: return e.nodeValue } } Object.defineProperty(D.prototype, "length", { get: function () { return O(this), this.$$length } }), Object.defineProperty(q.prototype, "textContent", { get: function () { return Ce(this) }, set: function (e) { switch (this.nodeType) { case p: case S: for (; this.firstChild;)this.removeChild(this.firstChild); (e || String(e)) && this.appendChild(this.ownerDocument.createTextNode(e)); break; default: this.data = e, this.value = e, this.nodeValue = e } } }), be = function (e, t, r) { e["$$" + t] = r } } } catch (ke) { } t.DocumentType = ae, t.DOMException = B, t.DOMImplementation = L, t.Element = ee, t.Node = q, t.NodeList = I, t.XMLSerializer = pe }, function (e, t, r) { var n = r(23), o = r(24), i = r(0), a = r(7), s = null, c = function (e) { if (!s) { var t = r(27); s = new t({ appkey: "0AND0VEVB24UBGDU", versionCode: a.version, channelID: "js_sdk", openid: "openid", unionid: "unid", strictMode: !1, delay: e, sessionDuration: 6e4 }) } return s }, u = function () { var e = function () { return (65536 * (1 + Math.random()) | 0).toString(16).substring(1) }; return e() + e() + "-" + e() + "-" + e() + "-" + e() + "-" + e() + e() + e() }, l = function () { if ("object" === ("undefined" == typeof navigator ? "undefined" : i(navigator))) { var e = navigator.connection || navigator.mozConnection || navigator.webkitConnection; return (null == e ? void 0 : e.type) || (null == e ? void 0 : e.effectiveType) || "unknown" } return "unknown" }, d = function () { if ("object" !== ("undefined" == typeof navigator ? "undefined" : i(navigator))) return "unknown os"; var e = navigator.userAgent.toLowerCase(), t = /macintosh|mac os x/i.test(navigator.userAgent); return e.indexOf("win32") >= 0 || e.indexOf("wow32") >= 0 ? "win32" : e.indexOf("win64") >= 0 || e.indexOf("wow64") >= 0 ? "win64" : t ? "mac" : "unknown os" }, p = function () { return !("object" !== ("undefined" == typeof navigator ? "undefined" : i(navigator)) || !navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i)) }, f = function () { return !("object" !== ("undefined" == typeof navigator ? "undefined" : i(navigator)) || !navigator.userAgent.match(/(Android|Adr|Linux)/i)) }, h = function () { return !("object" !== ("undefined" == typeof navigator ? "undefined" : i(navigator)) || !navigator.userAgent.match(/(iPhone|iPod|iPad|iOS)/i)) }, g = function () { if ("object" !== ("undefined" == typeof navigator ? "undefined" : i(navigator))) return "unknown device"; var e = navigator.userAgent.toLowerCase(); if (e.includes("app/tencent_wemeet")) return "tencent_wemeet"; if (e.indexOf("maxthon") >= 0) { var t = e.match(/maxthon\/([\d.]+)/), r = t && t[1] || ""; return "傲游浏览器 ".concat(r).trim() } if (e.indexOf("qqbrowser") >= 0) { var n = e.match(/qqbrowser\/([\d.]+)/), o = n && n[1] || ""; return "QQ浏览器 ".concat(o).trim() } if (e.indexOf("se 2.x") >= 0) return "搜狗浏览器"; if (e.indexOf("wxwork") >= 0) return "微信内置浏览器"; if (e.indexOf("msie") >= 0) { var a = e.match(/msie ([\d.]+)/), s = a && a[1] || ""; return "IE ".concat(s).trim() } if (e.indexOf("firefox") >= 0) { var c = e.match(/firefox\/([\d.]+)/), u = c && c[1] || ""; return "Firefox ".concat(u).trim() } if (e.indexOf("chrome") >= 0) { var l = e.match(/chrome\/([\d.]+)/), d = l && l[1] || ""; return "Chrome ".concat(d).trim() } if (e.indexOf("opera") >= 0) { var p = e.match(/opera.([\d.]+)/), f = p && p[1] || ""; return "Opera ".concat(f).trim() } if (e.indexOf("safari") >= 0) { var h = e.match(/version\/([\d.]+)/), g = h && h[1] || ""; return "Safari ".concat(g).trim() } if (e.indexOf("edge") >= 0) { var m = e.match(/edge\/([\d.]+)/), y = m && m[1] || ""; return "edge ".concat(y).trim() } return e.substr(0, 200) }, m = { isMobile: p(), isBrowser: !p(), mobileOsType: f() ? "android" : h ? "ios" : "other_mobile", pcOsType: d() }, y = { deviceType: m.isMobile ? "mobile" : m.isBrowser ? "browser" : "unknown", devicePlatform: m.isMobile ? m.mobileOsType : m.pcOsType, deviceName: g() }, v = ["multipartInit", "multipartUpload", "multipartComplete", "multipartList", "multipartListPart", "multipartAbort"], b = ["putObject", "postObject", "appendObject", "sliceUploadFile", "uploadFile", "uploadFiles"].concat(v), C = ["getObject"]; function k(e) { return e.replace(/([A-Z])/g, "_$1").toLowerCase() } var S = function () { "use strict"; function e(t) { n(this, e); var r = t.parent, o = t.traceId, i = t.bucket, s = t.region, l = t.apiName, d = t.fileKey, p = t.fileSize, f = t.accelerate, h = t.customId, g = t.delay, m = t.deepTracker, v = i && i.substr(i.lastIndexOf("-") + 1) || ""; this.parent = r, this.deepTracker = m, this.delay = g, this.params = { cossdkVersion: a.version, region: s, networkType: "", host: "", accelerate: f ? "Y" : "N", requestPath: d || "", size: p || -1, httpMd5: 0, httpSign: 0, httpFull: 0, name: l || "", result: "", tookTime: 0, errorNode: "", errorCode: "", errorMessage: "", errorRequestId: "", errorStatusCode: 0, errorServiceName: "", tracePlatform: "cos-js-sdk-v5", traceId: o || u(), bucket: i, appid: v, partNumber: 0, retryTimes: 0, reqUrl: "", customId: h || "", deviceType: y.deviceType, devicePlatform: y.devicePlatform, deviceName: y.deviceName, md5StartTime: 0, md5EndTime: 0, signStartTime: 0, signEndTime: 0, httpStartTime: 0, httpEndTime: 0, startTime: (new Date).getTime(), endTime: 0 }, this.beacon = c(g) } return o(e, [{ key: "formatResult", value: function (e, t) { var r, n, o, i, a, s, c = (new Date).getTime() - this.params.startTime, u = l(), d = e ? (null == e ? void 0 : e.code) || (null == e || null === (r = e.error) || void 0 === r ? void 0 : r.code) || (null == e || null === (n = e.error) || void 0 === n ? void 0 : n.Code) : "", p = e ? (null == e ? void 0 : e.message) || (null == e || null === (o = e.error) || void 0 === o ? void 0 : o.message) || (null == e || null === (i = e.error) || void 0 === i ? void 0 : i.Message) : "", f = e ? (null == e ? void 0 : e.resource) || (null == e || null === (a = e.error) || void 0 === a ? void 0 : a.resource) || (null == e || null === (s = e.error) || void 0 === s ? void 0 : s.Resource) : "", h = e ? null == e ? void 0 : e.statusCode : t.statusCode, g = e ? (null == e ? void 0 : e.headers) && (null == e ? void 0 : e.headers["x-cos-request-id"]) : (null == t ? void 0 : t.headers) && (null == t ? void 0 : t.headers["x-cos-request-id"]), m = e ? g ? "Server" : "Client" : ""; if (Object.assign(this.params, { tookTime: c, networkType: u, httpMd5: this.params.md5EndTime - this.params.md5StartTime, httpSign: this.params.signEndTime - this.params.signStartTime, httpFull: this.params.httpEndTime - this.params.httpStartTime, result: e ? "Fail" : "Success", errorType: m, errorCode: d, errorStatusCode: h, errorMessage: p, errorServiceName: f, errorRequestId: g }), !e || d && p || (this.params.fullError = e ? JSON.stringify(e) : ""), "getObject" === this.params.name && (this.params.size = t ? t.headers && t.headers["content-length"] : -1), this.params.reqUrl) try { var y = /^http(s)?:\/\/(.*?)\//.exec(this.params.reqUrl); this.params.host = y[2] } catch (e) { this.params.host = this.params.reqUrl } this.sendEvents() } }, { key: "setParams", value: function (e) { Object.assign(this.params, e) } }, { key: "sendEvents", value: function () { if (!v.includes(this.params.name) || this.deepTracker) { var e, t = (e = this.params.name, b.includes(e) ? "cos_upload" : C.includes(e) ? "cos_download" : "base_service"), r = function (e) { var t = {}, r = "Success" === e.result ? ["tracePlatform", "cossdkVersion", "region", "bucket", "appid", "networkType", "host", "accelerate", "requestPath", "partNumber", "size", "name", "result", "tookTime", "errorRequestId", "retryTimes", "reqUrl", "customId", "deviceType", "devicePlatform", "deviceName"] : ["tracePlatform", "cossdkVersion", "region", "networkType", "host", "accelerate", "requestPath", "size", "httpMd5", "httpSign", "httpFull", "name", "result", "tookTime", "errorNode", "errorCode", "errorMessage", "errorRequestId", "errorStatusCode", "errorServiceName", "errorType", "traceId", "bucket", "appid", "partNumber", "retryTimes", "reqUrl", "customId", "fullError", "deviceType", "devicePlatform", "deviceName"]; for (var n in e) r.includes(n) && (t[k(n)] = e[n]); return t }(this.params); this.beacon || (this.beacon = c(this.delay || 5e3)), 0 === this.delay ? this.beacon && this.beacon.onDirectUserAction(t, r) : this.beacon && this.beacon.onUserAction(t, r) } } }, { key: "generateSubTracker", value: function (t) { return Object.assign(t, { parent: this, deepTracker: this.deepTracker, traceId: this.params.traceId, bucket: this.params.bucket, region: this.params.region, fileKey: this.params.requestPath, customId: this.params.customId, delay: this.delay }), new e(t) } }]), e }(); e.exports = S }, function (e) { e.exports = JSON.parse('{"name":"cos-js-sdk-v5","version":"1.4.21","description":"JavaScript SDK for [腾讯云对象存储](https://cloud.tencent.com/product/cos)","main":"dist/cos-js-sdk-v5.js","types":"index.d.ts","scripts":{"prettier":"prettier --write src demo/demo.js test/test.js server/sts.js index.d.ts","server":"node server/sts.js","dev":"cross-env NODE_ENV=development webpack -w --mode=development","build":"cross-env NODE_ENV=production webpack --mode=production","cos-auth.min.js":"uglifyjs ./demo/common/cos-auth.js -o ./demo/common/cos-auth.min.js -c -m","test":"jest --runInBand --coverage"},"repository":{"type":"git","url":"git+https://github.com/tencentyun/cos-js-sdk-v5.git"},"keywords":[],"author":"carsonxu","license":"ISC","bugs":{"url":"https://github.com/tencentyun/cos-js-sdk-v5/issues"},"homepage":"https://github.com/tencentyun/cos-js-sdk-v5#readme","dependencies":{"@xmldom/xmldom":"^0.8.6"},"devDependencies":{"@babel/core":"7.17.9","@babel/plugin-transform-runtime":"7.18.10","@babel/preset-env":"7.16.11","babel-loader":"8.2.5","body-parser":"^1.18.3","cross-env":"^5.2.0","express":"^4.16.4","jest":"^29.3.1","jest-environment-jsdom":"^29.3.1","prettier":"^3.0.1","qcloud-cos-sts":"^3.0.2","request":"^2.87.0","terser-webpack-plugin":"4.2.3","uglifyjs":"^2.4.11","webpack":"4.46.0","webpack-cli":"4.10.0"}}') }, function (e, t) { var r = function (e) { var t = {}, r = function (e) { return !t[e] && (t[e] = []), t[e] }; e.on = function (e, t) { r(e).push(t) }, e.off = function (e, t) { for (var n = r(e), o = n.length - 1; o >= 0; o--)t === n[o] && n.splice(o, 1) }, e.emit = function (e, t) { for (var n = r(e).map((function (e) { return e })), o = 0; o < n.length; o++)n[o](t) } }; e.exports.init = r, e.exports.EventProxy = function () { r(this) } }, function (e, t, r) { var n, o, i = r(1), a = "cos_sdk_upload_cache", s = function () { try { var e = JSON.parse(localStorage.getItem(a)) } catch (e) { } e || (e = []), n = e }, c = function () { try { n.length ? localStorage.setItem(a, JSON.stringify(n)) : localStorage.removeItem(a) } catch (e) { } }, u = function () { if (!n) { s.call(this); for (var e = !1, t = Math.round(Date.now() / 1e3), r = n.length - 1; r >= 0; r--) { var o = n[r][2]; (!o || o + 2592e3 < t) && (n.splice(r, 1), e = !0) } e && c() } }, l = function () { o || (o = setTimeout((function () { c(), o = null }), 400)) }, d = { using: {}, setUsing: function (e) { d.using[e] = !0 }, removeUsing: function (e) { delete d.using[e] }, getFileId: function (e, t, r, n) { return e.name && e.size && e.lastModifiedDate && t ? i.md5([e.name, e.size, e.lastModifiedDate, t, r, n].join("::")) : null }, getCopyFileId: function (e, t, r, n, o) { var a = t["content-length"], s = t.etag || "", c = t["last-modified"]; return e && r ? i.md5([e, a, s, c, r, n, o].join("::")) : null }, getUploadIdList: function (e) { if (!e) return null; u.call(this); for (var t = [], r = 0; r < n.length; r++)n[r][0] === e && t.push(n[r][1]); return t.length ? t : null }, saveUploadId: function (e, t, r) { if (u.call(this), e) { for (var o = n.length - 1; o >= 0; o--) { var i = n[o]; i[0] === e && i[1] === t && n.splice(o, 1) } n.unshift([e, t, Math.round(Date.now() / 1e3)]), n.length > r && n.splice(r), l() } }, removeUploadId: function (e) { u.call(this), delete d.using[e]; for (var t = n.length - 1; t >= 0; t--)n[t][1] === e && n.splice(t, 1); l() } }; e.exports = d }, function (e, t, r) { var n = r(11); e.exports = n }, function (e, t, r) { "use strict"; var n = r(1), o = r(8), i = r(28), a = r(29), s = r(31), c = r(7), u = { AppId: "", SecretId: "", SecretKey: "", SecurityToken: "", ChunkRetryTimes: 2, FileParallelLimit: 3, ChunkParallelLimit: 3, ChunkSize: 1048576, SliceSize: 1048576, CopyChunkParallelLimit: 20, CopyChunkSize: 10485760, CopySliceSize: 10485760, MaxPartNumber: 1e4, ProgressInterval: 1e3, Domain: "", ServiceDomain: "", Protocol: "", CompatibilityMode: !1, ForcePathStyle: !1, UseRawKey: !1, Timeout: 0, CorrectClockSkew: !0, SystemClockOffset: 0, UploadCheckContentMd5: !1, UploadQueueSize: 1e4, UploadAddMetaMd5: !1, UploadIdCacheLimit: 50, UseAccelerate: !1, ForceSignHost: !0, EnableTracker: !1, DeepTracker: !1, TrackerDelay: 5e3, CustomId: "" }, l = function (e) { this.options = n.extend(n.clone(u), e || {}), this.options.FileParallelLimit = Math.max(1, this.options.FileParallelLimit), this.options.ChunkParallelLimit = Math.max(1, this.options.ChunkParallelLimit), this.options.ChunkRetryTimes = Math.max(0, this.options.ChunkRetryTimes), this.options.ChunkSize = Math.max(1048576, this.options.ChunkSize), this.options.CopyChunkParallelLimit = Math.max(1, this.options.CopyChunkParallelLimit), this.options.CopyChunkSize = Math.max(1048576, this.options.CopyChunkSize), this.options.CopySliceSize = Math.max(0, this.options.CopySliceSize), this.options.MaxPartNumber = Math.max(1024, Math.min(1e4, this.options.MaxPartNumber)), this.options.Timeout = Math.max(0, this.options.Timeout), this.options.AppId, this.options.SecretId && this.options.SecretId.indexOf(" "), this.options.SecretKey && this.options.SecretKey.indexOf(" "), n.isNode(), o.init(this), i.init(this) }; a.init(l, i), s.init(l, i), l.util = { md5: n.md5, xml2json: n.xml2json, json2xml: n.json2xml, encodeBase64: n.encodeBase64 }, l.getAuthorization = n.getAuth, l.version = c.version, e.exports = l }, function (module, exports, __webpack_require__) { (function (process, global, module) { var __WEBPACK_AMD_DEFINE_RESULT__, _typeof = __webpack_require__(0); (function () { "use strict"; var ERROR = "input is invalid type", WINDOW = "object" === ("undefined" == typeof window ? "undefined" : _typeof(window)), root = WINDOW ? window : {}; root.JS_MD5_NO_WINDOW && (WINDOW = !1); var WEB_WORKER = !WINDOW && "object" === ("undefined" == typeof self ? "undefined" : _typeof(self)), NODE_JS = !root.JS_MD5_NO_NODE_JS && "object" === (void 0 === process ? "undefined" : _typeof(process)) && process.versions && process.versions.node; NODE_JS ? root = global : WEB_WORKER && (root = self); var COMMON_JS = !root.JS_MD5_NO_COMMON_JS && "object" === _typeof(module) && module.exports, AMD = __webpack_require__(14), ARRAY_BUFFER = !root.JS_MD5_NO_ARRAY_BUFFER && "undefined" != typeof ArrayBuffer, HEX_CHARS = "0123456789abcdef".split(""), EXTRA = [128, 32768, 8388608, -2147483648], SHIFT = [0, 8, 16, 24], OUTPUT_TYPES = ["hex", "array", "digest", "buffer", "arrayBuffer", "base64"], BASE64_ENCODE_CHAR = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""), blocks = [], buffer8; if (ARRAY_BUFFER) { var buffer = new ArrayBuffer(68); buffer8 = new Uint8Array(buffer), blocks = new Uint32Array(buffer) } !root.JS_MD5_NO_NODE_JS && Array.isArray || (Array.isArray = function (e) { return "[object Array]" === Object.prototype.toString.call(e) }), !ARRAY_BUFFER || !root.JS_MD5_NO_ARRAY_BUFFER_IS_VIEW && ArrayBuffer.isView || (ArrayBuffer.isView = function (e) { return "object" === _typeof(e) && e.buffer && e.buffer.constructor === ArrayBuffer }); var createOutputMethod = function (e) { return function (t, r) { return new Md5(!0).update(t, r)[e]() } }, createMethod = function () { var e = createOutputMethod("hex"); NODE_JS && (e = nodeWrap(e)), e.getCtx = e.create = function () { return new Md5 }, e.update = function (t) { return e.create().update(t) }; for (var t = 0; t < OUTPUT_TYPES.length; ++t) { var r = OUTPUT_TYPES[t]; e[r] = createOutputMethod(r) } return e }, nodeWrap = function nodeWrap(method) { var crypto = eval("require('crypto')"), Buffer = eval("require('buffer').Buffer"), nodeMethod = function (e) { if ("string" == typeof e) return crypto.createHash("md5").update(e, "utf8").digest("hex"); if (null == e) throw ERROR; return e.constructor === ArrayBuffer && (e = new Uint8Array(e)), Array.isArray(e) || ArrayBuffer.isView(e) || e.constructor === Buffer ? crypto.createHash("md5").update(new Buffer(e)).digest("hex") : method(e) }; return nodeMethod }; function Md5(e) { if (e) blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] = blocks[4] = blocks[5] = blocks[6] = blocks[7] = blocks[8] = blocks[9] = blocks[10] = blocks[11] = blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0, this.blocks = blocks, this.buffer8 = buffer8; else if (ARRAY_BUFFER) { var t = new ArrayBuffer(68); this.buffer8 = new Uint8Array(t), this.blocks = new Uint32Array(t) } else this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; this.h0 = this.h1 = this.h2 = this.h3 = this.start = this.bytes = this.hBytes = 0, this.finalized = this.hashed = !1, this.first = !0 } Md5.prototype.update = function (e, t) { if (!this.finalized) { for (var r, n, o = 0, i = e.length, a = this.blocks, s = this.buffer8; o < i;) { if (this.hashed && (this.hashed = !1, a[0] = a[16], a[16] = a[1] = a[2] = a[3] = a[4] = a[5] = a[6] = a[7] = a[8] = a[9] = a[10] = a[11] = a[12] = a[13] = a[14] = a[15] = 0), ARRAY_BUFFER) for (n = this.start; o < i && n < 64; ++o)r = e.charCodeAt(o), t || r < 128 ? s[n++] = r : r < 2048 ? (s[n++] = 192 | r >> 6, s[n++] = 128 | 63 & r) : r < 55296 || r >= 57344 ? (s[n++] = 224 | r >> 12, s[n++] = 128 | r >> 6 & 63, s[n++] = 128 | 63 & r) : (r = 65536 + ((1023 & r) << 10 | 1023 & e.charCodeAt(++o)), s[n++] = 240 | r >> 18, s[n++] = 128 | r >> 12 & 63, s[n++] = 128 | r >> 6 & 63, s[n++] = 128 | 63 & r); else for (n = this.start; o < i && n < 64; ++o)r = e.charCodeAt(o), t || r < 128 ? a[n >> 2] |= r << SHIFT[3 & n++] : r < 2048 ? (a[n >> 2] |= (192 | r >> 6) << SHIFT[3 & n++], a[n >> 2] |= (128 | 63 & r) << SHIFT[3 & n++]) : r < 55296 || r >= 57344 ? (a[n >> 2] |= (224 | r >> 12) << SHIFT[3 & n++], a[n >> 2] |= (128 | r >> 6 & 63) << SHIFT[3 & n++], a[n >> 2] |= (128 | 63 & r) << SHIFT[3 & n++]) : (r = 65536 + ((1023 & r) << 10 | 1023 & e.charCodeAt(++o)), a[n >> 2] |= (240 | r >> 18) << SHIFT[3 & n++], a[n >> 2] |= (128 | r >> 12 & 63) << SHIFT[3 & n++], a[n >> 2] |= (128 | r >> 6 & 63) << SHIFT[3 & n++], a[n >> 2] |= (128 | 63 & r) << SHIFT[3 & n++]); this.lastByteIndex = n, this.bytes += n - this.start, n >= 64 ? (this.start = n - 64, this.hash(), this.hashed = !0) : this.start = n } return this.bytes > 4294967295 && (this.hBytes += this.bytes / 4294967296 << 0, this.bytes = this.bytes % 4294967296), this } }, Md5.prototype.finalize = function () { if (!this.finalized) { this.finalized = !0; var e = this.blocks, t = this.lastByteIndex; e[t >> 2] |= EXTRA[3 & t], t >= 56 && (this.hashed || this.hash(), e[0] = e[16], e[16] = e[1] = e[2] = e[3] = e[4] = e[5] = e[6] = e[7] = e[8] = e[9] = e[10] = e[11] = e[12] = e[13] = e[14] = e[15] = 0), e[14] = this.bytes << 3, e[15] = this.hBytes << 3 | this.bytes >>> 29, this.hash() } }, Md5.prototype.hash = function () { var e, t, r, n, o, i, a = this.blocks; this.first ? t = ((t = ((e = ((e = a[0] - 680876937) << 7 | e >>> 25) - 271733879 << 0) ^ (r = ((r = (-271733879 ^ (n = ((n = (-1732584194 ^ 2004318071 & e) + a[1] - 117830708) << 12 | n >>> 20) + e << 0) & (-271733879 ^ e)) + a[2] - 1126478375) << 17 | r >>> 15) + n << 0) & (n ^ e)) + a[3] - 1316259209) << 22 | t >>> 10) + r << 0 : (e = this.h0, t = this.h1, r = this.h2, t = ((t += ((e = ((e += ((n = this.h3) ^ t & (r ^ n)) + a[0] - 680876936) << 7 | e >>> 25) + t << 0) ^ (r = ((r += (t ^ (n = ((n += (r ^ e & (t ^ r)) + a[1] - 389564586) << 12 | n >>> 20) + e << 0) & (e ^ t)) + a[2] + 606105819) << 17 | r >>> 15) + n << 0) & (n ^ e)) + a[3] - 1044525330) << 22 | t >>> 10) + r << 0), t = ((t += ((e = ((e += (n ^ t & (r ^ n)) + a[4] - 176418897) << 7 | e >>> 25) + t << 0) ^ (r = ((r += (t ^ (n = ((n += (r ^ e & (t ^ r)) + a[5] + 1200080426) << 12 | n >>> 20) + e << 0) & (e ^ t)) + a[6] - 1473231341) << 17 | r >>> 15) + n << 0) & (n ^ e)) + a[7] - 45705983) << 22 | t >>> 10) + r << 0, t = ((t += ((e = ((e += (n ^ t & (r ^ n)) + a[8] + 1770035416) << 7 | e >>> 25) + t << 0) ^ (r = ((r += (t ^ (n = ((n += (r ^ e & (t ^ r)) + a[9] - 1958414417) << 12 | n >>> 20) + e << 0) & (e ^ t)) + a[10] - 42063) << 17 | r >>> 15) + n << 0) & (n ^ e)) + a[11] - 1990404162) << 22 | t >>> 10) + r << 0, t = ((t += ((e = ((e += (n ^ t & (r ^ n)) + a[12] + 1804603682) << 7 | e >>> 25) + t << 0) ^ (r = ((r += (t ^ (n = ((n += (r ^ e & (t ^ r)) + a[13] - 40341101) << 12 | n >>> 20) + e << 0) & (e ^ t)) + a[14] - 1502002290) << 17 | r >>> 15) + n << 0) & (n ^ e)) + a[15] + 1236535329) << 22 | t >>> 10) + r << 0, t = ((t += ((n = ((n += (t ^ r & ((e = ((e += (r ^ n & (t ^ r)) + a[1] - 165796510) << 5 | e >>> 27) + t << 0) ^ t)) + a[6] - 1069501632) << 9 | n >>> 23) + e << 0) ^ e & ((r = ((r += (e ^ t & (n ^ e)) + a[11] + 643717713) << 14 | r >>> 18) + n << 0) ^ n)) + a[0] - 373897302) << 20 | t >>> 12) + r << 0, t = ((t += ((n = ((n += (t ^ r & ((e = ((e += (r ^ n & (t ^ r)) + a[5] - 701558691) << 5 | e >>> 27) + t << 0) ^ t)) + a[10] + 38016083) << 9 | n >>> 23) + e << 0) ^ e & ((r = ((r += (e ^ t & (n ^ e)) + a[15] - 660478335) << 14 | r >>> 18) + n << 0) ^ n)) + a[4] - 405537848) << 20 | t >>> 12) + r << 0, t = ((t += ((n = ((n += (t ^ r & ((e = ((e += (r ^ n & (t ^ r)) + a[9] + 568446438) << 5 | e >>> 27) + t << 0) ^ t)) + a[14] - 1019803690) << 9 | n >>> 23) + e << 0) ^ e & ((r = ((r += (e ^ t & (n ^ e)) + a[3] - 187363961) << 14 | r >>> 18) + n << 0) ^ n)) + a[8] + 1163531501) << 20 | t >>> 12) + r << 0, t = ((t += ((n = ((n += (t ^ r & ((e = ((e += (r ^ n & (t ^ r)) + a[13] - 1444681467) << 5 | e >>> 27) + t << 0) ^ t)) + a[2] - 51403784) << 9 | n >>> 23) + e << 0) ^ e & ((r = ((r += (e ^ t & (n ^ e)) + a[7] + 1735328473) << 14 | r >>> 18) + n << 0) ^ n)) + a[12] - 1926607734) << 20 | t >>> 12) + r << 0, t = ((t += ((i = (n = ((n += ((o = t ^ r) ^ (e = ((e += (o ^ n) + a[5] - 378558) << 4 | e >>> 28) + t << 0)) + a[8] - 2022574463) << 11 | n >>> 21) + e << 0) ^ e) ^ (r = ((r += (i ^ t) + a[11] + 1839030562) << 16 | r >>> 16) + n << 0)) + a[14] - 35309556) << 23 | t >>> 9) + r << 0, t = ((t += ((i = (n = ((n += ((o = t ^ r) ^ (e = ((e += (o ^ n) + a[1] - 1530992060) << 4 | e >>> 28) + t << 0)) + a[4] + 1272893353) << 11 | n >>> 21) + e << 0) ^ e) ^ (r = ((r += (i ^ t) + a[7] - 155497632) << 16 | r >>> 16) + n << 0)) + a[10] - 1094730640) << 23 | t >>> 9) + r << 0, t = ((t += ((i = (n = ((n += ((o = t ^ r) ^ (e = ((e += (o ^ n) + a[13] + 681279174) << 4 | e >>> 28) + t << 0)) + a[0] - 358537222) << 11 | n >>> 21) + e << 0) ^ e) ^ (r = ((r += (i ^ t) + a[3] - 722521979) << 16 | r >>> 16) + n << 0)) + a[6] + 76029189) << 23 | t >>> 9) + r << 0, t = ((t += ((i = (n = ((n += ((o = t ^ r) ^ (e = ((e += (o ^ n) + a[9] - 640364487) << 4 | e >>> 28) + t << 0)) + a[12] - 421815835) << 11 | n >>> 21) + e << 0) ^ e) ^ (r = ((r += (i ^ t) + a[15] + 530742520) << 16 | r >>> 16) + n << 0)) + a[2] - 995338651) << 23 | t >>> 9) + r << 0, t = ((t += ((n = ((n += (t ^ ((e = ((e += (r ^ (t | ~n)) + a[0] - 198630844) << 6 | e >>> 26) + t << 0) | ~r)) + a[7] + 1126891415) << 10 | n >>> 22) + e << 0) ^ ((r = ((r += (e ^ (n | ~t)) + a[14] - 1416354905) << 15 | r >>> 17) + n << 0) | ~e)) + a[5] - 57434055) << 21 | t >>> 11) + r << 0, t = ((t += ((n = ((n += (t ^ ((e = ((e += (r ^ (t | ~n)) + a[12] + 1700485571) << 6 | e >>> 26) + t << 0) | ~r)) + a[3] - 1894986606) << 10 | n >>> 22) + e << 0) ^ ((r = ((r += (e ^ (n | ~t)) + a[10] - 1051523) << 15 | r >>> 17) + n << 0) | ~e)) + a[1] - 2054922799) << 21 | t >>> 11) + r << 0, t = ((t += ((n = ((n += (t ^ ((e = ((e += (r ^ (t | ~n)) + a[8] + 1873313359) << 6 | e >>> 26) + t << 0) | ~r)) + a[15] - 30611744) << 10 | n >>> 22) + e << 0) ^ ((r = ((r += (e ^ (n | ~t)) + a[6] - 1560198380) << 15 | r >>> 17) + n << 0) | ~e)) + a[13] + 1309151649) << 21 | t >>> 11) + r << 0, t = ((t += ((n = ((n += (t ^ ((e = ((e += (r ^ (t | ~n)) + a[4] - 145523070) << 6 | e >>> 26) + t << 0) | ~r)) + a[11] - 1120210379) << 10 | n >>> 22) + e << 0) ^ ((r = ((r += (e ^ (n | ~t)) + a[2] + 718787259) << 15 | r >>> 17) + n << 0) | ~e)) + a[9] - 343485551) << 21 | t >>> 11) + r << 0, this.first ? (this.h0 = e + 1732584193 << 0, this.h1 = t - 271733879 << 0, this.h2 = r - 1732584194 << 0, this.h3 = n + 271733878 << 0, this.first = !1) : (this.h0 = this.h0 + e << 0, this.h1 = this.h1 + t << 0, this.h2 = this.h2 + r << 0, this.h3 = this.h3 + n << 0) }, Md5.prototype.hex = function () { this.finalize(); var e = this.h0, t = this.h1, r = this.h2, n = this.h3; return HEX_CHARS[e >> 4 & 15] + HEX_CHARS[15 & e] + HEX_CHARS[e >> 12 & 15] + HEX_CHARS[e >> 8 & 15] + HEX_CHARS[e >> 20 & 15] + HEX_CHARS[e >> 16 & 15] + HEX_CHARS[e >> 28 & 15] + HEX_CHARS[e >> 24 & 15] + HEX_CHARS[t >> 4 & 15] + HEX_CHARS[15 & t] + HEX_CHARS[t >> 12 & 15] + HEX_CHARS[t >> 8 & 15] + HEX_CHARS[t >> 20 & 15] + HEX_CHARS[t >> 16 & 15] + HEX_CHARS[t >> 28 & 15] + HEX_CHARS[t >> 24 & 15] + HEX_CHARS[r >> 4 & 15] + HEX_CHARS[15 & r] + HEX_CHARS[r >> 12 & 15] + HEX_CHARS[r >> 8 & 15] + HEX_CHARS[r >> 20 & 15] + HEX_CHARS[r >> 16 & 15] + HEX_CHARS[r >> 28 & 15] + HEX_CHARS[r >> 24 & 15] + HEX_CHARS[n >> 4 & 15] + HEX_CHARS[15 & n] + HEX_CHARS[n >> 12 & 15] + HEX_CHARS[n >> 8 & 15] + HEX_CHARS[n >> 20 & 15] + HEX_CHARS[n >> 16 & 15] + HEX_CHARS[n >> 28 & 15] + HEX_CHARS[n >> 24 & 15] }, Md5.prototype.toString = Md5.prototype.hex, Md5.prototype.digest = function (e) { if ("hex" === e) return this.hex(); this.finalize(); var t = this.h0, r = this.h1, n = this.h2, o = this.h3; return [255 & t, t >> 8 & 255, t >> 16 & 255, t >> 24 & 255, 255 & r, r >> 8 & 255, r >> 16 & 255, r >> 24 & 255, 255 & n, n >> 8 & 255, n >> 16 & 255, n >> 24 & 255, 255 & o, o >> 8 & 255, o >> 16 & 255, o >> 24 & 255] }, Md5.prototype.array = Md5.prototype.digest, Md5.prototype.arrayBuffer = function () { this.finalize(); var e = new ArrayBuffer(16), t = new Uint32Array(e); return t[0] = this.h0, t[1] = this.h1, t[2] = this.h2, t[3] = this.h3, e }, Md5.prototype.buffer = Md5.prototype.arrayBuffer, Md5.prototype.base64 = function () { for (var e, t, r, n = "", o = this.array(), i = 0; i < 15;)e = o[i++], t = o[i++], r = o[i++], n += BASE64_ENCODE_CHAR[e >>> 2] + BASE64_ENCODE_CHAR[63 & (e << 4 | t >>> 4)] + BASE64_ENCODE_CHAR[63 & (t << 2 | r >>> 6)] + BASE64_ENCODE_CHAR[63 & r]; return e = o[i], n += BASE64_ENCODE_CHAR[e >>> 2] + BASE64_ENCODE_CHAR[e << 4 & 63] + "==" }; var exports = createMethod(); COMMON_JS ? module.exports = exports : (root.md5 = exports, AMD && (__WEBPACK_AMD_DEFINE_RESULT__ = function () { return exports }.call(exports, __webpack_require__, exports, module), void 0 === __WEBPACK_AMD_DEFINE_RESULT__ || (module.exports = __WEBPACK_AMD_DEFINE_RESULT__))) })() }).call(this, __webpack_require__(3), __webpack_require__(13), __webpack_require__(4)(module)) }, function (e, t) { var r; r = function () { return this }(); try { r = r || new Function("return this")() } catch (e) { "object" == typeof window && (r = window) } e.exports = r }, function (e, t) { (function (t) { e.exports = t }).call(this, {}) }, function (e, t, r) { (function (e) { var t, n, o, i, a, s, c, u = r(0), l = l || function (e, t) { var r = {}, n = r.lib = {}, o = function () { }, i = n.Base = { extend: function (e) { o.prototype = this; var t = new o; return e && t.mixIn(e), t.hasOwnProperty("init") || (t.init = function () { t.$super.init.apply(this, arguments) }), t.init.prototype = t, t.$super = this, t }, create: function () { var e = this.extend(); return e.init.apply(e, arguments), e }, init: function () { }, mixIn: function (e) { for (var t in e) e.hasOwnProperty(t) && (this[t] = e[t]); e.hasOwnProperty("toString") && (this.toString = e.toString) }, clone: function () { return this.init.prototype.extend(this) } }, a = n.WordArray = i.extend({ init: function (e, t) { e = this.words = e || [], this.sigBytes = null != t ? t : 4 * e.length }, toString: function (e) { return (e || c).stringify(this) }, concat: function (e) { var t = this.words, r = e.words, n = this.sigBytes; if (e = e.sigBytes, this.clamp(), n % 4) for (var o = 0; o < e; o++)t[n + o >>> 2] |= (r[o >>> 2] >>> 24 - o % 4 * 8 & 255) << 24 - (n + o) % 4 * 8; else if (65535 < r.length) for (o = 0; o < e; o += 4)t[n + o >>> 2] = r[o >>> 2]; else t.push.apply(t, r); return this.sigBytes += e, this }, clamp: function () { var t = this.words, r = this.sigBytes; t[r >>> 2] &= 4294967295 << 32 - r % 4 * 8, t.length = e.ceil(r / 4) }, clone: function () { var e = i.clone.call(this); return e.words = this.words.slice(0), e }, random: function (t) { for (var r = [], n = 0; n < t; n += 4)r.push(4294967296 * e.random() | 0); return new a.init(r, t) } }), s = r.enc = {}, c = s.Hex = { stringify: function (e) { var t = e.words; e = e.sigBytes; for (var r = [], n = 0; n < e; n++) { var o = t[n >>> 2] >>> 24 - n % 4 * 8 & 255; r.push((o >>> 4).toString(16)), r.push((15 & o).toString(16)) } return r.join("") }, parse: function (e) { for (var t = e.length, r = [], n = 0; n < t; n += 2)r[n >>> 3] |= parseInt(e.substr(n, 2), 16) << 24 - n % 8 * 4; return new a.init(r, t / 2) } }, u = s.Latin1 = { stringify: function (e) { var t = e.words; e = e.sigBytes; for (var r = [], n = 0; n < e; n++)r.push(String.fromCharCode(t[n >>> 2] >>> 24 - n % 4 * 8 & 255)); return r.join("") }, parse: function (e) { for (var t = e.length, r = [], n = 0; n < t; n++)r[n >>> 2] |= (255 & e.charCodeAt(n)) << 24 - n % 4 * 8; return new a.init(r, t) } }, l = s.Utf8 = { stringify: function (e) { try { return decodeURIComponent(escape(u.stringify(e))) } catch (e) { throw Error("Malformed UTF-8 data") } }, parse: function (e) { return u.parse(unescape(encodeURIComponent(e))) } }, d = n.BufferedBlockAlgorithm = i.extend({ reset: function () { this._data = new a.init, this._nDataBytes = 0 }, _append: function (e) { "string" == typeof e && (e = l.parse(e)), this._data.concat(e), this._nDataBytes += e.sigBytes }, _process: function (t) { var r = this._data, n = r.words, o = r.sigBytes, i = this.blockSize, s = o / (4 * i); if (t = (s = t ? e.ceil(s) : e.max((0 | s) - this._minBufferSize, 0)) * i, o = e.min(4 * t, o), t) { for (var c = 0; c < t; c += i)this._doProcessBlock(n, c); c = n.splice(0, t), r.sigBytes -= o } return new a.init(c, o) }, clone: function () { var e = i.clone.call(this); return e._data = this._data.clone(), e }, _minBufferSize: 0 }); n.Hasher = d.extend({ cfg: i.extend(), init: function (e) { this.cfg = this.cfg.extend(e), this.reset() }, reset: function () { d.reset.call(this), this._doReset() }, update: function (e) { return this._append(e), this._process(), this }, finalize: function (e) { return e && this._append(e), this._doFinalize() }, blockSize: 16, _createHelper: function (e) { return function (t, r) { return new e.init(r).finalize(t) } }, _createHmacHelper: function (e) { return function (t, r) { return new p.HMAC.init(e, r).finalize(t) } } }); var p = r.algo = {}; return r }(Math); n = (a = (t = l).lib).WordArray, o = a.Hasher, i = [], a = t.algo.SHA1 = o.extend({ _doReset: function () { this._hash = new n.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (e, t) { for (var r = this._hash.words, n = r[0], o = r[1], a = r[2], s = r[3], c = r[4], u = 0; 80 > u; u++) { if (16 > u) i[u] = 0 | e[t + u]; else { var l = i[u - 3] ^ i[u - 8] ^ i[u - 14] ^ i[u - 16]; i[u] = l << 1 | l >>> 31 } l = (n << 5 | n >>> 27) + c + i[u], l = 20 > u ? l + (1518500249 + (o & a | ~o & s)) : 40 > u ? l + (1859775393 + (o ^ a ^ s)) : 60 > u ? l + ((o & a | o & s | a & s) - 1894007588) : l + ((o ^ a ^ s) - 899497514), c = s, s = a, a = o << 30 | o >>> 2, o = n, n = l } r[0] = r[0] + n | 0, r[1] = r[1] + o | 0, r[2] = r[2] + a | 0, r[3] = r[3] + s | 0, r[4] = r[4] + c | 0 }, _doFinalize: function () { var e = this._data, t = e.words, r = 8 * this._nDataBytes, n = 8 * e.sigBytes; return t[n >>> 5] |= 128 << 24 - n % 32, t[14 + (n + 64 >>> 9 << 4)] = Math.floor(r / 4294967296), t[15 + (n + 64 >>> 9 << 4)] = r, e.sigBytes = 4 * t.length, this._process(), this._hash }, clone: function () { var e = o.clone.call(this); return e._hash = this._hash.clone(), e } }), t.SHA1 = o._createHelper(a), t.HmacSHA1 = o._createHmacHelper(a), function () { var e = l, t = e.enc.Utf8; e.algo.HMAC = e.lib.Base.extend({ init: function (e, r) { e = this._hasher = new e.init, "string" == typeof r && (r = t.parse(r)); var n = e.blockSize, o = 4 * n; r.sigBytes > o && (r = e.finalize(r)), r.clamp(); for (var i = this._oKey = r.clone(), a = this._iKey = r.clone(), s = i.words, c = a.words, u = 0; u < n; u++)s[u] ^= 1549556828, c[u] ^= 909522486; i.sigBytes = a.sigBytes = o, this.reset() }, reset: function () { var e = this._hasher; e.reset(), e.update(this._iKey) }, update: function (e) { return this._hasher.update(e), this }, finalize: function (e) { var t = this._hasher; return e = t.finalize(e), t.reset(), t.finalize(this._oKey.clone().concat(e)) } }) }(), c = (s = l).lib.WordArray, s.enc.Base64 = { stringify: function (e) { var t = e.words, r = e.sigBytes, n = this._map; e.clamp(); for (var o = [], i = 0; i < r; i += 3)for (var a = (t[i >>> 2] >>> 24 - i % 4 * 8 & 255) << 16 | (t[i + 1 >>> 2] >>> 24 - (i + 1) % 4 * 8 & 255) << 8 | t[i + 2 >>> 2] >>> 24 - (i + 2) % 4 * 8 & 255, s = 0; s < 4 && i + .75 * s < r; s++)o.push(n.charAt(a >>> 6 * (3 - s) & 63)); var c = n.charAt(64); if (c) for (; o.length % 4;)o.push(c); return o.join("") }, parse: function (e) { var t = e.length, r = this._map, n = r.charAt(64); if (n) { var o = e.indexOf(n); -1 != o && (t = o) } for (var i = [], a = 0, s = 0; s < t; s++)if (s % 4) { var u = r.indexOf(e.charAt(s - 1)) << s % 4 * 2, l = r.indexOf(e.charAt(s)) >>> 6 - s % 4 * 2; i[a >>> 2] |= (u | l) << 24 - a % 4 * 8, a++ } return c.create(i, a) }, _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" }, "object" === u(e) ? e.exports = l : window.CryptoJS = l }).call(this, r(4)(e)) }, function (e, t, r) { var n = r(17).DOMParser, o = function () { this.version = "1.3.5"; var e = { mergeCDATA: !0, normalize: !0, stripElemPrefix: !0 }, t = new RegExp(/(?!xmlns)^.*:/); new RegExp(/^\s+|\s+$/g); return this.grokType = function (e) { return /^\s*$/.test(e) ? null : /^(?:true|false)$/i.test(e) ? "true" === e.toLowerCase() : isFinite(e) ? parseFloat(e) : e }, this.parseString = function (e, t) { if (e) { var r = this.stringToXML(e); return r.getElementsByTagName("parsererror").length ? null : this.parseXML(r, t) } return null }, this.parseXML = function (r, n) { for (var i in n) e[i] = n[i]; var a = {}, s = 0, c = ""; if (r.childNodes.length) for (var u, l, d, p = 0; p < r.childNodes.length; p++)4 === (u = r.childNodes.item(p)).nodeType ? e.mergeCDATA && (c += u.nodeValue) : 3 === u.nodeType ? c += u.nodeValue : 1 === u.nodeType && (0 === s && (a = {}), l = e.stripElemPrefix ? u.nodeName.replace(t, "") : u.nodeName, d = o.parseXML(u), a.hasOwnProperty(l) ? (a[l].constructor !== Array && (a[l] = [a[l]]), a[l].push(d)) : (a[l] = d, s++)); return Object.keys(a).length || (a = c || ""), a }, this.xmlToString = function (e) { try { return e.xml ? e.xml : (new XMLSerializer).serializeToString(e) } catch (e) { return null } }, this.stringToXML = function (e) { try { var t = null; return window.DOMParser ? t = (new n).parseFromString(e, "text/xml") : ((t = new ActiveXObject("Microsoft.XMLDOM")).async = !1, t.loadXML(e), t) } catch (e) { return null } }, this }.call({}); e.exports = function (e) { return o.parseString(e) } }, function (e, t, r) { var n = r(5); t.DOMImplementation = n.DOMImplementation, t.XMLSerializer = n.XMLSerializer, t.DOMParser = r(18).DOMParser }, function (e, t, r) { var n = r(2), o = r(5), i = r(19), a = r(20), s = o.DOMImplementation, c = n.NAMESPACE, u = a.ParseError, l = a.XMLReader; function d(e) { return e.replace(/\r[\n\u0085]/g, "\n").replace(/[\r\u0085\u2028]/g, "\n") } function p(e) { this.options = e || { locator: {} } } function f() { this.cdata = !1 } function h(e, t) { t.lineNumber = e.lineNumber, t.columnNumber = e.columnNumber } function g(e, t, r) { return "string" == typeof e ? e.substr(t, r) : e.length >= t + r || t ? new java.lang.String(e, t, r) + "" : e } function m(e, t) { e.currentElement ? e.currentElement.appendChild(t) : e.doc.appendChild(t) } p.prototype.parseFromString = function (e, t) { var r = this.options, n = new l, o = r.domBuilder || new f, a = r.errorHandler, s = r.locator, u = r.xmlns || {}, p = /\/x?html?$/.test(t), h = p ? i.HTML_ENTITIES : i.XML_ENTITIES; s && o.setDocumentLocator(s), n.errorHandler = function (e, t, r) { if (!e) { if (t instanceof f) return t; e = t } var n = {}, o = e instanceof Function; function i(t) { var i = e[t]; !i && o && (i = 2 == e.length ? function (r) { e(t, r) } : e), n[t] = i && function (e) { i("[xmldom " + t + "]\t" + e + function (e) { if (e) return "\n@" + (e.systemId || "") + "#[line:" + e.lineNumber + ",col:" + e.columnNumber + "]" }(r)) } || function () { } } return r = r || {}, i("warning"), i("error"), i("fatalError"), n }(a, o, s), n.domBuilder = r.domBuilder || o, p && (u[""] = c.HTML), u.xml = u.xml || c.XML; var g = r.normalizeLineEndings || d; return e && "string" == typeof e ? n.parse(g(e), u, h) : n.errorHandler.error("invalid doc source"), o.doc }, f.prototype = { startDocument: function () { this.doc = (new s).createDocument(null, null, null), this.locator && (this.doc.documentURI = this.locator.systemId) }, startElement: function (e, t, r, n) { var o = this.doc, i = o.createElementNS(e, r || t), a = n.length; m(this, i), this.currentElement = i, this.locator && h(this.locator, i); for (var s = 0; s < a; s++) { e = n.getURI(s); var c = n.getValue(s), u = (r = n.getQName(s), o.createAttributeNS(e, r)); this.locator && h(n.getLocator(s), u), u.value = u.nodeValue = c, i.setAttributeNode(u) } }, endElement: function (e, t, r) { var n = this.currentElement; n.tagName; this.currentElement = n.parentNode }, startPrefixMapping: function (e, t) { }, endPrefixMapping: function (e) { }, processingInstruction: function (e, t) { var r = this.doc.createProcessingInstruction(e, t); this.locator && h(this.locator, r), m(this, r) }, ignorableWhitespace: function (e, t, r) { }, characters: function (e, t, r) { if (e = g.apply(this, arguments)) { if (this.cdata) var n = this.doc.createCDATASection(e); else n = this.doc.createTextNode(e); this.currentElement ? this.currentElement.appendChild(n) : /^\s*$/.test(e) && this.doc.appendChild(n), this.locator && h(this.locator, n) } }, skippedEntity: function (e) { }, endDocument: function () { this.doc.normalize() }, setDocumentLocator: function (e) { (this.locator = e) && (e.lineNumber = 0) }, comment: function (e, t, r) { e = g.apply(this, arguments); var n = this.doc.createComment(e); this.locator && h(this.locator, n), m(this, n) }, startCDATA: function () { this.cdata = !0 }, endCDATA: function () { this.cdata = !1 }, startDTD: function (e, t, r) { var n = this.doc.implementation; if (n && n.createDocumentType) { var o = n.createDocumentType(e, t, r); this.locator && h(this.locator, o), m(this, o), this.doc.doctype = o } }, warning: function (e) { }, error: function (e) { }, fatalError: function (e) { throw new u(e, this.locator) } }, "endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl".replace(/\w+/g, (function (e) { f.prototype[e] = function () { return null } })), t.__DOMHandler = f, t.normalizeLineEndings = d, t.DOMParser = p }, function (e, t, r) { "use strict"; var n = r(2).freeze; t.XML_ENTITIES = n({ amp: "&", apos: "'", gt: ">", lt: "<", quot: '"' }), t.HTML_ENTITIES = n({ Aacute: "Á", aacute: "á", Abreve: "Ă", abreve: "ă", ac: "∾", acd: "∿", acE: "∾̳", Acirc: "Â", acirc: "â", acute: "´", Acy: "А", acy: "а", AElig: "Æ", aelig: "æ", af: "", Afr: "𝔄", afr: "𝔞", Agrave: "À", agrave: "à", alefsym: "ℵ", aleph: "ℵ", Alpha: "Α", alpha: "α", Amacr: "Ā", amacr: "ā", amalg: "⨿", AMP: "&", amp: "&", And: "⩓", and: "∧", andand: "⩕", andd: "⩜", andslope: "⩘", andv: "⩚", ang: "∠", ange: "⦤", angle: "∠", angmsd: "∡", angmsdaa: "⦨", angmsdab: "⦩", angmsdac: "⦪", angmsdad: "⦫", angmsdae: "⦬", angmsdaf: "⦭", angmsdag: "⦮", angmsdah: "⦯", angrt: "∟", angrtvb: "⊾", angrtvbd: "⦝", angsph: "∢", angst: "Å", angzarr: "⍼", Aogon: "Ą", aogon: "ą", Aopf: "𝔸", aopf: "𝕒", ap: "≈", apacir: "⩯", apE: "⩰", ape: "≊", apid: "≋", apos: "'", ApplyFunction: "", approx: "≈", approxeq: "≊", Aring: "Å", aring: "å", Ascr: "𝒜", ascr: "𝒶", Assign: "≔", ast: "*", asymp: "≈", asympeq: "≍", Atilde: "Ã", atilde: "ã", Auml: "Ä", auml: "ä", awconint: "∳", awint: "⨑", backcong: "≌", backepsilon: "϶", backprime: "‵", backsim: "∽", backsimeq: "⋍", Backslash: "∖", Barv: "⫧", barvee: "⊽", Barwed: "⌆", barwed: "⌅", barwedge: "⌅", bbrk: "⎵", bbrktbrk: "⎶", bcong: "≌", Bcy: "Б", bcy: "б", bdquo: "„", becaus: "∵", Because: "∵", because: "∵", bemptyv: "⦰", bepsi: "϶", bernou: "ℬ", Bernoullis: "ℬ", Beta: "Β", beta: "β", beth: "ℶ", between: "≬", Bfr: "𝔅", bfr: "𝔟", bigcap: "⋂", bigcirc: "◯", bigcup: "⋃", bigodot: "⨀", bigoplus: "⨁", bigotimes: "⨂", bigsqcup: "⨆", bigstar: "★", bigtriangledown: "▽", bigtriangleup: "△", biguplus: "⨄", bigvee: "⋁", bigwedge: "⋀", bkarow: "⤍", blacklozenge: "⧫", blacksquare: "▪", blacktriangle: "▴", blacktriangledown: "▾", blacktriangleleft: "◂", blacktriangleright: "▸", blank: "␣", blk12: "▒", blk14: "░", blk34: "▓", block: "█", bne: "=⃥", bnequiv: "≡⃥", bNot: "⫭", bnot: "⌐", Bopf: "𝔹", bopf: "𝕓", bot: "⊥", bottom: "⊥", bowtie: "⋈", boxbox: "⧉", boxDL: "╗", boxDl: "╖", boxdL: "╕", boxdl: "┐", boxDR: "╔", boxDr: "╓", boxdR: "╒", boxdr: "┌", boxH: "═", boxh: "─", boxHD: "╦", boxHd: "╤", boxhD: "╥", boxhd: "┬", boxHU: "╩", boxHu: "╧", boxhU: "╨", boxhu: "┴", boxminus: "⊟", boxplus: "⊞", boxtimes: "⊠", boxUL: "╝", boxUl: "╜", boxuL: "╛", boxul: "┘", boxUR: "╚", boxUr: "╙", boxuR: "╘", boxur: "└", boxV: "║", boxv: "│", boxVH: "╬", boxVh: "╫", boxvH: "╪", boxvh: "┼", boxVL: "╣", boxVl: "╢", boxvL: "╡", boxvl: "┤", boxVR: "╠", boxVr: "╟", boxvR: "╞", boxvr: "├", bprime: "‵", Breve: "˘", breve: "˘", brvbar: "¦", Bscr: "ℬ", bscr: "𝒷", bsemi: "⁏", bsim: "∽", bsime: "⋍", bsol: "\\", bsolb: "⧅", bsolhsub: "⟈", bull: "•", bullet: "•", bump: "≎", bumpE: "⪮", bumpe: "≏", Bumpeq: "≎", bumpeq: "≏", Cacute: "Ć", cacute: "ć", Cap: "⋒", cap: "∩", capand: "⩄", capbrcup: "⩉", capcap: "⩋", capcup: "⩇", capdot: "⩀", CapitalDifferentialD: "ⅅ", caps: "∩︀", caret: "⁁", caron: "ˇ", Cayleys: "ℭ", ccaps: "⩍", Ccaron: "Č", ccaron: "č", Ccedil: "Ç", ccedil: "ç", Ccirc: "Ĉ", ccirc: "ĉ", Cconint: "∰", ccups: "⩌", ccupssm: "⩐", Cdot: "Ċ", cdot: "ċ", cedil: "¸", Cedilla: "¸", cemptyv: "⦲", cent: "¢", CenterDot: "·", centerdot: "·", Cfr: "ℭ", cfr: "𝔠", CHcy: "Ч", chcy: "ч", check: "✓", checkmark: "✓", Chi: "Χ", chi: "χ", cir: "○", circ: "ˆ", circeq: "≗", circlearrowleft: "↺", circlearrowright: "↻", circledast: "⊛", circledcirc: "⊚", circleddash: "⊝", CircleDot: "⊙", circledR: "®", circledS: "Ⓢ", CircleMinus: "⊖", CirclePlus: "⊕", CircleTimes: "⊗", cirE: "⧃", cire: "≗", cirfnint: "⨐", cirmid: "⫯", cirscir: "⧂", ClockwiseContourIntegral: "∲", CloseCurlyDoubleQuote: "”", CloseCurlyQuote: "’", clubs: "♣", clubsuit: "♣", Colon: "∷", colon: ":", Colone: "⩴", colone: "≔", coloneq: "≔", comma: ",", commat: "@", comp: "∁", compfn: "∘", complement: "∁", complexes: "ℂ", cong: "≅", congdot: "⩭", Congruent: "≡", Conint: "∯", conint: "∮", ContourIntegral: "∮", Copf: "ℂ", copf: "𝕔", coprod: "∐", Coproduct: "∐", COPY: "©", copy: "©", copysr: "℗", CounterClockwiseContourIntegral: "∳", crarr: "↵", Cross: "⨯", cross: "✗", Cscr: "𝒞", cscr: "𝒸", csub: "⫏", csube: "⫑", csup: "⫐", csupe: "⫒", ctdot: "⋯", cudarrl: "⤸", cudarrr: "⤵", cuepr: "⋞", cuesc: "⋟", cularr: "↶", cularrp: "⤽", Cup: "⋓", cup: "∪", cupbrcap: "⩈", CupCap: "≍", cupcap: "⩆", cupcup: "⩊", cupdot: "⊍", cupor: "⩅", cups: "∪︀", curarr: "↷", curarrm: "⤼", curlyeqprec: "⋞", curlyeqsucc: "⋟", curlyvee: "⋎", curlywedge: "⋏", curren: "¤", curvearrowleft: "↶", curvearrowright: "↷", cuvee: "⋎", cuwed: "⋏", cwconint: "∲", cwint: "∱", cylcty: "⌭", Dagger: "‡", dagger: "†", daleth: "ℸ", Darr: "↡", dArr: "⇓", darr: "↓", dash: "‐", Dashv: "⫤", dashv: "⊣", dbkarow: "⤏", dblac: "˝", Dcaron: "Ď", dcaron: "ď", Dcy: "Д", dcy: "д", DD: "ⅅ", dd: "ⅆ", ddagger: "‡", ddarr: "⇊", DDotrahd: "⤑", ddotseq: "⩷", deg: "°", Del: "∇", Delta: "Δ", delta: "δ", demptyv: "⦱", dfisht: "⥿", Dfr: "𝔇", dfr: "𝔡", dHar: "⥥", dharl: "⇃", dharr: "⇂", DiacriticalAcute: "´", DiacriticalDot: "˙", DiacriticalDoubleAcute: "˝", DiacriticalGrave: "`", DiacriticalTilde: "˜", diam: "⋄", Diamond: "⋄", diamond: "⋄", diamondsuit: "♦", diams: "♦", die: "¨", DifferentialD: "ⅆ", digamma: "ϝ", disin: "⋲", div: "÷", divide: "÷", divideontimes: "⋇", divonx: "⋇", DJcy: "Ђ", djcy: "ђ", dlcorn: "⌞", dlcrop: "⌍", dollar: "$", Dopf: "𝔻", dopf: "𝕕", Dot: "¨", dot: "˙", DotDot: "⃜", doteq: "≐", doteqdot: "≑", DotEqual: "≐", dotminus: "∸", dotplus: "∔", dotsquare: "⊡", doublebarwedge: "⌆", DoubleContourIntegral: "∯", DoubleDot: "¨", DoubleDownArrow: "⇓", DoubleLeftArrow: "⇐", DoubleLeftRightArrow: "⇔", DoubleLeftTee: "⫤", DoubleLongLeftArrow: "⟸", DoubleLongLeftRightArrow: "⟺", DoubleLongRightArrow: "⟹", DoubleRightArrow: "⇒", DoubleRightTee: "⊨", DoubleUpArrow: "⇑", DoubleUpDownArrow: "⇕", DoubleVerticalBar: "∥", DownArrow: "↓", Downarrow: "⇓", downarrow: "↓", DownArrowBar: "⤓", DownArrowUpArrow: "⇵", DownBreve: "̑", downdownarrows: "⇊", downharpoonleft: "⇃", downharpoonright: "⇂", DownLeftRightVector: "⥐", DownLeftTeeVector: "⥞", DownLeftVector: "↽", DownLeftVectorBar: "⥖", DownRightTeeVector: "⥟", DownRightVector: "⇁", DownRightVectorBar: "⥗", DownTee: "⊤", DownTeeArrow: "↧", drbkarow: "⤐", drcorn: "⌟", drcrop: "⌌", Dscr: "𝒟", dscr: "𝒹", DScy: "Ѕ", dscy: "ѕ", dsol: "⧶", Dstrok: "Đ", dstrok: "đ", dtdot: "⋱", dtri: "▿", dtrif: "▾", duarr: "⇵", duhar: "⥯", dwangle: "⦦", DZcy: "Џ", dzcy: "џ", dzigrarr: "⟿", Eacute: "É", eacute: "é", easter: "⩮", Ecaron: "Ě", ecaron: "ě", ecir: "≖", Ecirc: "Ê", ecirc: "ê", ecolon: "≕", Ecy: "Э", ecy: "э", eDDot: "⩷", Edot: "Ė", eDot: "≑", edot: "ė", ee: "ⅇ", efDot: "≒", Efr: "𝔈", efr: "𝔢", eg: "⪚", Egrave: "È", egrave: "è", egs: "⪖", egsdot: "⪘", el: "⪙", Element: "∈", elinters: "⏧", ell: "ℓ", els: "⪕", elsdot: "⪗", Emacr: "Ē", emacr: "ē", empty: "∅", emptyset: "∅", EmptySmallSquare: "◻", emptyv: "∅", EmptyVerySmallSquare: "▫", emsp: " ", emsp13: " ", emsp14: " ", ENG: "Ŋ", eng: "ŋ", ensp: " ", Eogon: "Ę", eogon: "ę", Eopf: "𝔼", eopf: "𝕖", epar: "⋕", eparsl: "⧣", eplus: "⩱", epsi: "ε", Epsilon: "Ε", epsilon: "ε", epsiv: "ϵ", eqcirc: "≖", eqcolon: "≕", eqsim: "≂", eqslantgtr: "⪖", eqslantless: "⪕", Equal: "⩵", equals: "=", EqualTilde: "≂", equest: "≟", Equilibrium: "⇌", equiv: "≡", equivDD: "⩸", eqvparsl: "⧥", erarr: "⥱", erDot: "≓", Escr: "ℰ", escr: "ℯ", esdot: "≐", Esim: "⩳", esim: "≂", Eta: "Η", eta: "η", ETH: "Ð", eth: "ð", Euml: "Ë", euml: "ë", euro: "€", excl: "!", exist: "∃", Exists: "∃", expectation: "ℰ", ExponentialE: "ⅇ", exponentiale: "ⅇ", fallingdotseq: "≒", Fcy: "Ф", fcy: "ф", female: "♀", ffilig: "ffi", fflig: "ff", ffllig: "ffl", Ffr: "𝔉", ffr: "𝔣", filig: "fi", FilledSmallSquare: "◼", FilledVerySmallSquare: "▪", fjlig: "fj", flat: "♭", fllig: "fl", fltns: "▱", fnof: "ƒ", Fopf: "𝔽", fopf: "𝕗", ForAll: "∀", forall: "∀", fork: "⋔", forkv: "⫙", Fouriertrf: "ℱ", fpartint: "⨍", frac12: "½", frac13: "⅓", frac14: "¼", frac15: "⅕", frac16: "⅙", frac18: "⅛", frac23: "⅔", frac25: "⅖", frac34: "¾", frac35: "⅗", frac38: "⅜", frac45: "⅘", frac56: "⅚", frac58: "⅝", frac78: "⅞", frasl: "⁄", frown: "⌢", Fscr: "ℱ", fscr: "𝒻", gacute: "ǵ", Gamma: "Γ", gamma: "γ", Gammad: "Ϝ", gammad: "ϝ", gap: "⪆", Gbreve: "Ğ", gbreve: "ğ", Gcedil: "Ģ", Gcirc: "Ĝ", gcirc: "ĝ", Gcy: "Г", gcy: "г", Gdot: "Ġ", gdot: "ġ", gE: "≧", ge: "≥", gEl: "⪌", gel: "⋛", geq: "≥", geqq: "≧", geqslant: "⩾", ges: "⩾", gescc: "⪩", gesdot: "⪀", gesdoto: "⪂", gesdotol: "⪄", gesl: "⋛︀", gesles: "⪔", Gfr: "𝔊", gfr: "𝔤", Gg: "⋙", gg: "≫", ggg: "⋙", gimel: "ℷ", GJcy: "Ѓ", gjcy: "ѓ", gl: "≷", gla: "⪥", glE: "⪒", glj: "⪤", gnap: "⪊", gnapprox: "⪊", gnE: "≩", gne: "⪈", gneq: "⪈", gneqq: "≩", gnsim: "⋧", Gopf: "𝔾", gopf: "𝕘", grave: "`", GreaterEqual: "≥", GreaterEqualLess: "⋛", GreaterFullEqual: "≧", GreaterGreater: "⪢", GreaterLess: "≷", GreaterSlantEqual: "⩾", GreaterTilde: "≳", Gscr: "𝒢", gscr: "ℊ", gsim: "≳", gsime: "⪎", gsiml: "⪐", Gt: "≫", GT: ">", gt: ">", gtcc: "⪧", gtcir: "⩺", gtdot: "⋗", gtlPar: "⦕", gtquest: "⩼", gtrapprox: "⪆", gtrarr: "⥸", gtrdot: "⋗", gtreqless: "⋛", gtreqqless: "⪌", gtrless: "≷", gtrsim: "≳", gvertneqq: "≩︀", gvnE: "≩︀", Hacek: "ˇ", hairsp: " ", half: "½", hamilt: "ℋ", HARDcy: "Ъ", hardcy: "ъ", hArr: "⇔", harr: "↔", harrcir: "⥈", harrw: "↭", Hat: "^", hbar: "ℏ", Hcirc: "Ĥ", hcirc: "ĥ", hearts: "♥", heartsuit: "♥", hellip: "…", hercon: "⊹", Hfr: "ℌ", hfr: "𝔥", HilbertSpace: "ℋ", hksearow: "⤥", hkswarow: "⤦", hoarr: "⇿", homtht: "∻", hookleftarrow: "↩", hookrightarrow: "↪", Hopf: "ℍ", hopf: "𝕙", horbar: "―", HorizontalLine: "─", Hscr: "ℋ", hscr: "𝒽", hslash: "ℏ", Hstrok: "Ħ", hstrok: "ħ", HumpDownHump: "≎", HumpEqual: "≏", hybull: "⁃", hyphen: "‐", Iacute: "Í", iacute: "í", ic: "", Icirc: "Î", icirc: "î", Icy: "И", icy: "и", Idot: "İ", IEcy: "Е", iecy: "е", iexcl: "¡", iff: "⇔", Ifr: "ℑ", ifr: "𝔦", Igrave: "Ì", igrave: "ì", ii: "ⅈ", iiiint: "⨌", iiint: "∭", iinfin: "⧜", iiota: "℩", IJlig: "IJ", ijlig: "ij", Im: "ℑ", Imacr: "Ī", imacr: "ī", image: "ℑ", ImaginaryI: "ⅈ", imagline: "ℐ", imagpart: "ℑ", imath: "ı", imof: "⊷", imped: "Ƶ", Implies: "⇒", in: "∈", incare: "℅", infin: "∞", infintie: "⧝", inodot: "ı", Int: "∬", int: "∫", intcal: "⊺", integers: "ℤ", Integral: "∫", intercal: "⊺", Intersection: "⋂", intlarhk: "⨗", intprod: "⨼", InvisibleComma: "", InvisibleTimes: "", IOcy: "Ё", iocy: "ё", Iogon: "Į", iogon: "į", Iopf: "𝕀", iopf: "𝕚", Iota: "Ι", iota: "ι", iprod: "⨼", iquest: "¿", Iscr: "ℐ", iscr: "𝒾", isin: "∈", isindot: "⋵", isinE: "⋹", isins: "⋴", isinsv: "⋳", isinv: "∈", it: "", Itilde: "Ĩ", itilde: "ĩ", Iukcy: "І", iukcy: "і", Iuml: "Ï", iuml: "ï", Jcirc: "Ĵ", jcirc: "ĵ", Jcy: "Й", jcy: "й", Jfr: "𝔍", jfr: "𝔧", jmath: "ȷ", Jopf: "𝕁", jopf: "𝕛", Jscr: "𝒥", jscr: "𝒿", Jsercy: "Ј", jsercy: "ј", Jukcy: "Є", jukcy: "є", Kappa: "Κ", kappa: "κ", kappav: "ϰ", Kcedil: "Ķ", kcedil: "ķ", Kcy: "К", kcy: "к", Kfr: "𝔎", kfr: "𝔨", kgreen: "ĸ", KHcy: "Х", khcy: "х", KJcy: "Ќ", kjcy: "ќ", Kopf: "𝕂", kopf: "𝕜", Kscr: "𝒦", kscr: "𝓀", lAarr: "⇚", Lacute: "Ĺ", lacute: "ĺ", laemptyv: "⦴", lagran: "ℒ", Lambda: "Λ", lambda: "λ", Lang: "⟪", lang: "⟨", langd: "⦑", langle: "⟨", lap: "⪅", Laplacetrf: "ℒ", laquo: "«", Larr: "↞", lArr: "⇐", larr: "←", larrb: "⇤", larrbfs: "⤟", larrfs: "⤝", larrhk: "↩", larrlp: "↫", larrpl: "⤹", larrsim: "⥳", larrtl: "↢", lat: "⪫", lAtail: "⤛", latail: "⤙", late: "⪭", lates: "⪭︀", lBarr: "⤎", lbarr: "⤌", lbbrk: "❲", lbrace: "{", lbrack: "[", lbrke: "⦋", lbrksld: "⦏", lbrkslu: "⦍", Lcaron: "Ľ", lcaron: "ľ", Lcedil: "Ļ", lcedil: "ļ", lceil: "⌈", lcub: "{", Lcy: "Л", lcy: "л", ldca: "⤶", ldquo: "“", ldquor: "„", ldrdhar: "⥧", ldrushar: "⥋", ldsh: "↲", lE: "≦", le: "≤", LeftAngleBracket: "⟨", LeftArrow: "←", Leftarrow: "⇐", leftarrow: "←", LeftArrowBar: "⇤", LeftArrowRightArrow: "⇆", leftarrowtail: "↢", LeftCeiling: "⌈", LeftDoubleBracket: "⟦", LeftDownTeeVector: "⥡", LeftDownVector: "⇃", LeftDownVectorBar: "⥙", LeftFloor: "⌊", leftharpoondown: "↽", leftharpoonup: "↼", leftleftarrows: "⇇", LeftRightArrow: "↔", Leftrightarrow: "⇔", leftrightarrow: "↔", leftrightarrows: "⇆", leftrightharpoons: "⇋", leftrightsquigarrow: "↭", LeftRightVector: "⥎", LeftTee: "⊣", LeftTeeArrow: "↤", LeftTeeVector: "⥚", leftthreetimes: "⋋", LeftTriangle: "⊲", LeftTriangleBar: "⧏", LeftTriangleEqual: "⊴", LeftUpDownVector: "⥑", LeftUpTeeVector: "⥠", LeftUpVector: "↿", LeftUpVectorBar: "⥘", LeftVector: "↼", LeftVectorBar: "⥒", lEg: "⪋", leg: "⋚", leq: "≤", leqq: "≦", leqslant: "⩽", les: "⩽", lescc: "⪨", lesdot: "⩿", lesdoto: "⪁", lesdotor: "⪃", lesg: "⋚︀", lesges: "⪓", lessapprox: "⪅", lessdot: "⋖", lesseqgtr: "⋚", lesseqqgtr: "⪋", LessEqualGreater: "⋚", LessFullEqual: "≦", LessGreater: "≶", lessgtr: "≶", LessLess: "⪡", lesssim: "≲", LessSlantEqual: "⩽", LessTilde: "≲", lfisht: "⥼", lfloor: "⌊", Lfr: "𝔏", lfr: "𝔩", lg: "≶", lgE: "⪑", lHar: "⥢", lhard: "↽", lharu: "↼", lharul: "⥪", lhblk: "▄", LJcy: "Љ", ljcy: "љ", Ll: "⋘", ll: "≪", llarr: "⇇", llcorner: "⌞", Lleftarrow: "⇚", llhard: "⥫", lltri: "◺", Lmidot: "Ŀ", lmidot: "ŀ", lmoust: "⎰", lmoustache: "⎰", lnap: "⪉", lnapprox: "⪉", lnE: "≨", lne: "⪇", lneq: "⪇", lneqq: "≨", lnsim: "⋦", loang: "⟬", loarr: "⇽", lobrk: "⟦", LongLeftArrow: "⟵", Longleftarrow: "⟸", longleftarrow: "⟵", LongLeftRightArrow: "⟷", Longleftrightarrow: "⟺", longleftrightarrow: "⟷", longmapsto: "⟼", LongRightArrow: "⟶", Longrightarrow: "⟹", longrightarrow: "⟶", looparrowleft: "↫", looparrowright: "↬", lopar: "⦅", Lopf: "𝕃", lopf: "𝕝", loplus: "⨭", lotimes: "⨴", lowast: "∗", lowbar: "_", LowerLeftArrow: "↙", LowerRightArrow: "↘", loz: "◊", lozenge: "◊", lozf: "⧫", lpar: "(", lparlt: "⦓", lrarr: "⇆", lrcorner: "⌟", lrhar: "⇋", lrhard: "⥭", lrm: "", lrtri: "⊿", lsaquo: "‹", Lscr: "ℒ", lscr: "𝓁", Lsh: "↰", lsh: "↰", lsim: "≲", lsime: "⪍", lsimg: "⪏", lsqb: "[", lsquo: "‘", lsquor: "‚", Lstrok: "Ł", lstrok: "ł", Lt: "≪", LT: "<", lt: "<", ltcc: "⪦", ltcir: "⩹", ltdot: "⋖", lthree: "⋋", ltimes: "⋉", ltlarr: "⥶", ltquest: "⩻", ltri: "◃", ltrie: "⊴", ltrif: "◂", ltrPar: "⦖", lurdshar: "⥊", luruhar: "⥦", lvertneqq: "≨︀", lvnE: "≨︀", macr: "¯", male: "♂", malt: "✠", maltese: "✠", Map: "⤅", map: "↦", mapsto: "↦", mapstodown: "↧", mapstoleft: "↤", mapstoup: "↥", marker: "▮", mcomma: "⨩", Mcy: "М", mcy: "м", mdash: "—", mDDot: "∺", measuredangle: "∡", MediumSpace: " ", Mellintrf: "ℳ", Mfr: "𝔐", mfr: "𝔪", mho: "℧", micro: "µ", mid: "∣", midast: "*", midcir: "⫰", middot: "·", minus: "−", minusb: "⊟", minusd: "∸", minusdu: "⨪", MinusPlus: "∓", mlcp: "⫛", mldr: "…", mnplus: "∓", models: "⊧", Mopf: "𝕄", mopf: "𝕞", mp: "∓", Mscr: "ℳ", mscr: "𝓂", mstpos: "∾", Mu: "Μ", mu: "μ", multimap: "⊸", mumap: "⊸", nabla: "∇", Nacute: "Ń", nacute: "ń", nang: "∠⃒", nap: "≉", napE: "⩰̸", napid: "≋̸", napos: "ʼn", napprox: "≉", natur: "♮", natural: "♮", naturals: "ℕ", nbsp: " ", nbump: "≎̸", nbumpe: "≏̸", ncap: "⩃", Ncaron: "Ň", ncaron: "ň", Ncedil: "Ņ", ncedil: "ņ", ncong: "≇", ncongdot: "⩭̸", ncup: "⩂", Ncy: "Н", ncy: "н", ndash: "–", ne: "≠", nearhk: "⤤", neArr: "⇗", nearr: "↗", nearrow: "↗", nedot: "≐̸", NegativeMediumSpace: "", NegativeThickSpace: "", NegativeThinSpace: "", NegativeVeryThinSpace: "", nequiv: "≢", nesear: "⤨", nesim: "≂̸", NestedGreaterGreater: "≫", NestedLessLess: "≪", NewLine: "\n", nexist: "∄", nexists: "∄", Nfr: "𝔑", nfr: "𝔫", ngE: "≧̸", nge: "≱", ngeq: "≱", ngeqq: "≧̸", ngeqslant: "⩾̸", nges: "⩾̸", nGg: "⋙̸", ngsim: "≵", nGt: "≫⃒", ngt: "≯", ngtr: "≯", nGtv: "≫̸", nhArr: "⇎", nharr: "↮", nhpar: "⫲", ni: "∋", nis: "⋼", nisd: "⋺", niv: "∋", NJcy: "Њ", njcy: "њ", nlArr: "⇍", nlarr: "↚", nldr: "‥", nlE: "≦̸", nle: "≰", nLeftarrow: "⇍", nleftarrow: "↚", nLeftrightarrow: "⇎", nleftrightarrow: "↮", nleq: "≰", nleqq: "≦̸", nleqslant: "⩽̸", nles: "⩽̸", nless: "≮", nLl: "⋘̸", nlsim: "≴", nLt: "≪⃒", nlt: "≮", nltri: "⋪", nltrie: "⋬", nLtv: "≪̸", nmid: "∤", NoBreak: "", NonBreakingSpace: " ", Nopf: "ℕ", nopf: "𝕟", Not: "⫬", not: "¬", NotCongruent: "≢", NotCupCap: "≭", NotDoubleVerticalBar: "∦", NotElement: "∉", NotEqual: "≠", NotEqualTilde: "≂̸", NotExists: "∄", NotGreater: "≯", NotGreaterEqual: "≱", NotGreaterFullEqual: "≧̸", NotGreaterGreater: "≫̸", NotGreaterLess: "≹", NotGreaterSlantEqual: "⩾̸", NotGreaterTilde: "≵", NotHumpDownHump: "≎̸", NotHumpEqual: "≏̸", notin: "∉", notindot: "⋵̸", notinE: "⋹̸", notinva: "∉", notinvb: "⋷", notinvc: "⋶", NotLeftTriangle: "⋪", NotLeftTriangleBar: "⧏̸", NotLeftTriangleEqual: "⋬", NotLess: "≮", NotLessEqual: "≰", NotLessGreater: "≸", NotLessLess: "≪̸", NotLessSlantEqual: "⩽̸", NotLessTilde: "≴", NotNestedGreaterGreater: "⪢̸", NotNestedLessLess: "⪡̸", notni: "∌", notniva: "∌", notnivb: "⋾", notnivc: "⋽", NotPrecedes: "⊀", NotPrecedesEqual: "⪯̸", NotPrecedesSlantEqual: "⋠", NotReverseElement: "∌", NotRightTriangle: "⋫", NotRightTriangleBar: "⧐̸", NotRightTriangleEqual: "⋭", NotSquareSubset: "⊏̸", NotSquareSubsetEqual: "⋢", NotSquareSuperset: "⊐̸", NotSquareSupersetEqual: "⋣", NotSubset: "⊂⃒", NotSubsetEqual: "⊈", NotSucceeds: "⊁", NotSucceedsEqual: "⪰̸", NotSucceedsSlantEqual: "⋡", NotSucceedsTilde: "≿̸", NotSuperset: "⊃⃒", NotSupersetEqual: "⊉", NotTilde: "≁", NotTildeEqual: "≄", NotTildeFullEqual: "≇", NotTildeTilde: "≉", NotVerticalBar: "∤", npar: "∦", nparallel: "∦", nparsl: "⫽⃥", npart: "∂̸", npolint: "⨔", npr: "⊀", nprcue: "⋠", npre: "⪯̸", nprec: "⊀", npreceq: "⪯̸", nrArr: "⇏", nrarr: "↛", nrarrc: "⤳̸", nrarrw: "↝̸", nRightarrow: "⇏", nrightarrow: "↛", nrtri: "⋫", nrtrie: "⋭", nsc: "⊁", nsccue: "⋡", nsce: "⪰̸", Nscr: "𝒩", nscr: "𝓃", nshortmid: "∤", nshortparallel: "∦", nsim: "≁", nsime: "≄", nsimeq: "≄", nsmid: "∤", nspar: "∦", nsqsube: "⋢", nsqsupe: "⋣", nsub: "⊄", nsubE: "⫅̸", nsube: "⊈", nsubset: "⊂⃒", nsubseteq: "⊈", nsubseteqq: "⫅̸", nsucc: "⊁", nsucceq: "⪰̸", nsup: "⊅", nsupE: "⫆̸", nsupe: "⊉", nsupset: "⊃⃒", nsupseteq: "⊉", nsupseteqq: "⫆̸", ntgl: "≹", Ntilde: "Ñ", ntilde: "ñ", ntlg: "≸", ntriangleleft: "⋪", ntrianglelefteq: "⋬", ntriangleright: "⋫", ntrianglerighteq: "⋭", Nu: "Ν", nu: "ν", num: "#", numero: "№", numsp: " ", nvap: "≍⃒", nVDash: "⊯", nVdash: "⊮", nvDash: "⊭", nvdash: "⊬", nvge: "≥⃒", nvgt: ">⃒", nvHarr: "⤄", nvinfin: "⧞", nvlArr: "⤂", nvle: "≤⃒", nvlt: "<⃒", nvltrie: "⊴⃒", nvrArr: "⤃", nvrtrie: "⊵⃒", nvsim: "∼⃒", nwarhk: "⤣", nwArr: "⇖", nwarr: "↖", nwarrow: "↖", nwnear: "⤧", Oacute: "Ó", oacute: "ó", oast: "⊛", ocir: "⊚", Ocirc: "Ô", ocirc: "ô", Ocy: "О", ocy: "о", odash: "⊝", Odblac: "Ő", odblac: "ő", odiv: "⨸", odot: "⊙", odsold: "⦼", OElig: "Œ", oelig: "œ", ofcir: "⦿", Ofr: "𝔒", ofr: "𝔬", ogon: "˛", Ograve: "Ò", ograve: "ò", ogt: "⧁", ohbar: "⦵", ohm: "Ω", oint: "∮", olarr: "↺", olcir: "⦾", olcross: "⦻", oline: "‾", olt: "⧀", Omacr: "Ō", omacr: "ō", Omega: "Ω", omega: "ω", Omicron: "Ο", omicron: "ο", omid: "⦶", ominus: "⊖", Oopf: "𝕆", oopf: "𝕠", opar: "⦷", OpenCurlyDoubleQuote: "“", OpenCurlyQuote: "‘", operp: "⦹", oplus: "⊕", Or: "⩔", or: "∨", orarr: "↻", ord: "⩝", order: "ℴ", orderof: "ℴ", ordf: "ª", ordm: "º", origof: "⊶", oror: "⩖", orslope: "⩗", orv: "⩛", oS: "Ⓢ", Oscr: "𝒪", oscr: "ℴ", Oslash: "Ø", oslash: "ø", osol: "⊘", Otilde: "Õ", otilde: "õ", Otimes: "⨷", otimes: "⊗", otimesas: "⨶", Ouml: "Ö", ouml: "ö", ovbar: "⌽", OverBar: "‾", OverBrace: "⏞", OverBracket: "⎴", OverParenthesis: "⏜", par: "∥", para: "¶", parallel: "∥", parsim: "⫳", parsl: "⫽", part: "∂", PartialD: "∂", Pcy: "П", pcy: "п", percnt: "%", period: ".", permil: "‰", perp: "⊥", pertenk: "‱", Pfr: "𝔓", pfr: "𝔭", Phi: "Φ", phi: "φ", phiv: "ϕ", phmmat: "ℳ", phone: "☎", Pi: "Π", pi: "π", pitchfork: "⋔", piv: "ϖ", planck: "ℏ", planckh: "ℎ", plankv: "ℏ", plus: "+", plusacir: "⨣", plusb: "⊞", pluscir: "⨢", plusdo: "∔", plusdu: "⨥", pluse: "⩲", PlusMinus: "±", plusmn: "±", plussim: "⨦", plustwo: "⨧", pm: "±", Poincareplane: "ℌ", pointint: "⨕", Popf: "ℙ", popf: "𝕡", pound: "£", Pr: "⪻", pr: "≺", prap: "⪷", prcue: "≼", prE: "⪳", pre: "⪯", prec: "≺", precapprox: "⪷", preccurlyeq: "≼", Precedes: "≺", PrecedesEqual: "⪯", PrecedesSlantEqual: "≼", PrecedesTilde: "≾", preceq: "⪯", precnapprox: "⪹", precneqq: "⪵", precnsim: "⋨", precsim: "≾", Prime: "″", prime: "′", primes: "ℙ", prnap: "⪹", prnE: "⪵", prnsim: "⋨", prod: "∏", Product: "∏", profalar: "⌮", profline: "⌒", profsurf: "⌓", prop: "∝", Proportion: "∷", Proportional: "∝", propto: "∝", prsim: "≾", prurel: "⊰", Pscr: "𝒫", pscr: "𝓅", Psi: "Ψ", psi: "ψ", puncsp: " ", Qfr: "𝔔", qfr: "𝔮", qint: "⨌", Qopf: "ℚ", qopf: "𝕢", qprime: "⁗", Qscr: "𝒬", qscr: "𝓆", quaternions: "ℍ", quatint: "⨖", quest: "?", questeq: "≟", QUOT: '"', quot: '"', rAarr: "⇛", race: "∽̱", Racute: "Ŕ", racute: "ŕ", radic: "√", raemptyv: "⦳", Rang: "⟫", rang: "⟩", rangd: "⦒", range: "⦥", rangle: "⟩", raquo: "»", Rarr: "↠", rArr: "⇒", rarr: "→", rarrap: "⥵", rarrb: "⇥", rarrbfs: "⤠", rarrc: "⤳", rarrfs: "⤞", rarrhk: "↪", rarrlp: "↬", rarrpl: "⥅", rarrsim: "⥴", Rarrtl: "⤖", rarrtl: "↣", rarrw: "↝", rAtail: "⤜", ratail: "⤚", ratio: "∶", rationals: "ℚ", RBarr: "⤐", rBarr: "⤏", rbarr: "⤍", rbbrk: "❳", rbrace: "}", rbrack: "]", rbrke: "⦌", rbrksld: "⦎", rbrkslu: "⦐", Rcaron: "Ř", rcaron: "ř", Rcedil: "Ŗ", rcedil: "ŗ", rceil: "⌉", rcub: "}", Rcy: "Р", rcy: "р", rdca: "⤷", rdldhar: "⥩", rdquo: "”", rdquor: "”", rdsh: "↳", Re: "ℜ", real: "ℜ", realine: "ℛ", realpart: "ℜ", reals: "ℝ", rect: "▭", REG: "®", reg: "®", ReverseElement: "∋", ReverseEquilibrium: "⇋", ReverseUpEquilibrium: "⥯", rfisht: "⥽", rfloor: "⌋", Rfr: "ℜ", rfr: "𝔯", rHar: "⥤", rhard: "⇁", rharu: "⇀", rharul: "⥬", Rho: "Ρ", rho: "ρ", rhov: "ϱ", RightAngleBracket: "⟩", RightArrow: "→", Rightarrow: "⇒", rightarrow: "→", RightArrowBar: "⇥", RightArrowLeftArrow: "⇄", rightarrowtail: "↣", RightCeiling: "⌉", RightDoubleBracket: "⟧", RightDownTeeVector: "⥝", RightDownVector: "⇂", RightDownVectorBar: "⥕", RightFloor: "⌋", rightharpoondown: "⇁", rightharpoonup: "⇀", rightleftarrows: "⇄", rightleftharpoons: "⇌", rightrightarrows: "⇉", rightsquigarrow: "↝", RightTee: "⊢", RightTeeArrow: "↦", RightTeeVector: "⥛", rightthreetimes: "⋌", RightTriangle: "⊳", RightTriangleBar: "⧐", RightTriangleEqual: "⊵", RightUpDownVector: "⥏", RightUpTeeVector: "⥜", RightUpVector: "↾", RightUpVectorBar: "⥔", RightVector: "⇀", RightVectorBar: "⥓", ring: "˚", risingdotseq: "≓", rlarr: "⇄", rlhar: "⇌", rlm: "", rmoust: "⎱", rmoustache: "⎱", rnmid: "⫮", roang: "⟭", roarr: "⇾", robrk: "⟧", ropar: "⦆", Ropf: "ℝ", ropf: "𝕣", roplus: "⨮", rotimes: "⨵", RoundImplies: "⥰", rpar: ")", rpargt: "⦔", rppolint: "⨒", rrarr: "⇉", Rrightarrow: "⇛", rsaquo: "›", Rscr: "ℛ", rscr: "𝓇", Rsh: "↱", rsh: "↱", rsqb: "]", rsquo: "’", rsquor: "’", rthree: "⋌", rtimes: "⋊", rtri: "▹", rtrie: "⊵", rtrif: "▸", rtriltri: "⧎", RuleDelayed: "⧴", ruluhar: "⥨", rx: "℞", Sacute: "Ś", sacute: "ś", sbquo: "‚", Sc: "⪼", sc: "≻", scap: "⪸", Scaron: "Š", scaron: "š", sccue: "≽", scE: "⪴", sce: "⪰", Scedil: "Ş", scedil: "ş", Scirc: "Ŝ", scirc: "ŝ", scnap: "⪺", scnE: "⪶", scnsim: "⋩", scpolint: "⨓", scsim: "≿", Scy: "С", scy: "с", sdot: "⋅", sdotb: "⊡", sdote: "⩦", searhk: "⤥", seArr: "⇘", searr: "↘", searrow: "↘", sect: "§", semi: ";", seswar: "⤩", setminus: "∖", setmn: "∖", sext: "✶", Sfr: "𝔖", sfr: "𝔰", sfrown: "⌢", sharp: "♯", SHCHcy: "Щ", shchcy: "щ", SHcy: "Ш", shcy: "ш", ShortDownArrow: "↓", ShortLeftArrow: "←", shortmid: "∣", shortparallel: "∥", ShortRightArrow: "→", ShortUpArrow: "↑", shy: "", Sigma: "Σ", sigma: "σ", sigmaf: "ς", sigmav: "ς", sim: "∼", simdot: "⩪", sime: "≃", simeq: "≃", simg: "⪞", simgE: "⪠", siml: "⪝", simlE: "⪟", simne: "≆", simplus: "⨤", simrarr: "⥲", slarr: "←", SmallCircle: "∘", smallsetminus: "∖", smashp: "⨳", smeparsl: "⧤", smid: "∣", smile: "⌣", smt: "⪪", smte: "⪬", smtes: "⪬︀", SOFTcy: "Ь", softcy: "ь", sol: "/", solb: "⧄", solbar: "⌿", Sopf: "𝕊", sopf: "𝕤", spades: "♠", spadesuit: "♠", spar: "∥", sqcap: "⊓", sqcaps: "⊓︀", sqcup: "⊔", sqcups: "⊔︀", Sqrt: "√", sqsub: "⊏", sqsube: "⊑", sqsubset: "⊏", sqsubseteq: "⊑", sqsup: "⊐", sqsupe: "⊒", sqsupset: "⊐", sqsupseteq: "⊒", squ: "□", Square: "□", square: "□", SquareIntersection: "⊓", SquareSubset: "⊏", SquareSubsetEqual: "⊑", SquareSuperset: "⊐", SquareSupersetEqual: "⊒", SquareUnion: "⊔", squarf: "▪", squf: "▪", srarr: "→", Sscr: "𝒮", sscr: "𝓈", ssetmn: "∖", ssmile: "⌣", sstarf: "⋆", Star: "⋆", star: "☆", starf: "★", straightepsilon: "ϵ", straightphi: "ϕ", strns: "¯", Sub: "⋐", sub: "⊂", subdot: "⪽", subE: "⫅", sube: "⊆", subedot: "⫃", submult: "⫁", subnE: "⫋", subne: "⊊", subplus: "⪿", subrarr: "⥹", Subset: "⋐", subset: "⊂", subseteq: "⊆", subseteqq: "⫅", SubsetEqual: "⊆", subsetneq: "⊊", subsetneqq: "⫋", subsim: "⫇", subsub: "⫕", subsup: "⫓", succ: "≻", succapprox: "⪸", succcurlyeq: "≽", Succeeds: "≻", SucceedsEqual: "⪰", SucceedsSlantEqual: "≽", SucceedsTilde: "≿", succeq: "⪰", succnapprox: "⪺", succneqq: "⪶", succnsim: "⋩", succsim: "≿", SuchThat: "∋", Sum: "∑", sum: "∑", sung: "♪", Sup: "⋑", sup: "⊃", sup1: "¹", sup2: "²", sup3: "³", supdot: "⪾", supdsub: "⫘", supE: "⫆", supe: "⊇", supedot: "⫄", Superset: "⊃", SupersetEqual: "⊇", suphsol: "⟉", suphsub: "⫗", suplarr: "⥻", supmult: "⫂", supnE: "⫌", supne: "⊋", supplus: "⫀", Supset: "⋑", supset: "⊃", supseteq: "⊇", supseteqq: "⫆", supsetneq: "⊋", supsetneqq: "⫌", supsim: "⫈", supsub: "⫔", supsup: "⫖", swarhk: "⤦", swArr: "⇙", swarr: "↙", swarrow: "↙", swnwar: "⤪", szlig: "ß", Tab: "\t", target: "⌖", Tau: "Τ", tau: "τ", tbrk: "⎴", Tcaron: "Ť", tcaron: "ť", Tcedil: "Ţ", tcedil: "ţ", Tcy: "Т", tcy: "т", tdot: "⃛", telrec: "⌕", Tfr: "𝔗", tfr: "𝔱", there4: "∴", Therefore: "∴", therefore: "∴", Theta: "Θ", theta: "θ", thetasym: "ϑ", thetav: "ϑ", thickapprox: "≈", thicksim: "∼", ThickSpace: " ", thinsp: " ", ThinSpace: " ", thkap: "≈", thksim: "∼", THORN: "Þ", thorn: "þ", Tilde: "∼", tilde: "˜", TildeEqual: "≃", TildeFullEqual: "≅", TildeTilde: "≈", times: "×", timesb: "⊠", timesbar: "⨱", timesd: "⨰", tint: "∭", toea: "⤨", top: "⊤", topbot: "⌶", topcir: "⫱", Topf: "𝕋", topf: "𝕥", topfork: "⫚", tosa: "⤩", tprime: "‴", TRADE: "™", trade: "™", triangle: "▵", triangledown: "▿", triangleleft: "◃", trianglelefteq: "⊴", triangleq: "≜", triangleright: "▹", trianglerighteq: "⊵", tridot: "◬", trie: "≜", triminus: "⨺", TripleDot: "⃛", triplus: "⨹", trisb: "⧍", tritime: "⨻", trpezium: "⏢", Tscr: "𝒯", tscr: "𝓉", TScy: "Ц", tscy: "ц", TSHcy: "Ћ", tshcy: "ћ", Tstrok: "Ŧ", tstrok: "ŧ", twixt: "≬", twoheadleftarrow: "↞", twoheadrightarrow: "↠", Uacute: "Ú", uacute: "ú", Uarr: "↟", uArr: "⇑", uarr: "↑", Uarrocir: "⥉", Ubrcy: "Ў", ubrcy: "ў", Ubreve: "Ŭ", ubreve: "ŭ", Ucirc: "Û", ucirc: "û", Ucy: "У", ucy: "у", udarr: "⇅", Udblac: "Ű", udblac: "ű", udhar: "⥮", ufisht: "⥾", Ufr: "𝔘", ufr: "𝔲", Ugrave: "Ù", ugrave: "ù", uHar: "⥣", uharl: "↿", uharr: "↾", uhblk: "▀", ulcorn: "⌜", ulcorner: "⌜", ulcrop: "⌏", ultri: "◸", Umacr: "Ū", umacr: "ū", uml: "¨", UnderBar: "_", UnderBrace: "⏟", UnderBracket: "⎵", UnderParenthesis: "⏝", Union: "⋃", UnionPlus: "⊎", Uogon: "Ų", uogon: "ų", Uopf: "𝕌", uopf: "𝕦", UpArrow: "↑", Uparrow: "⇑", uparrow: "↑", UpArrowBar: "⤒", UpArrowDownArrow: "⇅", UpDownArrow: "↕", Updownarrow: "⇕", updownarrow: "↕", UpEquilibrium: "⥮", upharpoonleft: "↿", upharpoonright: "↾", uplus: "⊎", UpperLeftArrow: "↖", UpperRightArrow: "↗", Upsi: "ϒ", upsi: "υ", upsih: "ϒ", Upsilon: "Υ", upsilon: "υ", UpTee: "⊥", UpTeeArrow: "↥", upuparrows: "⇈", urcorn: "⌝", urcorner: "⌝", urcrop: "⌎", Uring: "Ů", uring: "ů", urtri: "◹", Uscr: "𝒰", uscr: "𝓊", utdot: "⋰", Utilde: "Ũ", utilde: "ũ", utri: "▵", utrif: "▴", uuarr: "⇈", Uuml: "Ü", uuml: "ü", uwangle: "⦧", vangrt: "⦜", varepsilon: "ϵ", varkappa: "ϰ", varnothing: "∅", varphi: "ϕ", varpi: "ϖ", varpropto: "∝", vArr: "⇕", varr: "↕", varrho: "ϱ", varsigma: "ς", varsubsetneq: "⊊︀", varsubsetneqq: "⫋︀", varsupsetneq: "⊋︀", varsupsetneqq: "⫌︀", vartheta: "ϑ", vartriangleleft: "⊲", vartriangleright: "⊳", Vbar: "⫫", vBar: "⫨", vBarv: "⫩", Vcy: "В", vcy: "в", VDash: "⊫", Vdash: "⊩", vDash: "⊨", vdash: "⊢", Vdashl: "⫦", Vee: "⋁", vee: "∨", veebar: "⊻", veeeq: "≚", vellip: "⋮", Verbar: "‖", verbar: "|", Vert: "‖", vert: "|", VerticalBar: "∣", VerticalLine: "|", VerticalSeparator: "❘", VerticalTilde: "≀", VeryThinSpace: " ", Vfr: "𝔙", vfr: "𝔳", vltri: "⊲", vnsub: "⊂⃒", vnsup: "⊃⃒", Vopf: "𝕍", vopf: "𝕧", vprop: "∝", vrtri: "⊳", Vscr: "𝒱", vscr: "𝓋", vsubnE: "⫋︀", vsubne: "⊊︀", vsupnE: "⫌︀", vsupne: "⊋︀", Vvdash: "⊪", vzigzag: "⦚", Wcirc: "Ŵ", wcirc: "ŵ", wedbar: "⩟", Wedge: "⋀", wedge: "∧", wedgeq: "≙", weierp: "℘", Wfr: "𝔚", wfr: "𝔴", Wopf: "𝕎", wopf: "𝕨", wp: "℘", wr: "≀", wreath: "≀", Wscr: "𝒲", wscr: "𝓌", xcap: "⋂", xcirc: "◯", xcup: "⋃", xdtri: "▽", Xfr: "𝔛", xfr: "𝔵", xhArr: "⟺", xharr: "⟷", Xi: "Ξ", xi: "ξ", xlArr: "⟸", xlarr: "⟵", xmap: "⟼", xnis: "⋻", xodot: "⨀", Xopf: "𝕏", xopf: "𝕩", xoplus: "⨁", xotime: "⨂", xrArr: "⟹", xrarr: "⟶", Xscr: "𝒳", xscr: "𝓍", xsqcup: "⨆", xuplus: "⨄", xutri: "△", xvee: "⋁", xwedge: "⋀", Yacute: "Ý", yacute: "ý", YAcy: "Я", yacy: "я", Ycirc: "Ŷ", ycirc: "ŷ", Ycy: "Ы", ycy: "ы", yen: "¥", Yfr: "𝔜", yfr: "𝔶", YIcy: "Ї", yicy: "ї", Yopf: "𝕐", yopf: "𝕪", Yscr: "𝒴", yscr: "𝓎", YUcy: "Ю", yucy: "ю", Yuml: "Ÿ", yuml: "ÿ", Zacute: "Ź", zacute: "ź", Zcaron: "Ž", zcaron: "ž", Zcy: "З", zcy: "з", Zdot: "Ż", zdot: "ż", zeetrf: "ℨ", ZeroWidthSpace: "", Zeta: "Ζ", zeta: "ζ", Zfr: "ℨ", zfr: "𝔷", ZHcy: "Ж", zhcy: "ж", zigrarr: "⇝", Zopf: "ℤ", zopf: "𝕫", Zscr: "𝒵", zscr: "𝓏", zwj: "", zwnj: "" }), t.entityMap = t.HTML_ENTITIES }, function (e, t, r) { var n = r(2).NAMESPACE, o = /[A-Z_a-z\xC0-\xD6\xD8-\xF6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/, i = new RegExp("[\\-\\.0-9" + o.source.slice(1, -1) + "\\u00B7\\u0300-\\u036F\\u203F-\\u2040]"), a = new RegExp("^" + o.source + i.source + "*(?::" + o.source + i.source + "*)?$"), s = 0, c = 1, u = 2, l = 3, d = 4, p = 5, f = 6, h = 7; function g(e, t) { this.message = e, this.locator = t, Error.captureStackTrace && Error.captureStackTrace(this, g) } function m() { } function y(e, t) { return t.lineNumber = e.lineNumber, t.columnNumber = e.columnNumber, t } function v(e, t, r, o, i, a) { function g(e, t, n) { r.attributeNames.hasOwnProperty(e) && a.fatalError("Attribute " + e + " redefined"), r.addValue(e, t.replace(/[\t\n\r]/g, " ").replace(/?\w+;/g, i), n) } for (var m, y = ++t, v = s; ;) { var b = e.charAt(y); switch (b) { case "=": if (v === c) m = e.slice(t, y), v = l; else { if (v !== u) throw new Error("attribute equal must after attrName"); v = l } break; case "'": case '"': if (v === l || v === c) { if (v === c && (a.warning('attribute value must after "="'), m = e.slice(t, y)), t = y + 1, !((y = e.indexOf(b, t)) > 0)) throw new Error("attribute value no end '" + b + "' match"); g(m, C = e.slice(t, y), t - 1), v = p } else { if (v != d) throw new Error('attribute value must after "="'); g(m, C = e.slice(t, y), t), a.warning('attribute "' + m + '" missed start quot(' + b + ")!!"), t = y + 1, v = p } break; case "/": switch (v) { case s: r.setTagName(e.slice(t, y)); case p: case f: case h: v = h, r.closed = !0; case d: case c: break; case u: r.closed = !0; break; default: throw new Error("attribute invalid close char('/')") }break; case "": return a.error("unexpected end of input"), v == s && r.setTagName(e.slice(t, y)), y; case ">": switch (v) { case s: r.setTagName(e.slice(t, y)); case p: case f: case h: break; case d: case c: "/" === (C = e.slice(t, y)).slice(-1) && (r.closed = !0, C = C.slice(0, -1)); case u: v === u && (C = m), v == d ? (a.warning('attribute "' + C + '" missed quot(")!'), g(m, C, t)) : (n.isHTML(o[""]) && C.match(/^(?:disabled|checked|selected)$/i) || a.warning('attribute "' + C + '" missed value!! "' + C + '" instead!!'), g(C, C, t)); break; case l: throw new Error("attribute value missed!!") }return y; case "": b = " "; default: if (b <= " ") switch (v) { case s: r.setTagName(e.slice(t, y)), v = f; break; case c: m = e.slice(t, y), v = u; break; case d: var C = e.slice(t, y); a.warning('attribute "' + C + '" missed quot(")!!'), g(m, C, t); case p: v = f } else switch (v) { case u: r.tagName; n.isHTML(o[""]) && m.match(/^(?:disabled|checked|selected)$/i) || a.warning('attribute "' + m + '" missed value!! "' + m + '" instead2!!'), g(m, m, t), t = y, v = c; break; case p: a.warning('attribute space is required"' + m + '"!!'); case f: v = c, t = y; break; case l: v = d, t = y; break; case h: throw new Error("elements closed character '/' and '>' must be connected to") } }y++ } } function b(e, t, r) { for (var o = e.tagName, i = null, a = e.length; a--;) { var s = e[a], c = s.qName, u = s.value; if ((f = c.indexOf(":")) > 0) var l = s.prefix = c.slice(0, f), d = c.slice(f + 1), p = "xmlns" === l && d; else d = c, l = null, p = "xmlns" === c && ""; s.localName = d, !1 !== p && (null == i && (i = {}, S(r, r = {})), r[p] = i[p] = u, s.uri = n.XMLNS, t.startPrefixMapping(p, u)) } for (a = e.length; a--;) { (l = (s = e[a]).prefix) && ("xml" === l && (s.uri = n.XML), "xmlns" !== l && (s.uri = r[l || ""])) } var f; (f = o.indexOf(":")) > 0 ? (l = e.prefix = o.slice(0, f), d = e.localName = o.slice(f + 1)) : (l = null, d = e.localName = o); var h = e.uri = r[l || ""]; if (t.startElement(h, d, o, e), !e.closed) return e.currentNSMap = r, e.localNSMap = i, !0; if (t.endElement(h, d, o), i) for (l in i) Object.prototype.hasOwnProperty.call(i, l) && t.endPrefixMapping(l) } function C(e, t, r, n, o) { if (/^(?:script|textarea)$/i.test(r)) { var i = e.indexOf("" + r + ">", t), a = e.substring(t + 1, i); if (/[&<]/.test(a)) return /^script$/i.test(r) ? (o.characters(a, 0, a.length), i) : (a = a.replace(/?\w+;/g, n), o.characters(a, 0, a.length), i) } return t + 1 } function k(e, t, r, n) { var o = n[r]; return null == o && ((o = e.lastIndexOf("" + r + ">")) < t && (o = e.lastIndexOf("" + r)), n[r] = o), o < t } function S(e, t) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) } function w(e, t, r, n) { if ("-" === e.charAt(t + 2)) return "-" === e.charAt(t + 3) ? (o = e.indexOf("--\x3e", t + 4)) > t ? (r.comment(e, t + 4, o - t - 4), o + 3) : (n.error("Unclosed comment"), -1) : -1; if ("CDATA[" == e.substr(t + 3, 6)) { var o = e.indexOf("]]>", t + 9); return r.startCDATA(), r.characters(e, t + 9, o - t - 9), r.endCDATA(), o + 3 } var i = function (e, t) { var r, n = [], o = /'[^']+'|"[^"]+"|[^\s<>\/=]+=?|(\/?\s*>|<)/g; o.lastIndex = t, o.exec(e); for (; r = o.exec(e);)if (n.push(r), r[1]) return n }(e, t), a = i.length; if (a > 1 && /!doctype/i.test(i[0][0])) { var s = i[1][0], c = !1, u = !1; a > 3 && (/^public$/i.test(i[2][0]) ? (c = i[3][0], u = a > 4 && i[4][0]) : /^system$/i.test(i[2][0]) && (u = i[3][0])); var l = i[a - 1]; return r.startDTD(s, c, u), r.endDTD(), l.index + l[0].length } return -1 } function T(e, t, r) { var n = e.indexOf("?>", t); if (n) { var o = e.substring(t, n).match(/^<\?(\S*)\s*([\s\S]*?)\s*$/); if (o) { o[0].length; return r.processingInstruction(o[1], o[2]), n + 2 } return -1 } return -1 } function E() { this.attributeNames = {} } g.prototype = new Error, g.prototype.name = g.name, m.prototype = { parse: function (e, t, r) { var o = this.domBuilder; o.startDocument(), S(t, t = {}), function (e, t, r, o, i) { function a(e) { if (e > 65535) { var t = 55296 + ((e -= 65536) >> 10), r = 56320 + (1023 & e); return String.fromCharCode(t, r) } return String.fromCharCode(e) } function s(e) { var t = e.slice(1, -1); return Object.hasOwnProperty.call(r, t) ? r[t] : "#" === t.charAt(0) ? a(parseInt(t.substr(1).replace("x", "0x"))) : (i.error("entity not found:" + e), e) } function c(t) { if (t > S) { var r = e.substring(S, t).replace(/?\w+;/g, s); f && u(S), o.characters(r, 0, t - S), S = t } } function u(t, r) { for (; t >= d && (r = p.exec(e));)l = r.index, d = l + r[0].length, f.lineNumber++; f.columnNumber = t - l + 1 } var l = 0, d = 0, p = /.*(?:\r\n?|\n)|.*$/g, f = o.locator, h = [{ currentNSMap: t }], m = {}, S = 0; for (; ;) { try { var R = e.indexOf("<", S); if (R < 0) { if (!e.substr(S).match(/^\s*$/)) { var x = o.doc, A = x.createTextNode(e.substr(S)); x.appendChild(A), o.currentElement = A } return } switch (R > S && c(R), e.charAt(R + 1)) { case "/": var B = e.indexOf(">", R + 3), I = e.substring(R + 2, B).replace(/[ \t\n\r]+$/g, ""), D = h.pop(); B < 0 ? (I = e.substring(R + 2).replace(/[\s<].*/, ""), i.error("end tag name: " + I + " is not complete:" + D.tagName), B = R + 1 + I.length) : I.match(/\s) && (I = I.replace(/[\s<].*/, ""), i.error("end tag name: " + I + " maybe not complete"), B = R + 1 + I.length); var O = D.localNSMap, _ = D.tagName == I; if (_ || D.tagName && D.tagName.toLowerCase() == I.toLowerCase()) { if (o.endElement(D.uri, D.localName, I), O) for (var N in O) Object.prototype.hasOwnProperty.call(O, N) && o.endPrefixMapping(N); _ || i.fatalError("end tag name: " + I + " is not match the current start tagName:" + D.tagName) } else h.push(D); B++; break; case "?": f && u(R), B = T(e, R, o); break; case "!": f && u(R), B = w(e, R, o, i); break; default: f && u(R); var P = new E, U = h[h.length - 1].currentNSMap, L = (B = v(e, R, P, U, s, i), P.length); if (!P.closed && k(e, B, P.tagName, m) && (P.closed = !0, r.nbsp || i.warning("unclosed xml attribute")), f && L) { for (var q = y(f, {}), M = 0; M < L; M++) { var H = P[M]; u(H.offset), H.locator = y(f, {}) } o.locator = q, b(P, o, U) && h.push(P), o.locator = f } else b(P, o, U) && h.push(P); n.isHTML(P.uri) && !P.closed ? B = C(e, B, P.tagName, s, o) : B++ } } catch (e) { if (e instanceof g) throw e; i.error("element parse error: " + e), B = -1 } B > S ? S = B : c(Math.max(R, S) + 1) } }(e, t, r, o, this.errorHandler), o.endDocument() } }, E.prototype = { setTagName: function (e) { if (!a.test(e)) throw new Error("invalid tagName:" + e); this.tagName = e }, addValue: function (e, t, r) { if (!a.test(e)) throw new Error("invalid attribute:" + e); this.attributeNames[e] = this.length, this[this.length++] = { qName: e, value: t, offset: r } }, length: 0, getLocalName: function (e) { return this[e].localName }, getLocator: function (e) { return this[e].locator }, getQName: function (e) { return this[e].qName }, getURI: function (e) { return this[e].uri }, getValue: function (e) { return this[e].value } }, t.XMLReader = m, t.ParseError = g }, function (e, t, r) { var n = r(0), o = "a-zA-Z_À-ÖØ-öø-ÿͰ-ͽͿ--⁰-Ⰰ-、-豈-﷏ﷰ-�", i = new RegExp("^([^" + o + "])|^((x|X)(m|M)(l|L))|([^" + o + "-.0-9·̀-ͯ‿⁀])", "g"), a = /[^\x09\x0A\x0D\x20-\xFF\x85\xA0-\uD7FF\uE000-\uFDCF\uFDE0-\uFFFD]/gm, s = function (e) { var t = []; if (e instanceof Object) for (var r in e) e.hasOwnProperty(r) && t.push(r); return t }, c = function (e, t) { var r = function (e, r, n, o, a) { var s = void 0 !== t.indent ? t.indent : "\t", c = t.prettyPrint ? "\n" + new Array(o).join(s) : ""; t.removeIllegalNameCharacters && (e = e.replace(i, "_")); var u = [c, "<", e, n || ""]; return r && r.length > 0 ? (u.push(">"), u.push(r), a && u.push(c), u.push(""), u.push(e), u.push(">")) : u.push("/>"), u.join("") }; return function e(o, i, c) { var u = n(o); switch ((Array.isArray ? Array.isArray(o) : o instanceof Array) ? u = "array" : o instanceof Date && (u = "date"), u) { case "array": var l = []; return o.map((function (t) { l.push(e(t, 1, c + 1)) })), t.prettyPrint && l.push("\n"), l.join(""); case "date": return o.toJSON ? o.toJSON() : o + ""; case "object": var d = []; for (var p in o) if (o.hasOwnProperty(p)) if (o[p] instanceof Array) for (var f = 0; f < o[p].length; f++)o[p].hasOwnProperty(f) && d.push(r(p, e(o[p][f], 0, c + 1), null, c + 1, s(o[p][f]).length)); else d.push(r(p, e(o[p], 0, c + 1), null, c + 1)); return t.prettyPrint && d.length > 0 && d.push("\n"), d.join(""); case "function": return o(); default: return t.escape ? ("" + o).replace(/&/g, "&").replace(//g, ">").replace(/'/g, "'").replace(/"/g, """).replace(a, "") : "" + o } }(e, 0, 0) }, u = function (e) { var t = ['"), t.join("") }; e.exports = function (e, t) { if (t || (t = { xmlHeader: { standalone: !0 }, prettyPrint: !0, indent: " ", escape: !0 }), "string" == typeof e) try { e = JSON.parse(e.toString()) } catch (e) { return !1 } var r = "", o = ""; return t && ("object" == n(t) ? (t.xmlHeader && (r = u(!!t.xmlHeader.standalone)), void 0 !== t.docType && (o = "")) : r = u()), [r, (t = t || {}).prettyPrint && o ? "\n" : "", o, c(e, t)].join("").replace(/\n{2,}/g, "\n").replace(/\s+$/g, "") } }, function (e, t) { var r = function (e) { var t = (e = e || {}).Base64, r = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", n = function (e) { for (var t = {}, r = 0, n = e.length; r < n; r++)t[e.charAt(r)] = r; return t }(r), o = String.fromCharCode, i = function (e) { if (e.length < 2) return (t = e.charCodeAt(0)) < 128 ? e : t < 2048 ? o(192 | t >>> 6) + o(128 | 63 & t) : o(224 | t >>> 12 & 15) + o(128 | t >>> 6 & 63) + o(128 | 63 & t); var t = 65536 + 1024 * (e.charCodeAt(0) - 55296) + (e.charCodeAt(1) - 56320); return o(240 | t >>> 18 & 7) + o(128 | t >>> 12 & 63) + o(128 | t >>> 6 & 63) + o(128 | 63 & t) }, a = /[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g, s = function (e) { return e.replace(a, i) }, c = function (e) { var t = [0, 2, 1][e.length % 3], n = e.charCodeAt(0) << 16 | (e.length > 1 ? e.charCodeAt(1) : 0) << 8 | (e.length > 2 ? e.charCodeAt(2) : 0); return [r.charAt(n >>> 18), r.charAt(n >>> 12 & 63), t >= 2 ? "=" : r.charAt(n >>> 6 & 63), t >= 1 ? "=" : r.charAt(63 & n)].join("") }, u = e.btoa ? function (t) { return e.btoa(t) } : function (e) { return e.replace(/[\s\S]{1,3}/g, c) }, l = function (e) { return u(s(e)) }, d = function (e, t) { return t ? l(String(e)).replace(/[+\/]/g, (function (e) { return "+" == e ? "-" : "_" })).replace(/=/g, "") : l(String(e)) }, p = new RegExp(["[À-ß][-¿]", "[à-ï][-¿]{2}", "[ð-÷][-¿]{3}"].join("|"), "g"), f = function (e) { switch (e.length) { case 4: var t = ((7 & e.charCodeAt(0)) << 18 | (63 & e.charCodeAt(1)) << 12 | (63 & e.charCodeAt(2)) << 6 | 63 & e.charCodeAt(3)) - 65536; return o(55296 + (t >>> 10)) + o(56320 + (1023 & t)); case 3: return o((15 & e.charCodeAt(0)) << 12 | (63 & e.charCodeAt(1)) << 6 | 63 & e.charCodeAt(2)); default: return o((31 & e.charCodeAt(0)) << 6 | 63 & e.charCodeAt(1)) } }, h = function (e) { return e.replace(p, f) }, g = function (e) { var t = e.length, r = t % 4, i = (t > 0 ? n[e.charAt(0)] << 18 : 0) | (t > 1 ? n[e.charAt(1)] << 12 : 0) | (t > 2 ? n[e.charAt(2)] << 6 : 0) | (t > 3 ? n[e.charAt(3)] : 0), a = [o(i >>> 16), o(i >>> 8 & 255), o(255 & i)]; return a.length -= [0, 0, 2, 1][r], a.join("") }, m = e.atob ? function (t) { return e.atob(t) } : function (e) { return e.replace(/[\s\S]{1,4}/g, g) }, y = function (e) { return h(m(e)) }, v = function (e) { return y(String(e).replace(/[-_]/g, (function (e) { return "-" == e ? "+" : "/" })).replace(/[^A-Za-z0-9\+\/]/g, "")) }; return { VERSION: "2.1.9", atob: m, btoa: u, fromBase64: v, toBase64: d, utob: s, encode: d, encodeURI: function (e) { return d(e, !0) }, btou: h, decode: v, noConflict: function () { var r = e.Base64; return e.Base64 = t, r } } }(); e.exports = r }, function (e, t) { e.exports = function (e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") }, e.exports.__esModule = !0, e.exports.default = e.exports }, function (e, t, r) { var n = r(25); function o(e, t) { for (var r = 0; r < t.length; r++) { var o = t[r]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, n(o.key), o) } } e.exports = function (e, t, r) { return t && o(e.prototype, t), r && o(e, r), Object.defineProperty(e, "prototype", { writable: !1 }), e }, e.exports.__esModule = !0, e.exports.default = e.exports }, function (e, t, r) { var n = r(0).default, o = r(26); e.exports = function (e) { var t = o(e, "string"); return "symbol" === n(t) ? t : String(t) }, e.exports.__esModule = !0, e.exports.default = e.exports }, function (e, t, r) { var n = r(0).default; e.exports = function (e, t) { if ("object" !== n(e) || null === e) return e; var r = e[Symbol.toPrimitive]; if (void 0 !== r) { var o = r.call(e, t || "default"); if ("object" !== n(o)) return o; throw new TypeError("@@toPrimitive must return a primitive value.") } return ("string" === t ? String : Number)(e) }, e.exports.__esModule = !0, e.exports.default = e.exports }, function (e, t, r) { var n, o, i, a = r(0); i = function () { "use strict"; var e = function (t, r) { return e = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (e, t) { e.__proto__ = t } || function (e, t) { for (var r in t) Object.prototype.hasOwnProperty.call(t, r) && (e[r] = t[r]) }, e(t, r) }, t = function () { return t = Object.assign || function (e) { for (var t, r = 1, n = arguments.length; r < n; r++)for (var o in t = arguments[r]) Object.prototype.hasOwnProperty.call(t, o) && (e[o] = t[o]); return e }, t.apply(this, arguments) }; function r(e, t, r, n) { return new (r || (r = Promise))((function (o, i) { function a(e) { try { c(n.next(e)) } catch (e) { i(e) } } function s(e) { try { c(n.throw(e)) } catch (e) { i(e) } } function c(e) { var t; e.done ? o(e.value) : (t = e.value, t instanceof r ? t : new r((function (e) { e(t) }))).then(a, s) } c((n = n.apply(e, t || [])).next()) })) } function n(e, t) { var r, n, o, i, a = { label: 0, sent: function () { if (1 & o[0]) throw o[1]; return o[1] }, trys: [], ops: [] }; return i = { next: s(0), throw: s(1), return: s(2) }, "function" == typeof Symbol && (i[Symbol.iterator] = function () { return this }), i; function s(i) { return function (s) { return function (i) { if (r) throw new TypeError("Generator is already executing."); for (; a;)try { if (r = 1, n && (o = 2 & i[0] ? n.return : i[0] ? n.throw || ((o = n.return) && o.call(n), 0) : n.next) && !(o = o.call(n, i[1])).done) return o; switch (n = 0, o && (i = [2 & i[0], o.value]), i[0]) { case 0: case 1: o = i; break; case 4: return a.label++, { value: i[1], done: !1 }; case 5: a.label++, n = i[1], i = [0]; continue; case 7: i = a.ops.pop(), a.trys.pop(); continue; default: if (!((o = (o = a.trys).length > 0 && o[o.length - 1]) || 6 !== i[0] && 2 !== i[0])) { a = 0; continue } if (3 === i[0] && (!o || i[1] > o[0] && i[1] < o[3])) { a.label = i[1]; break } if (6 === i[0] && a.label < o[1]) { a.label = o[1], o = i; break } if (o && a.label < o[2]) { a.label = o[2], a.ops.push(i); break } o[2] && a.ops.pop(), a.trys.pop(); continue }i = t.call(e, a) } catch (e) { i = [6, e], n = 0 } finally { r = o = 0 } if (5 & i[0]) throw i[1]; return { value: i[0] ? i[1] : void 0, done: !0 } }([i, s]) } } } var o = "__BEACON_", i = "__BEACON_deviceId", a = "last_report_time", s = "sending_event_ids", c = "beacon_config", u = "beacon_config_request_time", l = function () { function e() { var e = this; this.emit = function (t, r) { if (e) { var n, o = e.__EventsList[t]; if (null == o ? void 0 : o.length) { o = o.slice(); for (var i = 0; i < o.length; i++) { n = o[i]; try { var a = n.callback.apply(e, [r]); if (1 === n.type && e.remove(t, n.callback), !1 === a) break } catch (e) { throw e } } } return e } }, this.__EventsList = {} } return e.prototype.indexOf = function (e, t) { for (var r = 0; r < e.length; r++)if (e[r].callback === t) return r; return -1 }, e.prototype.on = function (e, t, r) { if (void 0 === r && (r = 0), this) { var n = this.__EventsList[e]; if (n || (n = this.__EventsList[e] = []), -1 === this.indexOf(n, t)) { var o = { name: e, type: r || 0, callback: t }; return n.push(o), this } return this } }, e.prototype.one = function (e, t) { this.on(e, t, 1) }, e.prototype.remove = function (e, t) { if (this) { var r = this.__EventsList[e]; if (!r) return null; if (!t) { try { delete this.__EventsList[e] } catch (e) { } return null } if (r.length) { var n = this.indexOf(r, t); r.splice(n, 1) } return this } }, e }(); function d(e, t) { for (var r = {}, n = 0, o = Object.keys(e); n < o.length; n++) { var i = o[n], a = e[i]; if ("string" == typeof a) r[p(i)] = p(a); else { if (t) throw new Error("value mast be string !!!!"); r[p(String(i))] = p(String(a)) } } return r } function p(e) { if ("string" != typeof e) return e; try { return e.replace(new RegExp("\\|", "g"), "%7C").replace(new RegExp("\\&", "g"), "%26").replace(new RegExp("\\=", "g"), "%3D").replace(new RegExp("\\+", "g"), "%2B") } catch (e) { return "" } } function f(e) { return String(e.A99) + String(e.A100) } var h = function () { }, g = function () { function e(e) { var r = this; this.lifeCycle = new l, this.uploadJobQueue = [], this.additionalParams = {}, this.delayTime = 0, this._normalLogPipeline = function (e) { if (!e || !e.reduce || !e.length) throw new TypeError("createPipeline 方法需要传入至少有一个 pipe 的数组"); return 1 === e.length ? function (t, r) { e[0](t, r || h) } : e.reduce((function (e, t) { return function (r, n) { return void 0 === n && (n = h), e(r, (function (e) { return null == t ? void 0 : t(e, n) })) } })) }([function (e) { r.send({ url: r.strategy.getUploadUrl(), data: e, method: "post", contentType: "application/json;charset=UTF-8" }, (function () { var t = r.config.onReportSuccess; "function" == typeof t && t(JSON.stringify(e.events)) }), (function () { var t = r.config.onReportFail; "function" == typeof t && t(JSON.stringify(e.events)) })) }]), function (e, t) { if (!e) throw t instanceof Error ? t : new Error(t) }(Boolean(e.appkey), "appkey must be initial"), this.config = t({}, e) } return e.prototype.onUserAction = function (e, t) { this.preReport(e, t, !1) }, e.prototype.onDirectUserAction = function (e, t) { this.preReport(e, t, !0) }, e.prototype.preReport = function (e, t, r) { e ? this.strategy.isEventUpOnOff() && (this.strategy.isBlackEvent(e) || this.strategy.isSampleEvent(e) || this.onReport(e, t, r)) : this.errorReport.reportError("602", " no eventCode") }, e.prototype.addAdditionalParams = function (e) { for (var t = 0, r = Object.keys(e); t < r.length; t++) { var n = r[t]; this.additionalParams[n] = e[n] } }, e.prototype.setChannelId = function (e) { this.commonInfo.channelID = String(e) }, e.prototype.setOpenId = function (e) { this.commonInfo.openid = String(e) }, e.prototype.setUnionid = function (e) { this.commonInfo.unid = String(e) }, e.prototype.getDeviceId = function () { return this.commonInfo.deviceId }, e.prototype.getCommonInfo = function () { return this.commonInfo }, e.prototype.removeSendingId = function (e) { try { var t = JSON.parse(this.storage.getItem(s)), r = t.indexOf(e); -1 != r && (t.splice(r, 1), this.storage.setItem(s, JSON.stringify(t))) } catch (e) { } }, e }(), m = function () { function e(e, t, r, n) { this.requestParams = {}, this.network = n, this.requestParams.attaid = "00400014144", this.requestParams.token = "6478159937", this.requestParams.product_id = e.appkey, this.requestParams.platform = r, this.requestParams.uin = t.deviceId, this.requestParams.model = "", this.requestParams.os = r, this.requestParams.app_version = e.appVersion, this.requestParams.sdk_version = t.sdkVersion, this.requestParams.error_stack = "", this.uploadUrl = e.isOversea ? "https://htrace.wetvinfo.com/kv" : "https://h.trace.qq.com/kv" } return e.prototype.reportError = function (e, t) { this.requestParams._dc = Math.random(), this.requestParams.error_msg = t, this.requestParams.error_code = e, this.network.get(this.uploadUrl, { params: this.requestParams }).catch((function (e) { })) }, e }(), y = function () { function e(e, t, r, n, o) { this.strategy = { isEventUpOnOff: !0, httpsUploadUrl: "https://otheve.beacon.qq.com/analytics/v2_upload", requestInterval: 30, blacklist: [], samplelist: [] }, this.realSample = {}, this.appkey = "", this.needQueryConfig = !0, this.appkey = t.appkey, this.storage = n, this.needQueryConfig = e; try { var i = JSON.parse(this.storage.getItem(c)); i && this.processData(i) } catch (e) { } t.isOversea && (this.strategy.httpsUploadUrl = "https://svibeacon.onezapp.com/analytics/v2_upload"), !t.isOversea && this.needRequestConfig() && this.requestConfig(t.appVersion, r, o) } return e.prototype.requestConfig = function (e, t, r) { var n = this; this.storage.setItem(u, Date.now().toString()), r.post("https://oth.str.beacon.qq.com/trpc.beacon.configserver.BeaconConfigService/QueryConfig", { platformId: "undefined" == typeof wx ? "3" : "4", mainAppKey: this.appkey, appVersion: e, sdkVersion: t.sdkVersion, osVersion: t.userAgent, model: "", packageName: "", params: { A3: t.deviceId } }).then((function (e) { if (0 == e.data.ret) try { var t = JSON.parse(e.data.beaconConfig); t && (n.processData(t), n.storage.setItem(c, e.data.beaconConfig)) } catch (e) { } else n.processData(null), n.storage.setItem(c, "") })).catch((function (e) { })) }, e.prototype.processData = function (e) { var t, r, n, o, i; this.strategy.isEventUpOnOff = null !== (t = null == e ? void 0 : e.isEventUpOnOff) && void 0 !== t ? t : this.strategy.isEventUpOnOff, this.strategy.httpsUploadUrl = null !== (r = null == e ? void 0 : e.httpsUploadUrl) && void 0 !== r ? r : this.strategy.httpsUploadUrl, this.strategy.requestInterval = null !== (n = null == e ? void 0 : e.requestInterval) && void 0 !== n ? n : this.strategy.requestInterval, this.strategy.blacklist = null !== (o = null == e ? void 0 : e.blacklist) && void 0 !== o ? o : this.strategy.blacklist, this.strategy.samplelist = null !== (i = null == e ? void 0 : e.samplelist) && void 0 !== i ? i : this.strategy.samplelist; for (var a = 0, s = this.strategy.samplelist; a < s.length; a++) { var c = s[a].split(","); 2 == c.length && (this.realSample[c[0]] = c[1]) } }, e.prototype.needRequestConfig = function () { if (!this.needQueryConfig) return !1; var e = Number(this.storage.getItem(u)); return Date.now() - e > 60 * this.strategy.requestInterval * 1e3 }, e.prototype.getUploadUrl = function () { return this.strategy.httpsUploadUrl + "?appkey=" + this.appkey }, e.prototype.isBlackEvent = function (e) { return -1 != this.strategy.blacklist.indexOf(e) }, e.prototype.isEventUpOnOff = function () { return this.strategy.isEventUpOnOff }, e.prototype.isSampleEvent = function (e) { return !!Object.prototype.hasOwnProperty.call(this.realSample, e) && this.realSample[e] < Math.floor(Math.random() * Math.floor(1e4)) }, e }(), v = "session_storage_key", b = function () { function e(e, t, r) { this.getSessionStackDepth = 0, this.beacon = r, this.storage = e, this.duration = t, this.appkey = r.config.appkey } return e.prototype.getSession = function () { this.getSessionStackDepth += 1; var e = this.storage.getItem(v); if (!e) return this.createSession(); var t = "", r = 0; try { var n = JSON.parse(e) || { sessionId: void 0, sessionStart: void 0 }; if (!n.sessionId || !n.sessionStart) return this.createSession(); var o = Number(this.storage.getItem(a)); if (Date.now() - o > this.duration) return this.createSession(); t = n.sessionId, r = n.sessionStart, this.getSessionStackDepth = 0 } catch (e) { } return { sessionId: t, sessionStart: r } }, e.prototype.createSession = function () { var e = Date.now(), t = { sessionId: this.appkey + "_" + e.toString(), sessionStart: e }; this.storage.setItem(v, JSON.stringify(t)), this.storage.setItem(a, e.toString()); var r = "is_new_user", n = this.storage.getItem(r); return this.getSessionStackDepth <= 1 && this.beacon.onDirectUserAction("rqd_applaunched", { A21: n ? "N" : "Y" }), this.storage.setItem(r, JSON.stringify(!1)), t }, e }(); function C() { var e = navigator.userAgent, t = e.indexOf("compatible") > -1 && e.indexOf("MSIE") > -1, r = e.indexOf("Edge") > -1 && !t, n = e.indexOf("Trident") > -1 && e.indexOf("rv:11.0") > -1; if (t) { new RegExp("MSIE (\\d+\\.\\d+);").test(e); var o = parseFloat(RegExp.$1); return 7 == o ? 7 : 8 == o ? 8 : 9 == o ? 9 : 10 == o ? 10 : 6 } return r ? -2 : n ? 11 : -1 } var k, S, w = function () { return (w = Object.assign || function (e) { for (var t, r = 1, n = arguments.length; r < n; r++)for (var o in t = arguments[r]) Object.prototype.hasOwnProperty.call(t, o) && (e[o] = t[o]); return e }).apply(this, arguments) }, T = function () { function e(e, t) { void 0 === t && (t = {}), this.reportOptions = {}, this.config = e, this.reportOptions = t } return e.canUseDB = function () { return !!(null === window || void 0 === window ? void 0 : window.indexedDB) }, e.prototype.openDB = function () { var t = this; return new Promise((function (r, n) { if (!e.canUseDB()) return n({ message: "当前不支持 indexeddb" }); var o = t.config, i = o.name, a = o.version, s = o.stores, c = indexedDB.open(i, a); c.onsuccess = function () { t.db = c.result, r(), w({ result: 1, func: "open", params: JSON.stringify(t.config) }, t.reportOptions) }, c.onerror = function (e) { var r, o; n(e), w({ result: 0, func: "open", params: JSON.stringify(t.config), error_msg: null === (o = null === (r = e.target) || void 0 === r ? void 0 : r.error) || void 0 === o ? void 0 : o.message }, t.reportOptions) }, c.onupgradeneeded = function () { t.db = c.result; try { null == s || s.forEach((function (e) { t.createStore(e) })) } catch (e) { w({ result: 0, func: "open", params: JSON.stringify(t.config), error_msg: e.message }, t.reportOptions), n(e) } } })) }, e.prototype.useStore = function (e) { return this.storeName = e, this }, e.prototype.deleteDB = function () { var e = this; return this.closeDB(), new Promise((function (t, r) { var n = indexedDB.deleteDatabase(e.config.name); n.onsuccess = function () { return t() }, n.onerror = r })) }, e.prototype.closeDB = function () { var e; null === (e = this.db) || void 0 === e || e.close(), this.db = null }, e.prototype.getStoreCount = function () { var e = this; return new Promise((function (t, r) { var n = e.getStore("readonly").count(); n.onsuccess = function () { return t(n.result) }, n.onerror = r })) }, e.prototype.clearStore = function () { var e = this; return new Promise((function (t, r) { var n = e.getStore("readwrite").clear(); n.onsuccess = function () { return t() }, n.onerror = r })) }, e.prototype.add = function (e, t) { var r = this; return new Promise((function (n, o) { var i = r.getStore("readwrite").add(e, t); i.onsuccess = function () { n(i.result) }, i.onerror = o })) }, e.prototype.put = function (e, t) { var r = this; return new Promise((function (n, o) { var i = r.getStore("readwrite").put(e, t); i.onsuccess = function () { n(i.result) }, i.onerror = o })) }, e.prototype.getStoreAllData = function () { var e = this; return new Promise((function (t, r) { var n = e.getStore("readonly").openCursor(), o = []; n.onsuccess = function () { var e; if (null === (e = n.result) || void 0 === e ? void 0 : e.value) { var r = n.result.value; o.push(r), n.result.continue() } else t(o) }, n.onerror = r })) }, e.prototype.getDataRangeByIndex = function (e, t, r, n, o) { var i = this; return new Promise((function (a, s) { var c = i.getStore().index(e), u = IDBKeyRange.bound(t, r, n, o), l = [], d = c.openCursor(u); d.onsuccess = function () { var e; (null === (e = null == d ? void 0 : d.result) || void 0 === e ? void 0 : e.value) ? (l.push(null == d ? void 0 : d.result.value), null == d || d.result.continue()) : a(l) }, d.onerror = s })) }, e.prototype.removeDataByIndex = function (e, t, r, n, o) { var i = this; return new Promise((function (a, s) { var c = i.getStore("readwrite").index(e), u = IDBKeyRange.bound(t, r, n, o), l = c.openCursor(u), d = 0; l.onsuccess = function (e) { var t = e.target.result; t ? (d += 1, t.delete(), t.continue()) : a(d) }, l.onerror = s })) }, e.prototype.createStore = function (e) { var t = e.name, r = e.indexes, n = void 0 === r ? [] : r, o = e.options; if (this.db) { this.db.objectStoreNames.contains(t) && this.db.deleteObjectStore(t); var i = this.db.createObjectStore(t, o); n.forEach((function (e) { i.createIndex(e.indexName, e.keyPath, e.options) })) } }, e.prototype.getStore = function (e) { var t; return void 0 === e && (e = "readonly"), null === (t = this.db) || void 0 === t ? void 0 : t.transaction(this.storeName, e).objectStore(this.storeName) }, e }(), E = "event_table_v3", R = "eventId", x = function () { function e(e) { this.isReady = !1, this.taskQueue = Promise.resolve(), this.db = new T({ name: "Beacon_" + e + "_V3", version: 1, stores: [{ name: E, options: { keyPath: R }, indexes: [{ indexName: R, keyPath: R, options: { unique: !0 } }] }] }), this.open() } return e.prototype.getCount = function () { var e = this; return this.readyExec((function () { return e.db.getStoreCount() })) }, e.prototype.setItem = function (e, t) { var r = this; return this.readyExec((function () { return r.db.add({ eventId: e, value: t }) })) }, e.prototype.getItem = function (e) { return r(this, void 0, void 0, (function () { var t = this; return n(this, (function (r) { return [2, this.readyExec((function () { return t.db.getDataRangeByIndex(R, e, e) }))] })) })) }, e.prototype.removeItem = function (e) { var t = this; return this.readyExec((function () { return t.db.removeDataByIndex(R, e, e) })) }, e.prototype.updateItem = function (e, t) { var r = this; return this.readyExec((function () { return r.db.put({ eventId: e, value: t }) })) }, e.prototype.iterate = function (e) { var t = this; return this.readyExec((function () { return t.db.getStoreAllData().then((function (t) { t.forEach((function (t) { e(t.value) })) })) })) }, e.prototype.open = function () { return r(this, void 0, void 0, (function () { var e = this; return n(this, (function (t) { switch (t.label) { case 0: return this.taskQueue = this.taskQueue.then((function () { return e.db.openDB() })), [4, this.taskQueue]; case 1: return t.sent(), this.isReady = !0, this.db.useStore(E), [2] } })) })) }, e.prototype.readyExec = function (e) { return this.isReady ? e() : (this.taskQueue = this.taskQueue.then((function () { return e() })), this.taskQueue) }, e }(), A = function () { function e(e) { this.keyObject = {}, this.storage = e } return e.prototype.getCount = function () { return this.storage.getStoreCount() }, e.prototype.removeItem = function (e) { this.storage.removeItem(e), delete this.keyObject[e] }, e.prototype.setItem = function (e, t) { var r = JSON.stringify(t); this.storage.setItem(e, r), this.keyObject[e] = t }, e.prototype.iterate = function (e) { for (var t = Object.keys(this.keyObject), r = 0; r < t.length; r++) { var n = this.storage.getItem(t[r]); e(JSON.parse(n)) } }, e }(), B = function () { function e(e, t) { var r = this; this.dbEventCount = 0, C() > 0 || !window.indexedDB || /X5Lite/.test(navigator.userAgent) ? (this.store = new A(t), this.dbEventCount = this.store.getCount()) : (this.store = new x(e), this.getCount().then((function (e) { r.dbEventCount = e })).catch((function (e) { }))) } return e.prototype.getCount = function () { return r(this, void 0, void 0, (function () { return n(this, (function (e) { switch (e.label) { case 0: return e.trys.push([0, 2, , 3]), [4, this.store.getCount()]; case 1: return [2, e.sent()]; case 2: return e.sent(), [2, Promise.reject()]; case 3: return [2] } })) })) }, e.prototype.insertEvent = function (e, t) { return r(this, void 0, void 0, (function () { var r, o; return n(this, (function (n) { switch (n.label) { case 0: if (this.dbEventCount >= 1e4) return [2, Promise.reject()]; r = f(e.mapValue), n.label = 1; case 1: return n.trys.push([1, 3, , 4]), this.dbEventCount++, [4, this.store.setItem(r, e)]; case 2: return [2, n.sent()]; case 3: return o = n.sent(), t && t(o, e), this.dbEventCount--, [2, Promise.reject()]; case 4: return [2] } })) })) }, e.prototype.getEvents = function () { return r(this, void 0, void 0, (function () { var e; return n(this, (function (t) { switch (t.label) { case 0: e = [], t.label = 1; case 1: return t.trys.push([1, 3, , 4]), [4, this.store.iterate((function (t) { e.push(t) }))]; case 2: case 3: return t.sent(), [2, Promise.all(e)]; case 4: return [2] } })) })) }, e.prototype.removeEvent = function (e) { return r(this, void 0, void 0, (function () { var t; return n(this, (function (r) { switch (r.label) { case 0: t = f(e.mapValue), r.label = 1; case 1: return r.trys.push([1, 3, , 4]), this.dbEventCount--, [4, this.store.removeItem(t)]; case 2: return [2, r.sent()]; case 3: return r.sent(), this.dbEventCount++, [2, Promise.reject()]; case 4: return [2] } })) })) }, e }(), I = function () { return (I = Object.assign || function (e) { for (var t, r = 1, n = arguments.length; r < n; r++)for (var o in t = arguments[r]) Object.prototype.hasOwnProperty.call(t, o) && (e[o] = t[o]); return e }).apply(this, arguments) }; function D(e) { try { return decodeURIComponent(e.replace(/\+/g, " ")) } catch (e) { return null } } function O(e, t) { var r = [null, void 0, "", NaN].includes(e); if (t.isSkipEmpty && r) return null; var n = !t.isSkipEmpty && r ? "" : e; try { return t.encode ? encodeURIComponent(n) : n } catch (e) { return null } } function _(e, t) { return new Promise((function (r, n) { if (t && document.querySelectorAll("script[data-tag=" + t + "]").length) return r(); var o = document.createElement("script"), i = I({ type: "text/javascript", charset: "utf-8" }, e); Object.keys(i).forEach((function (e) { return function (e, t, r) { if (e) return void 0 === r ? e.getAttribute(t) : e.setAttribute(t, r) }(o, e, i[e]) })), t && (o.dataset.tag = t), o.onload = function () { return r() }, o.onreadystatechange = function () { var e = o.readyState;["complete", "loaded"].includes(e) && (o.onreadystatechange = null, r()) }, o.onerror = n, document.body.appendChild(o) })) } (S = k || (k = {}))[S.equal = 0] = "equal", S[S.low = -1] = "low", S[S.high = 1] = "high"; var N = function () { return (N = Object.assign || function (e) { for (var t, r = 1, n = arguments.length; r < n; r++)for (var o in t = arguments[r]) Object.prototype.hasOwnProperty.call(t, o) && (e[o] = t[o]); return e }).apply(this, arguments) }; function P(e, t, r, n) { return new (r || (r = Promise))((function (o, i) { function a(e) { try { c(n.next(e)) } catch (e) { i(e) } } function s(e) { try { c(n.throw(e)) } catch (e) { i(e) } } function c(e) { var t; e.done ? o(e.value) : (t = e.value, t instanceof r ? t : new r((function (e) { e(t) }))).then(a, s) } c((n = n.apply(e, t || [])).next()) })) } function U(e, t) { var r, n, o, i, a = { label: 0, sent: function () { if (1 & o[0]) throw o[1]; return o[1] }, trys: [], ops: [] }; return i = { next: s(0), throw: s(1), return: s(2) }, "function" == typeof Symbol && (i[Symbol.iterator] = function () { return this }), i; function s(i) { return function (s) { return function (i) { if (r) throw new TypeError("Generator is already executing."); for (; a;)try { if (r = 1, n && (o = 2 & i[0] ? n.return : i[0] ? n.throw || ((o = n.return) && o.call(n), 0) : n.next) && !(o = o.call(n, i[1])).done) return o; switch (n = 0, o && (i = [2 & i[0], o.value]), i[0]) { case 0: case 1: o = i; break; case 4: return a.label++, { value: i[1], done: !1 }; case 5: a.label++, n = i[1], i = [0]; continue; case 7: i = a.ops.pop(), a.trys.pop(); continue; default: if (!((o = (o = a.trys).length > 0 && o[o.length - 1]) || 6 !== i[0] && 2 !== i[0])) { a = 0; continue } if (3 === i[0] && (!o || i[1] > o[0] && i[1] < o[3])) { a.label = i[1]; break } if (6 === i[0] && a.label < o[1]) { a.label = o[1], o = i; break } if (o && a.label < o[2]) { a.label = o[2], a.ops.push(i); break } o[2] && a.ops.pop(), a.trys.pop(); continue }i = t.call(e, a) } catch (e) { i = [6, e], n = 0 } finally { r = o = 0 } if (5 & i[0]) throw i[1]; return { value: i[0] ? i[1] : void 0, done: !0 } }([i, s]) } } } var L = function () { function e() { this.interceptors = [] } return e.prototype.use = function (e, t) { return this.interceptors.push({ resolved: e, rejected: t }), this.interceptors.length - 1 }, e.prototype.traverse = function (e, t) { void 0 === t && (t = !1); var r = Promise.resolve(e); return (t ? Array.prototype.reduceRight : Array.prototype.reduce).call(this.interceptors, (function (e, t) { if (t) { var n = t.resolved, o = t.rejected; r = r.then(n, o) } return e }), ""), r }, e.prototype.eject = function (e) { this.interceptors[e] && (this.interceptors[e] = null) }, e }(), q = { defaults: { timeout: 0, method: "GET", mode: "cors", redirect: "follow", credentials: "same-origin" }, headers: { common: { Accept: "application/json, text/plain, */*" }, POST: { "Content-Type": "application/x-www-form-urlencoded" }, PUT: { "Content-Type": "application/x-www-form-urlencoded" }, PATCH: { "Content-Type": "application/x-www-form-urlencoded" } }, baseURL: "", polyfillUrl: "https://vm.gtimg.cn/comps/script/fetch.min.js", interceptors: { request: new L, response: new L } }, M = /^([a-z][a-z\d+\-.]*:)?\/\//i, H = Object.prototype.toString; function j(e) { return P(this, void 0, void 0, (function () { var t; return U(this, (function (r) { switch (r.label) { case 0: if (window.fetch) return [2]; r.label = 1; case 1: return r.trys.push([1, 3, , 4]), [4, _({ src: e })]; case 2: return r.sent(), [3, 4]; case 3: throw t = r.sent(), new Error("加载 polyfill " + e + " 失败: " + t.message); case 4: return [2] } })) })) } function F(e) { return P(this, void 0, void 0, (function () { var t, r, n, o, i, a, s, c, u, l, d, p, f, h, g, m, y; return U(this, (function (v) { switch (v.label) { case 0: return t = q.baseURL, r = q.defaults, n = q.interceptors, [4, j(q.polyfillUrl)]; case 1: return v.sent(), (o = N(N({}, r), e)).headers || (o.headers = function (e) { void 0 === e && (e = "GET"); var t = q.headers[e] || {}; return N(N({}, q.headers.common), t) }(o.method)), function (e) { ["Accept", "Content-Type"].forEach((function (t) { return r = t, void ((n = e.headers) && Object.keys(n).forEach((function (e) { e !== r && e.toUpperCase() === r.toUpperCase() && (n[r] = n[e], delete n[e]) }))); var r, n })), function (e) { if ("[object Object]" !== H.call(e)) return !1; var t = Object.getPrototypeOf(e); return null === t || t === Object.prototype }(e.body) && (e.body = JSON.stringify(e.body), e.headers && (e.headers["Content-Type"] = "application/json;charset=utf-8")) }(o), [4, n.request.traverse(o, !0)]; case 2: if ((i = v.sent()) instanceof Error) throw i; return i.url = function (e, t) { return !e || M.test(t) ? t : e.replace(/\/+$/, "") + "/" + t.replace(/^\/+/, "") }(t, i.url), a = i.url, s = i.timeout, c = i.params, u = i.method, l = ["GET", "DELETE", "OPTIONS", "HEAD"].includes(void 0 === u ? "GET" : u) && !!c, d = l ? function (e, t) { void 0 === t && (t = { encode: !0, isSkipEmpty: !1 }); var r = e.url, n = e.query, o = void 0 === n ? {} : n, i = e.hash, a = r.split("#"), s = a[0], c = a[1], u = void 0 === c ? "" : c, l = s.split("?")[0], d = [], p = O(i || u, t), f = I(I({}, function (e) { var t = e.split("#"), r = t[0], n = t[1], o = void 0 === n ? "" : n, i = r.split("?"), a = i[0], s = i[1], c = void 0 === s ? "" : s, u = D(o), l = Object.create(null); return c.split("&").forEach((function (e) { var t = e.split("="), r = t[0], n = t[1], o = void 0 === n ? "" : n, i = D(r), a = D(o); null === i || null === a || "" === i && "" === a || l[i] || (l[i] = a) })), { url: a, query: l, hash: u } }(r).query), o); return Object.keys(f).forEach((function (e) { var r = O(e, t), n = O(f[e], t); null !== r && null !== n && d.push(r + "=" + n) })), l + (d.length ? "?" + d.join("&") : "") + (p ? "#" + p : "") }({ url: a, query: c }) : a, p = [], s && !i.signal && (g = new Promise((function (e) { f = setTimeout((function () { e(new Error("timeout")) }), s) })), p.push(g), h = new AbortController, i.signal = h.signal), p.push(fetch(d, i).catch((function (e) { return e }))), [4, Promise.race(p)]; case 3: return m = v.sent(), f && clearTimeout(f), [4, n.response.traverse(m)]; case 4: if ((y = v.sent()) instanceof Error) throw null == h || h.abort(), y; return [2, y] } })) })) } var K = function () { function e(e) { q.interceptors.request.use((function (r) { var n = r.url, o = r.method, i = r.body, a = i; if (e.onReportBeforeSend) { var s = e.onReportBeforeSend({ url: n, method: o, data: i ? JSON.parse(i) : null }); a = (null == s ? void 0 : s.data) ? JSON.stringify(s.data) : null } return "GET" != o && a ? t(t({}, r), { body: a }) : r })) } return e.prototype.get = function (e, o) { return r(this, void 0, void 0, (function () { var r, i; return n(this, (function (n) { switch (n.label) { case 0: return [4, F(t({ url: e }, o))]; case 1: return [4, (r = n.sent()).json()]; case 2: return i = n.sent(), [2, Promise.resolve({ data: i, status: r.status, statusText: r.statusText, headers: r.headers })] } })) })) }, e.prototype.post = function (e, o, i) { return r(this, void 0, void 0, (function () { var r, a; return n(this, (function (n) { switch (n.label) { case 0: return [4, F(t({ url: e, body: o, method: "POST" }, i))]; case 1: return [4, (r = n.sent()).json()]; case 2: return a = n.sent(), [2, Promise.resolve({ data: a, status: r.status, statusText: r.statusText, headers: r.headers })] } })) })) }, e }(), z = function () { function e(e) { this.appkey = e } return e.prototype.getItem = function (e) { try { return window.localStorage.getItem(this.getStoreKey(e)) } catch (e) { return "" } }, e.prototype.removeItem = function (e) { try { window.localStorage.removeItem(this.getStoreKey(e)) } catch (e) { } }, e.prototype.setItem = function (e, t) { try { window.localStorage.setItem(this.getStoreKey(e), t) } catch (e) { } }, e.prototype.setSessionItem = function (e, t) { try { window.sessionStorage.setItem(this.getStoreKey(e), t) } catch (e) { } }, e.prototype.getSessionItem = function (e) { try { return window.sessionStorage.getItem(this.getStoreKey(e)) } catch (e) { return "" } }, e.prototype.getStoreKey = function (e) { return o + this.appkey + "_" + e }, e.prototype.createDeviceId = function () { try { var e = window.localStorage.getItem(i); return e || (e = function (e) { for (var t = "ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz0123456789", r = "", n = 0; n < 32; n++)r += t.charAt(Math.floor(51 * Math.random())); return r }(), window.localStorage.setItem(i, e)), e } catch (e) { return "" } }, e.prototype.clear = function () { try { for (var e = window.localStorage.length, t = 0; t < e; t++) { var r = window.localStorage.key(t); (null == r ? void 0 : r.substr(0, 9)) == o && window.localStorage.removeItem(r) } } catch (e) { } }, e.prototype.getStoreCount = function () { var e = 0; try { e = window.localStorage.length } catch (e) { } return e }, e }(), V = "logid_start", G = "4.5.14-web"; return function (r) { function n(e) { var t = r.call(this, e) || this; t.qimei36 = "", t.uselessCycleTaskNum = 0, t.underWeakNet = !1, t.pauseSearching = !1, t.send = function (e, r, n) { t.storage.setItem(a, Date.now().toString()), t.network.post(t.uploadUrl || t.strategy.getUploadUrl(), e.data).then((function (n) { var o; 100 == (null === (o = null == n ? void 0 : n.data) || void 0 === o ? void 0 : o.result) ? t.delayTime = 1e3 * n.data.delayTime : t.delayTime = 0, r && r(e.data), e.data.events.forEach((function (e) { t.store.removeEvent(e).then((function () { t.removeSendingId(f(e.mapValue)) })) })), t.doCustomCycleTask() })).catch((function (r) { var o = e.data.events; t.errorReport.reportError(r.code ? r.code.toString() : "600", r.message), n && n(e.data); var i = JSON.parse(t.storage.getItem(s)); o.forEach((function (e) { i && -1 != i.indexOf(f(e)) && t.store.insertEvent(e, (function (e, r) { e && t.errorReport.reportError("604", "insertEvent fail!") })), t.removeSendingId(f(e)) })), t.monitorUploadFailed() })) }; var n, o, i = C(); return t.isUnderIE8 = i > 0 && i < 8, t.isUnderIE8 || (t.isUnderIE = i > 0, e.needInitQimei && function (e, t) { var r; (void 0 === r && (r = Date.now() + "-" + Math.random()), new Promise((function (e, t) { if (document.getElementById(r)) e(void 0); else { var n = document.getElementsByTagName("head")[0], o = document.createElement("script"); o.onload = function () { return function () { o.onload = null, e(void 0) } }, o.onerror = function (e) { o.onerror = null, n.removeChild(o), t(e) }, o.src = "https://tun-cos-1258344701.file.myqcloud.com/fp.js", o.id = r, n.appendChild(o) } }))).then((function () { (new Fingerprint).getQimei36(e, t) })).catch((function (e) { })) }(e.appkey, (function (e) { t.qimei36 = e.q36 })), t.network = new K(e), t.storage = new z(e.appkey), t.initCommonInfo(e), t.store = new B(e.appkey, t.storage), t.errorReport = new m(t.config, t.commonInfo, "web", t.network), t.strategy = new y(null == e.needQueryConfig || e.needQueryConfig, t.config, t.commonInfo, t.storage, t.network), t.logidStartTime = t.storage.getItem(V), t.logidStartTime || (t.logidStartTime = Date.now().toString(), t.storage.setItem(V, t.logidStartTime)), n = t.logidStartTime, o = Date.now() - Number.parseFloat(n), Math.floor(o / 864e5) >= 365 && t.storage.clear(), t.initSession(e), t.onDirectUserAction("rqd_js_init", {}), setTimeout((function () { return t.lifeCycle.emit("init") }), 0), t.initDelayTime = e.delay ? e.delay : 1e3, t.cycleTask(t.initDelayTime)), t } return function (t, r) { if ("function" != typeof r && null !== r) throw new TypeError("Class extends value " + String(r) + " is not a constructor or null"); function n() { this.constructor = t } e(t, r), t.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) }(n, r), n.prototype.initSession = function (e) { var t = 18e5; e.sessionDuration && e.sessionDuration > 3e4 && (t = e.sessionDuration), this.beaconSession = new b(this.storage, t, this) }, n.prototype.initCommonInfo = function (e) { var t = Number(this.storage.getItem(a)); try { var r = JSON.parse(this.storage.getItem(s)); (Date.now() - t > 3e4 || !r) && this.storage.setItem(s, JSON.stringify([])) } catch (e) { } e.uploadUrl && (this.uploadUrl = e.uploadUrl + "?appkey=" + e.appkey); var n = [window.screen.width, window.screen.height]; window.devicePixelRatio && n.push(window.devicePixelRatio), this.commonInfo = { deviceId: this.storage.createDeviceId(), language: navigator && navigator.language || "zh_CN", query: window.location.search, userAgent: navigator.userAgent, pixel: n.join("*"), channelID: e.channelID ? String(e.channelID) : "", openid: e.openid ? String(e.openid) : "", unid: e.unionid ? String(e.unionid) : "", sdkVersion: G }, this.config.appVersion = e.versionCode ? String(e.versionCode) : "", this.config.strictMode = e.strictMode }, n.prototype.cycleTask = function (e) { var t = this; this.intervalID = window.setInterval((function () { t.pauseSearching || t.store.getEvents().then((function (e) { 0 == e.length && (t.pauseSearching = !0); var r = [], n = JSON.parse(t.storage.getItem(s)); n || (n = []), e && e.forEach((function (e) { var t = f(e.mapValue); -1 == n.indexOf(t) && (r.push(e), n.push(t)) })), 0 != r.length && (t.storage.setItem(s, JSON.stringify(n)), t._normalLogPipeline(t.assembleData(r))) })).catch((function (e) { })) }), e) }, n.prototype.onReport = function (e, t, r) { var n = this; if (this.isUnderIE8) this.errorReport.reportError("601", "UnderIE8"); else { this.pauseSearching = !1; var o = this.generateData(e, t, r); if (r && 0 == this.delayTime && !this.underWeakNet) this._normalLogPipeline(this.assembleData(o)); else { var i = o.shift(); i && this.store.insertEvent(i, (function (e) { e && n.errorReport.reportError("604", "insertEvent fail!") })).catch((function (e) { n._normalLogPipeline(n.assembleData(o)) })) } } }, n.prototype.onSendBeacon = function (e, t) { if (this.isUnderIE) this.errorReport.reportError("605", "UnderIE"); else { this.pauseSearching = !1; var r = this.assembleData(this.generateData(e, t, !0)); "function" == typeof navigator.sendBeacon && navigator.sendBeacon(this.uploadUrl || this.strategy.getUploadUrl(), JSON.stringify(r)) } }, n.prototype.generateData = function (e, r, n) { var o = [], i = "4.5.14-web_" + (n ? "direct_log_id" : "normal_log_id"), a = Number(this.storage.getItem(i)); return a = a || 1, r = t(t({}, r), { A99: n ? "Y" : "N", A100: a.toString(), A72: G, A88: this.logidStartTime }), a++, this.storage.setItem(i, a.toString()), o.push({ eventCode: e, eventTime: Date.now().toString(), mapValue: d(r, this.config.strictMode) }), o }, n.prototype.assembleData = function (e) { var r = this.beaconSession.getSession(); return { appVersion: this.config.appVersion ? p(this.config.appVersion) : "", sdkId: "js", sdkVersion: G, mainAppKey: this.config.appkey, platformId: 3, common: d(t(t({}, this.additionalParams), { A2: this.commonInfo.deviceId, A8: this.commonInfo.openid, A12: this.commonInfo.language, A17: this.commonInfo.pixel, A23: this.commonInfo.channelID, A50: this.commonInfo.unid, A76: r.sessionId, A101: this.commonInfo.userAgent, A102: window.location.href, A104: document.referrer, A119: this.commonInfo.query, A153: this.qimei36 }), !1), events: e } }, n.prototype.monitorUploadFailed = function () { this.uselessCycleTaskNum++, this.uselessCycleTaskNum >= 5 && (window.clearInterval(this.intervalID), this.cycleTask(6e4), this.underWeakNet = !0) }, n.prototype.doCustomCycleTask = function () { this.uselessCycleTaskNum >= 5 && (window.clearInterval(this.intervalID), this.cycleTask(this.initDelayTime)), this.uselessCycleTaskNum = 0, this.underWeakNet = !1 }, n }(g) }, "object" == a(t) && void 0 !== e ? e.exports = i() : void 0 === (o = "function" == typeof (n = i) ? n.call(t, r, t, e) : n) || (e.exports = o) }, function (e, t, r) { var n = r(9), o = r(1), i = {}; e.exports.transferToTaskMethod = function (e, t) { i[t] = e[t], e[t] = function (e, r) { e.SkipTask ? i[t].call(this, e, r) : this._addTask(t, e, r) } }, e.exports.init = function (e) { var t, r, a = [], s = {}, c = 0, u = 0, l = function (e) { var t = { id: e.id, Bucket: e.Bucket, Region: e.Region, Key: e.Key, FilePath: e.FilePath, state: e.state, loaded: e.loaded, size: e.size, speed: e.speed, percent: e.percent, hashPercent: e.hashPercent, error: e.error }; return e.FilePath && (t.FilePath = e.FilePath), e._custom && (t._custom = e._custom), t }, d = (r = function () { t = 0, e.emit("task-list-update", { list: o.map(a, l) }), e.emit("list-update", { list: o.map(a, l) }) }, function () { t || (t = setTimeout(r)) }), p = function () { if (!(a.length <= e.options.UploadQueueSize)) { for (var t = 0; t < u && t < a.length && a.length > e.options.UploadQueueSize;) { var r = "waiting" === a[t].state || "checking" === a[t].state || "uploading" === a[t].state; a[t] && r ? t++ : (s[a[t].id] && delete s[a[t].id], a.splice(t, 1), u--) } d() } }, f = function t() { if (!(c >= e.options.FileParallelLimit)) { for (; a[u] && "waiting" !== a[u].state;)u++; if (!(u >= a.length)) { var r = a[u]; u++, c++, r.state = "checking", r.params.onTaskStart && r.params.onTaskStart(l(r)), !r.params.UploadData && (r.params.UploadData = {}); var n = o.formatParams(r.api, r.params); i[r.api].call(e, n, (function (n, o) { e._isRunningTask(r.id) && ("checking" !== r.state && "uploading" !== r.state || (r.state = n ? "error" : "success", n && (r.error = n), c--, d(), t(), r.callback && r.callback(n, o), "success" === r.state && (r.params && (delete r.params.UploadData, delete r.params.Body, delete r.params), delete r.callback)), p()) })), d(), setTimeout(t) } } }, h = function (t, r) { var o = s[t]; if (o) { var i = o && "waiting" === o.state, a = o && ("checking" === o.state || "uploading" === o.state); if ("canceled" === r && "canceled" !== o.state || "paused" === r && i || "paused" === r && a) { if ("paused" === r && o.params.Body && "function" == typeof o.params.Body.pipe) return; o.state = r, e.emit("inner-kill-task", { TaskId: t, toState: r }); try { var u = o && o.params && o.params.UploadData.UploadId } catch (e) { } "canceled" === r && u && n.removeUsing(u), d(), a && (c--, f()), "canceled" === r && (o.params && (delete o.params.UploadData, delete o.params.Body, delete o.params), delete o.callback) } p() } }; e._addTasks = function (t) { o.each(t, (function (t) { e._addTask(t.api, t.params, t.callback, !0) })), d() }; e._addTask = function (t, r, n, i) { r = o.formatParams(t, r); var c = o.uuid(); r.TaskId = c, r.onTaskReady && r.onTaskReady(c), r.TaskReady && (r.TaskReady(c), !1); var u = { params: r, callback: n, api: t, index: a.length, id: c, Bucket: r.Bucket, Region: r.Region, Key: r.Key, FilePath: r.FilePath || "", state: "waiting", loaded: 0, size: 0, speed: 0, percent: 0, hashPercent: 0, error: null, _custom: r._custom }, l = r.onHashProgress; r.onHashProgress = function (t) { e._isRunningTask(u.id) && (u.hashPercent = t.percent, l && l(t), d()) }; var h = r.onProgress; return r.onProgress = function (t) { e._isRunningTask(u.id) && ("checking" === u.state && (u.state = "uploading"), u.loaded = t.loaded, u.speed = t.speed, u.percent = t.percent, h && h(t), d()) }, o.getFileSize(t, r, (function (e, t) { if (e) return n(o.error(e)); s[c] = u, a.push(u), u.size = t, !i && d(), f(), p() })), c }, e._isRunningTask = function (e) { var t = s[e]; return !(!t || "checking" !== t.state && "uploading" !== t.state) }, e.getTaskList = function () { return o.map(a, l) }, e.cancelTask = function (e) { h(e, "canceled") }, e.pauseTask = function (e) { h(e, "paused") }, e.restartTask = function (e) { var t = s[e]; !t || "paused" !== t.state && "error" !== t.state || (t.state = "waiting", d(), u = Math.min(u, t.index), f()) }, e.isUploadRunning = function () { return c || u < a.length } } }, function (e, t, r) { var n = r(0), o = r(30), i = r(1); function a(e, t, r) { var n = i.clone(t.InventoryConfiguration); if (n.OptionalFields) { var o = n.OptionalFields || []; n.OptionalFields = { Field: o } } if (n.Destination && n.Destination.COSBucketDestination && n.Destination.COSBucketDestination.Encryption) { var a = n.Destination.COSBucketDestination.Encryption; Object.keys(a).indexOf("SSECOS") > -1 && (a["SSE-COS"] = a.SSECOS, delete a.SSECOS) } var s = i.json2xml({ InventoryConfiguration: n }), c = t.Headers; c["Content-Type"] = "application/xml", c["Content-MD5"] = i.b64(i.md5(s)); var u = "PUT" === e ? "name/cos:PutBucketInventory" : "name/cos:PostBucketInventory"; f.call(this, { Action: u, method: e, Bucket: t.Bucket, Region: t.Region, body: s, action: "inventory", qs: { id: t.Id }, headers: c }, (function (e, t) { return e && 204 === e.statusCode ? r(null, { statusCode: e.statusCode }) : e ? r(e) : void r(null, { statusCode: t.statusCode, headers: t.headers }) })) } function s(e) { var t = { GrantFullControl: [], GrantWrite: [], GrantRead: [], GrantReadAcp: [], GrantWriteAcp: [], ACL: "" }, r = { FULL_CONTROL: "GrantFullControl", WRITE: "GrantWrite", READ: "GrantRead", READ_ACP: "GrantReadAcp", WRITE_ACP: "GrantWriteAcp" }, n = (e && e.AccessControlList || {}).Grant; n && (n = i.isArray(n) ? n : [n]); var o = { READ: 0, WRITE: 0, FULL_CONTROL: 0 }; return n && n.length && i.each(n, (function (n) { "qcs::cam::anyone:anyone" === n.Grantee.ID || "http://cam.qcloud.com/groups/global/AllUsers" === n.Grantee.URI ? o[n.Permission] = 1 : n.Grantee.ID !== e.Owner.ID && t[r[n.Permission]].push('id="' + n.Grantee.ID + '"') })), o.FULL_CONTROL || o.WRITE && o.READ ? t.ACL = "public-read-write" : o.READ ? t.ACL = "public-read" : t.ACL = "private", i.each(r, (function (e) { t[e] = c(t[e].join(",")) })), t } function c(e) { var t, r, n = e.split(","), o = {}; for (t = 0; t < n.length;)o[r = n[t].trim()] ? n.splice(t, 1) : (o[r] = !0, n[t] = r, t++); return n.join(",") } function u(e) { var t = e.region || "", r = e.bucket || "", o = r.substr(0, r.lastIndexOf("-")), a = r.substr(r.lastIndexOf("-") + 1), s = e.domain, c = e.object; "function" == typeof s && (s = s({ Bucket: r, Region: t })), ["http", "https"].includes(e.protocol) && (e.protocol = e.protocol + ":"); var u = e.protocol || (i.isBrowser && "object" === ("undefined" == typeof location ? "undefined" : n(location)) && "http:" === location.protocol ? "http:" : "https:"); s || (s = ["cn-south", "cn-south-2", "cn-north", "cn-east", "cn-southwest", "sg"].indexOf(t) > -1 ? "{Region}.myqcloud.com" : "cos.{Region}.myqcloud.com", e.ForcePathStyle || (s = "{Bucket}." + s)), s = (s = s.replace(/\{\{AppId\}\}/gi, a).replace(/\{\{Bucket\}\}/gi, o).replace(/\{\{Region\}\}/gi, t).replace(/\{\{.*?\}\}/gi, "")).replace(/\{AppId\}/gi, a).replace(/\{BucketName\}/gi, o).replace(/\{Bucket\}/gi, r).replace(/\{Region\}/gi, t).replace(/\{.*?\}/gi, ""), /^[a-zA-Z]+:\/\//.test(s) || (s = u + "//" + s), "/" === s.slice(-1) && (s = s.slice(0, -1)); var l = s; return e.ForcePathStyle && (l += "/" + r), l += "/", c && (l += i.camSafeUrlEncode(c).replace(/%2F/g, "/")), e.isLocation && (l = l.replace(/^https?:\/\//, "")), l } var l = function (e) { if (!e.Bucket || !e.Region) return ""; var t = void 0 === e.UseAccelerate ? this.options.UseAccelerate : e.UseAccelerate, r = (e.Url || u({ ForcePathStyle: this.options.ForcePathStyle, protocol: this.options.Protocol, domain: this.options.Domain, bucket: e.Bucket, region: t ? "accelerate" : e.Region })).replace(/^https?:\/\/([^/]+)(\/.*)?$/, "$1"); return new RegExp("^([a-z\\d-]+-\\d+\\.)?(cos|cosv6|ci|pic)\\.([a-z\\d-]+)\\.myqcloud\\.com$").test(r) ? r : "" }; function d(e, t) { var r = i.clone(e.Headers), n = ""; i.each(r, (function (e, t) { ("" === e || ["content-type", "cache-control", "expires"].indexOf(t.toLowerCase()) > -1) && delete r[t], "host" === t.toLowerCase() && (n = e) })); var o = !1 !== e.ForceSignHost; !n && e.SignHost && o && (r.Host = e.SignHost); var a = !1, s = function (e, r) { a || (a = !0, r && r.XCosSecurityToken && !r.SecurityToken && ((r = i.clone(r)).SecurityToken = r.XCosSecurityToken, delete r.XCosSecurityToken), t && t(e, r)) }, c = this, u = e.Bucket || "", l = e.Region || "", d = e.Key || ""; c.options.ForcePathStyle && u && (d = u + "/" + d); var p = "/" + d, f = {}, h = e.Scope; if (!h) { var g = e.Action || "", m = e.ResourceKey || e.Key || ""; h = e.Scope || [{ action: g, bucket: u, region: l, prefix: m }] } var y = i.md5(JSON.stringify(h)); c._StsCache = c._StsCache || [], function () { var e, t; for (e = c._StsCache.length - 1; e >= 0; e--) { t = c._StsCache[e]; var r = Math.round(i.getSkewTime(c.options.SystemClockOffset) / 1e3) + 30; if (t.StartTime && r < t.StartTime || r >= t.ExpiredTime) c._StsCache.splice(e, 1); else if (!t.ScopeLimit || t.ScopeLimit && t.ScopeKey === y) { f = t; break } } }(); var v, b = function () { var t = ""; f.StartTime && e.Expires ? t = f.StartTime + ";" + (f.StartTime + 1 * e.Expires) : f.StartTime && f.ExpiredTime && (t = f.StartTime + ";" + f.ExpiredTime); var n = { Authorization: i.getAuth({ SecretId: f.TmpSecretId, SecretKey: f.TmpSecretKey, Method: e.Method, Pathname: p, Query: e.Query, Headers: r, Expires: e.Expires, UseRawKey: c.options.UseRawKey, SystemClockOffset: c.options.SystemClockOffset, KeyTime: t, ForceSignHost: o }), SecurityToken: f.SecurityToken || f.XCosSecurityToken || "", Token: f.Token || "", ClientIP: f.ClientIP || "", ClientUA: f.ClientUA || "" }; s(null, n) }, C = function (e) { if (e.Authorization) { var t = !1, r = e.Authorization; if (r) if (r.indexOf(" ") > -1) t = !1; else if (r.indexOf("q-sign-algorithm=") > -1 && r.indexOf("q-ak=") > -1 && r.indexOf("q-sign-time=") > -1 && r.indexOf("q-key-time=") > -1 && r.indexOf("q-url-param-list=") > -1) t = !0; else try { (r = atob(r)).indexOf("a=") > -1 && r.indexOf("k=") > -1 && r.indexOf("t=") > -1 && r.indexOf("r=") > -1 && r.indexOf("b=") > -1 && (t = !0) } catch (e) { } if (!t) return i.error(new Error("getAuthorization callback params format error")) } else { if (!e.TmpSecretId) return i.error(new Error('getAuthorization callback params missing "TmpSecretId"')); if (!e.TmpSecretKey) return i.error(new Error('getAuthorization callback params missing "TmpSecretKey"')); if (!e.SecurityToken && !e.XCosSecurityToken) return i.error(new Error('getAuthorization callback params missing "SecurityToken"')); if (!e.ExpiredTime) return i.error(new Error('getAuthorization callback params missing "ExpiredTime"')); if (e.ExpiredTime && 10 !== e.ExpiredTime.toString().length) return i.error(new Error('getAuthorization callback params "ExpiredTime" should be 10 digits')); if (e.StartTime && 10 !== e.StartTime.toString().length) return i.error(new Error('getAuthorization callback params "StartTime" should be 10 StartTime')) } return !1 }; if (f.ExpiredTime && f.ExpiredTime - i.getSkewTime(c.options.SystemClockOffset) / 1e3 > 60) b(); else if (c.options.getAuthorization) c.options.getAuthorization.call(c, { Bucket: u, Region: l, Method: e.Method, Key: d, Pathname: p, Query: e.Query, Headers: r, Scope: h, SystemClockOffset: c.options.SystemClockOffset, ForceSignHost: o }, (function (e) { "string" == typeof e && (e = { Authorization: e }); var t = C(e); if (t) return s(t); e.Authorization ? s(null, e) : ((f = e || {}).Scope = h, f.ScopeKey = y, c._StsCache.push(f), b()) })); else { if (!c.options.getSTS) return v = { Authorization: i.getAuth({ SecretId: e.SecretId || c.options.SecretId, SecretKey: e.SecretKey || c.options.SecretKey, Method: e.Method, Pathname: p, Query: e.Query, Headers: r, Expires: e.Expires, UseRawKey: c.options.UseRawKey, SystemClockOffset: c.options.SystemClockOffset, ForceSignHost: o }), SecurityToken: c.options.SecurityToken || c.options.XCosSecurityToken }, s(null, v), v; c.options.getSTS.call(c, { Bucket: u, Region: l }, (function (e) { (f = e || {}).Scope = h, f.ScopeKey = y, f.TmpSecretId || (f.TmpSecretId = f.SecretId), f.TmpSecretKey || (f.TmpSecretKey = f.SecretKey); var t = C(f); if (t) return s(t); c._StsCache.push(f), b() })) } return "" } function p(e) { var t = !1, r = !1, n = e.headers && (e.headers.date || e.headers.Date) || e.error && e.error.ServerTime; try { var o = e.error.Code, a = e.error.Message; ("RequestTimeTooSkewed" === o || "AccessDenied" === o && "Request has expired" === a) && (r = !0) } catch (e) { } if (e) if (r && n) { var s = Date.parse(n); this.options.CorrectClockSkew && Math.abs(i.getSkewTime(this.options.SystemClockOffset) - s) >= 3e4 && (this.options.SystemClockOffset = s - Date.now(), t = !0) } else 5 === Math.floor(e.statusCode / 100) && (t = !0); return t } function f(e, t) { var r = this; !e.headers && (e.headers = {}), !e.qs && (e.qs = {}), e.VersionId && (e.qs.versionId = e.VersionId), e.qs = i.clearKey(e.qs), e.headers && (e.headers = i.clearKey(e.headers)), e.qs && (e.qs = i.clearKey(e.qs)); var n = i.clone(e.qs); e.action && (n[e.action] = ""); var o = e.url || e.Url, a = e.SignHost || l.call(this, { Bucket: e.Bucket, Region: e.Region, Url: o }), s = e.tracker; !function o(i) { var c = r.options.SystemClockOffset; s && s.setParams({ signStartTime: (new Date).getTime(), retryTimes: i - 1 }), d.call(r, { Bucket: e.Bucket || "", Region: e.Region || "", Method: e.method, Key: e.Key, Query: n, Headers: e.headers, SignHost: a, Action: e.Action, ResourceKey: e.ResourceKey, Scope: e.Scope, ForceSignHost: r.options.ForceSignHost }, (function (n, a) { n ? t(n) : (s && s.setParams({ signEndTime: (new Date).getTime(), httpStartTime: (new Date).getTime() }), e.AuthData = a, h.call(r, e, (function (n, a) { s && s.setParams({ httpEndTime: (new Date).getTime() }), n && i < 2 && (c !== r.options.SystemClockOffset || p.call(r, n)) ? (e.headers && (delete e.headers.Authorization, delete e.headers.token, delete e.headers.clientIP, delete e.headers.clientUA, e.headers["x-cos-security-token"] && delete e.headers["x-cos-security-token"], e.headers["x-ci-security-token"] && delete e.headers["x-ci-security-token"]), o(i + 1)) : t(n, a) }))) })) }(1) } function h(e, t) { var r = this, n = e.TaskId; if (!n || r._isRunningTask(n)) { var a = e.Bucket, s = e.Region, c = e.Key, l = e.method || "GET", d = e.Url || e.url, p = e.body, f = e.rawBody; r.options.UseAccelerate && (s = "accelerate"), d = d || u({ ForcePathStyle: r.options.ForcePathStyle, protocol: r.options.Protocol, domain: r.options.Domain, bucket: a, region: s, object: c }), e.action && (d = d + "?" + (i.isIOS_QQ ? "".concat(e.action, "=") : e.action)), e.qsStr && (d = d.indexOf("?") > -1 ? d + "&" + e.qsStr : d + "?" + e.qsStr); var h = { method: l, url: d, headers: e.headers, qs: e.qs, body: p }, g = "x-cos-security-token"; if (i.isCIHost(d) && (g = "x-ci-security-token"), h.headers.Authorization = e.AuthData.Authorization, e.AuthData.Token && (h.headers.token = e.AuthData.Token), e.AuthData.ClientIP && (h.headers.clientIP = e.AuthData.ClientIP), e.AuthData.ClientUA && (h.headers.clientUA = e.AuthData.ClientUA), e.AuthData.SecurityToken && (h.headers[g] = e.AuthData.SecurityToken), h.headers && (h.headers = i.clearKey(h.headers)), h = i.clearKey(h), e.onProgress && "function" == typeof e.onProgress) { var m = p && (p.size || p.length) || 0; h.onProgress = function (t) { if (!n || r._isRunningTask(n)) { var o = t ? t.loaded : 0; e.onProgress({ loaded: o, total: m }) } } } e.onDownloadProgress && (h.onDownloadProgress = e.onDownloadProgress), e.DataType && (h.dataType = e.DataType), this.options.Timeout && (h.timeout = this.options.Timeout), r.options.ForcePathStyle && (h.pathStyle = r.options.ForcePathStyle), r.emit("before-send", h); var y = h.url.includes("accelerate."), v = h.qs ? Object.keys(h.qs).map((function (e) { return "".concat(e, "=").concat(h.qs[e]) })).join("&") : "", b = v ? h.url + "?" + v : h.url; e.tracker && e.tracker.setParams({ reqUrl: b, accelerate: y ? "Y" : "N" }), e.tracker && e.tracker.parent && e.tracker.parent.setParams({ reqUrl: b, accelerate: y ? "Y" : "N" }); var C = (r.options.Request || o)(h, (function (e) { if (!e || "abort" !== e.error) { var o = { options: h, error: e && e.error, statusCode: e && e.statusCode || 0, statusMessage: e && e.statusMessage || "", headers: e && e.headers || {}, body: e && e.body }; r.emit("after-receive", o); var a, s = o.error, c = o.body, u = { statusCode: o.statusCode, statusMessage: o.statusMessage, headers: o.headers }, l = function (e, o) { if (n && r.off("inner-kill-task", k), !a) { a = !0; var s = {}; u && u.statusCode && (s.statusCode = u.statusCode), u && u.headers && (s.headers = u.headers), e ? (e = i.extend(e || {}, s), t(e, null)) : (o = i.extend(o || {}, s), t(null, o)), C = null } }; if (s) return l(i.error(s)); var d, p = u.statusCode, g = 2 === Math.floor(p / 100); if (f && g) return l(null, { body: c }); try { d = c && c.indexOf("<") > -1 && c.indexOf(">") > -1 && i.xml2json(c) || {} } catch (e) { d = {} } var m = d && d.Error; g ? l(null, d) : m ? l(i.error(new Error(m.Message), { code: m.Code, error: m })) : p ? l(i.error(new Error(u.statusMessage), { code: "" + p })) : p && l(i.error(new Error("statusCode error"))) } })), k = function e(t) { t.TaskId === n && (C && C.abort && C.abort(), r.off("inner-kill-task", e)) }; n && r.on("inner-kill-task", k) } } var g = { getService: function (e, t) { "function" == typeof e && (t = e, e = {}); var r = this.options.Protocol || (i.isBrowser && "object" === ("undefined" == typeof location ? "undefined" : n(location)) && "http:" === location.protocol ? "http:" : "https:"), o = this.options.ServiceDomain, a = e.AppId || this.options.appId, s = e.Region; o ? (o = o.replace(/\{\{AppId\}\}/gi, a || "").replace(/\{\{Region\}\}/gi, s || "").replace(/\{\{.*?\}\}/gi, ""), /^[a-zA-Z]+:\/\//.test(o) || (o = r + "//" + o), "/" === o.slice(-1) && (o = o.slice(0, -1))) : o = s ? r + "//cos." + s + ".myqcloud.com" : r + "//service.cos.myqcloud.com"; var c = "", u = s ? "cos." + s + ".myqcloud.com" : "service.cos.myqcloud.com"; u === o.replace(/^https?:\/\/([^/]+)(\/.*)?$/, "$1") && (c = u), f.call(this, { Action: "name/cos:GetService", url: o, method: "GET", headers: e.Headers, SignHost: c }, (function (e, r) { if (e) return t(e); var n = r && r.ListAllMyBucketsResult && r.ListAllMyBucketsResult.Buckets && r.ListAllMyBucketsResult.Buckets.Bucket || []; n = i.isArray(n) ? n : [n]; var o = r && r.ListAllMyBucketsResult && r.ListAllMyBucketsResult.Owner || {}; t(null, { Buckets: n, Owner: o, statusCode: r.statusCode, headers: r.headers }) })) }, putBucket: function (e, t) { var r = this, n = ""; if (e.BucketAZConfig) { var o = { BucketAZConfig: e.BucketAZConfig }; n = i.json2xml({ CreateBucketConfiguration: o }) } f.call(this, { Action: "name/cos:PutBucket", method: "PUT", Bucket: e.Bucket, Region: e.Region, headers: e.Headers, body: n }, (function (n, o) { if (n) return t(n); var i = u({ protocol: r.options.Protocol, domain: r.options.Domain, bucket: e.Bucket, region: e.Region, isLocation: !0 }); t(null, { Location: i, statusCode: o.statusCode, headers: o.headers }) })) }, headBucket: function (e, t) { f.call(this, { Action: "name/cos:HeadBucket", Bucket: e.Bucket, Region: e.Region, headers: e.Headers, method: "HEAD" }, t) }, getBucket: function (e, t) { var r = {}; r.prefix = e.Prefix || "", r.delimiter = e.Delimiter, r.marker = e.Marker, r["max-keys"] = e.MaxKeys, r["encoding-type"] = e.EncodingType, f.call(this, { Action: "name/cos:GetBucket", ResourceKey: r.prefix, method: "GET", Bucket: e.Bucket, Region: e.Region, headers: e.Headers, qs: r }, (function (e, r) { if (e) return t(e); var n = r.ListBucketResult || {}, o = n.Contents || [], a = n.CommonPrefixes || []; o = i.isArray(o) ? o : [o], a = i.isArray(a) ? a : [a]; var s = i.clone(n); i.extend(s, { Contents: o, CommonPrefixes: a, statusCode: r.statusCode, headers: r.headers }), t(null, s) })) }, deleteBucket: function (e, t) { f.call(this, { Action: "name/cos:DeleteBucket", Bucket: e.Bucket, Region: e.Region, headers: e.Headers, method: "DELETE" }, (function (e, r) { return e && 204 === e.statusCode ? t(null, { statusCode: e.statusCode }) : e ? t(e) : void t(null, { statusCode: r.statusCode, headers: r.headers }) })) }, putBucketAcl: function (e, t) { var r = e.Headers, n = ""; if (e.AccessControlPolicy) { var o = i.clone(e.AccessControlPolicy || {}), a = o.Grants || o.Grant; a = i.isArray(a) ? a : [a], delete o.Grant, delete o.Grants, o.AccessControlList = { Grant: a }, n = i.json2xml({ AccessControlPolicy: o }), r["Content-Type"] = "application/xml", r["Content-MD5"] = i.b64(i.md5(n)) } i.each(r, (function (e, t) { 0 === t.indexOf("x-cos-grant-") && (r[t] = c(r[t])) })), f.call(this, { Action: "name/cos:PutBucketACL", method: "PUT", Bucket: e.Bucket, Region: e.Region, headers: r, action: "acl", body: n }, (function (e, r) { if (e) return t(e); t(null, { statusCode: r.statusCode, headers: r.headers }) })) }, getBucketAcl: function (e, t) { f.call(this, { Action: "name/cos:GetBucketACL", method: "GET", Bucket: e.Bucket, Region: e.Region, headers: e.Headers, action: "acl" }, (function (e, r) { if (e) return t(e); var n = r.AccessControlPolicy || {}, o = n.Owner || {}, a = n.AccessControlList.Grant || []; a = i.isArray(a) ? a : [a]; var c = s(n); r.headers && r.headers["x-cos-acl"] && (c.ACL = r.headers["x-cos-acl"]), c = i.extend(c, { Owner: o, Grants: a, statusCode: r.statusCode, headers: r.headers }), t(null, c) })) }, putBucketCors: function (e, t) { var r = (e.CORSConfiguration || {}).CORSRules || e.CORSRules || []; r = i.clone(i.isArray(r) ? r : [r]), i.each(r, (function (e) { i.each(["AllowedOrigin", "AllowedHeader", "AllowedMethod", "ExposeHeader"], (function (t) { var r = t + "s", n = e[r] || e[t] || []; delete e[r], e[t] = i.isArray(n) ? n : [n] })) })); var n = { CORSRule: r }; e.ResponseVary && (n.ResponseVary = e.ResponseVary); var o = i.json2xml({ CORSConfiguration: n }), a = e.Headers; a["Content-Type"] = "application/xml", a["Content-MD5"] = i.b64(i.md5(o)), f.call(this, { Action: "name/cos:PutBucketCORS", method: "PUT", Bucket: e.Bucket, Region: e.Region, body: o, action: "cors", headers: a }, (function (e, r) { if (e) return t(e); t(null, { statusCode: r.statusCode, headers: r.headers }) })) }, getBucketCors: function (e, t) { f.call(this, { Action: "name/cos:GetBucketCORS", method: "GET", Bucket: e.Bucket, Region: e.Region, headers: e.Headers, action: "cors" }, (function (e, r) { if (e) if (404 === e.statusCode && e.error && "NoSuchCORSConfiguration" === e.error.Code) { var n = { CORSRules: [], statusCode: e.statusCode }; e.headers && (n.headers = e.headers), t(null, n) } else t(e); else { var o = r.CORSConfiguration || {}, a = o.CORSRules || o.CORSRule || []; a = i.clone(i.isArray(a) ? a : [a]); var s = o.ResponseVary; i.each(a, (function (e) { i.each(["AllowedOrigin", "AllowedHeader", "AllowedMethod", "ExposeHeader"], (function (t) { var r = t + "s", n = e[r] || e[t] || []; delete e[t], e[r] = i.isArray(n) ? n : [n] })) })), t(null, { CORSRules: a, ResponseVary: s, statusCode: r.statusCode, headers: r.headers }) } })) }, deleteBucketCors: function (e, t) { f.call(this, { Action: "name/cos:DeleteBucketCORS", method: "DELETE", Bucket: e.Bucket, Region: e.Region, headers: e.Headers, action: "cors" }, (function (e, r) { return e && 204 === e.statusCode ? t(null, { statusCode: e.statusCode }) : e ? t(e) : void t(null, { statusCode: r.statusCode || e.statusCode, headers: r.headers }) })) }, getBucketLocation: function (e, t) { f.call(this, { Action: "name/cos:GetBucketLocation", method: "GET", Bucket: e.Bucket, Region: e.Region, headers: e.Headers, action: "location" }, t) }, getBucketPolicy: function (e, t) { f.call(this, { Action: "name/cos:GetBucketPolicy", method: "GET", Bucket: e.Bucket, Region: e.Region, headers: e.Headers, action: "policy", rawBody: !0 }, (function (e, r) { if (e) return e.statusCode && 403 === e.statusCode ? t(i.error(e, { ErrorStatus: "Access Denied" })) : e.statusCode && 405 === e.statusCode ? t(i.error(e, { ErrorStatus: "Method Not Allowed" })) : e.statusCode && 404 === e.statusCode ? t(i.error(e, { ErrorStatus: "Policy Not Found" })) : t(e); var n = {}; try { n = JSON.parse(r.body) } catch (e) { } t(null, { Policy: n, statusCode: r.statusCode, headers: r.headers }) })) }, putBucketPolicy: function (e, t) { var r = e.Policy; try { "string" == typeof r && (r = JSON.parse(r)) } catch (e) { } if (!r || "string" == typeof r) return t(i.error(new Error("Policy format error"))); var n = JSON.stringify(r); r.version || (r.version = "2.0"); var o = e.Headers; o["Content-Type"] = "application/json", o["Content-MD5"] = i.b64(i.md5(n)), f.call(this, { Action: "name/cos:PutBucketPolicy", method: "PUT", Bucket: e.Bucket, Region: e.Region, action: "policy", body: n, headers: o }, (function (e, r) { return e && 204 === e.statusCode ? t(null, { statusCode: e.statusCode }) : e ? t(e) : void t(null, { statusCode: r.statusCode, headers: r.headers }) })) }, deleteBucketPolicy: function (e, t) { f.call(this, { Action: "name/cos:DeleteBucketPolicy", method: "DELETE", Bucket: e.Bucket, Region: e.Region, headers: e.Headers, action: "policy" }, (function (e, r) { return e && 204 === e.statusCode ? t(null, { statusCode: e.statusCode }) : e ? t(e) : void t(null, { statusCode: r.statusCode || e.statusCode, headers: r.headers }) })) }, putBucketTagging: function (e, t) { var r = e.Tagging || {}, n = r.TagSet || r.Tags || e.Tags || []; n = i.clone(i.isArray(n) ? n : [n]); var o = i.json2xml({ Tagging: { TagSet: { Tag: n } } }), a = e.Headers; a["Content-Type"] = "application/xml", a["Content-MD5"] = i.b64(i.md5(o)), f.call(this, { Action: "name/cos:PutBucketTagging", method: "PUT", Bucket: e.Bucket, Region: e.Region, body: o, action: "tagging", headers: a }, (function (e, r) { return e && 204 === e.statusCode ? t(null, { statusCode: e.statusCode }) : e ? t(e) : void t(null, { statusCode: r.statusCode, headers: r.headers }) })) }, getBucketTagging: function (e, t) { f.call(this, { Action: "name/cos:GetBucketTagging", method: "GET", Bucket: e.Bucket, Region: e.Region, headers: e.Headers, action: "tagging" }, (function (e, r) { if (e) if (404 !== e.statusCode || !e.error || "Not Found" !== e.error && "NoSuchTagSet" !== e.error.Code) t(e); else { var n = { Tags: [], statusCode: e.statusCode }; e.headers && (n.headers = e.headers), t(null, n) } else { var o = []; try { o = r.Tagging.TagSet.Tag || [] } catch (e) { } o = i.clone(i.isArray(o) ? o : [o]), t(null, { Tags: o, statusCode: r.statusCode, headers: r.headers }) } })) }, deleteBucketTagging: function (e, t) { f.call(this, { Action: "name/cos:DeleteBucketTagging", method: "DELETE", Bucket: e.Bucket, Region: e.Region, headers: e.Headers, action: "tagging" }, (function (e, r) { return e && 204 === e.statusCode ? t(null, { statusCode: e.statusCode }) : e ? t(e) : void t(null, { statusCode: r.statusCode, headers: r.headers }) })) }, putBucketLifecycle: function (e, t) { var r = (e.LifecycleConfiguration || {}).Rules || e.Rules || []; r = i.clone(r); var n = i.json2xml({ LifecycleConfiguration: { Rule: r } }), o = e.Headers; o["Content-Type"] = "application/xml", o["Content-MD5"] = i.b64(i.md5(n)), f.call(this, { Action: "name/cos:PutBucketLifecycle", method: "PUT", Bucket: e.Bucket, Region: e.Region, body: n, action: "lifecycle", headers: o }, (function (e, r) { return e && 204 === e.statusCode ? t(null, { statusCode: e.statusCode }) : e ? t(e) : void t(null, { statusCode: r.statusCode, headers: r.headers }) })) }, getBucketLifecycle: function (e, t) { f.call(this, { Action: "name/cos:GetBucketLifecycle", method: "GET", Bucket: e.Bucket, Region: e.Region, headers: e.Headers, action: "lifecycle" }, (function (e, r) { if (e) if (404 === e.statusCode && e.error && "NoSuchLifecycleConfiguration" === e.error.Code) { var n = { Rules: [], statusCode: e.statusCode }; e.headers && (n.headers = e.headers), t(null, n) } else t(e); else { var o = []; try { o = r.LifecycleConfiguration.Rule || [] } catch (e) { } o = i.clone(i.isArray(o) ? o : [o]), t(null, { Rules: o, statusCode: r.statusCode, headers: r.headers }) } })) }, deleteBucketLifecycle: function (e, t) { f.call(this, { Action: "name/cos:DeleteBucketLifecycle", method: "DELETE", Bucket: e.Bucket, Region: e.Region, headers: e.Headers, action: "lifecycle" }, (function (e, r) { return e && 204 === e.statusCode ? t(null, { statusCode: e.statusCode }) : e ? t(e) : void t(null, { statusCode: r.statusCode, headers: r.headers }) })) }, putBucketVersioning: function (e, t) { if (e.VersioningConfiguration) { var r = e.VersioningConfiguration || {}, n = i.json2xml({ VersioningConfiguration: r }), o = e.Headers; o["Content-Type"] = "application/xml", o["Content-MD5"] = i.b64(i.md5(n)), f.call(this, { Action: "name/cos:PutBucketVersioning", method: "PUT", Bucket: e.Bucket, Region: e.Region, body: n, action: "versioning", headers: o }, (function (e, r) { return e && 204 === e.statusCode ? t(null, { statusCode: e.statusCode }) : e ? t(e) : void t(null, { statusCode: r.statusCode, headers: r.headers }) })) } else t(i.error(new Error("missing param VersioningConfiguration"))) }, getBucketVersioning: function (e, t) { f.call(this, { Action: "name/cos:GetBucketVersioning", method: "GET", Bucket: e.Bucket, Region: e.Region, headers: e.Headers, action: "versioning" }, (function (e, r) { e || !r.VersioningConfiguration && (r.VersioningConfiguration = {}), t(e, r) })) }, putBucketReplication: function (e, t) { var r = i.clone(e.ReplicationConfiguration), n = i.json2xml({ ReplicationConfiguration: r }); n = (n = n.replace(/<(\/?)Rules>/gi, "<$1Rule>")).replace(/<(\/?)Tags>/gi, "<$1Tag>"); var o = e.Headers; o["Content-Type"] = "application/xml", o["Content-MD5"] = i.b64(i.md5(n)), f.call(this, { Action: "name/cos:PutBucketReplication", method: "PUT", Bucket: e.Bucket, Region: e.Region, body: n, action: "replication", headers: o }, (function (e, r) { return e && 204 === e.statusCode ? t(null, { statusCode: e.statusCode }) : e ? t(e) : void t(null, { statusCode: r.statusCode, headers: r.headers }) })) }, getBucketReplication: function (e, t) { f.call(this, { Action: "name/cos:GetBucketReplication", method: "GET", Bucket: e.Bucket, Region: e.Region, headers: e.Headers, action: "replication" }, (function (e, r) { if (e) if (404 !== e.statusCode || !e.error || "Not Found" !== e.error && "ReplicationConfigurationnotFoundError" !== e.error.Code) t(e); else { var n = { ReplicationConfiguration: { Rules: [] }, statusCode: e.statusCode }; e.headers && (n.headers = e.headers), t(null, n) } else !r.ReplicationConfiguration && (r.ReplicationConfiguration = {}), r.ReplicationConfiguration.Rule && (r.ReplicationConfiguration.Rules = i.makeArray(r.ReplicationConfiguration.Rule), delete r.ReplicationConfiguration.Rule), t(e, r) })) }, deleteBucketReplication: function (e, t) { f.call(this, { Action: "name/cos:DeleteBucketReplication", method: "DELETE", Bucket: e.Bucket, Region: e.Region, headers: e.Headers, action: "replication" }, (function (e, r) { return e && 204 === e.statusCode ? t(null, { statusCode: e.statusCode }) : e ? t(e) : void t(null, { statusCode: r.statusCode, headers: r.headers }) })) }, putBucketWebsite: function (e, t) { if (e.WebsiteConfiguration) { var r = i.clone(e.WebsiteConfiguration || {}), n = r.RoutingRules || r.RoutingRule || []; n = i.isArray(n) ? n : [n], delete r.RoutingRule, delete r.RoutingRules, n.length && (r.RoutingRules = { RoutingRule: n }); var o = i.json2xml({ WebsiteConfiguration: r }), a = e.Headers; a["Content-Type"] = "application/xml", a["Content-MD5"] = i.b64(i.md5(o)), f.call(this, { Action: "name/cos:PutBucketWebsite", method: "PUT", Bucket: e.Bucket, Region: e.Region, body: o, action: "website", headers: a }, (function (e, r) { return e && 204 === e.statusCode ? t(null, { statusCode: e.statusCode }) : e ? t(e) : void t(null, { statusCode: r.statusCode, headers: r.headers }) })) } else t(i.error(new Error("missing param WebsiteConfiguration"))) }, getBucketWebsite: function (e, t) { f.call(this, { Action: "name/cos:GetBucketWebsite", method: "GET", Bucket: e.Bucket, Region: e.Region, Key: e.Key, headers: e.Headers, action: "website" }, (function (e, r) { if (e) if (404 === e.statusCode && "NoSuchWebsiteConfiguration" === e.error.Code) { var n = { WebsiteConfiguration: {}, statusCode: e.statusCode }; e.headers && (n.headers = e.headers), t(null, n) } else t(e); else { var o = r.WebsiteConfiguration || {}; if (o.RoutingRules) { var a = i.clone(o.RoutingRules.RoutingRule || []); a = i.makeArray(a), o.RoutingRules = a } t(null, { WebsiteConfiguration: o, statusCode: r.statusCode, headers: r.headers }) } })) }, deleteBucketWebsite: function (e, t) { f.call(this, { Action: "name/cos:DeleteBucketWebsite", method: "DELETE", Bucket: e.Bucket, Region: e.Region, headers: e.Headers, action: "website" }, (function (e, r) { return e && 204 === e.statusCode ? t(null, { statusCode: e.statusCode }) : e ? t(e) : void t(null, { statusCode: r.statusCode, headers: r.headers }) })) }, putBucketReferer: function (e, t) { if (e.RefererConfiguration) { var r = i.clone(e.RefererConfiguration || {}), n = r.DomainList || {}, o = n.Domains || n.Domain || []; (o = i.isArray(o) ? o : [o]).length && (r.DomainList = { Domain: o }); var a = i.json2xml({ RefererConfiguration: r }), s = e.Headers; s["Content-Type"] = "application/xml", s["Content-MD5"] = i.b64(i.md5(a)), f.call(this, { Action: "name/cos:PutBucketReferer", method: "PUT", Bucket: e.Bucket, Region: e.Region, body: a, action: "referer", headers: s }, (function (e, r) { return e && 204 === e.statusCode ? t(null, { statusCode: e.statusCode }) : e ? t(e) : void t(null, { statusCode: r.statusCode, headers: r.headers }) })) } else t(i.error(new Error("missing param RefererConfiguration"))) }, getBucketReferer: function (e, t) { f.call(this, { Action: "name/cos:GetBucketReferer", method: "GET", Bucket: e.Bucket, Region: e.Region, Key: e.Key, headers: e.Headers, action: "referer" }, (function (e, r) { if (e) if (404 === e.statusCode && "NoSuchRefererConfiguration" === e.error.Code) { var n = { WebsiteConfiguration: {}, statusCode: e.statusCode }; e.headers && (n.headers = e.headers), t(null, n) } else t(e); else { var o = r.RefererConfiguration || {}; if (o.DomainList) { var a = i.makeArray(o.DomainList.Domain || []); o.DomainList = { Domains: a } } t(null, { RefererConfiguration: o, statusCode: r.statusCode, headers: r.headers }) } })) }, putBucketDomain: function (e, t) { var r = (e.DomainConfiguration || {}).DomainRule || e.DomainRule || []; r = i.clone(r); var n = i.json2xml({ DomainConfiguration: { DomainRule: r } }), o = e.Headers; o["Content-Type"] = "application/xml", o["Content-MD5"] = i.b64(i.md5(n)), f.call(this, { Action: "name/cos:PutBucketDomain", method: "PUT", Bucket: e.Bucket, Region: e.Region, body: n, action: "domain", headers: o }, (function (e, r) { return e && 204 === e.statusCode ? t(null, { statusCode: e.statusCode }) : e ? t(e) : void t(null, { statusCode: r.statusCode, headers: r.headers }) })) }, getBucketDomain: function (e, t) { f.call(this, { Action: "name/cos:GetBucketDomain", method: "GET", Bucket: e.Bucket, Region: e.Region, headers: e.Headers, action: "domain" }, (function (e, r) { if (e) return t(e); var n = []; try { n = r.DomainConfiguration.DomainRule || [] } catch (e) { } n = i.clone(i.isArray(n) ? n : [n]), t(null, { DomainRule: n, statusCode: r.statusCode, headers: r.headers }) })) }, deleteBucketDomain: function (e, t) { f.call(this, { Action: "name/cos:DeleteBucketDomain", method: "DELETE", Bucket: e.Bucket, Region: e.Region, headers: e.Headers, action: "domain" }, (function (e, r) { return e && 204 === e.statusCode ? t(null, { statusCode: e.statusCode }) : e ? t(e) : void t(null, { statusCode: r.statusCode, headers: r.headers }) })) }, putBucketOrigin: function (e, t) { var r = (e.OriginConfiguration || {}).OriginRule || e.OriginRule || []; r = i.clone(r); var n = i.json2xml({ OriginConfiguration: { OriginRule: r } }), o = e.Headers; o["Content-Type"] = "application/xml", o["Content-MD5"] = i.b64(i.md5(n)), f.call(this, { Action: "name/cos:PutBucketOrigin", method: "PUT", Bucket: e.Bucket, Region: e.Region, body: n, action: "origin", headers: o }, (function (e, r) { return e && 204 === e.statusCode ? t(null, { statusCode: e.statusCode }) : e ? t(e) : void t(null, { statusCode: r.statusCode, headers: r.headers }) })) }, getBucketOrigin: function (e, t) { f.call(this, { Action: "name/cos:GetBucketOrigin", method: "GET", Bucket: e.Bucket, Region: e.Region, headers: e.Headers, action: "origin" }, (function (e, r) { if (e) return t(e); var n = []; try { n = r.OriginConfiguration.OriginRule || [] } catch (e) { } n = i.clone(i.isArray(n) ? n : [n]), t(null, { OriginRule: n, statusCode: r.statusCode, headers: r.headers }) })) }, deleteBucketOrigin: function (e, t) { f.call(this, { Action: "name/cos:DeleteBucketOrigin", method: "DELETE", Bucket: e.Bucket, Region: e.Region, headers: e.Headers, action: "origin" }, (function (e, r) { return e && 204 === e.statusCode ? t(null, { statusCode: e.statusCode }) : e ? t(e) : void t(null, { statusCode: r.statusCode, headers: r.headers }) })) }, putBucketLogging: function (e, t) { var r = i.json2xml({ BucketLoggingStatus: e.BucketLoggingStatus || "" }), n = e.Headers; n["Content-Type"] = "application/xml", n["Content-MD5"] = i.b64(i.md5(r)), f.call(this, { Action: "name/cos:PutBucketLogging", method: "PUT", Bucket: e.Bucket, Region: e.Region, body: r, action: "logging", headers: n }, (function (e, r) { return e && 204 === e.statusCode ? t(null, { statusCode: e.statusCode }) : e ? t(e) : void t(null, { statusCode: r.statusCode, headers: r.headers }) })) }, getBucketLogging: function (e, t) { f.call(this, { Action: "name/cos:GetBucketLogging", method: "GET", Bucket: e.Bucket, Region: e.Region, headers: e.Headers, action: "logging" }, (function (e, r) { if (e) return t(e); t(null, { BucketLoggingStatus: r.BucketLoggingStatus, statusCode: r.statusCode, headers: r.headers }) })) }, putBucketInventory: function (e, t) { return a.call(this, "PUT", e, t) }, postBucketInventory: function (e, t) { return a.call(this, "POST", e, t) }, getBucketInventory: function (e, t) { f.call(this, { Action: "name/cos:GetBucketInventory", method: "GET", Bucket: e.Bucket, Region: e.Region, headers: e.Headers, action: "inventory", qs: { id: e.Id } }, (function (e, r) { if (e) return t(e); var n = r.InventoryConfiguration; if (n && n.OptionalFields && n.OptionalFields.Field) { var o = n.OptionalFields.Field; i.isArray(o) || (o = [o]), n.OptionalFields = o } if (n.Destination && n.Destination.COSBucketDestination && n.Destination.COSBucketDestination.Encryption) { var a = n.Destination.COSBucketDestination.Encryption; Object.keys(a).indexOf("SSE-COS") > -1 && (a.SSECOS = a["SSE-COS"], delete a["SSE-COS"]) } t(null, { InventoryConfiguration: n, statusCode: r.statusCode, headers: r.headers }) })) }, listBucketInventory: function (e, t) { f.call(this, { Action: "name/cos:ListBucketInventory", method: "GET", Bucket: e.Bucket, Region: e.Region, headers: e.Headers, action: "inventory", qs: { "continuation-token": e.ContinuationToken } }, (function (e, r) { if (e) return t(e); var n = r.ListInventoryConfigurationResult, o = n.InventoryConfiguration || []; o = i.isArray(o) ? o : [o], delete n.InventoryConfiguration, i.each(o, (function (e) { if (e && e.OptionalFields && e.OptionalFields.Field) { var t = e.OptionalFields.Field; i.isArray(t) || (t = [t]), e.OptionalFields = t } if (e.Destination && e.Destination.COSBucketDestination && e.Destination.COSBucketDestination.Encryption) { var r = e.Destination.COSBucketDestination.Encryption; Object.keys(r).indexOf("SSE-COS") > -1 && (r.SSECOS = r["SSE-COS"], delete r["SSE-COS"]) } })), n.InventoryConfigurations = o, i.extend(n, { statusCode: r.statusCode, headers: r.headers }), t(null, n) })) }, deleteBucketInventory: function (e, t) { f.call(this, { Action: "name/cos:DeleteBucketInventory", method: "DELETE", Bucket: e.Bucket, Region: e.Region, headers: e.Headers, action: "inventory", qs: { id: e.Id } }, (function (e, r) { return e && 204 === e.statusCode ? t(null, { statusCode: e.statusCode }) : e ? t(e) : void t(null, { statusCode: r.statusCode, headers: r.headers }) })) }, putBucketAccelerate: function (e, t) { if (e.AccelerateConfiguration) { var r = { AccelerateConfiguration: e.AccelerateConfiguration || {} }, n = i.json2xml(r), o = { "Content-Type": "application/xml" }; o["Content-MD5"] = i.b64(i.md5(n)), f.call(this, { Action: "name/cos:PutBucketAccelerate", method: "PUT", Bucket: e.Bucket, Region: e.Region, body: n, action: "accelerate", headers: o }, (function (e, r) { if (e) return t(e); t(null, { statusCode: r.statusCode, headers: r.headers }) })) } else t(i.error(new Error("missing param AccelerateConfiguration"))) }, getBucketAccelerate: function (e, t) { f.call(this, { Action: "name/cos:GetBucketAccelerate", method: "GET", Bucket: e.Bucket, Region: e.Region, action: "accelerate" }, (function (e, r) { e || !r.AccelerateConfiguration && (r.AccelerateConfiguration = {}), t(e, r) })) }, putBucketEncryption: function (e, t) { var r = e.ServerSideEncryptionConfiguration || {}, n = r.Rule || r.Rules || [], o = i.json2xml({ ServerSideEncryptionConfiguration: { Rule: n } }), a = e.Headers; a["Content-Type"] = "application/xml", a["Content-MD5"] = i.b64(i.md5(o)), f.call(this, { Action: "name/cos:PutBucketEncryption", method: "PUT", Bucket: e.Bucket, Region: e.Region, body: o, action: "encryption", headers: a }, (function (e, r) { return e && 204 === e.statusCode ? t(null, { statusCode: e.statusCode }) : e ? t(e) : void t(null, { statusCode: r.statusCode, headers: r.headers }) })) }, getBucketEncryption: function (e, t) { f.call(this, { Action: "name/cos:GetBucketEncryption", method: "GET", Bucket: e.Bucket, Region: e.Region, headers: e.Headers, action: "encryption" }, (function (e, r) { if (e) if (404 === e.statusCode && "NoSuchEncryptionConfiguration" === e.code) { var n = { EncryptionConfiguration: { Rules: [] }, statusCode: e.statusCode }; e.headers && (n.headers = e.headers), t(null, n) } else t(e); else { var o = i.makeArray(r.EncryptionConfiguration && r.EncryptionConfiguration.Rule || []); r.EncryptionConfiguration = { Rules: o }, t(e, r) } })) }, deleteBucketEncryption: function (e, t) { f.call(this, { Action: "name/cos:DeleteBucketReplication", method: "DELETE", Bucket: e.Bucket, Region: e.Region, headers: e.Headers, action: "encryption" }, (function (e, r) { return e && 204 === e.statusCode ? t(null, { statusCode: e.statusCode }) : e ? t(e) : void t(null, { statusCode: r.statusCode, headers: r.headers }) })) }, getObject: function (e, t) { var r = e.Query || {}, n = e.QueryString || "", o = i.throttleOnProgress.call(this, 0, e.onProgress), a = e.tracker; a && a.setParams({ signStartTime: (new Date).getTime() }), r["response-content-type"] = e.ResponseContentType, r["response-content-language"] = e.ResponseContentLanguage, r["response-expires"] = e.ResponseExpires, r["response-cache-control"] = e.ResponseCacheControl, r["response-content-disposition"] = e.ResponseContentDisposition, r["response-content-encoding"] = e.ResponseContentEncoding, f.call(this, { Action: "name/cos:GetObject", method: "GET", Bucket: e.Bucket, Region: e.Region, Key: e.Key, VersionId: e.VersionId, DataType: e.DataType, headers: e.Headers, qs: r, qsStr: n, rawBody: !0, onDownloadProgress: o, tracker: a }, (function (r, n) { if (o(null, !0), r) { var a = r.statusCode; return e.Headers["If-Modified-Since"] && a && 304 === a ? t(null, { NotModified: !0 }) : t(r) } t(null, { Body: n.body, ETag: i.attr(n.headers, "etag", ""), statusCode: n.statusCode, headers: n.headers }) })) }, headObject: function (e, t) { f.call(this, { Action: "name/cos:HeadObject", method: "HEAD", Bucket: e.Bucket, Region: e.Region, Key: e.Key, VersionId: e.VersionId, headers: e.Headers }, (function (r, n) { if (r) { var o = r.statusCode; return e.Headers["If-Modified-Since"] && o && 304 === o ? t(null, { NotModified: !0, statusCode: o }) : t(r) } n.ETag = i.attr(n.headers, "etag", ""), t(null, n) })) }, listObjectVersions: function (e, t) { var r = {}; r.prefix = e.Prefix || "", r.delimiter = e.Delimiter, r["key-marker"] = e.KeyMarker, r["version-id-marker"] = e.VersionIdMarker, r["max-keys"] = e.MaxKeys, r["encoding-type"] = e.EncodingType, f.call(this, { Action: "name/cos:GetBucketObjectVersions", ResourceKey: r.prefix, method: "GET", Bucket: e.Bucket, Region: e.Region, headers: e.Headers, qs: r, action: "versions" }, (function (e, r) { if (e) return t(e); var n = r.ListVersionsResult || {}, o = n.DeleteMarker || []; o = i.isArray(o) ? o : [o]; var a = n.Version || []; a = i.isArray(a) ? a : [a]; var s = i.clone(n); delete s.DeleteMarker, delete s.Version, i.extend(s, { DeleteMarkers: o, Versions: a, statusCode: r.statusCode, headers: r.headers }), t(null, s) })) }, putObject: function (e, t) { var r = this, n = e.ContentLength, o = i.throttleOnProgress.call(r, n, e.onProgress), a = e.Headers; a["Cache-Control"] || a["cache-control"] || (a["Cache-Control"] = ""), a["Content-Type"] || a["content-type"] || (a["Content-Type"] = e.Body && e.Body.type || ""); var s = e.UploadAddMetaMd5 || r.options.UploadAddMetaMd5 || r.options.UploadCheckContentMd5, c = e.tracker; s && c && c.setParams({ md5StartTime: (new Date).getTime() }), i.getBodyMd5(s, e.Body, (function (s) { s && (c && c.setParams({ md5EndTime: (new Date).getTime() }), r.options.UploadCheckContentMd5 && (a["Content-MD5"] = i.b64(s)), (e.UploadAddMetaMd5 || r.options.UploadAddMetaMd5) && (a["x-cos-meta-md5"] = s)), void 0 !== e.ContentLength && (a["Content-Length"] = e.ContentLength), o(null, !0), f.call(r, { Action: "name/cos:PutObject", TaskId: e.TaskId, method: "PUT", Bucket: e.Bucket, Region: e.Region, Key: e.Key, headers: e.Headers, qs: e.Query, body: e.Body, onProgress: o, tracker: c }, (function (a, s) { if (a) return o(null, !0), t(a); o({ loaded: n, total: n }, !0); var c = u({ ForcePathStyle: r.options.ForcePathStyle, protocol: r.options.Protocol, domain: r.options.Domain, bucket: e.Bucket, region: r.options.UseAccelerate ? "accelerate" : e.Region, object: e.Key }); c = c.substr(c.indexOf("://") + 3), s.Location = c, s.ETag = i.attr(s.headers, "etag", ""), t(null, s) })) }), e.onHashProgress) }, deleteObject: function (e, t) { f.call(this, { Action: "name/cos:DeleteObject", method: "DELETE", Bucket: e.Bucket, Region: e.Region, Key: e.Key, headers: e.Headers, VersionId: e.VersionId, action: e.Recursive ? "recursive" : "" }, (function (e, r) { if (e) { var n = e.statusCode; return n && 404 === n ? t(null, { BucketNotFound: !0, statusCode: n }) : t(e) } t(null, { statusCode: r.statusCode, headers: r.headers }) })) }, getObjectAcl: function (e, t) { var r = {}; e.VersionId && (r.versionId = e.VersionId), f.call(this, { Action: "name/cos:GetObjectACL", method: "GET", Bucket: e.Bucket, Region: e.Region, Key: e.Key, headers: e.Headers, qs: r, action: "acl" }, (function (e, r) { if (e) return t(e); var n = r.AccessControlPolicy || {}, o = n.Owner || {}, a = n.AccessControlList && n.AccessControlList.Grant || []; a = i.isArray(a) ? a : [a]; var c = s(n); delete c.GrantWrite, r.headers && r.headers["x-cos-acl"] && (c.ACL = r.headers["x-cos-acl"]), c = i.extend(c, { Owner: o, Grants: a, statusCode: r.statusCode, headers: r.headers }), t(null, c) })) }, putObjectAcl: function (e, t) { var r = e.Headers, n = ""; if (e.AccessControlPolicy) { var o = i.clone(e.AccessControlPolicy || {}), a = o.Grants || o.Grant; a = i.isArray(a) ? a : [a], delete o.Grant, delete o.Grants, o.AccessControlList = { Grant: a }, n = i.json2xml({ AccessControlPolicy: o }), r["Content-Type"] = "application/xml", r["Content-MD5"] = i.b64(i.md5(n)) } i.each(r, (function (e, t) { 0 === t.indexOf("x-cos-grant-") && (r[t] = c(r[t])) })), f.call(this, { Action: "name/cos:PutObjectACL", method: "PUT", Bucket: e.Bucket, Region: e.Region, Key: e.Key, action: "acl", headers: r, body: n }, (function (e, r) { if (e) return t(e); t(null, { statusCode: r.statusCode, headers: r.headers }) })) }, optionsObject: function (e, t) { var r = e.Headers; r.Origin = e.Origin, r["Access-Control-Request-Method"] = e.AccessControlRequestMethod, r["Access-Control-Request-Headers"] = e.AccessControlRequestHeaders, f.call(this, { Action: "name/cos:OptionsObject", method: "OPTIONS", Bucket: e.Bucket, Region: e.Region, Key: e.Key, headers: r }, (function (e, r) { if (e) return e.statusCode && 403 === e.statusCode ? t(null, { OptionsForbidden: !0, statusCode: e.statusCode }) : t(e); var n = r.headers || {}; t(null, { AccessControlAllowOrigin: n["access-control-allow-origin"], AccessControlAllowMethods: n["access-control-allow-methods"], AccessControlAllowHeaders: n["access-control-allow-headers"], AccessControlExposeHeaders: n["access-control-expose-headers"], AccessControlMaxAge: n["access-control-max-age"], statusCode: r.statusCode, headers: r.headers }) })) }, putObjectCopy: function (e, t) { var r = this, n = e.Headers; n["Cache-Control"] || n["cache-control"] || (n["Cache-Control"] = ""); var o = e.CopySource || "", a = i.getSourceParams.call(this, o); if (a) { var s = a.Bucket, c = a.Region, l = decodeURIComponent(a.Key); f.call(this, { Scope: [{ action: "name/cos:GetObject", bucket: s, region: c, prefix: l }, { action: "name/cos:PutObject", bucket: e.Bucket, region: e.Region, prefix: e.Key }], method: "PUT", Bucket: e.Bucket, Region: e.Region, Key: e.Key, VersionId: e.VersionId, headers: e.Headers }, (function (n, o) { if (n) return t(n); var a = i.clone(o.CopyObjectResult || {}), s = u({ ForcePathStyle: r.options.ForcePathStyle, protocol: r.options.Protocol, domain: r.options.Domain, bucket: e.Bucket, region: e.Region, object: e.Key, isLocation: !0 }); i.extend(a, { Location: s, statusCode: o.statusCode, headers: o.headers }), t(null, a) })) } else t(i.error(new Error("CopySource format error"))) }, deleteMultipleObject: function (e, t) { var r = e.Objects || [], n = e.Quiet; r = i.isArray(r) ? r : [r]; var o = i.json2xml({ Delete: { Object: r, Quiet: n || !1 } }), a = e.Headers; a["Content-Type"] = "application/xml", a["Content-MD5"] = i.b64(i.md5(o)); var s = i.map(r, (function (t) { return { action: "name/cos:DeleteObject", bucket: e.Bucket, region: e.Region, prefix: t.Key } })); f.call(this, { Scope: s, method: "POST", Bucket: e.Bucket, Region: e.Region, body: o, action: "delete", headers: a }, (function (e, r) { if (e) return t(e); var n = r.DeleteResult || {}, o = n.Deleted || [], a = n.Error || []; o = i.isArray(o) ? o : [o], a = i.isArray(a) ? a : [a]; var s = i.clone(n); i.extend(s, { Error: a, Deleted: o, statusCode: r.statusCode, headers: r.headers }), t(null, s) })) }, restoreObject: function (e, t) { var r = e.Headers; if (e.RestoreRequest) { var n = e.RestoreRequest || {}, o = i.json2xml({ RestoreRequest: n }); r["Content-Type"] = "application/xml", r["Content-MD5"] = i.b64(i.md5(o)), f.call(this, { Action: "name/cos:RestoreObject", method: "POST", Bucket: e.Bucket, Region: e.Region, Key: e.Key, VersionId: e.VersionId, body: o, action: "restore", headers: r }, t) } else t(i.error(new Error("missing param RestoreRequest"))) }, putObjectTagging: function (e, t) { var r = e.Tagging || {}, n = r.TagSet || r.Tags || e.Tags || []; n = i.clone(i.isArray(n) ? n : [n]); var o = i.json2xml({ Tagging: { TagSet: { Tag: n } } }), a = e.Headers; a["Content-Type"] = "application/xml", a["Content-MD5"] = i.b64(i.md5(o)), f.call(this, { Action: "name/cos:PutObjectTagging", method: "PUT", Bucket: e.Bucket, Key: e.Key, Region: e.Region, body: o, action: "tagging", headers: a, VersionId: e.VersionId }, (function (e, r) { return e && 204 === e.statusCode ? t(null, { statusCode: e.statusCode }) : e ? t(e) : void t(null, { statusCode: r.statusCode, headers: r.headers }) })) }, getObjectTagging: function (e, t) { f.call(this, { Action: "name/cos:GetObjectTagging", method: "GET", Key: e.Key, Bucket: e.Bucket, Region: e.Region, headers: e.Headers, action: "tagging", VersionId: e.VersionId }, (function (e, r) { if (e) if (404 !== e.statusCode || !e.error || "Not Found" !== e.error && "NoSuchTagSet" !== e.error.Code) t(e); else { var n = { Tags: [], statusCode: e.statusCode }; e.headers && (n.headers = e.headers), t(null, n) } else { var o = []; try { o = r.Tagging.TagSet.Tag || [] } catch (e) { } o = i.clone(i.isArray(o) ? o : [o]), t(null, { Tags: o, statusCode: r.statusCode, headers: r.headers }) } })) }, deleteObjectTagging: function (e, t) { f.call(this, { Action: "name/cos:DeleteObjectTagging", method: "DELETE", Bucket: e.Bucket, Region: e.Region, Key: e.Key, headers: e.Headers, action: "tagging", VersionId: e.VersionId }, (function (e, r) { return e && 204 === e.statusCode ? t(null, { statusCode: e.statusCode }) : e ? t(e) : void t(null, { statusCode: r.statusCode, headers: r.headers }) })) }, selectObjectContent: function (e, t) { if (!e.SelectType) return t(i.error(new Error("missing param SelectType"))); var r = e.SelectRequest || {}, n = i.json2xml({ SelectRequest: r }), o = e.Headers; o["Content-Type"] = "application/xml", o["Content-MD5"] = i.b64(i.md5(n)), f.call(this, { Action: "name/cos:GetObject", method: "POST", Bucket: e.Bucket, Region: e.Region, Key: e.Key, headers: e.Headers, action: "select", qs: { "select-type": e.SelectType }, VersionId: e.VersionId, body: n, DataType: "arraybuffer", rawBody: !0 }, (function (e, r) { if (e && 204 === e.statusCode) return t(null, { statusCode: e.statusCode }); if (e) return t(e); var n = i.parseSelectPayload(r.body); t(null, { statusCode: r.statusCode, headers: r.headers, Body: n.body, Payload: n.payload }) })) }, appendObject: function (e, t) { var r = e.Headers; r["Cache-Control"] || r["cache-control"] || (r["Cache-Control"] = ""), r["Content-Type"] || r["content-type"] || (r["Content-Type"] = e.Body && e.Body.type || ""), f.call(this, { Action: "name/cos:AppendObject", method: "POST", Bucket: e.Bucket, Region: e.Region, action: "append", Key: e.Key, body: e.Body, qs: { position: e.Position }, headers: e.Headers }, (function (e, r) { if (e) return t(e); t(null, r) })) }, uploadPartCopy: function (e, t) { var r = e.CopySource || "", n = i.getSourceParams.call(this, r); if (n) { var o = n.Bucket, a = n.Region, s = decodeURIComponent(n.Key); f.call(this, { Scope: [{ action: "name/cos:GetObject", bucket: o, region: a, prefix: s }, { action: "name/cos:PutObject", bucket: e.Bucket, region: e.Region, prefix: e.Key }], method: "PUT", Bucket: e.Bucket, Region: e.Region, Key: e.Key, VersionId: e.VersionId, qs: { partNumber: e.PartNumber, uploadId: e.UploadId }, headers: e.Headers }, (function (e, r) { if (e) return t(e); var n = i.clone(r.CopyPartResult || {}); i.extend(n, { statusCode: r.statusCode, headers: r.headers }), t(null, n) })) } else t(i.error(new Error("CopySource format error"))) }, multipartInit: function (e, t) { var r = this, n = e.Headers, o = e.tracker; n["Cache-Control"] || n["cache-control"] || (n["Cache-Control"] = ""), n["Content-Type"] || n["content-type"] || (n["Content-Type"] = e.Body && e.Body.type || ""); var a = e.Body && (e.UploadAddMetaMd5 || r.options.UploadAddMetaMd5); a && o && o.setParams({ md5StartTime: (new Date).getTime() }), i.getBodyMd5(a, e.Body, (function (n) { n && (e.Headers["x-cos-meta-md5"] = n), a && o && o.setParams({ md5EndTime: (new Date).getTime() }), f.call(r, { Action: "name/cos:InitiateMultipartUpload", method: "POST", Bucket: e.Bucket, Region: e.Region, Key: e.Key, action: "uploads", headers: e.Headers, qs: e.Query, tracker: o }, (function (e, r) { return e ? (o && o.parent && o.parent.setParams({ errorNode: "multipartInit" }), t(e)) : (r = i.clone(r || {})) && r.InitiateMultipartUploadResult ? t(null, i.extend(r.InitiateMultipartUploadResult, { statusCode: r.statusCode, headers: r.headers })) : void t(null, r) })) }), e.onHashProgress) }, multipartUpload: function (e, t) { var r = this; i.getFileSize("multipartUpload", e, (function () { var n = e.tracker, o = r.options.UploadCheckContentMd5; o && n && n.setParams({ md5StartTime: (new Date).getTime() }), i.getBodyMd5(o, e.Body, (function (a) { a && (e.Headers["Content-MD5"] = i.b64(a)), o && n && n.setParams({ md5EndTime: (new Date).getTime() }), n && n.setParams({ partNumber: e.PartNumber }), f.call(r, { Action: "name/cos:UploadPart", TaskId: e.TaskId, method: "PUT", Bucket: e.Bucket, Region: e.Region, Key: e.Key, qs: { partNumber: e.PartNumber, uploadId: e.UploadId }, headers: e.Headers, onProgress: e.onProgress, body: e.Body || null, tracker: n }, (function (e, r) { if (e) return n && n.parent && n.parent.setParams({ errorNode: "multipartUpload" }), t(e); t(null, { ETag: i.attr(r.headers, "etag", ""), statusCode: r.statusCode, headers: r.headers }) })) })) })) }, multipartComplete: function (e, t) { for (var r = this, n = e.UploadId, o = e.Parts, a = e.tracker, s = 0, c = o.length; s < c; s++)o[s].ETag && 0 === o[s].ETag.indexOf('"') || (o[s].ETag = '"' + o[s].ETag + '"'); var l = i.json2xml({ CompleteMultipartUpload: { Part: o } }); l = l.replace(/\n\s*/g, ""); var d = e.Headers; d["Content-Type"] = "application/xml", d["Content-MD5"] = i.b64(i.md5(l)), f.call(this, { Action: "name/cos:CompleteMultipartUpload", method: "POST", Bucket: e.Bucket, Region: e.Region, Key: e.Key, qs: { uploadId: n }, body: l, headers: d, tracker: a }, (function (n, o) { if (n) return a && a.parent && a.parent.setParams({ errorNode: "multipartComplete" }), t(n); var s = u({ ForcePathStyle: r.options.ForcePathStyle, protocol: r.options.Protocol, domain: r.options.Domain, bucket: e.Bucket, region: e.Region, object: e.Key, isLocation: !0 }), c = o.CompleteMultipartUploadResult || {}; c.ProcessResults && c && c.ProcessResults && (c.UploadResult = { OriginalInfo: { Key: c.Key, Location: s, ETag: c.ETag, ImageInfo: c.ImageInfo }, ProcessResults: c.ProcessResults }, delete c.ImageInfo, delete c.ProcessResults); var l = i.extend(c, { Location: s, statusCode: o.statusCode, headers: o.headers }); t(null, l) })) }, multipartList: function (e, t) { var r = {}; r.delimiter = e.Delimiter, r["encoding-type"] = e.EncodingType, r.prefix = e.Prefix || "", r["max-uploads"] = e.MaxUploads, r["key-marker"] = e.KeyMarker, r["upload-id-marker"] = e.UploadIdMarker, r = i.clearKey(r); var n = e.tracker; n && n.setParams({ signStartTime: (new Date).getTime() }), f.call(this, { Action: "name/cos:ListMultipartUploads", ResourceKey: r.prefix, method: "GET", Bucket: e.Bucket, Region: e.Region, headers: e.Headers, qs: r, action: "uploads", tracker: n }, (function (e, r) { if (e) return n && n.parent && n.parent.setParams({ errorNode: "multipartList" }), t(e); if (r && r.ListMultipartUploadsResult) { var o = r.ListMultipartUploadsResult.Upload || []; o = i.isArray(o) ? o : [o], r.ListMultipartUploadsResult.Upload = o } var a = i.clone(r.ListMultipartUploadsResult || {}); i.extend(a, { statusCode: r.statusCode, headers: r.headers }), t(null, a) })) }, multipartListPart: function (e, t) { var r = {}, n = e.tracker; r.uploadId = e.UploadId, r["encoding-type"] = e.EncodingType, r["max-parts"] = e.MaxParts, r["part-number-marker"] = e.PartNumberMarker, f.call(this, { Action: "name/cos:ListParts", method: "GET", Bucket: e.Bucket, Region: e.Region, Key: e.Key, headers: e.Headers, qs: r }, (function (e, r) { if (e) return n && n.parent && n.parent.setParams({ errorNode: "multipartListPart" }), t(e); var o = r.ListPartsResult || {}, a = o.Part || []; a = i.isArray(a) ? a : [a], o.Part = a; var s = i.clone(o); i.extend(s, { statusCode: r.statusCode, headers: r.headers }), t(null, s) })) }, multipartAbort: function (e, t) { var r = {}; r.uploadId = e.UploadId, f.call(this, { Action: "name/cos:AbortMultipartUpload", method: "DELETE", Bucket: e.Bucket, Region: e.Region, Key: e.Key, headers: e.Headers, qs: r }, (function (e, r) { if (e) return t(e); t(null, { statusCode: r.statusCode, headers: r.headers }) })) }, request: function (e, t) { f.call(this, { method: e.Method, Bucket: e.Bucket, Region: e.Region, Key: e.Key, action: e.Action, headers: e.Headers, qs: e.Query, body: e.Body, Url: e.Url, rawBody: e.RawBody, DataType: e.DataType }, (function (e, r) { if (e) return t(e); r && r.body && (r.Body = r.body, delete r.body), t(e, r) })) }, getObjectUrl: function (e, t) { var r = this, n = void 0 === e.UseAccelerate ? r.options.UseAccelerate : e.UseAccelerate, o = u({ ForcePathStyle: r.options.ForcePathStyle, protocol: e.Protocol || r.options.Protocol, domain: e.Domain || r.options.Domain, bucket: e.Bucket, region: n ? "accelerate" : e.Region, object: e.Key }), a = ""; e.Query && (a += i.obj2str(e.Query)), e.QueryString && (a += (a ? "&" : "") + e.QueryString); var s = o; if (void 0 !== e.Sign && !e.Sign) return a && (s += "?" + a), t(null, { Url: s }), s; var c = l.call(this, { Bucket: e.Bucket, Region: e.Region, UseAccelerate: e.UseAccelerate, Url: o }), p = d.call(this, { Action: "PUT" === (e.Method || "").toUpperCase() ? "name/cos:PutObject" : "name/cos:GetObject", Bucket: e.Bucket || "", Region: e.Region || "", Method: e.Method || "get", Key: e.Key, Expires: e.Expires, Headers: e.Headers, Query: e.Query, SignHost: c, ForceSignHost: !1 !== e.ForceSignHost && r.options.ForceSignHost }, (function (e, r) { if (t) if (e) t(e); else { var n = o; n += "?" + (r.Authorization.indexOf("q-signature") > -1 ? function (e) { var t = e.match(/q-url-param-list.*?(?=&)/g)[0], r = "q-url-param-list=" + encodeURIComponent(t.replace(/q-url-param-list=/, "")).toLowerCase(), n = new RegExp(t, "g"); return e.replace(n, r) }(r.Authorization) : "sign=" + encodeURIComponent(r.Authorization)), r.SecurityToken && (n += "&x-cos-security-token=" + r.SecurityToken), r.ClientIP && (n += "&clientIP=" + r.ClientIP), r.ClientUA && (n += "&clientUA=" + r.ClientUA), r.Token && (n += "&token=" + r.Token), a && (n += "&" + a), setTimeout((function () { t(null, { Url: n }) })) } })); return p ? (s += "?" + p.Authorization + (p.SecurityToken ? "&x-cos-security-token=" + p.SecurityToken : ""), a && (s += "&" + a)) : a && (s += "?" + a), s }, getAuth: function (e) { return i.getAuth({ SecretId: e.SecretId || this.options.SecretId || "", SecretKey: e.SecretKey || this.options.SecretKey || "", Bucket: e.Bucket, Region: e.Region, Method: e.Method, Key: e.Key, Query: e.Query, Headers: e.Headers, Expires: e.Expires, UseRawKey: this.options.UseRawKey, SystemClockOffset: this.options.SystemClockOffset }) } }; e.exports.init = function (e, t) { t.transferToTaskMethod(g, "putObject"), i.each(g, (function (t, r) { e.prototype[r] = i.apiWrapper(r, t), function (e, t, r) { i.each(["Cors", "Acl"], (function (n) { if (e.slice(-n.length) === n) { var o = e.slice(0, -n.length) + n.toUpperCase(), a = i.apiWrapper(e, t); r[o] = function () { a.apply(this, arguments) } } })) }(r, t, e.prototype) })) } }, function (e, t, r) { var n = r(0), o = function (e) { switch (n(e)) { case "string": return e; case "boolean": return e ? "true" : "false"; case "number": return isFinite(e) ? e : ""; default: return "" } }, i = function (e, t, r) { var n = {}; return t.getAllResponseHeaders().trim().split("\n").forEach((function (e) { if (e) { var t = e.indexOf(":"), r = e.substr(0, t).trim().toLowerCase(), o = e.substr(t + 1).trim(); n[r] = o } })), { error: e, statusCode: t.status, statusMessage: t.statusText, headers: n, body: r } }, a = function (e, t) { return t || "text" !== t ? e.response : e.responseText }; e.exports = function (e, t) { var r, s, c, u, l = (e.method || "GET").toUpperCase(), d = e.url; if (e.qs) { var p = (r = e.qs, s = s || "&", c = c || "=", null === r && (r = void 0), "object" === n(r) ? Object.keys(r).map((function (e) { var t = encodeURIComponent(o(e)) + c; return Array.isArray(r[e]) ? r[e].map((function (e) { return t + encodeURIComponent(o(e)) })).join(s) : t + encodeURIComponent(o(r[e])) })).filter(Boolean).join(s) : u ? encodeURIComponent(o(u)) + c + encodeURIComponent(o(r)) : ""); p && (d += (-1 === d.indexOf("?") ? "?" : "&") + p) } var f = new XMLHttpRequest; if (f.open(l, d, !0), f.responseType = e.dataType || "text", e.xhrFields) for (var h in e.xhrFields) f[h] = e.xhrFields[h]; var g = e.headers; if (g) for (var m in g) g.hasOwnProperty(m) && "content-length" !== m.toLowerCase() && "user-agent" !== m.toLowerCase() && "origin" !== m.toLowerCase() && "host" !== m.toLowerCase() && f.setRequestHeader(m, g[m]); return e.onProgress && f.upload && (f.upload.onprogress = e.onProgress), e.onDownloadProgress && (f.onprogress = e.onDownloadProgress), e.timeout && (f.timeout = e.timeout), f.ontimeout = function (e) { var r = new Error("timeout"); t(i(r, f)) }, f.onload = function () { t(i(null, f, a(f, e.dataType))) }, f.onerror = function (r) { var n = a(f, e.dataType); if (n) t(i(null, f, n)); else { var o = f.statusText; o || 0 !== f.status || (o = new Error("CORS blocked or network error")), t(i(o, f, n)) } }, f.send(e.body || ""), f } }, function (e, t, r) { var n = r(0), o = r(9), i = r(32), a = r(8).EventProxy, s = r(1), c = r(6); function u(e, t) { var r = e.TaskId, n = e.Bucket, c = e.Region, u = e.Key, p = e.StorageClass, f = this, h = {}, g = e.FileSize, m = e.SliceSize, y = Math.ceil(g / m), v = 0, b = s.throttleOnProgress.call(f, g, e.onHashProgress), C = function (t, r) { var n = t.length; if (0 === n) return r(null, !0); if (n > y) return r(null, !1); if (n > 1 && Math.max(t[0].Size, t[1].Size) !== m) return r(null, !1); !function o(i) { if (i < n) { var a = t[i]; !function (t, r) { var n = m * (t - 1), o = Math.min(n + m, g), i = o - n; h[t] ? r(null, { PartNumber: t, ETag: h[t], Size: i }) : s.fileSlice(e.Body, n, o, !1, (function (e) { s.getFileMd5(e, (function (e, n) { if (e) return r(s.error(e)); var o = '"' + n + '"'; h[t] = o, 1, b({ loaded: v += i, total: g }), r(null, { PartNumber: t, ETag: o, Size: i }) })) })) }(a.PartNumber, (function (e, t) { t && t.ETag === a.ETag && t.Size === a.Size ? o(i + 1) : r(null, !1) })) } else r(null, !0) }(0) }, k = new a; k.on("error", (function (e) { if (f._isRunningTask(r)) return t(e) })), k.on("upload_id_available", (function (e) { var r = {}, n = []; s.each(e.PartList, (function (e) { r[e.PartNumber] = e })); for (var o = 1; o <= y; o++) { var i = r[o]; i ? (i.PartNumber = o, i.Uploaded = !0) : i = { PartNumber: o, ETag: null, Uploaded: !1 }, n.push(i) } e.PartList = n, t(null, e) })), k.on("no_available_upload_id", (function () { if (f._isRunningTask(r)) { var o = s.extend({ Bucket: n, Region: c, Key: u, Query: s.clone(e.Query), StorageClass: p, Body: e.Body, calledBySdk: "sliceUploadFile", tracker: e.tracker }, e), i = s.clone(e.Headers); delete i["x-cos-mime-limit"], o.Headers = i, f.multipartInit(o, (function (e, n) { if (f._isRunningTask(r)) { if (e) return k.emit("error", e); var o = n.UploadId; if (!o) return t(s.error(new Error("no such upload id"))); k.emit("upload_id_available", { UploadId: o, PartList: [] }) } })) } })), k.on("has_and_check_upload_id", (function (t) { t = t.reverse(), i.eachLimit(t, 1, (function (t, i) { f._isRunningTask(r) && (o.using[t] ? i() : d.call(f, { Bucket: n, Region: c, Key: u, UploadId: t, tracker: e.tracker }, (function (e, n) { if (f._isRunningTask(r)) { if (e) return o.removeUsing(t), k.emit("error", e); var a = n.PartList; a.forEach((function (e) { e.PartNumber *= 1, e.Size *= 1, e.ETag = e.ETag || "" })), C(a, (function (e, n) { if (f._isRunningTask(r)) return e ? k.emit("error", e) : void (n ? i({ UploadId: t, PartList: a }) : i()) })) } }))) }), (function (e) { f._isRunningTask(r) && (b(null, !0), e && e.UploadId ? k.emit("upload_id_available", e) : k.emit("no_available_upload_id")) })) })), k.on("seek_local_avail_upload_id", (function (t) { var i = o.getFileId(e.Body, e.ChunkSize, n, u), a = o.getUploadIdList.call(f, i); if (i && a) { !function i(l) { if (l >= a.length) k.emit("has_and_check_upload_id", t); else { var p = a[l]; if (!s.isInArray(t, p)) return o.removeUploadId.call(f, p), void i(l + 1); o.using[p] ? i(l + 1) : d.call(f, { Bucket: n, Region: c, Key: u, UploadId: p, tracker: e.tracker }, (function (e, t) { f._isRunningTask(r) && (e ? (o.removeUploadId.call(f, p), i(l + 1)) : k.emit("upload_id_available", { UploadId: p, PartList: t.PartList })) })) } }(0) } else k.emit("has_and_check_upload_id", t) })), k.on("get_remote_upload_id_list", (function () { l.call(f, { Bucket: n, Region: c, Key: u, tracker: e.tracker }, (function (t, i) { if (f._isRunningTask(r)) { if (t) return k.emit("error", t); var a = s.filter(i.UploadList, (function (e) { return e.Key === u && (!p || e.StorageClass.toUpperCase() === p.toUpperCase()) })).reverse().map((function (e) { return e.UploadId || e.UploadID })); if (a.length) k.emit("seek_local_avail_upload_id", a); else { var c, l = o.getFileId(e.Body, e.ChunkSize, n, u); l && (c = o.getUploadIdList.call(f, l)) && s.each(c, (function (e) { o.removeUploadId.call(f, e) })), k.emit("no_available_upload_id") } } })) })), k.emit("get_remote_upload_id_list") } function l(e, t) { var r = this, n = [], o = { Bucket: e.Bucket, Region: e.Region, Prefix: e.Key, calledBySdk: e.calledBySdk || "sliceUploadFile", tracker: e.tracker }; !function e() { r.multipartList(o, (function (r, i) { if (r) return t(r); n.push.apply(n, i.Upload || []), "true" === i.IsTruncated ? (o.KeyMarker = i.NextKeyMarker, o.UploadIdMarker = i.NextUploadIdMarker, e()) : t(null, { UploadList: n }) })) }() } function d(e, t) { var r = this, n = [], o = { Bucket: e.Bucket, Region: e.Region, Key: e.Key, UploadId: e.UploadId, calledBySdk: "sliceUploadFile", tracker: e.tracker }; !function e() { r.multipartListPart(o, (function (r, i) { if (r) return t(r); n.push.apply(n, i.Part || []), "true" === i.IsTruncated ? (o.PartNumberMarker = i.NextPartNumberMarker, e()) : t(null, { PartList: n }) })) }() } function p(e, t) { var r = this, n = e.TaskId, o = e.Bucket, a = e.Region, c = e.Key, u = e.UploadData, l = e.FileSize, d = e.SliceSize, p = Math.min(e.AsyncLimit || r.options.ChunkParallelLimit || 1, 256), h = e.Body, g = Math.ceil(l / d), m = 0, y = e.ServerSideEncryption, v = e.Headers, b = s.filter(u.PartList, (function (e) { return e.Uploaded && (m += e.PartNumber >= g && l % d || d), !e.Uploaded })), C = e.onProgress; i.eachLimit(b, p, (function (t, i) { if (r._isRunningTask(n)) { var s = t.PartNumber, p = Math.min(l, t.PartNumber * d) - (t.PartNumber - 1) * d, g = 0; f.call(r, { TaskId: n, Bucket: o, Region: a, Key: c, SliceSize: d, FileSize: l, PartNumber: s, ServerSideEncryption: y, Body: h, UploadData: u, Headers: v, onProgress: function (e) { m += e.loaded - g, g = e.loaded, C({ loaded: m, total: l }) }, tracker: e.tracker }, (function (e, o) { r._isRunningTask(n) && (e || o.ETag || (e = 'get ETag error, please add "ETag" to CORS ExposeHeader setting.( 获取ETag失败,请在CORS ExposeHeader设置中添加ETag,请参考文档:https://cloud.tencent.com/document/product/436/13318 )'), e ? m -= g : (m += p - g, t.ETag = o.ETag), C({ loaded: m, total: l }), i(e || null, o)) })) } }), (function (e) { if (r._isRunningTask(n)) return e ? t(e) : void t(null, { UploadId: u.UploadId, SliceList: u.PartList }) })) } function f(e, t) { var r = this, n = e.TaskId, o = e.Bucket, a = e.Region, c = e.Key, u = e.FileSize, l = e.Body, d = 1 * e.PartNumber, p = e.SliceSize, f = e.ServerSideEncryption, h = e.UploadData, g = e.Headers || {}, m = r.options.ChunkRetryTimes + 1, y = p * (d - 1), v = p, b = y + p; b > u && (v = (b = u) - y); var C = ["x-cos-traffic-limit", "x-cos-mime-limit"], k = {}; s.each(g, (function (e, t) { C.indexOf(t) > -1 && (k[t] = e) })); var S = h.PartList[d - 1]; i.retry(m, (function (t) { r._isRunningTask(n) && s.fileSlice(l, y, b, !0, (function (i) { r.multipartUpload({ TaskId: n, Bucket: o, Region: a, Key: c, ContentLength: v, PartNumber: d, UploadId: h.UploadId, ServerSideEncryption: f, Body: i, Headers: k, onProgress: e.onProgress, calledBySdk: "sliceUploadFile", tracker: e.tracker }, (function (e, o) { if (r._isRunningTask(n)) return e ? t(e) : (S.Uploaded = !0, t(null, o)) })) })) }), (function (e, o) { if (r._isRunningTask(n)) return t(e, o) })) } function h(e, t) { var r = e.Bucket, n = e.Region, o = e.Key, a = e.UploadId, s = e.SliceList, c = this, u = this.options.ChunkRetryTimes + 1, l = e.Headers, d = s.map((function (e) { return { PartNumber: e.PartNumber, ETag: e.ETag } })); i.retry(u, (function (t) { c.multipartComplete({ Bucket: r, Region: n, Key: o, UploadId: a, Parts: d, Headers: l, calledBySdk: "sliceUploadFile", tracker: e.tracker }, t) }), (function (e, r) { t(e, r) })) } function g(e, t) { var r = e.Bucket, n = e.Region, o = e.Key, a = e.AbortArray, s = e.AsyncLimit || 1, c = this, u = 0, l = new Array(a.length); i.eachLimit(a, s, (function (t, i) { var a = u; if (o && o !== t.Key) return l[a] = { error: { KeyNotMatch: !0 } }, void i(null); var s = t.UploadId || t.UploadID; c.multipartAbort({ Bucket: r, Region: n, Key: t.Key, Headers: e.Headers, UploadId: s }, (function (e) { var o = { Bucket: r, Region: n, Key: t.Key, UploadId: s }; l[a] = { error: e, task: o }, i(null) })), u++ }), (function (e) { if (e) return t(e); for (var r = [], n = [], o = 0, i = l.length; o < i; o++) { var a = l[o]; a.task && (a.error ? n.push(a.task) : r.push(a.task)) } return t(null, { successList: r, errorList: n }) })) } function m(e, t) { var r = e.TaskId, n = e.Bucket, o = e.Region, a = e.Key, s = e.CopySource, c = e.UploadId, u = 1 * e.PartNumber, l = e.CopySourceRange, d = this.options.ChunkRetryTimes + 1, p = this; i.retry(d, (function (e) { p.uploadPartCopy({ TaskId: r, Bucket: n, Region: o, Key: a, CopySource: s, UploadId: c, PartNumber: u, CopySourceRange: l }, (function (t, r) { e(t || null, r) })) }), (function (e, r) { return t(e, r) })) } var y = { sliceUploadFile: function (e, t) { var r, n, i = this, c = new a, l = e.TaskId, d = e.Bucket, f = e.Region, g = e.Key, m = e.Body, y = e.ChunkSize || e.SliceSize || i.options.ChunkSize, v = e.AsyncLimit, b = e.StorageClass, C = e.ServerSideEncryption, k = e.onHashProgress, S = e.tracker; S && S.setParams({ chunkSize: y }), c.on("error", (function (r) { if (i._isRunningTask(l)) return r.UploadId = e.UploadData.UploadId || "", t(r) })), c.on("upload_complete", (function (r) { var n = s.extend({ UploadId: e.UploadData.UploadId || "" }, r); t(null, n) })), c.on("upload_slice_complete", (function (t) { var a = {}; s.each(e.Headers, (function (e, t) { var r = t.toLowerCase(); 0 !== r.indexOf("x-cos-meta-") && "pic-operations" !== r || (a[t] = e) })), h.call(i, { Bucket: d, Region: f, Key: g, UploadId: t.UploadId, SliceList: t.SliceList, Headers: a, tracker: S }, (function (e, a) { if (i._isRunningTask(l)) { if (o.removeUsing(t.UploadId), e) return n(null, !0), c.emit("error", e); o.removeUploadId.call(i, t.UploadId), n({ loaded: r, total: r }, !0), c.emit("upload_complete", a) } })) })), c.on("get_upload_data_finish", (function (t) { var a = o.getFileId(m, e.ChunkSize, d, g); a && o.saveUploadId.call(i, a, t.UploadId, i.options.UploadIdCacheLimit), o.setUsing(t.UploadId), n(null, !0), p.call(i, { TaskId: l, Bucket: d, Region: f, Key: g, Body: m, FileSize: r, SliceSize: y, AsyncLimit: v, ServerSideEncryption: C, UploadData: t, Headers: e.Headers, onProgress: n, tracker: S }, (function (e, t) { if (i._isRunningTask(l)) return e ? (n(null, !0), c.emit("error", e)) : void c.emit("upload_slice_complete", t) })) })), c.on("get_file_size_finish", (function () { if (n = s.throttleOnProgress.call(i, r, e.onProgress), e.UploadData.UploadId) c.emit("get_upload_data_finish", e.UploadData); else { var t = s.extend({ TaskId: l, Bucket: d, Region: f, Key: g, Headers: e.Headers, StorageClass: b, Body: m, FileSize: r, SliceSize: y, onHashProgress: k, tracker: S }, e); u.call(i, t, (function (t, r) { if (i._isRunningTask(l)) { if (t) return c.emit("error", t); e.UploadData.UploadId = r.UploadId, e.UploadData.PartList = r.PartList, c.emit("get_upload_data_finish", e.UploadData) } })) } })), r = e.ContentLength, delete e.ContentLength, !e.Headers && (e.Headers = {}), s.each(e.Headers, (function (t, r) { "content-length" === r.toLowerCase() && delete e.Headers[r] })), function () { for (var t = [1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 5120], n = 1048576, o = 0; o < t.length && !(r / (n = 1024 * t[o] * 1024) <= i.options.MaxPartNumber); o++); e.ChunkSize = e.SliceSize = y = Math.max(y, n) }(), 0 === r ? (e.Body = "", e.ContentLength = 0, e.SkipTask = !0, i.putObject(e, t)) : c.emit("get_file_size_finish") }, abortUploadTask: function (e, t) { var r = e.Bucket, n = e.Region, o = e.Key, i = e.UploadId, c = e.Level || "task", u = e.AsyncLimit, d = this, p = new a; if (p.on("error", (function (e) { return t(e) })), p.on("get_abort_array", (function (i) { g.call(d, { Bucket: r, Region: n, Key: o, Headers: e.Headers, AsyncLimit: u, AbortArray: i }, t) })), "bucket" === c) l.call(d, { Bucket: r, Region: n, calledBySdk: "abortUploadTask" }, (function (e, r) { if (e) return t(e); p.emit("get_abort_array", r.UploadList || []) })); else if ("file" === c) { if (!o) return t(s.error(new Error("abort_upload_task_no_key"))); l.call(d, { Bucket: r, Region: n, Key: o, calledBySdk: "abortUploadTask" }, (function (e, r) { if (e) return t(e); p.emit("get_abort_array", r.UploadList || []) })) } else { if ("task" !== c) return t(s.error(new Error("abort_unknown_level"))); if (!i) return t(s.error(new Error("abort_upload_task_no_id"))); if (!o) return t(s.error(new Error("abort_upload_task_no_key"))); p.emit("get_abort_array", [{ Key: o, UploadId: i }]) } }, uploadFile: function (e, t) { var r = this, o = void 0 === e.SliceSize ? r.options.SliceSize : e.SliceSize, i = [], a = e.Body, u = a.size || a.length || 0, l = { TaskId: "" }; if (r.options.EnableTracker) { var d = r.options.UseAccelerate || "string" == typeof r.options.Domain && r.options.Domain.includes("accelerate."); e.tracker = new c({ bucket: e.Bucket, region: e.Region, apiName: "uploadFile", fileKey: e.Key, fileSize: u, accelerate: d, deepTracker: r.options.DeepTracker, customId: r.options.CustomId, delay: r.options.TrackerDelay }) } s.each(e, (function (e, t) { "object" !== n(e) && "function" != typeof e && (l[t] = e) })); var p = e.onTaskReady; e.onTaskReady = function (e) { l.TaskId = e, p && p(e) }; var f = u > o ? "sliceUploadFile" : "putObject", h = e.onFileFinish; i.push({ api: f, params: e, callback: function (r, n) { e.tracker && e.tracker.formatResult(r, n), h && h(r, n, l), t && t(r, n) } }), r._addTasks(i) }, uploadFiles: function (e, t) { var r = this, o = void 0 === e.SliceSize ? r.options.SliceSize : e.SliceSize, i = 0, a = 0, u = s.throttleOnProgress.call(r, a, e.onProgress), l = e.files.length, d = e.onFileFinish, p = Array(l), f = function (e, r, n) { u(null, !0), d && d(e, r, n), p[n.Index] = { options: n, error: e, data: r }, --l <= 0 && t && t(null, { files: p }) }, h = []; s.each(e.files, (function (e, t) { !function () { var l = e.Body, d = l.size || l.length || 0, p = { Index: t, TaskId: "" }; if (!r.options.UseRawKey && e.Key && "/" === e.Key.substr(0, 1) && (e.Key = e.Key.substr(1)), i += d, r.options.EnableTracker) { var g = r.options.UseAccelerate || "string" == typeof r.options.Domain && r.options.Domain.includes("accelerate."); e.tracker = new c({ bucket: e.Bucket, region: e.Region, apiName: "uploadFiles", fileKey: e.Key, fileSize: d, accelerate: g, deepTracker: r.options.DeepTracker, customId: r.options.CustomId, delay: r.options.TrackerDelay }) } s.each(e, (function (e, t) { "object" !== n(e) && "function" != typeof e && (p[t] = e) })); var m = e.onTaskReady; e.onTaskReady = function (e) { p.TaskId = e, m && m(e) }; var y = 0, v = e.onProgress; e.onProgress = function (e) { a = a - y + e.loaded, y = e.loaded, v && v(e), u({ loaded: a, total: i }) }; var b = d > o ? "sliceUploadFile" : "putObject", C = e.onFileFinish; h.push({ api: b, params: e, callback: function (t, r) { e.tracker && e.tracker.formatResult(t, r), C && C(t, r), f && f(t, r, p) } }) }() })), r._addTasks(h) }, sliceCopyFile: function (e, t) { var r = new a, n = this, c = e.Bucket, u = e.Region, l = e.Key, p = e.CopySource, f = s.getSourceParams.call(this, p); if (f) { var h = f.Bucket, g = f.Region, y = decodeURIComponent(f.Key), v = void 0 === e.CopySliceSize ? n.options.CopySliceSize : e.CopySliceSize; v = Math.max(0, v); var b, C, k = e.CopyChunkSize || this.options.CopyChunkSize, S = this.options.CopyChunkParallelLimit, w = this.options.ChunkRetryTimes + 1, T = 0, E = 0, R = {}, x = {}, A = {}; r.on("copy_slice_complete", (function (r) { var a = {}; s.each(e.Headers, (function (e, t) { 0 === t.toLowerCase().indexOf("x-cos-meta-") && (a[t] = e) })); var d = s.map(r.PartList, (function (e) { return { PartNumber: e.PartNumber, ETag: e.ETag } })); i.retry(w, (function (e) { n.multipartComplete({ Bucket: c, Region: u, Key: l, UploadId: r.UploadId, Parts: d, calledBySdk: "sliceCopyFile" }, e) }), (function (e, n) { if (o.removeUsing(r.UploadId), e) return C(null, !0), t(e); o.removeUploadId(r.UploadId), C({ loaded: b, total: b }, !0), t(null, n) })) })), r.on("get_copy_data_finish", (function (e) { var a = o.getCopyFileId(p, R, k, c, l); a && o.saveUploadId(a, e.UploadId, n.options.UploadIdCacheLimit), o.setUsing(e.UploadId); var d = s.filter(e.PartList, (function (e) { return e.Uploaded && (E += e.PartNumber >= T && b % k || k), !e.Uploaded })); i.eachLimit(d, S, (function (t, r) { var o = t.PartNumber, a = t.CopySourceRange, s = t.end - t.start; i.retry(w, (function (t) { m.call(n, { Bucket: c, Region: u, Key: l, CopySource: p, UploadId: e.UploadId, PartNumber: o, CopySourceRange: a }, t) }), (function (e, n) { if (e) return r(e); C({ loaded: E += s, total: b }), t.ETag = n.ETag, r(e || null, n) })) }), (function (n) { if (n) return o.removeUsing(e.UploadId), C(null, !0), t(n); r.emit("copy_slice_complete", e) })) })), r.on("get_chunk_size_finish", (function () { var i = function () { n.multipartInit({ Bucket: c, Region: u, Key: l, Headers: A }, (function (n, o) { if (n) return t(n); e.UploadId = o.UploadId, r.emit("get_copy_data_finish", { UploadId: e.UploadId, PartList: e.PartList }) })) }, a = o.getCopyFileId(p, R, k, c, l), f = o.getUploadIdList(a); if (!a || !f) return i(); !function t(a) { if (a >= f.length) return i(); var p = f[a]; if (o.using[p]) return t(a + 1); d.call(n, { Bucket: c, Region: u, Key: l, UploadId: p }, (function (n, i) { if (n) o.removeUploadId(p), t(a + 1); else { if (o.using[p]) return t(a + 1); var c = {}, u = 0; s.each(i.PartList, (function (e) { var t = parseInt(e.Size), r = u + t - 1; c[e.PartNumber + "|" + u + "|" + r] = e.ETag, u += t })), s.each(e.PartList, (function (e) { var t = c[e.PartNumber + "|" + e.start + "|" + e.end]; t && (e.ETag = t, e.Uploaded = !0) })), r.emit("get_copy_data_finish", { UploadId: p, PartList: e.PartList }) } })) }(0) })), r.on("get_file_size_finish", (function () { if (function () { for (var t = [1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 5120], r = 1048576, o = 0; o < t.length && !(b / (r = 1024 * t[o] * 1024) <= n.options.MaxPartNumber); o++); e.ChunkSize = k = Math.max(k, r), T = Math.ceil(b / k); for (var i = [], a = 1; a <= T; a++) { var s = (a - 1) * k, c = a * k < b ? a * k - 1 : b - 1, u = { PartNumber: a, start: s, end: c, CopySourceRange: "bytes=" + s + "-" + c }; i.push(u) } e.PartList = i }(), (A = "Replaced" === e.Headers["x-cos-metadata-directive"] ? e.Headers : x)["x-cos-storage-class"] = e.Headers["x-cos-storage-class"] || x["x-cos-storage-class"], A = s.clearKey(A), "ARCHIVE" === x["x-cos-storage-class"] || "DEEP_ARCHIVE" === x["x-cos-storage-class"]) { var o = x["x-cos-restore"]; if (!o || 'ongoing-request="true"' === o) return void t(s.error(new Error("Unrestored archive object is not allowed to be copied"))) } delete A["x-cos-copy-source"], delete A["x-cos-metadata-directive"], delete A["x-cos-copy-source-If-Modified-Since"], delete A["x-cos-copy-source-If-Unmodified-Since"], delete A["x-cos-copy-source-If-Match"], delete A["x-cos-copy-source-If-None-Match"], r.emit("get_chunk_size_finish") })), n.headObject({ Bucket: h, Region: g, Key: y }, (function (o, i) { if (o) o.statusCode && 404 === o.statusCode ? t(s.error(o, { ErrorStatus: y + " Not Exist" })) : t(o); else if (void 0 !== (b = e.FileSize = i.headers["content-length"]) && b) if (C = s.throttleOnProgress.call(n, b, e.onProgress), b <= v) e.Headers["x-cos-metadata-directive"] || (e.Headers["x-cos-metadata-directive"] = "Copy"), n.putObjectCopy(e, (function (e, r) { if (e) return C(null, !0), t(e); C({ loaded: b, total: b }, !0), t(e, r) })); else { var a = i.headers; R = a, x = { "Cache-Control": a["cache-control"], "Content-Disposition": a["content-disposition"], "Content-Encoding": a["content-encoding"], "Content-Type": a["content-type"], Expires: a.expires, "x-cos-storage-class": a["x-cos-storage-class"] }, s.each(a, (function (e, t) { var r = "x-cos-meta-"; 0 === t.indexOf(r) && t.length > 11 && (x[t] = e) })), r.emit("get_file_size_finish") } else t(s.error(new Error('get Content-Length error, please add "Content-Length" to CORS ExposeHeader setting.( 获取Content-Length失败,请在CORS ExposeHeader设置中添加Content-Length,请参考文档:https://cloud.tencent.com/document/product/436/13318 )'))) })) } else t(s.error(new Error("CopySource format error"))) } }; e.exports.init = function (e, t) { t.transferToTaskMethod(y, "sliceUploadFile"), s.each(y, (function (t, r) { e.prototype[r] = s.apiWrapper(r, t) })) } }, function (e, t) { var r = { eachLimit: function (e, t, r, n) { if (n = n || function () { }, !e.length || t <= 0) return n(); var o = 0, i = 0, a = 0; !function s() { if (o >= e.length) return n(); for (; a < t && i < e.length;)a += 1, r(e[(i += 1) - 1], (function (t) { t ? (n(t), n = function () { }) : (a -= 1, (o += 1) >= e.length ? n() : s()) })) }() }, retry: function (e, t, r) { e < 1 ? r() : function n(o) { t((function (t, i) { t && o < e ? n(o + 1) : r(t, i) })) }(1) } }; e.exports = r }]) }));
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.COS=t():e.COS=t()}(this,(function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="/dist/",r(r.s=10)}([function(e,t){function r(t){return e.exports=r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e.exports.__esModule=!0,e.exports.default=e.exports,r(t)}e.exports=r,e.exports.__esModule=!0,e.exports.default=e.exports},function(e,t,r){"use strict";(function(t){var n=r(0),o=r(12),i=r(15),a=r(16),s=r(21),c=r(22),u=r(6);function l(e){return encodeURIComponent(e).replace(/!/g,"%21").replace(/'/g,"%27").replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/\*/g,"%2A")}function d(e,t){var r=[];for(var n in e)e.hasOwnProperty(n)&&r.push(t?l(n).toLowerCase():n);return r.sort((function(e,t){return(e=e.toLowerCase())===(t=t.toLowerCase())?0:e>t?1:-1}))}var p,f=["cache-control","content-disposition","content-encoding","content-length","content-md5","expect","expires","host","if-match","if-modified-since","if-none-match","if-unmodified-since","origin","range","transfer-encoding"],h=function(e,t,r){var n=t/8,o=e.slice(r,r+n);return new Uint8Array(o).reverse(),new{8:Uint8Array,16:Uint16Array,32:Uint32Array}[t](o)[0]},g=function(e,t,r,n){var o=e.slice(t,r),i="";return new Uint8Array(o).forEach((function(e){i+=String.fromCharCode(e)})),n&&(i=decodeURIComponent(escape(i))),i},m=function(){},y=function(e){var t={};for(var r in e)e.hasOwnProperty(r)&&void 0!==e[r]&&null!==e[r]&&(t[r]=e[r]);return t},v=(p=function(e,t){e=e.split("."),t=t.split(".");for(var r=0;rparseInt(t[r])?1:-1;return 0},function(e){if(!e)return!1;var t=(e.match(/Chrome\/([.\d]+)/)||[])[1],r=(e.match(/QBCore\/([.\d]+)/)||[])[1],n=(e.match(/QQBrowser\/([.\d]+)/)||[])[1];return t&&p(t,"53.0.2785.116")<0&&r&&p(r,"3.53.991.400")<0&&n&&p(n,"9.0.2524.400")<=0||!1}("undefined"!=typeof navigator&&navigator.userAgent)),b=1048576;function C(e){return T(e,(function(e){return"object"===n(e)&&null!==e?C(e):e}))}function k(e,t){return w(t,(function(r,n){e[n]=t[n]})),e}function S(e){return e instanceof Array}function w(e,t){for(var r in e)e.hasOwnProperty(r)&&t(e[r],r)}function T(e,t){var r=S(e)?[]:{};for(var n in e)e.hasOwnProperty(n)&&(r[n]=t(e[n],n));return r}var E=function(e,t){var r=t.Bucket,n=t.Region,o=t.Key,i=this.options.Domain,a=!i||"string"==typeof i&&i.indexOf("{Bucket}")>-1,s=!i||"string"==typeof i&&i.indexOf("{Region}")>-1;if(e.indexOf("Bucket")>-1||"deleteMultipleObject"===e||"multipartList"===e||"listObjectVersions"===e){if(a&&!r)return"Bucket";if(s&&!n)return"Region"}else if(e.indexOf("Object")>-1||e.indexOf("multipart")>-1||"sliceUploadFile"===e||"abortUploadTask"===e){if(a&&!r)return"Bucket";if(s&&!n)return"Region";if(!o)return"Key"}return!1},R=function(e,t){if(t=k({},t),"getAuth"!==e&&"getV4Auth"!==e&&"getObjectUrl"!==e){var r=t.Headers||{};if(t&&"object"===n(t)){!function(){for(var e in t)t.hasOwnProperty(e)&&e.indexOf("x-cos-")>-1&&(r[e]=t[e])}();I.each({"x-cos-mfa":"MFA","Content-MD5":"ContentMD5","Content-Length":"ContentLength","Content-Type":"ContentType",Expect:"Expect",Expires:"Expires","Cache-Control":"CacheControl","Content-Disposition":"ContentDisposition","Content-Encoding":"ContentEncoding",Range:"Range","If-Modified-Since":"IfModifiedSince","If-Unmodified-Since":"IfUnmodifiedSince","If-Match":"IfMatch","If-None-Match":"IfNoneMatch","x-cos-copy-source":"CopySource","x-cos-copy-source-Range":"CopySourceRange","x-cos-metadata-directive":"MetadataDirective","x-cos-copy-source-If-Modified-Since":"CopySourceIfModifiedSince","x-cos-copy-source-If-Unmodified-Since":"CopySourceIfUnmodifiedSince","x-cos-copy-source-If-Match":"CopySourceIfMatch","x-cos-copy-source-If-None-Match":"CopySourceIfNoneMatch","x-cos-acl":"ACL","x-cos-grant-read":"GrantRead","x-cos-grant-write":"GrantWrite","x-cos-grant-full-control":"GrantFullControl","x-cos-grant-read-acp":"GrantReadAcp","x-cos-grant-write-acp":"GrantWriteAcp","x-cos-storage-class":"StorageClass","x-cos-traffic-limit":"TrafficLimit","x-cos-mime-limit":"MimeLimit","x-cos-server-side-encryption-customer-algorithm":"SSECustomerAlgorithm","x-cos-server-side-encryption-customer-key":"SSECustomerKey","x-cos-server-side-encryption-customer-key-MD5":"SSECustomerKeyMD5","x-cos-server-side-encryption":"ServerSideEncryption","x-cos-server-side-encryption-cos-kms-key-id":"SSEKMSKeyId","x-cos-server-side-encryption-context":"SSEContext","Pic-Operations":"PicOperations"},(function(e,n){void 0!==t[e]&&(r[n]=t[e])})),t.Headers=y(r)}}return t},x=function(e){return Date.now()+(e||0)},A="object"===("undefined"==typeof navigator?"undefined":n(navigator))&&!!navigator.userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/),B="object"===("undefined"==typeof navigator?"undefined":n(navigator))&&/\sQQ/i.test(navigator.userAgent),I={noop:m,formatParams:R,apiWrapper:function(e,t){return function(r,n){var o,i=this;if("function"==typeof r&&(n=r,r={}),r=R(e,r),i.options.EnableTracker)if("sliceUploadFile"===r.calledBySdk)o=r.tracker&&r.tracker.generateSubTracker({apiName:e});else if(["uploadFile","uploadFiles"].includes(e))o=null;else{var a=-1;r.Body&&(a="string"==typeof r.Body?r.Body.length:r.Body.size||r.Body.byteLength||-1),o=new u({bucket:r.Bucket,region:r.Region,apiName:e,fileKey:r.Key,fileSize:a,deepTracker:i.options.DeepTracker,customId:i.options.CustomId,delay:i.options.TrackerDelay})}r.tracker=o;var s=function(e){return e&&e.headers&&(e.headers["x-cos-request-id"]&&(e.RequestId=e.headers["x-cos-request-id"]),e.headers["x-ci-request-id"]&&(e.RequestId=e.headers["x-ci-request-id"]),e.headers["x-cos-version-id"]&&(e.VersionId=e.headers["x-cos-version-id"]),e.headers["x-cos-delete-marker"]&&(e.DeleteMarker=e.headers["x-cos-delete-marker"])),e},c=function(e,t){o&&o.formatResult(e,t),n&&n(s(e),s(t))},l=function(){if("getService"!==e&&"abortUploadTask"!==e){var t=E.call(i,e,r);if(t)return"missing param "+t;if(r.Region){if(i.options.CompatibilityMode){if(!/^([a-z\d-.]+)$/.test(r.Region))return"Region format error."}else{if(r.Region.indexOf("cos.")>-1)return'param Region should not be start with "cos."';if(!/^([a-z\d-]+)$/.test(r.Region))return"Region format error."}!i.options.CompatibilityMode&&-1===r.Region.indexOf("-")&&"yfb"!==r.Region&&"default"!==r.Region&&r.Region}if(r.Bucket){if(!/^([a-z\d-]+)-(\d+)$/.test(r.Bucket))if(r.AppId)r.Bucket=r.Bucket+"-"+r.AppId;else{if(!i.options.AppId)return'Bucket should format as "test-1250000000".';r.Bucket=r.Bucket+"-"+i.options.AppId}r.AppId&&delete r.AppId}!i.options.UseRawKey&&r.Key&&"/"===r.Key.substr(0,1)&&(r.Key=r.Key.substr(1))}}(),d=["getAuth","getObjectUrl"].includes(e);if("function"==typeof Promise&&!d&&!n)return new Promise((function(e,o){if(n=function(t,r){t?o(t):e(r)},l)return c(I.error(new Error(l)));t.call(i,r,c)}));if(l)return c(I.error(new Error(l)));var p=t.call(i,r,c);return d?p:void 0}},xml2json:a,json2xml:s,md5:o,clearKey:y,fileSlice:function(e,t,r,n,o){var i;if(e.slice?i=e.slice(t,r):e.mozSlice?i=e.mozSlice(t,r):e.webkitSlice&&(i=e.webkitSlice(t,r)),n&&v){var a=new FileReader;a.onload=function(e){i=null,o(new Blob([a.result]))},a.readAsArrayBuffer(i)}else o(i)},getBodyMd5:function(e,t,r,n){r=r||m,e?"string"==typeof t?r(I.md5(t,!0)):Blob&&t instanceof Blob?I.getFileMd5(t,(function(e,t){r(t)}),n):r():r()},getFileMd5:function(e,t,r){var n=e.size,i=0,a=o.getCtx();!function o(s){if(s>=n){var c=a.digest("hex");t(null,c)}else{var u=Math.min(n,s+b);I.fileSlice(e,s,u,!1,(function(e){!function(e,t){var r,n=new FileReader;FileReader.prototype.readAsBinaryString?(r=FileReader.prototype.readAsBinaryString,n.onload=function(){t(this.result)}):FileReader.prototype.readAsArrayBuffer&&(r=function(e){var r="",n=new FileReader;n.onload=function(e){for(var o=new Uint8Array(n.result),i=o.byteLength,a=0;a-1||f.indexOf(n)>-1)&&(t[r]=e[r])}return t}(C(e.Headers||e.headers||{})),u=e.Key||"";e.UseRawKey?t=e.Pathname||e.pathname||"/"+u:0!==(t=e.Pathname||e.pathname||u).indexOf("/")&&(t="/"+t);var l=!1!==e.ForceSignHost;if(!c.Host&&!c.host&&e.Bucket&&e.Region&&l&&(c.Host=e.Bucket+".cos."+e.Region+".myqcloud.com"),!r)throw new Error("missing param SecretId");if(!n)throw new Error("missing param SecretKey");var p=Math.round(x(e.SystemClockOffset)/1e3)-1,h=p,g=e.Expires||e.expires;h+=void 0===g?900:1*g||0;var m=r,y=o||p+";"+h,v=o||p+";"+h,b=d(c,!0).join(";").toLowerCase(),k=d(s,!0).join(";").toLowerCase(),S=i.HmacSHA1(v,n).toString(),w=[a,t,I.obj2str(s,!0),I.obj2str(c,!0),""].join("\n"),T=["sha1",y,i.SHA1(w).toString(),""].join("\n");return["q-sign-algorithm=sha1","q-ak="+m,"q-sign-time="+y,"q-key-time="+v,"q-header-list="+b,"q-url-param-list="+k,"q-signature="+i.HmacSHA1(T,S).toString()].join("&")},parseSelectPayload:function(e){for(var t={},r=g(e),n={records:[]};e.byteLength;){var o,i=h(e,32,0),a=h(e,32,4),s=i-a-16,c=0;for(e=e.slice(12);c1)for(var r=1;r=0))throw new B(x,new Error(e.tagName+"@"+r));for(var o=t.length-1;n"==e&&">")||"&"==e&&"&"||'"'==e&&"""||""+e.charCodeAt()+";"}function H(e,t){if(t(e))return!0;if(e=e.firstChild)do{if(H(e,t))return!0}while(e=e.nextSibling)}function j(){this.ownerDocument=this}function F(e,t,r,n){e&&e._inc++,r.namespaceURI===i.XMLNS&&delete t._nsMap[r.prefix?r.localName:""]}function K(e,t,r){if(e&&e._inc){e._inc++;var n=t.childNodes;if(r)n[n.length++]=r;else{for(var o=t.firstChild,i=0;o;)n[i++]=o,o=o.nextSibling;n.length=i,delete n[n.length]}}}function z(e,t){var r=t.previousSibling,n=t.nextSibling;return r?r.nextSibling=n:e.firstChild=n,n?n.previousSibling=r:e.lastChild=r,t.parentNode=null,t.previousSibling=null,t.nextSibling=null,K(e.ownerDocument,e),t}function V(e){return e&&e.nodeType===q.DOCUMENT_TYPE_NODE}function G(e){return e&&e.nodeType===q.ELEMENT_NODE}function X(e){return e&&e.nodeType===q.TEXT_NODE}function W(e,t){var r=e.childNodes||[];if(o(r,G)||V(t))return!1;var n=o(r,V);return!(t&&n&&r.indexOf(n)>r.indexOf(t))}function Q(e,t){var r=e.childNodes||[];if(o(r,(function(e){return G(e)&&e!==t})))return!1;var n=o(r,V);return!(t&&n&&r.indexOf(n)>r.indexOf(t))}function J(e,t,r){if(!function(e){return e&&(e.nodeType===q.DOCUMENT_NODE||e.nodeType===q.DOCUMENT_FRAGMENT_NODE||e.nodeType===q.ELEMENT_NODE)}(e))throw new B(R,"Unexpected parent node type "+e.nodeType);if(r&&r.parentNode!==e)throw new B(x,"child not in parent");if(!function(e){return e&&(G(e)||X(e)||V(e)||e.nodeType===q.DOCUMENT_FRAGMENT_NODE||e.nodeType===q.COMMENT_NODE||e.nodeType===q.PROCESSING_INSTRUCTION_NODE)}(t)||V(t)&&e.nodeType!==q.DOCUMENT_NODE)throw new B(R,"Unexpected node type "+t.nodeType+" for parent node type "+e.nodeType)}function $(e,t,r){var n=e.childNodes||[],i=t.childNodes||[];if(t.nodeType===q.DOCUMENT_FRAGMENT_NODE){var a=i.filter(G);if(a.length>1||o(i,X))throw new B(R,"More than one element or text in fragment");if(1===a.length&&!W(e,r))throw new B(R,"Element in fragment can not be inserted before doctype")}if(G(t)&&!W(e,r))throw new B(R,"Only one element can be added and only after doctype");if(V(t)){if(o(n,V))throw new B(R,"Only one doctype is allowed");var s=o(n,G);if(r&&n.indexOf(s)1||o(i,X))throw new B(R,"More than one element or text in fragment");if(1===a.length&&!Q(e,r))throw new B(R,"Element in fragment can not be inserted before doctype")}if(G(t)&&!Q(e,r))throw new B(R,"Only one element can be added and only after doctype");if(V(t)){if(o(n,(function(e){return V(e)&&e!==r})))throw new B(R,"Only one doctype is allowed");var s=o(n,G);if(r&&n.indexOf(s)&"\t\n\r]/g,M),'"')}function me(e,t,r,n,o){if(o||(o=[]),n){if(!(e=n(e)))return;if("string"==typeof e)return void t.push(e)}switch(e.nodeType){case p:var a=e.attributes,s=a.length,c=e.firstChild,u=e.tagName,l=u;if(!(r=i.isHTML(e.namespaceURI)||r)&&!e.prefix&&e.namespaceURI){for(var d,y=0;y=0;w--){if(""===(T=o[w]).prefix&&T.namespace===e.namespaceURI){d=T.namespace;break}}if(d!==e.namespaceURI)for(w=o.length-1;w>=0;w--){var T;if((T=o[w]).namespace===e.namespaceURI){T.prefix&&(l=T.prefix+":"+u);break}}}t.push("<",l);for(var E=0;E"),r&&/^script$/i.test(u))for(;c;)c.data?t.push(c.data):me(c,t,r,n,o.slice()),c=c.nextSibling;else for(;c;)me(c,t,r,n,o.slice()),c=c.nextSibling;t.push("",l,">")}else t.push("/>");return;case C:case S:for(c=e.firstChild;c;)me(c,t,r,n,o.slice()),c=c.nextSibling;return;case f:return ge(t,e.name,e.value);case h:return t.push(e.data.replace(/[<&>]/g,M));case g:return t.push("");case b:return t.push("\x3c!--",e.data,"--\x3e");case k:var B=e.publicId,I=e.systemId;if(t.push("");else if(I&&"."!=I)t.push(" SYSTEM ",I,">");else{var D=e.internalSubset;D&&t.push(" [",D,"]"),t.push(">")}return;case v:return t.push("",e.target," ",e.data,"?>");case m:return t.push("&",e.nodeName,";");default:t.push("??",e.nodeName)}}function ye(e,t,r){var n;switch(t.nodeType){case p:(n=t.cloneNode(!1)).ownerDocument=e;case S:break;case f:r=!0}if(n||(n=t.cloneNode(!1)),n.ownerDocument=e,n.parentNode=null,r)for(var o=t.firstChild;o;)n.appendChild(ye(e,o,r)),o=o.nextSibling;return n}function ve(e,t,r){var n=new t.constructor;for(var o in t)if(Object.prototype.hasOwnProperty.call(t,o)){var i=t[o];"object"!=typeof i&&i!=n[o]&&(n[o]=i)}switch(t.childNodes&&(n.childNodes=new I),n.ownerDocument=e,n.nodeType){case p:var a=t.attributes,s=n.attributes=new _,c=a.length;s._ownerElement=n;for(var u=0;u=0&&e0},lookupPrefix:function(e){for(var t=this;t;){var r=t._nsMap;if(r)for(var n in r)if(Object.prototype.hasOwnProperty.call(r,n)&&r[n]===e)return n;t=t.nodeType==f?t.ownerDocument:t.parentNode}return null},lookupNamespaceURI:function(e){for(var t=this;t;){var r=t._nsMap;if(r&&Object.prototype.hasOwnProperty.call(r,e))return r[e];t=t.nodeType==f?t.ownerDocument:t.parentNode}return null},isDefaultNamespace:function(e){return null==this.lookupPrefix(e)}},u(d,q),u(d,q.prototype),j.prototype={nodeName:"#document",nodeType:C,doctype:null,documentElement:null,_inc:1,insertBefore:function(e,t){if(e.nodeType==S){for(var r=e.firstChild;r;){var n=r.nextSibling;this.insertBefore(r,t),r=n}return e}return Z(this,e,t),e.ownerDocument=this,null===this.documentElement&&e.nodeType===p&&(this.documentElement=e),e},removeChild:function(e){return this.documentElement==e&&(this.documentElement=null),z(this,e)},replaceChild:function(e,t){Z(this,e,t,Y),e.ownerDocument=this,t&&this.removeChild(t),G(e)&&(this.documentElement=e)},importNode:function(e,t){return ye(this,e,t)},getElementById:function(e){var t=null;return H(this.documentElement,(function(r){if(r.nodeType==p&&r.getAttribute("id")==e)return t=r,!0})),t},getElementsByClassName:function(e){var t=c(e);return new D(this,(function(r){var n=[];return t.length>0&&H(r.documentElement,(function(o){if(o!==r&&o.nodeType===p){var i=o.getAttribute("class");if(i){var a=e===i;if(!a){var s=c(i);a=t.every((u=s,function(e){return u&&-1!==u.indexOf(e)}))}a&&n.push(o)}}var u})),n}))},createElement:function(e){var t=new ee;return t.ownerDocument=this,t.nodeName=e,t.tagName=e,t.localName=e,t.childNodes=new I,(t.attributes=new _)._ownerElement=t,t},createDocumentFragment:function(){var e=new le;return e.ownerDocument=this,e.childNodes=new I,e},createTextNode:function(e){var t=new ne;return t.ownerDocument=this,t.appendData(e),t},createComment:function(e){var t=new oe;return t.ownerDocument=this,t.appendData(e),t},createCDATASection:function(e){var t=new ie;return t.ownerDocument=this,t.appendData(e),t},createProcessingInstruction:function(e,t){var r=new de;return r.ownerDocument=this,r.tagName=r.nodeName=r.target=e,r.nodeValue=r.data=t,r},createAttribute:function(e){var t=new te;return t.ownerDocument=this,t.name=e,t.nodeName=e,t.localName=e,t.specified=!0,t},createEntityReference:function(e){var t=new ue;return t.ownerDocument=this,t.nodeName=e,t},createElementNS:function(e,t){var r=new ee,n=t.split(":"),o=r.attributes=new _;return r.childNodes=new I,r.ownerDocument=this,r.nodeName=t,r.tagName=t,r.namespaceURI=e,2==n.length?(r.prefix=n[0],r.localName=n[1]):r.localName=t,o._ownerElement=r,r},createAttributeNS:function(e,t){var r=new te,n=t.split(":");return r.ownerDocument=this,r.nodeName=t,r.name=t,r.namespaceURI=e,r.specified=!0,2==n.length?(r.prefix=n[0],r.localName=n[1]):r.localName=t,r}},l(j,q),ee.prototype={nodeType:p,hasAttribute:function(e){return null!=this.getAttributeNode(e)},getAttribute:function(e){var t=this.getAttributeNode(e);return t&&t.value||""},getAttributeNode:function(e){return this.attributes.getNamedItem(e)},setAttribute:function(e,t){var r=this.ownerDocument.createAttribute(e);r.value=r.nodeValue=""+t,this.setAttributeNode(r)},removeAttribute:function(e){var t=this.getAttributeNode(e);t&&this.removeAttributeNode(t)},appendChild:function(e){return e.nodeType===S?this.insertBefore(e,null):function(e,t){return t.parentNode&&t.parentNode.removeChild(t),t.parentNode=e,t.previousSibling=e.lastChild,t.nextSibling=null,t.previousSibling?t.previousSibling.nextSibling=t:e.firstChild=t,e.lastChild=t,K(e.ownerDocument,e,t),t}(this,e)},setAttributeNode:function(e){return this.attributes.setNamedItem(e)},setAttributeNodeNS:function(e){return this.attributes.setNamedItemNS(e)},removeAttributeNode:function(e){return this.attributes.removeNamedItem(e.nodeName)},removeAttributeNS:function(e,t){var r=this.getAttributeNodeNS(e,t);r&&this.removeAttributeNode(r)},hasAttributeNS:function(e,t){return null!=this.getAttributeNodeNS(e,t)},getAttributeNS:function(e,t){var r=this.getAttributeNodeNS(e,t);return r&&r.value||""},setAttributeNS:function(e,t,r){var n=this.ownerDocument.createAttributeNS(e,t);n.value=n.nodeValue=""+r,this.setAttributeNode(n)},getAttributeNodeNS:function(e,t){return this.attributes.getNamedItemNS(e,t)},getElementsByTagName:function(e){return new D(this,(function(t){var r=[];return H(t,(function(n){n===t||n.nodeType!=p||"*"!==e&&n.tagName!=e||r.push(n)})),r}))},getElementsByTagNameNS:function(e,t){return new D(this,(function(r){var n=[];return H(r,(function(o){o===r||o.nodeType!==p||"*"!==e&&o.namespaceURI!==e||"*"!==t&&o.localName!=t||n.push(o)})),n}))}},j.prototype.getElementsByTagName=ee.prototype.getElementsByTagName,j.prototype.getElementsByTagNameNS=ee.prototype.getElementsByTagNameNS,l(ee,q),te.prototype.nodeType=f,l(te,q),re.prototype={data:"",substringData:function(e,t){return this.data.substring(e,e+t)},appendData:function(e){e=this.data+e,this.nodeValue=this.data=e,this.length=e.length},insertData:function(e,t){this.replaceData(e,0,t)},appendChild:function(e){throw new Error(E[R])},deleteData:function(e,t){this.replaceData(e,t,"")},replaceData:function(e,t,r){r=this.data.substring(0,e)+r+this.data.substring(e+t),this.nodeValue=this.data=r,this.length=r.length}},l(re,q),ne.prototype={nodeName:"#text",nodeType:h,splitText:function(e){var t=this.data,r=t.substring(e);t=t.substring(0,e),this.data=this.nodeValue=t,this.length=t.length;var n=this.ownerDocument.createTextNode(r);return this.parentNode&&this.parentNode.insertBefore(n,this.nextSibling),n}},l(ne,re),oe.prototype={nodeName:"#comment",nodeType:b},l(oe,re),ie.prototype={nodeName:"#cdata-section",nodeType:g},l(ie,re),ae.prototype.nodeType=k,l(ae,q),se.prototype.nodeType=w,l(se,q),ce.prototype.nodeType=y,l(ce,q),ue.prototype.nodeType=m,l(ue,q),le.prototype.nodeName="#document-fragment",le.prototype.nodeType=S,l(le,q),de.prototype.nodeType=v,l(de,q),pe.prototype.serializeToString=function(e,t,r){return fe.call(e,t,r)},q.prototype.toString=fe;try{if(Object.defineProperty){function Ce(e){switch(e.nodeType){case p:case S:var t=[];for(e=e.firstChild;e;)7!==e.nodeType&&8!==e.nodeType&&t.push(Ce(e)),e=e.nextSibling;return t.join("");default:return e.nodeValue}}Object.defineProperty(D.prototype,"length",{get:function(){return O(this),this.$$length}}),Object.defineProperty(q.prototype,"textContent",{get:function(){return Ce(this)},set:function(e){switch(this.nodeType){case p:case S:for(;this.firstChild;)this.removeChild(this.firstChild);(e||String(e))&&this.appendChild(this.ownerDocument.createTextNode(e));break;default:this.data=e,this.value=e,this.nodeValue=e}}}),be=function(e,t,r){e["$$"+t]=r}}}catch(ke){}t.DocumentType=ae,t.DOMException=B,t.DOMImplementation=L,t.Element=ee,t.Node=q,t.NodeList=I,t.XMLSerializer=pe},function(e,t,r){var n=r(23),o=r(24),i=r(0),a=r(7),s=null,c=function(e){if(!s){var t=r(27);s=new t({appkey:"0AND0VEVB24UBGDU",versionCode:a.version,channelID:"js_sdk",openid:"openid",unionid:"unid",strictMode:!1,delay:e,sessionDuration:6e4})}return s},u=function(){var e=function(){return(65536*(1+Math.random())|0).toString(16).substring(1)};return e()+e()+"-"+e()+"-"+e()+"-"+e()+"-"+e()+e()+e()},l=function(){if("object"===("undefined"==typeof navigator?"undefined":i(navigator))){var e=navigator.connection||navigator.mozConnection||navigator.webkitConnection;return(null==e?void 0:e.type)||(null==e?void 0:e.effectiveType)||"unknown"}return"unknown"},d=function(){if("object"!==("undefined"==typeof navigator?"undefined":i(navigator)))return"unknown os";var e=navigator.userAgent.toLowerCase(),t=/macintosh|mac os x/i.test(navigator.userAgent);return e.indexOf("win32")>=0||e.indexOf("wow32")>=0?"win32":e.indexOf("win64")>=0||e.indexOf("wow64")>=0?"win64":t?"mac":"unknown os"},p=function(){return!("object"!==("undefined"==typeof navigator?"undefined":i(navigator))||!navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i))},f=function(){return!("object"!==("undefined"==typeof navigator?"undefined":i(navigator))||!navigator.userAgent.match(/(Android|Adr|Linux)/i))},h=function(){return!("object"!==("undefined"==typeof navigator?"undefined":i(navigator))||!navigator.userAgent.match(/(iPhone|iPod|iPad|iOS)/i))},g=function(){if("object"!==("undefined"==typeof navigator?"undefined":i(navigator)))return"unknown device";var e=navigator.userAgent.toLowerCase();if(e.includes("app/tencent_wemeet"))return"tencent_wemeet";if(e.indexOf("maxthon")>=0){var t=e.match(/maxthon\/([\d.]+)/),r=t&&t[1]||"";return"傲游浏览器 ".concat(r).trim()}if(e.indexOf("qqbrowser")>=0){var n=e.match(/qqbrowser\/([\d.]+)/),o=n&&n[1]||"";return"QQ浏览器 ".concat(o).trim()}if(e.indexOf("se 2.x")>=0)return"搜狗浏览器";if(e.indexOf("wxwork")>=0)return"微信内置浏览器";if(e.indexOf("msie")>=0){var a=e.match(/msie ([\d.]+)/),s=a&&a[1]||"";return"IE ".concat(s).trim()}if(e.indexOf("firefox")>=0){var c=e.match(/firefox\/([\d.]+)/),u=c&&c[1]||"";return"Firefox ".concat(u).trim()}if(e.indexOf("chrome")>=0){var l=e.match(/chrome\/([\d.]+)/),d=l&&l[1]||"";return"Chrome ".concat(d).trim()}if(e.indexOf("opera")>=0){var p=e.match(/opera.([\d.]+)/),f=p&&p[1]||"";return"Opera ".concat(f).trim()}if(e.indexOf("safari")>=0){var h=e.match(/version\/([\d.]+)/),g=h&&h[1]||"";return"Safari ".concat(g).trim()}if(e.indexOf("edge")>=0){var m=e.match(/edge\/([\d.]+)/),y=m&&m[1]||"";return"edge ".concat(y).trim()}return e.substr(0,200)},m={isMobile:p(),isBrowser:!p(),mobileOsType:f()?"android":h?"ios":"other_mobile",pcOsType:d()},y={deviceType:m.isMobile?"mobile":m.isBrowser?"browser":"unknown",devicePlatform:m.isMobile?m.mobileOsType:m.pcOsType,deviceName:g()},v=["multipartInit","multipartUpload","multipartComplete","multipartList","multipartListPart","multipartAbort"],b=["putObject","postObject","appendObject","sliceUploadFile","uploadFile","uploadFiles"].concat(v),C=["getObject"];function k(e){return e.replace(/([A-Z])/g,"_$1").toLowerCase()}var S=function(){"use strict";function e(t){n(this,e);var r=t.parent,o=t.traceId,i=t.bucket,s=t.region,l=t.apiName,d=t.fileKey,p=t.fileSize,f=t.accelerate,h=t.customId,g=t.delay,m=t.deepTracker,v=i&&i.substr(i.lastIndexOf("-")+1)||"";this.parent=r,this.deepTracker=m,this.delay=g,this.params={cossdkVersion:a.version,region:s,networkType:"",host:"",accelerate:f?"Y":"N",requestPath:d||"",size:p||-1,httpMd5:0,httpSign:0,httpFull:0,name:l||"",result:"",tookTime:0,errorNode:"",errorCode:"",errorMessage:"",errorRequestId:"",errorStatusCode:0,errorServiceName:"",tracePlatform:"cos-js-sdk-v5",traceId:o||u(),bucket:i,appid:v,partNumber:0,retryTimes:0,reqUrl:"",customId:h||"",deviceType:y.deviceType,devicePlatform:y.devicePlatform,deviceName:y.deviceName,md5StartTime:0,md5EndTime:0,signStartTime:0,signEndTime:0,httpStartTime:0,httpEndTime:0,startTime:(new Date).getTime(),endTime:0},this.beacon=c(g)}return o(e,[{key:"formatResult",value:function(e,t){var r,n,o,i,a,s,c=(new Date).getTime()-this.params.startTime,u=l(),d=e?(null==e?void 0:e.code)||(null==e||null===(r=e.error)||void 0===r?void 0:r.code)||(null==e||null===(n=e.error)||void 0===n?void 0:n.Code):"",p=e?(null==e?void 0:e.message)||(null==e||null===(o=e.error)||void 0===o?void 0:o.message)||(null==e||null===(i=e.error)||void 0===i?void 0:i.Message):"",f=e?(null==e?void 0:e.resource)||(null==e||null===(a=e.error)||void 0===a?void 0:a.resource)||(null==e||null===(s=e.error)||void 0===s?void 0:s.Resource):"",h=e?null==e?void 0:e.statusCode:t.statusCode,g=e?(null==e?void 0:e.headers)&&(null==e?void 0:e.headers["x-cos-request-id"]):(null==t?void 0:t.headers)&&(null==t?void 0:t.headers["x-cos-request-id"]),m=e?g?"Server":"Client":"";if(Object.assign(this.params,{tookTime:c,networkType:u,httpMd5:this.params.md5EndTime-this.params.md5StartTime,httpSign:this.params.signEndTime-this.params.signStartTime,httpFull:this.params.httpEndTime-this.params.httpStartTime,result:e?"Fail":"Success",errorType:m,errorCode:d,errorStatusCode:h,errorMessage:p,errorServiceName:f,errorRequestId:g}),!e||d&&p||(this.params.fullError=e?JSON.stringify(e):""),"getObject"===this.params.name&&(this.params.size=t?t.headers&&t.headers["content-length"]:-1),this.params.reqUrl)try{var y=/^http(s)?:\/\/(.*?)\//.exec(this.params.reqUrl);this.params.host=y[2]}catch(e){this.params.host=this.params.reqUrl}this.sendEvents()}},{key:"setParams",value:function(e){Object.assign(this.params,e)}},{key:"sendEvents",value:function(){if(!v.includes(this.params.name)||this.deepTracker){var e,t=(e=this.params.name,b.includes(e)?"cos_upload":C.includes(e)?"cos_download":"base_service"),r=function(e){var t={},r="Success"===e.result?["tracePlatform","cossdkVersion","region","bucket","appid","networkType","host","accelerate","requestPath","partNumber","size","name","result","tookTime","errorRequestId","retryTimes","reqUrl","customId","deviceType","devicePlatform","deviceName"]:["tracePlatform","cossdkVersion","region","networkType","host","accelerate","requestPath","size","httpMd5","httpSign","httpFull","name","result","tookTime","errorNode","errorCode","errorMessage","errorRequestId","errorStatusCode","errorServiceName","errorType","traceId","bucket","appid","partNumber","retryTimes","reqUrl","customId","fullError","deviceType","devicePlatform","deviceName"];for(var n in e)r.includes(n)&&(t[k(n)]=e[n]);return t}(this.params);this.beacon||(this.beacon=c(this.delay||5e3)),0===this.delay?this.beacon&&this.beacon.onDirectUserAction(t,r):this.beacon&&this.beacon.onUserAction(t,r)}}},{key:"generateSubTracker",value:function(t){return Object.assign(t,{parent:this,deepTracker:this.deepTracker,traceId:this.params.traceId,bucket:this.params.bucket,region:this.params.region,fileKey:this.params.requestPath,customId:this.params.customId,delay:this.delay}),new e(t)}}]),e}();e.exports=S},function(e){e.exports=JSON.parse('{"name":"cos-js-sdk-v5","version":"1.4.21","description":"JavaScript SDK for [腾讯云对象存储](https://cloud.tencent.com/product/cos)","main":"dist/cos-js-sdk-v5.js","types":"index.d.ts","scripts":{"prettier":"prettier --write src demo/demo.js demo/CIDemos/*.js test/test.js server/sts.js index.d.ts","server":"node server/sts.js","dev":"cross-env NODE_ENV=development webpack -w --mode=development","build":"cross-env NODE_ENV=production webpack --mode=production","cos-auth.min.js":"uglifyjs ./demo/common/cos-auth.js -o ./demo/common/cos-auth.min.js -c -m","test":"jest --runInBand --coverage"},"repository":{"type":"git","url":"git+https://github.com/tencentyun/cos-js-sdk-v5.git"},"keywords":[],"author":"carsonxu","license":"ISC","bugs":{"url":"https://github.com/tencentyun/cos-js-sdk-v5/issues"},"homepage":"https://github.com/tencentyun/cos-js-sdk-v5#readme","dependencies":{"@xmldom/xmldom":"^0.8.6"},"devDependencies":{"@babel/core":"7.17.9","@babel/plugin-transform-runtime":"7.18.10","@babel/preset-env":"7.16.11","babel-loader":"8.2.5","body-parser":"^1.18.3","cross-env":"^5.2.0","express":"^4.16.4","jest":"^29.3.1","jest-environment-jsdom":"^29.3.1","prettier":"^3.0.1","qcloud-cos-sts":"^3.0.2","request":"^2.87.0","terser-webpack-plugin":"4.2.3","uglifyjs":"^2.4.11","webpack":"4.46.0","webpack-cli":"4.10.0"}}')},function(e,t){var r=function(e){var t={},r=function(e){return!t[e]&&(t[e]=[]),t[e]};e.on=function(e,t){r(e).push(t)},e.off=function(e,t){for(var n=r(e),o=n.length-1;o>=0;o--)t===n[o]&&n.splice(o,1)},e.emit=function(e,t){for(var n=r(e).map((function(e){return e})),o=0;o=0;r--){var o=n[r][2];(!o||o+2592e3=0;o--){var i=n[o];i[0]===e&&i[1]===t&&n.splice(o,1)}n.unshift([e,t,Math.round(Date.now()/1e3)]),n.length>r&&n.splice(r),l()}},removeUploadId:function(e){u.call(this),delete d.using[e];for(var t=n.length-1;t>=0;t--)n[t][1]===e&&n.splice(t,1);l()}};e.exports=d},function(e,t,r){var n=r(11);e.exports=n},function(e,t,r){"use strict";var n=r(1),o=r(8),i=r(28),a=r(29),s=r(31),c=r(7),u={AppId:"",SecretId:"",SecretKey:"",SecurityToken:"",ChunkRetryTimes:2,FileParallelLimit:3,ChunkParallelLimit:3,ChunkSize:1048576,SliceSize:1048576,CopyChunkParallelLimit:20,CopyChunkSize:10485760,CopySliceSize:10485760,MaxPartNumber:1e4,ProgressInterval:1e3,Domain:"",ServiceDomain:"",Protocol:"",CompatibilityMode:!1,ForcePathStyle:!1,UseRawKey:!1,Timeout:0,CorrectClockSkew:!0,SystemClockOffset:0,UploadCheckContentMd5:!1,UploadQueueSize:1e4,UploadAddMetaMd5:!1,UploadIdCacheLimit:50,UseAccelerate:!1,ForceSignHost:!0,EnableTracker:!1,DeepTracker:!1,TrackerDelay:5e3,CustomId:""},l=function(e){this.options=n.extend(n.clone(u),e||{}),this.options.FileParallelLimit=Math.max(1,this.options.FileParallelLimit),this.options.ChunkParallelLimit=Math.max(1,this.options.ChunkParallelLimit),this.options.ChunkRetryTimes=Math.max(0,this.options.ChunkRetryTimes),this.options.ChunkSize=Math.max(1048576,this.options.ChunkSize),this.options.CopyChunkParallelLimit=Math.max(1,this.options.CopyChunkParallelLimit),this.options.CopyChunkSize=Math.max(1048576,this.options.CopyChunkSize),this.options.CopySliceSize=Math.max(0,this.options.CopySliceSize),this.options.MaxPartNumber=Math.max(1024,Math.min(1e4,this.options.MaxPartNumber)),this.options.Timeout=Math.max(0,this.options.Timeout),this.options.AppId,this.options.SecretId&&this.options.SecretId.indexOf(" "),this.options.SecretKey&&this.options.SecretKey.indexOf(" "),n.isNode(),o.init(this),i.init(this)};a.init(l,i),s.init(l,i),l.util={md5:n.md5,xml2json:n.xml2json,json2xml:n.json2xml,encodeBase64:n.encodeBase64},l.getAuthorization=n.getAuth,l.version=c.version,e.exports=l},function(module,exports,__webpack_require__){(function(process,global,module){var __WEBPACK_AMD_DEFINE_RESULT__,_typeof=__webpack_require__(0);(function(){"use strict";var ERROR="input is invalid type",WINDOW="object"===("undefined"==typeof window?"undefined":_typeof(window)),root=WINDOW?window:{};root.JS_MD5_NO_WINDOW&&(WINDOW=!1);var WEB_WORKER=!WINDOW&&"object"===("undefined"==typeof self?"undefined":_typeof(self)),NODE_JS=!root.JS_MD5_NO_NODE_JS&&"object"===(void 0===process?"undefined":_typeof(process))&&process.versions&&process.versions.node;NODE_JS?root=global:WEB_WORKER&&(root=self);var COMMON_JS=!root.JS_MD5_NO_COMMON_JS&&"object"===_typeof(module)&&module.exports,AMD=__webpack_require__(14),ARRAY_BUFFER=!root.JS_MD5_NO_ARRAY_BUFFER&&"undefined"!=typeof ArrayBuffer,HEX_CHARS="0123456789abcdef".split(""),EXTRA=[128,32768,8388608,-2147483648],SHIFT=[0,8,16,24],OUTPUT_TYPES=["hex","array","digest","buffer","arrayBuffer","base64"],BASE64_ENCODE_CHAR="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),blocks=[],buffer8;if(ARRAY_BUFFER){var buffer=new ArrayBuffer(68);buffer8=new Uint8Array(buffer),blocks=new Uint32Array(buffer)}!root.JS_MD5_NO_NODE_JS&&Array.isArray||(Array.isArray=function(e){return"[object Array]"===Object.prototype.toString.call(e)}),!ARRAY_BUFFER||!root.JS_MD5_NO_ARRAY_BUFFER_IS_VIEW&&ArrayBuffer.isView||(ArrayBuffer.isView=function(e){return"object"===_typeof(e)&&e.buffer&&e.buffer.constructor===ArrayBuffer});var createOutputMethod=function(e){return function(t,r){return new Md5(!0).update(t,r)[e]()}},createMethod=function(){var e=createOutputMethod("hex");NODE_JS&&(e=nodeWrap(e)),e.getCtx=e.create=function(){return new Md5},e.update=function(t){return e.create().update(t)};for(var t=0;t>6,s[n++]=128|63&r):r<55296||r>=57344?(s[n++]=224|r>>12,s[n++]=128|r>>6&63,s[n++]=128|63&r):(r=65536+((1023&r)<<10|1023&e.charCodeAt(++o)),s[n++]=240|r>>18,s[n++]=128|r>>12&63,s[n++]=128|r>>6&63,s[n++]=128|63&r);else for(n=this.start;o>2]|=r<>2]|=(192|r>>6)<>2]|=(128|63&r)<=57344?(a[n>>2]|=(224|r>>12)<>2]|=(128|r>>6&63)<>2]|=(128|63&r)<>2]|=(240|r>>18)<>2]|=(128|r>>12&63)<>2]|=(128|r>>6&63)<>2]|=(128|63&r)<=64?(this.start=n-64,this.hash(),this.hashed=!0):this.start=n}return this.bytes>4294967295&&(this.hBytes+=this.bytes/4294967296<<0,this.bytes=this.bytes%4294967296),this}},Md5.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var e=this.blocks,t=this.lastByteIndex;e[t>>2]|=EXTRA[3&t],t>=56&&(this.hashed||this.hash(),e[0]=e[16],e[16]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=e[9]=e[10]=e[11]=e[12]=e[13]=e[14]=e[15]=0),e[14]=this.bytes<<3,e[15]=this.hBytes<<3|this.bytes>>>29,this.hash()}},Md5.prototype.hash=function(){var e,t,r,n,o,i,a=this.blocks;this.first?t=((t=((e=((e=a[0]-680876937)<<7|e>>>25)-271733879<<0)^(r=((r=(-271733879^(n=((n=(-1732584194^2004318071&e)+a[1]-117830708)<<12|n>>>20)+e<<0)&(-271733879^e))+a[2]-1126478375)<<17|r>>>15)+n<<0)&(n^e))+a[3]-1316259209)<<22|t>>>10)+r<<0:(e=this.h0,t=this.h1,r=this.h2,t=((t+=((e=((e+=((n=this.h3)^t&(r^n))+a[0]-680876936)<<7|e>>>25)+t<<0)^(r=((r+=(t^(n=((n+=(r^e&(t^r))+a[1]-389564586)<<12|n>>>20)+e<<0)&(e^t))+a[2]+606105819)<<17|r>>>15)+n<<0)&(n^e))+a[3]-1044525330)<<22|t>>>10)+r<<0),t=((t+=((e=((e+=(n^t&(r^n))+a[4]-176418897)<<7|e>>>25)+t<<0)^(r=((r+=(t^(n=((n+=(r^e&(t^r))+a[5]+1200080426)<<12|n>>>20)+e<<0)&(e^t))+a[6]-1473231341)<<17|r>>>15)+n<<0)&(n^e))+a[7]-45705983)<<22|t>>>10)+r<<0,t=((t+=((e=((e+=(n^t&(r^n))+a[8]+1770035416)<<7|e>>>25)+t<<0)^(r=((r+=(t^(n=((n+=(r^e&(t^r))+a[9]-1958414417)<<12|n>>>20)+e<<0)&(e^t))+a[10]-42063)<<17|r>>>15)+n<<0)&(n^e))+a[11]-1990404162)<<22|t>>>10)+r<<0,t=((t+=((e=((e+=(n^t&(r^n))+a[12]+1804603682)<<7|e>>>25)+t<<0)^(r=((r+=(t^(n=((n+=(r^e&(t^r))+a[13]-40341101)<<12|n>>>20)+e<<0)&(e^t))+a[14]-1502002290)<<17|r>>>15)+n<<0)&(n^e))+a[15]+1236535329)<<22|t>>>10)+r<<0,t=((t+=((n=((n+=(t^r&((e=((e+=(r^n&(t^r))+a[1]-165796510)<<5|e>>>27)+t<<0)^t))+a[6]-1069501632)<<9|n>>>23)+e<<0)^e&((r=((r+=(e^t&(n^e))+a[11]+643717713)<<14|r>>>18)+n<<0)^n))+a[0]-373897302)<<20|t>>>12)+r<<0,t=((t+=((n=((n+=(t^r&((e=((e+=(r^n&(t^r))+a[5]-701558691)<<5|e>>>27)+t<<0)^t))+a[10]+38016083)<<9|n>>>23)+e<<0)^e&((r=((r+=(e^t&(n^e))+a[15]-660478335)<<14|r>>>18)+n<<0)^n))+a[4]-405537848)<<20|t>>>12)+r<<0,t=((t+=((n=((n+=(t^r&((e=((e+=(r^n&(t^r))+a[9]+568446438)<<5|e>>>27)+t<<0)^t))+a[14]-1019803690)<<9|n>>>23)+e<<0)^e&((r=((r+=(e^t&(n^e))+a[3]-187363961)<<14|r>>>18)+n<<0)^n))+a[8]+1163531501)<<20|t>>>12)+r<<0,t=((t+=((n=((n+=(t^r&((e=((e+=(r^n&(t^r))+a[13]-1444681467)<<5|e>>>27)+t<<0)^t))+a[2]-51403784)<<9|n>>>23)+e<<0)^e&((r=((r+=(e^t&(n^e))+a[7]+1735328473)<<14|r>>>18)+n<<0)^n))+a[12]-1926607734)<<20|t>>>12)+r<<0,t=((t+=((i=(n=((n+=((o=t^r)^(e=((e+=(o^n)+a[5]-378558)<<4|e>>>28)+t<<0))+a[8]-2022574463)<<11|n>>>21)+e<<0)^e)^(r=((r+=(i^t)+a[11]+1839030562)<<16|r>>>16)+n<<0))+a[14]-35309556)<<23|t>>>9)+r<<0,t=((t+=((i=(n=((n+=((o=t^r)^(e=((e+=(o^n)+a[1]-1530992060)<<4|e>>>28)+t<<0))+a[4]+1272893353)<<11|n>>>21)+e<<0)^e)^(r=((r+=(i^t)+a[7]-155497632)<<16|r>>>16)+n<<0))+a[10]-1094730640)<<23|t>>>9)+r<<0,t=((t+=((i=(n=((n+=((o=t^r)^(e=((e+=(o^n)+a[13]+681279174)<<4|e>>>28)+t<<0))+a[0]-358537222)<<11|n>>>21)+e<<0)^e)^(r=((r+=(i^t)+a[3]-722521979)<<16|r>>>16)+n<<0))+a[6]+76029189)<<23|t>>>9)+r<<0,t=((t+=((i=(n=((n+=((o=t^r)^(e=((e+=(o^n)+a[9]-640364487)<<4|e>>>28)+t<<0))+a[12]-421815835)<<11|n>>>21)+e<<0)^e)^(r=((r+=(i^t)+a[15]+530742520)<<16|r>>>16)+n<<0))+a[2]-995338651)<<23|t>>>9)+r<<0,t=((t+=((n=((n+=(t^((e=((e+=(r^(t|~n))+a[0]-198630844)<<6|e>>>26)+t<<0)|~r))+a[7]+1126891415)<<10|n>>>22)+e<<0)^((r=((r+=(e^(n|~t))+a[14]-1416354905)<<15|r>>>17)+n<<0)|~e))+a[5]-57434055)<<21|t>>>11)+r<<0,t=((t+=((n=((n+=(t^((e=((e+=(r^(t|~n))+a[12]+1700485571)<<6|e>>>26)+t<<0)|~r))+a[3]-1894986606)<<10|n>>>22)+e<<0)^((r=((r+=(e^(n|~t))+a[10]-1051523)<<15|r>>>17)+n<<0)|~e))+a[1]-2054922799)<<21|t>>>11)+r<<0,t=((t+=((n=((n+=(t^((e=((e+=(r^(t|~n))+a[8]+1873313359)<<6|e>>>26)+t<<0)|~r))+a[15]-30611744)<<10|n>>>22)+e<<0)^((r=((r+=(e^(n|~t))+a[6]-1560198380)<<15|r>>>17)+n<<0)|~e))+a[13]+1309151649)<<21|t>>>11)+r<<0,t=((t+=((n=((n+=(t^((e=((e+=(r^(t|~n))+a[4]-145523070)<<6|e>>>26)+t<<0)|~r))+a[11]-1120210379)<<10|n>>>22)+e<<0)^((r=((r+=(e^(n|~t))+a[2]+718787259)<<15|r>>>17)+n<<0)|~e))+a[9]-343485551)<<21|t>>>11)+r<<0,this.first?(this.h0=e+1732584193<<0,this.h1=t-271733879<<0,this.h2=r-1732584194<<0,this.h3=n+271733878<<0,this.first=!1):(this.h0=this.h0+e<<0,this.h1=this.h1+t<<0,this.h2=this.h2+r<<0,this.h3=this.h3+n<<0)},Md5.prototype.hex=function(){this.finalize();var e=this.h0,t=this.h1,r=this.h2,n=this.h3;return HEX_CHARS[e>>4&15]+HEX_CHARS[15&e]+HEX_CHARS[e>>12&15]+HEX_CHARS[e>>8&15]+HEX_CHARS[e>>20&15]+HEX_CHARS[e>>16&15]+HEX_CHARS[e>>28&15]+HEX_CHARS[e>>24&15]+HEX_CHARS[t>>4&15]+HEX_CHARS[15&t]+HEX_CHARS[t>>12&15]+HEX_CHARS[t>>8&15]+HEX_CHARS[t>>20&15]+HEX_CHARS[t>>16&15]+HEX_CHARS[t>>28&15]+HEX_CHARS[t>>24&15]+HEX_CHARS[r>>4&15]+HEX_CHARS[15&r]+HEX_CHARS[r>>12&15]+HEX_CHARS[r>>8&15]+HEX_CHARS[r>>20&15]+HEX_CHARS[r>>16&15]+HEX_CHARS[r>>28&15]+HEX_CHARS[r>>24&15]+HEX_CHARS[n>>4&15]+HEX_CHARS[15&n]+HEX_CHARS[n>>12&15]+HEX_CHARS[n>>8&15]+HEX_CHARS[n>>20&15]+HEX_CHARS[n>>16&15]+HEX_CHARS[n>>28&15]+HEX_CHARS[n>>24&15]},Md5.prototype.toString=Md5.prototype.hex,Md5.prototype.digest=function(e){if("hex"===e)return this.hex();this.finalize();var t=this.h0,r=this.h1,n=this.h2,o=this.h3;return[255&t,t>>8&255,t>>16&255,t>>24&255,255&r,r>>8&255,r>>16&255,r>>24&255,255&n,n>>8&255,n>>16&255,n>>24&255,255&o,o>>8&255,o>>16&255,o>>24&255]},Md5.prototype.array=Md5.prototype.digest,Md5.prototype.arrayBuffer=function(){this.finalize();var e=new ArrayBuffer(16),t=new Uint32Array(e);return t[0]=this.h0,t[1]=this.h1,t[2]=this.h2,t[3]=this.h3,e},Md5.prototype.buffer=Md5.prototype.arrayBuffer,Md5.prototype.base64=function(){for(var e,t,r,n="",o=this.array(),i=0;i<15;)e=o[i++],t=o[i++],r=o[i++],n+=BASE64_ENCODE_CHAR[e>>>2]+BASE64_ENCODE_CHAR[63&(e<<4|t>>>4)]+BASE64_ENCODE_CHAR[63&(t<<2|r>>>6)]+BASE64_ENCODE_CHAR[63&r];return e=o[i],n+=BASE64_ENCODE_CHAR[e>>>2]+BASE64_ENCODE_CHAR[e<<4&63]+"=="};var exports=createMethod();COMMON_JS?module.exports=exports:(root.md5=exports,AMD&&(__WEBPACK_AMD_DEFINE_RESULT__=function(){return exports}.call(exports,__webpack_require__,exports,module),void 0===__WEBPACK_AMD_DEFINE_RESULT__||(module.exports=__WEBPACK_AMD_DEFINE_RESULT__)))})()}).call(this,__webpack_require__(3),__webpack_require__(13),__webpack_require__(4)(module))},function(e,t){var r;r=function(){return this}();try{r=r||new Function("return this")()}catch(e){"object"==typeof window&&(r=window)}e.exports=r},function(e,t){(function(t){e.exports=t}).call(this,{})},function(e,t,r){(function(e){var t,n,o,i,a,s,c,u=r(0),l=l||function(e,t){var r={},n=r.lib={},o=function(){},i=n.Base={extend:function(e){o.prototype=this;var t=new o;return e&&t.mixIn(e),t.hasOwnProperty("init")||(t.init=function(){t.$super.init.apply(this,arguments)}),t.init.prototype=t,t.$super=this,t},create:function(){var e=this.extend();return e.init.apply(e,arguments),e},init:function(){},mixIn:function(e){for(var t in e)e.hasOwnProperty(t)&&(this[t]=e[t]);e.hasOwnProperty("toString")&&(this.toString=e.toString)},clone:function(){return this.init.prototype.extend(this)}},a=n.WordArray=i.extend({init:function(e,t){e=this.words=e||[],this.sigBytes=null!=t?t:4*e.length},toString:function(e){return(e||c).stringify(this)},concat:function(e){var t=this.words,r=e.words,n=this.sigBytes;if(e=e.sigBytes,this.clamp(),n%4)for(var o=0;o>>2]|=(r[o>>>2]>>>24-o%4*8&255)<<24-(n+o)%4*8;else if(65535>>2]=r[o>>>2];else t.push.apply(t,r);return this.sigBytes+=e,this},clamp:function(){var t=this.words,r=this.sigBytes;t[r>>>2]&=4294967295<<32-r%4*8,t.length=e.ceil(r/4)},clone:function(){var e=i.clone.call(this);return e.words=this.words.slice(0),e},random:function(t){for(var r=[],n=0;n>>2]>>>24-n%4*8&255;r.push((o>>>4).toString(16)),r.push((15&o).toString(16))}return r.join("")},parse:function(e){for(var t=e.length,r=[],n=0;n>>3]|=parseInt(e.substr(n,2),16)<<24-n%8*4;return new a.init(r,t/2)}},u=s.Latin1={stringify:function(e){var t=e.words;e=e.sigBytes;for(var r=[],n=0;n>>2]>>>24-n%4*8&255));return r.join("")},parse:function(e){for(var t=e.length,r=[],n=0;n>>2]|=(255&e.charCodeAt(n))<<24-n%4*8;return new a.init(r,t)}},l=s.Utf8={stringify:function(e){try{return decodeURIComponent(escape(u.stringify(e)))}catch(e){throw Error("Malformed UTF-8 data")}},parse:function(e){return u.parse(unescape(encodeURIComponent(e)))}},d=n.BufferedBlockAlgorithm=i.extend({reset:function(){this._data=new a.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=l.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var r=this._data,n=r.words,o=r.sigBytes,i=this.blockSize,s=o/(4*i);if(t=(s=t?e.ceil(s):e.max((0|s)-this._minBufferSize,0))*i,o=e.min(4*t,o),t){for(var c=0;cu;u++){if(16>u)i[u]=0|e[t+u];else{var l=i[u-3]^i[u-8]^i[u-14]^i[u-16];i[u]=l<<1|l>>>31}l=(n<<5|n>>>27)+c+i[u],l=20>u?l+(1518500249+(o&a|~o&s)):40>u?l+(1859775393+(o^a^s)):60>u?l+((o&a|o&s|a&s)-1894007588):l+((o^a^s)-899497514),c=s,s=a,a=o<<30|o>>>2,o=n,n=l}r[0]=r[0]+n|0,r[1]=r[1]+o|0,r[2]=r[2]+a|0,r[3]=r[3]+s|0,r[4]=r[4]+c|0},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,n=8*e.sigBytes;return t[n>>>5]|=128<<24-n%32,t[14+(n+64>>>9<<4)]=Math.floor(r/4294967296),t[15+(n+64>>>9<<4)]=r,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=o.clone.call(this);return e._hash=this._hash.clone(),e}}),t.SHA1=o._createHelper(a),t.HmacSHA1=o._createHmacHelper(a),function(){var e=l,t=e.enc.Utf8;e.algo.HMAC=e.lib.Base.extend({init:function(e,r){e=this._hasher=new e.init,"string"==typeof r&&(r=t.parse(r));var n=e.blockSize,o=4*n;r.sigBytes>o&&(r=e.finalize(r)),r.clamp();for(var i=this._oKey=r.clone(),a=this._iKey=r.clone(),s=i.words,c=a.words,u=0;u>>2]>>>24-i%4*8&255)<<16|(t[i+1>>>2]>>>24-(i+1)%4*8&255)<<8|t[i+2>>>2]>>>24-(i+2)%4*8&255,s=0;s<4&&i+.75*s>>6*(3-s)&63));var c=n.charAt(64);if(c)for(;o.length%4;)o.push(c);return o.join("")},parse:function(e){var t=e.length,r=this._map,n=r.charAt(64);if(n){var o=e.indexOf(n);-1!=o&&(t=o)}for(var i=[],a=0,s=0;s>>6-s%4*2;i[a>>>2]|=(u|l)<<24-a%4*8,a++}return c.create(i,a)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="},"object"===u(e)?e.exports=l:window.CryptoJS=l}).call(this,r(4)(e))},function(e,t,r){var n=r(17).DOMParser,o=function(){this.version="1.3.5";var e={mergeCDATA:!0,normalize:!0,stripElemPrefix:!0},t=new RegExp(/(?!xmlns)^.*:/);new RegExp(/^\s+|\s+$/g);return this.grokType=function(e){return/^\s*$/.test(e)?null:/^(?:true|false)$/i.test(e)?"true"===e.toLowerCase():isFinite(e)?parseFloat(e):e},this.parseString=function(e,t){if(e){var r=this.stringToXML(e);return r.getElementsByTagName("parsererror").length?null:this.parseXML(r,t)}return null},this.parseXML=function(r,n){for(var i in n)e[i]=n[i];var a={},s=0,c="";if(r.childNodes.length)for(var u,l,d,p=0;p=t+r||t?new java.lang.String(e,t,r)+"":e}function m(e,t){e.currentElement?e.currentElement.appendChild(t):e.doc.appendChild(t)}p.prototype.parseFromString=function(e,t){var r=this.options,n=new l,o=r.domBuilder||new f,a=r.errorHandler,s=r.locator,u=r.xmlns||{},p=/\/x?html?$/.test(t),h=p?i.HTML_ENTITIES:i.XML_ENTITIES;s&&o.setDocumentLocator(s),n.errorHandler=function(e,t,r){if(!e){if(t instanceof f)return t;e=t}var n={},o=e instanceof Function;function i(t){var i=e[t];!i&&o&&(i=2==e.length?function(r){e(t,r)}:e),n[t]=i&&function(e){i("[xmldom "+t+"]\t"+e+function(e){if(e)return"\n@"+(e.systemId||"")+"#[line:"+e.lineNumber+",col:"+e.columnNumber+"]"}(r))}||function(){}}return r=r||{},i("warning"),i("error"),i("fatalError"),n}(a,o,s),n.domBuilder=r.domBuilder||o,p&&(u[""]=c.HTML),u.xml=u.xml||c.XML;var g=r.normalizeLineEndings||d;return e&&"string"==typeof e?n.parse(g(e),u,h):n.errorHandler.error("invalid doc source"),o.doc},f.prototype={startDocument:function(){this.doc=(new s).createDocument(null,null,null),this.locator&&(this.doc.documentURI=this.locator.systemId)},startElement:function(e,t,r,n){var o=this.doc,i=o.createElementNS(e,r||t),a=n.length;m(this,i),this.currentElement=i,this.locator&&h(this.locator,i);for(var s=0;s",lt:"<",quot:'"'}),t.HTML_ENTITIES=n({Aacute:"Á",aacute:"á",Abreve:"Ă",abreve:"ă",ac:"∾",acd:"∿",acE:"∾̳",Acirc:"Â",acirc:"â",acute:"´",Acy:"А",acy:"а",AElig:"Æ",aelig:"æ",af:"",Afr:"𝔄",afr:"𝔞",Agrave:"À",agrave:"à",alefsym:"ℵ",aleph:"ℵ",Alpha:"Α",alpha:"α",Amacr:"Ā",amacr:"ā",amalg:"⨿",AMP:"&",amp:"&",And:"⩓",and:"∧",andand:"⩕",andd:"⩜",andslope:"⩘",andv:"⩚",ang:"∠",ange:"⦤",angle:"∠",angmsd:"∡",angmsdaa:"⦨",angmsdab:"⦩",angmsdac:"⦪",angmsdad:"⦫",angmsdae:"⦬",angmsdaf:"⦭",angmsdag:"⦮",angmsdah:"⦯",angrt:"∟",angrtvb:"⊾",angrtvbd:"⦝",angsph:"∢",angst:"Å",angzarr:"⍼",Aogon:"Ą",aogon:"ą",Aopf:"𝔸",aopf:"𝕒",ap:"≈",apacir:"⩯",apE:"⩰",ape:"≊",apid:"≋",apos:"'",ApplyFunction:"",approx:"≈",approxeq:"≊",Aring:"Å",aring:"å",Ascr:"𝒜",ascr:"𝒶",Assign:"≔",ast:"*",asymp:"≈",asympeq:"≍",Atilde:"Ã",atilde:"ã",Auml:"Ä",auml:"ä",awconint:"∳",awint:"⨑",backcong:"≌",backepsilon:"϶",backprime:"‵",backsim:"∽",backsimeq:"⋍",Backslash:"∖",Barv:"⫧",barvee:"⊽",Barwed:"⌆",barwed:"⌅",barwedge:"⌅",bbrk:"⎵",bbrktbrk:"⎶",bcong:"≌",Bcy:"Б",bcy:"б",bdquo:"„",becaus:"∵",Because:"∵",because:"∵",bemptyv:"⦰",bepsi:"϶",bernou:"ℬ",Bernoullis:"ℬ",Beta:"Β",beta:"β",beth:"ℶ",between:"≬",Bfr:"𝔅",bfr:"𝔟",bigcap:"⋂",bigcirc:"◯",bigcup:"⋃",bigodot:"⨀",bigoplus:"⨁",bigotimes:"⨂",bigsqcup:"⨆",bigstar:"★",bigtriangledown:"▽",bigtriangleup:"△",biguplus:"⨄",bigvee:"⋁",bigwedge:"⋀",bkarow:"⤍",blacklozenge:"⧫",blacksquare:"▪",blacktriangle:"▴",blacktriangledown:"▾",blacktriangleleft:"◂",blacktriangleright:"▸",blank:"␣",blk12:"▒",blk14:"░",blk34:"▓",block:"█",bne:"=⃥",bnequiv:"≡⃥",bNot:"⫭",bnot:"⌐",Bopf:"𝔹",bopf:"𝕓",bot:"⊥",bottom:"⊥",bowtie:"⋈",boxbox:"⧉",boxDL:"╗",boxDl:"╖",boxdL:"╕",boxdl:"┐",boxDR:"╔",boxDr:"╓",boxdR:"╒",boxdr:"┌",boxH:"═",boxh:"─",boxHD:"╦",boxHd:"╤",boxhD:"╥",boxhd:"┬",boxHU:"╩",boxHu:"╧",boxhU:"╨",boxhu:"┴",boxminus:"⊟",boxplus:"⊞",boxtimes:"⊠",boxUL:"╝",boxUl:"╜",boxuL:"╛",boxul:"┘",boxUR:"╚",boxUr:"╙",boxuR:"╘",boxur:"└",boxV:"║",boxv:"│",boxVH:"╬",boxVh:"╫",boxvH:"╪",boxvh:"┼",boxVL:"╣",boxVl:"╢",boxvL:"╡",boxvl:"┤",boxVR:"╠",boxVr:"╟",boxvR:"╞",boxvr:"├",bprime:"‵",Breve:"˘",breve:"˘",brvbar:"¦",Bscr:"ℬ",bscr:"𝒷",bsemi:"⁏",bsim:"∽",bsime:"⋍",bsol:"\\",bsolb:"⧅",bsolhsub:"⟈",bull:"•",bullet:"•",bump:"≎",bumpE:"⪮",bumpe:"≏",Bumpeq:"≎",bumpeq:"≏",Cacute:"Ć",cacute:"ć",Cap:"⋒",cap:"∩",capand:"⩄",capbrcup:"⩉",capcap:"⩋",capcup:"⩇",capdot:"⩀",CapitalDifferentialD:"ⅅ",caps:"∩︀",caret:"⁁",caron:"ˇ",Cayleys:"ℭ",ccaps:"⩍",Ccaron:"Č",ccaron:"č",Ccedil:"Ç",ccedil:"ç",Ccirc:"Ĉ",ccirc:"ĉ",Cconint:"∰",ccups:"⩌",ccupssm:"⩐",Cdot:"Ċ",cdot:"ċ",cedil:"¸",Cedilla:"¸",cemptyv:"⦲",cent:"¢",CenterDot:"·",centerdot:"·",Cfr:"ℭ",cfr:"𝔠",CHcy:"Ч",chcy:"ч",check:"✓",checkmark:"✓",Chi:"Χ",chi:"χ",cir:"○",circ:"ˆ",circeq:"≗",circlearrowleft:"↺",circlearrowright:"↻",circledast:"⊛",circledcirc:"⊚",circleddash:"⊝",CircleDot:"⊙",circledR:"®",circledS:"Ⓢ",CircleMinus:"⊖",CirclePlus:"⊕",CircleTimes:"⊗",cirE:"⧃",cire:"≗",cirfnint:"⨐",cirmid:"⫯",cirscir:"⧂",ClockwiseContourIntegral:"∲",CloseCurlyDoubleQuote:"”",CloseCurlyQuote:"’",clubs:"♣",clubsuit:"♣",Colon:"∷",colon:":",Colone:"⩴",colone:"≔",coloneq:"≔",comma:",",commat:"@",comp:"∁",compfn:"∘",complement:"∁",complexes:"ℂ",cong:"≅",congdot:"⩭",Congruent:"≡",Conint:"∯",conint:"∮",ContourIntegral:"∮",Copf:"ℂ",copf:"𝕔",coprod:"∐",Coproduct:"∐",COPY:"©",copy:"©",copysr:"℗",CounterClockwiseContourIntegral:"∳",crarr:"↵",Cross:"⨯",cross:"✗",Cscr:"𝒞",cscr:"𝒸",csub:"⫏",csube:"⫑",csup:"⫐",csupe:"⫒",ctdot:"⋯",cudarrl:"⤸",cudarrr:"⤵",cuepr:"⋞",cuesc:"⋟",cularr:"↶",cularrp:"⤽",Cup:"⋓",cup:"∪",cupbrcap:"⩈",CupCap:"≍",cupcap:"⩆",cupcup:"⩊",cupdot:"⊍",cupor:"⩅",cups:"∪︀",curarr:"↷",curarrm:"⤼",curlyeqprec:"⋞",curlyeqsucc:"⋟",curlyvee:"⋎",curlywedge:"⋏",curren:"¤",curvearrowleft:"↶",curvearrowright:"↷",cuvee:"⋎",cuwed:"⋏",cwconint:"∲",cwint:"∱",cylcty:"⌭",Dagger:"‡",dagger:"†",daleth:"ℸ",Darr:"↡",dArr:"⇓",darr:"↓",dash:"‐",Dashv:"⫤",dashv:"⊣",dbkarow:"⤏",dblac:"˝",Dcaron:"Ď",dcaron:"ď",Dcy:"Д",dcy:"д",DD:"ⅅ",dd:"ⅆ",ddagger:"‡",ddarr:"⇊",DDotrahd:"⤑",ddotseq:"⩷",deg:"°",Del:"∇",Delta:"Δ",delta:"δ",demptyv:"⦱",dfisht:"⥿",Dfr:"𝔇",dfr:"𝔡",dHar:"⥥",dharl:"⇃",dharr:"⇂",DiacriticalAcute:"´",DiacriticalDot:"˙",DiacriticalDoubleAcute:"˝",DiacriticalGrave:"`",DiacriticalTilde:"˜",diam:"⋄",Diamond:"⋄",diamond:"⋄",diamondsuit:"♦",diams:"♦",die:"¨",DifferentialD:"ⅆ",digamma:"ϝ",disin:"⋲",div:"÷",divide:"÷",divideontimes:"⋇",divonx:"⋇",DJcy:"Ђ",djcy:"ђ",dlcorn:"⌞",dlcrop:"⌍",dollar:"$",Dopf:"𝔻",dopf:"𝕕",Dot:"¨",dot:"˙",DotDot:"⃜",doteq:"≐",doteqdot:"≑",DotEqual:"≐",dotminus:"∸",dotplus:"∔",dotsquare:"⊡",doublebarwedge:"⌆",DoubleContourIntegral:"∯",DoubleDot:"¨",DoubleDownArrow:"⇓",DoubleLeftArrow:"⇐",DoubleLeftRightArrow:"⇔",DoubleLeftTee:"⫤",DoubleLongLeftArrow:"⟸",DoubleLongLeftRightArrow:"⟺",DoubleLongRightArrow:"⟹",DoubleRightArrow:"⇒",DoubleRightTee:"⊨",DoubleUpArrow:"⇑",DoubleUpDownArrow:"⇕",DoubleVerticalBar:"∥",DownArrow:"↓",Downarrow:"⇓",downarrow:"↓",DownArrowBar:"⤓",DownArrowUpArrow:"⇵",DownBreve:"̑",downdownarrows:"⇊",downharpoonleft:"⇃",downharpoonright:"⇂",DownLeftRightVector:"⥐",DownLeftTeeVector:"⥞",DownLeftVector:"↽",DownLeftVectorBar:"⥖",DownRightTeeVector:"⥟",DownRightVector:"⇁",DownRightVectorBar:"⥗",DownTee:"⊤",DownTeeArrow:"↧",drbkarow:"⤐",drcorn:"⌟",drcrop:"⌌",Dscr:"𝒟",dscr:"𝒹",DScy:"Ѕ",dscy:"ѕ",dsol:"⧶",Dstrok:"Đ",dstrok:"đ",dtdot:"⋱",dtri:"▿",dtrif:"▾",duarr:"⇵",duhar:"⥯",dwangle:"⦦",DZcy:"Џ",dzcy:"џ",dzigrarr:"⟿",Eacute:"É",eacute:"é",easter:"⩮",Ecaron:"Ě",ecaron:"ě",ecir:"≖",Ecirc:"Ê",ecirc:"ê",ecolon:"≕",Ecy:"Э",ecy:"э",eDDot:"⩷",Edot:"Ė",eDot:"≑",edot:"ė",ee:"ⅇ",efDot:"≒",Efr:"𝔈",efr:"𝔢",eg:"⪚",Egrave:"È",egrave:"è",egs:"⪖",egsdot:"⪘",el:"⪙",Element:"∈",elinters:"⏧",ell:"ℓ",els:"⪕",elsdot:"⪗",Emacr:"Ē",emacr:"ē",empty:"∅",emptyset:"∅",EmptySmallSquare:"◻",emptyv:"∅",EmptyVerySmallSquare:"▫",emsp:" ",emsp13:" ",emsp14:" ",ENG:"Ŋ",eng:"ŋ",ensp:" ",Eogon:"Ę",eogon:"ę",Eopf:"𝔼",eopf:"𝕖",epar:"⋕",eparsl:"⧣",eplus:"⩱",epsi:"ε",Epsilon:"Ε",epsilon:"ε",epsiv:"ϵ",eqcirc:"≖",eqcolon:"≕",eqsim:"≂",eqslantgtr:"⪖",eqslantless:"⪕",Equal:"⩵",equals:"=",EqualTilde:"≂",equest:"≟",Equilibrium:"⇌",equiv:"≡",equivDD:"⩸",eqvparsl:"⧥",erarr:"⥱",erDot:"≓",Escr:"ℰ",escr:"ℯ",esdot:"≐",Esim:"⩳",esim:"≂",Eta:"Η",eta:"η",ETH:"Ð",eth:"ð",Euml:"Ë",euml:"ë",euro:"€",excl:"!",exist:"∃",Exists:"∃",expectation:"ℰ",ExponentialE:"ⅇ",exponentiale:"ⅇ",fallingdotseq:"≒",Fcy:"Ф",fcy:"ф",female:"♀",ffilig:"ffi",fflig:"ff",ffllig:"ffl",Ffr:"𝔉",ffr:"𝔣",filig:"fi",FilledSmallSquare:"◼",FilledVerySmallSquare:"▪",fjlig:"fj",flat:"♭",fllig:"fl",fltns:"▱",fnof:"ƒ",Fopf:"𝔽",fopf:"𝕗",ForAll:"∀",forall:"∀",fork:"⋔",forkv:"⫙",Fouriertrf:"ℱ",fpartint:"⨍",frac12:"½",frac13:"⅓",frac14:"¼",frac15:"⅕",frac16:"⅙",frac18:"⅛",frac23:"⅔",frac25:"⅖",frac34:"¾",frac35:"⅗",frac38:"⅜",frac45:"⅘",frac56:"⅚",frac58:"⅝",frac78:"⅞",frasl:"⁄",frown:"⌢",Fscr:"ℱ",fscr:"𝒻",gacute:"ǵ",Gamma:"Γ",gamma:"γ",Gammad:"Ϝ",gammad:"ϝ",gap:"⪆",Gbreve:"Ğ",gbreve:"ğ",Gcedil:"Ģ",Gcirc:"Ĝ",gcirc:"ĝ",Gcy:"Г",gcy:"г",Gdot:"Ġ",gdot:"ġ",gE:"≧",ge:"≥",gEl:"⪌",gel:"⋛",geq:"≥",geqq:"≧",geqslant:"⩾",ges:"⩾",gescc:"⪩",gesdot:"⪀",gesdoto:"⪂",gesdotol:"⪄",gesl:"⋛︀",gesles:"⪔",Gfr:"𝔊",gfr:"𝔤",Gg:"⋙",gg:"≫",ggg:"⋙",gimel:"ℷ",GJcy:"Ѓ",gjcy:"ѓ",gl:"≷",gla:"⪥",glE:"⪒",glj:"⪤",gnap:"⪊",gnapprox:"⪊",gnE:"≩",gne:"⪈",gneq:"⪈",gneqq:"≩",gnsim:"⋧",Gopf:"𝔾",gopf:"𝕘",grave:"`",GreaterEqual:"≥",GreaterEqualLess:"⋛",GreaterFullEqual:"≧",GreaterGreater:"⪢",GreaterLess:"≷",GreaterSlantEqual:"⩾",GreaterTilde:"≳",Gscr:"𝒢",gscr:"ℊ",gsim:"≳",gsime:"⪎",gsiml:"⪐",Gt:"≫",GT:">",gt:">",gtcc:"⪧",gtcir:"⩺",gtdot:"⋗",gtlPar:"⦕",gtquest:"⩼",gtrapprox:"⪆",gtrarr:"⥸",gtrdot:"⋗",gtreqless:"⋛",gtreqqless:"⪌",gtrless:"≷",gtrsim:"≳",gvertneqq:"≩︀",gvnE:"≩︀",Hacek:"ˇ",hairsp:" ",half:"½",hamilt:"ℋ",HARDcy:"Ъ",hardcy:"ъ",hArr:"⇔",harr:"↔",harrcir:"⥈",harrw:"↭",Hat:"^",hbar:"ℏ",Hcirc:"Ĥ",hcirc:"ĥ",hearts:"♥",heartsuit:"♥",hellip:"…",hercon:"⊹",Hfr:"ℌ",hfr:"𝔥",HilbertSpace:"ℋ",hksearow:"⤥",hkswarow:"⤦",hoarr:"⇿",homtht:"∻",hookleftarrow:"↩",hookrightarrow:"↪",Hopf:"ℍ",hopf:"𝕙",horbar:"―",HorizontalLine:"─",Hscr:"ℋ",hscr:"𝒽",hslash:"ℏ",Hstrok:"Ħ",hstrok:"ħ",HumpDownHump:"≎",HumpEqual:"≏",hybull:"⁃",hyphen:"‐",Iacute:"Í",iacute:"í",ic:"",Icirc:"Î",icirc:"î",Icy:"И",icy:"и",Idot:"İ",IEcy:"Е",iecy:"е",iexcl:"¡",iff:"⇔",Ifr:"ℑ",ifr:"𝔦",Igrave:"Ì",igrave:"ì",ii:"ⅈ",iiiint:"⨌",iiint:"∭",iinfin:"⧜",iiota:"℩",IJlig:"IJ",ijlig:"ij",Im:"ℑ",Imacr:"Ī",imacr:"ī",image:"ℑ",ImaginaryI:"ⅈ",imagline:"ℐ",imagpart:"ℑ",imath:"ı",imof:"⊷",imped:"Ƶ",Implies:"⇒",in:"∈",incare:"℅",infin:"∞",infintie:"⧝",inodot:"ı",Int:"∬",int:"∫",intcal:"⊺",integers:"ℤ",Integral:"∫",intercal:"⊺",Intersection:"⋂",intlarhk:"⨗",intprod:"⨼",InvisibleComma:"",InvisibleTimes:"",IOcy:"Ё",iocy:"ё",Iogon:"Į",iogon:"į",Iopf:"𝕀",iopf:"𝕚",Iota:"Ι",iota:"ι",iprod:"⨼",iquest:"¿",Iscr:"ℐ",iscr:"𝒾",isin:"∈",isindot:"⋵",isinE:"⋹",isins:"⋴",isinsv:"⋳",isinv:"∈",it:"",Itilde:"Ĩ",itilde:"ĩ",Iukcy:"І",iukcy:"і",Iuml:"Ï",iuml:"ï",Jcirc:"Ĵ",jcirc:"ĵ",Jcy:"Й",jcy:"й",Jfr:"𝔍",jfr:"𝔧",jmath:"ȷ",Jopf:"𝕁",jopf:"𝕛",Jscr:"𝒥",jscr:"𝒿",Jsercy:"Ј",jsercy:"ј",Jukcy:"Є",jukcy:"є",Kappa:"Κ",kappa:"κ",kappav:"ϰ",Kcedil:"Ķ",kcedil:"ķ",Kcy:"К",kcy:"к",Kfr:"𝔎",kfr:"𝔨",kgreen:"ĸ",KHcy:"Х",khcy:"х",KJcy:"Ќ",kjcy:"ќ",Kopf:"𝕂",kopf:"𝕜",Kscr:"𝒦",kscr:"𝓀",lAarr:"⇚",Lacute:"Ĺ",lacute:"ĺ",laemptyv:"⦴",lagran:"ℒ",Lambda:"Λ",lambda:"λ",Lang:"⟪",lang:"⟨",langd:"⦑",langle:"⟨",lap:"⪅",Laplacetrf:"ℒ",laquo:"«",Larr:"↞",lArr:"⇐",larr:"←",larrb:"⇤",larrbfs:"⤟",larrfs:"⤝",larrhk:"↩",larrlp:"↫",larrpl:"⤹",larrsim:"⥳",larrtl:"↢",lat:"⪫",lAtail:"⤛",latail:"⤙",late:"⪭",lates:"⪭︀",lBarr:"⤎",lbarr:"⤌",lbbrk:"❲",lbrace:"{",lbrack:"[",lbrke:"⦋",lbrksld:"⦏",lbrkslu:"⦍",Lcaron:"Ľ",lcaron:"ľ",Lcedil:"Ļ",lcedil:"ļ",lceil:"⌈",lcub:"{",Lcy:"Л",lcy:"л",ldca:"⤶",ldquo:"“",ldquor:"„",ldrdhar:"⥧",ldrushar:"⥋",ldsh:"↲",lE:"≦",le:"≤",LeftAngleBracket:"⟨",LeftArrow:"←",Leftarrow:"⇐",leftarrow:"←",LeftArrowBar:"⇤",LeftArrowRightArrow:"⇆",leftarrowtail:"↢",LeftCeiling:"⌈",LeftDoubleBracket:"⟦",LeftDownTeeVector:"⥡",LeftDownVector:"⇃",LeftDownVectorBar:"⥙",LeftFloor:"⌊",leftharpoondown:"↽",leftharpoonup:"↼",leftleftarrows:"⇇",LeftRightArrow:"↔",Leftrightarrow:"⇔",leftrightarrow:"↔",leftrightarrows:"⇆",leftrightharpoons:"⇋",leftrightsquigarrow:"↭",LeftRightVector:"⥎",LeftTee:"⊣",LeftTeeArrow:"↤",LeftTeeVector:"⥚",leftthreetimes:"⋋",LeftTriangle:"⊲",LeftTriangleBar:"⧏",LeftTriangleEqual:"⊴",LeftUpDownVector:"⥑",LeftUpTeeVector:"⥠",LeftUpVector:"↿",LeftUpVectorBar:"⥘",LeftVector:"↼",LeftVectorBar:"⥒",lEg:"⪋",leg:"⋚",leq:"≤",leqq:"≦",leqslant:"⩽",les:"⩽",lescc:"⪨",lesdot:"⩿",lesdoto:"⪁",lesdotor:"⪃",lesg:"⋚︀",lesges:"⪓",lessapprox:"⪅",lessdot:"⋖",lesseqgtr:"⋚",lesseqqgtr:"⪋",LessEqualGreater:"⋚",LessFullEqual:"≦",LessGreater:"≶",lessgtr:"≶",LessLess:"⪡",lesssim:"≲",LessSlantEqual:"⩽",LessTilde:"≲",lfisht:"⥼",lfloor:"⌊",Lfr:"𝔏",lfr:"𝔩",lg:"≶",lgE:"⪑",lHar:"⥢",lhard:"↽",lharu:"↼",lharul:"⥪",lhblk:"▄",LJcy:"Љ",ljcy:"љ",Ll:"⋘",ll:"≪",llarr:"⇇",llcorner:"⌞",Lleftarrow:"⇚",llhard:"⥫",lltri:"◺",Lmidot:"Ŀ",lmidot:"ŀ",lmoust:"⎰",lmoustache:"⎰",lnap:"⪉",lnapprox:"⪉",lnE:"≨",lne:"⪇",lneq:"⪇",lneqq:"≨",lnsim:"⋦",loang:"⟬",loarr:"⇽",lobrk:"⟦",LongLeftArrow:"⟵",Longleftarrow:"⟸",longleftarrow:"⟵",LongLeftRightArrow:"⟷",Longleftrightarrow:"⟺",longleftrightarrow:"⟷",longmapsto:"⟼",LongRightArrow:"⟶",Longrightarrow:"⟹",longrightarrow:"⟶",looparrowleft:"↫",looparrowright:"↬",lopar:"⦅",Lopf:"𝕃",lopf:"𝕝",loplus:"⨭",lotimes:"⨴",lowast:"∗",lowbar:"_",LowerLeftArrow:"↙",LowerRightArrow:"↘",loz:"◊",lozenge:"◊",lozf:"⧫",lpar:"(",lparlt:"⦓",lrarr:"⇆",lrcorner:"⌟",lrhar:"⇋",lrhard:"⥭",lrm:"",lrtri:"⊿",lsaquo:"‹",Lscr:"ℒ",lscr:"𝓁",Lsh:"↰",lsh:"↰",lsim:"≲",lsime:"⪍",lsimg:"⪏",lsqb:"[",lsquo:"‘",lsquor:"‚",Lstrok:"Ł",lstrok:"ł",Lt:"≪",LT:"<",lt:"<",ltcc:"⪦",ltcir:"⩹",ltdot:"⋖",lthree:"⋋",ltimes:"⋉",ltlarr:"⥶",ltquest:"⩻",ltri:"◃",ltrie:"⊴",ltrif:"◂",ltrPar:"⦖",lurdshar:"⥊",luruhar:"⥦",lvertneqq:"≨︀",lvnE:"≨︀",macr:"¯",male:"♂",malt:"✠",maltese:"✠",Map:"⤅",map:"↦",mapsto:"↦",mapstodown:"↧",mapstoleft:"↤",mapstoup:"↥",marker:"▮",mcomma:"⨩",Mcy:"М",mcy:"м",mdash:"—",mDDot:"∺",measuredangle:"∡",MediumSpace:" ",Mellintrf:"ℳ",Mfr:"𝔐",mfr:"𝔪",mho:"℧",micro:"µ",mid:"∣",midast:"*",midcir:"⫰",middot:"·",minus:"−",minusb:"⊟",minusd:"∸",minusdu:"⨪",MinusPlus:"∓",mlcp:"⫛",mldr:"…",mnplus:"∓",models:"⊧",Mopf:"𝕄",mopf:"𝕞",mp:"∓",Mscr:"ℳ",mscr:"𝓂",mstpos:"∾",Mu:"Μ",mu:"μ",multimap:"⊸",mumap:"⊸",nabla:"∇",Nacute:"Ń",nacute:"ń",nang:"∠⃒",nap:"≉",napE:"⩰̸",napid:"≋̸",napos:"ʼn",napprox:"≉",natur:"♮",natural:"♮",naturals:"ℕ",nbsp:" ",nbump:"≎̸",nbumpe:"≏̸",ncap:"⩃",Ncaron:"Ň",ncaron:"ň",Ncedil:"Ņ",ncedil:"ņ",ncong:"≇",ncongdot:"⩭̸",ncup:"⩂",Ncy:"Н",ncy:"н",ndash:"–",ne:"≠",nearhk:"⤤",neArr:"⇗",nearr:"↗",nearrow:"↗",nedot:"≐̸",NegativeMediumSpace:"",NegativeThickSpace:"",NegativeThinSpace:"",NegativeVeryThinSpace:"",nequiv:"≢",nesear:"⤨",nesim:"≂̸",NestedGreaterGreater:"≫",NestedLessLess:"≪",NewLine:"\n",nexist:"∄",nexists:"∄",Nfr:"𝔑",nfr:"𝔫",ngE:"≧̸",nge:"≱",ngeq:"≱",ngeqq:"≧̸",ngeqslant:"⩾̸",nges:"⩾̸",nGg:"⋙̸",ngsim:"≵",nGt:"≫⃒",ngt:"≯",ngtr:"≯",nGtv:"≫̸",nhArr:"⇎",nharr:"↮",nhpar:"⫲",ni:"∋",nis:"⋼",nisd:"⋺",niv:"∋",NJcy:"Њ",njcy:"њ",nlArr:"⇍",nlarr:"↚",nldr:"‥",nlE:"≦̸",nle:"≰",nLeftarrow:"⇍",nleftarrow:"↚",nLeftrightarrow:"⇎",nleftrightarrow:"↮",nleq:"≰",nleqq:"≦̸",nleqslant:"⩽̸",nles:"⩽̸",nless:"≮",nLl:"⋘̸",nlsim:"≴",nLt:"≪⃒",nlt:"≮",nltri:"⋪",nltrie:"⋬",nLtv:"≪̸",nmid:"∤",NoBreak:"",NonBreakingSpace:" ",Nopf:"ℕ",nopf:"𝕟",Not:"⫬",not:"¬",NotCongruent:"≢",NotCupCap:"≭",NotDoubleVerticalBar:"∦",NotElement:"∉",NotEqual:"≠",NotEqualTilde:"≂̸",NotExists:"∄",NotGreater:"≯",NotGreaterEqual:"≱",NotGreaterFullEqual:"≧̸",NotGreaterGreater:"≫̸",NotGreaterLess:"≹",NotGreaterSlantEqual:"⩾̸",NotGreaterTilde:"≵",NotHumpDownHump:"≎̸",NotHumpEqual:"≏̸",notin:"∉",notindot:"⋵̸",notinE:"⋹̸",notinva:"∉",notinvb:"⋷",notinvc:"⋶",NotLeftTriangle:"⋪",NotLeftTriangleBar:"⧏̸",NotLeftTriangleEqual:"⋬",NotLess:"≮",NotLessEqual:"≰",NotLessGreater:"≸",NotLessLess:"≪̸",NotLessSlantEqual:"⩽̸",NotLessTilde:"≴",NotNestedGreaterGreater:"⪢̸",NotNestedLessLess:"⪡̸",notni:"∌",notniva:"∌",notnivb:"⋾",notnivc:"⋽",NotPrecedes:"⊀",NotPrecedesEqual:"⪯̸",NotPrecedesSlantEqual:"⋠",NotReverseElement:"∌",NotRightTriangle:"⋫",NotRightTriangleBar:"⧐̸",NotRightTriangleEqual:"⋭",NotSquareSubset:"⊏̸",NotSquareSubsetEqual:"⋢",NotSquareSuperset:"⊐̸",NotSquareSupersetEqual:"⋣",NotSubset:"⊂⃒",NotSubsetEqual:"⊈",NotSucceeds:"⊁",NotSucceedsEqual:"⪰̸",NotSucceedsSlantEqual:"⋡",NotSucceedsTilde:"≿̸",NotSuperset:"⊃⃒",NotSupersetEqual:"⊉",NotTilde:"≁",NotTildeEqual:"≄",NotTildeFullEqual:"≇",NotTildeTilde:"≉",NotVerticalBar:"∤",npar:"∦",nparallel:"∦",nparsl:"⫽⃥",npart:"∂̸",npolint:"⨔",npr:"⊀",nprcue:"⋠",npre:"⪯̸",nprec:"⊀",npreceq:"⪯̸",nrArr:"⇏",nrarr:"↛",nrarrc:"⤳̸",nrarrw:"↝̸",nRightarrow:"⇏",nrightarrow:"↛",nrtri:"⋫",nrtrie:"⋭",nsc:"⊁",nsccue:"⋡",nsce:"⪰̸",Nscr:"𝒩",nscr:"𝓃",nshortmid:"∤",nshortparallel:"∦",nsim:"≁",nsime:"≄",nsimeq:"≄",nsmid:"∤",nspar:"∦",nsqsube:"⋢",nsqsupe:"⋣",nsub:"⊄",nsubE:"⫅̸",nsube:"⊈",nsubset:"⊂⃒",nsubseteq:"⊈",nsubseteqq:"⫅̸",nsucc:"⊁",nsucceq:"⪰̸",nsup:"⊅",nsupE:"⫆̸",nsupe:"⊉",nsupset:"⊃⃒",nsupseteq:"⊉",nsupseteqq:"⫆̸",ntgl:"≹",Ntilde:"Ñ",ntilde:"ñ",ntlg:"≸",ntriangleleft:"⋪",ntrianglelefteq:"⋬",ntriangleright:"⋫",ntrianglerighteq:"⋭",Nu:"Ν",nu:"ν",num:"#",numero:"№",numsp:" ",nvap:"≍⃒",nVDash:"⊯",nVdash:"⊮",nvDash:"⊭",nvdash:"⊬",nvge:"≥⃒",nvgt:">⃒",nvHarr:"⤄",nvinfin:"⧞",nvlArr:"⤂",nvle:"≤⃒",nvlt:"<⃒",nvltrie:"⊴⃒",nvrArr:"⤃",nvrtrie:"⊵⃒",nvsim:"∼⃒",nwarhk:"⤣",nwArr:"⇖",nwarr:"↖",nwarrow:"↖",nwnear:"⤧",Oacute:"Ó",oacute:"ó",oast:"⊛",ocir:"⊚",Ocirc:"Ô",ocirc:"ô",Ocy:"О",ocy:"о",odash:"⊝",Odblac:"Ő",odblac:"ő",odiv:"⨸",odot:"⊙",odsold:"⦼",OElig:"Œ",oelig:"œ",ofcir:"⦿",Ofr:"𝔒",ofr:"𝔬",ogon:"˛",Ograve:"Ò",ograve:"ò",ogt:"⧁",ohbar:"⦵",ohm:"Ω",oint:"∮",olarr:"↺",olcir:"⦾",olcross:"⦻",oline:"‾",olt:"⧀",Omacr:"Ō",omacr:"ō",Omega:"Ω",omega:"ω",Omicron:"Ο",omicron:"ο",omid:"⦶",ominus:"⊖",Oopf:"𝕆",oopf:"𝕠",opar:"⦷",OpenCurlyDoubleQuote:"“",OpenCurlyQuote:"‘",operp:"⦹",oplus:"⊕",Or:"⩔",or:"∨",orarr:"↻",ord:"⩝",order:"ℴ",orderof:"ℴ",ordf:"ª",ordm:"º",origof:"⊶",oror:"⩖",orslope:"⩗",orv:"⩛",oS:"Ⓢ",Oscr:"𝒪",oscr:"ℴ",Oslash:"Ø",oslash:"ø",osol:"⊘",Otilde:"Õ",otilde:"õ",Otimes:"⨷",otimes:"⊗",otimesas:"⨶",Ouml:"Ö",ouml:"ö",ovbar:"⌽",OverBar:"‾",OverBrace:"⏞",OverBracket:"⎴",OverParenthesis:"⏜",par:"∥",para:"¶",parallel:"∥",parsim:"⫳",parsl:"⫽",part:"∂",PartialD:"∂",Pcy:"П",pcy:"п",percnt:"%",period:".",permil:"‰",perp:"⊥",pertenk:"‱",Pfr:"𝔓",pfr:"𝔭",Phi:"Φ",phi:"φ",phiv:"ϕ",phmmat:"ℳ",phone:"☎",Pi:"Π",pi:"π",pitchfork:"⋔",piv:"ϖ",planck:"ℏ",planckh:"ℎ",plankv:"ℏ",plus:"+",plusacir:"⨣",plusb:"⊞",pluscir:"⨢",plusdo:"∔",plusdu:"⨥",pluse:"⩲",PlusMinus:"±",plusmn:"±",plussim:"⨦",plustwo:"⨧",pm:"±",Poincareplane:"ℌ",pointint:"⨕",Popf:"ℙ",popf:"𝕡",pound:"£",Pr:"⪻",pr:"≺",prap:"⪷",prcue:"≼",prE:"⪳",pre:"⪯",prec:"≺",precapprox:"⪷",preccurlyeq:"≼",Precedes:"≺",PrecedesEqual:"⪯",PrecedesSlantEqual:"≼",PrecedesTilde:"≾",preceq:"⪯",precnapprox:"⪹",precneqq:"⪵",precnsim:"⋨",precsim:"≾",Prime:"″",prime:"′",primes:"ℙ",prnap:"⪹",prnE:"⪵",prnsim:"⋨",prod:"∏",Product:"∏",profalar:"⌮",profline:"⌒",profsurf:"⌓",prop:"∝",Proportion:"∷",Proportional:"∝",propto:"∝",prsim:"≾",prurel:"⊰",Pscr:"𝒫",pscr:"𝓅",Psi:"Ψ",psi:"ψ",puncsp:" ",Qfr:"𝔔",qfr:"𝔮",qint:"⨌",Qopf:"ℚ",qopf:"𝕢",qprime:"⁗",Qscr:"𝒬",qscr:"𝓆",quaternions:"ℍ",quatint:"⨖",quest:"?",questeq:"≟",QUOT:'"',quot:'"',rAarr:"⇛",race:"∽̱",Racute:"Ŕ",racute:"ŕ",radic:"√",raemptyv:"⦳",Rang:"⟫",rang:"⟩",rangd:"⦒",range:"⦥",rangle:"⟩",raquo:"»",Rarr:"↠",rArr:"⇒",rarr:"→",rarrap:"⥵",rarrb:"⇥",rarrbfs:"⤠",rarrc:"⤳",rarrfs:"⤞",rarrhk:"↪",rarrlp:"↬",rarrpl:"⥅",rarrsim:"⥴",Rarrtl:"⤖",rarrtl:"↣",rarrw:"↝",rAtail:"⤜",ratail:"⤚",ratio:"∶",rationals:"ℚ",RBarr:"⤐",rBarr:"⤏",rbarr:"⤍",rbbrk:"❳",rbrace:"}",rbrack:"]",rbrke:"⦌",rbrksld:"⦎",rbrkslu:"⦐",Rcaron:"Ř",rcaron:"ř",Rcedil:"Ŗ",rcedil:"ŗ",rceil:"⌉",rcub:"}",Rcy:"Р",rcy:"р",rdca:"⤷",rdldhar:"⥩",rdquo:"”",rdquor:"”",rdsh:"↳",Re:"ℜ",real:"ℜ",realine:"ℛ",realpart:"ℜ",reals:"ℝ",rect:"▭",REG:"®",reg:"®",ReverseElement:"∋",ReverseEquilibrium:"⇋",ReverseUpEquilibrium:"⥯",rfisht:"⥽",rfloor:"⌋",Rfr:"ℜ",rfr:"𝔯",rHar:"⥤",rhard:"⇁",rharu:"⇀",rharul:"⥬",Rho:"Ρ",rho:"ρ",rhov:"ϱ",RightAngleBracket:"⟩",RightArrow:"→",Rightarrow:"⇒",rightarrow:"→",RightArrowBar:"⇥",RightArrowLeftArrow:"⇄",rightarrowtail:"↣",RightCeiling:"⌉",RightDoubleBracket:"⟧",RightDownTeeVector:"⥝",RightDownVector:"⇂",RightDownVectorBar:"⥕",RightFloor:"⌋",rightharpoondown:"⇁",rightharpoonup:"⇀",rightleftarrows:"⇄",rightleftharpoons:"⇌",rightrightarrows:"⇉",rightsquigarrow:"↝",RightTee:"⊢",RightTeeArrow:"↦",RightTeeVector:"⥛",rightthreetimes:"⋌",RightTriangle:"⊳",RightTriangleBar:"⧐",RightTriangleEqual:"⊵",RightUpDownVector:"⥏",RightUpTeeVector:"⥜",RightUpVector:"↾",RightUpVectorBar:"⥔",RightVector:"⇀",RightVectorBar:"⥓",ring:"˚",risingdotseq:"≓",rlarr:"⇄",rlhar:"⇌",rlm:"",rmoust:"⎱",rmoustache:"⎱",rnmid:"⫮",roang:"⟭",roarr:"⇾",robrk:"⟧",ropar:"⦆",Ropf:"ℝ",ropf:"𝕣",roplus:"⨮",rotimes:"⨵",RoundImplies:"⥰",rpar:")",rpargt:"⦔",rppolint:"⨒",rrarr:"⇉",Rrightarrow:"⇛",rsaquo:"›",Rscr:"ℛ",rscr:"𝓇",Rsh:"↱",rsh:"↱",rsqb:"]",rsquo:"’",rsquor:"’",rthree:"⋌",rtimes:"⋊",rtri:"▹",rtrie:"⊵",rtrif:"▸",rtriltri:"⧎",RuleDelayed:"⧴",ruluhar:"⥨",rx:"℞",Sacute:"Ś",sacute:"ś",sbquo:"‚",Sc:"⪼",sc:"≻",scap:"⪸",Scaron:"Š",scaron:"š",sccue:"≽",scE:"⪴",sce:"⪰",Scedil:"Ş",scedil:"ş",Scirc:"Ŝ",scirc:"ŝ",scnap:"⪺",scnE:"⪶",scnsim:"⋩",scpolint:"⨓",scsim:"≿",Scy:"С",scy:"с",sdot:"⋅",sdotb:"⊡",sdote:"⩦",searhk:"⤥",seArr:"⇘",searr:"↘",searrow:"↘",sect:"§",semi:";",seswar:"⤩",setminus:"∖",setmn:"∖",sext:"✶",Sfr:"𝔖",sfr:"𝔰",sfrown:"⌢",sharp:"♯",SHCHcy:"Щ",shchcy:"щ",SHcy:"Ш",shcy:"ш",ShortDownArrow:"↓",ShortLeftArrow:"←",shortmid:"∣",shortparallel:"∥",ShortRightArrow:"→",ShortUpArrow:"↑",shy:"",Sigma:"Σ",sigma:"σ",sigmaf:"ς",sigmav:"ς",sim:"∼",simdot:"⩪",sime:"≃",simeq:"≃",simg:"⪞",simgE:"⪠",siml:"⪝",simlE:"⪟",simne:"≆",simplus:"⨤",simrarr:"⥲",slarr:"←",SmallCircle:"∘",smallsetminus:"∖",smashp:"⨳",smeparsl:"⧤",smid:"∣",smile:"⌣",smt:"⪪",smte:"⪬",smtes:"⪬︀",SOFTcy:"Ь",softcy:"ь",sol:"/",solb:"⧄",solbar:"⌿",Sopf:"𝕊",sopf:"𝕤",spades:"♠",spadesuit:"♠",spar:"∥",sqcap:"⊓",sqcaps:"⊓︀",sqcup:"⊔",sqcups:"⊔︀",Sqrt:"√",sqsub:"⊏",sqsube:"⊑",sqsubset:"⊏",sqsubseteq:"⊑",sqsup:"⊐",sqsupe:"⊒",sqsupset:"⊐",sqsupseteq:"⊒",squ:"□",Square:"□",square:"□",SquareIntersection:"⊓",SquareSubset:"⊏",SquareSubsetEqual:"⊑",SquareSuperset:"⊐",SquareSupersetEqual:"⊒",SquareUnion:"⊔",squarf:"▪",squf:"▪",srarr:"→",Sscr:"𝒮",sscr:"𝓈",ssetmn:"∖",ssmile:"⌣",sstarf:"⋆",Star:"⋆",star:"☆",starf:"★",straightepsilon:"ϵ",straightphi:"ϕ",strns:"¯",Sub:"⋐",sub:"⊂",subdot:"⪽",subE:"⫅",sube:"⊆",subedot:"⫃",submult:"⫁",subnE:"⫋",subne:"⊊",subplus:"⪿",subrarr:"⥹",Subset:"⋐",subset:"⊂",subseteq:"⊆",subseteqq:"⫅",SubsetEqual:"⊆",subsetneq:"⊊",subsetneqq:"⫋",subsim:"⫇",subsub:"⫕",subsup:"⫓",succ:"≻",succapprox:"⪸",succcurlyeq:"≽",Succeeds:"≻",SucceedsEqual:"⪰",SucceedsSlantEqual:"≽",SucceedsTilde:"≿",succeq:"⪰",succnapprox:"⪺",succneqq:"⪶",succnsim:"⋩",succsim:"≿",SuchThat:"∋",Sum:"∑",sum:"∑",sung:"♪",Sup:"⋑",sup:"⊃",sup1:"¹",sup2:"²",sup3:"³",supdot:"⪾",supdsub:"⫘",supE:"⫆",supe:"⊇",supedot:"⫄",Superset:"⊃",SupersetEqual:"⊇",suphsol:"⟉",suphsub:"⫗",suplarr:"⥻",supmult:"⫂",supnE:"⫌",supne:"⊋",supplus:"⫀",Supset:"⋑",supset:"⊃",supseteq:"⊇",supseteqq:"⫆",supsetneq:"⊋",supsetneqq:"⫌",supsim:"⫈",supsub:"⫔",supsup:"⫖",swarhk:"⤦",swArr:"⇙",swarr:"↙",swarrow:"↙",swnwar:"⤪",szlig:"ß",Tab:"\t",target:"⌖",Tau:"Τ",tau:"τ",tbrk:"⎴",Tcaron:"Ť",tcaron:"ť",Tcedil:"Ţ",tcedil:"ţ",Tcy:"Т",tcy:"т",tdot:"⃛",telrec:"⌕",Tfr:"𝔗",tfr:"𝔱",there4:"∴",Therefore:"∴",therefore:"∴",Theta:"Θ",theta:"θ",thetasym:"ϑ",thetav:"ϑ",thickapprox:"≈",thicksim:"∼",ThickSpace:" ",thinsp:" ",ThinSpace:" ",thkap:"≈",thksim:"∼",THORN:"Þ",thorn:"þ",Tilde:"∼",tilde:"˜",TildeEqual:"≃",TildeFullEqual:"≅",TildeTilde:"≈",times:"×",timesb:"⊠",timesbar:"⨱",timesd:"⨰",tint:"∭",toea:"⤨",top:"⊤",topbot:"⌶",topcir:"⫱",Topf:"𝕋",topf:"𝕥",topfork:"⫚",tosa:"⤩",tprime:"‴",TRADE:"™",trade:"™",triangle:"▵",triangledown:"▿",triangleleft:"◃",trianglelefteq:"⊴",triangleq:"≜",triangleright:"▹",trianglerighteq:"⊵",tridot:"◬",trie:"≜",triminus:"⨺",TripleDot:"⃛",triplus:"⨹",trisb:"⧍",tritime:"⨻",trpezium:"⏢",Tscr:"𝒯",tscr:"𝓉",TScy:"Ц",tscy:"ц",TSHcy:"Ћ",tshcy:"ћ",Tstrok:"Ŧ",tstrok:"ŧ",twixt:"≬",twoheadleftarrow:"↞",twoheadrightarrow:"↠",Uacute:"Ú",uacute:"ú",Uarr:"↟",uArr:"⇑",uarr:"↑",Uarrocir:"⥉",Ubrcy:"Ў",ubrcy:"ў",Ubreve:"Ŭ",ubreve:"ŭ",Ucirc:"Û",ucirc:"û",Ucy:"У",ucy:"у",udarr:"⇅",Udblac:"Ű",udblac:"ű",udhar:"⥮",ufisht:"⥾",Ufr:"𝔘",ufr:"𝔲",Ugrave:"Ù",ugrave:"ù",uHar:"⥣",uharl:"↿",uharr:"↾",uhblk:"▀",ulcorn:"⌜",ulcorner:"⌜",ulcrop:"⌏",ultri:"◸",Umacr:"Ū",umacr:"ū",uml:"¨",UnderBar:"_",UnderBrace:"⏟",UnderBracket:"⎵",UnderParenthesis:"⏝",Union:"⋃",UnionPlus:"⊎",Uogon:"Ų",uogon:"ų",Uopf:"𝕌",uopf:"𝕦",UpArrow:"↑",Uparrow:"⇑",uparrow:"↑",UpArrowBar:"⤒",UpArrowDownArrow:"⇅",UpDownArrow:"↕",Updownarrow:"⇕",updownarrow:"↕",UpEquilibrium:"⥮",upharpoonleft:"↿",upharpoonright:"↾",uplus:"⊎",UpperLeftArrow:"↖",UpperRightArrow:"↗",Upsi:"ϒ",upsi:"υ",upsih:"ϒ",Upsilon:"Υ",upsilon:"υ",UpTee:"⊥",UpTeeArrow:"↥",upuparrows:"⇈",urcorn:"⌝",urcorner:"⌝",urcrop:"⌎",Uring:"Ů",uring:"ů",urtri:"◹",Uscr:"𝒰",uscr:"𝓊",utdot:"⋰",Utilde:"Ũ",utilde:"ũ",utri:"▵",utrif:"▴",uuarr:"⇈",Uuml:"Ü",uuml:"ü",uwangle:"⦧",vangrt:"⦜",varepsilon:"ϵ",varkappa:"ϰ",varnothing:"∅",varphi:"ϕ",varpi:"ϖ",varpropto:"∝",vArr:"⇕",varr:"↕",varrho:"ϱ",varsigma:"ς",varsubsetneq:"⊊︀",varsubsetneqq:"⫋︀",varsupsetneq:"⊋︀",varsupsetneqq:"⫌︀",vartheta:"ϑ",vartriangleleft:"⊲",vartriangleright:"⊳",Vbar:"⫫",vBar:"⫨",vBarv:"⫩",Vcy:"В",vcy:"в",VDash:"⊫",Vdash:"⊩",vDash:"⊨",vdash:"⊢",Vdashl:"⫦",Vee:"⋁",vee:"∨",veebar:"⊻",veeeq:"≚",vellip:"⋮",Verbar:"‖",verbar:"|",Vert:"‖",vert:"|",VerticalBar:"∣",VerticalLine:"|",VerticalSeparator:"❘",VerticalTilde:"≀",VeryThinSpace:" ",Vfr:"𝔙",vfr:"𝔳",vltri:"⊲",vnsub:"⊂⃒",vnsup:"⊃⃒",Vopf:"𝕍",vopf:"𝕧",vprop:"∝",vrtri:"⊳",Vscr:"𝒱",vscr:"𝓋",vsubnE:"⫋︀",vsubne:"⊊︀",vsupnE:"⫌︀",vsupne:"⊋︀",Vvdash:"⊪",vzigzag:"⦚",Wcirc:"Ŵ",wcirc:"ŵ",wedbar:"⩟",Wedge:"⋀",wedge:"∧",wedgeq:"≙",weierp:"℘",Wfr:"𝔚",wfr:"𝔴",Wopf:"𝕎",wopf:"𝕨",wp:"℘",wr:"≀",wreath:"≀",Wscr:"𝒲",wscr:"𝓌",xcap:"⋂",xcirc:"◯",xcup:"⋃",xdtri:"▽",Xfr:"𝔛",xfr:"𝔵",xhArr:"⟺",xharr:"⟷",Xi:"Ξ",xi:"ξ",xlArr:"⟸",xlarr:"⟵",xmap:"⟼",xnis:"⋻",xodot:"⨀",Xopf:"𝕏",xopf:"𝕩",xoplus:"⨁",xotime:"⨂",xrArr:"⟹",xrarr:"⟶",Xscr:"𝒳",xscr:"𝓍",xsqcup:"⨆",xuplus:"⨄",xutri:"△",xvee:"⋁",xwedge:"⋀",Yacute:"Ý",yacute:"ý",YAcy:"Я",yacy:"я",Ycirc:"Ŷ",ycirc:"ŷ",Ycy:"Ы",ycy:"ы",yen:"¥",Yfr:"𝔜",yfr:"𝔶",YIcy:"Ї",yicy:"ї",Yopf:"𝕐",yopf:"𝕪",Yscr:"𝒴",yscr:"𝓎",YUcy:"Ю",yucy:"ю",Yuml:"Ÿ",yuml:"ÿ",Zacute:"Ź",zacute:"ź",Zcaron:"Ž",zcaron:"ž",Zcy:"З",zcy:"з",Zdot:"Ż",zdot:"ż",zeetrf:"ℨ",ZeroWidthSpace:"",Zeta:"Ζ",zeta:"ζ",Zfr:"ℨ",zfr:"𝔷",ZHcy:"Ж",zhcy:"ж",zigrarr:"⇝",Zopf:"ℤ",zopf:"𝕫",Zscr:"𝒵",zscr:"𝓏",zwj:"",zwnj:""}),t.entityMap=t.HTML_ENTITIES},function(e,t,r){var n=r(2).NAMESPACE,o=/[A-Z_a-z\xC0-\xD6\xD8-\xF6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/,i=new RegExp("[\\-\\.0-9"+o.source.slice(1,-1)+"\\u00B7\\u0300-\\u036F\\u203F-\\u2040]"),a=new RegExp("^"+o.source+i.source+"*(?::"+o.source+i.source+"*)?$"),s=0,c=1,u=2,l=3,d=4,p=5,f=6,h=7;function g(e,t){this.message=e,this.locator=t,Error.captureStackTrace&&Error.captureStackTrace(this,g)}function m(){}function y(e,t){return t.lineNumber=e.lineNumber,t.columnNumber=e.columnNumber,t}function v(e,t,r,o,i,a){function g(e,t,n){r.attributeNames.hasOwnProperty(e)&&a.fatalError("Attribute "+e+" redefined"),r.addValue(e,t.replace(/[\t\n\r]/g," ").replace(/?\w+;/g,i),n)}for(var m,y=++t,v=s;;){var b=e.charAt(y);switch(b){case"=":if(v===c)m=e.slice(t,y),v=l;else{if(v!==u)throw new Error("attribute equal must after attrName");v=l}break;case"'":case'"':if(v===l||v===c){if(v===c&&(a.warning('attribute value must after "="'),m=e.slice(t,y)),t=y+1,!((y=e.indexOf(b,t))>0))throw new Error("attribute value no end '"+b+"' match");g(m,C=e.slice(t,y),t-1),v=p}else{if(v!=d)throw new Error('attribute value must after "="');g(m,C=e.slice(t,y),t),a.warning('attribute "'+m+'" missed start quot('+b+")!!"),t=y+1,v=p}break;case"/":switch(v){case s:r.setTagName(e.slice(t,y));case p:case f:case h:v=h,r.closed=!0;case d:case c:break;case u:r.closed=!0;break;default:throw new Error("attribute invalid close char('/')")}break;case"":return a.error("unexpected end of input"),v==s&&r.setTagName(e.slice(t,y)),y;case">":switch(v){case s:r.setTagName(e.slice(t,y));case p:case f:case h:break;case d:case c:"/"===(C=e.slice(t,y)).slice(-1)&&(r.closed=!0,C=C.slice(0,-1));case u:v===u&&(C=m),v==d?(a.warning('attribute "'+C+'" missed quot(")!'),g(m,C,t)):(n.isHTML(o[""])&&C.match(/^(?:disabled|checked|selected)$/i)||a.warning('attribute "'+C+'" missed value!! "'+C+'" instead!!'),g(C,C,t));break;case l:throw new Error("attribute value missed!!")}return y;case"":b=" ";default:if(b<=" ")switch(v){case s:r.setTagName(e.slice(t,y)),v=f;break;case c:m=e.slice(t,y),v=u;break;case d:var C=e.slice(t,y);a.warning('attribute "'+C+'" missed quot(")!!'),g(m,C,t);case p:v=f}else switch(v){case u:r.tagName;n.isHTML(o[""])&&m.match(/^(?:disabled|checked|selected)$/i)||a.warning('attribute "'+m+'" missed value!! "'+m+'" instead2!!'),g(m,m,t),t=y,v=c;break;case p:a.warning('attribute space is required"'+m+'"!!');case f:v=c,t=y;break;case l:v=d,t=y;break;case h:throw new Error("elements closed character '/' and '>' must be connected to")}}y++}}function b(e,t,r){for(var o=e.tagName,i=null,a=e.length;a--;){var s=e[a],c=s.qName,u=s.value;if((f=c.indexOf(":"))>0)var l=s.prefix=c.slice(0,f),d=c.slice(f+1),p="xmlns"===l&&d;else d=c,l=null,p="xmlns"===c&&"";s.localName=d,!1!==p&&(null==i&&(i={},S(r,r={})),r[p]=i[p]=u,s.uri=n.XMLNS,t.startPrefixMapping(p,u))}for(a=e.length;a--;){(l=(s=e[a]).prefix)&&("xml"===l&&(s.uri=n.XML),"xmlns"!==l&&(s.uri=r[l||""]))}var f;(f=o.indexOf(":"))>0?(l=e.prefix=o.slice(0,f),d=e.localName=o.slice(f+1)):(l=null,d=e.localName=o);var h=e.uri=r[l||""];if(t.startElement(h,d,o,e),!e.closed)return e.currentNSMap=r,e.localNSMap=i,!0;if(t.endElement(h,d,o),i)for(l in i)Object.prototype.hasOwnProperty.call(i,l)&&t.endPrefixMapping(l)}function C(e,t,r,n,o){if(/^(?:script|textarea)$/i.test(r)){var i=e.indexOf(""+r+">",t),a=e.substring(t+1,i);if(/[&<]/.test(a))return/^script$/i.test(r)?(o.characters(a,0,a.length),i):(a=a.replace(/?\w+;/g,n),o.characters(a,0,a.length),i)}return t+1}function k(e,t,r,n){var o=n[r];return null==o&&((o=e.lastIndexOf(""+r+">"))t?(r.comment(e,t+4,o-t-4),o+3):(n.error("Unclosed comment"),-1):-1;if("CDATA["==e.substr(t+3,6)){var o=e.indexOf("]]>",t+9);return r.startCDATA(),r.characters(e,t+9,o-t-9),r.endCDATA(),o+3}var i=function(e,t){var r,n=[],o=/'[^']+'|"[^"]+"|[^\s<>\/=]+=?|(\/?\s*>|<)/g;o.lastIndex=t,o.exec(e);for(;r=o.exec(e);)if(n.push(r),r[1])return n}(e,t),a=i.length;if(a>1&&/!doctype/i.test(i[0][0])){var s=i[1][0],c=!1,u=!1;a>3&&(/^public$/i.test(i[2][0])?(c=i[3][0],u=a>4&&i[4][0]):/^system$/i.test(i[2][0])&&(u=i[3][0]));var l=i[a-1];return r.startDTD(s,c,u),r.endDTD(),l.index+l[0].length}return-1}function T(e,t,r){var n=e.indexOf("?>",t);if(n){var o=e.substring(t,n).match(/^<\?(\S*)\s*([\s\S]*?)\s*$/);if(o){o[0].length;return r.processingInstruction(o[1],o[2]),n+2}return-1}return-1}function E(){this.attributeNames={}}g.prototype=new Error,g.prototype.name=g.name,m.prototype={parse:function(e,t,r){var o=this.domBuilder;o.startDocument(),S(t,t={}),function(e,t,r,o,i){function a(e){if(e>65535){var t=55296+((e-=65536)>>10),r=56320+(1023&e);return String.fromCharCode(t,r)}return String.fromCharCode(e)}function s(e){var t=e.slice(1,-1);return Object.hasOwnProperty.call(r,t)?r[t]:"#"===t.charAt(0)?a(parseInt(t.substr(1).replace("x","0x"))):(i.error("entity not found:"+e),e)}function c(t){if(t>S){var r=e.substring(S,t).replace(/?\w+;/g,s);f&&u(S),o.characters(r,0,t-S),S=t}}function u(t,r){for(;t>=d&&(r=p.exec(e));)l=r.index,d=l+r[0].length,f.lineNumber++;f.columnNumber=t-l+1}var l=0,d=0,p=/.*(?:\r\n?|\n)|.*$/g,f=o.locator,h=[{currentNSMap:t}],m={},S=0;for(;;){try{var R=e.indexOf("<",S);if(R<0){if(!e.substr(S).match(/^\s*$/)){var x=o.doc,A=x.createTextNode(e.substr(S));x.appendChild(A),o.currentElement=A}return}switch(R>S&&c(R),e.charAt(R+1)){case"/":var B=e.indexOf(">",R+3),I=e.substring(R+2,B).replace(/[ \t\n\r]+$/g,""),D=h.pop();B<0?(I=e.substring(R+2).replace(/[\s<].*/,""),i.error("end tag name: "+I+" is not complete:"+D.tagName),B=R+1+I.length):I.match(/\s)&&(I=I.replace(/[\s<].*/,""),i.error("end tag name: "+I+" maybe not complete"),B=R+1+I.length);var O=D.localNSMap,_=D.tagName==I;if(_||D.tagName&&D.tagName.toLowerCase()==I.toLowerCase()){if(o.endElement(D.uri,D.localName,I),O)for(var N in O)Object.prototype.hasOwnProperty.call(O,N)&&o.endPrefixMapping(N);_||i.fatalError("end tag name: "+I+" is not match the current start tagName:"+D.tagName)}else h.push(D);B++;break;case"?":f&&u(R),B=T(e,R,o);break;case"!":f&&u(R),B=w(e,R,o,i);break;default:f&&u(R);var P=new E,U=h[h.length-1].currentNSMap,L=(B=v(e,R,P,U,s,i),P.length);if(!P.closed&&k(e,B,P.tagName,m)&&(P.closed=!0,r.nbsp||i.warning("unclosed xml attribute")),f&&L){for(var q=y(f,{}),M=0;MS?S=B:c(Math.max(R,S)+1)}}(e,t,r,o,this.errorHandler),o.endDocument()}},E.prototype={setTagName:function(e){if(!a.test(e))throw new Error("invalid tagName:"+e);this.tagName=e},addValue:function(e,t,r){if(!a.test(e))throw new Error("invalid attribute:"+e);this.attributeNames[e]=this.length,this[this.length++]={qName:e,value:t,offset:r}},length:0,getLocalName:function(e){return this[e].localName},getLocator:function(e){return this[e].locator},getQName:function(e){return this[e].qName},getURI:function(e){return this[e].uri},getValue:function(e){return this[e].value}},t.XMLReader=m,t.ParseError=g},function(e,t,r){var n=r(0),o="a-zA-Z_À-ÖØ-öø-ÿͰ-ͽͿ--⁰-Ⰰ-、-豈-﷏ﷰ-�",i=new RegExp("^([^"+o+"])|^((x|X)(m|M)(l|L))|([^"+o+"-.0-9·̀-ͯ‿⁀])","g"),a=/[^\x09\x0A\x0D\x20-\xFF\x85\xA0-\uD7FF\uE000-\uFDCF\uFDE0-\uFFFD]/gm,s=function(e){var t=[];if(e instanceof Object)for(var r in e)e.hasOwnProperty(r)&&t.push(r);return t},c=function(e,t){var r=function(e,r,n,o,a){var s=void 0!==t.indent?t.indent:"\t",c=t.prettyPrint?"\n"+new Array(o).join(s):"";t.removeIllegalNameCharacters&&(e=e.replace(i,"_"));var u=[c,"<",e,n||""];return r&&r.length>0?(u.push(">"),u.push(r),a&&u.push(c),u.push(""),u.push(e),u.push(">")):u.push("/>"),u.join("")};return function e(o,i,c){var u=n(o);switch((Array.isArray?Array.isArray(o):o instanceof Array)?u="array":o instanceof Date&&(u="date"),u){case"array":var l=[];return o.map((function(t){l.push(e(t,1,c+1))})),t.prettyPrint&&l.push("\n"),l.join("");case"date":return o.toJSON?o.toJSON():o+"";case"object":var d=[];for(var p in o)if(o.hasOwnProperty(p))if(o[p]instanceof Array)for(var f=0;f0&&d.push("\n"),d.join("");case"function":return o();default:return t.escape?(""+o).replace(/&/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,""").replace(a,""):""+o}}(e,0,0)},u=function(e){var t=['"),t.join("")};e.exports=function(e,t){if(t||(t={xmlHeader:{standalone:!0},prettyPrint:!0,indent:" ",escape:!0}),"string"==typeof e)try{e=JSON.parse(e.toString())}catch(e){return!1}var r="",o="";return t&&("object"==n(t)?(t.xmlHeader&&(r=u(!!t.xmlHeader.standalone)),void 0!==t.docType&&(o="")):r=u()),[r,(t=t||{}).prettyPrint&&o?"\n":"",o,c(e,t)].join("").replace(/\n{2,}/g,"\n").replace(/\s+$/g,"")}},function(e,t){var r=function(e){var t=(e=e||{}).Base64,r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",n=function(e){for(var t={},r=0,n=e.length;r>>6)+o(128|63&t):o(224|t>>>12&15)+o(128|t>>>6&63)+o(128|63&t);var t=65536+1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320);return o(240|t>>>18&7)+o(128|t>>>12&63)+o(128|t>>>6&63)+o(128|63&t)},a=/[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g,s=function(e){return e.replace(a,i)},c=function(e){var t=[0,2,1][e.length%3],n=e.charCodeAt(0)<<16|(e.length>1?e.charCodeAt(1):0)<<8|(e.length>2?e.charCodeAt(2):0);return[r.charAt(n>>>18),r.charAt(n>>>12&63),t>=2?"=":r.charAt(n>>>6&63),t>=1?"=":r.charAt(63&n)].join("")},u=e.btoa?function(t){return e.btoa(t)}:function(e){return e.replace(/[\s\S]{1,3}/g,c)},l=function(e){return u(s(e))},d=function(e,t){return t?l(String(e)).replace(/[+\/]/g,(function(e){return"+"==e?"-":"_"})).replace(/=/g,""):l(String(e))},p=new RegExp(["[À-ß][-¿]","[à-ï][-¿]{2}","[ð-÷][-¿]{3}"].join("|"),"g"),f=function(e){switch(e.length){case 4:var t=((7&e.charCodeAt(0))<<18|(63&e.charCodeAt(1))<<12|(63&e.charCodeAt(2))<<6|63&e.charCodeAt(3))-65536;return o(55296+(t>>>10))+o(56320+(1023&t));case 3:return o((15&e.charCodeAt(0))<<12|(63&e.charCodeAt(1))<<6|63&e.charCodeAt(2));default:return o((31&e.charCodeAt(0))<<6|63&e.charCodeAt(1))}},h=function(e){return e.replace(p,f)},g=function(e){var t=e.length,r=t%4,i=(t>0?n[e.charAt(0)]<<18:0)|(t>1?n[e.charAt(1)]<<12:0)|(t>2?n[e.charAt(2)]<<6:0)|(t>3?n[e.charAt(3)]:0),a=[o(i>>>16),o(i>>>8&255),o(255&i)];return a.length-=[0,0,2,1][r],a.join("")},m=e.atob?function(t){return e.atob(t)}:function(e){return e.replace(/[\s\S]{1,4}/g,g)},y=function(e){return h(m(e))},v=function(e){return y(String(e).replace(/[-_]/g,(function(e){return"-"==e?"+":"/"})).replace(/[^A-Za-z0-9\+\/]/g,""))};return{VERSION:"2.1.9",atob:m,btoa:u,fromBase64:v,toBase64:d,utob:s,encode:d,encodeURI:function(e){return d(e,!0)},btou:h,decode:v,noConflict:function(){var r=e.Base64;return e.Base64=t,r}}}();e.exports=r},function(e,t){e.exports=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},e.exports.__esModule=!0,e.exports.default=e.exports},function(e,t,r){var n=r(25);function o(e,t){for(var r=0;r0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]60*this.strategy.requestInterval*1e3},e.prototype.getUploadUrl=function(){return this.strategy.httpsUploadUrl+"?appkey="+this.appkey},e.prototype.isBlackEvent=function(e){return-1!=this.strategy.blacklist.indexOf(e)},e.prototype.isEventUpOnOff=function(){return this.strategy.isEventUpOnOff},e.prototype.isSampleEvent=function(e){return!!Object.prototype.hasOwnProperty.call(this.realSample,e)&&this.realSample[e]this.duration)return this.createSession();t=n.sessionId,r=n.sessionStart,this.getSessionStackDepth=0}catch(e){}return{sessionId:t,sessionStart:r}},e.prototype.createSession=function(){var e=Date.now(),t={sessionId:this.appkey+"_"+e.toString(),sessionStart:e};this.storage.setItem(v,JSON.stringify(t)),this.storage.setItem(a,e.toString());var r="is_new_user",n=this.storage.getItem(r);return this.getSessionStackDepth<=1&&this.beacon.onDirectUserAction("rqd_applaunched",{A21:n?"N":"Y"}),this.storage.setItem(r,JSON.stringify(!1)),t},e}();function C(){var e=navigator.userAgent,t=e.indexOf("compatible")>-1&&e.indexOf("MSIE")>-1,r=e.indexOf("Edge")>-1&&!t,n=e.indexOf("Trident")>-1&&e.indexOf("rv:11.0")>-1;if(t){new RegExp("MSIE (\\d+\\.\\d+);").test(e);var o=parseFloat(RegExp.$1);return 7==o?7:8==o?8:9==o?9:10==o?10:6}return r?-2:n?11:-1}var k,S,w=function(){return(w=Object.assign||function(e){for(var t,r=1,n=arguments.length;r0||!window.indexedDB||/X5Lite/.test(navigator.userAgent)?(this.store=new A(t),this.dbEventCount=this.store.getCount()):(this.store=new x(e),this.getCount().then((function(e){r.dbEventCount=e})).catch((function(e){})))}return e.prototype.getCount=function(){return r(this,void 0,void 0,(function(){return n(this,(function(e){switch(e.label){case 0:return e.trys.push([0,2,,3]),[4,this.store.getCount()];case 1:return[2,e.sent()];case 2:return e.sent(),[2,Promise.reject()];case 3:return[2]}}))}))},e.prototype.insertEvent=function(e,t){return r(this,void 0,void 0,(function(){var r,o;return n(this,(function(n){switch(n.label){case 0:if(this.dbEventCount>=1e4)return[2,Promise.reject()];r=f(e.mapValue),n.label=1;case 1:return n.trys.push([1,3,,4]),this.dbEventCount++,[4,this.store.setItem(r,e)];case 2:return[2,n.sent()];case 3:return o=n.sent(),t&&t(o,e),this.dbEventCount--,[2,Promise.reject()];case 4:return[2]}}))}))},e.prototype.getEvents=function(){return r(this,void 0,void 0,(function(){var e;return n(this,(function(t){switch(t.label){case 0:e=[],t.label=1;case 1:return t.trys.push([1,3,,4]),[4,this.store.iterate((function(t){e.push(t)}))];case 2:case 3:return t.sent(),[2,Promise.all(e)];case 4:return[2]}}))}))},e.prototype.removeEvent=function(e){return r(this,void 0,void 0,(function(){var t;return n(this,(function(r){switch(r.label){case 0:t=f(e.mapValue),r.label=1;case 1:return r.trys.push([1,3,,4]),this.dbEventCount--,[4,this.store.removeItem(t)];case 2:return[2,r.sent()];case 3:return r.sent(),this.dbEventCount++,[2,Promise.reject()];case 4:return[2]}}))}))},e}(),I=function(){return(I=Object.assign||function(e){for(var t,r=1,n=arguments.length;r0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&i<8,t.isUnderIE8||(t.isUnderIE=i>0,e.needInitQimei&&function(e,t){var r;(void 0===r&&(r=Date.now()+"-"+Math.random()),new Promise((function(e,t){if(document.getElementById(r))e(void 0);else{var n=document.getElementsByTagName("head")[0],o=document.createElement("script");o.onload=function(){return function(){o.onload=null,e(void 0)}},o.onerror=function(e){o.onerror=null,n.removeChild(o),t(e)},o.src="https://tun-cos-1258344701.file.myqcloud.com/fp.js",o.id=r,n.appendChild(o)}}))).then((function(){(new Fingerprint).getQimei36(e,t)})).catch((function(e){}))}(e.appkey,(function(e){t.qimei36=e.q36})),t.network=new K(e),t.storage=new z(e.appkey),t.initCommonInfo(e),t.store=new B(e.appkey,t.storage),t.errorReport=new m(t.config,t.commonInfo,"web",t.network),t.strategy=new y(null==e.needQueryConfig||e.needQueryConfig,t.config,t.commonInfo,t.storage,t.network),t.logidStartTime=t.storage.getItem(V),t.logidStartTime||(t.logidStartTime=Date.now().toString(),t.storage.setItem(V,t.logidStartTime)),n=t.logidStartTime,o=Date.now()-Number.parseFloat(n),Math.floor(o/864e5)>=365&&t.storage.clear(),t.initSession(e),t.onDirectUserAction("rqd_js_init",{}),setTimeout((function(){return t.lifeCycle.emit("init")}),0),t.initDelayTime=e.delay?e.delay:1e3,t.cycleTask(t.initDelayTime)),t}return function(t,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=t}e(t,r),t.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}(n,r),n.prototype.initSession=function(e){var t=18e5;e.sessionDuration&&e.sessionDuration>3e4&&(t=e.sessionDuration),this.beaconSession=new b(this.storage,t,this)},n.prototype.initCommonInfo=function(e){var t=Number(this.storage.getItem(a));try{var r=JSON.parse(this.storage.getItem(s));(Date.now()-t>3e4||!r)&&this.storage.setItem(s,JSON.stringify([]))}catch(e){}e.uploadUrl&&(this.uploadUrl=e.uploadUrl+"?appkey="+e.appkey);var n=[window.screen.width,window.screen.height];window.devicePixelRatio&&n.push(window.devicePixelRatio),this.commonInfo={deviceId:this.storage.createDeviceId(),language:navigator&&navigator.language||"zh_CN",query:window.location.search,userAgent:navigator.userAgent,pixel:n.join("*"),channelID:e.channelID?String(e.channelID):"",openid:e.openid?String(e.openid):"",unid:e.unionid?String(e.unionid):"",sdkVersion:G},this.config.appVersion=e.versionCode?String(e.versionCode):"",this.config.strictMode=e.strictMode},n.prototype.cycleTask=function(e){var t=this;this.intervalID=window.setInterval((function(){t.pauseSearching||t.store.getEvents().then((function(e){0==e.length&&(t.pauseSearching=!0);var r=[],n=JSON.parse(t.storage.getItem(s));n||(n=[]),e&&e.forEach((function(e){var t=f(e.mapValue);-1==n.indexOf(t)&&(r.push(e),n.push(t))})),0!=r.length&&(t.storage.setItem(s,JSON.stringify(n)),t._normalLogPipeline(t.assembleData(r)))})).catch((function(e){}))}),e)},n.prototype.onReport=function(e,t,r){var n=this;if(this.isUnderIE8)this.errorReport.reportError("601","UnderIE8");else{this.pauseSearching=!1;var o=this.generateData(e,t,r);if(r&&0==this.delayTime&&!this.underWeakNet)this._normalLogPipeline(this.assembleData(o));else{var i=o.shift();i&&this.store.insertEvent(i,(function(e){e&&n.errorReport.reportError("604","insertEvent fail!")})).catch((function(e){n._normalLogPipeline(n.assembleData(o))}))}}},n.prototype.onSendBeacon=function(e,t){if(this.isUnderIE)this.errorReport.reportError("605","UnderIE");else{this.pauseSearching=!1;var r=this.assembleData(this.generateData(e,t,!0));"function"==typeof navigator.sendBeacon&&navigator.sendBeacon(this.uploadUrl||this.strategy.getUploadUrl(),JSON.stringify(r))}},n.prototype.generateData=function(e,r,n){var o=[],i="4.5.14-web_"+(n?"direct_log_id":"normal_log_id"),a=Number(this.storage.getItem(i));return a=a||1,r=t(t({},r),{A99:n?"Y":"N",A100:a.toString(),A72:G,A88:this.logidStartTime}),a++,this.storage.setItem(i,a.toString()),o.push({eventCode:e,eventTime:Date.now().toString(),mapValue:d(r,this.config.strictMode)}),o},n.prototype.assembleData=function(e){var r=this.beaconSession.getSession();return{appVersion:this.config.appVersion?p(this.config.appVersion):"",sdkId:"js",sdkVersion:G,mainAppKey:this.config.appkey,platformId:3,common:d(t(t({},this.additionalParams),{A2:this.commonInfo.deviceId,A8:this.commonInfo.openid,A12:this.commonInfo.language,A17:this.commonInfo.pixel,A23:this.commonInfo.channelID,A50:this.commonInfo.unid,A76:r.sessionId,A101:this.commonInfo.userAgent,A102:window.location.href,A104:document.referrer,A119:this.commonInfo.query,A153:this.qimei36}),!1),events:e}},n.prototype.monitorUploadFailed=function(){this.uselessCycleTaskNum++,this.uselessCycleTaskNum>=5&&(window.clearInterval(this.intervalID),this.cycleTask(6e4),this.underWeakNet=!0)},n.prototype.doCustomCycleTask=function(){this.uselessCycleTaskNum>=5&&(window.clearInterval(this.intervalID),this.cycleTask(this.initDelayTime)),this.uselessCycleTaskNum=0,this.underWeakNet=!1},n}(g)},"object"==a(t)&&void 0!==e?e.exports=i():void 0===(o="function"==typeof(n=i)?n.call(t,r,t,e):n)||(e.exports=o)},function(e,t,r){var n=r(9),o=r(1),i={};e.exports.transferToTaskMethod=function(e,t){i[t]=e[t],e[t]=function(e,r){e.SkipTask?i[t].call(this,e,r):this._addTask(t,e,r)}},e.exports.init=function(e){var t,r,a=[],s={},c=0,u=0,l=function(e){var t={id:e.id,Bucket:e.Bucket,Region:e.Region,Key:e.Key,FilePath:e.FilePath,state:e.state,loaded:e.loaded,size:e.size,speed:e.speed,percent:e.percent,hashPercent:e.hashPercent,error:e.error};return e.FilePath&&(t.FilePath=e.FilePath),e._custom&&(t._custom=e._custom),t},d=(r=function(){t=0,e.emit("task-list-update",{list:o.map(a,l)}),e.emit("list-update",{list:o.map(a,l)})},function(){t||(t=setTimeout(r))}),p=function(){if(!(a.length<=e.options.UploadQueueSize)){for(var t=0;te.options.UploadQueueSize;){var r="waiting"===a[t].state||"checking"===a[t].state||"uploading"===a[t].state;a[t]&&r?t++:(s[a[t].id]&&delete s[a[t].id],a.splice(t,1),u--)}d()}},f=function t(){if(!(c>=e.options.FileParallelLimit)){for(;a[u]&&"waiting"!==a[u].state;)u++;if(!(u>=a.length)){var r=a[u];u++,c++,r.state="checking",r.params.onTaskStart&&r.params.onTaskStart(l(r)),!r.params.UploadData&&(r.params.UploadData={});var n=o.formatParams(r.api,r.params);i[r.api].call(e,n,(function(n,o){e._isRunningTask(r.id)&&("checking"!==r.state&&"uploading"!==r.state||(r.state=n?"error":"success",n&&(r.error=n),c--,d(),t(),r.callback&&r.callback(n,o),"success"===r.state&&(r.params&&(delete r.params.UploadData,delete r.params.Body,delete r.params),delete r.callback)),p())})),d(),setTimeout(t)}}},h=function(t,r){var o=s[t];if(o){var i=o&&"waiting"===o.state,a=o&&("checking"===o.state||"uploading"===o.state);if("canceled"===r&&"canceled"!==o.state||"paused"===r&&i||"paused"===r&&a){if("paused"===r&&o.params.Body&&"function"==typeof o.params.Body.pipe)return;o.state=r,e.emit("inner-kill-task",{TaskId:t,toState:r});try{var u=o&&o.params&&o.params.UploadData.UploadId}catch(e){}"canceled"===r&&u&&n.removeUsing(u),d(),a&&(c--,f()),"canceled"===r&&(o.params&&(delete o.params.UploadData,delete o.params.Body,delete o.params),delete o.callback)}p()}};e._addTasks=function(t){o.each(t,(function(t){e._addTask(t.api,t.params,t.callback,!0)})),d()};e._addTask=function(t,r,n,i){r=o.formatParams(t,r);var c=o.uuid();r.TaskId=c,r.onTaskReady&&r.onTaskReady(c),r.TaskReady&&(r.TaskReady(c),!1);var u={params:r,callback:n,api:t,index:a.length,id:c,Bucket:r.Bucket,Region:r.Region,Key:r.Key,FilePath:r.FilePath||"",state:"waiting",loaded:0,size:0,speed:0,percent:0,hashPercent:0,error:null,_custom:r._custom},l=r.onHashProgress;r.onHashProgress=function(t){e._isRunningTask(u.id)&&(u.hashPercent=t.percent,l&&l(t),d())};var h=r.onProgress;return r.onProgress=function(t){e._isRunningTask(u.id)&&("checking"===u.state&&(u.state="uploading"),u.loaded=t.loaded,u.speed=t.speed,u.percent=t.percent,h&&h(t),d())},o.getFileSize(t,r,(function(e,t){if(e)return n(o.error(e));s[c]=u,a.push(u),u.size=t,!i&&d(),f(),p()})),c},e._isRunningTask=function(e){var t=s[e];return!(!t||"checking"!==t.state&&"uploading"!==t.state)},e.getTaskList=function(){return o.map(a,l)},e.cancelTask=function(e){h(e,"canceled")},e.pauseTask=function(e){h(e,"paused")},e.restartTask=function(e){var t=s[e];!t||"paused"!==t.state&&"error"!==t.state||(t.state="waiting",d(),u=Math.min(u,t.index),f())},e.isUploadRunning=function(){return c||u-1&&(a["SSE-COS"]=a.SSECOS,delete a.SSECOS)}var s=i.json2xml({InventoryConfiguration:n}),c=t.Headers;c["Content-Type"]="application/xml",c["Content-MD5"]=i.b64(i.md5(s));var u="PUT"===e?"name/cos:PutBucketInventory":"name/cos:PostBucketInventory";f.call(this,{Action:u,method:e,Bucket:t.Bucket,Region:t.Region,body:s,action:"inventory",qs:{id:t.Id},headers:c},(function(e,t){return e&&204===e.statusCode?r(null,{statusCode:e.statusCode}):e?r(e):void r(null,{statusCode:t.statusCode,headers:t.headers})}))}function s(e){var t={GrantFullControl:[],GrantWrite:[],GrantRead:[],GrantReadAcp:[],GrantWriteAcp:[],ACL:""},r={FULL_CONTROL:"GrantFullControl",WRITE:"GrantWrite",READ:"GrantRead",READ_ACP:"GrantReadAcp",WRITE_ACP:"GrantWriteAcp"},n=(e&&e.AccessControlList||{}).Grant;n&&(n=i.isArray(n)?n:[n]);var o={READ:0,WRITE:0,FULL_CONTROL:0};return n&&n.length&&i.each(n,(function(n){"qcs::cam::anyone:anyone"===n.Grantee.ID||"http://cam.qcloud.com/groups/global/AllUsers"===n.Grantee.URI?o[n.Permission]=1:n.Grantee.ID!==e.Owner.ID&&t[r[n.Permission]].push('id="'+n.Grantee.ID+'"')})),o.FULL_CONTROL||o.WRITE&&o.READ?t.ACL="public-read-write":o.READ?t.ACL="public-read":t.ACL="private",i.each(r,(function(e){t[e]=c(t[e].join(","))})),t}function c(e){var t,r,n=e.split(","),o={};for(t=0;t-1?"{Region}.myqcloud.com":"cos.{Region}.myqcloud.com",e.ForcePathStyle||(s="{Bucket}."+s)),s=(s=s.replace(/\{\{AppId\}\}/gi,a).replace(/\{\{Bucket\}\}/gi,o).replace(/\{\{Region\}\}/gi,t).replace(/\{\{.*?\}\}/gi,"")).replace(/\{AppId\}/gi,a).replace(/\{BucketName\}/gi,o).replace(/\{Bucket\}/gi,r).replace(/\{Region\}/gi,t).replace(/\{.*?\}/gi,""),/^[a-zA-Z]+:\/\//.test(s)||(s=u+"//"+s),"/"===s.slice(-1)&&(s=s.slice(0,-1));var l=s;return e.ForcePathStyle&&(l+="/"+r),l+="/",c&&(l+=i.camSafeUrlEncode(c).replace(/%2F/g,"/")),e.isLocation&&(l=l.replace(/^https?:\/\//,"")),l}var l=function(e){if(!e.Bucket||!e.Region)return"";var t=void 0===e.UseAccelerate?this.options.UseAccelerate:e.UseAccelerate,r=(e.Url||u({ForcePathStyle:this.options.ForcePathStyle,protocol:this.options.Protocol,domain:this.options.Domain,bucket:e.Bucket,region:t?"accelerate":e.Region})).replace(/^https?:\/\/([^/]+)(\/.*)?$/,"$1");return new RegExp("^([a-z\\d-]+-\\d+\\.)?(cos|cosv6|ci|pic)\\.([a-z\\d-]+)\\.myqcloud\\.com$").test(r)?r:""};function d(e,t){var r=i.clone(e.Headers),n="";i.each(r,(function(e,t){(""===e||["content-type","cache-control","expires"].indexOf(t.toLowerCase())>-1)&&delete r[t],"host"===t.toLowerCase()&&(n=e)}));var o=!1!==e.ForceSignHost;!n&&e.SignHost&&o&&(r.Host=e.SignHost);var a=!1,s=function(e,r){a||(a=!0,r&&r.XCosSecurityToken&&!r.SecurityToken&&((r=i.clone(r)).SecurityToken=r.XCosSecurityToken,delete r.XCosSecurityToken),t&&t(e,r))},c=this,u=e.Bucket||"",l=e.Region||"",d=e.Key||"";c.options.ForcePathStyle&&u&&(d=u+"/"+d);var p="/"+d,f={},h=e.Scope;if(!h){var g=e.Action||"",m=e.ResourceKey||e.Key||"";h=e.Scope||[{action:g,bucket:u,region:l,prefix:m}]}var y=i.md5(JSON.stringify(h));c._StsCache=c._StsCache||[],function(){var e,t;for(e=c._StsCache.length-1;e>=0;e--){t=c._StsCache[e];var r=Math.round(i.getSkewTime(c.options.SystemClockOffset)/1e3)+30;if(t.StartTime&&r=t.ExpiredTime)c._StsCache.splice(e,1);else if(!t.ScopeLimit||t.ScopeLimit&&t.ScopeKey===y){f=t;break}}}();var v,b=function(){var t="";f.StartTime&&e.Expires?t=f.StartTime+";"+(f.StartTime+1*e.Expires):f.StartTime&&f.ExpiredTime&&(t=f.StartTime+";"+f.ExpiredTime);var n={Authorization:i.getAuth({SecretId:f.TmpSecretId,SecretKey:f.TmpSecretKey,Method:e.Method,Pathname:p,Query:e.Query,Headers:r,Expires:e.Expires,UseRawKey:c.options.UseRawKey,SystemClockOffset:c.options.SystemClockOffset,KeyTime:t,ForceSignHost:o}),SecurityToken:f.SecurityToken||f.XCosSecurityToken||"",Token:f.Token||"",ClientIP:f.ClientIP||"",ClientUA:f.ClientUA||""};s(null,n)},C=function(e){if(e.Authorization){var t=!1,r=e.Authorization;if(r)if(r.indexOf(" ")>-1)t=!1;else if(r.indexOf("q-sign-algorithm=")>-1&&r.indexOf("q-ak=")>-1&&r.indexOf("q-sign-time=")>-1&&r.indexOf("q-key-time=")>-1&&r.indexOf("q-url-param-list=")>-1)t=!0;else try{(r=atob(r)).indexOf("a=")>-1&&r.indexOf("k=")>-1&&r.indexOf("t=")>-1&&r.indexOf("r=")>-1&&r.indexOf("b=")>-1&&(t=!0)}catch(e){}if(!t)return i.error(new Error("getAuthorization callback params format error"))}else{if(!e.TmpSecretId)return i.error(new Error('getAuthorization callback params missing "TmpSecretId"'));if(!e.TmpSecretKey)return i.error(new Error('getAuthorization callback params missing "TmpSecretKey"'));if(!e.SecurityToken&&!e.XCosSecurityToken)return i.error(new Error('getAuthorization callback params missing "SecurityToken"'));if(!e.ExpiredTime)return i.error(new Error('getAuthorization callback params missing "ExpiredTime"'));if(e.ExpiredTime&&10!==e.ExpiredTime.toString().length)return i.error(new Error('getAuthorization callback params "ExpiredTime" should be 10 digits'));if(e.StartTime&&10!==e.StartTime.toString().length)return i.error(new Error('getAuthorization callback params "StartTime" should be 10 StartTime'))}return!1};if(f.ExpiredTime&&f.ExpiredTime-i.getSkewTime(c.options.SystemClockOffset)/1e3>60)b();else if(c.options.getAuthorization)c.options.getAuthorization.call(c,{Bucket:u,Region:l,Method:e.Method,Key:d,Pathname:p,Query:e.Query,Headers:r,Scope:h,SystemClockOffset:c.options.SystemClockOffset,ForceSignHost:o},(function(e){"string"==typeof e&&(e={Authorization:e});var t=C(e);if(t)return s(t);e.Authorization?s(null,e):((f=e||{}).Scope=h,f.ScopeKey=y,c._StsCache.push(f),b())}));else{if(!c.options.getSTS)return v={Authorization:i.getAuth({SecretId:e.SecretId||c.options.SecretId,SecretKey:e.SecretKey||c.options.SecretKey,Method:e.Method,Pathname:p,Query:e.Query,Headers:r,Expires:e.Expires,UseRawKey:c.options.UseRawKey,SystemClockOffset:c.options.SystemClockOffset,ForceSignHost:o}),SecurityToken:c.options.SecurityToken||c.options.XCosSecurityToken},s(null,v),v;c.options.getSTS.call(c,{Bucket:u,Region:l},(function(e){(f=e||{}).Scope=h,f.ScopeKey=y,f.TmpSecretId||(f.TmpSecretId=f.SecretId),f.TmpSecretKey||(f.TmpSecretKey=f.SecretKey);var t=C(f);if(t)return s(t);c._StsCache.push(f),b()}))}return""}function p(e){var t=!1,r=!1,n=e.headers&&(e.headers.date||e.headers.Date)||e.error&&e.error.ServerTime;try{var o=e.error.Code,a=e.error.Message;("RequestTimeTooSkewed"===o||"AccessDenied"===o&&"Request has expired"===a)&&(r=!0)}catch(e){}if(e)if(r&&n){var s=Date.parse(n);this.options.CorrectClockSkew&&Math.abs(i.getSkewTime(this.options.SystemClockOffset)-s)>=3e4&&(this.options.SystemClockOffset=s-Date.now(),t=!0)}else 5===Math.floor(e.statusCode/100)&&(t=!0);return t}function f(e,t){var r=this;!e.headers&&(e.headers={}),!e.qs&&(e.qs={}),e.VersionId&&(e.qs.versionId=e.VersionId),e.qs=i.clearKey(e.qs),e.headers&&(e.headers=i.clearKey(e.headers)),e.qs&&(e.qs=i.clearKey(e.qs));var n=i.clone(e.qs);e.action&&(n[e.action]="");var o=e.url||e.Url,a=e.SignHost||l.call(this,{Bucket:e.Bucket,Region:e.Region,Url:o}),s=e.tracker;!function o(i){var c=r.options.SystemClockOffset;s&&s.setParams({signStartTime:(new Date).getTime(),retryTimes:i-1}),d.call(r,{Bucket:e.Bucket||"",Region:e.Region||"",Method:e.method,Key:e.Key,Query:n,Headers:e.headers,SignHost:a,Action:e.Action,ResourceKey:e.ResourceKey,Scope:e.Scope,ForceSignHost:r.options.ForceSignHost},(function(n,a){n?t(n):(s&&s.setParams({signEndTime:(new Date).getTime(),httpStartTime:(new Date).getTime()}),e.AuthData=a,h.call(r,e,(function(n,a){s&&s.setParams({httpEndTime:(new Date).getTime()}),n&&i<2&&(c!==r.options.SystemClockOffset||p.call(r,n))?(e.headers&&(delete e.headers.Authorization,delete e.headers.token,delete e.headers.clientIP,delete e.headers.clientUA,e.headers["x-cos-security-token"]&&delete e.headers["x-cos-security-token"],e.headers["x-ci-security-token"]&&delete e.headers["x-ci-security-token"]),o(i+1)):t(n,a)})))}))}(1)}function h(e,t){var r=this,n=e.TaskId;if(!n||r._isRunningTask(n)){var a=e.Bucket,s=e.Region,c=e.Key,l=e.method||"GET",d=e.Url||e.url,p=e.body,f=e.rawBody;r.options.UseAccelerate&&(s="accelerate"),d=d||u({ForcePathStyle:r.options.ForcePathStyle,protocol:r.options.Protocol,domain:r.options.Domain,bucket:a,region:s,object:c}),e.action&&(d=d+"?"+(i.isIOS_QQ?"".concat(e.action,"="):e.action)),e.qsStr&&(d=d.indexOf("?")>-1?d+"&"+e.qsStr:d+"?"+e.qsStr);var h={method:l,url:d,headers:e.headers,qs:e.qs,body:p},g="x-cos-security-token";if(i.isCIHost(d)&&(g="x-ci-security-token"),h.headers.Authorization=e.AuthData.Authorization,e.AuthData.Token&&(h.headers.token=e.AuthData.Token),e.AuthData.ClientIP&&(h.headers.clientIP=e.AuthData.ClientIP),e.AuthData.ClientUA&&(h.headers.clientUA=e.AuthData.ClientUA),e.AuthData.SecurityToken&&(h.headers[g]=e.AuthData.SecurityToken),h.headers&&(h.headers=i.clearKey(h.headers)),h=i.clearKey(h),e.onProgress&&"function"==typeof e.onProgress){var m=p&&(p.size||p.length)||0;h.onProgress=function(t){if(!n||r._isRunningTask(n)){var o=t?t.loaded:0;e.onProgress({loaded:o,total:m})}}}e.onDownloadProgress&&(h.onDownloadProgress=e.onDownloadProgress),e.DataType&&(h.dataType=e.DataType),this.options.Timeout&&(h.timeout=this.options.Timeout),r.options.ForcePathStyle&&(h.pathStyle=r.options.ForcePathStyle),r.emit("before-send",h);var y=h.url.includes("accelerate."),v=h.qs?Object.keys(h.qs).map((function(e){return"".concat(e,"=").concat(h.qs[e])})).join("&"):"",b=v?h.url+"?"+v:h.url;e.tracker&&e.tracker.setParams({reqUrl:b,accelerate:y?"Y":"N"}),e.tracker&&e.tracker.parent&&e.tracker.parent.setParams({reqUrl:b,accelerate:y?"Y":"N"});var C=(r.options.Request||o)(h,(function(e){if(!e||"abort"!==e.error){var o={options:h,error:e&&e.error,statusCode:e&&e.statusCode||0,statusMessage:e&&e.statusMessage||"",headers:e&&e.headers||{},body:e&&e.body};r.emit("after-receive",o);var a,s=o.error,c=o.body,u={statusCode:o.statusCode,statusMessage:o.statusMessage,headers:o.headers},l=function(e,o){if(n&&r.off("inner-kill-task",k),!a){a=!0;var s={};u&&u.statusCode&&(s.statusCode=u.statusCode),u&&u.headers&&(s.headers=u.headers),e?(e=i.extend(e||{},s),t(e,null)):(o=i.extend(o||{},s),t(null,o)),C=null}};if(s)return l(i.error(s));var d,p=u.statusCode,g=2===Math.floor(p/100);if(f&&g)return l(null,{body:c});try{d=c&&c.indexOf("<")>-1&&c.indexOf(">")>-1&&i.xml2json(c)||{}}catch(e){d={}}var m=d&&d.Error;g?l(null,d):m?l(i.error(new Error(m.Message),{code:m.Code,error:m})):p?l(i.error(new Error(u.statusMessage),{code:""+p})):p&&l(i.error(new Error("statusCode error")))}})),k=function e(t){t.TaskId===n&&(C&&C.abort&&C.abort(),r.off("inner-kill-task",e))};n&&r.on("inner-kill-task",k)}}var g={getService:function(e,t){"function"==typeof e&&(t=e,e={});var r=this.options.Protocol||(i.isBrowser&&"object"===("undefined"==typeof location?"undefined":n(location))&&"http:"===location.protocol?"http:":"https:"),o=this.options.ServiceDomain,a=e.AppId||this.options.appId,s=e.Region;o?(o=o.replace(/\{\{AppId\}\}/gi,a||"").replace(/\{\{Region\}\}/gi,s||"").replace(/\{\{.*?\}\}/gi,""),/^[a-zA-Z]+:\/\//.test(o)||(o=r+"//"+o),"/"===o.slice(-1)&&(o=o.slice(0,-1))):o=s?r+"//cos."+s+".myqcloud.com":r+"//service.cos.myqcloud.com";var c="",u=s?"cos."+s+".myqcloud.com":"service.cos.myqcloud.com";u===o.replace(/^https?:\/\/([^/]+)(\/.*)?$/,"$1")&&(c=u),f.call(this,{Action:"name/cos:GetService",url:o,method:"GET",headers:e.Headers,SignHost:c},(function(e,r){if(e)return t(e);var n=r&&r.ListAllMyBucketsResult&&r.ListAllMyBucketsResult.Buckets&&r.ListAllMyBucketsResult.Buckets.Bucket||[];n=i.isArray(n)?n:[n];var o=r&&r.ListAllMyBucketsResult&&r.ListAllMyBucketsResult.Owner||{};t(null,{Buckets:n,Owner:o,statusCode:r.statusCode,headers:r.headers})}))},putBucket:function(e,t){var r=this,n="";if(e.BucketAZConfig){var o={BucketAZConfig:e.BucketAZConfig};n=i.json2xml({CreateBucketConfiguration:o})}f.call(this,{Action:"name/cos:PutBucket",method:"PUT",Bucket:e.Bucket,Region:e.Region,headers:e.Headers,body:n},(function(n,o){if(n)return t(n);var i=u({protocol:r.options.Protocol,domain:r.options.Domain,bucket:e.Bucket,region:e.Region,isLocation:!0});t(null,{Location:i,statusCode:o.statusCode,headers:o.headers})}))},headBucket:function(e,t){f.call(this,{Action:"name/cos:HeadBucket",Bucket:e.Bucket,Region:e.Region,headers:e.Headers,method:"HEAD"},t)},getBucket:function(e,t){var r={};r.prefix=e.Prefix||"",r.delimiter=e.Delimiter,r.marker=e.Marker,r["max-keys"]=e.MaxKeys,r["encoding-type"]=e.EncodingType,f.call(this,{Action:"name/cos:GetBucket",ResourceKey:r.prefix,method:"GET",Bucket:e.Bucket,Region:e.Region,headers:e.Headers,qs:r},(function(e,r){if(e)return t(e);var n=r.ListBucketResult||{},o=n.Contents||[],a=n.CommonPrefixes||[];o=i.isArray(o)?o:[o],a=i.isArray(a)?a:[a];var s=i.clone(n);i.extend(s,{Contents:o,CommonPrefixes:a,statusCode:r.statusCode,headers:r.headers}),t(null,s)}))},deleteBucket:function(e,t){f.call(this,{Action:"name/cos:DeleteBucket",Bucket:e.Bucket,Region:e.Region,headers:e.Headers,method:"DELETE"},(function(e,r){return e&&204===e.statusCode?t(null,{statusCode:e.statusCode}):e?t(e):void t(null,{statusCode:r.statusCode,headers:r.headers})}))},putBucketAcl:function(e,t){var r=e.Headers,n="";if(e.AccessControlPolicy){var o=i.clone(e.AccessControlPolicy||{}),a=o.Grants||o.Grant;a=i.isArray(a)?a:[a],delete o.Grant,delete o.Grants,o.AccessControlList={Grant:a},n=i.json2xml({AccessControlPolicy:o}),r["Content-Type"]="application/xml",r["Content-MD5"]=i.b64(i.md5(n))}i.each(r,(function(e,t){0===t.indexOf("x-cos-grant-")&&(r[t]=c(r[t]))})),f.call(this,{Action:"name/cos:PutBucketACL",method:"PUT",Bucket:e.Bucket,Region:e.Region,headers:r,action:"acl",body:n},(function(e,r){if(e)return t(e);t(null,{statusCode:r.statusCode,headers:r.headers})}))},getBucketAcl:function(e,t){f.call(this,{Action:"name/cos:GetBucketACL",method:"GET",Bucket:e.Bucket,Region:e.Region,headers:e.Headers,action:"acl"},(function(e,r){if(e)return t(e);var n=r.AccessControlPolicy||{},o=n.Owner||{},a=n.AccessControlList.Grant||[];a=i.isArray(a)?a:[a];var c=s(n);r.headers&&r.headers["x-cos-acl"]&&(c.ACL=r.headers["x-cos-acl"]),c=i.extend(c,{Owner:o,Grants:a,statusCode:r.statusCode,headers:r.headers}),t(null,c)}))},putBucketCors:function(e,t){var r=(e.CORSConfiguration||{}).CORSRules||e.CORSRules||[];r=i.clone(i.isArray(r)?r:[r]),i.each(r,(function(e){i.each(["AllowedOrigin","AllowedHeader","AllowedMethod","ExposeHeader"],(function(t){var r=t+"s",n=e[r]||e[t]||[];delete e[r],e[t]=i.isArray(n)?n:[n]}))}));var n={CORSRule:r};e.ResponseVary&&(n.ResponseVary=e.ResponseVary);var o=i.json2xml({CORSConfiguration:n}),a=e.Headers;a["Content-Type"]="application/xml",a["Content-MD5"]=i.b64(i.md5(o)),f.call(this,{Action:"name/cos:PutBucketCORS",method:"PUT",Bucket:e.Bucket,Region:e.Region,body:o,action:"cors",headers:a},(function(e,r){if(e)return t(e);t(null,{statusCode:r.statusCode,headers:r.headers})}))},getBucketCors:function(e,t){f.call(this,{Action:"name/cos:GetBucketCORS",method:"GET",Bucket:e.Bucket,Region:e.Region,headers:e.Headers,action:"cors"},(function(e,r){if(e)if(404===e.statusCode&&e.error&&"NoSuchCORSConfiguration"===e.error.Code){var n={CORSRules:[],statusCode:e.statusCode};e.headers&&(n.headers=e.headers),t(null,n)}else t(e);else{var o=r.CORSConfiguration||{},a=o.CORSRules||o.CORSRule||[];a=i.clone(i.isArray(a)?a:[a]);var s=o.ResponseVary;i.each(a,(function(e){i.each(["AllowedOrigin","AllowedHeader","AllowedMethod","ExposeHeader"],(function(t){var r=t+"s",n=e[r]||e[t]||[];delete e[t],e[r]=i.isArray(n)?n:[n]}))})),t(null,{CORSRules:a,ResponseVary:s,statusCode:r.statusCode,headers:r.headers})}}))},deleteBucketCors:function(e,t){f.call(this,{Action:"name/cos:DeleteBucketCORS",method:"DELETE",Bucket:e.Bucket,Region:e.Region,headers:e.Headers,action:"cors"},(function(e,r){return e&&204===e.statusCode?t(null,{statusCode:e.statusCode}):e?t(e):void t(null,{statusCode:r.statusCode||e.statusCode,headers:r.headers})}))},getBucketLocation:function(e,t){f.call(this,{Action:"name/cos:GetBucketLocation",method:"GET",Bucket:e.Bucket,Region:e.Region,headers:e.Headers,action:"location"},t)},getBucketPolicy:function(e,t){f.call(this,{Action:"name/cos:GetBucketPolicy",method:"GET",Bucket:e.Bucket,Region:e.Region,headers:e.Headers,action:"policy",rawBody:!0},(function(e,r){if(e)return e.statusCode&&403===e.statusCode?t(i.error(e,{ErrorStatus:"Access Denied"})):e.statusCode&&405===e.statusCode?t(i.error(e,{ErrorStatus:"Method Not Allowed"})):e.statusCode&&404===e.statusCode?t(i.error(e,{ErrorStatus:"Policy Not Found"})):t(e);var n={};try{n=JSON.parse(r.body)}catch(e){}t(null,{Policy:n,statusCode:r.statusCode,headers:r.headers})}))},putBucketPolicy:function(e,t){var r=e.Policy;try{"string"==typeof r&&(r=JSON.parse(r))}catch(e){}if(!r||"string"==typeof r)return t(i.error(new Error("Policy format error")));var n=JSON.stringify(r);r.version||(r.version="2.0");var o=e.Headers;o["Content-Type"]="application/json",o["Content-MD5"]=i.b64(i.md5(n)),f.call(this,{Action:"name/cos:PutBucketPolicy",method:"PUT",Bucket:e.Bucket,Region:e.Region,action:"policy",body:n,headers:o},(function(e,r){return e&&204===e.statusCode?t(null,{statusCode:e.statusCode}):e?t(e):void t(null,{statusCode:r.statusCode,headers:r.headers})}))},deleteBucketPolicy:function(e,t){f.call(this,{Action:"name/cos:DeleteBucketPolicy",method:"DELETE",Bucket:e.Bucket,Region:e.Region,headers:e.Headers,action:"policy"},(function(e,r){return e&&204===e.statusCode?t(null,{statusCode:e.statusCode}):e?t(e):void t(null,{statusCode:r.statusCode||e.statusCode,headers:r.headers})}))},putBucketTagging:function(e,t){var r=e.Tagging||{},n=r.TagSet||r.Tags||e.Tags||[];n=i.clone(i.isArray(n)?n:[n]);var o=i.json2xml({Tagging:{TagSet:{Tag:n}}}),a=e.Headers;a["Content-Type"]="application/xml",a["Content-MD5"]=i.b64(i.md5(o)),f.call(this,{Action:"name/cos:PutBucketTagging",method:"PUT",Bucket:e.Bucket,Region:e.Region,body:o,action:"tagging",headers:a},(function(e,r){return e&&204===e.statusCode?t(null,{statusCode:e.statusCode}):e?t(e):void t(null,{statusCode:r.statusCode,headers:r.headers})}))},getBucketTagging:function(e,t){f.call(this,{Action:"name/cos:GetBucketTagging",method:"GET",Bucket:e.Bucket,Region:e.Region,headers:e.Headers,action:"tagging"},(function(e,r){if(e)if(404!==e.statusCode||!e.error||"Not Found"!==e.error&&"NoSuchTagSet"!==e.error.Code)t(e);else{var n={Tags:[],statusCode:e.statusCode};e.headers&&(n.headers=e.headers),t(null,n)}else{var o=[];try{o=r.Tagging.TagSet.Tag||[]}catch(e){}o=i.clone(i.isArray(o)?o:[o]),t(null,{Tags:o,statusCode:r.statusCode,headers:r.headers})}}))},deleteBucketTagging:function(e,t){f.call(this,{Action:"name/cos:DeleteBucketTagging",method:"DELETE",Bucket:e.Bucket,Region:e.Region,headers:e.Headers,action:"tagging"},(function(e,r){return e&&204===e.statusCode?t(null,{statusCode:e.statusCode}):e?t(e):void t(null,{statusCode:r.statusCode,headers:r.headers})}))},putBucketLifecycle:function(e,t){var r=(e.LifecycleConfiguration||{}).Rules||e.Rules||[];r=i.clone(r);var n=i.json2xml({LifecycleConfiguration:{Rule:r}}),o=e.Headers;o["Content-Type"]="application/xml",o["Content-MD5"]=i.b64(i.md5(n)),f.call(this,{Action:"name/cos:PutBucketLifecycle",method:"PUT",Bucket:e.Bucket,Region:e.Region,body:n,action:"lifecycle",headers:o},(function(e,r){return e&&204===e.statusCode?t(null,{statusCode:e.statusCode}):e?t(e):void t(null,{statusCode:r.statusCode,headers:r.headers})}))},getBucketLifecycle:function(e,t){f.call(this,{Action:"name/cos:GetBucketLifecycle",method:"GET",Bucket:e.Bucket,Region:e.Region,headers:e.Headers,action:"lifecycle"},(function(e,r){if(e)if(404===e.statusCode&&e.error&&"NoSuchLifecycleConfiguration"===e.error.Code){var n={Rules:[],statusCode:e.statusCode};e.headers&&(n.headers=e.headers),t(null,n)}else t(e);else{var o=[];try{o=r.LifecycleConfiguration.Rule||[]}catch(e){}o=i.clone(i.isArray(o)?o:[o]),t(null,{Rules:o,statusCode:r.statusCode,headers:r.headers})}}))},deleteBucketLifecycle:function(e,t){f.call(this,{Action:"name/cos:DeleteBucketLifecycle",method:"DELETE",Bucket:e.Bucket,Region:e.Region,headers:e.Headers,action:"lifecycle"},(function(e,r){return e&&204===e.statusCode?t(null,{statusCode:e.statusCode}):e?t(e):void t(null,{statusCode:r.statusCode,headers:r.headers})}))},putBucketVersioning:function(e,t){if(e.VersioningConfiguration){var r=e.VersioningConfiguration||{},n=i.json2xml({VersioningConfiguration:r}),o=e.Headers;o["Content-Type"]="application/xml",o["Content-MD5"]=i.b64(i.md5(n)),f.call(this,{Action:"name/cos:PutBucketVersioning",method:"PUT",Bucket:e.Bucket,Region:e.Region,body:n,action:"versioning",headers:o},(function(e,r){return e&&204===e.statusCode?t(null,{statusCode:e.statusCode}):e?t(e):void t(null,{statusCode:r.statusCode,headers:r.headers})}))}else t(i.error(new Error("missing param VersioningConfiguration")))},getBucketVersioning:function(e,t){f.call(this,{Action:"name/cos:GetBucketVersioning",method:"GET",Bucket:e.Bucket,Region:e.Region,headers:e.Headers,action:"versioning"},(function(e,r){e||!r.VersioningConfiguration&&(r.VersioningConfiguration={}),t(e,r)}))},putBucketReplication:function(e,t){var r=i.clone(e.ReplicationConfiguration),n=i.json2xml({ReplicationConfiguration:r});n=(n=n.replace(/<(\/?)Rules>/gi,"<$1Rule>")).replace(/<(\/?)Tags>/gi,"<$1Tag>");var o=e.Headers;o["Content-Type"]="application/xml",o["Content-MD5"]=i.b64(i.md5(n)),f.call(this,{Action:"name/cos:PutBucketReplication",method:"PUT",Bucket:e.Bucket,Region:e.Region,body:n,action:"replication",headers:o},(function(e,r){return e&&204===e.statusCode?t(null,{statusCode:e.statusCode}):e?t(e):void t(null,{statusCode:r.statusCode,headers:r.headers})}))},getBucketReplication:function(e,t){f.call(this,{Action:"name/cos:GetBucketReplication",method:"GET",Bucket:e.Bucket,Region:e.Region,headers:e.Headers,action:"replication"},(function(e,r){if(e)if(404!==e.statusCode||!e.error||"Not Found"!==e.error&&"ReplicationConfigurationnotFoundError"!==e.error.Code)t(e);else{var n={ReplicationConfiguration:{Rules:[]},statusCode:e.statusCode};e.headers&&(n.headers=e.headers),t(null,n)}else!r.ReplicationConfiguration&&(r.ReplicationConfiguration={}),r.ReplicationConfiguration.Rule&&(r.ReplicationConfiguration.Rules=i.makeArray(r.ReplicationConfiguration.Rule),delete r.ReplicationConfiguration.Rule),t(e,r)}))},deleteBucketReplication:function(e,t){f.call(this,{Action:"name/cos:DeleteBucketReplication",method:"DELETE",Bucket:e.Bucket,Region:e.Region,headers:e.Headers,action:"replication"},(function(e,r){return e&&204===e.statusCode?t(null,{statusCode:e.statusCode}):e?t(e):void t(null,{statusCode:r.statusCode,headers:r.headers})}))},putBucketWebsite:function(e,t){if(e.WebsiteConfiguration){var r=i.clone(e.WebsiteConfiguration||{}),n=r.RoutingRules||r.RoutingRule||[];n=i.isArray(n)?n:[n],delete r.RoutingRule,delete r.RoutingRules,n.length&&(r.RoutingRules={RoutingRule:n});var o=i.json2xml({WebsiteConfiguration:r}),a=e.Headers;a["Content-Type"]="application/xml",a["Content-MD5"]=i.b64(i.md5(o)),f.call(this,{Action:"name/cos:PutBucketWebsite",method:"PUT",Bucket:e.Bucket,Region:e.Region,body:o,action:"website",headers:a},(function(e,r){return e&&204===e.statusCode?t(null,{statusCode:e.statusCode}):e?t(e):void t(null,{statusCode:r.statusCode,headers:r.headers})}))}else t(i.error(new Error("missing param WebsiteConfiguration")))},getBucketWebsite:function(e,t){f.call(this,{Action:"name/cos:GetBucketWebsite",method:"GET",Bucket:e.Bucket,Region:e.Region,Key:e.Key,headers:e.Headers,action:"website"},(function(e,r){if(e)if(404===e.statusCode&&"NoSuchWebsiteConfiguration"===e.error.Code){var n={WebsiteConfiguration:{},statusCode:e.statusCode};e.headers&&(n.headers=e.headers),t(null,n)}else t(e);else{var o=r.WebsiteConfiguration||{};if(o.RoutingRules){var a=i.clone(o.RoutingRules.RoutingRule||[]);a=i.makeArray(a),o.RoutingRules=a}t(null,{WebsiteConfiguration:o,statusCode:r.statusCode,headers:r.headers})}}))},deleteBucketWebsite:function(e,t){f.call(this,{Action:"name/cos:DeleteBucketWebsite",method:"DELETE",Bucket:e.Bucket,Region:e.Region,headers:e.Headers,action:"website"},(function(e,r){return e&&204===e.statusCode?t(null,{statusCode:e.statusCode}):e?t(e):void t(null,{statusCode:r.statusCode,headers:r.headers})}))},putBucketReferer:function(e,t){if(e.RefererConfiguration){var r=i.clone(e.RefererConfiguration||{}),n=r.DomainList||{},o=n.Domains||n.Domain||[];(o=i.isArray(o)?o:[o]).length&&(r.DomainList={Domain:o});var a=i.json2xml({RefererConfiguration:r}),s=e.Headers;s["Content-Type"]="application/xml",s["Content-MD5"]=i.b64(i.md5(a)),f.call(this,{Action:"name/cos:PutBucketReferer",method:"PUT",Bucket:e.Bucket,Region:e.Region,body:a,action:"referer",headers:s},(function(e,r){return e&&204===e.statusCode?t(null,{statusCode:e.statusCode}):e?t(e):void t(null,{statusCode:r.statusCode,headers:r.headers})}))}else t(i.error(new Error("missing param RefererConfiguration")))},getBucketReferer:function(e,t){f.call(this,{Action:"name/cos:GetBucketReferer",method:"GET",Bucket:e.Bucket,Region:e.Region,Key:e.Key,headers:e.Headers,action:"referer"},(function(e,r){if(e)if(404===e.statusCode&&"NoSuchRefererConfiguration"===e.error.Code){var n={WebsiteConfiguration:{},statusCode:e.statusCode};e.headers&&(n.headers=e.headers),t(null,n)}else t(e);else{var o=r.RefererConfiguration||{};if(o.DomainList){var a=i.makeArray(o.DomainList.Domain||[]);o.DomainList={Domains:a}}t(null,{RefererConfiguration:o,statusCode:r.statusCode,headers:r.headers})}}))},putBucketDomain:function(e,t){var r=(e.DomainConfiguration||{}).DomainRule||e.DomainRule||[];r=i.clone(r);var n=i.json2xml({DomainConfiguration:{DomainRule:r}}),o=e.Headers;o["Content-Type"]="application/xml",o["Content-MD5"]=i.b64(i.md5(n)),f.call(this,{Action:"name/cos:PutBucketDomain",method:"PUT",Bucket:e.Bucket,Region:e.Region,body:n,action:"domain",headers:o},(function(e,r){return e&&204===e.statusCode?t(null,{statusCode:e.statusCode}):e?t(e):void t(null,{statusCode:r.statusCode,headers:r.headers})}))},getBucketDomain:function(e,t){f.call(this,{Action:"name/cos:GetBucketDomain",method:"GET",Bucket:e.Bucket,Region:e.Region,headers:e.Headers,action:"domain"},(function(e,r){if(e)return t(e);var n=[];try{n=r.DomainConfiguration.DomainRule||[]}catch(e){}n=i.clone(i.isArray(n)?n:[n]),t(null,{DomainRule:n,statusCode:r.statusCode,headers:r.headers})}))},deleteBucketDomain:function(e,t){f.call(this,{Action:"name/cos:DeleteBucketDomain",method:"DELETE",Bucket:e.Bucket,Region:e.Region,headers:e.Headers,action:"domain"},(function(e,r){return e&&204===e.statusCode?t(null,{statusCode:e.statusCode}):e?t(e):void t(null,{statusCode:r.statusCode,headers:r.headers})}))},putBucketOrigin:function(e,t){var r=(e.OriginConfiguration||{}).OriginRule||e.OriginRule||[];r=i.clone(r);var n=i.json2xml({OriginConfiguration:{OriginRule:r}}),o=e.Headers;o["Content-Type"]="application/xml",o["Content-MD5"]=i.b64(i.md5(n)),f.call(this,{Action:"name/cos:PutBucketOrigin",method:"PUT",Bucket:e.Bucket,Region:e.Region,body:n,action:"origin",headers:o},(function(e,r){return e&&204===e.statusCode?t(null,{statusCode:e.statusCode}):e?t(e):void t(null,{statusCode:r.statusCode,headers:r.headers})}))},getBucketOrigin:function(e,t){f.call(this,{Action:"name/cos:GetBucketOrigin",method:"GET",Bucket:e.Bucket,Region:e.Region,headers:e.Headers,action:"origin"},(function(e,r){if(e)return t(e);var n=[];try{n=r.OriginConfiguration.OriginRule||[]}catch(e){}n=i.clone(i.isArray(n)?n:[n]),t(null,{OriginRule:n,statusCode:r.statusCode,headers:r.headers})}))},deleteBucketOrigin:function(e,t){f.call(this,{Action:"name/cos:DeleteBucketOrigin",method:"DELETE",Bucket:e.Bucket,Region:e.Region,headers:e.Headers,action:"origin"},(function(e,r){return e&&204===e.statusCode?t(null,{statusCode:e.statusCode}):e?t(e):void t(null,{statusCode:r.statusCode,headers:r.headers})}))},putBucketLogging:function(e,t){var r=i.json2xml({BucketLoggingStatus:e.BucketLoggingStatus||""}),n=e.Headers;n["Content-Type"]="application/xml",n["Content-MD5"]=i.b64(i.md5(r)),f.call(this,{Action:"name/cos:PutBucketLogging",method:"PUT",Bucket:e.Bucket,Region:e.Region,body:r,action:"logging",headers:n},(function(e,r){return e&&204===e.statusCode?t(null,{statusCode:e.statusCode}):e?t(e):void t(null,{statusCode:r.statusCode,headers:r.headers})}))},getBucketLogging:function(e,t){f.call(this,{Action:"name/cos:GetBucketLogging",method:"GET",Bucket:e.Bucket,Region:e.Region,headers:e.Headers,action:"logging"},(function(e,r){if(e)return t(e);t(null,{BucketLoggingStatus:r.BucketLoggingStatus,statusCode:r.statusCode,headers:r.headers})}))},putBucketInventory:function(e,t){return a.call(this,"PUT",e,t)},postBucketInventory:function(e,t){return a.call(this,"POST",e,t)},getBucketInventory:function(e,t){f.call(this,{Action:"name/cos:GetBucketInventory",method:"GET",Bucket:e.Bucket,Region:e.Region,headers:e.Headers,action:"inventory",qs:{id:e.Id}},(function(e,r){if(e)return t(e);var n=r.InventoryConfiguration;if(n&&n.OptionalFields&&n.OptionalFields.Field){var o=n.OptionalFields.Field;i.isArray(o)||(o=[o]),n.OptionalFields=o}if(n.Destination&&n.Destination.COSBucketDestination&&n.Destination.COSBucketDestination.Encryption){var a=n.Destination.COSBucketDestination.Encryption;Object.keys(a).indexOf("SSE-COS")>-1&&(a.SSECOS=a["SSE-COS"],delete a["SSE-COS"])}t(null,{InventoryConfiguration:n,statusCode:r.statusCode,headers:r.headers})}))},listBucketInventory:function(e,t){f.call(this,{Action:"name/cos:ListBucketInventory",method:"GET",Bucket:e.Bucket,Region:e.Region,headers:e.Headers,action:"inventory",qs:{"continuation-token":e.ContinuationToken}},(function(e,r){if(e)return t(e);var n=r.ListInventoryConfigurationResult,o=n.InventoryConfiguration||[];o=i.isArray(o)?o:[o],delete n.InventoryConfiguration,i.each(o,(function(e){if(e&&e.OptionalFields&&e.OptionalFields.Field){var t=e.OptionalFields.Field;i.isArray(t)||(t=[t]),e.OptionalFields=t}if(e.Destination&&e.Destination.COSBucketDestination&&e.Destination.COSBucketDestination.Encryption){var r=e.Destination.COSBucketDestination.Encryption;Object.keys(r).indexOf("SSE-COS")>-1&&(r.SSECOS=r["SSE-COS"],delete r["SSE-COS"])}})),n.InventoryConfigurations=o,i.extend(n,{statusCode:r.statusCode,headers:r.headers}),t(null,n)}))},deleteBucketInventory:function(e,t){f.call(this,{Action:"name/cos:DeleteBucketInventory",method:"DELETE",Bucket:e.Bucket,Region:e.Region,headers:e.Headers,action:"inventory",qs:{id:e.Id}},(function(e,r){return e&&204===e.statusCode?t(null,{statusCode:e.statusCode}):e?t(e):void t(null,{statusCode:r.statusCode,headers:r.headers})}))},putBucketAccelerate:function(e,t){if(e.AccelerateConfiguration){var r={AccelerateConfiguration:e.AccelerateConfiguration||{}},n=i.json2xml(r),o={"Content-Type":"application/xml"};o["Content-MD5"]=i.b64(i.md5(n)),f.call(this,{Action:"name/cos:PutBucketAccelerate",method:"PUT",Bucket:e.Bucket,Region:e.Region,body:n,action:"accelerate",headers:o},(function(e,r){if(e)return t(e);t(null,{statusCode:r.statusCode,headers:r.headers})}))}else t(i.error(new Error("missing param AccelerateConfiguration")))},getBucketAccelerate:function(e,t){f.call(this,{Action:"name/cos:GetBucketAccelerate",method:"GET",Bucket:e.Bucket,Region:e.Region,action:"accelerate"},(function(e,r){e||!r.AccelerateConfiguration&&(r.AccelerateConfiguration={}),t(e,r)}))},putBucketEncryption:function(e,t){var r=e.ServerSideEncryptionConfiguration||{},n=r.Rule||r.Rules||[],o=i.json2xml({ServerSideEncryptionConfiguration:{Rule:n}}),a=e.Headers;a["Content-Type"]="application/xml",a["Content-MD5"]=i.b64(i.md5(o)),f.call(this,{Action:"name/cos:PutBucketEncryption",method:"PUT",Bucket:e.Bucket,Region:e.Region,body:o,action:"encryption",headers:a},(function(e,r){return e&&204===e.statusCode?t(null,{statusCode:e.statusCode}):e?t(e):void t(null,{statusCode:r.statusCode,headers:r.headers})}))},getBucketEncryption:function(e,t){f.call(this,{Action:"name/cos:GetBucketEncryption",method:"GET",Bucket:e.Bucket,Region:e.Region,headers:e.Headers,action:"encryption"},(function(e,r){if(e)if(404===e.statusCode&&"NoSuchEncryptionConfiguration"===e.code){var n={EncryptionConfiguration:{Rules:[]},statusCode:e.statusCode};e.headers&&(n.headers=e.headers),t(null,n)}else t(e);else{var o=i.makeArray(r.EncryptionConfiguration&&r.EncryptionConfiguration.Rule||[]);r.EncryptionConfiguration={Rules:o},t(e,r)}}))},deleteBucketEncryption:function(e,t){f.call(this,{Action:"name/cos:DeleteBucketReplication",method:"DELETE",Bucket:e.Bucket,Region:e.Region,headers:e.Headers,action:"encryption"},(function(e,r){return e&&204===e.statusCode?t(null,{statusCode:e.statusCode}):e?t(e):void t(null,{statusCode:r.statusCode,headers:r.headers})}))},getObject:function(e,t){var r=e.Query||{},n=e.QueryString||"",o=i.throttleOnProgress.call(this,0,e.onProgress),a=e.tracker;a&&a.setParams({signStartTime:(new Date).getTime()}),r["response-content-type"]=e.ResponseContentType,r["response-content-language"]=e.ResponseContentLanguage,r["response-expires"]=e.ResponseExpires,r["response-cache-control"]=e.ResponseCacheControl,r["response-content-disposition"]=e.ResponseContentDisposition,r["response-content-encoding"]=e.ResponseContentEncoding,f.call(this,{Action:"name/cos:GetObject",method:"GET",Bucket:e.Bucket,Region:e.Region,Key:e.Key,VersionId:e.VersionId,DataType:e.DataType,headers:e.Headers,qs:r,qsStr:n,rawBody:!0,onDownloadProgress:o,tracker:a},(function(r,n){if(o(null,!0),r){var a=r.statusCode;return e.Headers["If-Modified-Since"]&&a&&304===a?t(null,{NotModified:!0}):t(r)}t(null,{Body:n.body,ETag:i.attr(n.headers,"etag",""),statusCode:n.statusCode,headers:n.headers})}))},headObject:function(e,t){f.call(this,{Action:"name/cos:HeadObject",method:"HEAD",Bucket:e.Bucket,Region:e.Region,Key:e.Key,VersionId:e.VersionId,headers:e.Headers},(function(r,n){if(r){var o=r.statusCode;return e.Headers["If-Modified-Since"]&&o&&304===o?t(null,{NotModified:!0,statusCode:o}):t(r)}n.ETag=i.attr(n.headers,"etag",""),t(null,n)}))},listObjectVersions:function(e,t){var r={};r.prefix=e.Prefix||"",r.delimiter=e.Delimiter,r["key-marker"]=e.KeyMarker,r["version-id-marker"]=e.VersionIdMarker,r["max-keys"]=e.MaxKeys,r["encoding-type"]=e.EncodingType,f.call(this,{Action:"name/cos:GetBucketObjectVersions",ResourceKey:r.prefix,method:"GET",Bucket:e.Bucket,Region:e.Region,headers:e.Headers,qs:r,action:"versions"},(function(e,r){if(e)return t(e);var n=r.ListVersionsResult||{},o=n.DeleteMarker||[];o=i.isArray(o)?o:[o];var a=n.Version||[];a=i.isArray(a)?a:[a];var s=i.clone(n);delete s.DeleteMarker,delete s.Version,i.extend(s,{DeleteMarkers:o,Versions:a,statusCode:r.statusCode,headers:r.headers}),t(null,s)}))},putObject:function(e,t){var r=this,n=e.ContentLength,o=i.throttleOnProgress.call(r,n,e.onProgress),a=e.Headers;a["Cache-Control"]||a["cache-control"]||(a["Cache-Control"]=""),a["Content-Type"]||a["content-type"]||(a["Content-Type"]=e.Body&&e.Body.type||"");var s=e.UploadAddMetaMd5||r.options.UploadAddMetaMd5||r.options.UploadCheckContentMd5,c=e.tracker;s&&c&&c.setParams({md5StartTime:(new Date).getTime()}),i.getBodyMd5(s,e.Body,(function(s){s&&(c&&c.setParams({md5EndTime:(new Date).getTime()}),r.options.UploadCheckContentMd5&&(a["Content-MD5"]=i.b64(s)),(e.UploadAddMetaMd5||r.options.UploadAddMetaMd5)&&(a["x-cos-meta-md5"]=s)),void 0!==e.ContentLength&&(a["Content-Length"]=e.ContentLength),o(null,!0),f.call(r,{Action:"name/cos:PutObject",TaskId:e.TaskId,method:"PUT",Bucket:e.Bucket,Region:e.Region,Key:e.Key,headers:e.Headers,qs:e.Query,body:e.Body,onProgress:o,tracker:c},(function(a,s){if(a)return o(null,!0),t(a);o({loaded:n,total:n},!0);var c=u({ForcePathStyle:r.options.ForcePathStyle,protocol:r.options.Protocol,domain:r.options.Domain,bucket:e.Bucket,region:r.options.UseAccelerate?"accelerate":e.Region,object:e.Key});c=c.substr(c.indexOf("://")+3),s.Location=c,s.ETag=i.attr(s.headers,"etag",""),t(null,s)}))}),e.onHashProgress)},deleteObject:function(e,t){f.call(this,{Action:"name/cos:DeleteObject",method:"DELETE",Bucket:e.Bucket,Region:e.Region,Key:e.Key,headers:e.Headers,VersionId:e.VersionId,action:e.Recursive?"recursive":""},(function(e,r){if(e){var n=e.statusCode;return n&&404===n?t(null,{BucketNotFound:!0,statusCode:n}):t(e)}t(null,{statusCode:r.statusCode,headers:r.headers})}))},getObjectAcl:function(e,t){var r={};e.VersionId&&(r.versionId=e.VersionId),f.call(this,{Action:"name/cos:GetObjectACL",method:"GET",Bucket:e.Bucket,Region:e.Region,Key:e.Key,headers:e.Headers,qs:r,action:"acl"},(function(e,r){if(e)return t(e);var n=r.AccessControlPolicy||{},o=n.Owner||{},a=n.AccessControlList&&n.AccessControlList.Grant||[];a=i.isArray(a)?a:[a];var c=s(n);delete c.GrantWrite,r.headers&&r.headers["x-cos-acl"]&&(c.ACL=r.headers["x-cos-acl"]),c=i.extend(c,{Owner:o,Grants:a,statusCode:r.statusCode,headers:r.headers}),t(null,c)}))},putObjectAcl:function(e,t){var r=e.Headers,n="";if(e.AccessControlPolicy){var o=i.clone(e.AccessControlPolicy||{}),a=o.Grants||o.Grant;a=i.isArray(a)?a:[a],delete o.Grant,delete o.Grants,o.AccessControlList={Grant:a},n=i.json2xml({AccessControlPolicy:o}),r["Content-Type"]="application/xml",r["Content-MD5"]=i.b64(i.md5(n))}i.each(r,(function(e,t){0===t.indexOf("x-cos-grant-")&&(r[t]=c(r[t]))})),f.call(this,{Action:"name/cos:PutObjectACL",method:"PUT",Bucket:e.Bucket,Region:e.Region,Key:e.Key,action:"acl",headers:r,body:n},(function(e,r){if(e)return t(e);t(null,{statusCode:r.statusCode,headers:r.headers})}))},optionsObject:function(e,t){var r=e.Headers;r.Origin=e.Origin,r["Access-Control-Request-Method"]=e.AccessControlRequestMethod,r["Access-Control-Request-Headers"]=e.AccessControlRequestHeaders,f.call(this,{Action:"name/cos:OptionsObject",method:"OPTIONS",Bucket:e.Bucket,Region:e.Region,Key:e.Key,headers:r},(function(e,r){if(e)return e.statusCode&&403===e.statusCode?t(null,{OptionsForbidden:!0,statusCode:e.statusCode}):t(e);var n=r.headers||{};t(null,{AccessControlAllowOrigin:n["access-control-allow-origin"],AccessControlAllowMethods:n["access-control-allow-methods"],AccessControlAllowHeaders:n["access-control-allow-headers"],AccessControlExposeHeaders:n["access-control-expose-headers"],AccessControlMaxAge:n["access-control-max-age"],statusCode:r.statusCode,headers:r.headers})}))},putObjectCopy:function(e,t){var r=this,n=e.Headers;n["Cache-Control"]||n["cache-control"]||(n["Cache-Control"]="");var o=e.CopySource||"",a=i.getSourceParams.call(this,o);if(a){var s=a.Bucket,c=a.Region,l=decodeURIComponent(a.Key);f.call(this,{Scope:[{action:"name/cos:GetObject",bucket:s,region:c,prefix:l},{action:"name/cos:PutObject",bucket:e.Bucket,region:e.Region,prefix:e.Key}],method:"PUT",Bucket:e.Bucket,Region:e.Region,Key:e.Key,VersionId:e.VersionId,headers:e.Headers},(function(n,o){if(n)return t(n);var a=i.clone(o.CopyObjectResult||{}),s=u({ForcePathStyle:r.options.ForcePathStyle,protocol:r.options.Protocol,domain:r.options.Domain,bucket:e.Bucket,region:e.Region,object:e.Key,isLocation:!0});i.extend(a,{Location:s,statusCode:o.statusCode,headers:o.headers}),t(null,a)}))}else t(i.error(new Error("CopySource format error")))},deleteMultipleObject:function(e,t){var r=e.Objects||[],n=e.Quiet;r=i.isArray(r)?r:[r];var o=i.json2xml({Delete:{Object:r,Quiet:n||!1}}),a=e.Headers;a["Content-Type"]="application/xml",a["Content-MD5"]=i.b64(i.md5(o));var s=i.map(r,(function(t){return{action:"name/cos:DeleteObject",bucket:e.Bucket,region:e.Region,prefix:t.Key}}));f.call(this,{Scope:s,method:"POST",Bucket:e.Bucket,Region:e.Region,body:o,action:"delete",headers:a},(function(e,r){if(e)return t(e);var n=r.DeleteResult||{},o=n.Deleted||[],a=n.Error||[];o=i.isArray(o)?o:[o],a=i.isArray(a)?a:[a];var s=i.clone(n);i.extend(s,{Error:a,Deleted:o,statusCode:r.statusCode,headers:r.headers}),t(null,s)}))},restoreObject:function(e,t){var r=e.Headers;if(e.RestoreRequest){var n=e.RestoreRequest||{},o=i.json2xml({RestoreRequest:n});r["Content-Type"]="application/xml",r["Content-MD5"]=i.b64(i.md5(o)),f.call(this,{Action:"name/cos:RestoreObject",method:"POST",Bucket:e.Bucket,Region:e.Region,Key:e.Key,VersionId:e.VersionId,body:o,action:"restore",headers:r},t)}else t(i.error(new Error("missing param RestoreRequest")))},putObjectTagging:function(e,t){var r=e.Tagging||{},n=r.TagSet||r.Tags||e.Tags||[];n=i.clone(i.isArray(n)?n:[n]);var o=i.json2xml({Tagging:{TagSet:{Tag:n}}}),a=e.Headers;a["Content-Type"]="application/xml",a["Content-MD5"]=i.b64(i.md5(o)),f.call(this,{Action:"name/cos:PutObjectTagging",method:"PUT",Bucket:e.Bucket,Key:e.Key,Region:e.Region,body:o,action:"tagging",headers:a,VersionId:e.VersionId},(function(e,r){return e&&204===e.statusCode?t(null,{statusCode:e.statusCode}):e?t(e):void t(null,{statusCode:r.statusCode,headers:r.headers})}))},getObjectTagging:function(e,t){f.call(this,{Action:"name/cos:GetObjectTagging",method:"GET",Key:e.Key,Bucket:e.Bucket,Region:e.Region,headers:e.Headers,action:"tagging",VersionId:e.VersionId},(function(e,r){if(e)if(404!==e.statusCode||!e.error||"Not Found"!==e.error&&"NoSuchTagSet"!==e.error.Code)t(e);else{var n={Tags:[],statusCode:e.statusCode};e.headers&&(n.headers=e.headers),t(null,n)}else{var o=[];try{o=r.Tagging.TagSet.Tag||[]}catch(e){}o=i.clone(i.isArray(o)?o:[o]),t(null,{Tags:o,statusCode:r.statusCode,headers:r.headers})}}))},deleteObjectTagging:function(e,t){f.call(this,{Action:"name/cos:DeleteObjectTagging",method:"DELETE",Bucket:e.Bucket,Region:e.Region,Key:e.Key,headers:e.Headers,action:"tagging",VersionId:e.VersionId},(function(e,r){return e&&204===e.statusCode?t(null,{statusCode:e.statusCode}):e?t(e):void t(null,{statusCode:r.statusCode,headers:r.headers})}))},selectObjectContent:function(e,t){if(!e.SelectType)return t(i.error(new Error("missing param SelectType")));var r=e.SelectRequest||{},n=i.json2xml({SelectRequest:r}),o=e.Headers;o["Content-Type"]="application/xml",o["Content-MD5"]=i.b64(i.md5(n)),f.call(this,{Action:"name/cos:GetObject",method:"POST",Bucket:e.Bucket,Region:e.Region,Key:e.Key,headers:e.Headers,action:"select",qs:{"select-type":e.SelectType},VersionId:e.VersionId,body:n,DataType:"arraybuffer",rawBody:!0},(function(e,r){if(e&&204===e.statusCode)return t(null,{statusCode:e.statusCode});if(e)return t(e);var n=i.parseSelectPayload(r.body);t(null,{statusCode:r.statusCode,headers:r.headers,Body:n.body,Payload:n.payload})}))},appendObject:function(e,t){var r=e.Headers;r["Cache-Control"]||r["cache-control"]||(r["Cache-Control"]=""),r["Content-Type"]||r["content-type"]||(r["Content-Type"]=e.Body&&e.Body.type||""),f.call(this,{Action:"name/cos:AppendObject",method:"POST",Bucket:e.Bucket,Region:e.Region,action:"append",Key:e.Key,body:e.Body,qs:{position:e.Position},headers:e.Headers},(function(e,r){if(e)return t(e);t(null,r)}))},uploadPartCopy:function(e,t){var r=e.CopySource||"",n=i.getSourceParams.call(this,r);if(n){var o=n.Bucket,a=n.Region,s=decodeURIComponent(n.Key);f.call(this,{Scope:[{action:"name/cos:GetObject",bucket:o,region:a,prefix:s},{action:"name/cos:PutObject",bucket:e.Bucket,region:e.Region,prefix:e.Key}],method:"PUT",Bucket:e.Bucket,Region:e.Region,Key:e.Key,VersionId:e.VersionId,qs:{partNumber:e.PartNumber,uploadId:e.UploadId},headers:e.Headers},(function(e,r){if(e)return t(e);var n=i.clone(r.CopyPartResult||{});i.extend(n,{statusCode:r.statusCode,headers:r.headers}),t(null,n)}))}else t(i.error(new Error("CopySource format error")))},multipartInit:function(e,t){var r=this,n=e.Headers,o=e.tracker;n["Cache-Control"]||n["cache-control"]||(n["Cache-Control"]=""),n["Content-Type"]||n["content-type"]||(n["Content-Type"]=e.Body&&e.Body.type||"");var a=e.Body&&(e.UploadAddMetaMd5||r.options.UploadAddMetaMd5);a&&o&&o.setParams({md5StartTime:(new Date).getTime()}),i.getBodyMd5(a,e.Body,(function(n){n&&(e.Headers["x-cos-meta-md5"]=n),a&&o&&o.setParams({md5EndTime:(new Date).getTime()}),f.call(r,{Action:"name/cos:InitiateMultipartUpload",method:"POST",Bucket:e.Bucket,Region:e.Region,Key:e.Key,action:"uploads",headers:e.Headers,qs:e.Query,tracker:o},(function(e,r){return e?(o&&o.parent&&o.parent.setParams({errorNode:"multipartInit"}),t(e)):(r=i.clone(r||{}))&&r.InitiateMultipartUploadResult?t(null,i.extend(r.InitiateMultipartUploadResult,{statusCode:r.statusCode,headers:r.headers})):void t(null,r)}))}),e.onHashProgress)},multipartUpload:function(e,t){var r=this;i.getFileSize("multipartUpload",e,(function(){var n=e.tracker,o=r.options.UploadCheckContentMd5;o&&n&&n.setParams({md5StartTime:(new Date).getTime()}),i.getBodyMd5(o,e.Body,(function(a){a&&(e.Headers["Content-MD5"]=i.b64(a)),o&&n&&n.setParams({md5EndTime:(new Date).getTime()}),n&&n.setParams({partNumber:e.PartNumber}),f.call(r,{Action:"name/cos:UploadPart",TaskId:e.TaskId,method:"PUT",Bucket:e.Bucket,Region:e.Region,Key:e.Key,qs:{partNumber:e.PartNumber,uploadId:e.UploadId},headers:e.Headers,onProgress:e.onProgress,body:e.Body||null,tracker:n},(function(e,r){if(e)return n&&n.parent&&n.parent.setParams({errorNode:"multipartUpload"}),t(e);t(null,{ETag:i.attr(r.headers,"etag",""),statusCode:r.statusCode,headers:r.headers})}))}))}))},multipartComplete:function(e,t){for(var r=this,n=e.UploadId,o=e.Parts,a=e.tracker,s=0,c=o.length;s-1?function(e){var t=e.match(/q-url-param-list.*?(?=&)/g)[0],r="q-url-param-list="+encodeURIComponent(t.replace(/q-url-param-list=/,"")).toLowerCase(),n=new RegExp(t,"g");return e.replace(n,r)}(r.Authorization):"sign="+encodeURIComponent(r.Authorization)),r.SecurityToken&&(n+="&x-cos-security-token="+r.SecurityToken),r.ClientIP&&(n+="&clientIP="+r.ClientIP),r.ClientUA&&(n+="&clientUA="+r.ClientUA),r.Token&&(n+="&token="+r.Token),a&&(n+="&"+a),setTimeout((function(){t(null,{Url:n})}))}}));return p?(s+="?"+p.Authorization+(p.SecurityToken?"&x-cos-security-token="+p.SecurityToken:""),a&&(s+="&"+a)):a&&(s+="?"+a),s},getAuth:function(e){return i.getAuth({SecretId:e.SecretId||this.options.SecretId||"",SecretKey:e.SecretKey||this.options.SecretKey||"",Bucket:e.Bucket,Region:e.Region,Method:e.Method,Key:e.Key,Query:e.Query,Headers:e.Headers,Expires:e.Expires,UseRawKey:this.options.UseRawKey,SystemClockOffset:this.options.SystemClockOffset})}};e.exports.init=function(e,t){t.transferToTaskMethod(g,"putObject"),i.each(g,(function(t,r){e.prototype[r]=i.apiWrapper(r,t),function(e,t,r){i.each(["Cors","Acl"],(function(n){if(e.slice(-n.length)===n){var o=e.slice(0,-n.length)+n.toUpperCase(),a=i.apiWrapper(e,t);r[o]=function(){a.apply(this,arguments)}}}))}(r,t,e.prototype)}))}},function(e,t,r){var n=r(0),o=function(e){switch(n(e)){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}},i=function(e,t,r){var n={},o=t.getAllResponseHeaders();return o&&o.length>0&&o.trim().split("\n").forEach((function(e){if(e){var t=e.indexOf(":"),r=e.substr(0,t).trim().toLowerCase(),o=e.substr(t+1).trim();n[r]=o}})),{error:e,statusCode:t.status,statusMessage:t.statusText,headers:n,body:r}},a=function(e,t){return t||"text"!==t?e.response:e.responseText};e.exports=function(e,t){var r,s,c,u,l=(e.method||"GET").toUpperCase(),d=e.url;if(e.qs){var p=(r=e.qs,s=s||"&",c=c||"=",null===r&&(r=void 0),"object"===n(r)?Object.keys(r).map((function(e){var t=encodeURIComponent(o(e))+c;return Array.isArray(r[e])?r[e].map((function(e){return t+encodeURIComponent(o(e))})).join(s):t+encodeURIComponent(o(r[e]))})).filter(Boolean).join(s):u?encodeURIComponent(o(u))+c+encodeURIComponent(o(r)):"");p&&(d+=(-1===d.indexOf("?")?"?":"&")+p)}var f=new XMLHttpRequest;if(f.open(l,d,!0),f.responseType=e.dataType||"text",e.xhrFields)for(var h in e.xhrFields)f[h]=e.xhrFields[h];var g=e.headers;if(g)for(var m in g)g.hasOwnProperty(m)&&"content-length"!==m.toLowerCase()&&"user-agent"!==m.toLowerCase()&&"origin"!==m.toLowerCase()&&"host"!==m.toLowerCase()&&f.setRequestHeader(m,g[m]);return e.onProgress&&f.upload&&(f.upload.onprogress=e.onProgress),e.onDownloadProgress&&(f.onprogress=e.onDownloadProgress),e.timeout&&(f.timeout=e.timeout),f.ontimeout=function(e){var r=new Error("timeout");t(i(r,f))},f.onload=function(){t(i(null,f,a(f,e.dataType)))},f.onerror=function(r){var n=a(f,e.dataType);if(n)t(i(null,f,n));else{var o=f.statusText;o||0!==f.status||(o=new Error("CORS blocked or network error")),t(i(o,f,n))}},f.send(e.body||""),f}},function(e,t,r){var n=r(0),o=r(9),i=r(32),a=r(8).EventProxy,s=r(1),c=r(6);function u(e,t){var r=e.TaskId,n=e.Bucket,c=e.Region,u=e.Key,p=e.StorageClass,f=this,h={},g=e.FileSize,m=e.SliceSize,y=Math.ceil(g/m),v=0,b=s.throttleOnProgress.call(f,g,e.onHashProgress),C=function(t,r){var n=t.length;if(0===n)return r(null,!0);if(n>y)return r(null,!1);if(n>1&&Math.max(t[0].Size,t[1].Size)!==m)return r(null,!1);!function o(i){if(i=a.length)k.emit("has_and_check_upload_id",t);else{var p=a[l];if(!s.isInArray(t,p))return o.removeUploadId.call(f,p),void i(l+1);o.using[p]?i(l+1):d.call(f,{Bucket:n,Region:c,Key:u,UploadId:p,tracker:e.tracker},(function(e,t){f._isRunningTask(r)&&(e?(o.removeUploadId.call(f,p),i(l+1)):k.emit("upload_id_available",{UploadId:p,PartList:t.PartList}))}))}}(0)}else k.emit("has_and_check_upload_id",t)})),k.on("get_remote_upload_id_list",(function(){l.call(f,{Bucket:n,Region:c,Key:u,tracker:e.tracker},(function(t,i){if(f._isRunningTask(r)){if(t)return k.emit("error",t);var a=s.filter(i.UploadList,(function(e){return e.Key===u&&(!p||e.StorageClass.toUpperCase()===p.toUpperCase())})).reverse().map((function(e){return e.UploadId||e.UploadID}));if(a.length)k.emit("seek_local_avail_upload_id",a);else{var c,l=o.getFileId(e.Body,e.ChunkSize,n,u);l&&(c=o.getUploadIdList.call(f,l))&&s.each(c,(function(e){o.removeUploadId.call(f,e)})),k.emit("no_available_upload_id")}}}))})),k.emit("get_remote_upload_id_list")}function l(e,t){var r=this,n=[],o={Bucket:e.Bucket,Region:e.Region,Prefix:e.Key,calledBySdk:e.calledBySdk||"sliceUploadFile",tracker:e.tracker};!function e(){r.multipartList(o,(function(r,i){if(r)return t(r);n.push.apply(n,i.Upload||[]),"true"===i.IsTruncated?(o.KeyMarker=i.NextKeyMarker,o.UploadIdMarker=i.NextUploadIdMarker,e()):t(null,{UploadList:n})}))}()}function d(e,t){var r=this,n=[],o={Bucket:e.Bucket,Region:e.Region,Key:e.Key,UploadId:e.UploadId,calledBySdk:"sliceUploadFile",tracker:e.tracker};!function e(){r.multipartListPart(o,(function(r,i){if(r)return t(r);n.push.apply(n,i.Part||[]),"true"===i.IsTruncated?(o.PartNumberMarker=i.NextPartNumberMarker,e()):t(null,{PartList:n})}))}()}function p(e,t){var r=this,n=e.TaskId,o=e.Bucket,a=e.Region,c=e.Key,u=e.UploadData,l=e.FileSize,d=e.SliceSize,p=Math.min(e.AsyncLimit||r.options.ChunkParallelLimit||1,256),h=e.Body,g=Math.ceil(l/d),m=0,y=e.ServerSideEncryption,v=e.Headers,b=s.filter(u.PartList,(function(e){return e.Uploaded&&(m+=e.PartNumber>=g&&l%d||d),!e.Uploaded})),C=e.onProgress;i.eachLimit(b,p,(function(t,i){if(r._isRunningTask(n)){var s=t.PartNumber,p=Math.min(l,t.PartNumber*d)-(t.PartNumber-1)*d,g=0;f.call(r,{TaskId:n,Bucket:o,Region:a,Key:c,SliceSize:d,FileSize:l,PartNumber:s,ServerSideEncryption:y,Body:h,UploadData:u,Headers:v,onProgress:function(e){m+=e.loaded-g,g=e.loaded,C({loaded:m,total:l})},tracker:e.tracker},(function(e,o){r._isRunningTask(n)&&(e||o.ETag||(e='get ETag error, please add "ETag" to CORS ExposeHeader setting.( 获取ETag失败,请在CORS ExposeHeader设置中添加ETag,请参考文档:https://cloud.tencent.com/document/product/436/13318 )'),e?m-=g:(m+=p-g,t.ETag=o.ETag),C({loaded:m,total:l}),i(e||null,o))}))}}),(function(e){if(r._isRunningTask(n))return e?t(e):void t(null,{UploadId:u.UploadId,SliceList:u.PartList})}))}function f(e,t){var r=this,n=e.TaskId,o=e.Bucket,a=e.Region,c=e.Key,u=e.FileSize,l=e.Body,d=1*e.PartNumber,p=e.SliceSize,f=e.ServerSideEncryption,h=e.UploadData,g=e.Headers||{},m=r.options.ChunkRetryTimes+1,y=p*(d-1),v=p,b=y+p;b>u&&(v=(b=u)-y);var C=["x-cos-traffic-limit","x-cos-mime-limit"],k={};s.each(g,(function(e,t){C.indexOf(t)>-1&&(k[t]=e)}));var S=h.PartList[d-1];i.retry(m,(function(t){r._isRunningTask(n)&&s.fileSlice(l,y,b,!0,(function(i){r.multipartUpload({TaskId:n,Bucket:o,Region:a,Key:c,ContentLength:v,PartNumber:d,UploadId:h.UploadId,ServerSideEncryption:f,Body:i,Headers:k,onProgress:e.onProgress,calledBySdk:"sliceUploadFile",tracker:e.tracker},(function(e,o){if(r._isRunningTask(n))return e?t(e):(S.Uploaded=!0,t(null,o))}))}))}),(function(e,o){if(r._isRunningTask(n))return t(e,o)}))}function h(e,t){var r=e.Bucket,n=e.Region,o=e.Key,a=e.UploadId,s=e.SliceList,c=this,u=this.options.ChunkRetryTimes+1,l=e.Headers,d=s.map((function(e){return{PartNumber:e.PartNumber,ETag:e.ETag}}));i.retry(u,(function(t){c.multipartComplete({Bucket:r,Region:n,Key:o,UploadId:a,Parts:d,Headers:l,calledBySdk:"sliceUploadFile",tracker:e.tracker},t)}),(function(e,r){t(e,r)}))}function g(e,t){var r=e.Bucket,n=e.Region,o=e.Key,a=e.AbortArray,s=e.AsyncLimit||1,c=this,u=0,l=new Array(a.length);i.eachLimit(a,s,(function(t,i){var a=u;if(o&&o!==t.Key)return l[a]={error:{KeyNotMatch:!0}},void i(null);var s=t.UploadId||t.UploadID;c.multipartAbort({Bucket:r,Region:n,Key:t.Key,Headers:e.Headers,UploadId:s},(function(e){var o={Bucket:r,Region:n,Key:t.Key,UploadId:s};l[a]={error:e,task:o},i(null)})),u++}),(function(e){if(e)return t(e);for(var r=[],n=[],o=0,i=l.length;oo?"sliceUploadFile":"putObject",h=e.onFileFinish;i.push({api:f,params:e,callback:function(r,n){e.tracker&&e.tracker.formatResult(r,n),h&&h(r,n,l),t&&t(r,n)}}),r._addTasks(i)},uploadFiles:function(e,t){var r=this,o=void 0===e.SliceSize?r.options.SliceSize:e.SliceSize,i=0,a=0,u=s.throttleOnProgress.call(r,a,e.onProgress),l=e.files.length,d=e.onFileFinish,p=Array(l),f=function(e,r,n){u(null,!0),d&&d(e,r,n),p[n.Index]={options:n,error:e,data:r},--l<=0&&t&&t(null,{files:p})},h=[];s.each(e.files,(function(e,t){!function(){var l=e.Body,d=l.size||l.length||0,p={Index:t,TaskId:""};if(!r.options.UseRawKey&&e.Key&&"/"===e.Key.substr(0,1)&&(e.Key=e.Key.substr(1)),i+=d,r.options.EnableTracker){var g=r.options.UseAccelerate||"string"==typeof r.options.Domain&&r.options.Domain.includes("accelerate.");e.tracker=new c({bucket:e.Bucket,region:e.Region,apiName:"uploadFiles",fileKey:e.Key,fileSize:d,accelerate:g,deepTracker:r.options.DeepTracker,customId:r.options.CustomId,delay:r.options.TrackerDelay})}s.each(e,(function(e,t){"object"!==n(e)&&"function"!=typeof e&&(p[t]=e)}));var m=e.onTaskReady;e.onTaskReady=function(e){p.TaskId=e,m&&m(e)};var y=0,v=e.onProgress;e.onProgress=function(e){a=a-y+e.loaded,y=e.loaded,v&&v(e),u({loaded:a,total:i})};var b=d>o?"sliceUploadFile":"putObject",C=e.onFileFinish;h.push({api:b,params:e,callback:function(t,r){e.tracker&&e.tracker.formatResult(t,r),C&&C(t,r),f&&f(t,r,p)}})}()})),r._addTasks(h)},sliceCopyFile:function(e,t){var r=new a,n=this,c=e.Bucket,u=e.Region,l=e.Key,p=e.CopySource,f=s.getSourceParams.call(this,p);if(f){var h=f.Bucket,g=f.Region,y=decodeURIComponent(f.Key),v=void 0===e.CopySliceSize?n.options.CopySliceSize:e.CopySliceSize;v=Math.max(0,v);var b,C,k=e.CopyChunkSize||this.options.CopyChunkSize,S=this.options.CopyChunkParallelLimit,w=this.options.ChunkRetryTimes+1,T=0,E=0,R={},x={},A={};r.on("copy_slice_complete",(function(r){var a={};s.each(e.Headers,(function(e,t){0===t.toLowerCase().indexOf("x-cos-meta-")&&(a[t]=e)}));var d=s.map(r.PartList,(function(e){return{PartNumber:e.PartNumber,ETag:e.ETag}}));i.retry(w,(function(e){n.multipartComplete({Bucket:c,Region:u,Key:l,UploadId:r.UploadId,Parts:d,calledBySdk:"sliceCopyFile"},e)}),(function(e,n){if(o.removeUsing(r.UploadId),e)return C(null,!0),t(e);o.removeUploadId(r.UploadId),C({loaded:b,total:b},!0),t(null,n)}))})),r.on("get_copy_data_finish",(function(e){var a=o.getCopyFileId(p,R,k,c,l);a&&o.saveUploadId(a,e.UploadId,n.options.UploadIdCacheLimit),o.setUsing(e.UploadId);var d=s.filter(e.PartList,(function(e){return e.Uploaded&&(E+=e.PartNumber>=T&&b%k||k),!e.Uploaded}));i.eachLimit(d,S,(function(t,r){var o=t.PartNumber,a=t.CopySourceRange,s=t.end-t.start;i.retry(w,(function(t){m.call(n,{Bucket:c,Region:u,Key:l,CopySource:p,UploadId:e.UploadId,PartNumber:o,CopySourceRange:a},t)}),(function(e,n){if(e)return r(e);C({loaded:E+=s,total:b}),t.ETag=n.ETag,r(e||null,n)}))}),(function(n){if(n)return o.removeUsing(e.UploadId),C(null,!0),t(n);r.emit("copy_slice_complete",e)}))})),r.on("get_chunk_size_finish",(function(){var i=function(){n.multipartInit({Bucket:c,Region:u,Key:l,Headers:A},(function(n,o){if(n)return t(n);e.UploadId=o.UploadId,r.emit("get_copy_data_finish",{UploadId:e.UploadId,PartList:e.PartList})}))},a=o.getCopyFileId(p,R,k,c,l),f=o.getUploadIdList(a);if(!a||!f)return i();!function t(a){if(a>=f.length)return i();var p=f[a];if(o.using[p])return t(a+1);d.call(n,{Bucket:c,Region:u,Key:l,UploadId:p},(function(n,i){if(n)o.removeUploadId(p),t(a+1);else{if(o.using[p])return t(a+1);var c={},u=0;s.each(i.PartList,(function(e){var t=parseInt(e.Size),r=u+t-1;c[e.PartNumber+"|"+u+"|"+r]=e.ETag,u+=t})),s.each(e.PartList,(function(e){var t=c[e.PartNumber+"|"+e.start+"|"+e.end];t&&(e.ETag=t,e.Uploaded=!0)})),r.emit("get_copy_data_finish",{UploadId:p,PartList:e.PartList})}}))}(0)})),r.on("get_file_size_finish",(function(){if(function(){for(var t=[1,2,4,8,16,32,64,128,256,512,1024,2048,4096,5120],r=1048576,o=0;o11&&(x[t]=e)})),r.emit("get_file_size_finish")}else t(s.error(new Error('get Content-Length error, please add "Content-Length" to CORS ExposeHeader setting.( 获取Content-Length失败,请在CORS ExposeHeader设置中添加Content-Length,请参考文档:https://cloud.tencent.com/document/product/436/13318 )')))}))}else t(s.error(new Error("CopySource format error")))}};e.exports.init=function(e,t){t.transferToTaskMethod(y,"sliceUploadFile"),s.each(y,(function(t,r){e.prototype[r]=s.apiWrapper(r,t)}))}},function(e,t){var r={eachLimit:function(e,t,r,n){if(n=n||function(){},!e.length||t<=0)return n();var o=0,i=0,a=0;!function s(){if(o>=e.length)return n();for(;a=e.length?n():s())}))}()},retry:function(e,t,r){e<1?r():function n(o){t((function(t,i){t&&o void,
+ params: GetAuthorizationCallbackParams
+ ) => void
) => void;
}
@@ -2045,315 +2045,315 @@ declare class COS {
/** 获取 Bucket 下的 Object 版本列表 @see https://cloud.tencent.com/document/product/436/35521 */
listObjectVersions(
params: COS.ListObjectVersionsParams,
- callback: (err: COS.CosError, data: COS.ListObjectVersionsResult) => void,
+ callback: (err: COS.CosError, data: COS.ListObjectVersionsResult) => void
): void;
listObjectVersions(params: COS.ListObjectVersionsParams): Promise;
/** 删除 Bucket @see https://cloud.tencent.com/document/product/436/7732 */
deleteBucket(
params: COS.DeleteBucketParams,
- callback: (err: COS.CosError, data: COS.DeleteBucketResult) => void,
+ callback: (err: COS.CosError, data: COS.DeleteBucketResult) => void
): void;
deleteBucket(params: COS.DeleteBucketParams): Promise;
/** 设置 Bucket 的 权限列表 @see https://cloud.tencent.com/document/product/436/7737 */
putBucketAcl(
params: COS.PutBucketAclParams,
- callback: (err: COS.CosError, data: COS.PutBucketAclResult) => void,
+ callback: (err: COS.CosError, data: COS.PutBucketAclResult) => void
): void;
putBucketAcl(params: COS.PutBucketAclParams): Promise;
/** 获取 Bucket 的 权限列表 @see https://cloud.tencent.com/document/product/436/7733 */
getBucketAcl(
params: COS.GetBucketAclParams,
- callback: (err: COS.CosError, data: COS.GetBucketAclResult) => void,
+ callback: (err: COS.CosError, data: COS.GetBucketAclResult) => void
): void;
getBucketAcl(params: COS.GetBucketAclParams): Promise;
/** 设置 Bucket 的 跨域设置 @see https://cloud.tencent.com/document/product/436/8279 */
putBucketCors(
params: COS.PutBucketCorsParams,
- callback: (err: COS.CosError, data: COS.PutBucketCorsResult) => void,
+ callback: (err: COS.CosError, data: COS.PutBucketCorsResult) => void
): void;
putBucketCors(params: COS.PutBucketCorsParams): Promise;
/** 获取 Bucket 的 跨域设置 @see https://cloud.tencent.com/document/product/436/8274 */
getBucketCors(
params: COS.GetBucketCorsParams,
- callback: (err: COS.CosError, data: COS.GetBucketCorsResult) => void,
+ callback: (err: COS.CosError, data: COS.GetBucketCorsResult) => void
): void;
getBucketCors(params: COS.GetBucketCorsParams): Promise;
/** 删除 Bucket 的 跨域设置 @see https://cloud.tencent.com/document/product/436/8283 */
deleteBucketCors(
params: COS.DeleteBucketCorsParams,
- callback: (err: COS.CosError, data: COS.DeleteBucketCorsResult) => void,
+ callback: (err: COS.CosError, data: COS.DeleteBucketCorsResult) => void
): void;
deleteBucketCors(params: COS.DeleteBucketCorsParams): Promise;
/** 获取 Bucket 的 地域信息 */
getBucketLocation(
params: COS.GetBucketLocationParams,
- callback: (err: COS.CosError, data: COS.GetBucketLocationResult) => void,
+ callback: (err: COS.CosError, data: COS.GetBucketLocationResult) => void
): void;
getBucketLocation(params: COS.GetBucketLocationParams): Promise;
/** 获取 Bucket 的读取权限策略 @see https://cloud.tencent.com/document/product/436/8282 */
putBucketPolicy(
params: COS.PutBucketPolicyParams,
- callback: (err: COS.CosError, data: COS.PutBucketPolicyResult) => void,
+ callback: (err: COS.CosError, data: COS.PutBucketPolicyResult) => void
): void;
putBucketPolicy(params: COS.PutBucketPolicyParams): Promise;
/** 获取 Bucket 的读取权限策略 @see https://cloud.tencent.com/document/product/436/8276 */
getBucketPolicy(
params: COS.GetBucketPolicyParams,
- callback: (err: COS.CosError, data: COS.GetBucketPolicyResult) => void,
+ callback: (err: COS.CosError, data: COS.GetBucketPolicyResult) => void
): void;
getBucketPolicy(params: COS.GetBucketPolicyParams): Promise;
/** 删除 Bucket 的 跨域设置 @see https://cloud.tencent.com/document/product/436/8285 */
deleteBucketPolicy(
params: COS.DeleteBucketPolicyParams,
- callback: (err: COS.CosError, data: COS.DeleteBucketPolicyResult) => void,
+ callback: (err: COS.CosError, data: COS.DeleteBucketPolicyResult) => void
): void;
deleteBucketPolicy(params: COS.DeleteBucketPolicyParams): Promise;
/** 设置 Bucket 的标签 @see https://cloud.tencent.com/document/product/436/34838 */
putBucketTagging(
params: COS.PutBucketTaggingParams,
- callback: (err: COS.CosError, data: COS.PutBucketTaggingResult) => void,
+ callback: (err: COS.CosError, data: COS.PutBucketTaggingResult) => void
): void;
putBucketTagging(params: COS.PutBucketTaggingParams): Promise;
/** 获取 Bucket 的标签设置 @see https://cloud.tencent.com/document/product/436/34837 */
getBucketTagging(
params: COS.GetBucketTaggingParams,
- callback: (err: COS.CosError, data: COS.GetBucketTaggingResult) => void,
+ callback: (err: COS.CosError, data: COS.GetBucketTaggingResult) => void
): void;
getBucketTagging(params: COS.GetBucketTaggingParams): Promise;
/** 删除 Bucket 的 标签设置 @see https://cloud.tencent.com/document/product/436/34836 */
deleteBucketTagging(
params: COS.DeleteBucketTaggingParams,
- callback: (err: COS.CosError, data: COS.DeleteBucketTaggingResult) => void,
+ callback: (err: COS.CosError, data: COS.DeleteBucketTaggingResult) => void
): void;
deleteBucketTagging(params: COS.DeleteBucketTaggingParams): Promise;
/** 设置 Bucket 生命周期 @see https://cloud.tencent.com/document/product/436/8280 */
putBucketLifecycle(
params: COS.PutBucketLifecycleParams,
- callback: (err: COS.CosError, data: COS.PutBucketLifecycleResult) => void,
+ callback: (err: COS.CosError, data: COS.PutBucketLifecycleResult) => void
): void;
putBucketLifecycle(params: COS.PutBucketLifecycleParams): Promise;
/** 获取 Bucket 生命周期 @see https://cloud.tencent.com/document/product/436/8280 */
getBucketLifecycle(
params: COS.GetBucketLifecycleParams,
- callback: (err: COS.CosError, data: COS.GetBucketLifecycleResult) => void,
+ callback: (err: COS.CosError, data: COS.GetBucketLifecycleResult) => void
): void;
getBucketLifecycle(params: COS.GetBucketLifecycleParams): Promise;
/** 删除 Bucket 生命周期 @see https://cloud.tencent.com/document/product/436/8278 */
deleteBucketLifecycle(
params: COS.DeleteBucketLifecycleParams,
- callback: (err: COS.CosError, data: COS.DeleteBucketLifecycleResult) => void,
+ callback: (err: COS.CosError, data: COS.DeleteBucketLifecycleResult) => void
): void;
deleteBucketLifecycle(params: COS.DeleteBucketLifecycleParams): Promise;
/** 设置 Bucket 版本 @see https://cloud.tencent.com/document/product/436/19889 */
putBucketVersioning(
params: COS.PutBucketVersioningParams,
- callback: (err: COS.CosError, data: COS.PutBucketVersioningResult) => void,
+ callback: (err: COS.CosError, data: COS.PutBucketVersioningResult) => void
): void;
putBucketVersioning(params: COS.PutBucketVersioningParams): Promise;
/** 获取 Bucket 版本 @see https://cloud.tencent.com/document/product/436/19888 */
getBucketVersioning(
params: COS.GetBucketVersioningParams,
- callback: (err: COS.CosError, data: COS.GetBucketVersioningResult) => void,
+ callback: (err: COS.CosError, data: COS.GetBucketVersioningResult) => void
): void;
getBucketVersioning(params: COS.GetBucketVersioningParams): Promise;
/** 设置 Bucket 副本 @see https://cloud.tencent.com/document/product/436/19223 */
putBucketReplication(
params: COS.PutBucketReplicationParams,
- callback: (err: COS.CosError, data: COS.PutBucketReplicationResult) => void,
+ callback: (err: COS.CosError, data: COS.PutBucketReplicationResult) => void
): void;
putBucketReplication(params: COS.PutBucketReplicationParams): Promise;
/** 获取 Bucket 副本 @see https://cloud.tencent.com/document/product/436/19222 */
getBucketReplication(
params: COS.GetBucketReplicationParams,
- callback: (err: COS.CosError, data: COS.GetBucketReplicationResult) => void,
+ callback: (err: COS.CosError, data: COS.GetBucketReplicationResult) => void
): void;
getBucketReplication(params: COS.GetBucketReplicationParams): Promise;
/** 删除 Bucket 副本 @see https://cloud.tencent.com/document/product/436/19221 */
deleteBucketReplication(
params: COS.DeleteBucketReplicationParams,
- callback: (err: COS.CosError, data: COS.DeleteBucketReplicationResult) => void,
+ callback: (err: COS.CosError, data: COS.DeleteBucketReplicationResult) => void
): void;
deleteBucketReplication(params: COS.DeleteBucketReplicationParams): Promise;
/** 设置 Bucket 静态网站配置信息 @see https://cloud.tencent.com/document/product/436/31930 */
putBucketWebsite(
params: COS.PutBucketWebsiteParams,
- callback: (err: COS.CosError, data: COS.PutBucketWebsiteResult) => void,
+ callback: (err: COS.CosError, data: COS.PutBucketWebsiteResult) => void
): void;
putBucketWebsite(params: COS.PutBucketWebsiteParams): Promise;
/** 获取 Bucket 的静态网站配置信息 @see https://cloud.tencent.com/document/product/436/31929 */
getBucketWebsite(
params: COS.GetBucketWebsiteParams,
- callback: (err: COS.CosError, data: COS.GetBucketWebsiteResult) => void,
+ callback: (err: COS.CosError, data: COS.GetBucketWebsiteResult) => void
): void;
getBucketWebsite(params: COS.GetBucketWebsiteParams): Promise;
/** 删除 Bucket 的静态网站配置 @see https://cloud.tencent.com/document/product/436/31928 */
deleteBucketWebsite(
params: COS.DeleteBucketWebsiteParams,
- callback: (err: COS.CosError, data: COS.DeleteBucketWebsiteResult) => void,
+ callback: (err: COS.CosError, data: COS.DeleteBucketWebsiteResult) => void
): void;
deleteBucketWebsite(params: COS.DeleteBucketWebsiteParams): Promise;
/** 设置 Bucket 的防盗链白名单或者黑名单 @see https://cloud.tencent.com/document/product/436/32492 */
putBucketReferer(
params: COS.PutBucketRefererParams,
- callback: (err: COS.CosError, data: COS.PutBucketRefererResult) => void,
+ callback: (err: COS.CosError, data: COS.PutBucketRefererResult) => void
): void;
putBucketReferer(params: COS.PutBucketRefererParams): Promise;
/** 获取 Bucket 的防盗链白名单或者黑名单 @see https://cloud.tencent.com/document/product/436/32493 */
getBucketReferer(
params: COS.GetBucketRefererParams,
- callback: (err: COS.CosError, data: COS.GetBucketRefererResult) => void,
+ callback: (err: COS.CosError, data: COS.GetBucketRefererResult) => void
): void;
getBucketReferer(params: COS.GetBucketRefererParams): Promise;
/** 设置 Bucket 自定义域名 */
putBucketDomain(
params: COS.PutBucketDomainParams,
- callback: (err: COS.CosError, data: COS.PutBucketDomainResult) => void,
+ callback: (err: COS.CosError, data: COS.PutBucketDomainResult) => void
): void;
putBucketDomain(params: COS.PutBucketDomainParams): Promise;
/** 获取 Bucket 的自定义域名 */
getBucketDomain(
params: COS.GetBucketDomainParams,
- callback: (err: COS.CosError, data: COS.GetBucketDomainResult) => void,
+ callback: (err: COS.CosError, data: COS.GetBucketDomainResult) => void
): void;
getBucketDomain(params: COS.GetBucketDomainParams): Promise;
/** 删除 Bucket 自定义域名 */
deleteBucketDomain(
params: COS.DeleteBucketDomainParams,
- callback: (err: COS.CosError, data: COS.DeleteBucketDomainResult) => void,
+ callback: (err: COS.CosError, data: COS.DeleteBucketDomainResult) => void
): void;
deleteBucketDomain(params: COS.DeleteBucketDomainParams): Promise;
/** 设置 Bucket 的回源 */
putBucketOrigin(
params: COS.PutBucketOriginParams,
- callback: (err: COS.CosError, data: COS.PutBucketOriginResult) => void,
+ callback: (err: COS.CosError, data: COS.PutBucketOriginResult) => void
): void;
putBucketOrigin(params: COS.PutBucketOriginParams): Promise;
/** 获取 Bucket 的回源 */
getBucketOrigin(
params: COS.GetBucketOriginParams,
- callback: (err: COS.CosError, data: COS.GetBucketOriginResult) => void,
+ callback: (err: COS.CosError, data: COS.GetBucketOriginResult) => void
): void;
getBucketOrigin(params: COS.GetBucketOriginParams): Promise;
/** 删除 Bucket 的回源 */
deleteBucketOrigin(
params: COS.DeleteBucketOriginParams,
- callback: (err: COS.CosError, data: COS.DeleteBucketOriginResult) => void,
+ callback: (err: COS.CosError, data: COS.DeleteBucketOriginResult) => void
): void;
deleteBucketOrigin(params: COS.DeleteBucketOriginParams): Promise;
/** 设置 Bucket 的日志记录 @see https://cloud.tencent.com/document/product/436/17054 */
putBucketLogging(
params: COS.PutBucketLoggingParams,
- callback: (err: COS.CosError, data: COS.PutBucketLoggingResult) => void,
+ callback: (err: COS.CosError, data: COS.PutBucketLoggingResult) => void
): void;
putBucketLogging(params: COS.PutBucketLoggingParams): Promise;
/** 获取 Bucket 的日志记录 @see https://cloud.tencent.com/document/product/436/17053 */
getBucketLogging(
params: COS.GetBucketLoggingParams,
- callback: (err: COS.CosError, data: COS.GetBucketLoggingResult) => void,
+ callback: (err: COS.CosError, data: COS.GetBucketLoggingResult) => void
): void;
getBucketLogging(params: COS.GetBucketLoggingParams): Promise;
/** 创建/编辑 Bucket 的清单任务 @see https://cloud.tencent.com/document/product/436/33707 */
putBucketInventory(
params: COS.PutBucketInventoryParams,
- callback: (err: COS.CosError, data: COS.PutBucketInventoryResult) => void,
+ callback: (err: COS.CosError, data: COS.PutBucketInventoryResult) => void
): void;
putBucketInventory(params: COS.PutBucketInventoryParams): Promise;
/** 创建/编辑 Bucket 一次性清单任务 @see https://cloud.tencent.com/document/product/436/83382 */
postBucketInventory(
params: COS.PostBucketInventoryParams,
- callback: (err: COS.CosError, data: COS.PostBucketInventoryResult) => void,
+ callback: (err: COS.CosError, data: COS.PostBucketInventoryResult) => void
): void;
postBucketInventory(params: COS.PostBucketInventoryParams): Promise;
/** 获取 Bucket 的清单任务信息 @see https://cloud.tencent.com/document/product/436/33705 */
getBucketInventory(
params: COS.GetBucketInventoryParams,
- callback: (err: COS.CosError, data: COS.GetBucketInventoryResult) => void,
+ callback: (err: COS.CosError, data: COS.GetBucketInventoryResult) => void
): void;
getBucketInventory(params: COS.GetBucketInventoryParams): Promise;
/** 获取 Bucket 的清单任务信息 @see https://cloud.tencent.com/document/product/436/33706 */
listBucketInventory(
params: COS.ListBucketInventoryParams,
- callback: (err: COS.CosError, data: COS.ListBucketInventoryResult) => void,
+ callback: (err: COS.CosError, data: COS.ListBucketInventoryResult) => void
): void;
listBucketInventory(params: COS.ListBucketInventoryParams): Promise;
/** 删除 Bucket 的清单任务 @see https://cloud.tencent.com/document/product/436/33704 */
deleteBucketInventory(
params: COS.DeleteBucketInventoryParams,
- callback: (err: COS.CosError, data: COS.DeleteBucketInventoryResult) => void,
+ callback: (err: COS.CosError, data: COS.DeleteBucketInventoryResult) => void
): void;
deleteBucketInventory(params: COS.DeleteBucketInventoryParams): Promise;
/** 启用或者暂停存储桶的全球加速功能 @see https://cloud.tencent.com/document/product/436/38869 */
putBucketAccelerate(
params: COS.PutBucketAccelerateParams,
- callback: (err: COS.CosError, data: COS.PutBucketAccelerateResult) => void,
+ callback: (err: COS.CosError, data: COS.PutBucketAccelerateResult) => void
): void;
putBucketAccelerate(params: COS.PutBucketAccelerateParams): Promise;
/** 查询存储桶的全球加速功能配置 @see https://cloud.tencent.com/document/product/436/38868 */
getBucketAccelerate(
params: COS.GetBucketAccelerateParams,
- callback: (err: COS.CosError, data: COS.GetBucketAccelerateResult) => void,
+ callback: (err: COS.CosError, data: COS.GetBucketAccelerateResult) => void
): void;
getBucketAccelerate(params: COS.GetBucketAccelerateParams): Promise;
/** 设置指定存储桶下的默认加密配置 @see https://cloud.tencent.com/document/product/436/40136 */
putBucketEncryption(
params: COS.PutBucketEncryptionParams,
- callback: (err: COS.CosError, data: COS.PutBucketEncryptionResult) => void,
+ callback: (err: COS.CosError, data: COS.PutBucketEncryptionResult) => void
): void;
putBucketEncryption(params: COS.PutBucketEncryptionParams): Promise;
/** 查询指定存储桶下的默认加密配置 @see https://cloud.tencent.com/document/product/436/40137 */
getBucketEncryption(
params: COS.GetBucketEncryptionParams,
- callback: (err: COS.CosError, data: COS.GetBucketEncryptionResult) => void,
+ callback: (err: COS.CosError, data: COS.GetBucketEncryptionResult) => void
): void;
getBucketEncryption(params: COS.GetBucketEncryptionParams): Promise;
/** 删除指定存储桶下的默认加密配置 @see https://cloud.tencent.com/document/product/436/40138 */
deleteBucketEncryption(
params: COS.DeleteBucketEncryptionParams,
- callback: (err: COS.CosError, data: COS.DeleteBucketEncryptionResult) => void,
+ callback: (err: COS.CosError, data: COS.DeleteBucketEncryptionResult) => void
): void;
deleteBucketEncryption(params: COS.DeleteBucketEncryptionParams): Promise;
@@ -2372,140 +2372,140 @@ declare class COS {
/** 删除一个指定的对象(Object) @see https://cloud.tencent.com/document/product/436/7743 */
deleteObject(
params: COS.DeleteObjectParams,
- callback: (err: COS.CosError, data: COS.DeleteObjectResult) => void,
+ callback: (err: COS.CosError, data: COS.DeleteObjectResult) => void
): void;
deleteObject(params: COS.DeleteObjectParams): Promise;
/** 批量删除指定存储桶中的多个对象(Object) @see https://cloud.tencent.com/document/product/436/8289 */
deleteMultipleObject(
params: COS.DeleteMultipleObjectParams,
- callback: (err: COS.CosError, data: COS.DeleteMultipleObjectResult) => void,
+ callback: (err: COS.CosError, data: COS.DeleteMultipleObjectResult) => void
): void;
deleteMultipleObject(params: COS.DeleteMultipleObjectParams): Promise;
/** 获取 Object 的权限列表 @see https://cloud.tencent.com/document/product/436/7744 */
getObjectAcl(
params: COS.GetObjectAclParams,
- callback: (err: COS.CosError, data: COS.GetObjectAclResult) => void,
+ callback: (err: COS.CosError, data: COS.GetObjectAclResult) => void
): void;
getObjectAcl(params: COS.GetObjectAclParams): Promise;
/** 设置 Object 的权限列表 @see https://cloud.tencent.com/document/product/436/7748 */
putObjectAcl(
params: COS.PutObjectAclParams,
- callback: (err: COS.CosError, data: COS.PutObjectAclResult) => void,
+ callback: (err: COS.CosError, data: COS.PutObjectAclResult) => void
): void;
putObjectAcl(params: COS.PutObjectAclParams): Promise;
/** 跨域资源共享(CORS)的预检(Preflight)请求 @see https://cloud.tencent.com/document/product/436/8288 */
optionsObject(
params: COS.OptionsObjectParams,
- callback: (err: COS.CosError, data: COS.OptionsObjectResult) => void,
+ callback: (err: COS.CosError, data: COS.OptionsObjectResult) => void
): void;
optionsObject(params: COS.OptionsObjectParams): Promise;
/** 恢复归档对象 @see https://cloud.tencent.com/document/product/436/12633 */
restoreObject(
params: COS.RestoreObjectParams,
- callback: (err: COS.CosError, data: COS.RestoreObjectResult) => void,
+ callback: (err: COS.CosError, data: COS.RestoreObjectResult) => void
): void;
restoreObject(params: COS.RestoreObjectParams): Promise;
/** 检索对象内容 @see https://cloud.tencent.com/document/product/436/37641 */
selectObjectContent(
params: COS.SelectObjectContentParams,
- callback: (err: COS.CosError, data: COS.SelectObjectContentResult) => void,
+ callback: (err: COS.CosError, data: COS.SelectObjectContentResult) => void
): void;
selectObjectContent(params: COS.SelectObjectContentParams): Promise;
/** 复制对象 @see https://cloud.tencent.com/document/product/436/10881 */
putObjectCopy(
params: COS.PutObjectCopyParams,
- callback: (err: COS.CosError, data: COS.PutObjectCopyResult) => void,
+ callback: (err: COS.CosError, data: COS.PutObjectCopyResult) => void
): void;
putObjectCopy(params: COS.PutObjectCopyParams): Promise;
/** 设置对象标签 @see https://cloud.tencent.com/document/product/436/42997 */
putObjectTagging(
params: COS.PutObjectTaggingParams,
- callback: (err: COS.CosError, data: COS.PutObjectTaggingResult) => void,
+ callback: (err: COS.CosError, data: COS.PutObjectTaggingResult) => void
): void;
putObjectTagging(params: COS.PutObjectTaggingParams): Promise;
/** 查询对象标签 @see https://cloud.tencent.com/document/product/436/42998 */
getObjectTagging(
params: COS.GetObjectTaggingParams,
- callback: (err: COS.CosError, data: COS.GetObjectTaggingResult) => void,
+ callback: (err: COS.CosError, data: COS.GetObjectTaggingResult) => void
): void;
getObjectTagging(params: COS.GetObjectTaggingParams): Promise;
/** 删除对象标签 @see https://cloud.tencent.com/document/product/436/42999 */
deleteObjectTagging(
params: COS.DeleteObjectTaggingParams,
- callback: (err: COS.CosError, data: COS.DeleteObjectTaggingResult) => void,
+ callback: (err: COS.CosError, data: COS.DeleteObjectTaggingResult) => void
): void;
deleteObjectTagging(params: COS.DeleteObjectTaggingParams): Promise;
/** 初始化分块上传 @see https://cloud.tencent.com/document/product/436/7746 */
multipartInit(
params: COS.MultipartInitParams,
- callback: (err: COS.CosError, data: COS.MultipartInitResult) => void,
+ callback: (err: COS.CosError, data: COS.MultipartInitResult) => void
): void;
multipartInit(params: COS.MultipartInitParams): Promise;
/** 分块上传 @see https://cloud.tencent.com/document/product/436/7750 */
multipartUpload(
params: COS.MultipartUploadParams,
- callback: (err: COS.CosError, data: COS.MultipartUploadResult) => void,
+ callback: (err: COS.CosError, data: COS.MultipartUploadResult) => void
): void;
multipartUpload(params: COS.MultipartUploadParams): Promise;
/** 分块上传 @see https://cloud.tencent.com/document/product/436/8287 */
uploadPartCopy(
params: COS.UploadPartCopyParams,
- callback: (err: COS.CosError, data: COS.UploadPartCopyResult) => void,
+ callback: (err: COS.CosError, data: COS.UploadPartCopyResult) => void
): void;
uploadPartCopy(params: COS.UploadPartCopyParams): Promise;
/** 完成分块上传 @see https://cloud.tencent.com/document/product/436/7742 */
multipartComplete(
params: COS.MultipartCompleteParams,
- callback: (err: COS.CosError, data: COS.MultipartCompleteResult) => void,
+ callback: (err: COS.CosError, data: COS.MultipartCompleteResult) => void
): void;
multipartComplete(params: COS.MultipartCompleteParams): Promise;
/** 分块上传任务列表查询 @see https://cloud.tencent.com/document/product/436/7736 */
multipartList(
params: COS.MultipartListParams,
- callback: (err: COS.CosError, data: COS.MultipartListResult) => void,
+ callback: (err: COS.CosError, data: COS.MultipartListResult) => void
): void;
multipartList(params: COS.MultipartListParams): Promise;
/** 上传的分块列表查询 @see https://cloud.tencent.com/document/product/436/7747 */
multipartListPart(
params: COS.MultipartListPartParams,
- callback: (err: COS.CosError, data: COS.MultipartListPartResult) => void,
+ callback: (err: COS.CosError, data: COS.MultipartListPartResult) => void
): void;
multipartListPart(params: COS.MultipartListPartParams): Promise;
/** 抛弃分块上传 @see https://cloud.tencent.com/document/product/436/7740 */
multipartAbort(
params: COS.MultipartAbortParams,
- callback: (err: COS.CosError, data: COS.MultipartAbortResult) => void,
+ callback: (err: COS.CosError, data: COS.MultipartAbortResult) => void
): void;
multipartAbort(params: COS.MultipartAbortParams): Promise;
/** 分片上传文件,封装好分片上传的多个步骤的上传方法。 */
sliceUploadFile(
params: COS.SliceUploadFileParams,
- callback: (err: COS.CosError, data: COS.SliceUploadFileResult) => void,
+ callback: (err: COS.CosError, data: COS.SliceUploadFileResult) => void
): void;
sliceUploadFile(params: COS.SliceUploadFileParams): Promise;
/** 清理分片上传 UploadId,封装好的清理单个文件或存储桶所有文件未完成的 UploadId。 */
abortUploadTask(
params: COS.AbortUploadTaskParams,
- callback: (err: COS.CosError, data: COS.AbortUploadTaskResult) => void,
+ callback: (err: COS.CosError, data: COS.AbortUploadTaskResult) => void
): void;
abortUploadTask(params: COS.AbortUploadTaskParams): Promise;
@@ -2520,7 +2520,7 @@ declare class COS {
/** 分片复制文件 */
sliceCopyFile(
params: COS.SliceCopyFileParams,
- callback: (err: COS.CosError, data: COS.SliceCopyFileResult) => void,
+ callback: (err: COS.CosError, data: COS.SliceCopyFileResult) => void
): void;
sliceCopyFile(params: COS.SliceCopyFileParams): Promise;
@@ -2546,7 +2546,7 @@ declare class COS {
/** 获取文件下载链接 @see https://cloud.tencent.com/document/product/436/35651 */
getObjectUrl(
params: COS.GetObjectUrlParams,
- callback: (err: COS.CosError, data: COS.GetObjectUrlResult) => void,
+ callback: (err: COS.CosError, data: COS.GetObjectUrlResult) => void
): string;
/** cos.request */
diff --git a/package.json b/package.json
index e50f896..98e9106 100644
--- a/package.json
+++ b/package.json
@@ -5,7 +5,7 @@
"main": "dist/cos-js-sdk-v5.js",
"types": "index.d.ts",
"scripts": {
- "prettier": "prettier --write src demo/demo.js test/test.js server/sts.js index.d.ts",
+ "prettier": "prettier --write src demo/demo.js demo/CIDemos/*.js test/test.js server/sts.js index.d.ts",
"server": "node server/sts.js",
"dev": "cross-env NODE_ENV=development webpack -w --mode=development",
"build": "cross-env NODE_ENV=production webpack --mode=production",
diff --git a/server/sts.js b/server/sts.js
index 3d633dd..09ce802 100644
--- a/server/sts.js
+++ b/server/sts.js
@@ -115,7 +115,7 @@ var replaceBucketRegion = (filePath) => {
.toString()
.replace(
/(var config = {\r?\n *Bucket: ')test-1250000000(',\r?\n *Region: ')ap-guangzhou(')/,
- '$1' + config.bucket + '$2' + config.region + '$3',
+ '$1' + config.bucket + '$2' + config.region + '$3'
);
if (process.env.Uin) {
content = content
@@ -181,7 +181,7 @@ function getSts() {
} else {
resolve(tempKeys);
}
- },
+ }
);
});
}
diff --git a/src/advance.js b/src/advance.js
index f365504..e57d94a 100644
--- a/src/advance.js
+++ b/src/advance.js
@@ -38,7 +38,7 @@ function sliceUploadFile(params, callback) {
{
UploadId: params.UploadData.UploadId || '',
},
- UploadCompleteData,
+ UploadCompleteData
);
callback(null, _UploadCompleteData);
});
@@ -71,7 +71,7 @@ function sliceUploadFile(params, callback) {
session.removeUploadId.call(self, UploadData.UploadId);
onProgress({ loaded: FileSize, total: FileSize }, true);
ep.emit('upload_complete', data);
- },
+ }
);
});
@@ -108,7 +108,7 @@ function sliceUploadFile(params, callback) {
return ep.emit('error', err);
}
ep.emit('upload_slice_complete', data);
- },
+ }
);
});
@@ -133,7 +133,7 @@ function sliceUploadFile(params, callback) {
onHashProgress: onHashProgress,
tracker: tracker,
},
- params,
+ params
);
getUploadIdAndPartList.call(self, _params, function (err, UploadData) {
if (!self._isRunningTask(TaskId)) return;
@@ -306,7 +306,7 @@ function getUploadIdAndPartList(params, callback) {
calledBySdk: 'sliceUploadFile',
tracker: params.tracker,
},
- params,
+ params
);
var headers = util.clone(params.Headers);
delete headers['x-cos-mime-limit'];
@@ -370,7 +370,7 @@ function getUploadIdAndPartList(params, callback) {
asyncCallback(); // 检查下一个 UploadId
}
});
- },
+ }
);
},
function (AvailableUploadData) {
@@ -381,7 +381,7 @@ function getUploadIdAndPartList(params, callback) {
} else {
ep.emit('no_available_upload_id');
}
- },
+ }
);
});
@@ -435,7 +435,7 @@ function getUploadIdAndPartList(params, callback) {
PartList: PartListData.PartList,
});
}
- },
+ }
);
};
next(0);
@@ -479,7 +479,7 @@ function getUploadIdAndPartList(params, callback) {
}
ep.emit('no_available_upload_id');
}
- },
+ }
);
});
@@ -619,7 +619,7 @@ function uploadSliceList(params, cb) {
}
onProgress({ loaded: FinishSize, total: FileSize });
asyncCallback(err || null, data);
- },
+ }
);
},
function (err) {
@@ -629,7 +629,7 @@ function uploadSliceList(params, cb) {
UploadId: UploadData.UploadId,
SliceList: UploadData.PartList,
});
- },
+ }
);
}
@@ -695,14 +695,14 @@ function uploadSliceItem(params, callback) {
if (err) return tryCallback(err);
PartItem.Uploaded = true;
return tryCallback(null, data);
- },
+ }
);
});
},
function (err, data) {
if (!self._isRunningTask(TaskId)) return;
return callback(err, data);
- },
+ }
);
}
@@ -737,12 +737,12 @@ function uploadSliceComplete(params, callback) {
calledBySdk: 'sliceUploadFile',
tracker: params.tracker,
},
- tryCallback,
+ tryCallback
);
},
function (err, data) {
callback(err, data);
- },
+ }
);
}
@@ -779,7 +779,7 @@ function abortUploadTask(params, callback) {
AsyncLimit: AsyncLimit,
AbortArray: AbortArray,
},
- callback,
+ callback
);
});
@@ -795,7 +795,7 @@ function abortUploadTask(params, callback) {
function (err, data) {
if (err) return callback(err);
ep.emit('get_abort_array', data.UploadList || []);
- },
+ }
);
} else if (Level === 'file') {
// 文件级别的任务抛弃,抛弃该文件的全部上传任务
@@ -811,7 +811,7 @@ function abortUploadTask(params, callback) {
function (err, data) {
if (err) return callback(err);
ep.emit('get_abort_array', data.UploadList || []);
- },
+ }
);
} else if (Level === 'task') {
// 单个任务级别的任务抛弃,抛弃指定 UploadId 的上传任务
@@ -868,7 +868,7 @@ function abortUploadTaskArray(params, callback) {
};
resultList[eachIndex] = { error: err, task: task };
nextItem(null);
- },
+ }
);
index++;
},
@@ -893,7 +893,7 @@ function abortUploadTaskArray(params, callback) {
successList: successList,
errorList: errorList,
});
- },
+ }
);
}
@@ -1135,7 +1135,7 @@ function sliceCopyFile(params, callback) {
Parts: Parts,
calledBySdk: 'sliceCopyFile',
},
- tryCallback,
+ tryCallback
);
},
function (err, data) {
@@ -1147,7 +1147,7 @@ function sliceCopyFile(params, callback) {
session.removeUploadId(UploadData.UploadId);
onProgress({ loaded: FileSize, total: FileSize }, true);
callback(null, data);
- },
+ }
);
});
@@ -1184,7 +1184,7 @@ function sliceCopyFile(params, callback) {
PartNumber: PartNumber,
CopySourceRange: CopySourceRange,
},
- tryCallback,
+ tryCallback
);
},
function (err, data) {
@@ -1193,7 +1193,7 @@ function sliceCopyFile(params, callback) {
onProgress({ loaded: FinishSize, total: FileSize });
SliceItem.ETag = data.ETag;
asyncCallback(err || null, data);
- },
+ }
);
},
function (err) {
@@ -1203,7 +1203,7 @@ function sliceCopyFile(params, callback) {
return callback(err);
}
ep.emit('copy_slice_complete', UploadData);
- },
+ }
);
});
@@ -1220,7 +1220,7 @@ function sliceCopyFile(params, callback) {
if (err) return callback(err);
params.UploadId = data.UploadId;
ep.emit('get_copy_data_finish', { UploadId: params.UploadId, PartList: params.PartList });
- },
+ }
);
};
@@ -1270,7 +1270,7 @@ function sliceCopyFile(params, callback) {
});
ep.emit('get_copy_data_finish', { UploadId: UploadId, PartList: params.PartList });
}
- },
+ }
);
};
next(0);
@@ -1355,9 +1355,9 @@ function sliceCopyFile(params, callback) {
callback(
util.error(
new Error(
- 'get Content-Length error, please add "Content-Length" to CORS ExposeHeader setting.( 获取Content-Length失败,请在CORS ExposeHeader设置中添加Content-Length,请参考文档:https://cloud.tencent.com/document/product/436/13318 )',
- ),
- ),
+ 'get Content-Length error, please add "Content-Length" to CORS ExposeHeader setting.( 获取Content-Length失败,请在CORS ExposeHeader设置中添加Content-Length,请参考文档:https://cloud.tencent.com/document/product/436/13318 )'
+ )
+ )
);
return;
}
@@ -1396,7 +1396,7 @@ function sliceCopyFile(params, callback) {
});
ep.emit('get_file_size_finish');
}
- },
+ }
);
}
@@ -1430,12 +1430,12 @@ function copySliceItem(params, callback) {
},
function (err, data) {
tryCallback(err || null, data);
- },
+ }
);
},
function (err, data) {
return callback(err, data);
- },
+ }
);
}
diff --git a/src/base.js b/src/base.js
index e1ea551..863ced6 100644
--- a/src/base.js
+++ b/src/base.js
@@ -67,7 +67,7 @@ function getService(params, callback) {
statusCode: data.statusCode,
headers: data.headers,
});
- },
+ }
);
}
@@ -120,7 +120,7 @@ function putBucket(params, callback) {
statusCode: data.statusCode,
headers: data.headers,
});
- },
+ }
);
}
@@ -145,7 +145,7 @@ function headBucket(params, callback) {
headers: params.Headers,
method: 'HEAD',
},
- callback,
+ callback
);
}
@@ -201,7 +201,7 @@ function getBucket(params, callback) {
});
callback(null, result);
- },
+ }
);
}
@@ -235,7 +235,7 @@ function deleteBucket(params, callback) {
statusCode: data.statusCode,
headers: data.headers,
});
- },
+ }
);
}
@@ -293,7 +293,7 @@ function putBucketAcl(params, callback) {
statusCode: data.statusCode,
headers: data.headers,
});
- },
+ }
);
}
@@ -335,7 +335,7 @@ function getBucketAcl(params, callback) {
headers: data.headers,
});
callback(null, result);
- },
+ }
);
}
@@ -389,7 +389,7 @@ function putBucketCors(params, callback) {
statusCode: data.statusCode,
headers: data.headers,
});
- },
+ }
);
}
@@ -448,7 +448,7 @@ function getBucketCors(params, callback) {
statusCode: data.statusCode,
headers: data.headers,
});
- },
+ }
);
}
@@ -482,7 +482,7 @@ function deleteBucketCors(params, callback) {
statusCode: data.statusCode || err.statusCode,
headers: data.headers,
});
- },
+ }
);
}
@@ -506,7 +506,7 @@ function getBucketLocation(params, callback) {
headers: params.Headers,
action: 'location',
},
- callback,
+ callback
);
}
@@ -544,7 +544,7 @@ function putBucketPolicy(params, callback) {
statusCode: data.statusCode,
headers: data.headers,
});
- },
+ }
);
}
@@ -591,7 +591,7 @@ function getBucketPolicy(params, callback) {
statusCode: data.statusCode,
headers: data.headers,
});
- },
+ }
);
}
@@ -625,7 +625,7 @@ function deleteBucketPolicy(params, callback) {
statusCode: data.statusCode || err.statusCode,
headers: data.headers,
});
- },
+ }
);
}
@@ -670,7 +670,7 @@ function putBucketTagging(params, callback) {
statusCode: data.statusCode,
headers: data.headers,
});
- },
+ }
);
}
@@ -718,7 +718,7 @@ function getBucketTagging(params, callback) {
statusCode: data.statusCode,
headers: data.headers,
});
- },
+ }
);
}
@@ -752,7 +752,7 @@ function deleteBucketTagging(params, callback) {
statusCode: data.statusCode,
headers: data.headers,
});
- },
+ }
);
}
@@ -787,7 +787,7 @@ function putBucketLifecycle(params, callback) {
statusCode: data.statusCode,
headers: data.headers,
});
- },
+ }
);
}
@@ -826,7 +826,7 @@ function getBucketLifecycle(params, callback) {
statusCode: data.statusCode,
headers: data.headers,
});
- },
+ }
);
}
@@ -851,7 +851,7 @@ function deleteBucketLifecycle(params, callback) {
statusCode: data.statusCode,
headers: data.headers,
});
- },
+ }
);
}
@@ -888,7 +888,7 @@ function putBucketVersioning(params, callback) {
statusCode: data.statusCode,
headers: data.headers,
});
- },
+ }
);
}
@@ -908,7 +908,7 @@ function getBucketVersioning(params, callback) {
!data.VersioningConfiguration && (data.VersioningConfiguration = {});
}
callback(err, data);
- },
+ }
);
}
@@ -943,7 +943,7 @@ function putBucketReplication(params, callback) {
statusCode: data.statusCode,
headers: data.headers,
});
- },
+ }
);
}
@@ -982,7 +982,7 @@ function getBucketReplication(params, callback) {
delete data.ReplicationConfiguration.Rule;
}
callback(err, data);
- },
+ }
);
}
@@ -1007,7 +1007,7 @@ function deleteBucketReplication(params, callback) {
statusCode: data.statusCode,
headers: data.headers,
});
- },
+ }
);
}
@@ -1064,7 +1064,7 @@ function putBucketWebsite(params, callback) {
statusCode: data.statusCode,
headers: data.headers,
});
- },
+ }
);
}
@@ -1116,7 +1116,7 @@ function getBucketWebsite(params, callback) {
statusCode: data.statusCode,
headers: data.headers,
});
- },
+ }
);
}
@@ -1150,7 +1150,7 @@ function deleteBucketWebsite(params, callback) {
statusCode: data.statusCode,
headers: data.headers,
});
- },
+ }
);
}
@@ -1206,7 +1206,7 @@ function putBucketReferer(params, callback) {
statusCode: data.statusCode,
headers: data.headers,
});
- },
+ }
);
}
@@ -1257,7 +1257,7 @@ function getBucketReferer(params, callback) {
statusCode: data.statusCode,
headers: data.headers,
});
- },
+ }
);
}
@@ -1301,7 +1301,7 @@ function putBucketDomain(params, callback) {
statusCode: data.statusCode,
headers: data.headers,
});
- },
+ }
);
}
@@ -1338,7 +1338,7 @@ function getBucketDomain(params, callback) {
statusCode: data.statusCode,
headers: data.headers,
});
- },
+ }
);
}
@@ -1372,7 +1372,7 @@ function deleteBucketDomain(params, callback) {
statusCode: data.statusCode,
headers: data.headers,
});
- },
+ }
);
}
@@ -1416,7 +1416,7 @@ function putBucketOrigin(params, callback) {
statusCode: data.statusCode,
headers: data.headers,
});
- },
+ }
);
}
@@ -1453,7 +1453,7 @@ function getBucketOrigin(params, callback) {
statusCode: data.statusCode,
headers: data.headers,
});
- },
+ }
);
}
@@ -1487,7 +1487,7 @@ function deleteBucketOrigin(params, callback) {
statusCode: data.statusCode,
headers: data.headers,
});
- },
+ }
);
}
@@ -1531,7 +1531,7 @@ function putBucketLogging(params, callback) {
statusCode: data.statusCode,
headers: data.headers,
});
- },
+ }
);
}
@@ -1562,7 +1562,7 @@ function getBucketLogging(params, callback) {
statusCode: data.statusCode,
headers: data.headers,
});
- },
+ }
);
}
@@ -1633,7 +1633,7 @@ function submitBucketInventory(method, params, callback) {
statusCode: data.statusCode,
headers: data.headers,
});
- },
+ }
);
}
@@ -1707,7 +1707,7 @@ function getBucketInventory(params, callback) {
statusCode: data.statusCode,
headers: data.headers,
});
- },
+ }
);
}
@@ -1774,7 +1774,7 @@ function listBucketInventory(params, callback) {
headers: data.headers,
});
callback(null, ListInventoryConfigurationResult);
- },
+ }
);
}
@@ -1812,7 +1812,7 @@ function deleteBucketInventory(params, callback) {
statusCode: data.statusCode,
headers: data.headers,
});
- },
+ }
);
}
@@ -1848,7 +1848,7 @@ function putBucketAccelerate(params, callback) {
statusCode: data.statusCode,
headers: data.headers,
});
- },
+ }
);
}
@@ -1867,7 +1867,7 @@ function getBucketAccelerate(params, callback) {
!data.AccelerateConfiguration && (data.AccelerateConfiguration = {});
}
callback(err, data);
- },
+ }
);
}
@@ -1901,7 +1901,7 @@ function putBucketEncryption(params, callback) {
statusCode: data.statusCode,
headers: data.headers,
});
- },
+ }
);
}
@@ -1933,7 +1933,7 @@ function getBucketEncryption(params, callback) {
var Rules = util.makeArray((data.EncryptionConfiguration && data.EncryptionConfiguration.Rule) || []);
data.EncryptionConfiguration = { Rules: Rules };
callback(err, data);
- },
+ }
);
}
@@ -1958,7 +1958,7 @@ function deleteBucketEncryption(params, callback) {
statusCode: data.statusCode,
headers: data.headers,
});
- },
+ }
);
}
@@ -2001,7 +2001,7 @@ function headObject(params, callback) {
}
data.ETag = util.attr(data.headers, 'etag', '');
callback(null, data);
- },
+ }
);
}
@@ -2045,7 +2045,7 @@ function listObjectVersions(params, callback) {
});
callback(null, result);
- },
+ }
);
}
@@ -2119,7 +2119,7 @@ function getObject(params, callback) {
statusCode: data.statusCode,
headers: data.headers,
});
- },
+ }
);
}
@@ -2211,10 +2211,10 @@ function putObject(params, callback) {
data.Location = url;
data.ETag = util.attr(data.headers, 'etag', '');
callback(null, data);
- },
+ }
);
},
- params.onHashProgress,
+ params.onHashProgress
);
}
@@ -2254,7 +2254,7 @@ function deleteObject(params, callback) {
statusCode: data.statusCode,
headers: data.headers,
});
- },
+ }
);
}
@@ -2304,7 +2304,7 @@ function getObjectAcl(params, callback) {
headers: data.headers,
});
callback(null, result);
- },
+ }
);
}
@@ -2360,7 +2360,7 @@ function putObjectAcl(params, callback) {
statusCode: data.statusCode,
headers: data.headers,
});
- },
+ }
);
}
@@ -2411,7 +2411,7 @@ function optionsObject(params, callback) {
statusCode: data.statusCode,
headers: data.headers,
});
- },
+ }
);
}
@@ -2501,7 +2501,7 @@ function putObjectCopy(params, callback) {
headers: data.headers,
});
callback(null, result);
- },
+ }
);
}
@@ -2553,7 +2553,7 @@ function uploadPartCopy(params, callback) {
headers: data.headers,
});
callback(null, result);
- },
+ }
);
}
@@ -2605,7 +2605,7 @@ function deleteMultipleObject(params, callback) {
headers: data.headers,
});
callback(null, result);
- },
+ }
);
}
@@ -2635,7 +2635,7 @@ function restoreObject(params, callback) {
action: 'restore',
headers: headers,
},
- callback,
+ callback
);
}
@@ -2682,7 +2682,7 @@ function putObjectTagging(params, callback) {
statusCode: data.statusCode,
headers: data.headers,
});
- },
+ }
);
}
@@ -2732,7 +2732,7 @@ function getObjectTagging(params, callback) {
statusCode: data.statusCode,
headers: data.headers,
});
- },
+ }
);
}
@@ -2768,7 +2768,7 @@ function deleteObjectTagging(params, callback) {
statusCode: data.statusCode,
headers: data.headers,
});
- },
+ }
);
}
@@ -2824,7 +2824,7 @@ function selectObjectContent(params, callback) {
Body: result.body,
Payload: result.payload,
});
- },
+ }
);
}
@@ -2897,14 +2897,14 @@ function multipartInit(params, callback) {
util.extend(data.InitiateMultipartUploadResult, {
statusCode: data.statusCode,
headers: data.headers,
- }),
+ })
);
}
callback(null, data);
- },
+ }
);
},
- params.onHashProgress,
+ params.onHashProgress
);
}
@@ -2962,7 +2962,7 @@ function multipartUpload(params, callback) {
statusCode: data.statusCode,
headers: data.headers,
});
- },
+ }
);
});
});
@@ -3057,7 +3057,7 @@ function multipartComplete(params, callback) {
headers: data.headers,
});
callback(null, result);
- },
+ }
);
}
@@ -3124,7 +3124,7 @@ function multipartList(params, callback) {
headers: data.headers,
});
callback(null, result);
- },
+ }
);
}
@@ -3179,7 +3179,7 @@ function multipartListPart(params, callback) {
headers: data.headers,
});
callback(null, result);
- },
+ }
);
}
@@ -3215,7 +3215,7 @@ function multipartAbort(params, callback) {
statusCode: data.statusCode,
headers: data.headers,
});
- },
+ }
);
}
@@ -3253,7 +3253,7 @@ function request(params, callback) {
delete data.body;
}
callback(err, data);
- },
+ }
);
}
@@ -3309,7 +3309,7 @@ function appendObject(params, callback) {
function (err, data) {
if (err) return callback(err);
callback(null, data);
- },
+ }
);
}
@@ -3429,7 +3429,7 @@ function getObjectUrl(params, callback) {
setTimeout(function () {
callback(null, { Url: signUrl });
});
- },
+ }
);
if (AuthData) {
syncUrl +=
@@ -3770,7 +3770,7 @@ function getAuthorizationAsync(params, callback) {
self._StsCache.push(StsData);
calcAuthByTmpKey();
}
- },
+ }
);
} else if (self.options.getSTS) {
// 外部获取临时密钥
@@ -3790,7 +3790,7 @@ function getAuthorizationAsync(params, callback) {
if (AuthError) return cb(AuthError);
self._StsCache.push(StsData);
calcAuthByTmpKey();
- },
+ }
);
} else {
// 内部计算获取签名
@@ -3919,7 +3919,7 @@ function submitRequest(params, callback) {
callback(err, data);
}
});
- },
+ }
);
};
next(1);
diff --git a/src/cos.js b/src/cos.js
index 69918b2..1feebbc 100644
--- a/src/cos.js
+++ b/src/cos.js
@@ -57,7 +57,7 @@ var COS = function (options) {
this.options.Timeout = Math.max(0, this.options.Timeout);
if (this.options.AppId) {
console.warn(
- 'warning: AppId has been deprecated, Please put it at the end of parameter Bucket(E.g: "test-1250000000").',
+ 'warning: AppId has been deprecated, Please put it at the end of parameter Bucket(E.g: "test-1250000000").'
);
}
if (this.options.SecretId && this.options.SecretId.indexOf(' ') > -1) {
@@ -70,10 +70,10 @@ var COS = function (options) {
}
if (util.isNode()) {
console.warn(
- 'warning: cos-js-sdk-v5 不支持 nodejs 环境使用,请改用 cos-nodejs-sdk-v5,参考文档: https://cloud.tencent.com/document/product/436/8629',
+ 'warning: cos-js-sdk-v5 不支持 nodejs 环境使用,请改用 cos-nodejs-sdk-v5,参考文档: https://cloud.tencent.com/document/product/436/8629'
);
console.warn(
- 'warning: cos-js-sdk-v5 does not support nodejs environment. Please use cos-nodejs-sdk-v5 instead. See: https://cloud.tencent.com/document/product/436/8629',
+ 'warning: cos-js-sdk-v5 does not support nodejs environment. Please use cos-nodejs-sdk-v5 instead. See: https://cloud.tencent.com/document/product/436/8629'
);
}
event.init(this);
diff --git a/src/tracker.js b/src/tracker.js
index 5012b87..f933b5a 100644
--- a/src/tracker.js
+++ b/src/tracker.js
@@ -173,7 +173,7 @@ const sliceUploadMethods = [
];
const uploadApi = ['putObject', 'postObject', 'appendObject', 'sliceUploadFile', 'uploadFile', 'uploadFiles'].concat(
- sliceUploadMethods,
+ sliceUploadMethods
);
const downloadApi = ['getObject'];
diff --git a/src/util.js b/src/util.js
index ee65e43..5186d5a 100644
--- a/src/util.js
+++ b/src/util.js
@@ -190,7 +190,7 @@ var parseSelectPayload = function (chunk) {
var headerValue = buf2str(
chunk,
offset + headerNameLength + 4,
- offset + headerNameLength + 4 + headerValueLength,
+ offset + headerNameLength + 4 + headerValueLength
);
header[headerName] = headerValue;
offset += headerNameLength + 4 + headerValueLength;
@@ -223,7 +223,7 @@ var getSourceParams = function (source) {
var parser = this.options.CopySourceParser;
if (parser) return parser(source);
var m = source.match(
- /^([^.]+-\d+)\.cos(v6|-cdc|-cdz|-internal)?\.([^.]+)\.((myqcloud\.com)|(tencentcos\.cn))\/(.+)$/,
+ /^([^.]+-\d+)\.cos(v6|-cdc|-cdz|-internal)?\.([^.]+)\.((myqcloud\.com)|(tencentcos\.cn))\/(.+)$/
);
if (!m) return null;
return { Bucket: m[1], Region: m[3], Key: m[7] };
@@ -335,7 +335,7 @@ var getBodyMd5 = function (UploadCheckContentMd5, Body, callback, onProgress) {
function (err, md5) {
callback(md5);
},
- onProgress,
+ onProgress
);
} else {
callback();
@@ -649,7 +649,7 @@ var apiWrapper = function (apiName, apiFn) {
params.Region !== 'accelerate'
) {
console.warn(
- 'warning: param Region format error, find help here: https://cloud.tencent.com/document/product/436/6224',
+ 'warning: param Region format error, find help here: https://cloud.tencent.com/document/product/436/6224'
);
}
}
@@ -666,7 +666,7 @@ var apiWrapper = function (apiName, apiFn) {
}
if (params.AppId) {
console.warn(
- 'warning: AppId has been deprecated, Please put it at the end of parameter Bucket(E.g Bucket:"test-1250000000" ).',
+ 'warning: AppId has been deprecated, Please put it at the end of parameter Bucket(E.g Bucket:"test-1250000000" ).'
);
delete params.AppId;
}
diff --git a/test/test.js b/test/test.js
index a89524b..ff5b7f4 100644
--- a/test/test.js
+++ b/test/test.js
@@ -259,7 +259,7 @@ group('init cos', function () {
function (err, data) {
assert.ok(canSuccess ? !err : err);
done();
- },
+ }
);
};
test('使用AppId', function (done) {
@@ -344,7 +344,7 @@ group('init cos', function () {
function (err, data) {
assert.ok(!err);
done();
- },
+ }
);
});
test('getAuthorization 使用临时密钥 sliceUploadFile', function (done) {
@@ -359,7 +359,7 @@ group('init cos', function () {
function (err, data) {
assert.ok(!err);
done();
- },
+ }
);
});
test('getAuthorization 使用临时密钥 sliceUploadFile 没有权限', function (done) {
@@ -374,7 +374,7 @@ group('init cos', function () {
function (err, data) {
assert.ok(err);
done();
- },
+ }
);
});
});
@@ -395,7 +395,7 @@ group('task 队列', function () {
Key: filename,
Body: '12345',
},
- function (err, data) {},
+ function (err, data) {}
);
};
for (var i = 0; i < 120; i++) {
@@ -419,7 +419,7 @@ group('task 队列', function () {
function (err, data) {
assert.ok(!err);
done();
- },
+ }
);
cos.on('task-list-update', function () {});
});
@@ -453,7 +453,7 @@ group('getService()', function () {
function (err, data) {
assert.ok(err);
done();
- },
+ }
);
});
test('getService 不传Region和Domain', function (done) {
@@ -474,7 +474,7 @@ group('getService()', function () {
function (err, data) {
assert.ok(err);
done();
- },
+ }
);
});
});
@@ -490,7 +490,7 @@ group('putBucket()', function () {
function (err, data) {
assert.ok(err);
done();
- },
+ }
);
});
test('正常创建 bucket BucketAZConfig js sdk因为跨域会失败', function (done) {
@@ -503,7 +503,7 @@ group('putBucket()', function () {
function (err, data) {
assert.ok(err);
done();
- },
+ }
);
});
test('deleteBucket() deleteBucket 不存在', function (done) {
@@ -515,7 +515,7 @@ group('putBucket()', function () {
function (err, data) {
assert.ok(err, 'deleteBucket 不存在');
done();
- },
+ }
);
});
});
@@ -561,7 +561,7 @@ group('mock readAsBinaryString', function () {
if (hasProgress) {
done();
}
- },
+ }
);
}
},
@@ -621,9 +621,9 @@ group('getAuth()', function () {
AuthData.Authorization +
(AuthData.SecurityToken ? '&x-cos-security-token=' + AuthData.SecurityToken : '');
done();
- },
+ }
);
- },
+ }
);
});
});
@@ -653,9 +653,9 @@ group('getObjectUrl()', function () {
function (err, data) {
expect(typeof data.Url).toBe('string');
err ? done(err) : done();
- },
+ }
);
- },
+ }
);
});
});
@@ -673,7 +673,7 @@ group('auth check', function () {
},
function (err, data) {
err ? done(err) : done();
- },
+ }
);
});
});
@@ -689,7 +689,7 @@ group('getBucket(),listObjectVersions()', function () {
expect(data.Name).toBe(BucketLongName);
expect(data.Contents).toBeInstanceOf(Array);
err ? done(err) : done();
- },
+ }
);
});
test('正常获取 bucket 里的文件版本列表', function (done) {
@@ -702,7 +702,7 @@ group('getBucket(),listObjectVersions()', function () {
expect(data.Name).toBe(config.Bucket);
expect(data.Versions).toBeInstanceOf(Array);
err ? done(err) : done();
- },
+ }
);
});
});
@@ -738,7 +738,7 @@ group('putObject(),cancelTask()', function () {
function (err, data) {
alive = true;
err ? done(err) : done();
- },
+ }
);
});
});
@@ -758,7 +758,7 @@ group('putObject 测试老参数', function () {
function (err, data) {
assert.ok(!err);
done();
- },
+ }
);
});
});
@@ -802,11 +802,11 @@ group('sliceUploadFile() 完整上传文件', function () {
const success = data && data.headers && parseInt(data.headers['content-length'] || 0) === fileSize;
expect(success);
err ? done(err) : done();
- },
+ }
);
- },
+ }
);
- },
+ }
);
});
test('sliceUploadFile(),pauseTask(),restartTask()', function (done) {
@@ -851,9 +851,9 @@ group('sliceUploadFile() 完整上传文件', function () {
},
function (err, data) {
paused = true;
- },
+ }
);
- },
+ }
);
});
test('sliceUploadFile(),cancelTask(),restartTask()', function (done) {
@@ -891,15 +891,15 @@ group('sliceUploadFile() 完整上传文件', function () {
},
function (err, data) {
err ? done(err) : done();
- },
+ }
);
}, 10);
}
},
},
- function (err, data) {},
+ function (err, data) {}
);
- },
+ }
);
});
test('sliceUploadFile(),cancelTask()', function (done) {
@@ -929,7 +929,7 @@ group('sliceUploadFile() 完整上传文件', function () {
},
function (err, data) {
alive = true;
- },
+ }
);
});
});
@@ -945,7 +945,7 @@ group('sliceUploadFile() 同时上传2个文件', function () {
Key: filename,
Body: blob,
},
- function (err, data) {},
+ function (err, data) {}
);
});
setTimeout(() => {
@@ -959,7 +959,7 @@ group('sliceUploadFile() 同时上传2个文件', function () {
function (err, data) {
assert.ok(err);
done();
- },
+ }
);
}, 2000);
});
@@ -987,12 +987,12 @@ group('sliceUploadFile() 续传', function () {
function (err, data) {
assert.ok(!err);
done();
- },
+ }
);
}, 2000);
},
},
- function (err, data) {},
+ function (err, data) {}
);
});
test('sliceUploadFile() cancelTask', function (done) {
@@ -1015,12 +1015,12 @@ group('sliceUploadFile() 续传', function () {
function (err, data) {
assert.ok(!err);
done();
- },
+ }
);
}, 2000);
},
},
- function (err, data) {},
+ function (err, data) {}
);
});
test('sliceUploadFile() 续传时本地文件修改', function (done) {
@@ -1043,12 +1043,12 @@ group('sliceUploadFile() 续传', function () {
function (err, data) {
assert.ok(err);
done();
- },
+ }
);
}, 2000);
},
},
- function (err, data) {},
+ function (err, data) {}
);
});
});
@@ -1081,9 +1081,9 @@ group('abortUploadTask()', function () {
assert.ok(data.successList.length >= 1);
assert.ok(nameExist);
err ? done(err) : done();
- },
+ }
);
- },
+ }
);
});
test('abortUploadTask(),Level=file', function (done) {
@@ -1110,7 +1110,7 @@ group('abortUploadTask()', function () {
assert.ok(data.successList.length >= 1);
assert.ok(data.successList[0] && data.successList[0].Key === filename);
err ? done(err) : done();
- },
+ }
);
},
});
@@ -1147,7 +1147,7 @@ group('abortUploadTask()', function () {
assert.ok(data.successList.length >= 1);
assert.ok(nameExist);
err ? done(err) : done();
- },
+ }
);
},
});
@@ -1164,7 +1164,7 @@ group('headBucket()', function () {
function (err, data) {
expect(data.statusCode).toBe(200);
err ? done(err) : done();
- },
+ }
);
});
test('getBucket()', function (done) {
@@ -1177,7 +1177,7 @@ group('headBucket()', function () {
assert.ok(data.Name === BucketLongName);
expect(data.Contents).toBeInstanceOf(Array);
err ? done(err) : done();
- },
+ }
);
});
});
@@ -1200,7 +1200,7 @@ group('putObject()', function () {
},
function (err, data) {
callback(data && data.headers && data.headers.etag);
- },
+ }
);
}, 2000);
};
@@ -1223,7 +1223,7 @@ group('putObject()', function () {
assert.ok(data.ETag === ETag);
done();
});
- },
+ }
);
});
@@ -1254,9 +1254,9 @@ group('putObject()', function () {
function (err, data) {
assert.ok(data.Body && data.Body === content && (data.headers && data.headers.etag) === ETag);
done();
- },
+ }
);
- },
+ }
);
});
test('putObject(),string,empty', function (done) {
@@ -1286,9 +1286,9 @@ group('putObject()', function () {
function (err, data) {
assert.ok(data.Body === content && (data.headers && data.headers.etag) === ETag);
done();
- },
+ }
);
- },
+ }
);
});
test('putObject(),特殊二进制字符 ArrayBuffer md5', function (done) {
@@ -1324,9 +1324,9 @@ group('putObject()', function () {
});
assert.ok(isSame && (data.headers && data.headers.etag) === ETag);
done();
- },
+ }
);
- },
+ }
);
});
test('putObject(),特殊二进制字符 Blob md5', function (done) {
@@ -1361,9 +1361,9 @@ group('putObject()', function () {
});
assert.ok(isSame && (data.headers && data.headers.etag) === ETag);
done();
- },
+ }
);
- },
+ }
);
});
test('putObject(),特殊二进制字符 中文 string md5', function (done) {
@@ -1390,9 +1390,9 @@ group('putObject()', function () {
var isSame = content === data.Body;
assert.ok(isSame && (data.headers && data.headers.etag) === ETag);
done();
- },
+ }
);
- },
+ }
);
});
test('putObject(),特殊二进制字符 unescape string md5', function (done) {
@@ -1419,9 +1419,9 @@ group('putObject()', function () {
var isSame = content === data.Body;
assert.ok(isSame && (data.headers && data.headers.etag) === ETag);
done();
- },
+ }
);
- },
+ }
);
});
});
@@ -1450,9 +1450,9 @@ group('getObject()', function () {
assert.ok(data.headers['content-length'] === '' + content.length);
assert.ok(objectContent === content);
done();
- },
+ }
);
- },
+ }
);
});
test('getObject() bucket not exist', function (done) {
@@ -1466,7 +1466,7 @@ group('getObject()', function () {
function (err, data) {
assert.ok(err);
done();
- },
+ }
);
});
test('getObject() object not exist', function (done) {
@@ -1480,7 +1480,7 @@ group('getObject()', function () {
function (err, data) {
assert.ok(err);
done();
- },
+ }
);
});
test('getObject() DataType blob', function (done) {
@@ -1506,9 +1506,9 @@ group('getObject()', function () {
expect(data.Body).toBeInstanceOf(Blob);
expect(data.headers['content-length'] === '' + content.length);
done();
- },
+ }
);
- },
+ }
);
});
test('getObject() DataType arraybuffer', function (done) {
@@ -1534,9 +1534,9 @@ group('getObject()', function () {
expect(data.Body).toBeInstanceOf(ArrayBuffer);
expect(data.headers['content-length'] === '' + content.length);
done();
- },
+ }
);
- },
+ }
);
});
});
@@ -1554,7 +1554,7 @@ group('Key 特殊字符', function () {
if (err) throw err;
expect(data !== null);
done();
- },
+ }
);
});
});
@@ -1570,7 +1570,7 @@ group('deleteObject', function () {
function (err, data) {
assert.ok(err);
done();
- },
+ }
);
});
test('deleteObject() object not exist', function (done) {
@@ -1583,7 +1583,7 @@ group('deleteObject', function () {
function (err, data) {
assert.ok(err);
done();
- },
+ }
);
});
});
@@ -1624,13 +1624,13 @@ group('putObjectCopy() 1', function () {
function (err, data) {
expect(data.headers && data.headers.etag === ETag);
done();
- },
+ }
);
- },
+ }
);
- },
+ }
);
- },
+ }
);
});
test('捕获 object 异常', function (done) {
@@ -1645,7 +1645,7 @@ group('putObjectCopy() 1', function () {
function (err, data) {
assert.ok(err);
done();
- },
+ }
);
});
});
@@ -1663,7 +1663,7 @@ group('putObjectCopy()', function () {
function (err, data) {
expect(data.ETag.length > 0);
done();
- },
+ }
);
});
test('捕获 object 异常', function (done) {
@@ -1679,7 +1679,7 @@ group('putObjectCopy()', function () {
expect(err.statusCode === 404);
expect(err.error.Code === 'NoSuchKey');
done();
- },
+ }
);
});
});
@@ -1736,11 +1736,11 @@ group('sliceCopyFile()', function () {
});
assert.ok(comparePlainObject(data1, data2));
done();
- },
+ }
);
- },
+ }
);
- },
+ }
);
})
.catch(function () {
@@ -1798,12 +1798,12 @@ group('sliceCopyFile()', function () {
delete data2.RequestId;
assert.ok(comparePlainObject(data1, data2));
done();
- },
+ }
);
}, 2000);
- },
+ }
);
- },
+ }
);
})
.catch(function () {
@@ -1822,7 +1822,7 @@ group('sliceCopyFile()', function () {
function (err, data) {
assert.ok(err !== null);
done();
- },
+ }
);
});
test('复制归档文件', function (done) {
@@ -1847,9 +1847,9 @@ group('sliceCopyFile()', function () {
function (err, data) {
assert.ok(err !== null);
done();
- },
+ }
);
- },
+ }
);
});
test('复制空文件', function (done) {
@@ -1872,9 +1872,9 @@ group('sliceCopyFile()', function () {
function (err, data) {
assert.ok(err !== null);
done();
- },
+ }
);
- },
+ }
);
});
});
@@ -1923,15 +1923,15 @@ group('deleteMultipleObject', function () {
function (err, data) {
assert.ok(err.statusCode === 404);
done();
- },
+ }
);
- },
+ }
);
- },
+ }
);
- },
+ }
);
- },
+ }
);
});
});
@@ -1980,9 +1980,9 @@ group('BucketAcl', function () {
AccessControlPolicy2.Owner.ID = data.Owner.ID;
assert.ok(data.ACL === 'private' || data.ACL === 'default');
done();
- },
+ }
);
- },
+ }
);
});
test('putBucketAcl() header ACL:public-read', function (done) {
@@ -1998,7 +1998,7 @@ group('BucketAcl', function () {
assert.ok(data.ACL === 'public-read');
done();
});
- },
+ }
);
});
test('putBucketAcl() header ACL:public-read-write', function (done) {
@@ -2014,7 +2014,7 @@ group('BucketAcl', function () {
assert.ok(data.ACL === 'public-read-write');
done();
});
- },
+ }
);
});
test('putBucketAcl() header GrantRead:1001,1002', function (done) {
@@ -2031,7 +2031,7 @@ group('BucketAcl', function () {
assert.ok(data.GrantRead === GrantRead);
done();
});
- },
+ }
);
});
test('putBucketAcl() header GrantWrite:1001,1002', function (done) {
@@ -2048,7 +2048,7 @@ group('BucketAcl', function () {
assert.ok(data.GrantWrite === GrantWrite);
done();
});
- },
+ }
);
});
test('putBucketAcl() header GrantFullControl:1001,1002', function (done) {
@@ -2065,7 +2065,7 @@ group('BucketAcl', function () {
assert.ok(data.GrantFullControl === GrantFullControl);
done();
});
- },
+ }
);
});
test('putBucketAcl() header ACL:public-read, GrantFullControl:1001,1002', function (done) {
@@ -2084,7 +2084,7 @@ group('BucketAcl', function () {
assert.ok(data.ACL === 'public-read');
done();
});
- },
+ }
);
});
test('putBucketAcl() xml', function (done) {
@@ -2100,12 +2100,12 @@ group('BucketAcl', function () {
assert.ok(data.Grants.length === 1);
assert.ok(
data.Grants[0] && data.Grants[0].Grantee.ID === 'qcs::cam::uin/10002:uin/10002',
- '设置 AccessControlPolicy ID 正确',
+ '设置 AccessControlPolicy ID 正确'
);
assert.ok(data.Grants[0] && data.Grants[0].Permission === 'READ', '设置 AccessControlPolicy Permission 正确');
done();
});
- },
+ }
);
});
test('putBucketAcl() xml2', function (done) {
@@ -2123,7 +2123,7 @@ group('BucketAcl', function () {
assert.ok(data.Grants[0] && data.Grants[0].Permission === 'READ');
done();
});
- },
+ }
);
});
test('putBucketAcl() decodeAcl', function (done) {
@@ -2145,9 +2145,9 @@ group('BucketAcl', function () {
function (err, data) {
assert.ok(data);
done();
- },
+ }
);
- },
+ }
);
});
});
@@ -2208,11 +2208,11 @@ group('ObjectAcl', function () {
AccessControlPolicy2.Owner.ID = data.Owner.ID;
assert.ok(data.Grants.length === 1);
done();
- },
+ }
);
- },
+ }
);
- },
+ }
);
});
test('putObjectAcl() header ACL:default', function (done) {
@@ -2234,9 +2234,9 @@ group('ObjectAcl', function () {
function (err, data) {
assert.ok((data.ACL = 'default'));
done();
- },
+ }
);
- },
+ }
);
});
test('putObjectAcl() header ACL:public-read', function (done) {
@@ -2253,7 +2253,7 @@ group('ObjectAcl', function () {
assert.ok((data.ACL = 'public-read'));
done();
});
- },
+ }
);
});
// Object 不再支持修改写权限
@@ -2286,7 +2286,7 @@ group('ObjectAcl', function () {
assert.ok((data.GrantRead = GrantRead));
done();
});
- },
+ }
);
});
// Object 不再支持修改写权限
@@ -2320,7 +2320,7 @@ group('ObjectAcl', function () {
assert.ok((data.GrantFullControl = GrantFullControl));
done();
});
- },
+ }
);
});
test('putObjectAcl() header ACL:public-read, GrantRead:1001,1002', function (done) {
@@ -2340,7 +2340,7 @@ group('ObjectAcl', function () {
assert.ok((data.ACL = 'public-read'));
done();
});
- },
+ }
);
});
test('putObjectAcl() xml', function (done) {
@@ -2357,12 +2357,12 @@ group('ObjectAcl', function () {
assert.ok(data.Grants.length === 1);
assert.ok(
data.Grants[0] && data.Grants[0].Grantee.ID === 'qcs::cam::uin/10002:uin/10002',
- '设置 AccessControlPolicy ID 正确',
+ '设置 AccessControlPolicy ID 正确'
);
assert.ok(data.Grants[0] && data.Grants[0].Permission === 'READ', '设置 AccessControlPolicy Permission 正确');
done();
});
- },
+ }
);
});
test('putObjectAcl() xml2', function (done) {
@@ -2386,9 +2386,9 @@ group('ObjectAcl', function () {
assert.ok(data.Grants[0] && data.Grants[0].Grantee.ID === 'qcs::cam::uin/10002:uin/10002', 'ID 正确');
assert.ok(data.Grants[0] && data.Grants[0].Permission === 'READ', 'Permission 正确');
done();
- },
+ }
);
- },
+ }
);
});
test('putObjectAcl() decodeAcl', function (done) {
@@ -2412,9 +2412,9 @@ group('ObjectAcl', function () {
function (err, data) {
assert.ok(data);
done();
- },
+ }
);
- },
+ }
);
});
});
@@ -2489,7 +2489,7 @@ group('BucketCors', function () {
function (err, data) {
assert.ok(!err);
done();
- },
+ }
);
});
test('putBucketCors() old CORSConfiguration', function (done) {
@@ -2513,10 +2513,10 @@ group('BucketCors', function () {
function (err, data) {
assert.ok(comparePlainObject(CORSRules, data.CORSRules));
done();
- },
+ }
);
}, 2000);
- },
+ }
);
});
test('putBucketCors() multi', function (done) {
@@ -2539,10 +2539,10 @@ group('BucketCors', function () {
function (err, data) {
assert.ok(comparePlainObject(CORSRulesMulti, data.CORSRules));
done();
- },
+ }
);
}, 2000);
- },
+ }
);
});
test('putBucketCors() old CORSRules', function (done) {
@@ -2564,10 +2564,10 @@ group('BucketCors', function () {
function (err, data) {
assert.ok(comparePlainObject(CORSRules, data.CORSRules));
done();
- },
+ }
);
}, 2000);
- },
+ }
);
});
test('putBucketCors(),getBucketCors()', function (done) {
@@ -2591,10 +2591,10 @@ group('BucketCors', function () {
function (err, data) {
assert.ok(comparePlainObject(CORSRules, data.CORSRules));
done();
- },
+ }
);
}, 2000);
- },
+ }
);
});
test('getBucketCors() bucket not exist', function (done) {
@@ -2606,7 +2606,7 @@ group('BucketCors', function () {
function (err, data) {
assert.ok(err);
done();
- },
+ }
);
});
test('deleteBucketCors() bucket not exist', function (done) {
@@ -2618,7 +2618,7 @@ group('BucketCors', function () {
function (err, data) {
assert.ok(err);
done();
- },
+ }
);
});
// test('delete cors, optionsObject()', function (done) {
@@ -2659,7 +2659,7 @@ group('optionsObject', function () {
function (err, data) {
assert.ok(err);
done();
- },
+ }
);
});
test('optionsObject', function (done) {
@@ -2685,9 +2685,9 @@ group('optionsObject', function () {
function (err, data) {
assert.ok(!err);
done();
- },
+ }
);
- },
+ }
);
});
});
@@ -2710,7 +2710,7 @@ group('BucketTagging', function () {
function (err, data) {
assert.ok(err);
done();
- },
+ }
);
});
test('getBucketTagging() bucket not exist', function (done) {
@@ -2722,7 +2722,7 @@ group('BucketTagging', function () {
function (err, data) {
assert.ok(err);
done();
- },
+ }
);
});
test('deleteBucketTagging() bucket not exist', function (done) {
@@ -2734,7 +2734,7 @@ group('BucketTagging', function () {
function (err, data) {
assert.ok(err);
done();
- },
+ }
);
});
test('putBucketTagging(),getBucketTagging()', function (done) {
@@ -2758,10 +2758,10 @@ group('BucketTagging', function () {
function (err, data) {
assert.ok(comparePlainObject(Tags, data.Tags));
done();
- },
+ }
);
}, 1000);
- },
+ }
);
});
test('deleteBucketTagging()', function (done) {
@@ -2781,10 +2781,10 @@ group('BucketTagging', function () {
function (err, data) {
assert.ok(comparePlainObject([], data.Tags));
done();
- },
+ }
);
}, 1000);
- },
+ }
);
});
test('putBucketTagging() multi', function (done) {
@@ -2808,10 +2808,10 @@ group('BucketTagging', function () {
function (err, data) {
assert.ok(comparePlainObject(TagsMulti, data.Tags));
done();
- },
+ }
);
}, 1000);
- },
+ }
);
});
});
@@ -2876,9 +2876,9 @@ group('BucketPolicy', function () {
function (err, data) {
assert.ok(getRes(Policy.statement) === getRes(data.Policy.Statement));
done();
- },
+ }
);
- },
+ }
);
});
test('putBucketPolicy() s3', function (done) {
@@ -2898,9 +2898,9 @@ group('BucketPolicy', function () {
function (err, data) {
assert.ok(getRes(Policy.statement) === getRes(data.Policy.Statement));
done();
- },
+ }
);
- },
+ }
);
});
test('getBucketPolicy() bucket not exist', function (done) {
@@ -2912,7 +2912,7 @@ group('BucketPolicy', function () {
function (err, data) {
assert.ok(err);
done();
- },
+ }
);
});
test('putBucketPolicy() bucket not exist', function (done) {
@@ -2925,7 +2925,7 @@ group('BucketPolicy', function () {
function (err, data) {
assert.ok(err);
done();
- },
+ }
);
});
test('deleteBucketPolicy() bucket not exist', function (done) {
@@ -2938,7 +2938,7 @@ group('BucketPolicy', function () {
function (err, data) {
assert.ok(err);
done();
- },
+ }
);
});
test('deleteBucketPolicy()', function (done) {
@@ -2958,9 +2958,9 @@ group('BucketPolicy', function () {
function (err, data) {
assert.ok(err.ErrorStatus === 'Policy Not Found');
done();
- },
+ }
);
- },
+ }
);
});
});
@@ -2990,10 +2990,10 @@ group('BucketLocation', function () {
assert.ok(
data.LocationConstraint === config.Region ||
data.LocationConstraint === map1[config.Region] ||
- data.LocationConstraint === map2[config.Region],
+ data.LocationConstraint === map2[config.Region]
);
done();
- },
+ }
);
});
});
@@ -3053,10 +3053,10 @@ group('BucketLifecycle', function () {
function (err, data) {
assert.ok(comparePlainObject([], data.Rules));
done();
- },
+ }
);
}, 2000);
- },
+ }
);
});
test('putBucketLifecycle(),getBucketLifecycle()', function (done) {
@@ -3080,10 +3080,10 @@ group('BucketLifecycle', function () {
function (err, data) {
assert.ok(comparePlainObject(Rules, data && data.Rules));
done();
- },
+ }
);
}, 2000);
- },
+ }
);
});
test('putBucketLifecycle() multi', function (done) {
@@ -3107,10 +3107,10 @@ group('BucketLifecycle', function () {
function (err, data) {
assert.ok(comparePlainObject(RulesMulti, data.Rules));
done();
- },
+ }
);
}, 2000);
- },
+ }
);
});
test('putBucketLifecycle() bucket not exist', function (done) {
@@ -3125,7 +3125,7 @@ group('BucketLifecycle', function () {
function (err, data) {
assert.ok(err);
done();
- },
+ }
);
});
test('getBucketLifecycle() bucket not exist', function (done) {
@@ -3137,7 +3137,7 @@ group('BucketLifecycle', function () {
function (err, data) {
assert.ok(err);
done();
- },
+ }
);
});
test('deleteBucketLifecycle() bucket not exist', function (done) {
@@ -3149,7 +3149,7 @@ group('BucketLifecycle', function () {
function (err, data) {
assert.ok(err);
done();
- },
+ }
);
});
});
@@ -3213,10 +3213,10 @@ group('BucketWebsite', function () {
function (err, data) {
assert.ok(comparePlainObject(WebsiteConfiguration, data.WebsiteConfiguration));
done();
- },
+ }
);
}, 2000);
- },
+ }
);
});
test('putBucketWebsite() multi RoutingRules', function (done) {
@@ -3238,10 +3238,10 @@ group('BucketWebsite', function () {
function (err, data) {
assert.ok(comparePlainObject(WebsiteConfiguration, data.WebsiteConfiguration));
done();
- },
+ }
);
}, 2000);
- },
+ }
);
});
test('putBucketWebsite() no WebsiteConfiguration', function (done) {
@@ -3253,7 +3253,7 @@ group('BucketWebsite', function () {
function (err, data) {
assert.ok(err);
done();
- },
+ }
);
});
test('putBucketWebsite() bucket not exist', function (done) {
@@ -3265,7 +3265,7 @@ group('BucketWebsite', function () {
function (err, data) {
assert.ok(err);
done();
- },
+ }
);
});
test('getBucketWebsite() bucket not exist', function (done) {
@@ -3277,7 +3277,7 @@ group('BucketWebsite', function () {
function (err, data) {
assert.ok(err);
done();
- },
+ }
);
});
test('deleteBucketWebsite() bucket not exist', function (done) {
@@ -3289,7 +3289,7 @@ group('BucketWebsite', function () {
function (err, data) {
assert.ok(err);
done();
- },
+ }
);
});
test('deleteBucketWebsite()', function (done) {
@@ -3309,10 +3309,10 @@ group('BucketWebsite', function () {
function (err, data) {
assert.ok(comparePlainObject({}, data.WebsiteConfiguration));
done();
- },
+ }
);
}, 2000);
- },
+ }
);
});
});
@@ -3347,10 +3347,10 @@ group('BucketDomain', function () {
function (err, data) {
assert.ok(comparePlainObject(DomainRule, data.DomainRule));
done();
- },
+ }
);
}, 2000);
- },
+ }
);
});
test('putBucketDomain() bucket not exist', function (done) {
@@ -3363,7 +3363,7 @@ group('BucketDomain', function () {
function (err, data) {
assert.ok(err);
done();
- },
+ }
);
});
test('getBucketDomain() bucket not exist', function (done) {
@@ -3375,7 +3375,7 @@ group('BucketDomain', function () {
function (err, data) {
assert.ok(err);
done();
- },
+ }
);
});
test('deleteBucketDomain() bucket not exist', function (done) {
@@ -3387,7 +3387,7 @@ group('BucketDomain', function () {
function (err, data) {
assert.ok(err);
done();
- },
+ }
);
});
// test('putBucketDomain() multi', function (done) {
@@ -3425,10 +3425,10 @@ group('BucketDomain', function () {
function (err, data) {
assert.ok(err.statusCode === 404);
done();
- },
+ }
);
}, 2000);
- },
+ }
);
});
});
@@ -3443,7 +3443,7 @@ group('params check Region', function () {
function (err, data) {
assert.ok(err.message === 'param Region should not be start with "cos."');
done();
- },
+ }
);
});
test('params check Region', function (done) {
@@ -3455,7 +3455,7 @@ group('params check Region', function () {
function (err, data) {
assert.ok(err.message === 'CORS blocked or network error');
done();
- },
+ }
);
});
});
@@ -3493,11 +3493,11 @@ group('Key 特殊字符处理', function () {
function (err, data) {
assert.ok(!err);
done();
- },
+ }
);
- },
+ }
);
- },
+ }
);
});
});
@@ -3512,7 +3512,7 @@ group('Bucket 格式有误', function () {
function (err, data) {
assert.ok(err && err.message === 'Bucket should format as "test-1250000000".');
done();
- },
+ }
);
});
test('Bucket 带有 /', function (done) {
@@ -3524,7 +3524,7 @@ group('Bucket 格式有误', function () {
function (err, data) {
assert.ok(err && err.message === 'Bucket should format as "test-1250000000".');
done();
- },
+ }
);
});
test('Bucket 带有 .', function (done) {
@@ -3536,7 +3536,7 @@ group('Bucket 格式有误', function () {
function (err, data) {
assert.ok(err && err.message === 'Bucket should format as "test-1250000000".');
done();
- },
+ }
);
});
test('Bucket 带有 :', function (done) {
@@ -3548,7 +3548,7 @@ group('Bucket 格式有误', function () {
function (err, data) {
assert.ok(err && err.message === 'Bucket should format as "test-1250000000".');
done();
- },
+ }
);
});
});
@@ -3563,7 +3563,7 @@ group('Region 格式有误', function () {
function (err, data) {
assert.ok(err && err.message === 'Region format error.');
done();
- },
+ }
);
});
test('Region 带有 /', function (done) {
@@ -3575,7 +3575,7 @@ group('Region 格式有误', function () {
function (err, data) {
assert.ok(err && err.message === 'Region format error.');
done();
- },
+ }
);
});
test('Region 带有 :', function (done) {
@@ -3587,7 +3587,7 @@ group('Region 格式有误', function () {
function (err, data) {
assert.ok(err && err.message === 'Region format error.');
done();
- },
+ }
);
});
});
@@ -3620,9 +3620,9 @@ group('复制文件', function () {
function (err, data) {
assert.ok(data && data.ETag, '成功进行分片复制');
done();
- },
+ }
);
- },
+ }
);
});
@@ -3641,7 +3641,7 @@ group('复制文件', function () {
if (err) throw err;
assert.ok(data && data.ETag, '成功进行单片复制');
done();
- },
+ }
);
});
});
@@ -3661,7 +3661,7 @@ group('putObject 中文 Content-MD5', function () {
function (err, data) {
assert.ok(data && data.ETag, '成功进行上传');
done();
- },
+ }
);
});
test('putObject 中文字符串 带 Content-MD5', function (done) {
@@ -3676,7 +3676,7 @@ group('putObject 中文 Content-MD5', function () {
function (err, data) {
assert.ok(data && data.ETag, '成功进行上传');
done();
- },
+ }
);
});
});
@@ -3697,7 +3697,7 @@ group('deleteMultipleObject Key 带中文字符', function () {
function (err, data) {
assert.ok(!err, '成功进行批量删除');
done();
- },
+ }
);
});
});
@@ -3722,9 +3722,9 @@ group('upload Content-Type', function () {
function (err, data) {
assert.ok(data.headers['content-type'] === 'text/plain', 'Content-Type 正确');
done();
- },
+ }
);
- },
+ }
);
});
test('putObject string Content-Type null -> text/plain', function (done) {
@@ -3745,9 +3745,9 @@ group('upload Content-Type', function () {
function (err, data) {
assert.ok(data.headers['content-type'] === 'text/plain', 'Content-Type 正确');
done();
- },
+ }
);
- },
+ }
);
});
test('putObject string Content-Type text/xml -> text/xml', function (done) {
@@ -3769,9 +3769,9 @@ group('upload Content-Type', function () {
function (err, data) {
assert.ok(data.headers['content-type'] === 'text/xml', 'Content-Type 正确');
done();
- },
+ }
);
- },
+ }
);
});
test('putObject blob Content-Type text/xml -> text/xml', function (done) {
@@ -3793,9 +3793,9 @@ group('upload Content-Type', function () {
function (err, data) {
assert.ok(data.headers['content-type'] === 'text/xml', 'Content-Type 正确');
done();
- },
+ }
);
- },
+ }
);
});
test('putObject blob Content-Type text/html -> text/html', function (done) {
@@ -3816,9 +3816,9 @@ group('upload Content-Type', function () {
function (err, data) {
assert.ok(data.headers['content-type'] === 'text/html', 'Content-Type 正确');
done();
- },
+ }
);
- },
+ }
);
});
test('putObject blob Content-Type null -> application/zip or application/octet-stream', function (done) {
@@ -3839,9 +3839,9 @@ group('upload Content-Type', function () {
function (err, data) {
assert.ok(data.headers['content-type'] === 'application/zip', 'Content-Type 正确');
done();
- },
+ }
);
- },
+ }
);
});
test('putObject blob Content-Type null application/octet-stream', function (done) {
@@ -3862,9 +3862,9 @@ group('upload Content-Type', function () {
function (err, data) {
assert.ok(data.headers['content-type'] === 'application/octet-stream', 'Content-Type 正确');
done();
- },
+ }
);
- },
+ }
);
});
test('putObject empty blob Content-Type null application/octet-stream', function (done) {
@@ -3885,9 +3885,9 @@ group('upload Content-Type', function () {
function (err, data) {
assert.ok(data.headers['content-type'] === 'application/octet-stream', 'Content-Type 正确');
done();
- },
+ }
);
- },
+ }
);
});
// sliceUploadFile
@@ -3909,9 +3909,9 @@ group('upload Content-Type', function () {
function (err, data) {
assert.ok(data.headers['content-type'] === 'text/plain', 'Content-Type 正确');
done();
- },
+ }
);
- },
+ }
);
});
test('sliceUploadFile string Content-Type text/xml -> text/xml', function (done) {
@@ -3933,9 +3933,9 @@ group('upload Content-Type', function () {
function (err, data) {
assert.ok(data.headers['content-type'] === 'text/xml', 'Content-Type 正确');
done();
- },
+ }
);
- },
+ }
);
});
test('sliceUploadFile blob Content-Type text/xml -> text/xml', function (done) {
@@ -3957,9 +3957,9 @@ group('upload Content-Type', function () {
function (err, data) {
assert.ok(data.headers['content-type'] === 'text/xml', 'Content-Type 正确');
done();
- },
+ }
);
- },
+ }
);
});
test('sliceUploadFile blob Content-Type text/html -> text/html', function (done) {
@@ -3980,9 +3980,9 @@ group('upload Content-Type', function () {
function (err, data) {
assert.ok(data.headers['content-type'] === 'text/html', 'Content-Type 正确');
done();
- },
+ }
);
- },
+ }
);
});
test('sliceUploadFile blob Content-Type null -> application/zip or application/octet-stream', function (done) {
@@ -4009,9 +4009,9 @@ group('upload Content-Type', function () {
assert.ok(data.headers['content-type'] === 'application/zip', 'Content-Type 正确');
}
done();
- },
+ }
);
- },
+ }
);
});
test('sliceUploadFile blob Content-Type null application/octet-stream', function (done) {
@@ -4032,9 +4032,9 @@ group('upload Content-Type', function () {
function (err, data) {
assert.ok(data.headers['content-type'] === 'application/octet-stream', 'Content-Type 正确');
done();
- },
+ }
);
- },
+ }
);
});
});
@@ -4064,9 +4064,9 @@ group('Cache-Control', function (val) {
function (err, data) {
assert.ok(isNormalCacheControl(data.headers['cache-control']), 'cache-control 正确');
done();
- },
+ }
);
- },
+ }
);
});
test('putObject Cache-Control: max-age=7200 -> Cache-Control: max-age=7200', function (done) {
@@ -4088,9 +4088,9 @@ group('Cache-Control', function (val) {
function (err, data) {
assert.ok(data.headers['cache-control'] === 'max-age=7200', 'cache-control 正确');
done();
- },
+ }
);
- },
+ }
);
});
test('putObject Cache-Control: no-cache -> Cache-Control: no-cache', function (done) {
@@ -4113,12 +4113,12 @@ group('Cache-Control', function (val) {
assert.ok(
data.headers['cache-control'] === 'no-cache' ||
data.headers['cache-control'] === 'no-cache, max-age=259200',
- 'cache-control 正确',
+ 'cache-control 正确'
);
done();
- },
+ }
);
- },
+ }
);
});
// sliceUploadFile
@@ -4145,12 +4145,12 @@ group('Cache-Control', function (val) {
data.headers['cache-control'] === undefined ||
data.headers['cache-control'] === 'max-age=259200' ||
data.headers['cache-control'] === 'no-cache, max-age=259200',
- 'cache-control 正确',
+ 'cache-control 正确'
);
done();
- },
+ }
);
- },
+ }
);
});
test('sliceUploadFile Cache-Control: max-age=7200 -> Cache-Control: max-age=7200', function (done) {
@@ -4172,9 +4172,9 @@ group('Cache-Control', function (val) {
function (err, data) {
assert.ok(data.headers['cache-control'] === 'max-age=7200', 'cache-control 正确');
done();
- },
+ }
);
- },
+ }
);
});
test('sliceUploadFile Cache-Control: no-cache -> Cache-Control: no-cache', function (done) {
@@ -4197,12 +4197,12 @@ group('Cache-Control', function (val) {
assert.ok(
data.headers['cache-control'] === 'no-cache' ||
data.headers['cache-control'] === 'no-cache, max-age=259200',
- 'cache-control 正确',
+ 'cache-control 正确'
);
done();
- },
+ }
);
- },
+ }
);
});
});
@@ -4234,9 +4234,9 @@ group('BucketLogging', function () {
function (err, data) {
assert.ok(comparePlainObject(BucketLoggingStatus, data.BucketLoggingStatus));
done();
- },
+ }
);
- },
+ }
);
});
@@ -4250,7 +4250,7 @@ group('BucketLogging', function () {
function (err, data) {
assert.ok(err);
done();
- },
+ }
);
});
@@ -4263,7 +4263,7 @@ group('BucketLogging', function () {
function (err, data) {
assert.ok(err);
done();
- },
+ }
);
});
@@ -4285,9 +4285,9 @@ group('BucketLogging', function () {
function (err, data) {
assert.ok(data.BucketLoggingStatus === '');
done();
- },
+ }
);
- },
+ }
);
});
});
@@ -4350,7 +4350,7 @@ group('BucketInventory', function () {
function (err, data) {
assert.ok(err);
done();
- },
+ }
);
});
@@ -4365,7 +4365,7 @@ group('BucketInventory', function () {
function (err, data) {
assert.ok(err);
done();
- },
+ }
);
});
@@ -4379,7 +4379,7 @@ group('BucketInventory', function () {
function (err, data) {
assert.ok(err);
done();
- },
+ }
);
});
@@ -4393,7 +4393,7 @@ group('BucketInventory', function () {
function (err, data) {
assert.ok(err);
done();
- },
+ }
);
});
@@ -4417,9 +4417,9 @@ group('BucketInventory', function () {
function (err, data) {
assert.ok(comparePlainObject(InventoryConfiguration, data.InventoryConfiguration));
done();
- },
+ }
);
- },
+ }
);
});
@@ -4438,7 +4438,7 @@ group('BucketInventory', function () {
function (err, data) {
assert.ok(!err);
done();
- },
+ }
);
});
@@ -4458,7 +4458,7 @@ group('BucketInventory', function () {
assert.ok(comparePlainObject(InventoryConfiguration, targetInventory));
assert.ok(data.IsTruncated === 'false' || data.IsTruncated === 'true');
done();
- },
+ }
);
});
@@ -4482,9 +4482,9 @@ group('BucketInventory', function () {
function (err, data) {
assert.ok(comparePlainObject(InventoryConfigurationNoEncryption, data.InventoryConfiguration));
done();
- },
+ }
);
- },
+ }
);
});
@@ -4506,9 +4506,9 @@ group('BucketInventory', function () {
function (err, data) {
assert.ok(err && err.statusCode === 404);
done();
- },
+ }
);
- },
+ }
);
});
});
@@ -4560,11 +4560,11 @@ group('上传带 tagging', function () {
function (err3, data3) {
assert.ok(comparePlainObject(Tags, data3.Tags));
done();
- },
+ }
);
- },
+ }
);
- },
+ }
);
});
@@ -4621,7 +4621,7 @@ group('ObjectTagging', function () {
function (err, data) {
assert.ok(err);
done();
- },
+ }
);
});
test('getObjectTagging() bucket not exist', function (done) {
@@ -4634,7 +4634,7 @@ group('ObjectTagging', function () {
function (err, data) {
assert.ok(err);
done();
- },
+ }
);
});
test('deleteObjectTagging() bucket not exist', function (done) {
@@ -4647,7 +4647,7 @@ group('ObjectTagging', function () {
function (err, data) {
assert.ok(err);
done();
- },
+ }
);
});
test('putObjectTagging(),getObjectTagging()', function (done) {
@@ -4673,10 +4673,10 @@ group('ObjectTagging', function () {
function (err, data) {
assert.ok(comparePlainObject(Tags, data.Tags));
done();
- },
+ }
);
}, 1000);
- },
+ }
);
});
test('deleteObjectTagging()', function (done) {
@@ -4698,10 +4698,10 @@ group('ObjectTagging', function () {
function (err, data) {
assert.ok(comparePlainObject([], data.Tags));
done();
- },
+ }
);
}, 1000);
- },
+ }
);
});
});
@@ -4716,7 +4716,7 @@ group('getBucketAccelerate', function () {
function (err, data) {
assert.ok(err);
done();
- },
+ }
);
});
@@ -4732,7 +4732,7 @@ group('getBucketAccelerate', function () {
function (err, data) {
assert.ok(err);
done();
- },
+ }
);
});
@@ -4756,10 +4756,10 @@ group('getBucketAccelerate', function () {
function (err2, data2) {
assert.ok(data2 && data2.AccelerateConfiguration && data2.AccelerateConfiguration.Status === 'Enabled');
done();
- },
+ }
);
}, 2000);
- },
+ }
);
});
@@ -4783,10 +4783,10 @@ group('getBucketAccelerate', function () {
function (err2, data2) {
assert.ok(data2 && data2.AccelerateConfiguration && data2.AccelerateConfiguration.Status === 'Suspended');
done();
- },
+ }
);
}, 1000);
- },
+ }
);
});
});
@@ -4801,7 +4801,7 @@ group('Promise', function () {
function (err, data) {
assert.ok(!err && data);
done();
- },
+ }
);
assert.ok(!res);
});
@@ -4842,7 +4842,7 @@ group('Promise', function () {
function (err, data) {
assert.ok(!err && data);
done();
- },
+ }
);
assert.ok(!res);
});
@@ -4933,9 +4933,9 @@ group('Query 的键值带有特殊字符', function () {
// assert.ok(body === content);
// done();
// });
- },
+ }
);
- },
+ }
);
});
test('getAuth() 特殊字符 ?sign=', function (done) {
@@ -5006,9 +5006,9 @@ group('Query 的键值带有特殊字符', function () {
// assert.ok(body === content);
// done();
// });
- },
+ }
);
- },
+ }
);
});
});
@@ -5043,7 +5043,7 @@ group('selectObjectContent(),selectObjectContentStream()', function () {
assert.ok(data.Payload === content + '\n');
done();
});
- },
+ }
);
});
test('selectObjectContent', function (done) {
@@ -5062,7 +5062,7 @@ group('selectObjectContent(),selectObjectContentStream()', function () {
assert.ok(err);
done();
});
- },
+ }
);
});
});
@@ -5102,9 +5102,9 @@ group('BucketReplication', function () {
}
prepared = true;
callback();
- },
+ }
);
- },
+ }
);
};
test('putBucketVersioning no VersioningConfiguration', function (done) {
@@ -5116,7 +5116,7 @@ group('BucketReplication', function () {
function (err, data) {
assert.ok(err);
done();
- },
+ }
);
});
test('putBucketVersioning bucket not exist', function (done) {
@@ -5128,7 +5128,7 @@ group('BucketReplication', function () {
function (err, data) {
assert.ok(err);
done();
- },
+ }
);
});
test('getBucketReplication bucket not exist', function (done) {
@@ -5140,7 +5140,7 @@ group('BucketReplication', function () {
function (err, data) {
assert.ok(err);
done();
- },
+ }
);
});
test('putBucketReplication bucket not exist', function (done) {
@@ -5152,7 +5152,7 @@ group('BucketReplication', function () {
function (err, data) {
assert.ok(err);
done();
- },
+ }
);
});
test('putBucketReplication();getBucketReplication()', function (done) {
@@ -5186,9 +5186,9 @@ group('BucketReplication', function () {
function (err, data) {
assert.ok(data.ReplicationConfiguration.Rules[0].ID === ruleId);
done();
- },
+ }
);
- },
+ }
);
});
});
@@ -5212,10 +5212,10 @@ group('BucketReplication', function () {
function (err, data) {
assert.ok(err && err.statusCode === 404);
done();
- },
+ }
);
}, 2000);
- },
+ }
);
});
test('deleteBucketReplication() bucket not exist', function (done) {
@@ -5230,7 +5230,7 @@ group('BucketReplication', function () {
function (err, data) {
assert.ok(err);
done();
- },
+ }
);
});
});
@@ -5264,12 +5264,12 @@ group('putBucketVersioning(),getBucketVersioning()', function () {
function (err, data) {
assert.ok(data.VersioningConfiguration.Status === 'Enabled');
done();
- },
+ }
);
}, 2000);
- },
+ }
);
- },
+ }
);
});
test('Suspended', function (done) {
@@ -5292,10 +5292,10 @@ group('putBucketVersioning(),getBucketVersioning()', function () {
function (err, data) {
assert.ok(data.VersioningConfiguration.Status === 'Suspended');
done();
- },
+ }
);
}, 2000);
- },
+ }
);
});
});
@@ -5349,9 +5349,9 @@ group('BucketOrigin', function () {
function (err, data) {
assert.ok(data.OriginRule[0].OriginInfo.FileInfo.PrefixConfiguration.Prefix === prefix);
done();
- },
+ }
);
- },
+ }
);
});
test('putBucketOrigin() bucket not exist', function (done) {
@@ -5364,7 +5364,7 @@ group('BucketOrigin', function () {
function (err, data) {
assert.ok(err);
done();
- },
+ }
);
});
test('getBucketOrigin() bucket not exist', function (done) {
@@ -5376,7 +5376,7 @@ group('BucketOrigin', function () {
function (err, data) {
assert.ok(err);
done();
- },
+ }
);
});
test('deleteBucketOrigin() bucket not exist', function (done) {
@@ -5388,7 +5388,7 @@ group('BucketOrigin', function () {
function (err, data) {
assert.ok(err);
done();
- },
+ }
);
});
test('deleteBucketOrigin()', function (done) {
@@ -5408,10 +5408,10 @@ group('BucketOrigin', function () {
function (err, data) {
assert.ok(err);
done();
- },
+ }
);
}, 2000);
- },
+ }
);
});
});
@@ -5447,10 +5447,10 @@ group('BucketReferer', function () {
comparePlainObject(conf.EmptyReferConfiguration, data.RefererConfiguration.EmptyReferConfiguration) &&
assert.ok(isEqual);
done();
- },
+ }
);
}, 2000);
- },
+ }
);
});
test('putBucketReferer() bucket not exist', function (done) {
@@ -5471,7 +5471,7 @@ group('BucketReferer', function () {
function (err, data) {
assert.ok(err);
done();
- },
+ }
);
});
test('putBucketReferer() no RefererConfiguration', function (done) {
@@ -5483,7 +5483,7 @@ group('BucketReferer', function () {
function (err, data) {
assert.ok(err);
done();
- },
+ }
);
});
test('getBucketReferer() bucket not exist', function (done) {
@@ -5495,7 +5495,7 @@ group('BucketReferer', function () {
function (err, data) {
assert.ok(err);
done();
- },
+ }
);
});
});
@@ -5516,9 +5516,9 @@ group('putBucketEncryption getBucketEncryption', function () {
function (err, data) {
assert.ok(data.EncryptionConfiguration.Rules.length === 0);
done();
- },
+ }
);
- },
+ }
);
});
test('putBucketEncryption bucket not exist', function (done) {
@@ -5530,7 +5530,7 @@ group('putBucketEncryption getBucketEncryption', function () {
function (err, data) {
assert.ok(err);
done();
- },
+ }
);
});
test('getBucketEncryption bucket not exist', function (done) {
@@ -5542,7 +5542,7 @@ group('putBucketEncryption getBucketEncryption', function () {
function (err, data) {
assert.ok(err);
done();
- },
+ }
);
});
test('deleteBucketEncryption bucket not exist', function (done) {
@@ -5554,7 +5554,7 @@ group('putBucketEncryption getBucketEncryption', function () {
function (err, data) {
assert.ok(err);
done();
- },
+ }
);
});
test('putBucketEncryption', function (done) {
@@ -5575,7 +5575,7 @@ group('putBucketEncryption getBucketEncryption', function () {
function (err, data) {
assert.ok(!err);
done();
- },
+ }
);
});
test('getBucketEncryption', function (done) {
@@ -5587,7 +5587,7 @@ group('putBucketEncryption getBucketEncryption', function () {
function (err, data) {
assert.ok(!err);
done();
- },
+ }
);
});
test('deleteBucketEncryption', function (done) {
@@ -5599,7 +5599,7 @@ group('putBucketEncryption getBucketEncryption', function () {
function (err, data) {
assert.ok(!err);
done();
- },
+ }
);
});
});
@@ -5615,7 +5615,7 @@ group('restoreObject()', function () {
function (err, data) {
assert.ok(err);
done();
- },
+ }
);
});
test('restoreObject()', function (done) {
@@ -5644,9 +5644,9 @@ group('restoreObject()', function () {
function (err, data) {
assert.ok(data && Math.floor(data.statusCode / 100) === 2);
done();
- },
+ }
);
- },
+ }
);
});
});
@@ -5666,7 +5666,7 @@ group('uploadFile()', function () {
function (err, data) {
assert.ok(!err);
done();
- },
+ }
);
});
test('uploadFile() 高级上传内容为空', function (done) {
@@ -5681,7 +5681,7 @@ group('uploadFile()', function () {
function (err, data) {
assert.ok(!err);
done();
- },
+ }
);
});
test('uploadFile() 高级上传 大于5mb则分块上传', function (done) {
@@ -5698,7 +5698,7 @@ group('uploadFile()', function () {
function (err, data) {
assert.ok(!err);
done();
- },
+ }
);
});
});
@@ -5728,7 +5728,7 @@ group('uploadFiles()', function () {
function (err, data) {
assert.ok(!data.files.error);
done();
- },
+ }
);
});
});
@@ -5764,11 +5764,11 @@ group('multipartAbort()', function () {
function (err, data) {
assert.ok(err);
done();
- },
+ }
);
- },
+ }
);
- },
+ }
);
});
});
@@ -5793,7 +5793,7 @@ group('uploadFile() 上报', function () {
function (err, data) {
assert.ok(data);
done();
- },
+ }
);
});
});
@@ -5832,11 +5832,11 @@ group('sliceUploadFile() 续传', function () {
function (err, data) {
assert.ok(data);
done();
- },
+ }
);
- },
+ }
);
- },
+ }
);
});
});
@@ -5883,13 +5883,13 @@ group('appendObject', function () {
function (err, data) {
assert.ok(!err);
done();
- },
+ }
);
- },
+ }
);
- },
+ }
);
- },
+ }
);
});
});
@@ -5935,9 +5935,9 @@ group('request', function () {
function (err, data) {
assert.ok(!err);
done();
- },
+ }
);
- },
+ }
);
});
});