// ==UserScript==
// @name 网购优惠券发现工具,极简代码,无广告,支持淘宝、天猫、聚划算、京东商品隐藏优惠券自动显示、30天内最低价标记提醒,简单、直接、不思考,长期更新维护,给购物党们高效省钱。
// @name:zh 网购优惠券发现工具,极简代码,无广告,支持淘宝、天猫、聚划算、京东商品隐藏优惠券自动显示、30天内最低价标记提醒,简单、直接、不思考,长期更新维护,给购物党们高效省钱。
// @name:zh-TW 網購優惠券發現工具,極簡代碼,無廣告,支持淘寶、天貓、聚劃算、京東商品隱藏優惠券自動顯示、30天內最低價標記提醒,簡單、直接、不思考,長期更新維護,給購物黨們高效省錢。
// @namespace PyramidScriptByGangBiXiaoXin
// @version 2.0.5
// @description 又一个自动查询优惠券的网购省钱工具,脚本代码极简(可能是此类脚本最简),适用于京东(含京东图书|京东大药房|京东国际|jd.com|jd.hk|yiyaojd.com),淘宝(天猫|聚划算|天猫国际|阿里健康大药房|taobao.com|tmall.com|tmall.hk|liangxinyao.com)享受商家更高额优惠,"钱难挣,屎难吃" 能省一点是一点,聚流成河 !
// @description:zh 又一个自动查询优惠券的网购省钱工具,脚本代码极简(可能是此类脚本最简),适用于京东(含京东图书|京东大药房|京东国际|jd.com|jd.hk|yiyaojd.com),淘宝(天猫|聚划算|天猫国际|阿里健康大药房|taobao.com|tmall.com|tmall.hk|liangxinyao.com)享受商家更高额优惠,"钱难挣,屎难吃" 能省一点是一点,聚流成河 !
// @description:zh-TW 又一個自動查詢優惠券的網購省錢工具,腳本代碼極簡(可能是此類腳本最簡),適用于京東(含京東圖書|京東大藥房|京東國際|jd.com|jd.hk|yiyaojd.com),淘寶(天貓|聚劃算|天貓國際|阿裏健康大藥房|taobao.com|tmall.com|tmall.hk|liangxinyao.com)享受商家更高額優惠,"錢難掙,屎難吃" 能省一點是一點,聚流成河 !
// @author 钢笔小新
// @icon data:image/png;base64,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
// @match *://*.jd.com/*
// @match *://*.jd.hk/*
// @match *://*.yiyaojd.com/*
// @match *://*.jkcsjd.com/*
// @exclude *://wq.jd.com/*
// @match *://*.taobao.com/*
// @match *://*.tmall.com/*
// @match *://chaoshi.detail.tmall.com/*
// @match *://*.tmall.hk/*
// @match *://*.liangxinyao.com/*
// @exclude *://login.taobao.com/*
// @exclude *://login.tmall.com/*
// @exclude *://uland.taobao.com/*
// @exclude *://pages.tmall.com/*
// @require https://code.jquery.com/jquery-2.1.1.min.js
// @antifeature referral-link(遵守 GreasyFork 规范:脚本的部分行为会让作者获得返利,明人不说暗话,望大家理解,介意的朋友,勿安装)
// @grant unsafeWindow
// @license GPL3
// ==/UserScript==
(function () {
'use strict';
/**
* 脚本使用看这里,看这里,看这里 !!!!
*
* 视频教程:https://www.bilibili.com/video/BV1ax4y1v7xn/
*
* 图文教程:https://www.bilibili.com/read/cv33225161/
*
* 交流QQ群:897287611
*/
var rulesMatch = {
jd: function () {
return this.handle([
"item.jd.",
"item.m.jd.",
"//item.yiyaojd.com/",
"//item.jkcsjd.com/",
"//e.jd.com/",
"//pro.jd.com/",
"//prodev.jd.com/",
".jd.hk",
]);
},
taobao: function () {
return this.handle([
"//item.taobao.com/item",
"//detail.tmall.com/item",
"//chaoshi.detail.tmall.com/item",
"//detail.tmall.hk/hk/item",
"//detail.tmall.hk/item",
".liangxinyao.com"
]);
},
url: function () {
return location.href;
},
handle: function (rules = []) {
for (var i = 0; i < rules.length; i++) {
if (this.url().indexOf(rules[i]) != -1) {
return true;
}
}
return false;
},
};
var loaderTip = {
timer: null,
key: 'selector-doc',
info: '⸝⸝˘◡˘♡ 优惠券发现工具提醒:客官请稍候,正在玩命儿查找中',
handle: function (p, selector = []) {
if ($('.pyramidLoaderTip').length > 0) {
return;
}
if (typeof localStorage === 'object') {
var doc = localStorage.getItem(this.key);
if (doc !== null) {
var temp = JSON.parse(doc)[p] || [];
selector = (temp.length > 0) ? temp : selector;
}
}
var style = "font-size:14px;padding:5px;margin:10px 0;color:#ad5738;";
var gif = '';
for (var i = 0; i < selector.length; i++) {
if ($(selector[i]).length > 0) {
$(selector[i]).after(
'
' + this.info + gif + '
'
)
break;
}
}
this.timer = setInterval(function () {
$('.pyramidLoaderTip').html('⸝⸝˘◡˘♡ 优惠券发现工具提醒:哎呀,网络开小差了,刷新试试 !');
}, 20000)
},
clear: function (doc) {
clearInterval(this.timer);
$('.pyramidLoaderTip').hide();
if (typeof localStorage === 'object') {
localStorage.setItem(this.key, JSON.stringify(doc));
}
}
};
var environment = {
host: 'gangbixiaoxin',
protocol: 'https',
route: function (route) {
return this.gateway() + route;
},
gateway: function () {
if (typeof _env === 'function') {
if (_env().pyramid.dev) {
return _env().pyramid.gateway;
}
}
return this.protocol + '://api.' + this.host + '.com';
}
};
var jdService = {
handle: function () {
if (!rulesMatch.jd()) {
return false;
}
loaderTip.handle('jd', ['div.summary-top']);
var data = {
goods_url: rulesMatch.url(),
version: GM_info.script.version,
name: $('div.sku-name').html(),
title: $('head > title').html(),
};
$.post(environment.route('/jd/goods'), data, function (res) {
if (200 != res.code) {
console.log(res);
return;
}
for (var i = 0; i < res.data.selector.length; i++) {
var _element = $(res.data.selector[i]);
if (_element.length > 0) {
_element[res.data.pos](res.data.html);
break;
}
}
loaderTip.clear(res.data.doc || []);
});
return true;
}
};
var taobaoService = {
handle: function () {
if (!rulesMatch.taobao()) {
return false;
}
loaderTip.handle('tb', ['div.Price--root--1CrVGjc', 'div#J_StepPrice', 'div.Price--root--1X-r-XP']);
var data = {goods_url: rulesMatch.url(), version: GM_info.script.version};
$.post(environment.route('/tb/goods'), data, function (res) {
if (200 != res.code) {
console.log(res);
return;
}
for (var i = 0; i < res.data.selector.length; i++) {
var _element = $(res.data.selector[i]);
if (_element.length > 0) {
_element[res.data.pos](res.data.html);
break;
}
}
loaderTip.clear(res.data.doc || []);
});
return true;
},
};
var pingService = {
init: function () {
return function () {
jdService.handle();
taobaoService.handle();
}
}
};
setTimeout(pingService.init(), 988);
function loaderGif() {
return 'data:image/gif;base64,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6urq7Ozs7u7u8PDw9PT0+Pj4+/v7/f39/f39/v7+/v7+/v7+/v7+/v7+/v7+/v7+////////////////////////////////////////////////////////////////////////CP4A7QkcSLCgwYMIEypcyLChw4cQI0qcSLGixYsYM2rcyLGjx48gQ4ocSbKkyZMoU6pcybLit2bNvrXEqE0WppuYZGmbSbEazp+YqvGUmAoozlRDITIz+pNZUofAmOIE9nRgslqoUPHqRnCX1Ju7CHbjlbVWspTiVhlFNtDYV0zGBiIzukrcSbVMndr79lamvaVMV5lM9hXVwKhMqQpE9fUsyVpvrw30CjSswGtva5Vk/LUZwWe4suJ6RrDZW8MkOUsl3fDZ6ZK83tptKO4tr5LdvuqCqOsr15JzjbYaB3FcK6ZsTzJTjUkX8YjjeuNEpTfltWbPZlMU96yZ5KrgFf4yA7bLmF+P0WqBWg8K1TCO1Yr+VMwRVZr7+O/rWZZRm1TLGoWS34D3OYORTatpdAyBBPpxEV9f4aJRIQwSKI1FphWmUR4VDkgMhq9lxGGH+H3o0lsSZkQhifddaBGCTLGG0YIsOniRf0wBmJGAJBqIUXxA0beRfQzux9F45Z3XUXrstfdeeFAOdF12Fmmjiy3HrLTcT85JFI4eN4R5wxK0oBQcUMNBFM4VYrYZikm5SbXbQ2C26SZssjmkjZ18vjkSc0bJuJAufPb551ueDdSKFB98IEUrBNlSqKEhQfbVd/ZoccCmnGox0DGT8nkbSIRJhZo9cnCq6gFyDLREqKltiiESXkbpZcyqq8ZlDy2wtqmdR2mtNdAeuKq6x0Ch9BqmNSNdldVWBGVRLKdZEJRsr7+mJO20B1RrLayytrTttN5+O+moLI1bbLnm2umnuNx2ixAvYogpBrrwcsuuQeJYk22+5EaJkLq47iuwQASvavDBCau6sMCpctvqwQWJEq8oFBsEwrQgZGwQLhDgCkGKHhMEjBCqCiFkyQQdc8opWbIs88w0FxQQACH5BAkNAPMALAAAAABLAEsAhwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQICAgMDAwQEBAYGBggICAwMDBAQEBQUFBkZGR8fHyMjIycnJyoqKiwsLC0tLS8vLzAwMDExMTExMTIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzQ0NDQ0NDU1NTU1NTY2Njc3Nzg4ODo6Ojw8PD8/P0FBQUREREhISEpKSk1NTVBQUFJSUlRUVFdXV1paWlxcXF5eXl9fX2BgYGFhYWJiYmNjY2RkZGRkZGVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmdnZ2dnZ2hoaGlpaWlpaWpqam5ubnJycnd3d3x8fH9/f4KCgoWFhYiIiIuLi42NjY+Pj5CQkJKSkpSUlJWVlZaWlpaWlpeXl5eXl5eXl5eXl5iYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZqampubm5ycnJ2dnZ6enqCgoKGhoaKioqOjo6SkpKampqenp6ioqKqqqqurq6ysrK2tra6urq6urrCwsLKysrS0tLa2tre3t7m5ubu7u729vb+/v8LCwsTExMXFxcbGxsfHx8jIyMnJycrKysvLy8zMzM/Pz9LS0tXV1dfX19nZ2dvb293d3d7e3uDg4OHh4eHh4eLi4uPj4+Tk5Obm5ufn5+jo6Orq6u7u7vHx8fPz8/T09PX19fb29vf39/v7+/7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v///////////////////////////////////////////////////////////////////////////////////////////////////wj+AOcJHEiwoMGDCBMqXMiwocOHECNKnEixosWLGDNq3Mixo8ePIEOKHEmypMmTKFOqXMmyojVlyqy1xEhNlqabmmRRm0lRGs6fmqTxlKgKKE5VQyEmM/ozWVKHvJji5PV0oDFaqVLtkjlQl9Sbugha25WVlrGU2VgZLTaQ2FdNxAYWM8oq20m1TJ3Os/aW61KmrEwa+5pqYFSmVAWm+nqWJK2307oaDStw2ltaJRd/VUaQGa6suJgRVPa2MEnNUkU3ZFa65K63dhtme7urJF+plB16lcqV5FyjrrpB7OaKKduTyVBr0iU8YrfdN1PpTTlNGbPYFLMxUxa5qneFyXj+6SLWu6M1Yrp4TecorejPxBwPHxW6kRpujtCB7tRoM7VG1lLJotFtUuGiES59ZUQaYRopZxRnGC0olWkYOQgUhBcRyJSBGSH4VXkW9ceUahgByJSAGtnHVG4Z5ffTfhq1BxR8G8l3kyr0dRTeeCBudF56630nZFemvNKMRdcU80uQJpGyAQJQIlDFNRJtI4oaWKphhy8o7RHllyRQ+dA2eWRp5i0mefnll1VAdKWZZ5Kk5ppfHtnQNXDmiWZIc9IZ5SsOFZNnnsiA1KefUJpCUC51PPFEHbkQ9MugcBLy0aGIIpAbHjp06ikeAyVDKZweYYroBgPt4emqOuwxkB20o2bZkSqZ0kmKQMiwymqh8/gSK5YdgVDrl64K9Imuq34y0C2xnsJRMsNGWaxAnCLbKajLjtqjRbpEi8C01Fp7bUHM5tnYRsVEC2644mJLEDKEZHnKthhlUOu67Frrbkp6ZIpvvsjum1IVfv4LsK4C82svlCAglVC1+g5VjC5MGqSquAYPSYu4OmA2JEJQWAvFxwkBI4SuQgBDckLFZLFqFsetnBAytdTCq8w456zzzjz3nFRAACH5BAkNAPIALAAAAABLAEsAhwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQICAgQEBAcHBwsLCxISEhgYGB4eHiUlJSoqKiwsLC4uLi8vLzAwMDExMTExMTIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzQ0NDU1NTY2Njg4ODk5OTo6Ojw8PD4+PkBAQEJCQkREREdHR0lJSUpKSktLS01NTU5OTk9PT09PT1BQUFFRUVJSUlNTU1NTU1VVVVdXV1hYWFpaWlxcXF5eXmBgYGFhYWJiYmNjY2RkZGRkZGVlZWVlZWVlZWVlZWVlZWVlZWZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmdnZ2hoaGlpaWpqamtra2xsbG5ubnBwcHR0dHp6en19fYGBgYWFhYeHh4qKio2NjY+Pj5KSkpSUlJWVlZaWlpeXl5iYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZqampubm5ycnJ2dnZ+fn6CgoKKioqOjo6Wlpaenp6ioqKysrK6urrCwsLKysrOzs7W1tba2tri4uLq6uru7u729vcDAwMLCwsTExMbGxsfHx8nJyczMzM7Ozs/Pz9LS0tXV1dfX19jY2Nra2tvb293d3d/f3+Dg4OHh4eLi4uPj4+Tk5OXl5ebm5ufn5+fn5+fn5+jo6Orq6uzs7PHx8fT09Pb29vf39/j4+Pr6+vv7+/7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v///////////////////////////////////////////////////////////////////////////////////////////////////////wj+AOUJHEiwoMGDCBMqXMiwocOHECNKnEixosWLGDNq3Mixo8ePIEOKHEmypMmTKFOqXMmyorVjx6y1xCgNlqebnmBJm0nRGc6fnpzxlMgKKE5WQyEaM/rTWFKHu5ji3PV0oDBZq1bpqkYwl9SbuQhW05VVlrCU11wZDTbw11dPvwYGM+rq2km1TJ3Ks/ZWprylTF2ZFPZ11cCoTKkKXPX1LElZb6EN9Ao0rEBob2WVZPxVr8BktlixspWMIGCphklyllq6YbK3qUfqeovNIba3ukpW+4oLIq6vXEvOpbsN4ja8QNmeNLbaE67iEbf9xrnKM0poxpLVrogtmTHJVcP+y0tlR4v58+j7xP1o7VeuXdYl2uKQoL79+/fteER8VKjEXRTgJyB+W3BEmVE7RRTEgAzaJ1hGr0kFS0TANGhhFBrZ0hdEq1jY4AYaFfXVMRx6yCCIGYkoFYkPVWiigBhmpOFXfj204Iv3PYhRhExNGBGAONZX4EYHApVgRPPhqF9H/N3Ein8UkYfelFqoB1J778Un3pYCATMLLkdO1N13K8WixA1o3sCHXdFNd1N1KKGS5pxXsOnQcUwpR5Kcc87Jh2/A7dnnoGEqdNtXuYnE56Bz9uYabIoyOugsBAFzyB57HAKMaZCCpIukg24qECpslGoqKgNh9pVmII0B6pyeSgzEiqm0soHUYo2BlM2rc8YikDK11qqMQKcBpaNHz/CKJqoCyRIsrazKM9xPdYW0K6/MCnTKs6aeIhZZq5hFkqugZqstt6V629Knkpp7LrrqtrTonO6+y22865J7wxiJGjQrurcOlc0z2SjUC7ps9MJlQntwu8fCCRHDLTEQJ4QMILQCgkzFCy3jiy/LcCzyyCSXbPLJKKes8soGBQQAIfkECQ0A8QAsAAAAAEsASwCHAAAAAAAAAAAAAQEBAgICBAQEBgYGCQkJCwsLDg4OEBAQEhISExMTFBQUFhYWFxcXFxcXGBgYGRkZGRkZGhoaGhoaGxsbHR0dHx8fICAgISEhIiIiJCQkJSUlJiYmJiYmJycnKCgoKSkpKioqKysrLCwsLi4uLy8vMTExMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzNDQ0NTU1NTU1Nzc3Ojo6Pj4+QkJCS0tLU1NTWFhYW1tbXl5eYWFhYmJiYmJiY2NjZGRkZGRkZWVlZWVlZWVlZWVlZmZmZmZmZmZmZ2dnZ2dnaGhoaGhoaWlpampqa2trbGxsbW1tbm5ubm5ub29vcHBwcXFxcXFxcnJyc3Nzc3Nzc3NzdHR0dHR0dHR0dXV1dnZ2dnZ2d3d3d3d3eHh4enp6e3t7fX19fn5+gICAgoKChISEhoaGiIiIiYmJi4uLjo6OkJCQkpKSlJSUlZWVl5eXmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmpqam5ubnJycnp6eoqKipaWlqKioqampqqqqq6urq6urrKysra2tsLCwsrKys7OztbW1tra2uLi4ubm5u7u7vLy8vr6+wMDAwMDAwsLCw8PDxMTExcXFyMjIzMzMz8/P0tLS1NTU1tbW2NjY2tra29vb3Nzc3t7e4ODg4eHh4+Pj5OTk5ubm6Ojo6+vr7+/v8vLy8/Pz8/Pz9PT09fX19vb29/f3+/v7/v7+/v7+/v7+/v7+/v7+////////////////////////////////////////////////////////////////////////////////////////////////////////////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tbe3t7m5ubm5ubq6urq6uru7u7u7u7u7u7y8vLy8vL29vb29vb6+vr6+vr6+vr+/v8DAwMHBwcLCwsPDw8TExMbGxsnJyczMzM/Pz9PT09bW1tra2t/f3+bm5uzs7PHx8fLy8vPz8/T09PT09PT09PX19fX19fX19ff39/r6+v39/f7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v///////////////////////////////////////////////////////////////////////wj+AO0JHEiwoMGDCBMqXMiwocOHECNKnEixosWLGDNq3Mixo8ePIENCs2ULWsiTAp2d0cFSxxlnKD8yC9KyZRBmMTsuqVlzSc6NtXjyrPUz4yChNQcxjGYMZlGEgJC2BKTQ1YcDWDMIemowqlQdVBEOwkoWaxauBL1KDWtwbNmyW9HaU4uULUG3b8lm+EiNVZq/h0wWpCvUrkC8eck63fjsr+O/twZ/BVsQcWKsxjhSe8w58kDCPO1avnwgGke/nB97tmdqsqmBoy9/6Jg69TKB0CYLXkU6ryvatR/ngS1VqcANvcsa5xics2mBoNkaS052OcdDzR3fHviLjhIldH7+EWRF/YB1jtCy/128UBb18x1vqafmUFpy+B7lB1cF8Qtp/B/px5kg3EBEDQmJAQjSMnk8pkqBEVHjH1kbrCJXNMs4Q19F0sjCSmZyhahRNMoU08yGHlHTTDHKPNfRNK5wIqOMynikzIwyujINR9PgiCOIGhnj44w7ajTLkDNKo5E0SMo4i0bUNCmjLhrpIiUnKFoUzZW/ZRSjlC5qyaVGXzYZZkVRSkllRlZKmaVFRzapZEZMNvmkRj0iCWRGQiJZJJ5l0mijjzp+RKKJb26kIotniuioRNNEI801Fl0jTTR/PhVNKzgO441E3gyDYyuNnuQMkrF8+pA3sSDJ3km2aSI5DESiNpnoR8dcSWlD11x5TE6cSjknQ3U22QqwV4YpjS6uuKLLsPZsKeWxMdFy5Z99/jhQnk3SktMz0w50I5I1ChQsks/8BIuZAsWK5IbSDglLUdas6+NizVzZzECn+giLNVw9Q0srrRyTZTFXFkMQNccQTEu6jxY0bpPlRtxQvEiWajFCgeLY5cYNcetjpiAvNE2cTpJcMkPURBPNrSvHLPPMNNds880456zzzjz37DNHAQEAOwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=';
}
})();