Version Description
- 02/07/2017
- Dev - WooCommerce v3.x.x compatibility - Shortcodes - Orders -
[wcj_order_items_table]
-product_name
column - "WooCommerce TM Extra Product Options" plugin compatibility -get_meta()
. - Dev - WooCommerce v3.x.x compatibility - Shortcodes - Products -
[wcj_product_dimensions]
-wc_format_dimensions()
. - Dev - WooCommerce v3.x.x compatibility - PAYMENT GATEWAYS - Custom Gateways -
wc_reduce_stock_levels()
. - Dev - Main plugin file code refactoring.
- Dev -
WCJ_Module
-create_meta_box()
-placeholder
option added. - Dev - Settings - Module "Under development" message added.
- Dev - Settings - Now deprecated modules are removed if disabled.
- Dev - Functions -
wcj-currencies.php
file (wcj_get_currencies_array()
function) moved to functions folder. - Dev - Functions -
wcj_get_product_id()
andwcj_get_product_id_or_variation_parent_id()
- Check for "product not null" andis_object
added. - Fix - Functions - Invoicing -
wcj_get_invoice_date()
- Check for not empty invoice date added. - Dev - Shortcodes - General -
[wcj_currency_select_link_list]
,[wcj_currency_select_radio_list]
,[wcj_currency_select_drop_down_list]
-default
attribute added. - Dev - Shortcodes - General -
[wcj_currency_exchange_rate]
and[wcj_currency_exchange_rates_table]
shortcodes added. - Fix - Shortcodes - Orders -
[wcj_order_items_table]
-add_variation_info_to_item_name
attribute defaults toyes
now. - Dev - Shortcodes - Orders -
[wcj_order_items_table]
-columns
-product_meta
,product_cost
,product_profit
,line_cost
,line_profit
,product_id
,item_product_id
,product_post_meta
,product_purchase_note
columns added. - Dev - Shortcodes - Orders -
[wcj_order_items_table]
-insert_page_break
(defaults to empty string) attribute added. - Dev - Shortcodes - Orders -
[wcj_order_items_table]
-columns
-product_attribute
- Checking parent product's attribute for variation products. - Dev - Shortcodes - Orders -
[wcj_order_shipping_address]
-fallback_billing_address
attribute added. - Dev - Shortcodes - Orders -
[wcj_order_customer_meta]
shortcode added. - Dev - Shortcodes - Products -
[wcj_product_weight]
,[wcj_product_length]
,[wcj_product_width]
,[wcj_product_height]
,[wcj_product_dimensions]
-variations
attribute added. - Dev - PRICES & CURRENCIES - Currencies - Virtual currencies (myCred, Bitcoin, Ethereum) added.
- Dev - PRICES & CURRENCIES - Currencies - Country flags and currency codes added to the settings.
- Dev - PRICES & CURRENCIES - Currency per Product - Minor code refactoring.
- Dev - PRICES & CURRENCIES - Currency per Product - EventON plugin support added.
- Dev - PRICES & CURRENCIES - Currency per Product - "Currency per Product Authors" option added.
- Dev - PRICES & CURRENCIES - Currency per Product - "Currency per Product Authors User Roles" option added.
- Dev - PRICES & CURRENCIES - Currency per Product - "Currency per Product Categories" option added.
- Dev - PRICES & CURRENCIES - Currency per Product - "Currency per Product Tags" option added.
- Dev - PRICES & CURRENCIES - Currency per Product -
get_current_product_id_and_currency()
- Getting ID fromglobal $product
added. - Dev - PRICES & CURRENCIES - Currency Exchange Rates - "Exchange Rates Rounding" options added.
- Dev - PRICES & CURRENCIES - Currency Exchange Rates - Custom currency options added. Settings restyled. Code refactoring.
- Dev - PRICES & CURRENCIES - Currency Exchange Rates -
wcj_currency_exchange_rates_additional_currencies
filter added. - Dev - PRICES & CURRENCIES - Multicurrency Product Base Price - Base shop currency added to the list.
- Dev - PRICES & CURRENCIES - Offer Your Price - Initial module release.
- Dev - PRICES & CURRENCIES - Price by User Role - "Disable Price by User Role for Products on Sale" option added.
- Fix - PRICES & CURRENCIES - Prices and Currencies by Country - Hooks are now added in constructor (instead of
init
hook) - this fixes the issue with wrong currency symbol in price filter widget. - Dev - PRICES & CURRENCIES - Product Open Pricing (Name Your Price) - "Disable Quantity Input" option added (defaults to
yes
). - Dev - PRODUCTS - Cost of Goods - "WooCommerce Cost of Goods" Data Import - Tool added.
- Dev - PRODUCTS - Cost of Goods - "Admin Products List Custom Columns" - Section added.
- Fix - PRODUCTS - Product Add to Cart - Add to Cart Variable Product - Display Radio Buttons Instead of Drop Box - Fixed.
- Dev - PRODUCTS - Product Add to Cart - Add to Cart Local Redirect - "Per Product" option added.
- Dev - PRODUCTS - Product Add to Cart - Add to Cart on Visit - Redirecting if "Add to Cart Local Redirect Options" is enabled.
- Dev - PRODUCTS - Product Images - Shortcodes can now be used in all "Replace" fields.
- Dev - PRODUCTS - Product Info - "Product Categories/Tags to Include/Exclude" options added.
- Dev - PRODUCTS - Product Input Fields - Frontend View Options - "Cart Display Options" option added.
- Dev - PRODUCTS - Product Input Fields - Frontend View Options - "Cart HTML Template" options added.
- Dev - PRODUCTS - Product Listings - "Admin Products List - Custom Columns" section added.
- Dev - PRODUCTS - Product Listings - "Admin Products List - Columns Order" section added.
- Dev - PRODUCTS - Product Listings - Settings - Code refactoring -
wcj_get_terms()
. - Dev - PRODUCTS - Product Visibility by Country - Visibility, purchasable and query options added.
- Dev - PRODUCTS - Product Visibility by Country - "Admin Products List Column" option added.
- Fix - PRODUCTS - Products per Page - Template fixed.
- Dev - PRODUCTS - Products per Page - "Template - Before Form" and "Template - After Form" options added.
- Dev - PRODUCTS - Products per Page - Minor code refactoring.
- Dev - PRODUCTS - SKU - "Disable SKUs" option added.
- Dev - PRODUCTS - SKU - Adding SKU on product duplicate action added (
woocommerce_duplicate_product
). - Dev - PRODUCTS - SKU - "Search by SKU" option added.
- Dev - PRODUCTS - SKU - Number Generation - "Pseudorandom - Hash (max 10 digits)" option added.
- Dev - PRODUCTS - SKU - "Template" option added.
- Dev - PRODUCTS - SKU - Sequential counter by categories added.
- Dev - PRODUCTS - SKU - Code refactoring.
- Dev - CART & CHECKOUT - Checkout Customization - "Disable Fields on Checkout for Logged Users" options added.
- Dev - CART & CHECKOUT - EU VAT Number - Code refactoring - Separate file for EU VAT functions added.
- Dev - CART & CHECKOUT - EU VAT Number - "First Validation Method" option added.
- Dev - SHIPPING & ORDERS - Custom Shipping - Renamed from "Shipping".
- Dev - SHIPPING & ORDERS - Order Minimum Amount - Advanced - "Cart notice method" and "Cart notice type" options added.
- Dev - SHIPPING & ORDERS - Order Min/Max Quantities - Initial module release.
- Dev - SHIPPING & ORDERS - Orders - Admin Orders List Custom Columns - "Sortable" options added.
- Dev - SHIPPING & ORDERS - Shipping Options - Initial module release (copied from "Shipping" module).
- Dev - PDF INVOICING & PACKING SLIPS - Display - Code refactoring.
- Dev - PDF INVOICING & PACKING SLIPS - Display - "Allowed User Roles" options added.
- Dev - PDF INVOICING & PACKING SLIPS - Footer - "Footer Text" option updated.
- Dev - PDF INVOICING & PACKING SLIPS - Templates - "Save all templates" buttons added.
- Dev - PDF INVOICING & PACKING SLIPS - Styling - Default font set to "Helvetica".
- Dev - PDF INVOICING & PACKING SLIPS - Styling - Font selection option updated.
- Dev - PDF INVOICING & PACKING SLIPS - Styling - "cid0ct (Chinese Traditional)" font added (to extra fonts pack).
- Dev - PDF INVOICING & PACKING SLIPS - Styling - "STSong Light (Simp. Chinese)" font added (to both minimal and extra fonts packs).
- Dev - PDF INVOICING & PACKING SLIPS - Styling - Now extra fonts are downloaded to
woocommerce_uploads
folder. - Dev - EMAILS & MISC. - Admin Bar - Initial module release.
- Dev - EMAILS & MISC. - Admin Tools - Log - "Now time" added.
wp_safe_redirect()
added to "Delete log" action. - Dev - EMAILS & MISC. - Breadcrumbs - Initial module release.
- Dev - EMAILS & MISC. - Email Verification - "Enable Email Verification for Already Registered Users" option added.
- Dev - EMAILS & MISC. - Email Verification - "Skip Email Verification for User Roles" option added.
- Dev - EMAILS & MISC. - Email Verification - "Verification Message - Failed" -
%resend_verification_url%
replaceable value added. - Dev - EMAILS & MISC. - General - "Booster User Roles Changer" options added.
- Dev - EMAILS & MISC. - My Account - Initial module release.
- Dev - EMAILS & MISC. - Reports - Custom Ranges - "Today" and "Yesterday" custom ranges added.
- Dev - EMAILS & MISC. - Reports - Orders - "Product Sales (Daily)" new report added. "Product Sales" renamed to "Product Sales (Monthly)".
- Dev - EMAILS & MISC. - Reports - Code refactoring -
wcj-reports-functions.php
added. - Tweak - Code refactoring -
wcj-core-functions.php
,wcj-order-functions.php
,wcj-product-functions.php
,wcj-date-time-functions.php
files added. - Tweak - JS files naming fixed (
wcj-ajax-exchange-rates.js
,wcj-product-input-fields.js
,wcj-checkout.js
,wcj-eu-vat-number.js
). - Tweak - Timepicker files moved to
lib
directory. - Tweak - PRODUCTS - Product Cost Price - Renamed to "Cost of Goods".
- Tweak - PRODUCTS - Product Visibility by User Role - Settings descriptions added.
- Tweak - SHIPPING & ORDERS - Orders - Settings updated (custom column key info added) and restyled (columns order textarea width changed).
- Tweak - Plus links updated.
Download this release
Release Info
Developer | algoritmika |
Plugin | Booster for WooCommerce |
Version | 2.9.0 |
Comparing to | |
See all releases |
Code changes from version 2.8.2 to 2.9.0
- assets/images/rocket-icon.png +0 -0
- includes/add-to-cart/class-wcj-add-to-cart-per-category.php +4 -4
- includes/add-to-cart/class-wcj-add-to-cart-per-product-type.php +2 -2
- includes/add-to-cart/class-wcj-add-to-cart-per-product.php +7 -7
- includes/admin/class-wc-settings-jetpack.php +34 -9
- includes/admin/class-wcj-settings-custom-fields.php +19 -2
- includes/admin/class-wcj-settings-manager.php +149 -0
- includes/admin/class-wcj-tools.php +1 -2
- includes/admin/wcj-modules-cats.php +7 -1
- includes/class-wcj-admin-bar.php +584 -0
- includes/class-wcj-admin-tools.php +7 -6
- includes/class-wcj-breadcrumbs.php +90 -0
- includes/class-wcj-checkout-custom-fields.php +1 -1
- includes/class-wcj-checkout-customization.php +75 -3
- includes/class-wcj-currency-exchange-rates.php +89 -1
- includes/class-wcj-currency-per-product.php +101 -14
- includes/class-wcj-emails-verification.php +31 -13
- includes/class-wcj-emails.php +1 -0
- includes/class-wcj-empty-cart-button.php +1 -0
- includes/class-wcj-eu-vat-number.php +6 -6
- includes/class-wcj-export-import.php +1 -1
- includes/class-wcj-general.php +78 -4
- includes/class-wcj-my-account.php +109 -0
- includes/class-wcj-offer-price.php +433 -0
- includes/class-wcj-order-custom-statuses.php +2 -0
- includes/class-wcj-order-min-amount.php +9 -7
- includes/class-wcj-order-quantities.php +200 -0
- includes/class-wcj-orders.php +51 -2
- includes/class-wcj-payment-gateways-currency.php +4 -2
- includes/class-wcj-payment-gateways-fees.php +3 -3
- includes/class-wcj-pdf-invoicing.php +37 -8
- includes/class-wcj-price-by-user-role.php +13 -2
- includes/class-wcj-product-add-to-cart.php +46 -18
- includes/class-wcj-product-by-country.php +90 -4
- includes/class-wcj-product-by-user-role.php +3 -1
- includes/class-wcj-product-by-user.php +44 -2
- includes/class-wcj-product-custom-info.php +56 -17
- includes/class-wcj-product-images.php +9 -9
- includes/class-wcj-product-input-fields.php +7 -3
- includes/class-wcj-product-listings.php +92 -2
- includes/class-wcj-product-open-pricing.php +5 -3
- includes/class-wcj-products-per-page.php +23 -22
- includes/class-wcj-purchase-data.php +107 -6
- includes/class-wcj-reports.php +25 -63
- includes/class-wcj-shipping-options.php +183 -0
- includes/class-wcj-shipping.php +6 -155
- includes/class-wcj-sku.php +199 -62
- includes/classes/class-wcj-invoice.php +1 -1
- includes/classes/class-wcj-module.php +9 -5
- includes/classes/class-wcj-pdf-invoice.php +10 -114
- includes/classes/class-wcj-product.php +2 -2
- includes/classes/class-wcj-scripts.php +151 -0
- includes/classes/class-wcj-tcpdf.php +11 -26
- includes/css/wcj-offer-price.css +81 -0
- includes/emails/class-wc-email-wcj-custom.php +3 -3
- includes/exchange-rates/class-wcj-exchange-rates-crons.php +27 -4
- includes/exchange-rates/class-wcj-exchange-rates.php +6 -6
- includes/functions/wcj-admin-functions.php +88 -0
- includes/functions/wcj-core-functions.php +45 -0
- includes/functions/wcj-country-functions.php +225 -41
- includes/{currencies → functions}/wcj-currencies.php +6 -2
- includes/functions/wcj-date-time-functions.php +160 -0
- includes/functions/wcj-debug-functions.php +14 -8
- includes/functions/wcj-eu-vat-functions.php +123 -0
- includes/functions/wcj-functions.php +0 -1092
- includes/functions/wcj-general-functions.php +404 -0
- includes/functions/wcj-invoicing-functions.php +199 -3
- includes/functions/wcj-order-functions.php +168 -0
- includes/functions/wcj-price-currency-functions.php +34 -3
- includes/functions/wcj-product-functions.php +378 -0
- includes/functions/wcj-reports-functions.php +148 -0
- includes/functions/wcj-user-roles-functions.php +56 -11
- includes/gateways/class-wc-gateway-wcj-custom.php +18 -15
- includes/input-fields/class-wcj-product-input-fields-abstract.php +56 -14
- includes/input-fields/class-wcj-product-input-fields-global.php +7 -3
- includes/input-fields/class-wcj-product-input-fields-per-product.php +12 -9
- includes/js/{ajax_exchange_rates.js → wcj-ajax-exchange-rates.js} +1 -1
- includes/js/{checkout.js → wcj-checkout.js} +0 -0
- includes/js/{eu-vat-number.js → wcj-eu-vat-number.js} +0 -0
- includes/js/wcj-offer-price.js +51 -0
- includes/js/{product-input-fields.js → wcj-product-input-fields.js} +0 -0
- includes/js/wcj-variations-frontend.js +104 -21
- includes/lib/tcpdf_min/config/tcpdf_config.php +4 -7
- includes/lib/tcpdf_min/fonts/angsanaupc.ctg.z +0 -0
- includes/lib/tcpdf_min/fonts/angsanaupc.php +0 -48
- includes/lib/tcpdf_min/fonts/angsanaupc.z +0 -0
- includes/lib/tcpdf_min/fonts/angsanaupcb.ctg.z +0 -0
- includes/lib/tcpdf_min/fonts/angsanaupcb.php +0 -48
- includes/lib/tcpdf_min/fonts/angsanaupcb.z +0 -0
- includes/lib/tcpdf_min/fonts/angsanaupcbi.ctg.z +0 -0
- includes/lib/tcpdf_min/fonts/angsanaupcbi.php +0 -37
- includes/lib/tcpdf_min/fonts/angsanaupcbi.z +0 -0
- includes/lib/tcpdf_min/fonts/angsanaupci.ctg.z +0 -0
- includes/lib/tcpdf_min/fonts/angsanaupci.php +0 -37
- includes/lib/tcpdf_min/fonts/angsanaupci.z +0 -0
- includes/lib/tcpdf_min/fonts/cordiaupc.ctg.z +0 -0
- includes/lib/tcpdf_min/fonts/cordiaupc.php +0 -48
- includes/lib/tcpdf_min/fonts/cordiaupc.z +0 -0
- includes/lib/tcpdf_min/fonts/cordiaupcb.ctg.z +0 -0
- includes/lib/tcpdf_min/fonts/cordiaupcb.php +0 -48
- includes/lib/tcpdf_min/fonts/cordiaupcb.z +0 -0
- includes/lib/tcpdf_min/fonts/cordiaupcbi.ctg.z +0 -0
- includes/lib/tcpdf_min/fonts/cordiaupcbi.php +0 -37
- includes/lib/tcpdf_min/fonts/cordiaupcbi.z +0 -0
- includes/lib/tcpdf_min/fonts/cordiaupci.ctg.z +0 -0
- includes/lib/tcpdf_min/fonts/cordiaupci.php +0 -37
- includes/lib/tcpdf_min/fonts/cordiaupci.z +0 -0
- includes/lib/tcpdf_min/fonts/dejavusans.ctg.z +0 -0
- includes/lib/tcpdf_min/fonts/dejavusans.php +0 -16
- includes/lib/tcpdf_min/fonts/dejavusans.z +0 -0
- includes/lib/tcpdf_min/fonts/dejavusansb.ctg.z +0 -0
- includes/lib/tcpdf_min/fonts/dejavusansb.php +0 -16
- includes/lib/tcpdf_min/fonts/dejavusansb.z +0 -0
- includes/lib/tcpdf_min/fonts/dejavusansbi.ctg.z +0 -0
- includes/lib/tcpdf_min/fonts/dejavusansbi.php +0 -16
- includes/lib/tcpdf_min/fonts/dejavusansbi.z +0 -0
- includes/lib/tcpdf_min/fonts/droidsansfallback.ctg.z +0 -0
- includes/lib/tcpdf_min/fonts/droidsansfallback.php +0 -14
assets/images/rocket-icon.png
DELETED
Binary file
|
includes/add-to-cart/class-wcj-add-to-cart-per-category.php
CHANGED
@@ -15,7 +15,7 @@ class WCJ_Add_To_Cart_Per_Category {
|
|
15 |
/**
|
16 |
* Constructor.
|
17 |
*/
|
18 |
-
|
19 |
if ( 'yes' === get_option( 'wcj_add_to_cart_per_category_enabled' ) ) {
|
20 |
add_filter( 'woocommerce_product_single_add_to_cart_text', array( $this, 'change_add_to_cart_button_text_single' ), PHP_INT_MAX );
|
21 |
add_filter( 'woocommerce_product_add_to_cart_text', array( $this, 'change_add_to_cart_button_text_archive' ), PHP_INT_MAX );
|
@@ -25,14 +25,14 @@ class WCJ_Add_To_Cart_Per_Category {
|
|
25 |
/**
|
26 |
* change_add_to_cart_button_text_single.
|
27 |
*/
|
28 |
-
|
29 |
return $this->change_add_to_cart_button_text( $add_to_cart_text, 'single' );
|
30 |
}
|
31 |
|
32 |
/**
|
33 |
* change_add_to_cart_button_text_archive.
|
34 |
*/
|
35 |
-
|
36 |
return $this->change_add_to_cart_button_text( $add_to_cart_text, 'archive' );
|
37 |
}
|
38 |
|
@@ -41,7 +41,7 @@ class WCJ_Add_To_Cart_Per_Category {
|
|
41 |
*
|
42 |
* @version 2.2.6
|
43 |
*/
|
44 |
-
|
45 |
$product_categories = get_the_terms( get_the_ID(), 'product_cat' );
|
46 |
if ( empty( $product_categories ) ) return $add_to_cart_text;
|
47 |
for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_add_to_cart_per_category_total_groups_number', 1 ) ); $i++ ) {
|
15 |
/**
|
16 |
* Constructor.
|
17 |
*/
|
18 |
+
function __construct() {
|
19 |
if ( 'yes' === get_option( 'wcj_add_to_cart_per_category_enabled' ) ) {
|
20 |
add_filter( 'woocommerce_product_single_add_to_cart_text', array( $this, 'change_add_to_cart_button_text_single' ), PHP_INT_MAX );
|
21 |
add_filter( 'woocommerce_product_add_to_cart_text', array( $this, 'change_add_to_cart_button_text_archive' ), PHP_INT_MAX );
|
25 |
/**
|
26 |
* change_add_to_cart_button_text_single.
|
27 |
*/
|
28 |
+
function change_add_to_cart_button_text_single( $add_to_cart_text ) {
|
29 |
return $this->change_add_to_cart_button_text( $add_to_cart_text, 'single' );
|
30 |
}
|
31 |
|
32 |
/**
|
33 |
* change_add_to_cart_button_text_archive.
|
34 |
*/
|
35 |
+
function change_add_to_cart_button_text_archive( $add_to_cart_text ) {
|
36 |
return $this->change_add_to_cart_button_text( $add_to_cart_text, 'archive' );
|
37 |
}
|
38 |
|
41 |
*
|
42 |
* @version 2.2.6
|
43 |
*/
|
44 |
+
function change_add_to_cart_button_text( $add_to_cart_text, $single_or_archive ) {
|
45 |
$product_categories = get_the_terms( get_the_ID(), 'product_cat' );
|
46 |
if ( empty( $product_categories ) ) return $add_to_cart_text;
|
47 |
for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_add_to_cart_per_category_total_groups_number', 1 ) ); $i++ ) {
|
includes/add-to-cart/class-wcj-add-to-cart-per-product-type.php
CHANGED
@@ -15,7 +15,7 @@ class WCJ_Add_To_Cart_Per_Product_Type {
|
|
15 |
/**
|
16 |
* Constructor.
|
17 |
*/
|
18 |
-
|
19 |
if ( 'yes' === get_option( 'wcj_add_to_cart_enabled' ) ) {
|
20 |
if ( get_option( 'wcj_add_to_cart_text_enabled' ) == 'yes' ) {
|
21 |
add_filter( 'woocommerce_product_single_add_to_cart_text', array( $this, 'custom_add_to_cart_button_text' ), 100 );
|
@@ -29,7 +29,7 @@ class WCJ_Add_To_Cart_Per_Product_Type {
|
|
29 |
*
|
30 |
* @version 2.7.0
|
31 |
*/
|
32 |
-
|
33 |
|
34 |
global $woocommerce, $product;
|
35 |
|
15 |
/**
|
16 |
* Constructor.
|
17 |
*/
|
18 |
+
function __construct() {
|
19 |
if ( 'yes' === get_option( 'wcj_add_to_cart_enabled' ) ) {
|
20 |
if ( get_option( 'wcj_add_to_cart_text_enabled' ) == 'yes' ) {
|
21 |
add_filter( 'woocommerce_product_single_add_to_cart_text', array( $this, 'custom_add_to_cart_button_text' ), 100 );
|
29 |
*
|
30 |
* @version 2.7.0
|
31 |
*/
|
32 |
+
function custom_add_to_cart_button_text( $add_to_cart_text ) {
|
33 |
|
34 |
global $woocommerce, $product;
|
35 |
|
includes/add-to-cart/class-wcj-add-to-cart-per-product.php
CHANGED
@@ -15,7 +15,7 @@ class WCJ_Add_To_Cart_Per_Product {
|
|
15 |
/**
|
16 |
* Constructor.
|
17 |
*/
|
18 |
-
|
19 |
if ( 'yes' === get_option( 'wcj_add_to_cart_per_product_enabled' ) ) {
|
20 |
add_filter( 'woocommerce_product_single_add_to_cart_text', array( $this, 'change_add_to_cart_button_text_single' ), PHP_INT_MAX );
|
21 |
add_filter( 'woocommerce_product_add_to_cart_text', array( $this, 'change_add_to_cart_button_text_archive' ), PHP_INT_MAX );
|
@@ -27,14 +27,14 @@ class WCJ_Add_To_Cart_Per_Product {
|
|
27 |
/**
|
28 |
* change_add_to_cart_button_text_single.
|
29 |
*/
|
30 |
-
|
31 |
return $this->change_add_to_cart_button_text( $add_to_cart_text, 'single' );
|
32 |
}
|
33 |
|
34 |
/**
|
35 |
* change_add_to_cart_button_text_archive.
|
36 |
*/
|
37 |
-
|
38 |
return $this->change_add_to_cart_button_text( $add_to_cart_text, 'archive' );
|
39 |
}
|
40 |
|
@@ -43,7 +43,7 @@ class WCJ_Add_To_Cart_Per_Product {
|
|
43 |
*
|
44 |
* @version 2.7.0
|
45 |
*/
|
46 |
-
|
47 |
global $product;
|
48 |
if ( ! $product ) {
|
49 |
return $add_to_cart_text;
|
@@ -59,7 +59,7 @@ class WCJ_Add_To_Cart_Per_Product {
|
|
59 |
/**
|
60 |
* save_custom_add_to_cart_meta_box.
|
61 |
*/
|
62 |
-
|
63 |
// Check that we are saving with custom add to cart metabox displayed.
|
64 |
if ( ! isset( $_POST['woojetpack_custom_add_to_cart_save_post'] ) ) {
|
65 |
return;
|
@@ -75,7 +75,7 @@ class WCJ_Add_To_Cart_Per_Product {
|
|
75 |
*
|
76 |
* @version 2.4.8
|
77 |
*/
|
78 |
-
|
79 |
add_meta_box(
|
80 |
'wc-jetpack-custom-add-to-cart',
|
81 |
__( 'Booster: Custom Add to Cart', 'woocommerce-jetpack' ),
|
@@ -89,7 +89,7 @@ class WCJ_Add_To_Cart_Per_Product {
|
|
89 |
/**
|
90 |
* create_custom_add_to_cart_meta_box.
|
91 |
*/
|
92 |
-
|
93 |
|
94 |
$current_post_id = get_the_ID();
|
95 |
|
15 |
/**
|
16 |
* Constructor.
|
17 |
*/
|
18 |
+
function __construct() {
|
19 |
if ( 'yes' === get_option( 'wcj_add_to_cart_per_product_enabled' ) ) {
|
20 |
add_filter( 'woocommerce_product_single_add_to_cart_text', array( $this, 'change_add_to_cart_button_text_single' ), PHP_INT_MAX );
|
21 |
add_filter( 'woocommerce_product_add_to_cart_text', array( $this, 'change_add_to_cart_button_text_archive' ), PHP_INT_MAX );
|
27 |
/**
|
28 |
* change_add_to_cart_button_text_single.
|
29 |
*/
|
30 |
+
function change_add_to_cart_button_text_single( $add_to_cart_text ) {
|
31 |
return $this->change_add_to_cart_button_text( $add_to_cart_text, 'single' );
|
32 |
}
|
33 |
|
34 |
/**
|
35 |
* change_add_to_cart_button_text_archive.
|
36 |
*/
|
37 |
+
function change_add_to_cart_button_text_archive( $add_to_cart_text ) {
|
38 |
return $this->change_add_to_cart_button_text( $add_to_cart_text, 'archive' );
|
39 |
}
|
40 |
|
43 |
*
|
44 |
* @version 2.7.0
|
45 |
*/
|
46 |
+
function change_add_to_cart_button_text( $add_to_cart_text, $single_or_archive ) {
|
47 |
global $product;
|
48 |
if ( ! $product ) {
|
49 |
return $add_to_cart_text;
|
59 |
/**
|
60 |
* save_custom_add_to_cart_meta_box.
|
61 |
*/
|
62 |
+
function save_custom_add_to_cart_meta_box( $post_id, $post ) {
|
63 |
// Check that we are saving with custom add to cart metabox displayed.
|
64 |
if ( ! isset( $_POST['woojetpack_custom_add_to_cart_save_post'] ) ) {
|
65 |
return;
|
75 |
*
|
76 |
* @version 2.4.8
|
77 |
*/
|
78 |
+
function add_custom_add_to_cart_meta_box() {
|
79 |
add_meta_box(
|
80 |
'wc-jetpack-custom-add-to-cart',
|
81 |
__( 'Booster: Custom Add to Cart', 'woocommerce-jetpack' ),
|
89 |
/**
|
90 |
* create_custom_add_to_cart_meta_box.
|
91 |
*/
|
92 |
+
function create_custom_add_to_cart_meta_box() {
|
93 |
|
94 |
$current_post_id = get_the_ID();
|
95 |
|
includes/admin/class-wc-settings-jetpack.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings
|
4 |
*
|
5 |
-
* @version 2.
|
6 |
* @since 1.0.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
@@ -55,7 +55,7 @@ class WC_Settings_Jetpack extends WC_Settings_Page {
|
|
55 |
/**
|
56 |
* Output sections (modules) sub menu
|
57 |
*
|
58 |
-
* @version 2.
|
59 |
*/
|
60 |
function output_sections_submenu() {
|
61 |
global $current_section;
|
@@ -70,6 +70,8 @@ class WC_Settings_Jetpack extends WC_Settings_Page {
|
|
70 |
if ( isset( $module_status['id'] ) && isset( $module_status['default'] ) ) {
|
71 |
if ( 'yes' === get_option( $module_status['id'], $module_status['default'] ) ) {
|
72 |
$active++;
|
|
|
|
|
73 |
}
|
74 |
$all++;
|
75 |
}
|
@@ -93,6 +95,11 @@ class WC_Settings_Jetpack extends WC_Settings_Page {
|
|
93 |
if ( empty( $sections ) || 1 === count( $sections ) ) {
|
94 |
return;
|
95 |
}
|
|
|
|
|
|
|
|
|
|
|
96 |
echo '<ul class="subsubsub">';
|
97 |
foreach ( $this->cats[ $current_cat ]['all_cat_ids'] as $id ) {
|
98 |
$label = $sections[ $id ];
|
@@ -136,7 +143,8 @@ class WC_Settings_Jetpack extends WC_Settings_Page {
|
|
136 |
/**
|
137 |
* Output the settings.
|
138 |
*
|
139 |
-
* @version 2.
|
|
|
140 |
*/
|
141 |
function output() {
|
142 |
|
@@ -150,14 +158,28 @@ class WC_Settings_Jetpack extends WC_Settings_Page {
|
|
150 |
? false : true;
|
151 |
|
152 |
// Deprecated message
|
153 |
-
$
|
154 |
-
'product_info' => '<a href="' . admin_url( 'admin.php?page=wc-settings&tab=jetpack&wcj-cat=products§ion=product_custom_info' ) . '">' . __( 'Product Info', 'woocommerce-jetpack' ) . '</a>',
|
155 |
-
);
|
156 |
-
if ( array_key_exists( $current_section, $deprecated_modules_and_links ) ) {
|
157 |
echo '<div id="wcj_message" class="error">';
|
158 |
echo '<p>';
|
159 |
echo '<strong>';
|
160 |
-
echo sprintf(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
161 |
echo '</strong>';
|
162 |
echo '</p>';
|
163 |
echo '</div>';
|
@@ -287,7 +309,7 @@ class WC_Settings_Jetpack extends WC_Settings_Page {
|
|
287 |
/**
|
288 |
* output_dashboard_modules.
|
289 |
*
|
290 |
-
* @version 2.
|
291 |
*/
|
292 |
function output_dashboard_modules( $settings, $cat_id = '' ) {
|
293 |
$readme_html = '';
|
@@ -318,6 +340,9 @@ class WC_Settings_Jetpack extends WC_Settings_Page {
|
|
318 |
$section = $the_feature['id'];
|
319 |
$section = str_replace( 'wcj_', '', $section );
|
320 |
$section = str_replace( '_enabled', '', $section );
|
|
|
|
|
|
|
321 |
if ( '' != $cat_id ) {
|
322 |
if ( 'active_modules_only' === $cat_id ) {
|
323 |
if ( 'no' === get_option( $the_feature['id'] ) ) continue;
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings
|
4 |
*
|
5 |
+
* @version 2.9.0
|
6 |
* @since 1.0.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
55 |
/**
|
56 |
* Output sections (modules) sub menu
|
57 |
*
|
58 |
+
* @version 2.9.0
|
59 |
*/
|
60 |
function output_sections_submenu() {
|
61 |
global $current_section;
|
70 |
if ( isset( $module_status['id'] ) && isset( $module_status['default'] ) ) {
|
71 |
if ( 'yes' === get_option( $module_status['id'], $module_status['default'] ) ) {
|
72 |
$active++;
|
73 |
+
} elseif ( wcj_is_module_deprecated( $module_status['id'], true ) ) {
|
74 |
+
continue;
|
75 |
}
|
76 |
$all++;
|
77 |
}
|
95 |
if ( empty( $sections ) || 1 === count( $sections ) ) {
|
96 |
return;
|
97 |
}
|
98 |
+
foreach ( $this->cats[ $current_cat ]['all_cat_ids'] as $key => $id ) {
|
99 |
+
if ( wcj_is_module_deprecated( $id, false, true ) ) {
|
100 |
+
unset( $this->cats[ $current_cat ]['all_cat_ids'][ $key ] );
|
101 |
+
}
|
102 |
+
}
|
103 |
echo '<ul class="subsubsub">';
|
104 |
foreach ( $this->cats[ $current_cat ]['all_cat_ids'] as $id ) {
|
105 |
$label = $sections[ $id ];
|
143 |
/**
|
144 |
* Output the settings.
|
145 |
*
|
146 |
+
* @version 2.9.0
|
147 |
+
* @todo (maybe) admin_notices
|
148 |
*/
|
149 |
function output() {
|
150 |
|
158 |
? false : true;
|
159 |
|
160 |
// Deprecated message
|
161 |
+
if ( $replacement_module = wcj_is_module_deprecated( $current_section ) ) {
|
|
|
|
|
|
|
162 |
echo '<div id="wcj_message" class="error">';
|
163 |
echo '<p>';
|
164 |
echo '<strong>';
|
165 |
+
echo sprintf(
|
166 |
+
__( 'Please note that current <em>%s</em> module is deprecated and will be removed in future updates. Please use <em>%s</em> module instead.', 'woocommerce-jetpack' ),
|
167 |
+
WCJ()->modules[ $current_section ]->short_desc,
|
168 |
+
'<a href="' . admin_url( 'admin.php?page=wc-settings&tab=jetpack&wcj-cat=' . $replacement_module['cat'] . '§ion=' . $replacement_module['module'] ) . '">' .
|
169 |
+
$replacement_module['title'] . '</a>'
|
170 |
+
);
|
171 |
+
echo ' <span style="color:red;">' . __( 'Module will be removed from the module\'s list as soon as you disable it.', 'woocommerce-jetpack' ) . '</span>';
|
172 |
+
echo '</strong>';
|
173 |
+
echo '</p>';
|
174 |
+
echo '</div>';
|
175 |
+
}
|
176 |
+
|
177 |
+
// "Under development" message
|
178 |
+
if ( isset( WCJ()->modules[ $current_section ]->dev ) && true === WCJ()->modules[ $current_section ]->dev ) {
|
179 |
+
echo '<div id="wcj_message" class="error">';
|
180 |
+
echo '<p>';
|
181 |
+
echo '<strong>';
|
182 |
+
echo sprintf( __( 'Please note that <em>%s</em> module is currently under development. Until stable module version is released, options can be changed or some options can be moved to paid plugin version.', 'woocommerce-jetpack' ), WCJ()->modules[ $current_section ]->short_desc );
|
183 |
echo '</strong>';
|
184 |
echo '</p>';
|
185 |
echo '</div>';
|
309 |
/**
|
310 |
* output_dashboard_modules.
|
311 |
*
|
312 |
+
* @version 2.9.0
|
313 |
*/
|
314 |
function output_dashboard_modules( $settings, $cat_id = '' ) {
|
315 |
$readme_html = '';
|
340 |
$section = $the_feature['id'];
|
341 |
$section = str_replace( 'wcj_', '', $section );
|
342 |
$section = str_replace( '_enabled', '', $section );
|
343 |
+
if ( wcj_is_module_deprecated( $section, false, true ) ) {
|
344 |
+
continue;
|
345 |
+
}
|
346 |
if ( '' != $cat_id ) {
|
347 |
if ( 'active_modules_only' === $cat_id ) {
|
348 |
if ( 'no' === get_option( $the_feature['id'] ) ) continue;
|
includes/admin/class-wcj-settings-custom-fields.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings Custom Fields
|
4 |
*
|
5 |
-
* @version 2.
|
6 |
* @since 2.8.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
@@ -16,10 +16,11 @@ class WCJ_Settings_Custom_Fields {
|
|
16 |
/**
|
17 |
* Constructor.
|
18 |
*
|
19 |
-
* @version 2.
|
20 |
* @since 2.8.0
|
21 |
*/
|
22 |
function __construct() {
|
|
|
23 |
add_action( 'woocommerce_admin_field_wcj_number_plus_checkbox_start', array( $this, 'output_wcj_number_plus_checkbox_start' ) );
|
24 |
add_action( 'woocommerce_admin_field_wcj_number_plus_checkbox_end', array( $this, 'output_wcj_number_plus_checkbox_end' ) );
|
25 |
add_filter( 'woocommerce_admin_settings_sanitize_option', array( $this, 'format_wcj_number_plus_checkbox_end' ), PHP_INT_MAX, 3 );
|
@@ -30,6 +31,22 @@ class WCJ_Settings_Custom_Fields {
|
|
30 |
add_action( 'woocommerce_admin_field_module_tools', array( $this, 'output_module_tools' ) );
|
31 |
}
|
32 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
33 |
/**
|
34 |
* format_wcj_number_plus_checkbox_end.
|
35 |
*
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings Custom Fields
|
4 |
*
|
5 |
+
* @version 2.9.0
|
6 |
* @since 2.8.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
16 |
/**
|
17 |
* Constructor.
|
18 |
*
|
19 |
+
* @version 2.9.0
|
20 |
* @since 2.8.0
|
21 |
*/
|
22 |
function __construct() {
|
23 |
+
add_action( 'woocommerce_admin_field_wcj_save_settings_button', array( $this, 'output_wcj_save_settings_button' ) );
|
24 |
add_action( 'woocommerce_admin_field_wcj_number_plus_checkbox_start', array( $this, 'output_wcj_number_plus_checkbox_start' ) );
|
25 |
add_action( 'woocommerce_admin_field_wcj_number_plus_checkbox_end', array( $this, 'output_wcj_number_plus_checkbox_end' ) );
|
26 |
add_filter( 'woocommerce_admin_settings_sanitize_option', array( $this, 'format_wcj_number_plus_checkbox_end' ), PHP_INT_MAX, 3 );
|
31 |
add_action( 'woocommerce_admin_field_module_tools', array( $this, 'output_module_tools' ) );
|
32 |
}
|
33 |
|
34 |
+
/**
|
35 |
+
* output_wcj_save_settings_button.
|
36 |
+
*
|
37 |
+
* @version 2.9.0
|
38 |
+
* @since 2.9.0
|
39 |
+
*/
|
40 |
+
function output_wcj_save_settings_button( $value ) {
|
41 |
+
// Output
|
42 |
+
?><tr valign="top">
|
43 |
+
<th scope="row" class="titledesc"></th>
|
44 |
+
<td class="forminp forminp-<?php echo sanitize_title( $value['type'] ) ?>">
|
45 |
+
<input name="save" class="button-primary woocommerce-save-button" type="submit" value="<?php echo esc_html( $value['title'] ); ?>">
|
46 |
+
</td>
|
47 |
+
</tr><?php
|
48 |
+
}
|
49 |
+
|
50 |
/**
|
51 |
* format_wcj_number_plus_checkbox_end.
|
52 |
*
|
includes/admin/class-wcj-settings-manager.php
ADDED
@@ -0,0 +1,149 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Booster for WooCommerce - Settings Manager
|
4 |
+
*
|
5 |
+
* @version 2.9.0
|
6 |
+
* @version 2.9.0
|
7 |
+
* @author Algoritmika Ltd.
|
8 |
+
*/
|
9 |
+
|
10 |
+
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
11 |
+
|
12 |
+
if ( ! class_exists( 'WCJ_Settings_Manager' ) ) :
|
13 |
+
|
14 |
+
class WCJ_Settings_Manager {
|
15 |
+
|
16 |
+
/**
|
17 |
+
* Constructor.
|
18 |
+
*
|
19 |
+
* @version 2.9.0
|
20 |
+
* @version 2.9.0
|
21 |
+
*/
|
22 |
+
function __construct() {
|
23 |
+
// Import / Export / Reset Booster's settings
|
24 |
+
add_action( 'wp_loaded', array( $this, 'manage_options' ), PHP_INT_MAX );
|
25 |
+
}
|
26 |
+
|
27 |
+
/**
|
28 |
+
* manage_options.
|
29 |
+
*
|
30 |
+
* @version 2.5.2
|
31 |
+
* @since 2.5.2
|
32 |
+
*/
|
33 |
+
function manage_options() {
|
34 |
+
if ( is_admin() ) {
|
35 |
+
if ( isset( $_POST['booster_import_settings'] ) ) {
|
36 |
+
$this->manage_options_import();
|
37 |
+
}
|
38 |
+
if ( isset( $_POST['booster_export_settings'] ) ) {
|
39 |
+
$this->manage_options_export();
|
40 |
+
}
|
41 |
+
if ( isset( $_POST['booster_reset_settings'] ) ) {
|
42 |
+
$this->manage_options_reset();
|
43 |
+
}
|
44 |
+
}
|
45 |
+
}
|
46 |
+
|
47 |
+
/**
|
48 |
+
* manage_options_import.
|
49 |
+
*
|
50 |
+
* @version 2.5.4
|
51 |
+
* @since 2.5.2
|
52 |
+
*/
|
53 |
+
function manage_options_import() {
|
54 |
+
global $wcj_notice;
|
55 |
+
if( ! isset( $_FILES['booster_import_settings_file']['tmp_name'] ) || '' == $_FILES['booster_import_settings_file']['tmp_name'] ) {
|
56 |
+
$wcj_notice .= __( 'Please upload a file to import!', 'woocommerce-jetpack' );
|
57 |
+
$import_settings = array();
|
58 |
+
unset( $_POST['booster_import_settings'] );
|
59 |
+
} else {
|
60 |
+
$import_counter = 0;
|
61 |
+
$import_settings = file_get_contents( $_FILES['booster_import_settings_file']['tmp_name'] );
|
62 |
+
$import_settings = explode( PHP_EOL, preg_replace( '~(*BSR_ANYCRLF)\R~', PHP_EOL, $import_settings ) );
|
63 |
+
if ( ! is_array( $import_settings ) || 2 !== count( $import_settings ) ) {
|
64 |
+
$wcj_notice .= __( 'Wrong file format!', 'woocommerce-jetpack' );
|
65 |
+
} else {
|
66 |
+
$import_header = $import_settings[0];
|
67 |
+
$required_header = 'Booster for WooCommerce';
|
68 |
+
if ( $required_header !== substr( $import_header, 0, strlen( $required_header ) ) ) {
|
69 |
+
$wcj_notice .= __( 'Wrong file format!', 'woocommerce-jetpack' );
|
70 |
+
} else {
|
71 |
+
$import_settings = json_decode( $import_settings[1], true );
|
72 |
+
foreach ( $import_settings as $import_key => $import_setting ) {
|
73 |
+
update_option( $import_key, $import_setting );
|
74 |
+
$import_counter++;
|
75 |
+
}
|
76 |
+
$wcj_notice .= sprintf( __( '%d options successfully imported.', 'woocommerce-jetpack' ), $import_counter );
|
77 |
+
}
|
78 |
+
}
|
79 |
+
}
|
80 |
+
}
|
81 |
+
|
82 |
+
/**
|
83 |
+
* manage_options_export.
|
84 |
+
*
|
85 |
+
* @version 2.9.0
|
86 |
+
* @since 2.5.2
|
87 |
+
*/
|
88 |
+
function manage_options_export() {
|
89 |
+
$export_settings = array();
|
90 |
+
$export_counter = array();
|
91 |
+
foreach ( WCJ()->modules as $module ) {
|
92 |
+
$values = $module->get_settings();
|
93 |
+
foreach ( $values as $value ) {
|
94 |
+
if ( isset( $value['default'] ) && isset( $value['id'] ) ) {
|
95 |
+
if ( isset ( $_POST['booster_export_settings'] ) ) {
|
96 |
+
$export_settings[ $value['id'] ] = get_option( $value['id'], $value['default'] );
|
97 |
+
if ( ! isset( $export_counter[ $module->short_desc ] ) ) {
|
98 |
+
$export_counter[ $module->short_desc ] = 0;
|
99 |
+
}
|
100 |
+
$export_counter[ $module->short_desc ]++;
|
101 |
+
}
|
102 |
+
}
|
103 |
+
}
|
104 |
+
}
|
105 |
+
$export_settings = json_encode( $export_settings );
|
106 |
+
$export_settings = 'Booster for WooCommerce v' . get_option( 'booster_for_woocommerce_version', 'NA' ) . PHP_EOL . $export_settings;
|
107 |
+
header( "Content-Type: application/octet-stream" );
|
108 |
+
header( "Content-Disposition: attachment; filename=booster_settings.txt" );
|
109 |
+
header( "Content-Type: application/octet-stream" );
|
110 |
+
header( "Content-Type: application/download" );
|
111 |
+
header( "Content-Description: File Transfer" );
|
112 |
+
header( "Content-Length: " . strlen( $export_settings ) );
|
113 |
+
echo $export_settings;
|
114 |
+
die();
|
115 |
+
}
|
116 |
+
|
117 |
+
/**
|
118 |
+
* manage_options_reset.
|
119 |
+
*
|
120 |
+
* @version 2.9.0
|
121 |
+
* @since 2.5.2
|
122 |
+
*/
|
123 |
+
function manage_options_reset() {
|
124 |
+
global $wcj_notice;
|
125 |
+
$delete_counter = 0;
|
126 |
+
foreach ( WCJ()->modules as $module ) {
|
127 |
+
$values = $module->get_settings();
|
128 |
+
foreach ( $values as $value ) {
|
129 |
+
if ( isset( $value['id'] ) ) {
|
130 |
+
if ( isset ( $_POST['booster_reset_settings'] ) ) {
|
131 |
+
require_once( ABSPATH . 'wp-includes/pluggable.php' );
|
132 |
+
if ( wcj_is_user_role( 'administrator' ) ) {
|
133 |
+
delete_option( $value['id'] );
|
134 |
+
$delete_counter++;
|
135 |
+
}
|
136 |
+
}
|
137 |
+
}
|
138 |
+
}
|
139 |
+
}
|
140 |
+
if ( $delete_counter > 0 ) {
|
141 |
+
$wcj_notice .= sprintf( __( '%d options successfully deleted.', 'woocommerce-jetpack' ), $delete_counter );
|
142 |
+
}
|
143 |
+
}
|
144 |
+
|
145 |
+
}
|
146 |
+
|
147 |
+
endif;
|
148 |
+
|
149 |
+
return new WCJ_Settings_Manager();
|
includes/admin/class-wcj-tools.php
CHANGED
@@ -75,8 +75,7 @@ class WCJ_Tools {
|
|
75 |
echo '</tr>';
|
76 |
do_action( 'wcj_tools_' . 'dashboard' );
|
77 |
echo '</table>';
|
78 |
-
}
|
79 |
-
else {
|
80 |
do_action( 'wcj_tools_' . $active_tab );
|
81 |
}
|
82 |
}
|
75 |
echo '</tr>';
|
76 |
do_action( 'wcj_tools_' . 'dashboard' );
|
77 |
echo '</table>';
|
78 |
+
} else {
|
|
|
79 |
do_action( 'wcj_tools_' . $active_tab );
|
80 |
}
|
81 |
}
|
includes/admin/wcj-modules-cats.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
*
|
5 |
* The WooCommerce Modules Array.
|
6 |
*
|
7 |
-
* @version 2.
|
8 |
* @since 2.2.0
|
9 |
* @author Algoritmika Ltd.
|
10 |
*/
|
@@ -35,6 +35,7 @@ return array(
|
|
35 |
'bulk_price_converter',
|
36 |
'wholesale_price',
|
37 |
'product_open_pricing',
|
|
|
38 |
'price_by_user_role',
|
39 |
'product_price_by_formula',
|
40 |
'global_discount',
|
@@ -121,6 +122,7 @@ return array(
|
|
121 |
'desc' => __( 'Order Custom Statuses, Order Minimum Amount, Order Numbers, Custom Shipping Methods and more.', 'woocommerce-jetpack' ),
|
122 |
'all_cat_ids' => array(
|
123 |
'shipping',
|
|
|
124 |
'left_to_free_shipping',
|
125 |
'shipping_calculator',
|
126 |
'shipping_by_user_role',
|
@@ -129,6 +131,7 @@ return array(
|
|
129 |
'order_min_amount',
|
130 |
'order_numbers',
|
131 |
'order_custom_statuses',
|
|
|
132 |
),
|
133 |
),
|
134 |
|
@@ -153,7 +156,10 @@ return array(
|
|
153 |
'desc' => __( 'Emails, Reports, Export, Admin Tools, General Options and more.', 'woocommerce-jetpack' ),
|
154 |
'all_cat_ids' => array(
|
155 |
'general',
|
|
|
|
|
156 |
'export',
|
|
|
157 |
'old_slugs',
|
158 |
'reports',
|
159 |
'admin_tools',
|
4 |
*
|
5 |
* The WooCommerce Modules Array.
|
6 |
*
|
7 |
+
* @version 2.9.0
|
8 |
* @since 2.2.0
|
9 |
* @author Algoritmika Ltd.
|
10 |
*/
|
35 |
'bulk_price_converter',
|
36 |
'wholesale_price',
|
37 |
'product_open_pricing',
|
38 |
+
'offer_price',
|
39 |
'price_by_user_role',
|
40 |
'product_price_by_formula',
|
41 |
'global_discount',
|
122 |
'desc' => __( 'Order Custom Statuses, Order Minimum Amount, Order Numbers, Custom Shipping Methods and more.', 'woocommerce-jetpack' ),
|
123 |
'all_cat_ids' => array(
|
124 |
'shipping',
|
125 |
+
'shipping_options',
|
126 |
'left_to_free_shipping',
|
127 |
'shipping_calculator',
|
128 |
'shipping_by_user_role',
|
131 |
'order_min_amount',
|
132 |
'order_numbers',
|
133 |
'order_custom_statuses',
|
134 |
+
'order_quantities',
|
135 |
),
|
136 |
),
|
137 |
|
156 |
'desc' => __( 'Emails, Reports, Export, Admin Tools, General Options and more.', 'woocommerce-jetpack' ),
|
157 |
'all_cat_ids' => array(
|
158 |
'general',
|
159 |
+
'breadcrumbs',
|
160 |
+
'admin_bar',
|
161 |
'export',
|
162 |
+
'my_account',
|
163 |
'old_slugs',
|
164 |
'reports',
|
165 |
'admin_tools',
|
includes/class-wcj-admin-bar.php
ADDED
@@ -0,0 +1,584 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Booster for WooCommerce - Module - Admin Bar
|
4 |
+
*
|
5 |
+
* @version 2.9.0
|
6 |
+
* @since 2.9.0
|
7 |
+
* @author Algoritmika Ltd.
|
8 |
+
*/
|
9 |
+
|
10 |
+
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
11 |
+
|
12 |
+
if ( ! class_exists( 'WCJ_Admin_Bar' ) ) :
|
13 |
+
|
14 |
+
class WCJ_Admin_Bar extends WCJ_Module {
|
15 |
+
|
16 |
+
/**
|
17 |
+
* Constructor.
|
18 |
+
*
|
19 |
+
* @version 2.9.0
|
20 |
+
* @since 2.9.0
|
21 |
+
* @todo (maybe) custom user nodes
|
22 |
+
* @todo (maybe) optional nodes selection
|
23 |
+
* @todo (maybe) add WooCommerce versions (from / to) to nodes
|
24 |
+
* @todo (maybe) customizable icons
|
25 |
+
* @todo (maybe) separate "Booster Active Modules" admin bar menu
|
26 |
+
* @todo (maybe) separate "Booster Modules" admin bar menu
|
27 |
+
* @todo (maybe) separate "Booster Tools" admin bar menu
|
28 |
+
* @todo (maybe) separate "WooCommerce Reports" admin bar menu
|
29 |
+
* @todo (maybe) separate "WooCommerce Products" admin bar menu
|
30 |
+
* @todo (maybe) separate "WooCommerce Settings" admin bar menu
|
31 |
+
*/
|
32 |
+
function __construct() {
|
33 |
+
|
34 |
+
$this->id = 'admin_bar';
|
35 |
+
$this->short_desc = __( 'Admin Bar', 'woocommerce-jetpack' );
|
36 |
+
$this->desc = __( 'WooCommerce admin bar.', 'woocommerce-jetpack' );
|
37 |
+
$this->link_slug = 'woocommerce-admin-bar';
|
38 |
+
parent::__construct();
|
39 |
+
|
40 |
+
if ( $this->is_enabled() ) {
|
41 |
+
if ( 'yes' === get_option( 'wcj_admin_bar_wc_enabled', 'yes' ) ) {
|
42 |
+
add_action( 'admin_bar_menu', array( $this, 'add_woocommerce_admin_bar' ), PHP_INT_MAX );
|
43 |
+
add_action( 'wp_head', array( $this, 'add_woocommerce_admin_bar_icon_style' ) );
|
44 |
+
add_action( 'admin_head', array( $this, 'add_woocommerce_admin_bar_icon_style' ) );
|
45 |
+
}
|
46 |
+
if ( 'yes' === get_option( 'wcj_admin_bar_booster_enabled', 'yes' ) ) {
|
47 |
+
add_action( 'admin_bar_menu', array( $this, 'add_booster_admin_bar' ), PHP_INT_MAX );
|
48 |
+
add_action( 'wp_head', array( $this, 'add_booster_admin_bar_icon_style' ) );
|
49 |
+
add_action( 'admin_head', array( $this, 'add_booster_admin_bar_icon_style' ) );
|
50 |
+
}
|
51 |
+
add_action( 'woojetpack_after_settings_save', array( $this, 'reload_page_after_settings_save' ), PHP_INT_MAX, 2 );
|
52 |
+
}
|
53 |
+
}
|
54 |
+
|
55 |
+
/**
|
56 |
+
* reload_page_after_settings_save.
|
57 |
+
*
|
58 |
+
* @version 2.9.0
|
59 |
+
* @since 2.9.0
|
60 |
+
* @todo (maybe) somehow add "Your settings have been saved." admin notice
|
61 |
+
*/
|
62 |
+
function reload_page_after_settings_save( $sections, $current_section ) {
|
63 |
+
// This function is needed so admin bar menus would appear immediately after module settings are saved (i.e. without additional page refresh)
|
64 |
+
if ( $this->id === $current_section ) {
|
65 |
+
wp_safe_redirect( add_query_arg( '', '' ) );
|
66 |
+
exit;
|
67 |
+
}
|
68 |
+
}
|
69 |
+
|
70 |
+
/**
|
71 |
+
* add_booster_admin_bar_icon_style.
|
72 |
+
*
|
73 |
+
* @version 2.9.0
|
74 |
+
* @since 2.9.0
|
75 |
+
*/
|
76 |
+
function add_booster_admin_bar_icon_style() {
|
77 |
+
echo '<style type="text/css"> #wpadminbar #wp-admin-bar-booster .ab-icon:before { content: "\f185"; top: 3px; } </style>';
|
78 |
+
}
|
79 |
+
|
80 |
+
/**
|
81 |
+
* add_woocommerce_admin_bar_icon_style.
|
82 |
+
*
|
83 |
+
* @version 2.9.0
|
84 |
+
* @since 2.9.0
|
85 |
+
*/
|
86 |
+
function add_woocommerce_admin_bar_icon_style() {
|
87 |
+
echo '<style type="text/css"> #wpadminbar #wp-admin-bar-wcj-wc .ab-icon:before { content: "\f174"; top: 3px; } </style>';
|
88 |
+
}
|
89 |
+
|
90 |
+
/**
|
91 |
+
* add_woocommerce_admin_bar_nodes.
|
92 |
+
*
|
93 |
+
* @version 2.9.0
|
94 |
+
* @since 2.9.0
|
95 |
+
*/
|
96 |
+
function add_woocommerce_admin_bar_nodes( $wp_admin_bar, $nodes, $parent_id ) {
|
97 |
+
foreach ( $nodes as $node_id => $node ) {
|
98 |
+
$id = ( false !== $parent_id ? $parent_id . '-' . $node_id : $node_id );
|
99 |
+
$args = array(
|
100 |
+
'parent' => $parent_id,
|
101 |
+
'id' => $id,
|
102 |
+
'title' => $node['title'],
|
103 |
+
'href' => $node['href'],
|
104 |
+
'meta' => array( 'title' => $node['title'] ),
|
105 |
+
);
|
106 |
+
if ( isset( $node['meta'] ) ) {
|
107 |
+
$args['meta'] = array_merge( $args['meta'], $node['meta'] );
|
108 |
+
}
|
109 |
+
$wp_admin_bar->add_node( $args );
|
110 |
+
if ( isset( $node['nodes'] ) ) {
|
111 |
+
// Recursion
|
112 |
+
$this->add_woocommerce_admin_bar_nodes( $wp_admin_bar, $node['nodes'], $id );
|
113 |
+
}
|
114 |
+
}
|
115 |
+
}
|
116 |
+
|
117 |
+
/**
|
118 |
+
* get_nodes_booster_modules.
|
119 |
+
*
|
120 |
+
* @version 2.9.0
|
121 |
+
* @since 2.9.0
|
122 |
+
* @todo (maybe) dashes instead of underscores
|
123 |
+
* @todo (maybe) dashboard > alphabetically - list all modules
|
124 |
+
* @todo (maybe) dashboard > by_category - list all modules
|
125 |
+
*/
|
126 |
+
function get_nodes_booster_modules() {
|
127 |
+
$nodes = array();
|
128 |
+
$cats = include( wcj_plugin_path() . '/includes/admin/' . 'wcj-modules-cats.php' );
|
129 |
+
$active_modules = array();
|
130 |
+
foreach ( $cats as $id => $label_info ) {
|
131 |
+
$nodes[ $id ] = array(
|
132 |
+
'title' => $label_info['label'],
|
133 |
+
'href' => admin_url( 'admin.php?page=wc-settings&tab=jetpack&wcj-cat=' . $id ),
|
134 |
+
'meta' => array( 'title' => strip_tags( $label_info['desc'] ) ),
|
135 |
+
);
|
136 |
+
if ( 'dashboard' === $id ) {
|
137 |
+
$nodes[ $id ]['nodes'] = array(
|
138 |
+
'alphabetically' => array(
|
139 |
+
'title' => __( 'Alphabetically', 'woocommerce-jetpack' ),
|
140 |
+
'href' => admin_url( 'admin.php?page=wc-settings&tab=jetpack&wcj-cat=dashboard§ion=alphabetically' ),
|
141 |
+
),
|
142 |
+
'by_category' => array(
|
143 |
+
'title' => __( 'By Category', 'woocommerce-jetpack' ),
|
144 |
+
'href' => admin_url( 'admin.php?page=wc-settings&tab=jetpack&wcj-cat=dashboard§ion=by_category' ),
|
145 |
+
),
|
146 |
+
'active' => array(
|
147 |
+
'title' => __( 'Active', 'woocommerce-jetpack' ),
|
148 |
+
'href' => admin_url( 'admin.php?page=wc-settings&tab=jetpack&wcj-cat=dashboard§ion=active' ),
|
149 |
+
),
|
150 |
+
'manager' => array(
|
151 |
+
'title' => __( 'Manage Settings', 'woocommerce-jetpack' ),
|
152 |
+
'href' => admin_url( 'admin.php?page=wc-settings&tab=jetpack&wcj-cat=dashboard§ion=manager' ),
|
153 |
+
),
|
154 |
+
);
|
155 |
+
} else {
|
156 |
+
foreach ( $label_info['all_cat_ids'] as $link_id ) {
|
157 |
+
if ( wcj_is_module_deprecated( $link_id, false, true ) ) {
|
158 |
+
continue;
|
159 |
+
}
|
160 |
+
$nodes[ $id ]['nodes'][ $link_id ] = array(
|
161 |
+
'title' => WCJ()->modules[ $link_id ]->short_desc,
|
162 |
+
'href' => admin_url( 'admin.php?page=wc-settings&tab=jetpack&wcj-cat=' . $id . '§ion=' . $link_id ),
|
163 |
+
'meta' => array( 'title' => WCJ()->modules[ $link_id ]->desc ),
|
164 |
+
'nodes' => array(
|
165 |
+
'settings' => array(
|
166 |
+
'title' => __( 'Settings', 'woocommerce-jetpack' ),
|
167 |
+
'href' => admin_url( 'admin.php?page=wc-settings&tab=jetpack&wcj-cat=' . $id . '§ion=' . $link_id ),
|
168 |
+
),
|
169 |
+
'docs' => array(
|
170 |
+
'title' => __( 'Documentation', 'woocommerce-jetpack' ),
|
171 |
+
'href' => WCJ()->modules[ $link_id ]->link . '?utm_source=module_documentation&utm_medium=admin_bar_link&utm_campaign=booster_documentation',
|
172 |
+
'meta' => array( 'target' => '_blank' ),
|
173 |
+
),
|
174 |
+
),
|
175 |
+
);
|
176 |
+
if ( WCJ()->modules[ $link_id ]->is_enabled() ) {
|
177 |
+
$active_modules[ $link_id ] = $nodes[ $id ]['nodes'][ $link_id ];
|
178 |
+
}
|
179 |
+
}
|
180 |
+
}
|
181 |
+
}
|
182 |
+
if ( ! empty( $active_modules ) ) {
|
183 |
+
usort( $active_modules, array( $this, 'usort_compare_by_title' ) );
|
184 |
+
$nodes['dashboard']['nodes']['active']['nodes'] = $active_modules;
|
185 |
+
}
|
186 |
+
return $nodes;
|
187 |
+
}
|
188 |
+
|
189 |
+
/**
|
190 |
+
* usort_compare_by_title.
|
191 |
+
*
|
192 |
+
* @version 2.9.0
|
193 |
+
* @since 2.9.0
|
194 |
+
*/
|
195 |
+
function usort_compare_by_title( $a, $b ) {
|
196 |
+
if ( $a['title'] == $b['title'] ) {
|
197 |
+
return 0;
|
198 |
+
}
|
199 |
+
return ( $a['title'] < $b['title'] ) ? -1 : 1;
|
200 |
+
}
|
201 |
+
|
202 |
+
/**
|
203 |
+
* get_nodes_booster_tools.
|
204 |
+
*
|
205 |
+
* @version 2.9.0
|
206 |
+
* @since 2.9.0
|
207 |
+
*/
|
208 |
+
function get_nodes_booster_tools() {
|
209 |
+
$nodes = array();
|
210 |
+
$tools = apply_filters( 'wcj_tools_tabs', array(
|
211 |
+
array(
|
212 |
+
'id' => 'dashboard',
|
213 |
+
'title' => __( 'Dashboard', 'woocommerce-jetpack' ),
|
214 |
+
'desc' => __( 'This dashboard lets you check statuses and short descriptions of all available Booster for WooCommerce tools. Tools can be enabled through WooCommerce > Settings > Booster.', 'woocommerce-jetpack' ),
|
215 |
+
),
|
216 |
+
) );
|
217 |
+
foreach ( $tools as $tool ) {
|
218 |
+
$nodes[ $tool['id'] ] = array(
|
219 |
+
'title' => $tool['title'],
|
220 |
+
'href' => admin_url( 'admin.php?page=wcj-tools&tab=' . $tool['id'] ),
|
221 |
+
);
|
222 |
+
if ( isset( $tool['desc'] ) ) {
|
223 |
+
$nodes[ $tool['id'] ]['meta']['title'] = $tool['desc'];
|
224 |
+
}
|
225 |
+
}
|
226 |
+
return $nodes;
|
227 |
+
}
|
228 |
+
|
229 |
+
/**
|
230 |
+
* add_booster_admin_bar.
|
231 |
+
*
|
232 |
+
* @version 2.9.0
|
233 |
+
* @since 2.9.0
|
234 |
+
*/
|
235 |
+
function add_booster_admin_bar( $wp_admin_bar ) {
|
236 |
+
$nodes = array(
|
237 |
+
'booster' => array(
|
238 |
+
'title' => '<span class="ab-icon"></span>' . __( 'Booster', 'woocommerce-jetpack' ),
|
239 |
+
'href' => admin_url( 'admin.php?page=wc-settings&tab=jetpack' ),
|
240 |
+
'meta' => array(
|
241 |
+
'title' => __( 'Booster - Settings', 'woocommerce-jetpack' ),
|
242 |
+
),
|
243 |
+
'nodes' => array(
|
244 |
+
'settings' => array(
|
245 |
+
'title' => __( 'Settings', 'woocommerce-jetpack' ),
|
246 |
+
'href' => admin_url( 'admin.php?page=wc-settings&tab=jetpack' ),
|
247 |
+
'nodes' => $this->get_nodes_booster_modules(),
|
248 |
+
),
|
249 |
+
'tools' => array(
|
250 |
+
'title' => __( 'Tools', 'woocommerce-jetpack' ),
|
251 |
+
'href' => admin_url( 'admin.php?page=wcj-tools' ),
|
252 |
+
'nodes' => $this->get_nodes_booster_tools(),
|
253 |
+
),
|
254 |
+
),
|
255 |
+
),
|
256 |
+
);
|
257 |
+
$this->add_woocommerce_admin_bar_nodes( $wp_admin_bar, $nodes, false );
|
258 |
+
}
|
259 |
+
|
260 |
+
/**
|
261 |
+
* get_nodes_orders_reports.
|
262 |
+
*
|
263 |
+
* @version 2.9.0
|
264 |
+
* @since 2.9.0
|
265 |
+
*/
|
266 |
+
function get_nodes_orders_reports() {
|
267 |
+
$nodes = array();
|
268 |
+
$reports = array(
|
269 |
+
'sales_by_date' => __( 'Sales by date', 'woocommerce' ),
|
270 |
+
'sales_by_product' => __( 'Sales by product', 'woocommerce' ),
|
271 |
+
'sales_by_category' => __( 'Sales by category', 'woocommerce' ),
|
272 |
+
'coupon_usage' => __( 'Coupons by date', 'woocommerce' ),
|
273 |
+
);
|
274 |
+
foreach ( $reports as $report_id => $report_title ) {
|
275 |
+
$nodes[ $report_id ] = array(
|
276 |
+
'title' => $report_title,
|
277 |
+
'href' => admin_url( 'admin.php?page=wc-reports&tab=orders&report=' . $report_id ),
|
278 |
+
'nodes' => array(
|
279 |
+
'7day' => array(
|
280 |
+
'title' => __( 'Last 7 days', 'woocommerce' ),
|
281 |
+
'href' => admin_url( 'admin.php?page=wc-reports&tab=orders&report=' . $report_id . '&range=7day' ),
|
282 |
+
),
|
283 |
+
'month' => array(
|
284 |
+
'title' => __( 'This month', 'woocommerce' ),
|
285 |
+
'href' => admin_url( 'admin.php?page=wc-reports&tab=orders&report=' . $report_id . '&range=month' ),
|
286 |
+
),
|
287 |
+
'last-month' => array(
|
288 |
+
'title' => __( 'Last month', 'woocommerce' ),
|
289 |
+
'href' => admin_url( 'admin.php?page=wc-reports&tab=orders&report=' . $report_id . '&range=last_month' ),
|
290 |
+
),
|
291 |
+
'year' => array(
|
292 |
+
'title' => __( 'Year', 'woocommerce' ),
|
293 |
+
'href' => admin_url( 'admin.php?page=wc-reports&tab=orders&report=' . $report_id . '&range=year' ),
|
294 |
+
),
|
295 |
+
),
|
296 |
+
);
|
297 |
+
}
|
298 |
+
return $nodes;
|
299 |
+
}
|
300 |
+
|
301 |
+
/**
|
302 |
+
* add_woocommerce_admin_bar.
|
303 |
+
*
|
304 |
+
* @version 2.9.0
|
305 |
+
* @since 2.9.0
|
306 |
+
* @todo (maybe) reports > customers > customers > add dates
|
307 |
+
* @todo (maybe) reports > taxes > taxes_by_code > add dates
|
308 |
+
* @todo (maybe) reports > taxes > taxes_by_date > add dates
|
309 |
+
* @todo (maybe) settings > add custom sections (i.e. Booster and other plugins)
|
310 |
+
* @todo (maybe) extensions > add sections
|
311 |
+
*/
|
312 |
+
function add_woocommerce_admin_bar( $wp_admin_bar ) {
|
313 |
+
$nodes = array(
|
314 |
+
'wcj-wc' => array(
|
315 |
+
'title' => '<span class="ab-icon"></span>' . __( 'WooCommerce', 'woocommerce' ),
|
316 |
+
'href' => admin_url( 'admin.php?page=wc-settings' ),
|
317 |
+
'meta' => array(
|
318 |
+
'title' => __( 'WooCommerce settings', 'woocommerce' ),
|
319 |
+
),
|
320 |
+
'nodes' => array(
|
321 |
+
'orders' => array(
|
322 |
+
'title' => __( 'Orders', 'woocommerce' ),
|
323 |
+
'href' => admin_url( 'edit.php?post_type=shop_order' ),
|
324 |
+
'nodes' => array(
|
325 |
+
'orders' => array(
|
326 |
+
'title' => __( 'Orders', 'woocommerce' ),
|
327 |
+
'href' => admin_url( 'edit.php?post_type=shop_order' ),
|
328 |
+
),
|
329 |
+
'add-order' => array(
|
330 |
+
'title' => __( 'Add order', 'woocommerce' ),
|
331 |
+
'href' => admin_url( 'post-new.php?post_type=shop_order' ),
|
332 |
+
),
|
333 |
+
'customers' => array(
|
334 |
+
'title' => __( 'Customers', 'woocommerce' ),
|
335 |
+
'href' => admin_url( 'users.php?role=customer' ),
|
336 |
+
),
|
337 |
+
),
|
338 |
+
),
|
339 |
+
'reports' => array(
|
340 |
+
'title' => __( 'Reports', 'woocommerce' ),
|
341 |
+
'href' => admin_url( 'admin.php?page=wc-reports' ),
|
342 |
+
'nodes' => array(
|
343 |
+
'orders' => array(
|
344 |
+
'title' => __( 'Orders', 'woocommerce' ),
|
345 |
+
'href' => admin_url( 'admin.php?page=wc-reports&tab=orders' ),
|
346 |
+
'nodes' => $this->get_nodes_orders_reports(),
|
347 |
+
),
|
348 |
+
'customers' => array(
|
349 |
+
'title' => __( 'Customers', 'woocommerce' ),
|
350 |
+
'href' => admin_url( 'admin.php?page=wc-reports&tab=customers' ),
|
351 |
+
'nodes' => array(
|
352 |
+
'customers' => array(
|
353 |
+
'title' => __( 'Customers vs. guests', 'woocommerce' ),
|
354 |
+
'href' => admin_url( 'admin.php?page=wc-reports&tab=customers&report=customers' ),
|
355 |
+
),
|
356 |
+
'customer-list' => array(
|
357 |
+
'title' => __( 'Customer list', 'woocommerce' ),
|
358 |
+
'href' => admin_url( 'admin.php?page=wc-reports&tab=customers&report=customer_list' ),
|
359 |
+
),
|
360 |
+
),
|
361 |
+
),
|
362 |
+
'stock' => array(
|
363 |
+
'title' => __( 'Stock', 'woocommerce' ),
|
364 |
+
'href' => admin_url( 'admin.php?page=wc-reports&tab=stock' ),
|
365 |
+
'nodes' => array(
|
366 |
+
'low-in-stock' => array(
|
367 |
+
'title' => __( 'Low in stock', 'woocommerce' ),
|
368 |
+
'href' => admin_url( 'admin.php?page=wc-reports&tab=stock&report=low_in_stock' ),
|
369 |
+
),
|
370 |
+
'out-of-stock' => array(
|
371 |
+
'title' => __( 'Out of stock', 'woocommerce' ),
|
372 |
+
'href' => admin_url( 'admin.php?page=wc-reports&tab=stock&report=out_of_stock' ),
|
373 |
+
),
|
374 |
+
'most-stocked' => array(
|
375 |
+
'title' => __( 'Most Stocked', 'woocommerce' ),
|
376 |
+
'href' => admin_url( 'admin.php?page=wc-reports&tab=stock&report=most_stocked' ),
|
377 |
+
),
|
378 |
+
),
|
379 |
+
),
|
380 |
+
'taxes' => array(
|
381 |
+
'title' => __( 'Taxes', 'woocommerce' ),
|
382 |
+
'href' => admin_url( 'admin.php?page=wc-reports&tab=taxes' ),
|
383 |
+
'nodes' => array(
|
384 |
+
'taxes-by-code' => array(
|
385 |
+
'title' => __( 'Taxes by code', 'woocommerce' ),
|
386 |
+
'href' => admin_url( 'admin.php?page=wc-reports&tab=taxes&report=taxes_by_code' ),
|
387 |
+
),
|
388 |
+
'taxes-by-date' => array(
|
389 |
+
'title' => __( 'Taxes by date', 'woocommerce' ),
|
390 |
+
'href' => admin_url( 'admin.php?page=wc-reports&tab=taxes&report=taxes_by_date' ),
|
391 |
+
),
|
392 |
+
),
|
393 |
+
),
|
394 |
+
),
|
395 |
+
),
|
396 |
+
'products' => array(
|
397 |
+
'title' => __( 'Products', 'woocommerce' ),
|
398 |
+
'href' => admin_url( 'edit.php?post_type=product' ),
|
399 |
+
'nodes' => array(
|
400 |
+
'products' => array(
|
401 |
+
'title' => __( 'Products', 'woocommerce' ),
|
402 |
+
'href' => admin_url( 'edit.php?post_type=product' ),
|
403 |
+
),
|
404 |
+
'add-product' => array(
|
405 |
+
'title' => __( 'Add product', 'woocommerce' ),
|
406 |
+
'href' => admin_url( 'post-new.php?post_type=product' ),
|
407 |
+
),
|
408 |
+
'categories' => array(
|
409 |
+
'title' => __( 'Categories', 'woocommerce' ),
|
410 |
+
'href' => admin_url( 'edit-tags.php?taxonomy=product_cat&post_type=product' ),
|
411 |
+
),
|
412 |
+
'tags' => array(
|
413 |
+
'title' => __( 'Tags', 'woocommerce' ),
|
414 |
+
'href' => admin_url( 'edit-tags.php?taxonomy=product_tag&post_type=product' ),
|
415 |
+
),
|
416 |
+
'attributes' => array(
|
417 |
+
'title' => __( 'Attributes', 'woocommerce' ),
|
418 |
+
'href' => admin_url( 'edit.php?post_type=product&page=product_attributes' ),
|
419 |
+
),
|
420 |
+
),
|
421 |
+
),
|
422 |
+
'coupons' => array(
|
423 |
+
'title' => __( 'Coupons', 'woocommerce' ),
|
424 |
+
'href' => admin_url( 'edit.php?post_type=shop_coupon' ),
|
425 |
+
'nodes' => array(
|
426 |
+
'coupons' => array(
|
427 |
+
'title' => __( 'Coupons', 'woocommerce' ),
|
428 |
+
'href' => admin_url( 'edit.php?post_type=shop_coupon' ),
|
429 |
+
),
|
430 |
+
'add-coupon' => array(
|
431 |
+
'title' => __( 'Add coupon', 'woocommerce' ),
|
432 |
+
'href' => admin_url( 'post-new.php?post_type=shop_coupon' ),
|
433 |
+
),
|
434 |
+
),
|
435 |
+
),
|
436 |
+
'settings' => array(
|
437 |
+
'title' => __( 'Settings', 'woocommerce' ),
|
438 |
+
'href' => admin_url( 'admin.php?page=wc-settings' ),
|
439 |
+
'nodes' => array(
|
440 |
+
'general' => array(
|
441 |
+
'title' => __( 'General', 'woocommerce' ),
|
442 |
+
'href' => admin_url( 'admin.php?page=wc-settings&tab=general' ),
|
443 |
+
),
|
444 |
+
'products' => array(
|
445 |
+
'title' => __( 'Products', 'woocommerce' ),
|
446 |
+
'href' => admin_url( 'admin.php?page=wc-settings&tab=products' ),
|
447 |
+
'nodes' => array(
|
448 |
+
'general' => array(
|
449 |
+
'title' => __( 'General', 'woocommerce' ),
|
450 |
+
'href' => admin_url( 'admin.php?page=wc-settings&tab=products§ion' ),
|
451 |
+
),
|
452 |
+
'display' => array(
|
453 |
+
'title' => __( 'Display', 'woocommerce' ),
|
454 |
+
'href' => admin_url( 'admin.php?page=wc-settings&tab=products§ion=display' ),
|
455 |
+
),
|
456 |
+
'inventory' => array(
|
457 |
+
'title' => __( 'Inventory', 'woocommerce' ),
|
458 |
+
'href' => admin_url( 'admin.php?page=wc-settings&tab=products§ion=inventory' ),
|
459 |
+
),
|
460 |
+
'downloadable' => array(
|
461 |
+
'title' => __( 'Downloadable products', 'woocommerce' ),
|
462 |
+
'href' => admin_url( 'admin.php?page=wc-settings&tab=products§ion=downloadable' ),
|
463 |
+
),
|
464 |
+
),
|
465 |
+
),
|
466 |
+
'tax' => array(
|
467 |
+
'title' => __( 'Tax', 'woocommerce' ),
|
468 |
+
'href' => admin_url( 'admin.php?page=wc-settings&tab=tax' ),
|
469 |
+
'nodes' => array(
|
470 |
+
'tax-options' => array(
|
471 |
+
'title' => __( 'Tax options', 'woocommerce' ),
|
472 |
+
'href' => admin_url( 'admin.php?page=wc-settings&tab=tax§ion' ),
|
473 |
+
),
|
474 |
+
'standard-rates' => array(
|
475 |
+
'title' => __( 'Standard rates', 'woocommerce' ),
|
476 |
+
'href' => admin_url( 'admin.php?page=wc-settings&tab=tax§ion=standard' ),
|
477 |
+
),
|
478 |
+
),
|
479 |
+
),
|
480 |
+
'shipping' => array(
|
481 |
+
'title' => __( 'Shipping', 'woocommerce' ),
|
482 |
+
'href' => admin_url( 'admin.php?page=wc-settings&tab=shipping' ),
|
483 |
+
'nodes' => array(
|
484 |
+
'shipping-zones' => array(
|
485 |
+
'title' => __( 'Shipping zones', 'woocommerce' ),
|
486 |
+
'href' => admin_url( 'admin.php?page=wc-settings&tab=shipping§ion' ),
|
487 |
+
),
|
488 |
+
'shipping-options' => array(
|
489 |
+
'title' => __( 'Shipping options', 'woocommerce' ),
|
490 |
+
'href' => admin_url( 'admin.php?page=wc-settings&tab=shipping§ion=options' ),
|
491 |
+
),
|
492 |
+
'shipping-classes' => array(
|
493 |
+
'title' => __( 'Shipping classes', 'woocommerce' ),
|
494 |
+
'href' => admin_url( 'admin.php?page=wc-settings&tab=shipping§ion=classes' ),
|
495 |
+
),
|
496 |
+
),
|
497 |
+
),
|
498 |
+
'checkout' => array(
|
499 |
+
'title' => __( 'Checkout', 'woocommerce' ),
|
500 |
+
'href' => admin_url( 'admin.php?page=wc-settings&tab=checkout' ),
|
501 |
+
'nodes' => array(
|
502 |
+
'checkout-options' => array(
|
503 |
+
'title' => __( 'Checkout options', 'woocommerce' ),
|
504 |
+
'href' => admin_url( 'admin.php?page=wc-settings&tab=checkout§ion' ),
|
505 |
+
),
|
506 |
+
'bacs' => array(
|
507 |
+
'title' => __( 'BACS', 'woocommerce' ),
|
508 |
+
'href' => admin_url( 'admin.php?page=wc-settings&tab=checkout§ion=bacs' ),
|
509 |
+
),
|
510 |
+
'cheque' => array(
|
511 |
+
'title' => __( 'Check payments', 'woocommerce' ),
|
512 |
+
'href' => admin_url( 'admin.php?page=wc-settings&tab=checkout§ion=cheque' ),
|
513 |
+
),
|
514 |
+
'cod' => array(
|
515 |
+
'title' => __( 'Cash on delivery', 'woocommerce' ),
|
516 |
+
'href' => admin_url( 'admin.php?page=wc-settings&tab=checkout§ion=cod' ),
|
517 |
+
),
|
518 |
+
'paypal' => array(
|
519 |
+
'title' => __( 'PayPal', 'woocommerce' ),
|
520 |
+
'href' => admin_url( 'admin.php?page=wc-settings&tab=checkout§ion=paypal' ),
|
521 |
+
),
|
522 |
+
),
|
523 |
+
),
|
524 |
+
'account' => array(
|
525 |
+
'title' => __( 'Account', 'woocommerce' ),
|
526 |
+
'href' => admin_url( 'admin.php?page=wc-settings&tab=account' ),
|
527 |
+
),
|
528 |
+
'email' => array(
|
529 |
+
'title' => __( 'Emails', 'woocommerce' ),
|
530 |
+
'href' => admin_url( 'admin.php?page=wc-settings&tab=email' ),
|
531 |
+
),
|
532 |
+
'api' => array(
|
533 |
+
'title' => __( 'API', 'woocommerce' ),
|
534 |
+
'href' => admin_url( 'admin.php?page=wc-settings&tab=api' ),
|
535 |
+
'nodes' => array(
|
536 |
+
'settings' => array(
|
537 |
+
'title' => __( 'Settings', 'woocommerce' ),
|
538 |
+
'href' => admin_url( 'admin.php?page=wc-settings&tab=api§ion' ),
|
539 |
+
),
|
540 |
+
'keys' => array(
|
541 |
+
'title' => __( 'Keys/Apps', 'woocommerce' ),
|
542 |
+
'href' => admin_url( 'admin.php?page=wc-settings&tab=api§ion=keys' ),
|
543 |
+
),
|
544 |
+
'webhooks' => array(
|
545 |
+
'title' => __( 'Webhooks', 'woocommerce' ),
|
546 |
+
'href' => admin_url( 'admin.php?page=wc-settings&tab=api§ion=webhooks' ),
|
547 |
+
),
|
548 |
+
),
|
549 |
+
),
|
550 |
+
),
|
551 |
+
),
|
552 |
+
'system-status' => array(
|
553 |
+
'title' => __( 'System status', 'woocommerce' ),
|
554 |
+
'href' => admin_url( 'admin.php?page=wc-status' ),
|
555 |
+
'nodes' => array(
|
556 |
+
'system-status' => array(
|
557 |
+
'title' => __( 'System status', 'woocommerce' ),
|
558 |
+
'href' => admin_url( 'admin.php?page=wc-status&tab=status' ),
|
559 |
+
),
|
560 |
+
'tools' => array(
|
561 |
+
'title' => __( 'Tools', 'woocommerce' ),
|
562 |
+
'href' => admin_url( 'admin.php?page=wc-status&tab=tools' ),
|
563 |
+
),
|
564 |
+
'logs' => array(
|
565 |
+
'title' => __( 'Logs', 'woocommerce' ),
|
566 |
+
'href' => admin_url( 'admin.php?page=wc-status&tab=logs' ),
|
567 |
+
),
|
568 |
+
),
|
569 |
+
),
|
570 |
+
'extensions' => array(
|
571 |
+
'title' => __( 'Extensions', 'woocommerce' ),
|
572 |
+
'href' => admin_url( 'admin.php?page=wc-addons' ),
|
573 |
+
),
|
574 |
+
),
|
575 |
+
),
|
576 |
+
);
|
577 |
+
$this->add_woocommerce_admin_bar_nodes( $wp_admin_bar, $nodes, false );
|
578 |
+
}
|
579 |
+
|
580 |
+
}
|
581 |
+
|
582 |
+
endif;
|
583 |
+
|
584 |
+
return new WCJ_Admin_Bar();
|
includes/class-wcj-admin-tools.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Admin Tools
|
4 |
*
|
5 |
-
* @version 2.
|
6 |
* @author Algoritmika Ltd.
|
7 |
*/
|
8 |
|
@@ -129,14 +129,15 @@ class WCJ_Admin_Tools extends WCJ_Module {
|
|
129 |
/**
|
130 |
* create_admin_tools_tool.
|
131 |
*
|
132 |
-
* @version 2.
|
133 |
*/
|
134 |
function create_admin_tools_tool() {
|
135 |
-
//
|
136 |
-
$the_notice = '';
|
137 |
if ( isset( $_GET['wcj_delete_log'] ) && wcj_is_user_role( 'administrator' ) ) {
|
138 |
update_option( 'wcj_log', '' );
|
139 |
-
|
|
|
|
|
140 |
}
|
141 |
// Header
|
142 |
$the_tools = '';
|
@@ -144,12 +145,12 @@ class WCJ_Admin_Tools extends WCJ_Module {
|
|
144 |
$the_tools .= '<p><a href="' . add_query_arg( 'wcj_delete_log', '1' ) . '">' . __( 'Delete Log', 'woocommerce-jetpack' ) . '</a></p>';
|
145 |
// Log
|
146 |
$the_log = '';
|
|
|
147 |
$the_log .= '<pre>' . get_option( 'wcj_log', '' ) . '</pre>';
|
148 |
// Final output
|
149 |
$html = '';
|
150 |
$html .= '<div class="wrap">';
|
151 |
$html .= '<p>' . $the_tools . '</p>';
|
152 |
-
$html .= '<p>' . $the_notice . '</p>';
|
153 |
$html .= '<p>' . $the_log . '</p>';
|
154 |
$html .= '</div>';
|
155 |
echo $html;
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Admin Tools
|
4 |
*
|
5 |
+
* @version 2.9.0
|
6 |
* @author Algoritmika Ltd.
|
7 |
*/
|
8 |
|
129 |
/**
|
130 |
* create_admin_tools_tool.
|
131 |
*
|
132 |
+
* @version 2.9.0
|
133 |
*/
|
134 |
function create_admin_tools_tool() {
|
135 |
+
// Delete log
|
|
|
136 |
if ( isset( $_GET['wcj_delete_log'] ) && wcj_is_user_role( 'administrator' ) ) {
|
137 |
update_option( 'wcj_log', '' );
|
138 |
+
if ( wp_safe_redirect( remove_query_arg( 'wcj_delete_log' ) ) ) {
|
139 |
+
exit;
|
140 |
+
}
|
141 |
}
|
142 |
// Header
|
143 |
$the_tools = '';
|
145 |
$the_tools .= '<p><a href="' . add_query_arg( 'wcj_delete_log', '1' ) . '">' . __( 'Delete Log', 'woocommerce-jetpack' ) . '</a></p>';
|
146 |
// Log
|
147 |
$the_log = '';
|
148 |
+
$the_log .= '<p style="font-style:italic;color:gray;">' . sprintf( __( 'Now: %s', 'woocommerce-jetpack' ), date( 'Y-m-d H:i:s' ) ) . '</p>';
|
149 |
$the_log .= '<pre>' . get_option( 'wcj_log', '' ) . '</pre>';
|
150 |
// Final output
|
151 |
$html = '';
|
152 |
$html .= '<div class="wrap">';
|
153 |
$html .= '<p>' . $the_tools . '</p>';
|
|
|
154 |
$html .= '<p>' . $the_log . '</p>';
|
155 |
$html .= '</div>';
|
156 |
echo $html;
|
includes/class-wcj-breadcrumbs.php
ADDED
@@ -0,0 +1,90 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Booster for WooCommerce - Module - Breadcrumbs
|
4 |
+
*
|
5 |
+
* @version 2.9.0
|
6 |
+
* @since 2.9.0
|
7 |
+
* @author Algoritmika Ltd.
|
8 |
+
*/
|
9 |
+
|
10 |
+
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
11 |
+
|
12 |
+
if ( ! class_exists( 'WCJ_Breadcrumbs' ) ) :
|
13 |
+
|
14 |
+
class WCJ_Breadcrumbs extends WCJ_Module {
|
15 |
+
|
16 |
+
/**
|
17 |
+
* Constructor.
|
18 |
+
*
|
19 |
+
* @version 2.9.0
|
20 |
+
* @since 2.9.0
|
21 |
+
* @todo recheck filter: `woocommerce_get_breadcrumb`
|
22 |
+
* @todo recheck filter: `woocommerce_structured_data_breadcrumblist`; action: `woocommerce_breadcrumb`;
|
23 |
+
* @todo recheck filter: `woocommerce_breadcrumb_defaults`; action: `woocommerce_breadcrumb`
|
24 |
+
*/
|
25 |
+
function __construct() {
|
26 |
+
|
27 |
+
$this->id = 'breadcrumbs';
|
28 |
+
$this->short_desc = __( 'Breadcrumbs', 'woocommerce-jetpack' );
|
29 |
+
$this->desc = __( 'Customize WooCommerce breadcrumbs.', 'woocommerce-jetpack' );
|
30 |
+
$this->link_slug = 'woocommerce-breadcrumbs';
|
31 |
+
parent::__construct();
|
32 |
+
|
33 |
+
if ( $this->is_enabled() ) {
|
34 |
+
// Hide Breadcrumbs
|
35 |
+
if ( 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_breadcrumbs_hide', 'no' ) ) ) {
|
36 |
+
add_filter( 'woocommerce_get_breadcrumb', '__return_false', PHP_INT_MAX );
|
37 |
+
add_action( 'wp_head', array( $this, 'hide_breadcrumbs_with_css' ) );
|
38 |
+
add_action( 'wp_loaded', array( $this, 'hide_breadcrumbs_by_removing_action' ), PHP_INT_MAX );
|
39 |
+
}
|
40 |
+
// Home URL
|
41 |
+
if ( 'yes' === get_option( 'wcj_breadcrumbs_change_home_url_enabled', 'no' ) ) {
|
42 |
+
add_filter( 'woocommerce_breadcrumb_home_url', array( $this, 'change_home_url' ), PHP_INT_MAX );
|
43 |
+
}
|
44 |
+
}
|
45 |
+
}
|
46 |
+
|
47 |
+
/**
|
48 |
+
* change_home_url.
|
49 |
+
*
|
50 |
+
* @version 2.9.0
|
51 |
+
* @since 2.9.0
|
52 |
+
*/
|
53 |
+
function change_home_url( $_url ) {
|
54 |
+
return get_option( 'wcj_breadcrumbs_home_url', home_url() );
|
55 |
+
}
|
56 |
+
|
57 |
+
/**
|
58 |
+
* hide_breadcrumbs_with_css.
|
59 |
+
*
|
60 |
+
* @version 2.9.0
|
61 |
+
* @since 2.9.0
|
62 |
+
* @todo (maybe) add more identifiers
|
63 |
+
*/
|
64 |
+
function hide_breadcrumbs_with_css() {
|
65 |
+
$identifiers = array(
|
66 |
+
'.woocommerce-breadcrumb',
|
67 |
+
'.woo-breadcrumbs',
|
68 |
+
'.breadcrumbs',
|
69 |
+
'.breadcrumb',
|
70 |
+
'#breadcrumbs',
|
71 |
+
);
|
72 |
+
echo '<style>' . implode( ', ', $identifiers ) . ' { display: none !important; }' . '</style>';
|
73 |
+
}
|
74 |
+
|
75 |
+
/**
|
76 |
+
* hide_breadcrumbs_by_removing_action.
|
77 |
+
*
|
78 |
+
* @version 2.9.0
|
79 |
+
* @since 2.9.0
|
80 |
+
* @see `add_action( 'woocommerce_before_main_content', 'woocommerce_breadcrumb', 20, 0 );`
|
81 |
+
*/
|
82 |
+
function hide_breadcrumbs_by_removing_action() {
|
83 |
+
remove_action( 'woocommerce_before_main_content', 'woocommerce_breadcrumb', 20 );
|
84 |
+
}
|
85 |
+
|
86 |
+
}
|
87 |
+
|
88 |
+
endif;
|
89 |
+
|
90 |
+
return new WCJ_Breadcrumbs();
|
includes/class-wcj-checkout-custom-fields.php
CHANGED
@@ -171,7 +171,7 @@ class WCJ_Checkout_Custom_Fields extends WCJ_Module {
|
|
171 |
/**
|
172 |
* add_custom_shipping_fields_to_formatted_address.
|
173 |
*/
|
174 |
-
/*
|
175 |
for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_checkout_custom_fields_total_number', 1 ) ); $i++ ) {
|
176 |
//if ( 'yes' === get_option( 'wcj_checkout_custom_field_enabled_' . $i ) ) {
|
177 |
$the_section = get_option( 'wcj_checkout_custom_field_section_' . $i );
|
171 |
/**
|
172 |
* add_custom_shipping_fields_to_formatted_address.
|
173 |
*/
|
174 |
+
/* function add_custom_shipping_fields_to_formatted_address( $fields, $order ) {
|
175 |
for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_checkout_custom_fields_total_number', 1 ) ); $i++ ) {
|
176 |
//if ( 'yes' === get_option( 'wcj_checkout_custom_field_enabled_' . $i ) ) {
|
177 |
$the_section = get_option( 'wcj_checkout_custom_field_section_' . $i );
|
includes/class-wcj-checkout-customization.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Checkout Customization
|
4 |
*
|
5 |
-
* @version 2.
|
6 |
* @since 2.7.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
@@ -16,14 +16,18 @@ class WCJ_Checkout_Customization extends WCJ_Module {
|
|
16 |
/**
|
17 |
* Constructor.
|
18 |
*
|
19 |
-
* @version 2.
|
20 |
* @since 2.7.0
|
|
|
|
|
|
|
|
|
21 |
*/
|
22 |
function __construct() {
|
23 |
|
24 |
$this->id = 'checkout_customization';
|
25 |
$this->short_desc = __( 'Checkout Customization', 'woocommerce-jetpack' );
|
26 |
-
$this->desc = __( 'Customize WooCommerce checkout - hide "Order Again" button
|
27 |
$this->link_slug = 'woocommerce-checkout-customization';
|
28 |
parent::__construct();
|
29 |
|
@@ -40,7 +44,75 @@ class WCJ_Checkout_Customization extends WCJ_Module {
|
|
40 |
if ( 'yes' === get_option( 'wcj_checkout_hide_order_again', 'no' ) ) {
|
41 |
add_action( 'init', array( $this, 'checkout_hide_order_again' ), PHP_INT_MAX );
|
42 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
43 |
}
|
|
|
44 |
}
|
45 |
|
46 |
/**
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Checkout Customization
|
4 |
*
|
5 |
+
* @version 2.9.0
|
6 |
* @since 2.7.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
16 |
/**
|
17 |
* Constructor.
|
18 |
*
|
19 |
+
* @version 2.9.0
|
20 |
* @since 2.7.0
|
21 |
+
* @todo "Disable Fields on Checkout for Logged Users" - billing and shipping country ('select' type)
|
22 |
+
* @todo "Disable Fields on Checkout for Logged Users" - other core fields (e.g. account fields)
|
23 |
+
* @todo "Disable Fields on Checkout for Logged Users" - custom fields
|
24 |
+
* @todo "Disable Fields on Checkout for Logged Users" - add single option (probably checkbox) to disable all fields
|
25 |
*/
|
26 |
function __construct() {
|
27 |
|
28 |
$this->id = 'checkout_customization';
|
29 |
$this->short_desc = __( 'Checkout Customization', 'woocommerce-jetpack' );
|
30 |
+
$this->desc = __( 'Customize WooCommerce checkout - hide "Order Again" button; disable selected fields on checkout for logged users and more.', 'woocommerce-jetpack' );
|
31 |
$this->link_slug = 'woocommerce-checkout-customization';
|
32 |
parent::__construct();
|
33 |
|
44 |
if ( 'yes' === get_option( 'wcj_checkout_hide_order_again', 'no' ) ) {
|
45 |
add_action( 'init', array( $this, 'checkout_hide_order_again' ), PHP_INT_MAX );
|
46 |
}
|
47 |
+
// Disable Fields on Checkout for Logged Users
|
48 |
+
add_filter( 'woocommerce_checkout_fields' , array( $this, 'maybe_disable_fields' ), PHP_INT_MAX );
|
49 |
+
$checkout_fields_types = array(
|
50 |
+
'country',
|
51 |
+
'state',
|
52 |
+
'textarea',
|
53 |
+
'checkbox',
|
54 |
+
'password',
|
55 |
+
'text',
|
56 |
+
'email',
|
57 |
+
'tel',
|
58 |
+
'number',
|
59 |
+
'select',
|
60 |
+
'radio',
|
61 |
+
);
|
62 |
+
foreach ( $checkout_fields_types as $checkout_fields_type ) {
|
63 |
+
add_filter( 'woocommerce_form_field_' . $checkout_fields_type, array( $this, 'maybe_add_description' ), PHP_INT_MAX, 4 );
|
64 |
+
}
|
65 |
+
}
|
66 |
+
}
|
67 |
+
|
68 |
+
/**
|
69 |
+
* maybe_add_description.
|
70 |
+
*
|
71 |
+
* @version 2.9.0
|
72 |
+
* @since 2.9.0
|
73 |
+
*/
|
74 |
+
function maybe_add_description( $field, $key, $args, $value ) {
|
75 |
+
if ( is_user_logged_in() ) {
|
76 |
+
$fields_to_disable = get_option( 'wcj_checkout_customization_disable_fields_for_logged', '' );
|
77 |
+
if ( ! empty( $fields_to_disable ) ) {
|
78 |
+
if ( in_array( $key, $fields_to_disable ) ) {
|
79 |
+
$desc = get_option( 'wcj_checkout_customization_disable_fields_for_logged_message',
|
80 |
+
'<em>' . __( 'This field can not be changed', 'woocommerce-jetpack' ) . '</em>' );
|
81 |
+
$field = str_replace( '__WCJ_TEMPORARY_VALUE_TO_REPLACE__', $desc, $field );
|
82 |
+
}
|
83 |
+
}
|
84 |
+
}
|
85 |
+
return $field;
|
86 |
+
}
|
87 |
+
|
88 |
+
/**
|
89 |
+
* maybe_disable_fields.
|
90 |
+
*
|
91 |
+
* @version 2.9.0
|
92 |
+
* @since 2.9.0
|
93 |
+
* @see woocommerce_form_field
|
94 |
+
*/
|
95 |
+
function maybe_disable_fields( $checkout_fields ) {
|
96 |
+
if ( is_user_logged_in() ) {
|
97 |
+
$fields_to_disable = get_option( 'wcj_checkout_customization_disable_fields_for_logged', '' );
|
98 |
+
if ( ! empty( $fields_to_disable ) ) {
|
99 |
+
foreach ( $fields_to_disable as $field_to_disable ) {
|
100 |
+
$section = explode( '_', $field_to_disable );
|
101 |
+
$section = $section[0];
|
102 |
+
if ( isset( $checkout_fields[ $section ][ $field_to_disable ] ) ) {
|
103 |
+
if ( ! isset( $checkout_fields[ $section ][ $field_to_disable ]['custom_attributes'] ) ) {
|
104 |
+
$checkout_fields[ $section ][ $field_to_disable ]['custom_attributes'] = array();
|
105 |
+
}
|
106 |
+
$checkout_fields[ $section ][ $field_to_disable ]['custom_attributes'] = array_merge(
|
107 |
+
$checkout_fields[ $section ][ $field_to_disable ]['custom_attributes'],
|
108 |
+
array( 'readonly' => 'readonly' )
|
109 |
+
);
|
110 |
+
$checkout_fields[ $section ][ $field_to_disable ]['description'] = '__WCJ_TEMPORARY_VALUE_TO_REPLACE__';
|
111 |
+
}
|
112 |
+
}
|
113 |
+
}
|
114 |
}
|
115 |
+
return $checkout_fields;
|
116 |
}
|
117 |
|
118 |
/**
|
includes/class-wcj-currency-exchange-rates.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Currency Exchange Rates
|
4 |
*
|
5 |
-
* @version 2.
|
6 |
* @since 2.3.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
@@ -78,6 +78,94 @@ class WCJ_Currency_Exchange_Rates extends WCJ_Module {
|
|
78 |
return $settings;
|
79 |
}
|
80 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
81 |
}
|
82 |
|
83 |
endif;
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Currency Exchange Rates
|
4 |
*
|
5 |
+
* @version 2.9.0
|
6 |
* @since 2.3.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
78 |
return $settings;
|
79 |
}
|
80 |
|
81 |
+
/**
|
82 |
+
* get_all_currencies_exchange_rates_currencies.
|
83 |
+
*
|
84 |
+
* @version 2.9.0
|
85 |
+
* @since 2.9.0
|
86 |
+
*/
|
87 |
+
function get_all_currencies_exchange_rates_currencies() {
|
88 |
+
$currencies = array();
|
89 |
+
// Additional currencies (via filter)
|
90 |
+
$additional_currencies = apply_filters( 'wcj_currency_exchange_rates_additional_currencies', array() );
|
91 |
+
foreach ( $additional_currencies as $additional_currency ) {
|
92 |
+
$currencies[] = $additional_currency;
|
93 |
+
}
|
94 |
+
// Additional currencies (via custom currencies section)
|
95 |
+
$total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_currency_exchange_custom_currencies_total_number', 1 ) );
|
96 |
+
for ( $i = 1; $i <= $total_number; $i++ ) {
|
97 |
+
if ( 'disabled' != ( $additional_currency = get_option( 'wcj_currency_exchange_custom_currencies_' . $i, 'disabled' ) ) ) {
|
98 |
+
$currencies[] = $additional_currency;
|
99 |
+
}
|
100 |
+
}
|
101 |
+
if ( wcj_is_module_enabled( 'price_by_country' ) ) {
|
102 |
+
// Currency Pairs - Price by Country
|
103 |
+
if ( 'manual' != apply_filters( 'booster_get_option', 'manual', get_option( 'wcj_price_by_country_auto_exchange_rates', 'manual' ) ) ) {
|
104 |
+
for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_price_by_country_total_groups_number', 1 ) ); $i++ ) {
|
105 |
+
$currency_to = get_option( 'wcj_price_by_country_exchange_rate_currency_group_' . $i );
|
106 |
+
$currencies[] = $currency_to;
|
107 |
+
}
|
108 |
+
}
|
109 |
+
}
|
110 |
+
if ( wcj_is_module_enabled( 'multicurrency' ) ) {
|
111 |
+
// Currency Pairs - Multicurrency
|
112 |
+
if ( 'manual' != apply_filters( 'booster_get_option', 'manual', get_option( 'wcj_multicurrency_exchange_rate_update_auto', 'manual' ) ) ) {
|
113 |
+
for ( $i = 1; $i <= apply_filters( 'booster_get_option', 2, get_option( 'wcj_multicurrency_total_number', 2 ) ); $i++ ) {
|
114 |
+
$currency_to = get_option( 'wcj_multicurrency_currency_' . $i );
|
115 |
+
$currencies[] = $currency_to;
|
116 |
+
}
|
117 |
+
}
|
118 |
+
}
|
119 |
+
if ( wcj_is_module_enabled( 'multicurrency_base_price' ) ) {
|
120 |
+
// Currency Pairs - Multicurrency Product Base Price
|
121 |
+
if ( 'manual' != apply_filters( 'booster_get_option', 'manual', get_option( 'wcj_multicurrency_base_price_exchange_rate_update', 'manual' ) ) ) {
|
122 |
+
for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_multicurrency_base_price_total_number', 1 ) ); $i++ ) {
|
123 |
+
$currency_to = get_option( 'wcj_multicurrency_base_price_currency_' . $i );
|
124 |
+
$currencies[] = $currency_to;
|
125 |
+
}
|
126 |
+
}
|
127 |
+
}
|
128 |
+
if ( wcj_is_module_enabled( 'currency_per_product' ) ) {
|
129 |
+
// Currency Pairs - Currency per Product
|
130 |
+
if ( 'manual' != apply_filters( 'booster_get_option', 'manual', get_option( 'wcj_currency_per_product_exchange_rate_update', 'manual' ) ) ) {
|
131 |
+
for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_currency_per_product_total_number', 1 ) ); $i++ ) {
|
132 |
+
$currency_to = get_option( 'wcj_currency_per_product_currency_' . $i );
|
133 |
+
$currencies[] = $currency_to;
|
134 |
+
}
|
135 |
+
}
|
136 |
+
}
|
137 |
+
if ( wcj_is_module_enabled( 'payment_gateways_currency' ) ) {
|
138 |
+
if ( 'manual' != apply_filters( 'booster_get_option', 'manual', get_option( 'wcj_gateways_currency_exchange_rate_update_auto', 'manual' ) ) ) {
|
139 |
+
// Currency Pairs - Gateway Currency
|
140 |
+
global $woocommerce;
|
141 |
+
$available_gateways = $woocommerce->payment_gateways->payment_gateways();
|
142 |
+
foreach ( $available_gateways as $key => $gateway ) {
|
143 |
+
$currency_to = get_option( 'wcj_gateways_currency_' . $key );
|
144 |
+
if ( 'no_changes' != $currency_to ) {
|
145 |
+
$currencies[] = $currency_to;
|
146 |
+
}
|
147 |
+
}
|
148 |
+
}
|
149 |
+
}
|
150 |
+
return $currencies;
|
151 |
+
}
|
152 |
+
|
153 |
+
/**
|
154 |
+
* get_all_currencies_exchange_rates_settings.
|
155 |
+
*
|
156 |
+
* @version 2.9.0
|
157 |
+
* @since 2.9.0
|
158 |
+
*/
|
159 |
+
function get_all_currencies_exchange_rates_settings() {
|
160 |
+
$settings = array();
|
161 |
+
$currency_from = get_option( 'woocommerce_currency' );
|
162 |
+
$currencies = $this->get_all_currencies_exchange_rates_currencies();
|
163 |
+
foreach ( $currencies as $currency ) {
|
164 |
+
$settings = $this->add_currency_pair_setting( $currency_from, $currency, $settings );
|
165 |
+
}
|
166 |
+
return $settings;
|
167 |
+
}
|
168 |
+
|
169 |
}
|
170 |
|
171 |
endif;
|
includes/class-wcj-currency-per-product.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Currency per Product
|
4 |
*
|
5 |
-
* @version 2.
|
6 |
* @since 2.5.2
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
@@ -106,10 +106,85 @@ class WCJ_Currency_Per_Product extends WCJ_Module {
|
|
106 |
return $package_rates;
|
107 |
}
|
108 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
109 |
/**
|
110 |
* validate_on_add_to_cart.
|
111 |
*
|
112 |
-
* @version 2.
|
113 |
* @since 2.7.0
|
114 |
*/
|
115 |
function validate_on_add_to_cart( $passed, $product_id ) {
|
@@ -124,7 +199,7 @@ class WCJ_Currency_Per_Product extends WCJ_Module {
|
|
124 |
}
|
125 |
} elseif ( 'leave_same_currency' === $cart_checkout_behaviour ) {
|
126 |
$shop_currency = get_option( 'woocommerce_currency' );
|
127 |
-
$product_currency =
|
128 |
if ( '' == $product_currency ) {
|
129 |
$product_currency = $shop_currency;
|
130 |
}
|
@@ -144,7 +219,7 @@ class WCJ_Currency_Per_Product extends WCJ_Module {
|
|
144 |
/**
|
145 |
* grouped_price_html.
|
146 |
*
|
147 |
-
* @version 2.
|
148 |
* @since 2.5.2
|
149 |
*/
|
150 |
function grouped_price_html( $price_html, $_product ) {
|
@@ -166,8 +241,8 @@ class WCJ_Currency_Per_Product extends WCJ_Module {
|
|
166 |
end( $child_prices );
|
167 |
$max_price = current( $child_prices );
|
168 |
$max_price_id = key( $child_prices );
|
169 |
-
$min_currency_per_product_currency =
|
170 |
-
$max_currency_per_product_currency =
|
171 |
} else {
|
172 |
$min_price = '';
|
173 |
$max_price = '';
|
@@ -261,11 +336,11 @@ class WCJ_Currency_Per_Product extends WCJ_Module {
|
|
261 |
/**
|
262 |
* add_cart_item_data.
|
263 |
*
|
264 |
-
* @version 2.
|
265 |
* @since 2.5.2
|
266 |
*/
|
267 |
function add_cart_item_data( $cart_item_data, $product_id, $variation_id ) {
|
268 |
-
$currency_per_product_currency =
|
269 |
if ( '' != $currency_per_product_currency ) {
|
270 |
$cart_item_data['wcj_currency_per_product'] = $currency_per_product_currency;
|
271 |
}
|
@@ -288,21 +363,33 @@ class WCJ_Currency_Per_Product extends WCJ_Module {
|
|
288 |
/**
|
289 |
* get_current_product_id_and_currency.
|
290 |
*
|
291 |
-
* @version 2.
|
292 |
* @since 2.7.0
|
293 |
*/
|
294 |
function get_current_product_id_and_currency() {
|
295 |
-
|
296 |
-
|
|
|
|
|
|
|
|
|
|
|
297 |
$the_ID = $_REQUEST['product_id'];
|
298 |
}
|
299 |
-
if (
|
300 |
$posted = array();
|
301 |
parse_str( $_POST['form'], $posted );
|
302 |
$the_ID = isset( $posted['add-to-cart'] ) ? $posted['add-to-cart'] : 0;
|
303 |
}
|
304 |
-
if (
|
305 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
306 |
return ( '' != $currency_per_product_currency ) ? $currency_per_product_currency : false;
|
307 |
}
|
308 |
return false;
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Currency per Product
|
4 |
*
|
5 |
+
* @version 2.9.0
|
6 |
* @since 2.5.2
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
106 |
return $package_rates;
|
107 |
}
|
108 |
|
109 |
+
/**
|
110 |
+
* get_users_as_options.
|
111 |
+
*
|
112 |
+
* @version 2.9.0
|
113 |
+
* @since 2.9.0
|
114 |
+
* @todo (maybe) move to global functions
|
115 |
+
*/
|
116 |
+
function get_users_as_options() {
|
117 |
+
$users = array();
|
118 |
+
foreach ( get_users( 'orderby=display_name' ) as $user ) {
|
119 |
+
$users[ $user->ID ] = $user->display_name . ' ' . '[ID:' . $user->ID . ']';
|
120 |
+
}
|
121 |
+
return $users;
|
122 |
+
}
|
123 |
+
|
124 |
+
/**
|
125 |
+
* get_product_currency.
|
126 |
+
*
|
127 |
+
* @version 2.9.0
|
128 |
+
* @since 2.9.0
|
129 |
+
*/
|
130 |
+
function get_product_currency( $product_id ) {
|
131 |
+
// By users or user roles
|
132 |
+
$do_check_by_users = ( 'yes' === get_option( 'wcj_currency_per_product_by_users_enabled', 'no' ) );
|
133 |
+
$do_check_by_user_roles = ( 'yes' === get_option( 'wcj_currency_per_product_by_user_roles_enabled', 'no' ) );
|
134 |
+
$do_check_by_product_cats = ( 'yes' === get_option( 'wcj_currency_per_product_by_product_cats_enabled', 'no' ) );
|
135 |
+
$do_check_by_product_tags = ( 'yes' === get_option( 'wcj_currency_per_product_by_product_tags_enabled', 'no' ) );
|
136 |
+
if ( $do_check_by_users || $do_check_by_user_roles || $do_check_by_product_cats || $do_check_by_product_tags ) {
|
137 |
+
if ( $do_check_by_users || $do_check_by_user_roles ) {
|
138 |
+
$product_author_id = get_post_field( 'post_author', $product_id );
|
139 |
+
}
|
140 |
+
if ( $do_check_by_product_cats ) {
|
141 |
+
$_product_cats = wcj_get_the_terms( $product_id, 'product_cat' );
|
142 |
+
}
|
143 |
+
if ( $do_check_by_product_tags ) {
|
144 |
+
$_product_tags = wcj_get_the_terms( $product_id, 'product_tag' );
|
145 |
+
}
|
146 |
+
$total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_currency_per_product_total_number', 1 ) );
|
147 |
+
for ( $i = 1; $i <= $total_number; $i++ ) {
|
148 |
+
if ( $do_check_by_users ) {
|
149 |
+
$users = get_option( 'wcj_currency_per_product_users_' . $i, '' );
|
150 |
+
if ( ! empty( $users ) && in_array( $product_author_id, $users ) ) {
|
151 |
+
return get_option( 'wcj_currency_per_product_currency_' . $i );
|
152 |
+
}
|
153 |
+
}
|
154 |
+
if ( $do_check_by_user_roles ) {
|
155 |
+
$user_roles = get_option( 'wcj_currency_per_product_user_roles_' . $i, '' );
|
156 |
+
if ( ! empty( $user_roles ) && wcj_is_user_role( $user_roles, $product_author_id ) ) {
|
157 |
+
return get_option( 'wcj_currency_per_product_currency_' . $i );
|
158 |
+
}
|
159 |
+
}
|
160 |
+
if ( $do_check_by_product_cats ) {
|
161 |
+
$product_cats = get_option( 'wcj_currency_per_product_product_cats_' . $i, '' );
|
162 |
+
if ( ! empty( $_product_cats ) && ! empty( $product_cats ) ) {
|
163 |
+
$_intersect = array_intersect( $_product_cats, $product_cats );
|
164 |
+
if ( ! empty( $_intersect ) ) {
|
165 |
+
return get_option( 'wcj_currency_per_product_currency_' . $i );
|
166 |
+
}
|
167 |
+
}
|
168 |
+
}
|
169 |
+
if ( $do_check_by_product_tags ) {
|
170 |
+
$product_tags = get_option( 'wcj_currency_per_product_product_tags_' . $i, '' );
|
171 |
+
if ( ! empty( $_product_tags ) && ! empty( $product_tags ) ) {
|
172 |
+
$_intersect = array_intersect( $_product_tags, $product_tags );
|
173 |
+
if ( ! empty( $_intersect ) ) {
|
174 |
+
return get_option( 'wcj_currency_per_product_currency_' . $i );
|
175 |
+
}
|
176 |
+
}
|
177 |
+
}
|
178 |
+
}
|
179 |
+
}
|
180 |
+
// By product meta
|
181 |
+
return get_post_meta( $product_id, '_' . 'wcj_currency_per_product_currency', true );
|
182 |
+
}
|
183 |
+
|
184 |
/**
|
185 |
* validate_on_add_to_cart.
|
186 |
*
|
187 |
+
* @version 2.9.0
|
188 |
* @since 2.7.0
|
189 |
*/
|
190 |
function validate_on_add_to_cart( $passed, $product_id ) {
|
199 |
}
|
200 |
} elseif ( 'leave_same_currency' === $cart_checkout_behaviour ) {
|
201 |
$shop_currency = get_option( 'woocommerce_currency' );
|
202 |
+
$product_currency = $this->get_product_currency( $product_id );
|
203 |
if ( '' == $product_currency ) {
|
204 |
$product_currency = $shop_currency;
|
205 |
}
|
219 |
/**
|
220 |
* grouped_price_html.
|
221 |
*
|
222 |
+
* @version 2.9.0
|
223 |
* @since 2.5.2
|
224 |
*/
|
225 |
function grouped_price_html( $price_html, $_product ) {
|
241 |
end( $child_prices );
|
242 |
$max_price = current( $child_prices );
|
243 |
$max_price_id = key( $child_prices );
|
244 |
+
$min_currency_per_product_currency = $this->get_product_currency( $min_price_id );
|
245 |
+
$max_currency_per_product_currency = $this->get_product_currency( $max_price_id );
|
246 |
} else {
|
247 |
$min_price = '';
|
248 |
$max_price = '';
|
336 |
/**
|
337 |
* add_cart_item_data.
|
338 |
*
|
339 |
+
* @version 2.9.0
|
340 |
* @since 2.5.2
|
341 |
*/
|
342 |
function add_cart_item_data( $cart_item_data, $product_id, $variation_id ) {
|
343 |
+
$currency_per_product_currency = $this->get_product_currency( $product_id );
|
344 |
if ( '' != $currency_per_product_currency ) {
|
345 |
$cart_item_data['wcj_currency_per_product'] = $currency_per_product_currency;
|
346 |
}
|
363 |
/**
|
364 |
* get_current_product_id_and_currency.
|
365 |
*
|
366 |
+
* @version 2.9.0
|
367 |
* @since 2.7.0
|
368 |
*/
|
369 |
function get_current_product_id_and_currency() {
|
370 |
+
// Get ID
|
371 |
+
$the_ID = false;
|
372 |
+
global $product;
|
373 |
+
if ( $product ) {
|
374 |
+
$the_ID = wcj_get_product_id_or_variation_parent_id( $product );
|
375 |
+
}
|
376 |
+
if ( ! $the_ID && isset( $_REQUEST['product_id'] ) ) {
|
377 |
$the_ID = $_REQUEST['product_id'];
|
378 |
}
|
379 |
+
if ( ! $the_ID && isset( $_POST['form'] ) ) { // WooCommerce Bookings plugin
|
380 |
$posted = array();
|
381 |
parse_str( $_POST['form'], $posted );
|
382 |
$the_ID = isset( $posted['add-to-cart'] ) ? $posted['add-to-cart'] : 0;
|
383 |
}
|
384 |
+
if ( ! $the_ID && '' != ( $eventon_wc_product_id = get_post_meta( get_the_ID(), 'tx_woocommerce_product_id', true ) ) ) { // EventON plugin
|
385 |
+
$the_ID = $eventon_wc_product_id;
|
386 |
+
}
|
387 |
+
if ( ! $the_ID ) {
|
388 |
+
$the_ID = get_the_ID();
|
389 |
+
}
|
390 |
+
// Get currency
|
391 |
+
if ( $the_ID && 'product' === get_post_type( $the_ID ) ) {
|
392 |
+
$currency_per_product_currency = $this->get_product_currency( $the_ID );
|
393 |
return ( '' != $currency_per_product_currency ) ? $currency_per_product_currency : false;
|
394 |
}
|
395 |
return false;
|
includes/class-wcj-emails-verification.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Email Verification
|
4 |
*
|
5 |
-
* @version 2.
|
6 |
* @since 2.8.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
@@ -50,15 +50,27 @@ class WCJ_Email_Verification extends WCJ_Module {
|
|
50 |
/**
|
51 |
* check_if_user_email_is_verified.
|
52 |
*
|
53 |
-
* @version 2.
|
54 |
* @since 2.8.0
|
55 |
*/
|
56 |
function check_if_user_email_is_verified( $userdata ) {
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
62 |
$userdata = new WP_Error( 'booster_email_verified_error', $error_message );
|
63 |
}
|
64 |
return $userdata;
|
@@ -67,9 +79,10 @@ class WCJ_Email_Verification extends WCJ_Module {
|
|
67 |
/**
|
68 |
* reset_and_mail_activation_link.
|
69 |
*
|
70 |
-
* @version 2.
|
71 |
* @since 2.8.0
|
72 |
* @todo %site_name% etc. in `wcj_emails_verification_email_subject`
|
|
|
73 |
*/
|
74 |
function reset_and_mail_activation_link( $user_id ) {
|
75 |
$user_info = get_userdata( $user_id );
|
@@ -84,7 +97,7 @@ class WCJ_Email_Verification extends WCJ_Module {
|
|
84 |
__( 'Please activate your account', 'woocommerce-jetpack' ),
|
85 |
get_option( 'wcj_emails_verification_email_subject',
|
86 |
__( 'Please activate your account', 'woocommerce-jetpack' ) ) ) );
|
87 |
-
update_user_meta( $user_id, 'wcj_is_activated', 0 );
|
88 |
update_user_meta( $user_id, 'wcj_activation_code', $code );
|
89 |
wc_mail( $user_info->user_email, $email_subject, $email_content );
|
90 |
}
|
@@ -92,14 +105,14 @@ class WCJ_Email_Verification extends WCJ_Module {
|
|
92 |
/**
|
93 |
* process_email_verification.
|
94 |
*
|
95 |
-
* @version 2.
|
96 |
* @since 2.8.0
|
97 |
*/
|
98 |
function process_email_verification(){
|
99 |
if ( isset( $_GET['wcj_verify_email'] ) ) {
|
100 |
$data = unserialize( base64_decode( $_GET['wcj_verify_email'] ) );
|
101 |
if ( get_user_meta( $data['id'], 'wcj_activation_code', true ) == $data['code'] ) {
|
102 |
-
update_user_meta( $data['id'], 'wcj_is_activated', 1 );
|
103 |
wc_add_notice( do_shortcode( get_option( 'wcj_emails_verification_success_message',
|
104 |
__( '<strong>Success:</strong> Your account has been activated!', 'woocommerce-jetpack' ) ) ) );
|
105 |
if ( 'yes' === get_option( 'wcj_emails_verification_redirect_on_success', 'yes' ) ) {
|
@@ -108,8 +121,13 @@ class WCJ_Email_Verification extends WCJ_Module {
|
|
108 |
header( wc_get_page_permalink( 'myaccount' ) );
|
109 |
}
|
110 |
} else {
|
111 |
-
|
112 |
-
|
|
|
|
|
|
|
|
|
|
|
113 |
}
|
114 |
}
|
115 |
if ( isset( $_GET['wcj_activate_account_message'] ) ) {
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Email Verification
|
4 |
*
|
5 |
+
* @version 2.9.0
|
6 |
* @since 2.8.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
50 |
/**
|
51 |
* check_if_user_email_is_verified.
|
52 |
*
|
53 |
+
* @version 2.9.0
|
54 |
* @since 2.8.0
|
55 |
*/
|
56 |
function check_if_user_email_is_verified( $userdata ) {
|
57 |
+
if (
|
58 |
+
( 'yes' === get_option( 'wcj_emails_verification_already_registered_enabled', 'no' ) && ! get_user_meta( $userdata->ID, 'wcj_is_activated', true ) ) ||
|
59 |
+
( 'no' === get_option( 'wcj_emails_verification_already_registered_enabled', 'no' ) && '0' === get_user_meta( $userdata->ID, 'wcj_is_activated', true ) )
|
60 |
+
) {
|
61 |
+
if ( isset( $userdata->roles ) && ! empty( $userdata->roles ) ) {
|
62 |
+
if ( ! is_array( $userdata->roles ) ) {
|
63 |
+
$userdata->roles = array( $userdata->roles );
|
64 |
+
}
|
65 |
+
$_intersect = array_intersect( $userdata->roles, get_option( 'wcj_emails_verification_skip_user_roles', array( 'administrator' ) ) );
|
66 |
+
if ( ! empty( $_intersect ) ) {
|
67 |
+
return $userdata;
|
68 |
+
}
|
69 |
+
}
|
70 |
+
$error_message = do_shortcode( get_option( 'wcj_emails_verification_error_message',
|
71 |
+
__( 'Your account has to be activated before you can login. You can resend email with verification link by clicking <a href="%resend_verification_url%">here</a>.', 'woocommerce-jetpack' )
|
72 |
+
) );
|
73 |
+
$error_message = str_replace( '%resend_verification_url%', add_query_arg( 'wcj_user_id', $userdata->ID, wc_get_page_permalink( 'myaccount' ) ), $error_message );
|
74 |
$userdata = new WP_Error( 'booster_email_verified_error', $error_message );
|
75 |
}
|
76 |
return $userdata;
|
79 |
/**
|
80 |
* reset_and_mail_activation_link.
|
81 |
*
|
82 |
+
* @version 2.9.0
|
83 |
* @since 2.8.0
|
84 |
* @todo %site_name% etc. in `wcj_emails_verification_email_subject`
|
85 |
+
* @todo ticket #5373 - unexpected issue with "Activation failed, please contact our administrator" message
|
86 |
*/
|
87 |
function reset_and_mail_activation_link( $user_id ) {
|
88 |
$user_info = get_userdata( $user_id );
|
97 |
__( 'Please activate your account', 'woocommerce-jetpack' ),
|
98 |
get_option( 'wcj_emails_verification_email_subject',
|
99 |
__( 'Please activate your account', 'woocommerce-jetpack' ) ) ) );
|
100 |
+
update_user_meta( $user_id, 'wcj_is_activated', '0' );
|
101 |
update_user_meta( $user_id, 'wcj_activation_code', $code );
|
102 |
wc_mail( $user_info->user_email, $email_subject, $email_content );
|
103 |
}
|
105 |
/**
|
106 |
* process_email_verification.
|
107 |
*
|
108 |
+
* @version 2.9.0
|
109 |
* @since 2.8.0
|
110 |
*/
|
111 |
function process_email_verification(){
|
112 |
if ( isset( $_GET['wcj_verify_email'] ) ) {
|
113 |
$data = unserialize( base64_decode( $_GET['wcj_verify_email'] ) );
|
114 |
if ( get_user_meta( $data['id'], 'wcj_activation_code', true ) == $data['code'] ) {
|
115 |
+
update_user_meta( $data['id'], 'wcj_is_activated', '1' );
|
116 |
wc_add_notice( do_shortcode( get_option( 'wcj_emails_verification_success_message',
|
117 |
__( '<strong>Success:</strong> Your account has been activated!', 'woocommerce-jetpack' ) ) ) );
|
118 |
if ( 'yes' === get_option( 'wcj_emails_verification_redirect_on_success', 'yes' ) ) {
|
121 |
header( wc_get_page_permalink( 'myaccount' ) );
|
122 |
}
|
123 |
} else {
|
124 |
+
$_notice = do_shortcode(
|
125 |
+
get_option( 'wcj_emails_verification_failed_message',
|
126 |
+
__( '<strong>Error:</strong> Activation failed, please contact our administrator. You can resend email with verification link by clicking <a href="%resend_verification_url%">here</a>.', 'woocommerce-jetpack' )
|
127 |
+
)
|
128 |
+
);
|
129 |
+
$_notice = str_replace( '%resend_verification_url%', add_query_arg( 'wcj_user_id', $data['id'], wc_get_page_permalink( 'myaccount' ) ), $_notice );
|
130 |
+
wc_add_notice( $_notice, 'error' );
|
131 |
}
|
132 |
}
|
133 |
if ( isset( $_GET['wcj_activate_account_message'] ) ) {
|
includes/class-wcj-emails.php
CHANGED
@@ -16,6 +16,7 @@ class WCJ_Emails extends WCJ_Module {
|
|
16 |
* Constructor.
|
17 |
*
|
18 |
* @version 2.8.0
|
|
|
19 |
*/
|
20 |
function __construct() {
|
21 |
|
16 |
* Constructor.
|
17 |
*
|
18 |
* @version 2.8.0
|
19 |
+
* @todo meta customizer - check "gravity-forms-emails-woocommerce" plugin
|
20 |
*/
|
21 |
function __construct() {
|
22 |
|
includes/class-wcj-empty-cart-button.php
CHANGED
@@ -17,6 +17,7 @@ class WCJ_Empty_Cart_Button extends WCJ_Module {
|
|
17 |
* Constructor.
|
18 |
*
|
19 |
* @version 2.8.0
|
|
|
20 |
*/
|
21 |
function __construct() {
|
22 |
|
17 |
* Constructor.
|
18 |
*
|
19 |
* @version 2.8.0
|
20 |
+
* @todo copy additional options form "Empty Cart Button" plugin
|
21 |
*/
|
22 |
function __construct() {
|
23 |
|
includes/class-wcj-eu-vat-number.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - EU VAT Number
|
4 |
*
|
5 |
-
* @version 2.
|
6 |
* @since 2.3.9
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
@@ -286,11 +286,11 @@ class WCJ_EU_VAT_Number extends WCJ_Module {
|
|
286 |
/**
|
287 |
* enqueue_scripts.
|
288 |
*
|
289 |
-
* @version 2.
|
290 |
*/
|
291 |
function enqueue_scripts() {
|
292 |
if ( 'yes' === get_option( 'wcj_eu_vat_number_validate', 'yes' ) ) {
|
293 |
-
wp_enqueue_script( 'wcj-eu-vat-number', wcj_plugin_url() . '/includes/js/eu-vat-number.js', array(), WCJ()->version, true );
|
294 |
wp_localize_script( 'wcj-eu-vat-number', 'ajax_object', array(
|
295 |
'ajax_url' => admin_url( 'admin-ajax.php' ),
|
296 |
'add_progress_text' => get_option( 'wcj_eu_vat_number_add_progress_text', 'no' ),
|
@@ -305,7 +305,7 @@ class WCJ_EU_VAT_Number extends WCJ_Module {
|
|
305 |
/**
|
306 |
* wcj_validate_eu_vat_number.
|
307 |
*
|
308 |
-
* @version 2.
|
309 |
*/
|
310 |
function wcj_validate_eu_vat_number( $param ) {
|
311 |
// if ( ! isset( $_GET['wcj_validate_eu_vat_number'] ) ) return;
|
@@ -318,10 +318,10 @@ class WCJ_EU_VAT_Number extends WCJ_Module {
|
|
318 |
$location = wc_format_country_state_string( apply_filters( 'woocommerce_customer_default_location', get_option( 'woocommerce_default_country' ) ) );
|
319 |
}
|
320 |
$is_valid = ( $location['country'] === $eu_vat_number_country_to_check ) ?
|
321 |
-
|
322 |
false;
|
323 |
} else {
|
324 |
-
$is_valid =
|
325 |
}
|
326 |
} else {
|
327 |
$is_valid = null;
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - EU VAT Number
|
4 |
*
|
5 |
+
* @version 2.9.0
|
6 |
* @since 2.3.9
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
286 |
/**
|
287 |
* enqueue_scripts.
|
288 |
*
|
289 |
+
* @version 2.9.0
|
290 |
*/
|
291 |
function enqueue_scripts() {
|
292 |
if ( 'yes' === get_option( 'wcj_eu_vat_number_validate', 'yes' ) ) {
|
293 |
+
wp_enqueue_script( 'wcj-eu-vat-number', wcj_plugin_url() . '/includes/js/wcj-eu-vat-number.js', array(), WCJ()->version, true );
|
294 |
wp_localize_script( 'wcj-eu-vat-number', 'ajax_object', array(
|
295 |
'ajax_url' => admin_url( 'admin-ajax.php' ),
|
296 |
'add_progress_text' => get_option( 'wcj_eu_vat_number_add_progress_text', 'no' ),
|
305 |
/**
|
306 |
* wcj_validate_eu_vat_number.
|
307 |
*
|
308 |
+
* @version 2.9.0
|
309 |
*/
|
310 |
function wcj_validate_eu_vat_number( $param ) {
|
311 |
// if ( ! isset( $_GET['wcj_validate_eu_vat_number'] ) ) return;
|
318 |
$location = wc_format_country_state_string( apply_filters( 'woocommerce_customer_default_location', get_option( 'woocommerce_default_country' ) ) );
|
319 |
}
|
320 |
$is_valid = ( $location['country'] === $eu_vat_number_country_to_check ) ?
|
321 |
+
wcj_validate_vat( $eu_vat_number_country_to_check, $eu_vat_number_to_check ) :
|
322 |
false;
|
323 |
} else {
|
324 |
+
$is_valid = wcj_validate_vat( $eu_vat_number_country_to_check, $eu_vat_number_to_check );
|
325 |
}
|
326 |
} else {
|
327 |
$is_valid = null;
|
includes/class-wcj-export-import.php
CHANGED
@@ -20,7 +20,7 @@ class WCJ_Export_Import extends WCJ_Module {
|
|
20 |
* @version 2.8.0
|
21 |
* @since 2.5.4
|
22 |
*/
|
23 |
-
|
24 |
|
25 |
$this->id = 'export';
|
26 |
$this->short_desc = __( 'Export', 'woocommerce-jetpack' );
|
20 |
* @version 2.8.0
|
21 |
* @since 2.5.4
|
22 |
*/
|
23 |
+
function __construct() {
|
24 |
|
25 |
$this->id = 'export';
|
26 |
$this->short_desc = __( 'Export', 'woocommerce-jetpack' );
|
includes/class-wcj-general.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - General
|
4 |
*
|
5 |
-
* @version 2.
|
6 |
* @author Algoritmika Ltd.
|
7 |
*/
|
8 |
|
@@ -15,7 +15,7 @@ class WCJ_General extends WCJ_Module {
|
|
15 |
/**
|
16 |
* Constructor.
|
17 |
*
|
18 |
-
* @version 2.
|
19 |
*/
|
20 |
function __construct() {
|
21 |
|
@@ -39,22 +39,29 @@ class WCJ_General extends WCJ_Module {
|
|
39 |
|
40 |
if ( $this->is_enabled() ) {
|
41 |
|
|
|
|
|
|
|
|
|
|
|
|
|
42 |
if ( 'yes' === get_option( 'wcj_product_revisions_enabled', 'no' ) ) {
|
43 |
add_filter( 'woocommerce_register_post_type_product', array( $this, 'enable_product_revisions' ) );
|
44 |
}
|
45 |
|
|
|
46 |
if ( 'yes' === get_option( 'wcj_general_shortcodes_in_text_widgets_enabled' ) ) {
|
47 |
add_filter( 'widget_text', 'do_shortcode' );
|
48 |
}
|
49 |
|
|
|
50 |
if ( 'yes' === get_option( 'wcj_paypal_email_per_product_enabled', 'no' ) ) {
|
51 |
-
|
52 |
add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );
|
53 |
add_action( 'save_post_product', array( $this, 'save_meta_box' ), PHP_INT_MAX, 2 );
|
54 |
-
|
55 |
add_filter( 'woocommerce_payment_gateways', array( $this, 'maybe_change_paypal_email' ) );
|
56 |
}
|
57 |
|
|
|
58 |
if ( 'yes' === get_option( 'wcj_session_expiration_section_enabled', 'no' ) ) {
|
59 |
add_filter( 'wc_session_expiring', array( $this, 'change_session_expiring' ), PHP_INT_MAX );
|
60 |
add_filter( 'wc_session_expiration', array( $this, 'change_session_expiration' ), PHP_INT_MAX );
|
@@ -65,6 +72,73 @@ class WCJ_General extends WCJ_Module {
|
|
65 |
add_action( 'wp_loaded', array( $this, 'maybe_apply_url_coupon' ), PHP_INT_MAX );
|
66 |
}
|
67 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
68 |
}
|
69 |
}
|
70 |
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - General
|
4 |
*
|
5 |
+
* @version 2.9.0
|
6 |
* @author Algoritmika Ltd.
|
7 |
*/
|
8 |
|
15 |
/**
|
16 |
* Constructor.
|
17 |
*
|
18 |
+
* @version 2.9.0
|
19 |
*/
|
20 |
function __construct() {
|
21 |
|
39 |
|
40 |
if ( $this->is_enabled() ) {
|
41 |
|
42 |
+
// Recalculate cart totals
|
43 |
+
if ( 'yes' === get_option( 'wcj_general_advanced_recalculate_cart_totals', 'no' ) ) {
|
44 |
+
add_action( 'wp_loaded', array( $this, 'fix_mini_cart' ), PHP_INT_MAX );
|
45 |
+
}
|
46 |
+
|
47 |
+
// Product revisions
|
48 |
if ( 'yes' === get_option( 'wcj_product_revisions_enabled', 'no' ) ) {
|
49 |
add_filter( 'woocommerce_register_post_type_product', array( $this, 'enable_product_revisions' ) );
|
50 |
}
|
51 |
|
52 |
+
// Shortcodes in text widgets
|
53 |
if ( 'yes' === get_option( 'wcj_general_shortcodes_in_text_widgets_enabled' ) ) {
|
54 |
add_filter( 'widget_text', 'do_shortcode' );
|
55 |
}
|
56 |
|
57 |
+
// PayPal email per product
|
58 |
if ( 'yes' === get_option( 'wcj_paypal_email_per_product_enabled', 'no' ) ) {
|
|
|
59 |
add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );
|
60 |
add_action( 'save_post_product', array( $this, 'save_meta_box' ), PHP_INT_MAX, 2 );
|
|
|
61 |
add_filter( 'woocommerce_payment_gateways', array( $this, 'maybe_change_paypal_email' ) );
|
62 |
}
|
63 |
|
64 |
+
// Session expiration
|
65 |
if ( 'yes' === get_option( 'wcj_session_expiration_section_enabled', 'no' ) ) {
|
66 |
add_filter( 'wc_session_expiring', array( $this, 'change_session_expiring' ), PHP_INT_MAX );
|
67 |
add_filter( 'wc_session_expiration', array( $this, 'change_session_expiration' ), PHP_INT_MAX );
|
72 |
add_action( 'wp_loaded', array( $this, 'maybe_apply_url_coupon' ), PHP_INT_MAX );
|
73 |
}
|
74 |
|
75 |
+
// Booster role user changer
|
76 |
+
if ( wcj_is_booster_role_changer_enabled() ) {
|
77 |
+
add_action( 'admin_bar_menu', array( $this, 'add_user_role_changer' ), PHP_INT_MAX );
|
78 |
+
add_action( 'init', array( $this, 'change_user_role_meta' ) );
|
79 |
+
}
|
80 |
+
}
|
81 |
+
}
|
82 |
+
|
83 |
+
/**
|
84 |
+
* change_user_role_meta.
|
85 |
+
*
|
86 |
+
* @version 2.9.0
|
87 |
+
* @since 2.9.0
|
88 |
+
* @todo (maybe) optionally via cookies
|
89 |
+
*/
|
90 |
+
function change_user_role_meta() {
|
91 |
+
if ( isset( $_GET['wcj_booster_user_role'] ) ) {
|
92 |
+
$current_user_id = get_current_user_id();
|
93 |
+
update_user_meta( $current_user_id, '_' . 'wcj_booster_user_role', $_GET['wcj_booster_user_role'] );
|
94 |
+
}
|
95 |
+
}
|
96 |
+
|
97 |
+
/**
|
98 |
+
* add_user_role_changer.
|
99 |
+
*
|
100 |
+
* @version 2.9.0
|
101 |
+
* @since 2.9.0
|
102 |
+
*/
|
103 |
+
function add_user_role_changer( $wp_admin_bar ) {
|
104 |
+
$current_user_id = get_current_user_id();
|
105 |
+
$user_roles = wcj_get_user_roles_options();
|
106 |
+
if ( '' != ( $current_booster_user_role = get_user_meta( $current_user_id, '_' . 'wcj_booster_user_role', true ) ) ) {
|
107 |
+
$current_booster_user_role = ( isset( $user_roles[ $current_booster_user_role ] ) ) ? $user_roles[ $current_booster_user_role ] : $current_booster_user_role;
|
108 |
+
$current_booster_user_role = ' [' . $current_booster_user_role . ']';
|
109 |
+
}
|
110 |
+
$args = array(
|
111 |
+
'parent' => false,
|
112 |
+
'id' => 'booster-user-role-changer',
|
113 |
+
'title' => __( 'Booster User Role', 'woocommerce-jetpack' ) . $current_booster_user_role,
|
114 |
+
'href' => false,
|
115 |
+
);
|
116 |
+
$wp_admin_bar->add_node( $args );
|
117 |
+
foreach ( $user_roles as $user_role_key => $user_role_name ) {
|
118 |
+
$args = array(
|
119 |
+
'parent' => 'booster-user-role-changer',
|
120 |
+
'id' => 'booster-user-role-changer-role-' . $user_role_key,
|
121 |
+
'title' => $user_role_name,
|
122 |
+
'href' => add_query_arg( 'wcj_booster_user_role', $user_role_key ),
|
123 |
+
);
|
124 |
+
$wp_admin_bar->add_node( $args );
|
125 |
+
}
|
126 |
+
}
|
127 |
+
|
128 |
+
/**
|
129 |
+
* fix_mini_cart.
|
130 |
+
*
|
131 |
+
* @version 2.5.2
|
132 |
+
* @since 2.5.2
|
133 |
+
* @todo this is only temporary solution!
|
134 |
+
*/
|
135 |
+
function fix_mini_cart() {
|
136 |
+
if ( ! is_admin() || ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) {
|
137 |
+
if ( null !== ( $wc = WC() ) ) {
|
138 |
+
if ( isset( $wc->cart ) ) {
|
139 |
+
$wc->cart->calculate_totals();
|
140 |
+
}
|
141 |
+
}
|
142 |
}
|
143 |
}
|
144 |
|
includes/class-wcj-my-account.php
ADDED
@@ -0,0 +1,109 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Booster for WooCommerce - Module - My Account
|
4 |
+
*
|
5 |
+
* @version 2.9.0
|
6 |
+
* @since 2.9.0
|
7 |
+
* @author Algoritmika Ltd.
|
8 |
+
*/
|
9 |
+
|
10 |
+
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
11 |
+
|
12 |
+
if ( ! class_exists( 'WCJ_My_Account' ) ) :
|
13 |
+
|
14 |
+
class WCJ_My_Account extends WCJ_Module {
|
15 |
+
|
16 |
+
/**
|
17 |
+
* Constructor.
|
18 |
+
*
|
19 |
+
* @version 2.9.0
|
20 |
+
* @since 2.9.0
|
21 |
+
*/
|
22 |
+
function __construct() {
|
23 |
+
|
24 |
+
$this->id = 'my_account';
|
25 |
+
$this->short_desc = __( 'My Account', 'woocommerce-jetpack' );
|
26 |
+
$this->desc = __( 'WooCommerce "My Account" page customization.', 'woocommerce-jetpack' );
|
27 |
+
$this->link_slug = 'woocommerce-my-account';
|
28 |
+
parent::__construct();
|
29 |
+
|
30 |
+
if ( $this->is_enabled() ) {
|
31 |
+
add_filter( 'woocommerce_my_account_my_orders_actions', array( $this, 'maybe_add_my_account_order_actions' ), 10, 2 );
|
32 |
+
add_action( 'wp_footer', array( $this, 'maybe_add_js_conformation' ) );
|
33 |
+
add_action( 'init', array( $this, 'process_woocommerce_mark_order_status' ) );
|
34 |
+
}
|
35 |
+
}
|
36 |
+
|
37 |
+
/*
|
38 |
+
* maybe_add_my_account_order_actions.
|
39 |
+
*
|
40 |
+
* @version 2.9.0
|
41 |
+
* @since 2.9.0
|
42 |
+
* @see http://snippet.fm/snippets/add-order-complete-action-to-woocommerce-my-orders-customer-table/
|
43 |
+
*/
|
44 |
+
function maybe_add_my_account_order_actions( $actions, $order ) {
|
45 |
+
$statuses_to_add = get_option( 'wcj_my_account_add_order_status_actions', '' );
|
46 |
+
if ( ! empty( $statuses_to_add ) ) {
|
47 |
+
$all_statuses = wcj_get_order_statuses_v2();
|
48 |
+
foreach ( $statuses_to_add as $status_to_add ) {
|
49 |
+
if ( $status_to_add != $order->get_status() ) {
|
50 |
+
$actions[ 'wcj_mark_' . $status_to_add . '_by_customer' ] = array(
|
51 |
+
'url' => wp_nonce_url( add_query_arg( array(
|
52 |
+
'wcj_action' => 'wcj_woocommerce_mark_order_status',
|
53 |
+
'status' => $status_to_add,
|
54 |
+
'order_id' => $order->get_id() ) ), 'wcj-woocommerce-mark-order-status' ),
|
55 |
+
'name' => $all_statuses[ $status_to_add ],
|
56 |
+
);
|
57 |
+
}
|
58 |
+
}
|
59 |
+
}
|
60 |
+
return $actions;
|
61 |
+
}
|
62 |
+
|
63 |
+
/*
|
64 |
+
* maybe_add_js_conformation.
|
65 |
+
*
|
66 |
+
* @version 2.9.0
|
67 |
+
* @since 2.9.0
|
68 |
+
*/
|
69 |
+
function maybe_add_js_conformation() {
|
70 |
+
$statuses_to_add = get_option( 'wcj_my_account_add_order_status_actions', '' );
|
71 |
+
if ( ! empty( $statuses_to_add ) ) {
|
72 |
+
echo '<script>';
|
73 |
+
foreach ( $statuses_to_add as $status_to_add ) {
|
74 |
+
echo 'jQuery("a.wcj_mark_' . $status_to_add . '_by_customer").each( function() { jQuery(this).attr("onclick", "return confirm(\'' .
|
75 |
+
__( 'Are you sure?', 'woocommerce-jetpack' ) . '\')") } );';
|
76 |
+
}
|
77 |
+
echo '</script>';
|
78 |
+
}
|
79 |
+
}
|
80 |
+
|
81 |
+
/*
|
82 |
+
* process_woocommerce_mark_order_status.
|
83 |
+
*
|
84 |
+
* @version 2.9.0
|
85 |
+
* @since 2.9.0
|
86 |
+
*/
|
87 |
+
function process_woocommerce_mark_order_status() {
|
88 |
+
if (
|
89 |
+
isset( $_GET['wcj_action'] ) && 'wcj_woocommerce_mark_order_status' === $_GET['wcj_action'] &&
|
90 |
+
isset( $_GET['status'] ) &&
|
91 |
+
isset( $_GET['order_id'] ) &&
|
92 |
+
isset( $_GET['_wpnonce'] )
|
93 |
+
) {
|
94 |
+
if ( wp_verify_nonce( $_GET['_wpnonce'], 'wcj-woocommerce-mark-order-status' ) ) {
|
95 |
+
$_order = wc_get_order( $_GET['order_id'] );
|
96 |
+
if ( $_order->get_customer_id() === get_current_user_id() ) {
|
97 |
+
$_order->update_status( $_GET['status'] );
|
98 |
+
wp_safe_redirect( remove_query_arg( array( 'wcj_action', 'status', 'order_id', '_wpnonce' ) ) );
|
99 |
+
exit;
|
100 |
+
}
|
101 |
+
}
|
102 |
+
}
|
103 |
+
}
|
104 |
+
|
105 |
+
}
|
106 |
+
|
107 |
+
endif;
|
108 |
+
|
109 |
+
return new WCJ_My_Account();
|
includes/class-wcj-offer-price.php
ADDED
@@ -0,0 +1,433 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Booster for WooCommerce - Module - Offer Price
|
4 |
+
*
|
5 |
+
* @version 2.9.0
|
6 |
+
* @since 2.9.0
|
7 |
+
* @author Algoritmika Ltd.
|
8 |
+
*/
|
9 |
+
|
10 |
+
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
11 |
+
|
12 |
+
if ( ! class_exists( 'WCJ_Offer_Price' ) ) :
|
13 |
+
|
14 |
+
class WCJ_Offer_Price extends WCJ_Module {
|
15 |
+
|
16 |
+
/**
|
17 |
+
* Constructor.
|
18 |
+
*
|
19 |
+
* @version 2.9.0
|
20 |
+
* @since 2.9.0
|
21 |
+
* @todo css - better default colors
|
22 |
+
* @todo settings - more info about position priorities, e.g.: __( 'Standard priorities for "Inside single product summary": title - 5, rating - 10, price - 10, excerpt - 20, add to cart - 30, meta - 40, sharing - 50', 'woocommerce-jetpack' )
|
23 |
+
* @todo (maybe) better solution for the form hook (instead of `woocommerce_before_main_content`)
|
24 |
+
* @todo (maybe) css - customizable colors, fonts etc.
|
25 |
+
* @todo (maybe) per product settings - add "use global values/use values below" for price step etc. (instead of placeholders etc.)
|
26 |
+
* @todo (maybe) recheck multicurrency
|
27 |
+
* @todo (maybe) more "Make an offer" button position options (on both single and archives)
|
28 |
+
* @todo (maybe) variations and grouped products
|
29 |
+
* @todo (maybe) add shortcode
|
30 |
+
* @todo (maybe) offers history - option for disabling
|
31 |
+
* @todo (maybe) offers history - global (i.e. for all products)
|
32 |
+
*/
|
33 |
+
function __construct() {
|
34 |
+
|
35 |
+
$this->id = 'offer_price';
|
36 |
+
$this->short_desc = __( 'Offer Your Price', 'woocommerce-jetpack' );
|
37 |
+
$this->desc = __( 'Let your customers to suggest their price for products in WooCommerce.', 'woocommerce-jetpack' );
|
38 |
+
$this->link_slug = 'woocommerce-offer-your-product-price';
|
39 |
+
parent::__construct();
|
40 |
+
|
41 |
+
if ( $this->is_enabled() ) {
|
42 |
+
if ( 'disable' != ( $_hook = get_option( 'wcj_offer_price_button_position', 'woocommerce_single_product_summary' ) ) ) {
|
43 |
+
add_action(
|
44 |
+
$_hook,
|
45 |
+
array( $this, 'add_offer_price_button' ),
|
46 |
+
get_option( 'wcj_offer_price_button_position_priority', 31 )
|
47 |
+
);
|
48 |
+
}
|
49 |
+
if ( 'disable' != ( $_hook = apply_filters( 'booster_get_option', 'disable', get_option( 'wcj_offer_price_button_position_archives', 'disable' ) ) ) ) {
|
50 |
+
add_action(
|
51 |
+
$_hook,
|
52 |
+
array( $this, 'add_offer_price_button' ),
|
53 |
+
get_option( 'wcj_offer_price_button_position_priority_archives', 10 )
|
54 |
+
);
|
55 |
+
}
|
56 |
+
add_action( 'woocommerce_before_main_content', array( $this, 'add_offer_price_form' ) );
|
57 |
+
add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
|
58 |
+
add_action( 'init', array( $this, 'offer_price' ) );
|
59 |
+
if ( 'per_product' === apply_filters( 'booster_get_option', 'all_products', get_option( 'wcj_offer_price_enabled_type', 'all_products' ) ) ) {
|
60 |
+
add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );
|
61 |
+
add_action( 'save_post_product', array( $this, 'save_meta_box' ), PHP_INT_MAX, 2 );
|
62 |
+
}
|
63 |
+
// Offer history
|
64 |
+
add_action( 'add_meta_boxes', array( $this, 'add_offer_price_history_meta_box' ) );
|
65 |
+
add_action( 'save_post_product', array( $this, 'delete_offer_price_product_history' ), PHP_INT_MAX, 2 );
|
66 |
+
}
|
67 |
+
}
|
68 |
+
|
69 |
+
/**
|
70 |
+
* delete_offer_price_product_history.
|
71 |
+
*
|
72 |
+
* @version 2.9.0
|
73 |
+
* @since 2.9.0
|
74 |
+
* @todo (maybe) add successful deletion notice
|
75 |
+
*/
|
76 |
+
function delete_offer_price_product_history( $post_id, $post ) {
|
77 |
+
if ( isset( $_POST['wcj_offer_price_delete_history'] ) ) {
|
78 |
+
delete_post_meta( $post_id, '_' . 'wcj_price_offers' );
|
79 |
+
add_action( 'admin_notices', array( $this, 'notice_delete_offer_price_product_history' ) );
|
80 |
+
}
|
81 |
+
}
|
82 |
+
|
83 |
+
/**
|
84 |
+
* add_offer_price_history_meta_box.
|
85 |
+
*
|
86 |
+
* @version 2.9.0
|
87 |
+
* @since 2.9.0
|
88 |
+
*/
|
89 |
+
function add_offer_price_history_meta_box() {
|
90 |
+
add_meta_box(
|
91 |
+
'wc-booster-offer-price-history',
|
92 |
+
__( 'Booster: Offer Price History', 'woocommerce-jetpack' ),
|
93 |
+
array( $this, 'create_offer_price_history_meta_box' ),
|
94 |
+
'product',
|
95 |
+
'normal',
|
96 |
+
'high'
|
97 |
+
);
|
98 |
+
}
|
99 |
+
|
100 |
+
/**
|
101 |
+
* create_offer_price_history_meta_box.
|
102 |
+
*
|
103 |
+
* @version 2.9.0
|
104 |
+
* @since 2.9.0
|
105 |
+
*/
|
106 |
+
function create_offer_price_history_meta_box() {
|
107 |
+
if ( '' == ( $price_offers = get_post_meta( get_the_ID(), '_' . 'wcj_price_offers', true ) ) ) {
|
108 |
+
echo '<em>' . __( 'No price offers yet.', 'woocommerce-jetpack' ) . '</em>';
|
109 |
+
} else {
|
110 |
+
$average_offers = array();
|
111 |
+
$table_data = array();
|
112 |
+
$table_data[] = array(
|
113 |
+
__( 'Date', 'woocommerce-jetpack' ),
|
114 |
+
__( 'Price', 'woocommerce-jetpack' ),
|
115 |
+
__( 'Message', 'woocommerce-jetpack' ),
|
116 |
+
__( 'Name', 'woocommerce-jetpack' ),
|
117 |
+
__( 'Email', 'woocommerce-jetpack' ),
|
118 |
+
__( 'Customer ID', 'woocommerce-jetpack' ),
|
119 |
+
__( 'Sent to', 'woocommerce-jetpack' ),
|
120 |
+
);
|
121 |
+
$date_ant_time_format = get_option( 'date_format' ) . ' ' . get_option( 'time_format' );
|
122 |
+
$price_offers = array_reverse( $price_offers );
|
123 |
+
foreach ( $price_offers as $price_offer ) {
|
124 |
+
$table_data[] = array(
|
125 |
+
date_i18n( $date_ant_time_format, $price_offer['offer_timestamp'] ),
|
126 |
+
wc_price( $price_offer['offered_price'], array( 'currency' => $price_offer['currency_code'] ) ),
|
127 |
+
$price_offer['customer_message'],
|
128 |
+
$price_offer['customer_name'],
|
129 |
+
$price_offer['customer_email'],
|
130 |
+
$price_offer['customer_id'],
|
131 |
+
$price_offer['sent_to'] . ( 'yes' === $price_offer['copy_to_customer'] ? '<br>' . $price_offer['customer_email'] : '' ),
|
132 |
+
);
|
133 |
+
if ( ! isset( $average_offers[ $price_offer['currency_code'] ] ) ) {
|
134 |
+
$average_offers[ $price_offer['currency_code'] ] = array( 'total_offers' => 0, 'offers_sum' => 0 );
|
135 |
+
}
|
136 |
+
$average_offers[ $price_offer['currency_code'] ]['total_offers']++;
|
137 |
+
$average_offers[ $price_offer['currency_code'] ]['offers_sum'] += $price_offer['offered_price'];
|
138 |
+
}
|
139 |
+
echo wcj_get_table_html( $table_data, array( 'table_class' => 'widefat striped' ) );
|
140 |
+
foreach ( $average_offers as $average_offer_currency_code => $average_offer_data ) {
|
141 |
+
echo '<p>' . sprintf( __( 'Average offer: %s (from %s offer(s))', 'woocommerce-jetpack' ),
|
142 |
+
wc_price( ( $average_offer_data['offers_sum'] / $average_offer_data['total_offers'] ), array( 'currency' => $average_offer_currency_code ) ),
|
143 |
+
$average_offer_data['total_offers']
|
144 |
+
) . '</p>';
|
145 |
+
}
|
146 |
+
echo '<p>' .
|
147 |
+
'<input type="checkbox" id="wcj_offer_price_delete_history" name="wcj_offer_price_delete_history">' .
|
148 |
+
'<label for="wcj_offer_price_delete_history">' . __( 'Delete history', 'woocommerce-jetpack' ) . '</label>' .
|
149 |
+
wc_help_tip( __( 'Update product after checking the box.', 'woocommerce-jetpack' ) ) .
|
150 |
+
'</p>';
|
151 |
+
}
|
152 |
+
}
|
153 |
+
|
154 |
+
/**
|
155 |
+
* enqueue_scripts.
|
156 |
+
*
|
157 |
+
* @version 2.9.0
|
158 |
+
* @since 2.9.0
|
159 |
+
* @see https://www.w3schools.com/howto/howto_css_modals.asp
|
160 |
+
* @todo (maybe) enqueue only if really needed
|
161 |
+
*/
|
162 |
+
function enqueue_scripts() {
|
163 |
+
wp_enqueue_style( 'wcj-offer-price', wcj_plugin_url() . '/includes/css/wcj-offer-price.css', array(), WCJ()->version );
|
164 |
+
wp_enqueue_script( 'wcj-offer-price-js', wcj_plugin_url() . '/includes/js/wcj-offer-price.js', array( 'jquery' ), WCJ()->version, true );
|
165 |
+
}
|
166 |
+
|
167 |
+
/**
|
168 |
+
* is_offer_price_enabled_for_product.
|
169 |
+
*
|
170 |
+
* @version 2.9.0
|
171 |
+
* @since 2.9.0
|
172 |
+
*/
|
173 |
+
function is_offer_price_enabled_for_product( $product_id ) {
|
174 |
+
switch ( apply_filters( 'booster_get_option', 'all_products', get_option( 'wcj_offer_price_enabled_type', 'all_products' ) ) ) {
|
175 |
+
case 'all_products':
|
176 |
+
return true;
|
177 |
+
case 'empty_prices':
|
178 |
+
$_product = wc_get_product( $product_id );
|
179 |
+
return ( '' === $_product->get_price() );
|
180 |
+
case 'per_product':
|
181 |
+
return ( 'yes' === get_post_meta( $product_id, '_' . 'wcj_offer_price_enabled', true ) );
|
182 |
+
}
|
183 |
+
}
|
184 |
+
|
185 |
+
/**
|
186 |
+
* get_wcj_data_array.
|
187 |
+
*
|
188 |
+
* @version 2.9.0
|
189 |
+
* @since 2.9.0
|
190 |
+
* @todo (maybe) rethink `str_replace( '\'', '"', ... )`
|
191 |
+
*/
|
192 |
+
function get_wcj_data_array( $product_id ) {
|
193 |
+
$is_per_product_enabled = ( 'per_product' === apply_filters( 'booster_get_option', 'all_products', get_option( 'wcj_offer_price_enabled_type', 'all_products' ) ) );
|
194 |
+
// Price input - price step
|
195 |
+
$price_step = ( ! $is_per_product_enabled || '' === ( $price_step_per_product = get_post_meta( $product_id, '_' . 'wcj_offer_price_price_step', true ) ) ?
|
196 |
+
get_option( 'wcj_offer_price_price_step', get_option( 'woocommerce_price_num_decimals' ) ) :
|
197 |
+
$price_step_per_product
|
198 |
+
);
|
199 |
+
$price_step = sprintf( "%f", ( 1 / pow( 10, absint( $price_step ) ) ) );
|
200 |
+
// Price input - min price
|
201 |
+
$min_price = ( ! $is_per_product_enabled || '' === ( $min_price_per_product = get_post_meta( $product_id, '_' . 'wcj_offer_price_min_price', true ) ) ?
|
202 |
+
get_option( 'wcj_offer_price_min_price', 0 ) :
|
203 |
+
$min_price_per_product
|
204 |
+
);
|
205 |
+
// Price input - max price
|
206 |
+
$max_price = ( ! $is_per_product_enabled || '' === ( $max_price_per_product = get_post_meta( $product_id, '_' . 'wcj_offer_price_max_price', true ) ) ?
|
207 |
+
get_option( 'wcj_offer_price_max_price', 0 ) :
|
208 |
+
$max_price_per_product
|
209 |
+
);
|
210 |
+
// Price input - default price
|
211 |
+
$default_price = ( ! $is_per_product_enabled || '' === ( $default_price_per_product = get_post_meta( $product_id, '_' . 'wcj_offer_price_default_price', true ) ) ?
|
212 |
+
get_option( 'wcj_offer_price_default_price', 0 ) :
|
213 |
+
$default_price_per_product
|
214 |
+
);
|
215 |
+
// Price input - label
|
216 |
+
$price_label = str_replace(
|
217 |
+
'%currency_symbol%',
|
218 |
+
get_woocommerce_currency_symbol(),
|
219 |
+
get_option( 'wcj_offer_price_price_label', sprintf( __( 'Your price (%s)', 'woocommerce-jetpack' ), '%currency_symbol%' ) )
|
220 |
+
);
|
221 |
+
// Offer form - header
|
222 |
+
$form_header = str_replace(
|
223 |
+
'%product_title%',
|
224 |
+
get_the_title(),
|
225 |
+
get_option( 'wcj_offer_price_form_header_template', '<h3>' . sprintf( __( 'Suggest your price for %s', 'woocommerce-jetpack' ), '%product_title%' ) . '</h3>' )
|
226 |
+
);
|
227 |
+
return array(
|
228 |
+
'price_step' => $price_step,
|
229 |
+
'min_price' => $min_price,
|
230 |
+
'max_price' => $max_price,
|
231 |
+
'default_price' => $default_price,
|
232 |
+
'price_label' => str_replace( '\'', '"', $price_label ),
|
233 |
+
'form_header' => str_replace( '\'', '"', $form_header ),
|
234 |
+
'product_id' => $product_id,
|
235 |
+
);
|
236 |
+
}
|
237 |
+
|
238 |
+
/**
|
239 |
+
* add_offer_price_form.
|
240 |
+
*
|
241 |
+
* @version 2.9.0
|
242 |
+
* @since 2.9.0
|
243 |
+
* @todo (maybe) fix when empty header
|
244 |
+
* @todo (maybe) style options for input fields (class, style)
|
245 |
+
* @todo (maybe) form template
|
246 |
+
* @todo (maybe) do_shortcode in form header and footer
|
247 |
+
* @todo (maybe) logged user - check `nickname` and `billing_email`
|
248 |
+
* @todo (maybe) better required asterix default
|
249 |
+
* @todo (maybe) optional, additional and custom form fields
|
250 |
+
*/
|
251 |
+
function add_offer_price_form() {
|
252 |
+
// Prepare logged user data
|
253 |
+
$customer_name = '';
|
254 |
+
$customer_email = '';
|
255 |
+
$customer_id = 0;
|
256 |
+
if ( is_user_logged_in() ) {
|
257 |
+
$current_user = wp_get_current_user();
|
258 |
+
$customer_id = $current_user->ID;
|
259 |
+
if ( '' != ( $meta = get_user_meta( $current_user->ID, 'nickname', true ) ) ) {
|
260 |
+
$customer_name = $meta;
|
261 |
+
}
|
262 |
+
if ( '' != ( $meta = get_user_meta( $current_user->ID, 'billing_email', true ) ) ) {
|
263 |
+
$customer_email = $meta;
|
264 |
+
}
|
265 |
+
}
|
266 |
+
// Header
|
267 |
+
$offer_form_header = '<div class="wcj-offer-modal-header">' .
|
268 |
+
'<span class="wcj-offer-price-form-close">×</span>' . '<div id="wcj-offer-form-header"></div>' .
|
269 |
+
'</div>';
|
270 |
+
// Footer
|
271 |
+
$offer_form_footer = ( '' != ( $footer_template = get_option( 'wcj_offer_price_form_footer_template', '' ) ) ?
|
272 |
+
'<div class="wcj-offer-price-modal-footer">' . /* do_shortcode */( $footer_template ) . '</div>' : '' );
|
273 |
+
// Required HTML
|
274 |
+
$required_html = get_option( 'wcj_offer_price_form_required_html', ' <abbr class="required" title="required">*</abbr>' );
|
275 |
+
// Content - price
|
276 |
+
$offer_form_content_price = '<label for="wcj-offer-price-price">' .
|
277 |
+
'<span id="wcj-offer-price-price-label"></span>' . $required_html . '</label>' . '<br>' .
|
278 |
+
'<input type="number" required id="wcj-offer-price-price" name="wcj-offer-price-price">';
|
279 |
+
// Content - email
|
280 |
+
$offer_form_content_email = '<label for="wcj-offer-price-customer-email">' . get_option( 'wcj_offer_price_customer_email', __( 'Your email', 'woocommerce-jetpack' ) ) .
|
281 |
+
$required_html . '</label>' . '<br>' .
|
282 |
+
'<input type="email" required id="wcj-offer-price-customer-email" name="wcj-offer-price-customer-email" value="' . $customer_email . '">';
|
283 |
+
// Content - name
|
284 |
+
$offer_form_content_name = '<label for="wcj-offer-price-customer-name">' . get_option( 'wcj_offer_price_customer_name', __( 'Your name', 'woocommerce-jetpack' ) ) .
|
285 |
+
'</label>' . '<br>' .
|
286 |
+
'<input type="text" id="wcj-offer-price-customer-name" name="wcj-offer-price-customer-name" value="' . $customer_name . '">';
|
287 |
+
// Content - message
|
288 |
+
$offer_form_content_message = '<label for="wcj-offer-price-message">' . get_option( 'wcj_offer_price_customer_message', __( 'Your message', 'woocommerce-jetpack' ) ) . '</label>' . '<br>' .
|
289 |
+
'<textarea id="wcj-offer-price-message" name="wcj-offer-price-message"></textarea>';
|
290 |
+
// Content - button
|
291 |
+
$offer_form_content_button = '<input type="submit" id="wcj-offer-price-submit" name="wcj-offer-price-submit" value="' .
|
292 |
+
get_option( 'wcj_offer_price_form_button_label', __( 'Send', 'woocommerce-jetpack' ) ) . '">';
|
293 |
+
// Content - copy
|
294 |
+
$offer_form_content_copy = '<label for="wcj-offer-price-customer-copy">' . get_option( 'wcj_offer_price_customer_copy', __( 'Send a copy to your email', 'woocommerce-jetpack' ) ) .
|
295 |
+
'</label>' . ' ' .
|
296 |
+
'<input type="checkbox" id="wcj-offer-price-customer-copy" name="wcj-offer-price-customer-copy" value="yes">';
|
297 |
+
// Content
|
298 |
+
$offer_form_content = '<div class="wcj-offer-price-modal-body">' .
|
299 |
+
'<form method="post" id="wcj-offer-price-form">' .
|
300 |
+
'<p>' . $offer_form_content_price . '</p>' .
|
301 |
+
'<p>' . $offer_form_content_email . '</p>' .
|
302 |
+
'<p>' . $offer_form_content_name . '</p>' .
|
303 |
+
'<p>' . $offer_form_content_message . '</p>' .
|
304 |
+
'<p>' . $offer_form_content_button . '</p>' .
|
305 |
+
'<p>' . $offer_form_content_copy . '</p>' .
|
306 |
+
'<input type="hidden" id="wcj-offer-price-product-id" name="wcj-offer-price-product-id">' .
|
307 |
+
'<input type="hidden" name="wcj-offer-price-customer-id" value="' . $customer_id . '">' .
|
308 |
+
'</form>' .
|
309 |
+
'</div>';
|
310 |
+
// Final form
|
311 |
+
echo '<div id="wcj-offer-price-modal" class="wcj-offer-price-modal">' .
|
312 |
+
'<div class="wcj-offer-price-modal-content">' .
|
313 |
+
$offer_form_header .
|
314 |
+
$offer_form_content .
|
315 |
+
$offer_form_footer .
|
316 |
+
'</div>' .
|
317 |
+
'</div>';
|
318 |
+
}
|
319 |
+
|
320 |
+
/**
|
321 |
+
* add_offer_price_button.
|
322 |
+
*
|
323 |
+
* @version 2.9.0
|
324 |
+
* @since 2.9.0
|
325 |
+
*/
|
326 |
+
function add_offer_price_button() {
|
327 |
+
$product_id = get_the_ID();
|
328 |
+
// Check if enabled for current product
|
329 |
+
if ( ! $this->is_offer_price_enabled_for_product( $product_id ) ) {
|
330 |
+
return;
|
331 |
+
}
|
332 |
+
// The button
|
333 |
+
echo '<p>' .
|
334 |
+
'<button type="submit"' .
|
335 |
+
' name="wcj-offer-price-button"' .
|
336 |
+
' class="wcj-offer-price-button"' .
|
337 |
+
' value="' . $product_id . '"' .
|
338 |
+
' class="' . get_option( 'wcj_offer_price_button_class', 'button' ) . '"' .
|
339 |
+
' style="' . get_option( 'wcj_offer_price_button_style', '' ) . '"' .
|
340 |
+
' wcj_data=\'' . json_encode( $this->get_wcj_data_array( $product_id ) ) . '\'' .
|
341 |
+
'>' .
|
342 |
+
get_option( 'wcj_offer_price_button_label', __( 'Make an offer', 'woocommerce-jetpack' ) ) .
|
343 |
+
'</button>' .
|
344 |
+
'</p>';
|
345 |
+
}
|
346 |
+
|
347 |
+
/**
|
348 |
+
* offer_price.
|
349 |
+
*
|
350 |
+
* @version 2.9.0
|
351 |
+
* @since 2.9.0
|
352 |
+
* @todo (maybe) separate customer copy email template and subject
|
353 |
+
* @todo (maybe) redirect (no notice though)
|
354 |
+
* @todo (maybe) `%product_title%` etc. in notice
|
355 |
+
* @todo (maybe) fix "From" header
|
356 |
+
* @todo (maybe) check if mail has really been sent
|
357 |
+
* @todo (maybe) sanitize $_POST
|
358 |
+
*/
|
359 |
+
function offer_price() {
|
360 |
+
if ( isset( $_POST['wcj-offer-price-submit'] ) ) {
|
361 |
+
$product_id = $_POST['wcj-offer-price-product-id'];
|
362 |
+
$_product = wc_get_product( $product_id );
|
363 |
+
// Email address
|
364 |
+
$email_address = get_option( 'wcj_offer_price_email_address', '%admin_email%' );
|
365 |
+
if ( '' == $email_address ) {
|
366 |
+
$email_address = get_option( 'admin_email' );
|
367 |
+
} else {
|
368 |
+
$admin_email = get_option( 'admin_email' );
|
369 |
+
if (
|
370 |
+
( $product_author_id = get_post_field( 'post_author', $product_id ) ) &&
|
371 |
+
( $product_user_info = get_userdata( $product_author_id ) ) &&
|
372 |
+
isset( $product_user_info->user_email )
|
373 |
+
) {
|
374 |
+
$product_author_email = $product_user_info->user_email;
|
375 |
+
} else {
|
376 |
+
$product_author_email = $admin_email;
|
377 |
+
}
|
378 |
+
$email_address = str_replace( array( '%admin_email%', '%product_author_email%' ), array( $admin_email, $product_author_email ), $email_address );
|
379 |
+
}
|
380 |
+
// Price offer array
|
381 |
+
$price_offer = array(
|
382 |
+
'offer_timestamp' => current_time( 'timestamp' ),
|
383 |
+
'product_title' => $_product->get_title(),
|
384 |
+
'offered_price' => $_POST['wcj-offer-price-price'],
|
385 |
+
'currency_code' => get_woocommerce_currency(),
|
386 |
+
'customer_message' => $_POST['wcj-offer-price-message'],
|
387 |
+
'customer_name' => $_POST['wcj-offer-price-customer-name'],
|
388 |
+
'customer_email' => $_POST['wcj-offer-price-customer-email'],
|
389 |
+
'customer_id' => $_POST['wcj-offer-price-customer-id'],
|
390 |
+
'copy_to_customer' => ( isset( $_POST['wcj-offer-price-customer-copy'] ) ? $_POST['wcj-offer-price-customer-copy'] : 'no' ),
|
391 |
+
'sent_to' => $email_address,
|
392 |
+
);
|
393 |
+
// Email content
|
394 |
+
$email_template = get_option( 'wcj_offer_price_email_template',
|
395 |
+
sprintf( __( 'Product: %s', 'woocommerce-jetpack' ), '%product_title%' ) . '<br>' . PHP_EOL .
|
396 |
+
sprintf( __( 'Offered price: %s', 'woocommerce-jetpack' ), '%offered_price%' ) . '<br>' . PHP_EOL .
|
397 |
+
sprintf( __( 'From: %s %s', 'woocommerce-jetpack' ), '%customer_name%', '%customer_email%' ) . '<br>' . PHP_EOL .
|
398 |
+
sprintf( __( 'Message: %s', 'woocommerce-jetpack' ), '%customer_message%' )
|
399 |
+
);
|
400 |
+
$replaced_values = array(
|
401 |
+
'%product_title%' => $price_offer['product_title'],
|
402 |
+
'%offered_price%' => wc_price( $price_offer['offered_price'] ),
|
403 |
+
'%customer_message%' => $price_offer['customer_message'],
|
404 |
+
'%customer_name%' => $price_offer['customer_name'],
|
405 |
+
'%customer_email%' => $price_offer['customer_email'],
|
406 |
+
);
|
407 |
+
$email_content = str_replace( array_keys( $replaced_values ), array_values( $replaced_values ), $email_template );
|
408 |
+
// Email subject and headers
|
409 |
+
$email_subject = get_option( 'wcj_offer_price_email_subject', __( 'Price Offer', 'woocommerce-jetpack' ) );
|
410 |
+
$email_headers = 'Content-Type: text/html' . "\r\n" .
|
411 |
+
'From: ' . $price_offer['customer_name'] . ' <' . $price_offer['customer_email'] . '>' . "\r\n" .
|
412 |
+
'Reply-To: ' . $price_offer['customer_email'] . "\r\n";
|
413 |
+
// Send email
|
414 |
+
wc_mail( $email_address, $email_subject, $email_content, $email_headers );
|
415 |
+
if ( 'yes' === $price_offer['copy_to_customer'] ) {
|
416 |
+
wc_mail( $price_offer['customer_email'], $email_subject, $email_content, $email_headers );
|
417 |
+
}
|
418 |
+
// Notice
|
419 |
+
wc_add_notice( get_option( 'wcj_offer_price_customer_notice', __( 'Your price offer has been sent.', 'woocommerce-jetpack' ) ), 'notice' );
|
420 |
+
// Product meta (Offer Price History)
|
421 |
+
if ( '' == ( $price_offers = get_post_meta( $product_id, '_' . 'wcj_price_offers', true ) ) ) {
|
422 |
+
$price_offers = array();
|
423 |
+
}
|
424 |
+
$price_offers[] = $price_offer;
|
425 |
+
update_post_meta( $product_id, '_' . 'wcj_price_offers', $price_offers );
|
426 |
+
}
|
427 |
+
}
|
428 |
+
|
429 |
+
}
|
430 |
+
|
431 |
+
endif;
|
432 |
+
|
433 |
+
return new WCJ_Offer_Price();
|
includes/class-wcj-order-custom-statuses.php
CHANGED
@@ -424,6 +424,8 @@ class WCJ_Order_Custom_Statuses extends WCJ_Module {
|
|
424 |
|
425 |
/**
|
426 |
* get_order_statuses.
|
|
|
|
|
427 |
*/
|
428 |
function get_order_statuses() {
|
429 |
$result = array();
|
424 |
|
425 |
/**
|
426 |
* get_order_statuses.
|
427 |
+
*
|
428 |
+
* @todo use `wcj_get_order_statuses_v2`
|
429 |
*/
|
430 |
function get_order_statuses() {
|
431 |
$result = array();
|
includes/class-wcj-order-min-amount.php
CHANGED
@@ -2,9 +2,10 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Order Minimum Amount
|
4 |
*
|
5 |
-
* @version 2.
|
6 |
* @since 2.5.7
|
7 |
* @author Algoritmika Ltd.
|
|
|
8 |
*/
|
9 |
|
10 |
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
@@ -55,7 +56,7 @@ class WCJ_Order_Min_Amount extends WCJ_Module {
|
|
55 |
add_action( 'woocommerce_checkout_process', array( $this, 'order_minimum_amount' ) );
|
56 |
add_action( 'woocommerce_before_cart', array( $this, 'order_minimum_amount' ) );
|
57 |
if ( 'yes' === get_option( 'wcj_order_minimum_amount_stop_from_seeing_checkout', 'no' ) ) {
|
58 |
-
add_action( 'wp',
|
59 |
}
|
60 |
}
|
61 |
}
|
@@ -105,8 +106,8 @@ class WCJ_Order_Min_Amount extends WCJ_Module {
|
|
105 |
/**
|
106 |
* order_minimum_amount.
|
107 |
*
|
108 |
-
* @version 2.
|
109 |
-
* @todo
|
110 |
*/
|
111 |
function order_minimum_amount() {
|
112 |
$minimum = $this->get_order_minimum_amount_with_user_roles();
|
@@ -115,14 +116,15 @@ class WCJ_Order_Min_Amount extends WCJ_Module {
|
|
115 |
}
|
116 |
$cart_total = $this->get_cart_total_for_minimal_order_amount();
|
117 |
if ( $cart_total < $minimum ) {
|
118 |
-
if( is_cart() ) {
|
119 |
if ( 'yes' === get_option( 'wcj_order_minimum_amount_cart_notice_enabled', 'no' ) ) {
|
120 |
-
wc_print_notice
|
|
|
121 |
sprintf( apply_filters( 'booster_get_option', 'You must have an order with a minimum of %s to place your order, your current order total is %s.', get_option( 'wcj_order_minimum_amount_cart_notice_message' ) ),
|
122 |
wc_price( $minimum ),
|
123 |
wc_price( $cart_total )
|
124 |
),
|
125 |
-
'notice'
|
126 |
);
|
127 |
}
|
128 |
} else {
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Order Minimum Amount
|
4 |
*
|
5 |
+
* @version 2.9.0
|
6 |
* @since 2.5.7
|
7 |
* @author Algoritmika Ltd.
|
8 |
+
* @todo order max amount
|
9 |
*/
|
10 |
|
11 |
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
56 |
add_action( 'woocommerce_checkout_process', array( $this, 'order_minimum_amount' ) );
|
57 |
add_action( 'woocommerce_before_cart', array( $this, 'order_minimum_amount' ) );
|
58 |
if ( 'yes' === get_option( 'wcj_order_minimum_amount_stop_from_seeing_checkout', 'no' ) ) {
|
59 |
+
add_action( 'wp', array( $this, 'stop_from_seeing_checkout' ), 100 );
|
60 |
}
|
61 |
}
|
62 |
}
|
106 |
/**
|
107 |
* order_minimum_amount.
|
108 |
*
|
109 |
+
* @version 2.9.0
|
110 |
+
* @todo `wcj_order_minimum_amount_checkout_notice_type`
|
111 |
*/
|
112 |
function order_minimum_amount() {
|
113 |
$minimum = $this->get_order_minimum_amount_with_user_roles();
|
116 |
}
|
117 |
$cart_total = $this->get_cart_total_for_minimal_order_amount();
|
118 |
if ( $cart_total < $minimum ) {
|
119 |
+
if ( is_cart() ) {
|
120 |
if ( 'yes' === get_option( 'wcj_order_minimum_amount_cart_notice_enabled', 'no' ) ) {
|
121 |
+
$notice_function = get_option( 'wcj_order_minimum_amount_cart_notice_function', 'wc_print_notice' );
|
122 |
+
$notice_function(
|
123 |
sprintf( apply_filters( 'booster_get_option', 'You must have an order with a minimum of %s to place your order, your current order total is %s.', get_option( 'wcj_order_minimum_amount_cart_notice_message' ) ),
|
124 |
wc_price( $minimum ),
|
125 |
wc_price( $cart_total )
|
126 |
),
|
127 |
+
get_option( 'wcj_order_minimum_amount_cart_notice_type', 'notice' )
|
128 |
);
|
129 |
}
|
130 |
} else {
|
includes/class-wcj-order-quantities.php
ADDED
@@ -0,0 +1,200 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Booster for WooCommerce - Module - Order Min/Max Quantities
|
4 |
+
*
|
5 |
+
* @version 2.9.0
|
6 |
+
* @since 2.9.0
|
7 |
+
* @author Algoritmika Ltd.
|
8 |
+
*/
|
9 |
+
|
10 |
+
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
11 |
+
|
12 |
+
if ( ! class_exists( 'WCJ_Order_Quantities' ) ) :
|
13 |
+
|
14 |
+
class WCJ_Order_Quantities extends WCJ_Module {
|
15 |
+
|
16 |
+
/**
|
17 |
+
* Constructor.
|
18 |
+
*
|
19 |
+
* @version 2.9.0
|
20 |
+
* @since 2.9.0
|
21 |
+
* @todo quantities per item - per product
|
22 |
+
* @todo (maybe) do not allow to add/remove items (instead of just printing messages)
|
23 |
+
* @todo (maybe) order quantities by user roles
|
24 |
+
*/
|
25 |
+
function __construct() {
|
26 |
+
|
27 |
+
$this->id = 'order_quantities';
|
28 |
+
$this->short_desc = __( 'Order Min/Max Quantities', 'woocommerce-jetpack' );
|
29 |
+
$this->desc = __( 'Set min/max product quantities in WooCommerce order.', 'woocommerce-jetpack' );
|
30 |
+
$this->link_slug = 'woocommerce-order-min-max-quantities';
|
31 |
+
parent::__construct();
|
32 |
+
|
33 |
+
if ( $this->is_enabled() ) {
|
34 |
+
if ( 'yes' === get_option( 'wcj_order_quantities_max_section_enabled', 'no' ) || 'yes' === get_option( 'wcj_order_quantities_min_section_enabled', 'no' ) ) {
|
35 |
+
add_action( 'woocommerce_checkout_process', array( $this, 'check_order_quantities' ) );
|
36 |
+
add_action( 'woocommerce_before_cart', array( $this, 'check_order_quantities' ) );
|
37 |
+
if ( 'yes' === get_option( 'wcj_order_quantities_stop_from_seeing_checkout', 'no' ) ) {
|
38 |
+
add_action( 'wp', array( $this, 'stop_from_seeing_checkout' ), PHP_INT_MAX );
|
39 |
+
}
|
40 |
+
}
|
41 |
+
}
|
42 |
+
}
|
43 |
+
|
44 |
+
/**
|
45 |
+
* stop_from_seeing_checkout.
|
46 |
+
*
|
47 |
+
* @version 2.9.0
|
48 |
+
* @since 2.9.0
|
49 |
+
*/
|
50 |
+
function stop_from_seeing_checkout() {
|
51 |
+
if ( ! isset( WC()->cart ) ) {
|
52 |
+
return;
|
53 |
+
}
|
54 |
+
if ( ! is_checkout() ) {
|
55 |
+
return;
|
56 |
+
}
|
57 |
+
$cart_item_quantities = WC()->cart->get_cart_item_quantities();
|
58 |
+
if ( empty( $cart_item_quantities ) || ! is_array( $cart_item_quantities ) ) {
|
59 |
+
return;
|
60 |
+
}
|
61 |
+
$cart_total_quantity = array_sum( $cart_item_quantities );
|
62 |
+
if ( 'yes' === get_option( 'wcj_order_quantities_max_section_enabled', 'no' ) ) {
|
63 |
+
if ( ! $this->check_quantities( 'max', $cart_item_quantities, $cart_total_quantity, false, true ) ) {
|
64 |
+
wp_safe_redirect( WC()->cart->get_cart_url() );
|
65 |
+
exit;
|
66 |
+
}
|
67 |
+
}
|
68 |
+
if ( 'yes' === get_option( 'wcj_order_quantities_min_section_enabled', 'no' ) ) {
|
69 |
+
if ( ! $this->check_quantities( 'min', $cart_item_quantities, $cart_total_quantity, false, true ) ) {
|
70 |
+
wp_safe_redirect( WC()->cart->get_cart_url() );
|
71 |
+
exit;
|
72 |
+
}
|
73 |
+
}
|
74 |
+
}
|
75 |
+
|
76 |
+
/**
|
77 |
+
* print_message.
|
78 |
+
*
|
79 |
+
* @version 2.9.0
|
80 |
+
* @since 2.9.0
|
81 |
+
*/
|
82 |
+
function print_message( $message_type, $_is_cart, $required_quantity, $total_quantity, $_product_id = 0 ) {
|
83 |
+
if ( $_is_cart ) {
|
84 |
+
if ( 'no' === get_option( 'wcj_order_quantities_cart_notice_enabled', 'no' ) ) {
|
85 |
+
return;
|
86 |
+
}
|
87 |
+
}
|
88 |
+
switch ( $message_type ) {
|
89 |
+
case 'max_cart_total_quantity':
|
90 |
+
$replaced_values = array(
|
91 |
+
'%max_cart_total_quantity%' => $required_quantity,
|
92 |
+
'%cart_total_quantity%' => $total_quantity,
|
93 |
+
);
|
94 |
+
$message_template = get_option( 'wcj_order_quantities_max_cart_total_message',
|
95 |
+
__( 'Maximum allowed order quantity is %max_cart_total_quantity%. Your current order quantity is %cart_total_quantity%.', 'woocommerce-jetpack' ) );
|
96 |
+
break;
|
97 |
+
case 'min_cart_total_quantity':
|
98 |
+
$replaced_values = array(
|
99 |
+
'%min_cart_total_quantity%' => $required_quantity,
|
100 |
+
'%cart_total_quantity%' => $total_quantity,
|
101 |
+
);
|
102 |
+
$message_template = get_option( 'wcj_order_quantities_min_cart_total_message',
|
103 |
+
__( 'Minimum allowed order quantity is %min_cart_total_quantity%. Your current order quantity is %cart_total_quantity%.', 'woocommerce-jetpack' ) );
|
104 |
+
break;
|
105 |
+
case 'max_per_item_quantity':
|
106 |
+
$_product = wc_get_product( $_product_id );
|
107 |
+
$replaced_values = array(
|
108 |
+
'%max_per_item_quantity%' => $required_quantity,
|
109 |
+
'%item_quantity%' => $total_quantity,
|
110 |
+
'%product_title%' => $_product->get_title(),
|
111 |
+
);
|
112 |
+
$message_template = get_option( 'wcj_order_quantities_max_per_item_message',
|
113 |
+
__( 'Maximum allowed quantity for %product_title% is %max_per_item_quantity%. Your current item quantity is %item_quantity%.', 'woocommerce-jetpack' ) );
|
114 |
+
break;
|
115 |
+
case 'min_per_item_quantity':
|
116 |
+
$_product = wc_get_product( $_product_id );
|
117 |
+
$replaced_values = array(
|
118 |
+
'%min_per_item_quantity%' => $required_quantity,
|
119 |
+
'%item_quantity%' => $total_quantity,
|
120 |
+
'%product_title%' => $_product->get_title(),
|
121 |
+
);
|
122 |
+
$message_template = get_option( 'wcj_order_quantities_min_per_item_message',
|
123 |
+
__( 'Minimum allowed quantity for %product_title% is %min_per_item_quantity%. Your current item quantity is %item_quantity%.', 'woocommerce-jetpack' ) );
|
124 |
+
break;
|
125 |
+
}
|
126 |
+
$_notice = str_replace( array_keys( $replaced_values ), array_values( $replaced_values ), $message_template );
|
127 |
+
if ( $_is_cart ) {
|
128 |
+
wc_print_notice( $_notice, 'notice' );
|
129 |
+
} else {
|
130 |
+
wc_add_notice( $_notice, 'error' );
|
131 |
+
}
|
132 |
+
}
|
133 |
+
|
134 |
+
/**
|
135 |
+
* check_quantities.
|
136 |
+
*
|
137 |
+
* @version 2.9.0
|
138 |
+
* @since 2.9.0
|
139 |
+
*/
|
140 |
+
function check_quantities( $min_or_max, $cart_item_quantities, $cart_total_quantity, $_is_cart, $_return ) {
|
141 |
+
if ( 0 != ( $min_or_max_cart_total_quantity = get_option( 'wcj_order_quantities_' . $min_or_max . '_cart_total_quantity', 0 ) ) ) {
|
142 |
+
if (
|
143 |
+
( 'max' === $min_or_max && $cart_total_quantity > $min_or_max_cart_total_quantity ) ||
|
144 |
+
( 'min' === $min_or_max && $cart_total_quantity < $min_or_max_cart_total_quantity )
|
145 |
+
) {
|
146 |
+
if ( $_return ) {
|
147 |
+
return false;
|
148 |
+
} else {
|
149 |
+
$this->print_message( $min_or_max . '_cart_total_quantity', $_is_cart, $min_or_max_cart_total_quantity, $cart_total_quantity );
|
150 |
+
}
|
151 |
+
}
|
152 |
+
}
|
153 |
+
if ( 0 != ( $max_or_max_per_item_quantity = apply_filters( 'booster_get_option', 0, get_option( 'wcj_order_quantities_' . $min_or_max . '_per_item_quantity', 0 ) ) ) ) {
|
154 |
+
foreach ( $cart_item_quantities as $_product_id => $cart_item_quantity ) {
|
155 |
+
if (
|
156 |
+
( 'max' === $min_or_max && $cart_item_quantity > $max_or_max_per_item_quantity ) ||
|
157 |
+
( 'min' === $min_or_max && $cart_item_quantity < $max_or_max_per_item_quantity )
|
158 |
+
) {
|
159 |
+
if ( $_return ) {
|
160 |
+
return false;
|
161 |
+
} else {
|
162 |
+
$this->print_message( $min_or_max . '_per_item_quantity', $_is_cart, $max_or_max_per_item_quantity, $cart_item_quantity, $_product_id );
|
163 |
+
}
|
164 |
+
}
|
165 |
+
}
|
166 |
+
}
|
167 |
+
if ( $_return ) {
|
168 |
+
return true;
|
169 |
+
}
|
170 |
+
}
|
171 |
+
|
172 |
+
/**
|
173 |
+
* check_order_quantities.
|
174 |
+
*
|
175 |
+
* @version 2.9.0
|
176 |
+
* @since 2.9.0
|
177 |
+
*/
|
178 |
+
function check_order_quantities() {
|
179 |
+
if ( ! isset( WC()->cart ) ) {
|
180 |
+
return;
|
181 |
+
}
|
182 |
+
$cart_item_quantities = WC()->cart->get_cart_item_quantities();
|
183 |
+
if ( empty( $cart_item_quantities ) || ! is_array( $cart_item_quantities ) ) {
|
184 |
+
return;
|
185 |
+
}
|
186 |
+
$cart_total_quantity = array_sum( $cart_item_quantities );
|
187 |
+
$_is_cart = is_cart();
|
188 |
+
if ( 'yes' === get_option( 'wcj_order_quantities_max_section_enabled', 'no' ) ) {
|
189 |
+
$this->check_quantities( 'max', $cart_item_quantities, $cart_total_quantity, $_is_cart, false );
|
190 |
+
}
|
191 |
+
if ( 'yes' === get_option( 'wcj_order_quantities_min_section_enabled', 'no' ) ) {
|
192 |
+
$this->check_quantities( 'min', $cart_item_quantities, $cart_total_quantity, $_is_cart, false );
|
193 |
+
}
|
194 |
+
}
|
195 |
+
|
196 |
+
}
|
197 |
+
|
198 |
+
endif;
|
199 |
+
|
200 |
+
return new WCJ_Order_Quantities();
|
includes/class-wcj-orders.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Orders
|
4 |
*
|
5 |
-
* @version 2.
|
6 |
* @author Algoritmika Ltd.
|
7 |
*/
|
8 |
|
@@ -15,7 +15,7 @@ class WCJ_Orders extends WCJ_Module {
|
|
15 |
/**
|
16 |
* Constructor.
|
17 |
*
|
18 |
-
* @version 2.
|
19 |
*/
|
20 |
function __construct() {
|
21 |
|
@@ -70,7 +70,56 @@ class WCJ_Orders extends WCJ_Module {
|
|
70 |
if ( 'yes' === get_option( 'wcj_order_admin_list_columns_order_enabled', 'no' ) ) {
|
71 |
add_filter( 'manage_edit-shop_order_columns', array( $this, 'rearange_order_columns' ), PHP_INT_MAX - 1 );
|
72 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
73 |
}
|
|
|
74 |
}
|
75 |
|
76 |
/**
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Orders
|
4 |
*
|
5 |
+
* @version 2.9.0
|
6 |
* @author Algoritmika Ltd.
|
7 |
*/
|
8 |
|
15 |
/**
|
16 |
* Constructor.
|
17 |
*
|
18 |
+
* @version 2.9.0
|
19 |
*/
|
20 |
function __construct() {
|
21 |
|
70 |
if ( 'yes' === get_option( 'wcj_order_admin_list_columns_order_enabled', 'no' ) ) {
|
71 |
add_filter( 'manage_edit-shop_order_columns', array( $this, 'rearange_order_columns' ), PHP_INT_MAX - 1 );
|
72 |
}
|
73 |
+
|
74 |
+
// Maybe make sortable custom columns
|
75 |
+
add_filter( 'manage_edit-shop_order_sortable_columns', array( $this, 'shop_order_sortable_columns' ) );
|
76 |
+
add_action( 'pre_get_posts', array( $this, 'shop_order_pre_get_posts_order_by_column' ), 1 );
|
77 |
+
}
|
78 |
+
}
|
79 |
+
|
80 |
+
/**
|
81 |
+
* shop_order_pre_get_posts_order_by_column.
|
82 |
+
*
|
83 |
+
* @version 2.9.0
|
84 |
+
* @since 2.9.0
|
85 |
+
* @todo add sortable to "Billing Country" and "Currency Code"
|
86 |
+
* @todo move custom columns section (probably with reordering and multiple status sections) to new module (e.g. (Admin) Order(s) List) - same with products custom columns
|
87 |
+
* @todo (maybe) add filtering to custom columns (as it's done for "Billing Country" and "Currency Code")
|
88 |
+
*/
|
89 |
+
function shop_order_pre_get_posts_order_by_column( $query ) {
|
90 |
+
if (
|
91 |
+
$query->is_main_query() &&
|
92 |
+
( $orderby = $query->get( 'orderby' ) ) &&
|
93 |
+
isset( $query->query['post_type'] ) && 'shop_order' === $query->query['post_type'] &&
|
94 |
+
isset( $query->is_admin ) && 1 == $query->is_admin
|
95 |
+
) {
|
96 |
+
if ( 'wcj_orders_custom_column_' === substr( $orderby, 0, 25 ) ) {
|
97 |
+
$index = substr( $orderby, 25 );
|
98 |
+
$query->set( 'orderby', get_option( 'wcj_orders_list_custom_columns_sortable_' . $index, 'no' ) ); // 'meta_value' or 'meta_value_num'
|
99 |
+
$query->set( 'meta_key', get_option( 'wcj_orders_list_custom_columns_sortable_key_' . $index, '' ) );
|
100 |
+
}
|
101 |
+
}
|
102 |
+
}
|
103 |
+
|
104 |
+
/**
|
105 |
+
* Make columns sortable.
|
106 |
+
*
|
107 |
+
* @version 2.9.0
|
108 |
+
* @since 2.9.0
|
109 |
+
* @param array $columns
|
110 |
+
* @return array
|
111 |
+
*/
|
112 |
+
function shop_order_sortable_columns( $columns ) {
|
113 |
+
$custom = array();
|
114 |
+
$total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_orders_list_custom_columns_total_number', 1 ) );
|
115 |
+
for ( $i = 1; $i <= $total_number; $i++ ) {
|
116 |
+
if ( 'yes' === get_option( 'wcj_orders_list_custom_columns_enabled_' . $i, 'no' ) ) {
|
117 |
+
if ( 'no' != get_option( 'wcj_orders_list_custom_columns_sortable_' . $i, 'no' ) && '' != get_option( 'wcj_orders_list_custom_columns_sortable_key_' . $i, '' ) ) {
|
118 |
+
$custom[ 'wcj_orders_custom_column_' . $i ] = 'wcj_orders_custom_column_' . $i;
|
119 |
+
}
|
120 |
+
}
|
121 |
}
|
122 |
+
return ( ! empty( $custom ) ? wp_parse_args( $custom, $columns ) : $columns );
|
123 |
}
|
124 |
|
125 |
/**
|
includes/class-wcj-payment-gateways-currency.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Gateways Currency
|
4 |
*
|
5 |
-
* @version 2.
|
6 |
* @since 2.3.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
@@ -185,9 +185,11 @@ class WCJ_Payment_Gateways_Currency extends WCJ_Module {
|
|
185 |
|
186 |
/**
|
187 |
* register_script.
|
|
|
|
|
188 |
*/
|
189 |
function register_script() {
|
190 |
-
wp_register_script( 'wcj-payment-gateways-checkout', trailingslashit( plugin_dir_url( __FILE__ ) ) . 'js/checkout.js', array( 'jquery' ),
|
191 |
}
|
192 |
|
193 |
/**
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Gateways Currency
|
4 |
*
|
5 |
+
* @version 2.9.0
|
6 |
* @since 2.3.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
185 |
|
186 |
/**
|
187 |
* register_script.
|
188 |
+
*
|
189 |
+
* @version 2.9.0
|
190 |
*/
|
191 |
function register_script() {
|
192 |
+
wp_register_script( 'wcj-payment-gateways-checkout', trailingslashit( plugin_dir_url( __FILE__ ) ) . 'js/wcj-checkout.js', array( 'jquery' ), WCJ()->version, true );
|
193 |
}
|
194 |
|
195 |
/**
|
includes/class-wcj-payment-gateways-fees.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Gateways Fees and Discounts
|
4 |
*
|
5 |
-
* @version 2.
|
6 |
* @since 2.2.2
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
@@ -35,13 +35,13 @@ class WCJ_Payment_Gateways_Fees extends WCJ_Module {
|
|
35 |
/**
|
36 |
* enqueue_checkout_script.
|
37 |
*
|
38 |
-
* @version 2.
|
39 |
*/
|
40 |
function enqueue_checkout_script() {
|
41 |
if( ! is_checkout() ) {
|
42 |
return;
|
43 |
}
|
44 |
-
wp_enqueue_script( 'wcj-payment-gateways-checkout', trailingslashit( plugin_dir_url( __FILE__ ) ) . 'js/checkout.js', array( 'jquery' ), WCJ()->version, true );
|
45 |
}
|
46 |
|
47 |
/**
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Gateways Fees and Discounts
|
4 |
*
|
5 |
+
* @version 2.9.0
|
6 |
* @since 2.2.2
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
35 |
/**
|
36 |
* enqueue_checkout_script.
|
37 |
*
|
38 |
+
* @version 2.9.0
|
39 |
*/
|
40 |
function enqueue_checkout_script() {
|
41 |
if( ! is_checkout() ) {
|
42 |
return;
|
43 |
}
|
44 |
+
wp_enqueue_script( 'wcj-payment-gateways-checkout', trailingslashit( plugin_dir_url( __FILE__ ) ) . 'js/wcj-checkout.js', array( 'jquery' ), WCJ()->version, true );
|
45 |
}
|
46 |
|
47 |
/**
|
includes/class-wcj-pdf-invoicing.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - PDF Invoicing
|
4 |
*
|
5 |
-
* @version 2.
|
6 |
* @author Algoritmika Ltd.
|
7 |
*/
|
8 |
|
@@ -307,20 +307,49 @@ class WCJ_PDF_Invoicing extends WCJ_Module {
|
|
307 |
}
|
308 |
}
|
309 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
310 |
/**
|
311 |
* generate_pdf_on_init.
|
312 |
*
|
313 |
-
* @version 2.
|
314 |
*/
|
315 |
function generate_pdf_on_init() {
|
316 |
|
317 |
// Check if all is OK
|
318 |
-
if (
|
319 |
-
( true !== $this->get_invoice ) ||
|
320 |
-
( 0 == $this->order_id ) ||
|
321 |
-
( ! is_user_logged_in() ) ||
|
322 |
-
( ! current_user_can( 'administrator' ) && ! is_shop_manager() && get_current_user_id() != intval( get_post_meta( $this->order_id, '_customer_user', true ) ) )
|
323 |
-
) {
|
324 |
return;
|
325 |
}
|
326 |
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - PDF Invoicing
|
4 |
*
|
5 |
+
* @version 2.9.0
|
6 |
* @author Algoritmika Ltd.
|
7 |
*/
|
8 |
|
307 |
}
|
308 |
}
|
309 |
|
310 |
+
/**
|
311 |
+
* check_user_roles.
|
312 |
+
*
|
313 |
+
* @version 2.9.0
|
314 |
+
* @since 2.9.0
|
315 |
+
* @todo apply user role checking to other actions - create etc.
|
316 |
+
* @todo check if `current_user_can( 'administrator' )` is the same as checking role directly
|
317 |
+
*/
|
318 |
+
function check_user_roles() {
|
319 |
+
if ( get_current_user_id() == intval( get_post_meta( $this->order_id, '_customer_user', true ) ) ) {
|
320 |
+
return true;
|
321 |
+
}
|
322 |
+
$allowed_user_roles = get_option( 'wcj_invoicing_' . $this->invoice_type_id . '_roles', array( 'administrator', 'shop_manager' ) );
|
323 |
+
if ( empty( $allowed_user_roles ) ) {
|
324 |
+
$allowed_user_roles = array( 'administrator' );
|
325 |
+
}
|
326 |
+
if ( wcj_is_user_role( $allowed_user_roles ) ) {
|
327 |
+
return true;
|
328 |
+
} else {
|
329 |
+
add_action( 'admin_notices', array( $this, 'wrong_user_role_notice' ) );
|
330 |
+
return false;
|
331 |
+
}
|
332 |
+
}
|
333 |
+
|
334 |
+
/**
|
335 |
+
* wrong_user_role_notice.
|
336 |
+
*
|
337 |
+
* @version 2.9.0
|
338 |
+
* @since 2.9.0
|
339 |
+
*/
|
340 |
+
function wrong_user_role_notice() {
|
341 |
+
echo '<div class="notice notice-error is-dismissible"><p>' . __( 'You are not allowed to view the invoice.', 'woocommerce-jetpack' ) . '</p></div>';
|
342 |
+
}
|
343 |
+
|
344 |
/**
|
345 |
* generate_pdf_on_init.
|
346 |
*
|
347 |
+
* @version 2.9.0
|
348 |
*/
|
349 |
function generate_pdf_on_init() {
|
350 |
|
351 |
// Check if all is OK
|
352 |
+
if ( true !== $this->get_invoice || 0 == $this->order_id || ! is_user_logged_in() || ! $this->check_user_roles() ) {
|
|
|
|
|
|
|
|
|
|
|
353 |
return;
|
354 |
}
|
355 |
|
includes/class-wcj-price-by-user-role.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Price by User Role
|
4 |
*
|
5 |
-
* @version 2.
|
6 |
* @since 2.5.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
* @todo Fix "Make Empty Price" option for variable products
|
@@ -157,7 +157,7 @@ class WCJ_Price_By_User_Role extends WCJ_Module {
|
|
157 |
/**
|
158 |
* change_price.
|
159 |
*
|
160 |
-
* @version 2.
|
161 |
* @since 2.5.0
|
162 |
*/
|
163 |
function change_price( $price, $_product ) {
|
@@ -208,6 +208,17 @@ class WCJ_Price_By_User_Role extends WCJ_Module {
|
|
208 |
}
|
209 |
}
|
210 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
211 |
// By category
|
212 |
$categories = apply_filters( 'booster_get_option', '', get_option( 'wcj_price_by_user_role_categories', '' ) );
|
213 |
if ( ! empty( $categories ) ) {
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Price by User Role
|
4 |
*
|
5 |
+
* @version 2.9.0
|
6 |
* @since 2.5.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
* @todo Fix "Make Empty Price" option for variable products
|
157 |
/**
|
158 |
* change_price.
|
159 |
*
|
160 |
+
* @version 2.9.0
|
161 |
* @since 2.5.0
|
162 |
*/
|
163 |
function change_price( $price, $_product ) {
|
208 |
}
|
209 |
}
|
210 |
|
211 |
+
// Maybe disable for_products on sale
|
212 |
+
if ( 'yes' === get_option( 'wcj_price_by_user_role_disable_for_products_on_sale', 'no' ) ) {
|
213 |
+
wcj_remove_change_price_hooks( $this, PHP_INT_MAX - 200 );
|
214 |
+
if ( $_product && $_product->is_on_sale() ) {
|
215 |
+
wcj_add_change_price_hooks( $this, PHP_INT_MAX - 200 );
|
216 |
+
return $price;
|
217 |
+
} else {
|
218 |
+
wcj_add_change_price_hooks( $this, PHP_INT_MAX - 200 );
|
219 |
+
}
|
220 |
+
}
|
221 |
+
|
222 |
// By category
|
223 |
$categories = apply_filters( 'booster_get_option', '', get_option( 'wcj_price_by_user_role_categories', '' ) );
|
224 |
if ( ! empty( $categories ) ) {
|
includes/class-wcj-product-add-to-cart.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Product Add To Cart
|
4 |
*
|
5 |
-
* @version 2.
|
6 |
* @since 2.2.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
@@ -16,7 +16,7 @@ class WCJ_Product_Add_To_Cart extends WCJ_Module {
|
|
16 |
/**
|
17 |
* Constructor.
|
18 |
*
|
19 |
-
* @version 2.
|
20 |
*/
|
21 |
function __construct() {
|
22 |
|
@@ -40,6 +40,7 @@ class WCJ_Product_Add_To_Cart extends WCJ_Module {
|
|
40 |
'yes' === get_option( 'wcj_add_to_cart_button_per_product_enabled', 'no' ) ||
|
41 |
'yes' === get_option( 'wcj_add_to_cart_button_custom_loop_url_per_product_enabled', 'no' ) ||
|
42 |
'yes' === get_option( 'wcj_add_to_cart_button_ajax_per_product_enabled', 'no' ) ||
|
|
|
43 |
'per_product' === get_option( 'wcj_add_to_cart_on_visit_enabled', 'no' )
|
44 |
) {
|
45 |
add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );
|
@@ -55,8 +56,8 @@ class WCJ_Product_Add_To_Cart extends WCJ_Module {
|
|
55 |
}
|
56 |
|
57 |
// Local Redirect
|
58 |
-
if ( 'yes' === get_option( 'wcj_add_to_cart_redirect_enabled', 'no' ) ) {
|
59 |
-
add_filter( 'woocommerce_add_to_cart_redirect', array( $this, '
|
60 |
}
|
61 |
|
62 |
// Add to Cart on Visit
|
@@ -67,7 +68,7 @@ class WCJ_Product_Add_To_Cart extends WCJ_Module {
|
|
67 |
// Variable Add to Cart Template
|
68 |
if ( 'yes' === apply_filters( 'booster_get_option', 'wcj', get_option( 'wcj_add_to_cart_variable_as_radio_enabled', 'no' ) ) ) {
|
69 |
add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_variable_add_to_cart_scripts' ) );
|
70 |
-
add_filter( 'wc_get_template',
|
71 |
}
|
72 |
|
73 |
// Replace Add to Cart Loop with Single
|
@@ -325,11 +326,11 @@ class WCJ_Product_Add_To_Cart extends WCJ_Module {
|
|
325 |
/**
|
326 |
* enqueue_variable_add_to_cart_scripts.
|
327 |
*
|
328 |
-
* @version 2.
|
329 |
* @since 2.4.8
|
330 |
*/
|
331 |
function enqueue_variable_add_to_cart_scripts() {
|
332 |
-
wp_enqueue_script( 'wcj-variations', wcj_plugin_url() . '/includes/js/wcj-variations-frontend.js', array( 'jquery' ) );
|
333 |
}
|
334 |
|
335 |
/**
|
@@ -337,7 +338,6 @@ class WCJ_Product_Add_To_Cart extends WCJ_Module {
|
|
337 |
*
|
338 |
* @version 2.4.8
|
339 |
* @since 2.4.8
|
340 |
-
* @todo fix - variations images to changing (maybe check Crowdfunding plugin)
|
341 |
*/
|
342 |
function change_variable_add_to_cart_template( $located, $template_name, $args, $template_path, $default_path ) {
|
343 |
if ( 'single-product/add-to-cart/variable.php' == $template_name ) {
|
@@ -347,21 +347,38 @@ class WCJ_Product_Add_To_Cart extends WCJ_Module {
|
|
347 |
}
|
348 |
|
349 |
/*
|
350 |
-
*
|
|
|
|
|
351 |
*/
|
352 |
-
function
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
357 |
}
|
358 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
359 |
}
|
360 |
|
361 |
/*
|
362 |
* Add item to cart on visit.
|
363 |
*
|
364 |
-
* @version 2.
|
|
|
365 |
*/
|
366 |
function add_to_cart_on_visit() {
|
367 |
if ( ! is_admin() && ! ( defined( 'DOING_AJAX' ) && DOING_AJAX ) && is_product() && ( $product_id = get_the_ID() ) ) {
|
@@ -382,10 +399,21 @@ class WCJ_Product_Add_To_Cart extends WCJ_Module {
|
|
382 |
}
|
383 |
}
|
384 |
// Product not found - add it
|
385 |
-
WC()->cart->add_to_cart( $product_id );
|
386 |
} else {
|
387 |
// No products in cart - add it
|
388 |
-
WC()->cart->add_to_cart( $product_id );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
389 |
}
|
390 |
}
|
391 |
}
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Product Add To Cart
|
4 |
*
|
5 |
+
* @version 2.9.0
|
6 |
* @since 2.2.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
16 |
/**
|
17 |
* Constructor.
|
18 |
*
|
19 |
+
* @version 2.9.0
|
20 |
*/
|
21 |
function __construct() {
|
22 |
|
40 |
'yes' === get_option( 'wcj_add_to_cart_button_per_product_enabled', 'no' ) ||
|
41 |
'yes' === get_option( 'wcj_add_to_cart_button_custom_loop_url_per_product_enabled', 'no' ) ||
|
42 |
'yes' === get_option( 'wcj_add_to_cart_button_ajax_per_product_enabled', 'no' ) ||
|
43 |
+
'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_add_to_cart_redirect_per_product_enabled', 'no' ) ) ||
|
44 |
'per_product' === get_option( 'wcj_add_to_cart_on_visit_enabled', 'no' )
|
45 |
) {
|
46 |
add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );
|
56 |
}
|
57 |
|
58 |
// Local Redirect
|
59 |
+
if ( 'yes' === get_option( 'wcj_add_to_cart_redirect_enabled', 'no' ) || 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_add_to_cart_redirect_per_product_enabled', 'no' ) ) ) {
|
60 |
+
add_filter( 'woocommerce_add_to_cart_redirect', array( $this, 'maybe_redirect_to_url' ), PHP_INT_MAX );
|
61 |
}
|
62 |
|
63 |
// Add to Cart on Visit
|
68 |
// Variable Add to Cart Template
|
69 |
if ( 'yes' === apply_filters( 'booster_get_option', 'wcj', get_option( 'wcj_add_to_cart_variable_as_radio_enabled', 'no' ) ) ) {
|
70 |
add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_variable_add_to_cart_scripts' ) );
|
71 |
+
add_filter( 'wc_get_template', array( $this, 'change_variable_add_to_cart_template' ), PHP_INT_MAX, 5 );
|
72 |
}
|
73 |
|
74 |
// Replace Add to Cart Loop with Single
|
326 |
/**
|
327 |
* enqueue_variable_add_to_cart_scripts.
|
328 |
*
|
329 |
+
* @version 2.9.0
|
330 |
* @since 2.4.8
|
331 |
*/
|
332 |
function enqueue_variable_add_to_cart_scripts() {
|
333 |
+
wp_enqueue_script( 'wcj-variations', wcj_plugin_url() . '/includes/js/wcj-variations-frontend.js', array( 'jquery' ), WCJ()->version, true );
|
334 |
}
|
335 |
|
336 |
/**
|
338 |
*
|
339 |
* @version 2.4.8
|
340 |
* @since 2.4.8
|
|
|
341 |
*/
|
342 |
function change_variable_add_to_cart_template( $located, $template_name, $args, $template_path, $default_path ) {
|
343 |
if ( 'single-product/add-to-cart/variable.php' == $template_name ) {
|
347 |
}
|
348 |
|
349 |
/*
|
350 |
+
* maybe_redirect_to_url.
|
351 |
+
*
|
352 |
+
* @version 2.9.0
|
353 |
*/
|
354 |
+
function maybe_redirect_to_url( $url, $product_id = false ) {
|
355 |
+
if ( 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_add_to_cart_redirect_per_product_enabled', 'no' ) ) && ( $product_id || isset( $_REQUEST['add-to-cart'] ) ) ) {
|
356 |
+
if ( ! $product_id ) {
|
357 |
+
$product_id = apply_filters( 'woocommerce_add_to_cart_product_id', absint( $_REQUEST['add-to-cart'] ) );
|
358 |
+
}
|
359 |
+
if ( 'yes' === get_post_meta( $product_id, '_' . 'wcj_add_to_cart_redirect_enabled', true ) ) {
|
360 |
+
$redirect_url = get_post_meta( $product_id, '_' . 'wcj_add_to_cart_redirect_url', true );
|
361 |
+
if ( '' === $redirect_url ) {
|
362 |
+
$redirect_url = WC()->cart->get_checkout_url();
|
363 |
+
}
|
364 |
+
return $redirect_url;
|
365 |
+
}
|
366 |
}
|
367 |
+
if ( 'yes' === get_option( 'wcj_add_to_cart_redirect_enabled', 'no' ) ) {
|
368 |
+
$redirect_url = get_option( 'wcj_add_to_cart_redirect_url', '' );
|
369 |
+
if ( '' === $redirect_url ) {
|
370 |
+
$redirect_url = WC()->cart->get_checkout_url();
|
371 |
+
}
|
372 |
+
return $redirect_url;
|
373 |
+
}
|
374 |
+
return $url;
|
375 |
}
|
376 |
|
377 |
/*
|
378 |
* Add item to cart on visit.
|
379 |
*
|
380 |
+
* @version 2.9.0
|
381 |
+
* @todo (maybe) optionally add product every time page is visited (instead of only once)
|
382 |
*/
|
383 |
function add_to_cart_on_visit() {
|
384 |
if ( ! is_admin() && ! ( defined( 'DOING_AJAX' ) && DOING_AJAX ) && is_product() && ( $product_id = get_the_ID() ) ) {
|
399 |
}
|
400 |
}
|
401 |
// Product not found - add it
|
402 |
+
$was_added_to_cart = WC()->cart->add_to_cart( $product_id );
|
403 |
} else {
|
404 |
// No products in cart - add it
|
405 |
+
$was_added_to_cart = WC()->cart->add_to_cart( $product_id );
|
406 |
+
}
|
407 |
+
// Maybe perform add to cart redirect
|
408 |
+
if ( false !== $was_added_to_cart && (
|
409 |
+
'yes' === get_option( 'wcj_add_to_cart_redirect_enabled', 'no' ) ||
|
410 |
+
'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_add_to_cart_redirect_per_product_enabled', 'no' ) )
|
411 |
+
) ) {
|
412 |
+
if ( $redirect_url = $this->maybe_redirect_to_url( false, $product_id ) ) {
|
413 |
+
if ( wp_safe_redirect( $redirect_url ) ) {
|
414 |
+
exit;
|
415 |
+
}
|
416 |
+
}
|
417 |
}
|
418 |
}
|
419 |
}
|
includes/class-wcj-product-by-country.php
CHANGED
@@ -1,8 +1,8 @@
|
|
1 |
<?php
|
2 |
/**
|
3 |
-
* Booster for WooCommerce - Module - Product by Country
|
4 |
*
|
5 |
-
* @version 2.
|
6 |
* @since 2.5.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
@@ -16,7 +16,7 @@ class WCJ_Product_By_Country extends WCJ_Module {
|
|
16 |
/**
|
17 |
* Constructor.
|
18 |
*
|
19 |
-
* @version 2.
|
20 |
* @since 2.5.0
|
21 |
*/
|
22 |
function __construct() {
|
@@ -29,14 +29,100 @@ class WCJ_Product_By_Country extends WCJ_Module {
|
|
29 |
parent::__construct();
|
30 |
|
31 |
if ( $this->is_enabled() ) {
|
|
|
32 |
add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );
|
33 |
add_action( 'save_post_product', array( $this, 'save_meta_box' ), PHP_INT_MAX, 2 );
|
|
|
34 |
if ( ! is_admin() || ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) {
|
35 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
36 |
}
|
37 |
}
|
38 |
}
|
39 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
40 |
/**
|
41 |
* product_by_country.
|
42 |
*
|
1 |
<?php
|
2 |
/**
|
3 |
+
* Booster for WooCommerce - Module - Product Visibility by Country
|
4 |
*
|
5 |
+
* @version 2.9.0
|
6 |
* @since 2.5.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
16 |
/**
|
17 |
* Constructor.
|
18 |
*
|
19 |
+
* @version 2.9.0
|
20 |
* @since 2.5.0
|
21 |
*/
|
22 |
function __construct() {
|
29 |
parent::__construct();
|
30 |
|
31 |
if ( $this->is_enabled() ) {
|
32 |
+
// Product meta box
|
33 |
add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );
|
34 |
add_action( 'save_post_product', array( $this, 'save_meta_box' ), PHP_INT_MAX, 2 );
|
35 |
+
// Core
|
36 |
if ( ! is_admin() || ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) {
|
37 |
+
if ( 'yes' === get_option( 'wcj_product_by_country_visibility', 'yes' ) ) {
|
38 |
+
add_filter( 'woocommerce_product_is_visible', array( $this, 'product_by_country' ), PHP_INT_MAX, 2 );
|
39 |
+
}
|
40 |
+
if ( 'yes' === get_option( 'wcj_product_by_country_purchasable', 'no' ) ) {
|
41 |
+
add_filter( 'woocommerce_is_purchasable', array( $this, 'product_by_country_purchasable' ), PHP_INT_MAX, 2 );
|
42 |
+
}
|
43 |
+
if ( 'yes' === get_option( 'wcj_product_by_country_query', 'no' ) ) {
|
44 |
+
add_action( 'pre_get_posts', array( $this, 'product_by_country_pre_get_posts' ) );
|
45 |
+
}
|
46 |
+
|
47 |
+
}
|
48 |
+
// Admin products list
|
49 |
+
if ( 'yes' === get_option( 'wcj_product_by_country_add_column_visible_countries', 'no' ) ) {
|
50 |
+
add_filter( 'manage_edit-product_columns', array( $this, 'add_product_columns' ), PHP_INT_MAX );
|
51 |
+
add_action( 'manage_product_posts_custom_column', array( $this, 'render_product_column' ), PHP_INT_MAX );
|
52 |
}
|
53 |
}
|
54 |
}
|
55 |
|
56 |
+
/**
|
57 |
+
* add_product_columns.
|
58 |
+
*
|
59 |
+
* @version 2.9.0
|
60 |
+
* @since 2.9.0
|
61 |
+
*/
|
62 |
+
function add_product_columns( $columns ) {
|
63 |
+
$columns[ 'wcj_product_by_country_visible_countries' ] = __( 'Countries', 'woocommerce-jetpack' );
|
64 |
+
return $columns;
|
65 |
+
}
|
66 |
+
|
67 |
+
/**
|
68 |
+
* render_product_column.
|
69 |
+
*
|
70 |
+
* @version 2.9.0
|
71 |
+
* @since 2.9.0
|
72 |
+
*/
|
73 |
+
function render_product_column( $column ) {
|
74 |
+
if ( 'wcj_product_by_country_visible_countries' === $column ) {
|
75 |
+
if ( $countries = get_post_meta( get_the_ID(), '_' . 'wcj_product_by_country_visible', true ) ) {
|
76 |
+
if ( is_array( $countries ) ) {
|
77 |
+
echo implode( ', ', $countries );
|
78 |
+
}
|
79 |
+
}
|
80 |
+
}
|
81 |
+
}
|
82 |
+
|
83 |
+
/**
|
84 |
+
* product_by_country_pre_get_posts.
|
85 |
+
*
|
86 |
+
* @version 2.9.0
|
87 |
+
* @since 2.9.0
|
88 |
+
*/
|
89 |
+
function product_by_country_pre_get_posts( $query ) {
|
90 |
+
if ( is_admin() ) {
|
91 |
+
return;
|
92 |
+
}
|
93 |
+
remove_action( 'pre_get_posts', array( $this, 'product_by_country_pre_get_posts' ) );
|
94 |
+
// Get the country by IP
|
95 |
+
$location = WC_Geolocation::geolocate_ip();
|
96 |
+
if ( empty( $location['country'] ) ) {
|
97 |
+
// Base fallback
|
98 |
+
$location = wc_format_country_state_string( apply_filters( 'woocommerce_customer_default_location', get_option( 'woocommerce_default_country' ) ) );
|
99 |
+
}
|
100 |
+
$country = ( isset( $location['country'] ) ) ? $location['country'] : '';
|
101 |
+
// Calculate `post__not_in`
|
102 |
+
$post__not_in = array();
|
103 |
+
$args = $query->query;
|
104 |
+
$args['fields'] = 'ids';
|
105 |
+
$loop = new WP_Query( $args );
|
106 |
+
foreach ( $loop->posts as $product_id ) {
|
107 |
+
$visible_countries = get_post_meta( $product_id, '_' . 'wcj_product_by_country_visible', true );
|
108 |
+
if ( is_array( $visible_countries ) && ! in_array( $country, $visible_countries ) ) {
|
109 |
+
$post__not_in[] = $product_id;
|
110 |
+
}
|
111 |
+
}
|
112 |
+
$query->set( 'post__not_in', $post__not_in );
|
113 |
+
add_action( 'pre_get_posts', array( $this, 'product_by_country_pre_get_posts' ) );
|
114 |
+
}
|
115 |
+
|
116 |
+
/**
|
117 |
+
* product_by_country_purchasable.
|
118 |
+
*
|
119 |
+
* @version 2.9.0
|
120 |
+
* @since 2.9.0
|
121 |
+
*/
|
122 |
+
function product_by_country_purchasable( $purchasable, $_product ) {
|
123 |
+
return $this->product_by_country( $purchasable, wcj_get_product_id_or_variation_parent_id( $_product ) );
|
124 |
+
}
|
125 |
+
|
126 |
/**
|
127 |
* product_by_country.
|
128 |
*
|
includes/class-wcj-product-by-user-role.php
CHANGED
@@ -18,6 +18,7 @@ class WCJ_Product_By_User_Role extends WCJ_Module {
|
|
18 |
*
|
19 |
* @version 2.8.0
|
20 |
* @since 2.5.5
|
|
|
21 |
*/
|
22 |
function __construct() {
|
23 |
|
@@ -50,7 +51,8 @@ class WCJ_Product_By_User_Role extends WCJ_Module {
|
|
50 |
*
|
51 |
* @version 2.7.0
|
52 |
* @since 2.6.0
|
53 |
-
* @todo add
|
|
|
54 |
*/
|
55 |
function product_by_user_role_pre_get_posts( $query ) {
|
56 |
if ( is_admin() ) {
|
18 |
*
|
19 |
* @version 2.8.0
|
20 |
* @since 2.5.5
|
21 |
+
* @todo add "Admin Products List Column" option (same as in "Product Visibility by Country" module)
|
22 |
*/
|
23 |
function __construct() {
|
24 |
|
51 |
*
|
52 |
* @version 2.7.0
|
53 |
* @since 2.6.0
|
54 |
+
* @todo (maybe) add global function for this, as similar code is in "Product Visibility by Country" module
|
55 |
+
* @todo check if `purchasable` and `pre_get_posts` hooks should be added to other "Product Visibility" modules
|
56 |
*/
|
57 |
function product_by_user_role_pre_get_posts( $query ) {
|
58 |
if ( is_admin() ) {
|
includes/class-wcj-product-by-user.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Product by User
|
4 |
*
|
5 |
-
* @version 2.
|
6 |
* @since 2.5.2
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
@@ -16,8 +16,9 @@ class WCJ_Product_By_User extends WCJ_Module {
|
|
16 |
/**
|
17 |
* Constructor.
|
18 |
*
|
19 |
-
* @version 2.
|
20 |
* @since 2.5.2
|
|
|
21 |
*/
|
22 |
function __construct() {
|
23 |
|
@@ -28,6 +29,12 @@ class WCJ_Product_By_User extends WCJ_Module {
|
|
28 |
$this->extra_desc = __( 'Use <strong>[wcj_product_add_new]</strong> shortcode to add product upload form to frontend.', 'woocommerce-jetpack' );
|
29 |
parent::__construct();
|
30 |
|
|
|
|
|
|
|
|
|
|
|
|
|
31 |
if ( $this->is_enabled() ) {
|
32 |
if ( 'yes' === get_option( 'wcj_product_by_user_add_to_my_account', 'yes' ) ) {
|
33 |
add_filter( 'woocommerce_account_menu_items', array( $this, 'add_my_products_tab_my_account_page' ) );
|
@@ -37,6 +44,41 @@ class WCJ_Product_By_User extends WCJ_Module {
|
|
37 |
}
|
38 |
}
|
39 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
40 |
/*
|
41 |
* Change endpoint title.
|
42 |
*
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Product by User
|
4 |
*
|
5 |
+
* @version 2.9.0
|
6 |
* @since 2.5.2
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
16 |
/**
|
17 |
* Constructor.
|
18 |
*
|
19 |
+
* @version 2.9.0
|
20 |
* @since 2.5.2
|
21 |
+
* @todo run `add_my_products_endpoint` only if module is enabled
|
22 |
*/
|
23 |
function __construct() {
|
24 |
|
29 |
$this->extra_desc = __( 'Use <strong>[wcj_product_add_new]</strong> shortcode to add product upload form to frontend.', 'woocommerce-jetpack' );
|
30 |
parent::__construct();
|
31 |
|
32 |
+
// My Products endpoint
|
33 |
+
register_activation_hook( __FILE__, array( $this, 'add_my_products_endpoint_flush_rewrite_rules' ) );
|
34 |
+
register_deactivation_hook( __FILE__, array( $this, 'add_my_products_endpoint_flush_rewrite_rules' ) );
|
35 |
+
add_filter( 'query_vars', array( $this, 'add_my_products_endpoint_query_var' ), 0 );
|
36 |
+
add_action( 'init', array( $this, 'add_my_products_endpoint' ) );
|
37 |
+
|
38 |
if ( $this->is_enabled() ) {
|
39 |
if ( 'yes' === get_option( 'wcj_product_by_user_add_to_my_account', 'yes' ) ) {
|
40 |
add_filter( 'woocommerce_account_menu_items', array( $this, 'add_my_products_tab_my_account_page' ) );
|
44 |
}
|
45 |
}
|
46 |
|
47 |
+
/**
|
48 |
+
* Flush rewrite rules on plugin activation.
|
49 |
+
*
|
50 |
+
* @version 2.5.7
|
51 |
+
* @since 2.5.7
|
52 |
+
*/
|
53 |
+
function add_my_products_endpoint_flush_rewrite_rules() {
|
54 |
+
add_rewrite_endpoint( 'wcj-my-products', EP_ROOT | EP_PAGES );
|
55 |
+
flush_rewrite_rules();
|
56 |
+
}
|
57 |
+
|
58 |
+
/**
|
59 |
+
* Add new query var.
|
60 |
+
*
|
61 |
+
* @version 2.5.7
|
62 |
+
* @since 2.5.7
|
63 |
+
* @param array $vars
|
64 |
+
* @return array
|
65 |
+
*/
|
66 |
+
function add_my_products_endpoint_query_var( $vars ) {
|
67 |
+
$vars[] = 'wcj-my-products';
|
68 |
+
return $vars;
|
69 |
+
}
|
70 |
+
|
71 |
+
/**
|
72 |
+
* Register new endpoint to use inside My Account page.
|
73 |
+
*
|
74 |
+
* @version 2.5.7
|
75 |
+
* @since 2.5.7
|
76 |
+
* @see https://developer.wordpress.org/reference/functions/add_rewrite_endpoint/
|
77 |
+
*/
|
78 |
+
function add_my_products_endpoint() {
|
79 |
+
add_rewrite_endpoint( 'wcj-my-products', EP_ROOT | EP_PAGES );
|
80 |
+
}
|
81 |
+
|
82 |
/*
|
83 |
* Change endpoint title.
|
84 |
*
|
includes/class-wcj-product-custom-info.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Product Info
|
4 |
*
|
5 |
-
* @version 2.
|
6 |
* @since 2.4.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
@@ -41,32 +41,71 @@ class WCJ_Product_Custom_info extends WCJ_Module {
|
|
41 |
}
|
42 |
}
|
43 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
44 |
/**
|
45 |
* add_product_custom_info.
|
46 |
*
|
47 |
-
* @version 2.
|
48 |
*/
|
49 |
function add_product_custom_info() {
|
50 |
-
$
|
|
|
51 |
$current_filter_priority = wcj_current_filter_priority();
|
52 |
$single_or_archive_array = array( 'single', 'archive' );
|
53 |
foreach ( $single_or_archive_array as $single_or_archive ) {
|
54 |
$default_hook = ( 'single' === $single_or_archive ) ? 'woocommerce_after_single_product_summary' : 'woocommerce_after_shop_loop_item_title';
|
55 |
for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_product_custom_info_total_number_' . $single_or_archive, 1 ) ); $i++ ) {
|
56 |
-
if (
|
57 |
-
|
58 |
-
$current_filter === get_option( 'wcj_product_custom_info_hook_' . $single_or_archive . '_' . $i, $default_hook ) &&
|
59 |
-
$current_filter_priority == get_option( 'wcj_product_custom_info_priority_' . $single_or_archive . '_' . $i, 10 )
|
60 |
-
) {
|
61 |
-
$products_to_exclude = get_option( 'wcj_product_custom_info_products_to_exclude_' . $single_or_archive . '_' . $i );
|
62 |
-
$products_to_include = get_option( 'wcj_product_custom_info_products_to_include_' . $single_or_archive . '_' . $i );
|
63 |
-
$product_id = get_the_ID();
|
64 |
-
if (
|
65 |
-
( empty( $products_to_exclude ) || ! in_array( $product_id, $products_to_exclude ) ) &&
|
66 |
-
( empty( $products_to_include ) || in_array( $product_id, $products_to_include ) )
|
67 |
-
) {
|
68 |
-
echo do_shortcode( get_option( 'wcj_product_custom_info_content_' . $single_or_archive . '_' . $i ) );
|
69 |
-
}
|
70 |
}
|
71 |
}
|
72 |
}
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Product Info
|
4 |
*
|
5 |
+
* @version 2.9.0
|
6 |
* @since 2.4.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
41 |
}
|
42 |
}
|
43 |
|
44 |
+
/**
|
45 |
+
* is_visible.
|
46 |
+
*
|
47 |
+
* @version 2.9.0
|
48 |
+
* @since 2.9.0
|
49 |
+
*/
|
50 |
+
function is_visible( $product_id, $current_filter, $current_filter_priority, $default_hook, $single_or_archive, $i ) {
|
51 |
+
return (
|
52 |
+
$this->check_content_and_filter( $current_filter, $current_filter_priority, $default_hook, $single_or_archive, $i ) &&
|
53 |
+
$this->check_included_and_excluded( $product_id, $single_or_archive, $i )
|
54 |
+
);
|
55 |
+
}
|
56 |
+
|
57 |
+
/**
|
58 |
+
* check_content_and_filter.
|
59 |
+
*
|
60 |
+
* @version 2.9.0
|
61 |
+
* @since 2.9.0
|
62 |
+
*/
|
63 |
+
function check_content_and_filter( $current_filter, $current_filter_priority, $default_hook, $single_or_archive, $i ) {
|
64 |
+
return (
|
65 |
+
'' != get_option( 'wcj_product_custom_info_content_' . $single_or_archive . '_' . $i ) &&
|
66 |
+
$current_filter === get_option( 'wcj_product_custom_info_hook_' . $single_or_archive . '_' . $i, $default_hook ) &&
|
67 |
+
$current_filter_priority == get_option( 'wcj_product_custom_info_priority_' . $single_or_archive . '_' . $i, 10 )
|
68 |
+
);
|
69 |
+
}
|
70 |
+
|
71 |
+
/**
|
72 |
+
* check_included_and_excluded.
|
73 |
+
*
|
74 |
+
* @version 2.9.0
|
75 |
+
* @since 2.9.0
|
76 |
+
*/
|
77 |
+
function check_included_and_excluded( $product_id, $single_or_archive, $i ) {
|
78 |
+
$product_cats_to_include = get_option( 'wcj_product_custom_info_product_cats_to_include_' . $single_or_archive . '_' . $i );
|
79 |
+
$product_cats_to_exclude = get_option( 'wcj_product_custom_info_product_cats_to_exclude_' . $single_or_archive . '_' . $i );
|
80 |
+
$product_tags_to_include = get_option( 'wcj_product_custom_info_product_tags_to_include_' . $single_or_archive . '_' . $i );
|
81 |
+
$product_tags_to_exclude = get_option( 'wcj_product_custom_info_product_tags_to_exclude_' . $single_or_archive . '_' . $i );
|
82 |
+
$products_to_exclude = get_option( 'wcj_product_custom_info_products_to_exclude_' . $single_or_archive . '_' . $i );
|
83 |
+
$products_to_include = get_option( 'wcj_product_custom_info_products_to_include_' . $single_or_archive . '_' . $i );
|
84 |
+
return (
|
85 |
+
( empty( $product_cats_to_exclude ) || ! wcj_is_product_term( $product_id, $product_cats_to_exclude, 'product_cat' ) ) &&
|
86 |
+
( empty( $product_cats_to_include ) || wcj_is_product_term( $product_id, $product_cats_to_include, 'product_cat' ) ) &&
|
87 |
+
( empty( $product_tags_to_exclude ) || ! wcj_is_product_term( $product_id, $product_tags_to_exclude, 'product_tag' ) ) &&
|
88 |
+
( empty( $product_tags_to_include ) || wcj_is_product_term( $product_id, $product_tags_to_include, 'product_tag' ) ) &&
|
89 |
+
( empty( $products_to_exclude ) || ! in_array( $product_id, $products_to_exclude ) ) &&
|
90 |
+
( empty( $products_to_include ) || in_array( $product_id, $products_to_include ) )
|
91 |
+
);
|
92 |
+
}
|
93 |
+
|
94 |
/**
|
95 |
* add_product_custom_info.
|
96 |
*
|
97 |
+
* @version 2.9.0
|
98 |
*/
|
99 |
function add_product_custom_info() {
|
100 |
+
$product_id = get_the_ID();
|
101 |
+
$current_filter = current_filter();
|
102 |
$current_filter_priority = wcj_current_filter_priority();
|
103 |
$single_or_archive_array = array( 'single', 'archive' );
|
104 |
foreach ( $single_or_archive_array as $single_or_archive ) {
|
105 |
$default_hook = ( 'single' === $single_or_archive ) ? 'woocommerce_after_single_product_summary' : 'woocommerce_after_shop_loop_item_title';
|
106 |
for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_product_custom_info_total_number_' . $single_or_archive, 1 ) ); $i++ ) {
|
107 |
+
if ( $this->is_visible( $product_id, $current_filter, $current_filter_priority, $default_hook, $single_or_archive, $i ) ) {
|
108 |
+
echo do_shortcode( get_option( 'wcj_product_custom_info_content_' . $single_or_archive . '_' . $i ) );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
109 |
}
|
110 |
}
|
111 |
}
|
includes/class-wcj-product-images.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Product Images
|
4 |
*
|
5 |
-
* @version 2.
|
6 |
* @since 2.2.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
@@ -93,15 +93,15 @@ class WCJ_Product_Images extends WCJ_Module {
|
|
93 |
/**
|
94 |
* customize_archive_product_image_html.
|
95 |
*
|
96 |
-
* @version 2.
|
97 |
* @since 2.2.6
|
98 |
*/
|
99 |
function customize_archive_product_image_html() {
|
100 |
$post_id = get_the_ID();
|
101 |
if ( $post_id > 0 && '' != get_post_meta( $post_id, '_' . 'wcj_product_images_meta_custom_on_archives', true ) ) {
|
102 |
-
echo get_post_meta( $post_id, '_' . 'wcj_product_images_meta_custom_on_archives', true );
|
103 |
} elseif ( '' != get_option( 'wcj_product_images_custom_on_archives', '' ) ) {
|
104 |
-
echo get_option( 'wcj_product_images_custom_on_archives' );
|
105 |
}
|
106 |
}
|
107 |
|
@@ -130,13 +130,13 @@ class WCJ_Product_Images extends WCJ_Module {
|
|
130 |
/**
|
131 |
* customize_single_product_image_html.
|
132 |
*
|
133 |
-
* @version 2.
|
134 |
*/
|
135 |
function customize_single_product_image_html( $image_link, $post_id ) {
|
136 |
if ( '' != ( $html_single = get_post_meta( $post_id, '_' . 'wcj_product_images_meta_custom_on_single', true ) ) ) {
|
137 |
-
return $html_single;
|
138 |
} elseif ( '' != ( $html_global = get_option( 'wcj_product_images_custom_on_single', '' ) ) ) {
|
139 |
-
return $html_global;
|
140 |
} elseif ( 'yes' === get_option( 'wcj_product_images_hide_on_single', 'no' ) ) {
|
141 |
return '';
|
142 |
} elseif ( 'yes' === get_post_meta( $post_id, '_' . 'wcj_product_images_hide_image_on_single', true ) ) {
|
@@ -148,12 +148,12 @@ class WCJ_Product_Images extends WCJ_Module {
|
|
148 |
/**
|
149 |
* customize_single_product_image_thumbnail_html.
|
150 |
*
|
151 |
-
* @version 2.
|
152 |
*/
|
153 |
function customize_single_product_image_thumbnail_html( $image_link ) {
|
154 |
$post_id = get_the_ID();
|
155 |
if ( '' != get_option( 'wcj_product_images_thumbnails_custom_on_single', '' ) ) {
|
156 |
-
return get_option( 'wcj_product_images_thumbnails_custom_on_single' );
|
157 |
} elseif ( 'yes' === get_option( 'wcj_product_images_thumbnails_hide_on_single', 'no' ) ) {
|
158 |
return '';
|
159 |
} elseif ( $post_id > 0 && 'yes' === get_post_meta( $post_id, '_' . 'wcj_product_images_hide_thumb_on_single', true ) ) {
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Product Images
|
4 |
*
|
5 |
+
* @version 2.9.0
|
6 |
* @since 2.2.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
93 |
/**
|
94 |
* customize_archive_product_image_html.
|
95 |
*
|
96 |
+
* @version 2.9.0
|
97 |
* @since 2.2.6
|
98 |
*/
|
99 |
function customize_archive_product_image_html() {
|
100 |
$post_id = get_the_ID();
|
101 |
if ( $post_id > 0 && '' != get_post_meta( $post_id, '_' . 'wcj_product_images_meta_custom_on_archives', true ) ) {
|
102 |
+
echo do_shortcode( get_post_meta( $post_id, '_' . 'wcj_product_images_meta_custom_on_archives', true ) );
|
103 |
} elseif ( '' != get_option( 'wcj_product_images_custom_on_archives', '' ) ) {
|
104 |
+
echo do_shortcode( get_option( 'wcj_product_images_custom_on_archives' ) );
|
105 |
}
|
106 |
}
|
107 |
|
130 |
/**
|
131 |
* customize_single_product_image_html.
|
132 |
*
|
133 |
+
* @version 2.9.0
|
134 |
*/
|
135 |
function customize_single_product_image_html( $image_link, $post_id ) {
|
136 |
if ( '' != ( $html_single = get_post_meta( $post_id, '_' . 'wcj_product_images_meta_custom_on_single', true ) ) ) {
|
137 |
+
return do_shortcode( $html_single );
|
138 |
} elseif ( '' != ( $html_global = get_option( 'wcj_product_images_custom_on_single', '' ) ) ) {
|
139 |
+
return do_shortcode( $html_global );
|
140 |
} elseif ( 'yes' === get_option( 'wcj_product_images_hide_on_single', 'no' ) ) {
|
141 |
return '';
|
142 |
} elseif ( 'yes' === get_post_meta( $post_id, '_' . 'wcj_product_images_hide_image_on_single', true ) ) {
|
148 |
/**
|
149 |
* customize_single_product_image_thumbnail_html.
|
150 |
*
|
151 |
+
* @version 2.9.0
|
152 |
*/
|
153 |
function customize_single_product_image_thumbnail_html( $image_link ) {
|
154 |
$post_id = get_the_ID();
|
155 |
if ( '' != get_option( 'wcj_product_images_thumbnails_custom_on_single', '' ) ) {
|
156 |
+
return do_shortcode( get_option( 'wcj_product_images_thumbnails_custom_on_single' ) );
|
157 |
} elseif ( 'yes' === get_option( 'wcj_product_images_thumbnails_hide_on_single', 'no' ) ) {
|
158 |
return '';
|
159 |
} elseif ( $post_id > 0 && 'yes' === get_post_meta( $post_id, '_' . 'wcj_product_images_hide_thumb_on_single', true ) ) {
|
includes/class-wcj-product-input-fields.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Product Input Fields
|
4 |
*
|
5 |
-
* @version 2.
|
6 |
* @author Algoritmika Ltd.
|
7 |
*/
|
8 |
|
@@ -88,16 +88,20 @@ class WCJ_Product_Input_Fields extends WCJ_Module {
|
|
88 |
|
89 |
/**
|
90 |
* register_script.
|
|
|
|
|
91 |
*/
|
92 |
function register_scripts() {
|
93 |
-
wp_register_script( 'wcj-product-input-fields',
|
94 |
}
|
95 |
|
96 |
/**
|
97 |
* enqueue_checkout_script.
|
98 |
*/
|
99 |
function enqueue_scripts() {
|
100 |
-
if( ! is_product() )
|
|
|
|
|
101 |
wp_enqueue_script( 'wcj-product-input-fields' );
|
102 |
}
|
103 |
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Product Input Fields
|
4 |
*
|
5 |
+
* @version 2.9.0
|
6 |
* @author Algoritmika Ltd.
|
7 |
*/
|
8 |
|
88 |
|
89 |
/**
|
90 |
* register_script.
|
91 |
+
*
|
92 |
+
* @version 2.9.0
|
93 |
*/
|
94 |
function register_scripts() {
|
95 |
+
wp_register_script( 'wcj-product-input-fields', wcj_plugin_url() . '/includes/js/wcj-product-input-fields.js', array( 'jquery' ), WCJ()->version, true );
|
96 |
}
|
97 |
|
98 |
/**
|
99 |
* enqueue_checkout_script.
|
100 |
*/
|
101 |
function enqueue_scripts() {
|
102 |
+
if( ! is_product() ) {
|
103 |
+
return;
|
104 |
+
}
|
105 |
wp_enqueue_script( 'wcj-product-input-fields' );
|
106 |
}
|
107 |
|
includes/class-wcj-product-listings.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Product Listings
|
4 |
*
|
5 |
-
* @version 2.
|
6 |
* @author Algoritmika Ltd.
|
7 |
*/
|
8 |
|
@@ -15,7 +15,7 @@ class WCJ_Product_Listings extends WCJ_Module {
|
|
15 |
/**
|
16 |
* Constructor.
|
17 |
*
|
18 |
-
* @version 2.
|
19 |
*/
|
20 |
function __construct() {
|
21 |
$this->id = 'product_listings';
|
@@ -37,6 +37,96 @@ class WCJ_Product_Listings extends WCJ_Module {
|
|
37 |
|
38 |
// Tax Incl./Excl. by product/category
|
39 |
add_filter( 'option_woocommerce_tax_display_shop', array( $this, 'tax_display' ), PHP_INT_MAX );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
40 |
}
|
41 |
}
|
42 |
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Product Listings
|
4 |
*
|
5 |
+
* @version 2.9.0
|
6 |
* @author Algoritmika Ltd.
|
7 |
*/
|
8 |
|
15 |
/**
|
16 |
* Constructor.
|
17 |
*
|
18 |
+
* @version 2.9.0
|
19 |
*/
|
20 |
function __construct() {
|
21 |
$this->id = 'product_listings';
|
37 |
|
38 |
// Tax Incl./Excl. by product/category
|
39 |
add_filter( 'option_woocommerce_tax_display_shop', array( $this, 'tax_display' ), PHP_INT_MAX );
|
40 |
+
|
41 |
+
// Admin list - custom columns
|
42 |
+
if ( 'yes' === get_option( 'wcj_products_admin_list_custom_columns_enabled', 'no' ) ) {
|
43 |
+
add_filter( 'manage_edit-product_columns', array( $this, 'add_product_columns' ), PHP_INT_MAX );
|
44 |
+
add_action( 'manage_product_posts_custom_column', array( $this, 'render_product_column' ), PHP_INT_MAX );
|
45 |
+
}
|
46 |
+
|
47 |
+
// Admin list - columns order
|
48 |
+
if ( 'yes' === get_option( 'wcj_products_admin_list_columns_order_enabled', 'no' ) ) {
|
49 |
+
add_filter( 'manage_edit-product_columns', array( $this, 'rearange_product_columns' ), PHP_INT_MAX );
|
50 |
+
}
|
51 |
+
}
|
52 |
+
}
|
53 |
+
|
54 |
+
/**
|
55 |
+
* rearange_product_columns.
|
56 |
+
*
|
57 |
+
* @version 2.9.0
|
58 |
+
* @since 2.9.0
|
59 |
+
*/
|
60 |
+
function rearange_product_columns( $columns ) {
|
61 |
+
$reordered_columns = get_option( 'wcj_products_admin_list_columns_order', $this->get_products_default_columns_in_order() );
|
62 |
+
$reordered_columns = explode( PHP_EOL, $reordered_columns );
|
63 |
+
$reordered_columns_result = array();
|
64 |
+
if ( ! empty( $reordered_columns ) ) {
|
65 |
+
foreach ( $reordered_columns as $column_id ) {
|
66 |
+
$column_id = str_replace( "\n", '', $column_id );
|
67 |
+
$column_id = str_replace( "\r", '', $column_id );
|
68 |
+
if ( '' != $column_id && isset( $columns[ $column_id ] ) ) {
|
69 |
+
$reordered_columns_result[ $column_id ] = $columns[ $column_id ];
|
70 |
+
unset( $columns[ $column_id ] );
|
71 |
+
}
|
72 |
+
}
|
73 |
+
}
|
74 |
+
return array_merge( $reordered_columns_result, $columns );
|
75 |
+
}
|
76 |
+
|
77 |
+
/**
|
78 |
+
* get_products_default_columns_in_order.
|
79 |
+
*
|
80 |
+
* @version 2.9.0
|
81 |
+
* @since 2.9.0
|
82 |
+
*/
|
83 |
+
function get_products_default_columns_in_order() {
|
84 |
+
$columns = array(
|
85 |
+
'cb',
|
86 |
+
'thumb',
|
87 |
+
'name',
|
88 |
+
'sku',
|
89 |
+
'is_in_stock',
|
90 |
+
'price',
|
91 |
+
'product_cat',
|
92 |
+
'product_tag',
|
93 |
+
'featured',
|
94 |
+
'product_type',
|
95 |
+
'date',
|
96 |
+
);
|
97 |
+
return implode( PHP_EOL, $columns );
|
98 |
+
}
|
99 |
+
|
100 |
+
/**
|
101 |
+
* add_product_columns.
|
102 |
+
*
|
103 |
+
* @version 2.9.0
|
104 |
+
* @since 2.9.0
|
105 |
+
*/
|
106 |
+
function add_product_columns( $columns ) {
|
107 |
+
$total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_products_admin_list_custom_columns_total_number', 1 ) );
|
108 |
+
for ( $i = 1; $i <= $total_number; $i++ ) {
|
109 |
+
if ( 'yes' === get_option( 'wcj_products_admin_list_custom_columns_enabled_' . $i, 'no' ) ) {
|
110 |
+
$columns[ 'wcj_products_custom_column_' . $i ] = get_option( 'wcj_products_admin_list_custom_columns_label_' . $i, '' );
|
111 |
+
}
|
112 |
+
}
|
113 |
+
return $columns;
|
114 |
+
}
|
115 |
+
|
116 |
+
/**
|
117 |
+
* render_product_column.
|
118 |
+
*
|
119 |
+
* @version 2.9.0
|
120 |
+
* @since 2.9.0
|
121 |
+
*/
|
122 |
+
function render_product_column( $column ) {
|
123 |
+
$total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_products_admin_list_custom_columns_total_number', 1 ) );
|
124 |
+
for ( $i = 1; $i <= $total_number; $i++ ) {
|
125 |
+
if ( 'yes' === get_option( 'wcj_products_admin_list_custom_columns_enabled_' . $i, 'no' ) ) {
|
126 |
+
if ( 'wcj_products_custom_column_' . $i === $column ) {
|
127 |
+
echo do_shortcode( get_option( 'wcj_products_admin_list_custom_columns_value_' . $i, '' ) );
|
128 |
+
}
|
129 |
+
}
|
130 |
}
|
131 |
}
|
132 |
|
includes/class-wcj-product-open-pricing.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Product Open Pricing
|
4 |
*
|
5 |
-
* @version 2.
|
6 |
* @since 2.4.8
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
@@ -16,7 +16,7 @@ class WCJ_Product_Open_Pricing extends WCJ_Module {
|
|
16 |
/**
|
17 |
* Constructor.
|
18 |
*
|
19 |
-
* @version 2.
|
20 |
* @since 2.4.8
|
21 |
*/
|
22 |
function __construct() {
|
@@ -34,7 +34,9 @@ class WCJ_Product_Open_Pricing extends WCJ_Module {
|
|
34 |
add_filter( 'woocommerce_product_variation_get_price',array( $this, 'get_open_price' ), PHP_INT_MAX, 2 );
|
35 |
add_filter( 'woocommerce_get_price_html', array( $this, 'hide_original_price' ), PHP_INT_MAX, 2 );
|
36 |
add_filter( 'woocommerce_get_variation_price_html', array( $this, 'hide_original_price' ), PHP_INT_MAX, 2 );
|
37 |
-
|
|
|
|
|
38 |
add_filter( 'woocommerce_is_purchasable', array( $this, 'is_purchasable' ), PHP_INT_MAX, 2 );
|
39 |
add_filter( 'woocommerce_product_supports', array( $this, 'disable_add_to_cart_ajax' ), PHP_INT_MAX, 3 );
|
40 |
add_filter( 'woocommerce_product_add_to_cart_url', array( $this, 'add_to_cart_url' ), PHP_INT_MAX, 2 );
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Product Open Pricing
|
4 |
*
|
5 |
+
* @version 2.9.0
|
6 |
* @since 2.4.8
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
16 |
/**
|
17 |
* Constructor.
|
18 |
*
|
19 |
+
* @version 2.9.0
|
20 |
* @since 2.4.8
|
21 |
*/
|
22 |
function __construct() {
|
34 |
add_filter( 'woocommerce_product_variation_get_price',array( $this, 'get_open_price' ), PHP_INT_MAX, 2 );
|
35 |
add_filter( 'woocommerce_get_price_html', array( $this, 'hide_original_price' ), PHP_INT_MAX, 2 );
|
36 |
add_filter( 'woocommerce_get_variation_price_html', array( $this, 'hide_original_price' ), PHP_INT_MAX, 2 );
|
37 |
+
if ( 'yes' === get_option( 'wcj_product_open_price_disable_quantity', 'yes' ) ) {
|
38 |
+
add_filter( 'woocommerce_is_sold_individually', array( $this, 'hide_quantity_input_field' ), PHP_INT_MAX, 2 );
|
39 |
+
}
|
40 |
add_filter( 'woocommerce_is_purchasable', array( $this, 'is_purchasable' ), PHP_INT_MAX, 2 );
|
41 |
add_filter( 'woocommerce_product_supports', array( $this, 'disable_add_to_cart_ajax' ), PHP_INT_MAX, 3 );
|
42 |
add_filter( 'woocommerce_product_add_to_cart_url', array( $this, 'add_to_cart_url' ), PHP_INT_MAX, 2 );
|
includes/class-wcj-products-per-page.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Products per Page
|
4 |
*
|
5 |
-
* @version 2.
|
6 |
* @since 2.6.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
@@ -20,6 +20,7 @@ class WCJ_Products_Per_Page extends WCJ_Module {
|
|
20 |
* @since 2.6.0
|
21 |
* @todo position priority for every hook
|
22 |
* @todo post or get
|
|
|
23 |
*/
|
24 |
function __construct() {
|
25 |
|
@@ -41,15 +42,15 @@ class WCJ_Products_Per_Page extends WCJ_Module {
|
|
41 |
/**
|
42 |
* add_products_per_page_form.
|
43 |
*
|
44 |
-
* @version 2.
|
45 |
* @since 2.5.3
|
46 |
*/
|
47 |
function add_products_per_page_form() {
|
48 |
|
49 |
global $wp_query;
|
50 |
|
51 |
-
if ( isset( $
|
52 |
-
$products_per_page = $
|
53 |
} elseif ( isset( $_COOKIE['wcj_products_per_page'] ) ) {
|
54 |
$products_per_page = $_COOKIE['wcj_products_per_page'];
|
55 |
} else {
|
@@ -65,14 +66,7 @@ class WCJ_Products_Per_Page extends WCJ_Module {
|
|
65 |
$products_to = ( $paged - 1 ) * $products_per_page + $wp_query->post_count;
|
66 |
$products_total = $wp_query->found_posts;
|
67 |
|
68 |
-
$html = '';
|
69 |
-
$html .= '<div class="clearfix"></div>';
|
70 |
-
$html .= '<div>';
|
71 |
-
$html .= '<form action="' . remove_query_arg( 'paged' ) . '" method="POST">';
|
72 |
-
$the_text = get_option( 'wcj_products_per_page_text',
|
73 |
-
__( 'Products <strong>%from% - %to%</strong> from <strong>%total%</strong>. Products on page %select_form%', 'woocommerce-jetpack' ) );
|
74 |
$select_form = '<select name="wcj_products_per_page" id="wcj_products_per_page" class="sortby rounded_corners_class" onchange="this.form.submit()">';
|
75 |
-
$html .= str_replace( array( '%from%', '%to%', '%total%', '%select_form%' ), array( $products_from, $products_to, $products_total, $select_form ), $the_text );
|
76 |
$products_per_page_select_options = apply_filters( 'booster_get_option',
|
77 |
'10|10' . PHP_EOL . '25|25' . PHP_EOL . '50|50' . PHP_EOL . '100|100' . PHP_EOL . 'All|-1',
|
78 |
get_option( 'wcj_products_per_page_select_options', '10|10' . PHP_EOL . '25|25' . PHP_EOL . '50|50' . PHP_EOL . '100|100' . PHP_EOL . 'All|-1' ) );
|
@@ -86,12 +80,19 @@ class WCJ_Products_Per_Page extends WCJ_Module {
|
|
86 |
$sort_id = str_replace( "\r", '', $sort_id );
|
87 |
$sort_name = str_replace( "\n", '', $sort_name );
|
88 |
$sort_name = str_replace( "\r", '', $sort_name );
|
89 |
-
$
|
90 |
}
|
91 |
}
|
92 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
93 |
$html .= '</form>';
|
94 |
-
$html .= '</div>';
|
95 |
|
96 |
echo $html;
|
97 |
}
|
@@ -99,19 +100,19 @@ class WCJ_Products_Per_Page extends WCJ_Module {
|
|
99 |
/**
|
100 |
* set_products_per_page_number.
|
101 |
*
|
102 |
-
* @version 2.
|
103 |
* @since 2.5.3
|
104 |
*/
|
105 |
-
function set_products_per_page_number( $
|
106 |
-
if ( isset( $
|
107 |
-
$
|
108 |
-
setcookie( 'wcj_products_per_page', $
|
109 |
} elseif ( isset( $_COOKIE['wcj_products_per_page'] ) ) {
|
110 |
-
$
|
111 |
} else {
|
112 |
-
$
|
113 |
}
|
114 |
-
return $
|
115 |
}
|
116 |
|
117 |
}
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Products per Page
|
4 |
*
|
5 |
+
* @version 2.9.0
|
6 |
* @since 2.6.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
20 |
* @since 2.6.0
|
21 |
* @todo position priority for every hook
|
22 |
* @todo post or get
|
23 |
+
* @todo cookie - optional (or at least add description in admin settings)
|
24 |
*/
|
25 |
function __construct() {
|
26 |
|
42 |
/**
|
43 |
* add_products_per_page_form.
|
44 |
*
|
45 |
+
* @version 2.9.0
|
46 |
* @since 2.5.3
|
47 |
*/
|
48 |
function add_products_per_page_form() {
|
49 |
|
50 |
global $wp_query;
|
51 |
|
52 |
+
if ( isset( $_REQUEST['wcj_products_per_page'] ) ) {
|
53 |
+
$products_per_page = $_REQUEST['wcj_products_per_page'];
|
54 |
} elseif ( isset( $_COOKIE['wcj_products_per_page'] ) ) {
|
55 |
$products_per_page = $_COOKIE['wcj_products_per_page'];
|
56 |
} else {
|
66 |
$products_to = ( $paged - 1 ) * $products_per_page + $wp_query->post_count;
|
67 |
$products_total = $wp_query->found_posts;
|
68 |
|
|
|
|
|
|
|
|
|
|
|
|
|
69 |
$select_form = '<select name="wcj_products_per_page" id="wcj_products_per_page" class="sortby rounded_corners_class" onchange="this.form.submit()">';
|
|
|
70 |
$products_per_page_select_options = apply_filters( 'booster_get_option',
|
71 |
'10|10' . PHP_EOL . '25|25' . PHP_EOL . '50|50' . PHP_EOL . '100|100' . PHP_EOL . 'All|-1',
|
72 |
get_option( 'wcj_products_per_page_select_options', '10|10' . PHP_EOL . '25|25' . PHP_EOL . '50|50' . PHP_EOL . '100|100' . PHP_EOL . 'All|-1' ) );
|
80 |
$sort_id = str_replace( "\r", '', $sort_id );
|
81 |
$sort_name = str_replace( "\n", '', $sort_name );
|
82 |
$sort_name = str_replace( "\r", '', $sort_name );
|
83 |
+
$select_form .= '<option value="' . $sort_id . '" ' . selected( $products_per_page, $sort_id, false ) . ' >' . $sort_name . '</option>';
|
84 |
}
|
85 |
}
|
86 |
+
$select_form .= '</select>';
|
87 |
+
|
88 |
+
$html = '';
|
89 |
+
$html .= get_option( 'wcj_products_per_page_text_before', '<div class="clearfix"></div><div>' );
|
90 |
+
$html .= '<form action="' . remove_query_arg( 'paged' ) . '" method="POST">';
|
91 |
+
$the_text = get_option( 'wcj_products_per_page_text',
|
92 |
+
__( 'Products <strong>%from% - %to%</strong> from <strong>%total%</strong>. Products on page %select_form%', 'woocommerce-jetpack' ) );
|
93 |
+
$html .= str_replace( array( '%from%', '%to%', '%total%', '%select_form%' ), array( $products_from, $products_to, $products_total, $select_form ), $the_text );
|
94 |
$html .= '</form>';
|
95 |
+
$html .= get_option( 'wcj_products_per_page_text_after', '</div>' );
|
96 |
|
97 |
echo $html;
|
98 |
}
|
100 |
/**
|
101 |
* set_products_per_page_number.
|
102 |
*
|
103 |
+
* @version 2.9.0
|
104 |
* @since 2.5.3
|
105 |
*/
|
106 |
+
function set_products_per_page_number( $products_per_page ) {
|
107 |
+
if ( isset( $_REQUEST['wcj_products_per_page'] ) ) {
|
108 |
+
$products_per_page = $_REQUEST['wcj_products_per_page'];
|
109 |
+
setcookie( 'wcj_products_per_page', $products_per_page, ( time() + 1209600 ), '/', $_SERVER['SERVER_NAME'], false );
|
110 |
} elseif ( isset( $_COOKIE['wcj_products_per_page'] ) ) {
|
111 |
+
$products_per_page = $_COOKIE['wcj_products_per_page'];
|
112 |
} else {
|
113 |
+
$products_per_page = get_option( 'wcj_products_per_page_default', 10 );
|
114 |
}
|
115 |
+
return $products_per_page;
|
116 |
}
|
117 |
|
118 |
}
|
includes/class-wcj-purchase-data.php
CHANGED
@@ -1,8 +1,8 @@
|
|
1 |
<?php
|
2 |
/**
|
3 |
-
* Booster for WooCommerce - Module - Product Cost Price
|
4 |
*
|
5 |
-
* @version 2.
|
6 |
* @since 2.2.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
@@ -16,25 +16,126 @@ class WCJ_Purchase_Data extends WCJ_Module {
|
|
16 |
/**
|
17 |
* Constructor.
|
18 |
*
|
19 |
-
* @version 2.
|
|
|
|
|
|
|
20 |
*/
|
21 |
function __construct() {
|
22 |
|
23 |
$this->id = 'purchase_data';
|
24 |
-
$this->short_desc = __( '
|
25 |
$this->desc = __( 'Save WooCommerce product purchase costs data for admin reports.', 'woocommerce-jetpack' );
|
26 |
-
$this->link_slug = 'woocommerce-
|
27 |
parent::__construct();
|
28 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
29 |
if ( $this->is_enabled() ) {
|
30 |
|
|
|
31 |
add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );
|
32 |
add_action( 'save_post_product', array( $this, 'save_meta_box' ), PHP_INT_MAX, 2 );
|
33 |
|
34 |
-
|
|
|
|
|
|
|
|
|
35 |
add_filter( 'manage_edit-shop_order_columns', array( $this, 'add_order_columns' ), PHP_INT_MAX - 2 );
|
36 |
add_action( 'manage_shop_order_posts_custom_column', array( $this, 'render_order_columns' ), PHP_INT_MAX );
|
37 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
38 |
}
|
39 |
}
|
40 |
|
1 |
<?php
|
2 |
/**
|
3 |
+
* Booster for WooCommerce - Module - Cost of Goods (formerly Product Cost Price)
|
4 |
*
|
5 |
+
* @version 2.9.0
|
6 |
* @since 2.2.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
16 |
/**
|
17 |
* Constructor.
|
18 |
*
|
19 |
+
* @version 2.9.0
|
20 |
+
* @todo (maybe) pre-calculate profit for orders
|
21 |
+
* @todo (maybe) "Apply costs to orders that do not have costs set"
|
22 |
+
* @todo (maybe) "Apply costs to all orders, overriding previous costs"
|
23 |
*/
|
24 |
function __construct() {
|
25 |
|
26 |
$this->id = 'purchase_data';
|
27 |
+
$this->short_desc = __( 'Cost of Goods', 'woocommerce-jetpack' );
|
28 |
$this->desc = __( 'Save WooCommerce product purchase costs data for admin reports.', 'woocommerce-jetpack' );
|
29 |
+
$this->link_slug = 'woocommerce-cost-of-goods';
|
30 |
parent::__construct();
|
31 |
|
32 |
+
$this->add_tools( array(
|
33 |
+
'import_from_wc_cog' => array(
|
34 |
+
'title' => __( '"WooCommerce Cost of Goods" Data Import', 'woocommerce-jetpack' ),
|
35 |
+
'desc' => __( 'Import products costs from "WooCommerce Cost of Goods".', 'woocommerce-jetpack' ),
|
36 |
+
),
|
37 |
+
) );
|
38 |
+
|
39 |
if ( $this->is_enabled() ) {
|
40 |
|
41 |
+
// Products meta boxes
|
42 |
add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );
|
43 |
add_action( 'save_post_product', array( $this, 'save_meta_box' ), PHP_INT_MAX, 2 );
|
44 |
|
45 |
+
// Orders columns
|
46 |
+
if (
|
47 |
+
'yes' === get_option( 'wcj_purchase_data_custom_columns_profit', 'yes' ) ||
|
48 |
+
'yes' === get_option( 'wcj_purchase_data_custom_columns_purchase_cost', 'no' )
|
49 |
+
) {
|
50 |
add_filter( 'manage_edit-shop_order_columns', array( $this, 'add_order_columns' ), PHP_INT_MAX - 2 );
|
51 |
add_action( 'manage_shop_order_posts_custom_column', array( $this, 'render_order_columns' ), PHP_INT_MAX );
|
52 |
}
|
53 |
+
|
54 |
+
// Products columns
|
55 |
+
if (
|
56 |
+
'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_purchase_data_custom_products_columns_purchase_cost', 'no' ) ) ||
|
57 |
+
'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_purchase_data_custom_products_columns_profit', 'no' ) )
|
58 |
+
) {
|
59 |
+
add_filter( 'manage_edit-product_columns', array( $this, 'add_product_columns' ), PHP_INT_MAX );
|
60 |
+
add_action( 'manage_product_posts_custom_column', array( $this, 'render_product_columns' ), PHP_INT_MAX );
|
61 |
+
}
|
62 |
+
}
|
63 |
+
}
|
64 |
+
|
65 |
+
/**
|
66 |
+
* create_import_from_wc_cog_tool.
|
67 |
+
*
|
68 |
+
* @version 2.9.0
|
69 |
+
* @since 2.9.0
|
70 |
+
*/
|
71 |
+
function create_import_from_wc_cog_tool() {
|
72 |
+
// Action and Products list
|
73 |
+
$perform_import = ( isset( $_POST['wcj_import_from_wc_cog'] ) );
|
74 |
+
$table_data = array();
|
75 |
+
$table_data[] = array(
|
76 |
+
__( 'Product ID', 'woocommerce-jetpack' ),
|
77 |
+
__( 'Product Title', 'woocommerce-jetpack' ),
|
78 |
+
__( 'WooCommerce Cost of Goods (source)', 'woocommerce-jetpack' ),
|
79 |
+
__( 'Booster: Product cost (destination)', 'woocommerce-jetpack' ),
|
80 |
+
);
|
81 |
+
foreach ( wcj_get_products( array(), 'any', 512, true ) as $product_id => $product_title ) {
|
82 |
+
$wc_cog_cost = get_post_meta( $product_id, '_wc_cog_cost', true );
|
83 |
+
if ( $perform_import ) {
|
84 |
+
update_post_meta( $product_id, '_wcj_purchase_price', $wc_cog_cost );
|
85 |
+
}
|
86 |
+
$wcj_purchase_price = get_post_meta( $product_id, '_wcj_purchase_price', true );
|
87 |
+
$table_data[] = array( $product_id, $product_title, $wc_cog_cost, $wcj_purchase_price );
|
88 |
+
}
|
89 |
+
// Button form
|
90 |
+
$button_form = '';
|
91 |
+
$button_form .= '<form method="post" action="">';
|
92 |
+
$button_form .= '<input type="submit" name="wcj_import_from_wc_cog" class="button-primary" value="' . __( 'Import', 'woocommerce-jetpack' ) . '"' .
|
93 |
+
' onclick="return confirm(\'' . __( 'Are you sure?', 'woocommerce-jetpack' ) . '\')">';
|
94 |
+
$button_form .= '</form>';
|
95 |
+
// Output
|
96 |
+
$html = '';
|
97 |
+
$html .= '<div class="wrap">';
|
98 |
+
$html .= '<p>' . $this->get_tool_header_html( 'import_from_wc_cog' ) . '</p>';
|
99 |
+
$html .= '<p>' . $button_form . '</p>';
|
100 |
+
$html .= '<p>' . wcj_get_table_html( $table_data, array( 'table_heading_type' => 'horizontal', 'table_class' => 'widefat striped' ) ) . '</p>';
|
101 |
+
$html .= '</div>';
|
102 |
+
echo $html;
|
103 |
+
}
|
104 |
+
|
105 |
+
/**
|
106 |
+
* add_product_columns.
|
107 |
+
*
|
108 |
+
* @version 2.9.0
|
109 |
+
* @since 2.9.0
|
110 |
+
* @todo (maybe) output columns immediately after standard "Price"
|
111 |
+
*/
|
112 |
+
function add_product_columns( $columns ) {
|
113 |
+
if ( 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_purchase_data_custom_products_columns_purchase_cost', 'no' ) ) ) {
|
114 |
+
$columns['purchase_cost'] = __( 'Cost', 'woocommerce-jetpack' );
|
115 |
+
}
|
116 |
+
if ( 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_purchase_data_custom_products_columns_profit', 'no' ) ) ) {
|
117 |
+
$columns['profit'] = __( 'Profit', 'woocommerce-jetpack' );
|
118 |
+
}
|
119 |
+
return $columns;
|
120 |
+
}
|
121 |
+
|
122 |
+
/**
|
123 |
+
* render_product_columns.
|
124 |
+
*
|
125 |
+
* @version 2.9.0
|
126 |
+
* @since 2.9.0
|
127 |
+
* @todo variable products when `if ( 'no' === get_option( 'wcj_purchase_data_variable_as_simple_enabled', 'no' ) )`
|
128 |
+
*/
|
129 |
+
function render_product_columns( $column ) {
|
130 |
+
if ( 'profit' === $column || 'purchase_cost' === $column ) {
|
131 |
+
$product_id = get_the_ID();
|
132 |
+
$purchase_cost = wc_get_product_purchase_price( $product_id );
|
133 |
+
if ( 'purchase_cost' === $column ) {
|
134 |
+
echo wc_price( $purchase_cost );
|
135 |
+
} elseif ( 'profit' === $column ) {
|
136 |
+
$_product = wc_get_product( $product_id );
|
137 |
+
echo wc_price( $_product->get_price() - $purchase_cost );
|
138 |
+
}
|
139 |
}
|
140 |
}
|
141 |
|
includes/class-wcj-reports.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Reports
|
4 |
*
|
5 |
-
* @version 2.
|
6 |
* @author Algoritmika Ltd.
|
7 |
*/
|
8 |
|
@@ -24,7 +24,7 @@ class WCJ_Reports extends WCJ_Module {
|
|
24 |
/**
|
25 |
* Constructor.
|
26 |
*
|
27 |
-
* @version 2.
|
28 |
*/
|
29 |
function __construct() {
|
30 |
|
@@ -44,6 +44,7 @@ class WCJ_Reports extends WCJ_Module {
|
|
44 |
|
45 |
include_once( 'reports/wcj-class-reports-customers.php' );
|
46 |
include_once( 'reports/wcj-class-reports-stock.php' );
|
|
|
47 |
include_once( 'reports/wcj-class-reports-sales.php' );
|
48 |
include_once( 'reports/wcj-class-reports-monthly-sales.php' );
|
49 |
|
@@ -101,7 +102,7 @@ class WCJ_Reports extends WCJ_Module {
|
|
101 |
/**
|
102 |
* add_custom_order_reports_ranges_to_admin_bar.
|
103 |
*
|
104 |
-
* @version 2.
|
105 |
*/
|
106 |
function add_custom_order_reports_ranges_to_admin_bar( $wp_admin_bar ) {
|
107 |
$is_reports = ( isset( $_GET['page'] ) && 'wc-reports' === $_GET['page'] );
|
@@ -118,65 +119,8 @@ class WCJ_Reports extends WCJ_Module {
|
|
118 |
);
|
119 |
$wp_admin_bar->add_node( $args );
|
120 |
|
121 |
-
$custom_ranges = array(
|
122 |
-
'last_14_days' => array(
|
123 |
-
'title' => __( 'Last 14 Days', 'woocommerce-jetpack' ),
|
124 |
-
'start_date' => date( 'Y-m-d', strtotime( '-14 days' ) ),
|
125 |
-
'end_date' => date( 'Y-m-d' ),
|
126 |
-
),
|
127 |
-
'last_30_days' => array(
|
128 |
-
'title' => __( 'Last 30 Days', 'woocommerce-jetpack' ),
|
129 |
-
'start_date' => date( 'Y-m-d', strtotime( '-30 days' ) ),
|
130 |
-
'end_date' => date( 'Y-m-d' ),
|
131 |
-
),
|
132 |
-
'last_3_months' => array(
|
133 |
-
'title' => __( 'Last 3 Months', 'woocommerce-jetpack' ),
|
134 |
-
'start_date' => date( 'Y-m-d', strtotime( '-3 months' ) ),
|
135 |
-
'end_date' => date( 'Y-m-d' ),
|
136 |
-
),
|
137 |
-
'last_6_months' => array(
|
138 |
-
'title' => __( 'Last 6 Months', 'woocommerce-jetpack' ),
|
139 |
-
'start_date' => date( 'Y-m-d', strtotime( '-6 months' ) ),
|
140 |
-
'end_date' => date( 'Y-m-d' ),
|
141 |
-
),
|
142 |
-
'last_12_months' => array(
|
143 |
-
'title' => __( 'Last 12 Months', 'woocommerce-jetpack' ),
|
144 |
-
'start_date' => date( 'Y-m-d', strtotime( '-12 months' ) ),
|
145 |
-
'end_date' => date( 'Y-m-d' ),
|
146 |
-
),
|
147 |
-
'last_24_months' => array(
|
148 |
-
'title' => __( 'Last 24 Months', 'woocommerce-jetpack' ),
|
149 |
-
'start_date' => date( 'Y-m-d', strtotime( '-24 months' ) ),
|
150 |
-
'end_date' => date( 'Y-m-d' ),
|
151 |
-
),
|
152 |
-
'last_36_months' => array(
|
153 |
-
'title' => __( 'Last 36 Months', 'woocommerce-jetpack' ),
|
154 |
-
'start_date' => date( 'Y-m-d', strtotime( '-36 months' ) ),
|
155 |
-
'end_date' => date( 'Y-m-d' ),
|
156 |
-
),
|
157 |
-
'same_days_last_month' => array(
|
158 |
-
'title' => __( 'Same Days Last Month', 'woocommerce-jetpack' ),
|
159 |
-
'start_date' => date( 'Y-m-01', strtotime( '-1 month' ) ),
|
160 |
-
'end_date' => date( 'Y-m-d', strtotime( '-1 month' ) ),
|
161 |
-
),
|
162 |
-
'same_days_last_year' => array(
|
163 |
-
'title' => __( 'Same Days Last Year', 'woocommerce-jetpack' ),
|
164 |
-
'start_date' => date( 'Y-m-01', strtotime( '-1 year' ) ),
|
165 |
-
'end_date' => date( 'Y-m-d', strtotime( '-1 year' ) ),
|
166 |
-
),
|
167 |
-
'last_year' => array(
|
168 |
-
'title' => __( 'Last Year', 'woocommerce-jetpack' ),
|
169 |
-
'start_date' => date( 'Y-01-01', strtotime( '-1 year' ) ),
|
170 |
-
'end_date' => date( 'Y-12-31', strtotime( '-1 year' ) ),
|
171 |
-
),
|
172 |
-
/* 'last_week' => array(
|
173 |
-
'title' => __( 'Last Week', 'woocommerce-jetpack' ),
|
174 |
-
'start_date' => date( 'Y-m-d', strtotime( 'last monday' ) ),
|
175 |
-
'end_date' => date( 'Y-m-d', strtotime( 'last sunday' ) ),
|
176 |
-
), */
|
177 |
-
);
|
178 |
$custom_range_nonce = wp_create_nonce( 'custom_range' );
|
179 |
-
foreach (
|
180 |
$node = array(
|
181 |
'parent' => $parent,
|
182 |
'id' => $parent . '_' . $custom_range_id,
|
@@ -211,6 +155,17 @@ class WCJ_Reports extends WCJ_Module {
|
|
211 |
echo $report->get_report();
|
212 |
}
|
213 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
214 |
/**
|
215 |
* get_report_monthly_sales.
|
216 |
* @version 2.4.7
|
@@ -243,13 +198,20 @@ class WCJ_Reports extends WCJ_Module {
|
|
243 |
/**
|
244 |
* Add reports to WooCommerce > Reports > Sales
|
245 |
*
|
246 |
-
* @version 2.
|
247 |
* @since 2.3.0
|
248 |
*/
|
249 |
function add_sales_reports( $reports ) {
|
250 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
251 |
$reports['orders']['reports']['booster_products_sales'] = array(
|
252 |
-
'title' => __( 'Booster: Product Sales', 'woocommerce-jetpack' ),
|
253 |
'description' => '',
|
254 |
'hide_title' => false,
|
255 |
'callback' => array( $this, 'get_report_sales' ),
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Reports
|
4 |
*
|
5 |
+
* @version 2.9.0
|
6 |
* @author Algoritmika Ltd.
|
7 |
*/
|
8 |
|
24 |
/**
|
25 |
* Constructor.
|
26 |
*
|
27 |
+
* @version 2.9.0
|
28 |
*/
|
29 |
function __construct() {
|
30 |
|
44 |
|
45 |
include_once( 'reports/wcj-class-reports-customers.php' );
|
46 |
include_once( 'reports/wcj-class-reports-stock.php' );
|
47 |
+
include_once( 'reports/wcj-class-reports-sales-daily.php' );
|
48 |
include_once( 'reports/wcj-class-reports-sales.php' );
|
49 |
include_once( 'reports/wcj-class-reports-monthly-sales.php' );
|
50 |
|
102 |
/**
|
103 |
* add_custom_order_reports_ranges_to_admin_bar.
|
104 |
*
|
105 |
+
* @version 2.9.0
|
106 |
*/
|
107 |
function add_custom_order_reports_ranges_to_admin_bar( $wp_admin_bar ) {
|
108 |
$is_reports = ( isset( $_GET['page'] ) && 'wc-reports' === $_GET['page'] );
|
119 |
);
|
120 |
$wp_admin_bar->add_node( $args );
|
121 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
122 |
$custom_range_nonce = wp_create_nonce( 'custom_range' );
|
123 |
+
foreach ( wcj_get_reports_custom_ranges() as $custom_range_id => $custom_range ) {
|
124 |
$node = array(
|
125 |
'parent' => $parent,
|
126 |
'id' => $parent . '_' . $custom_range_id,
|
155 |
echo $report->get_report();
|
156 |
}
|
157 |
|
158 |
+
/**
|
159 |
+
* get_report_products_sales_daily.
|
160 |
+
*
|
161 |
+
* @version 2.9.0
|
162 |
+
* @since 2.9.0
|
163 |
+
*/
|
164 |
+
function get_report_products_sales_daily() {
|
165 |
+
$report = new WCJ_Reports_Product_Sales_Daily();
|
166 |
+
echo $report->get_report();
|
167 |
+
}
|
168 |
+
|
169 |
/**
|
170 |
* get_report_monthly_sales.
|
171 |
* @version 2.4.7
|
198 |
/**
|
199 |
* Add reports to WooCommerce > Reports > Sales
|
200 |
*
|
201 |
+
* @version 2.9.0
|
202 |
* @since 2.3.0
|
203 |
*/
|
204 |
function add_sales_reports( $reports ) {
|
205 |
|
206 |
+
$reports['orders']['reports']['booster_products_sales_daily'] = array(
|
207 |
+
'title' => __( 'Booster: Product Sales (Daily)', 'woocommerce-jetpack' ),
|
208 |
+
'description' => '',
|
209 |
+
'hide_title' => false,
|
210 |
+
'callback' => array( $this, 'get_report_products_sales_daily' ),
|
211 |
+
);
|
212 |
+
|
213 |
$reports['orders']['reports']['booster_products_sales'] = array(
|
214 |
+
'title' => __( 'Booster: Product Sales (Monthly)', 'woocommerce-jetpack' ),
|
215 |
'description' => '',
|
216 |
'hide_title' => false,
|
217 |
'callback' => array( $this, 'get_report_sales' ),
|
includes/class-wcj-shipping-options.php
ADDED
@@ -0,0 +1,183 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Booster for WooCommerce - Module - Shipping Options
|
4 |
+
*
|
5 |
+
* @version 2.9.0
|
6 |
+
* @since 2.9.0
|
7 |
+
* @author Algoritmika Ltd.
|
8 |
+
*/
|
9 |
+
|
10 |
+
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
11 |
+
|
12 |
+
if ( ! class_exists( 'WCJ_Shipping_Options' ) ) :
|
13 |
+
|
14 |
+
class WCJ_Shipping_Options extends WCJ_Module {
|
15 |
+
|
16 |
+
/**
|
17 |
+
* Constructor.
|
18 |
+
*
|
19 |
+
* @version 2.9.0
|
20 |
+
* @since 2.9.0
|
21 |
+
*/
|
22 |
+
function __construct() {
|
23 |
+
|
24 |
+
$this->id = 'shipping_options';
|
25 |
+
$this->short_desc = __( 'Shipping Options', 'woocommerce-jetpack' );
|
26 |
+
$this->desc = __( 'Add descriptions and icons to shipping methods on frontend.', 'woocommerce-jetpack') . ' ' .
|
27 |
+
__( 'Hide WooCommerce shipping when free is available.', 'woocommerce-jetpack') . ' ' .
|
28 |
+
__( 'Grant free shipping on per product basis.', 'woocommerce-jetpack');
|
29 |
+
$this->link_slug = 'woocommerce-shipping-options';
|
30 |
+
parent::__construct();
|
31 |
+
|
32 |
+
if ( $this->is_enabled() ) {
|
33 |
+
|
34 |
+
// Hide if free is available
|
35 |
+
if ( 'yes' === get_option( 'wcj_shipping_hide_if_free_available_all', 'no' ) ) {
|
36 |
+
add_filter( 'woocommerce_package_rates', array( $this, 'hide_shipping_when_free_is_available' ), 10, 2 );
|
37 |
+
}
|
38 |
+
add_filter( 'woocommerce_shipping_settings', array( $this, 'add_hide_shipping_if_free_available_fields' ), 100 );
|
39 |
+
|
40 |
+
// Shipping Descriptions
|
41 |
+
if ( 'yes' === get_option( 'wcj_shipping_description_enabled', 'no' ) ) {
|
42 |
+
add_filter( 'woocommerce_cart_shipping_method_full_label', array( $this, 'shipping_description' ), PHP_INT_MAX, 2 );
|
43 |
+
}
|
44 |
+
|
45 |
+
// Shipping Icons
|
46 |
+
if ( 'yes' === get_option( 'wcj_shipping_icons_enabled', 'no' ) ) {
|
47 |
+
add_filter( 'woocommerce_cart_shipping_method_full_label', array( $this, 'shipping_icon' ), PHP_INT_MAX, 2 );
|
48 |
+
}
|
49 |
+
|
50 |
+
// Free shipping by product
|
51 |
+
if ( 'yes' === get_option( 'wcj_shipping_free_shipping_by_product_enabled', 'no' ) ) {
|
52 |
+
add_filter( 'woocommerce_shipping_free_shipping_is_available', array( $this, 'free_shipping_by_product' ), PHP_INT_MAX, 2 );
|
53 |
+
}
|
54 |
+
}
|
55 |
+
}
|
56 |
+
|
57 |
+
/**
|
58 |
+
* free_shipping_by_product.
|
59 |
+
*
|
60 |
+
* @version 2.6.0
|
61 |
+
* @since 2.6.0
|
62 |
+
* @return bool
|
63 |
+
*/
|
64 |
+
function free_shipping_by_product( $is_available, $package ) {
|
65 |
+
$free_shipping_granting_products = get_option( 'wcj_shipping_free_shipping_by_product_products', '' );
|
66 |
+
if ( empty( $free_shipping_granting_products ) ) {
|
67 |
+
return $is_available;
|
68 |
+
}
|
69 |
+
$free_shipping_granting_products_type = apply_filters( 'booster_get_option', 'all', get_option( 'wcj_shipping_free_shipping_by_product_type', 'all' ) );
|
70 |
+
$package_grants_free_shipping = false;
|
71 |
+
foreach( $package['contents'] as $item ) {
|
72 |
+
if ( in_array( $item['product_id'], $free_shipping_granting_products ) ) {
|
73 |
+
if ( 'at_least_one' === $free_shipping_granting_products_type ) {
|
74 |
+
return true;
|
75 |
+
} elseif ( ! $package_grants_free_shipping ) {
|
76 |
+
$package_grants_free_shipping = true;
|
77 |
+
}
|
78 |
+
} else {
|
79 |
+
if ( 'all' === $free_shipping_granting_products_type ) {
|
80 |
+
return $is_available;
|
81 |
+
}
|
82 |
+
}
|
83 |
+
}
|
84 |
+
return ( $package_grants_free_shipping ) ? true : $is_available;
|
85 |
+
}
|
86 |
+
|
87 |
+
/**
|
88 |
+
* shipping_icon.
|
89 |
+
*
|
90 |
+
* @version 2.6.0
|
91 |
+
* @since 2.5.6
|
92 |
+
*/
|
93 |
+
function shipping_icon( $label, $method ) {
|
94 |
+
$shipping_icons_visibility = apply_filters( 'booster_get_option', 'both', get_option( 'wcj_shipping_icons_visibility', 'both' ) );
|
95 |
+
if ( 'checkout_only' === $shipping_icons_visibility && is_cart() ) {
|
96 |
+
return $label;
|
97 |
+
}
|
98 |
+
if ( 'cart_only' === $shipping_icons_visibility && is_checkout() ) {
|
99 |
+
return $label;
|
100 |
+
}
|
101 |
+
if ( '' != ( $icon_url = get_option( 'wcj_shipping_icon_' . $method->method_id, '' ) ) ) {
|
102 |
+
$style_html = ( '' != ( $style = get_option( 'wcj_shipping_icons_style', 'display:inline;' ) ) ) ? 'style="' . $style . '" ' : '';
|
103 |
+
$img = '<img ' . $style_html . 'class="wcj_shipping_icon" id="wcj_shipping_icon_' . $method->method_id . '" src="' . $icon_url . '">';
|
104 |
+
$label = ( 'before' === get_option( 'wcj_shipping_icons_position', 'before' ) ) ? $img . ' ' . $label : $label . ' ' . $img;
|
105 |
+
}
|
106 |
+
return $label;
|
107 |
+
}
|
108 |
+
|
109 |
+
/**
|
110 |
+
* shipping_description.
|
111 |
+
*
|
112 |
+
* @version 2.6.0
|
113 |
+
* @since 2.5.6
|
114 |
+
*/
|
115 |
+
function shipping_description( $label, $method ) {
|
116 |
+
$shipping_descriptions_visibility = apply_filters( 'booster_get_option', 'both', get_option( 'wcj_shipping_descriptions_visibility', 'both' ) );
|
117 |
+
if ( 'checkout_only' === $shipping_descriptions_visibility && is_cart() ) {
|
118 |
+
return $label;
|
119 |
+
}
|
120 |
+
if ( 'cart_only' === $shipping_descriptions_visibility && is_checkout() ) {
|
121 |
+
return $label;
|
122 |
+
}
|
123 |
+
if ( '' != ( $desc = get_option( 'wcj_shipping_description_' . $method->method_id, '' ) ) ) {
|
124 |
+
$label .= $desc;
|
125 |
+
}
|
126 |
+
return $label;
|
127 |
+
}
|
128 |
+
|
129 |
+
/**
|
130 |
+
* hide_shipping_when_free_is_available.
|
131 |
+
*
|
132 |
+
* @version 2.5.3
|
133 |
+
* @todo if ( 'yes' === get_option( 'wcj_shipping_hide_if_free_available_local_delivery' ) ) { unset( $rates['local_delivery'] ); }
|
134 |
+
*/
|
135 |
+
function hide_shipping_when_free_is_available( $rates, $package ) {
|
136 |
+
$free_shipping_rates = array();
|
137 |
+
$is_free_shipping_available = false;
|
138 |
+
foreach ( $rates as $rate_key => $rate ) {
|
139 |
+
if ( false !== strpos( $rate_key, 'free_shipping' ) ) {
|
140 |
+
$is_free_shipping_available = true;
|
141 |
+
$free_shipping_rates[ $rate_key ] = $rate;
|
142 |
+
}
|
143 |
+
}
|
144 |
+
return ( $is_free_shipping_available ) ? $free_shipping_rates : $rates;
|
145 |
+
}
|
146 |
+
|
147 |
+
/**
|
148 |
+
* add_hide_shipping_if_free_available_fields.
|
149 |
+
*
|
150 |
+
* @version 2.5.3
|
151 |
+
*/
|
152 |
+
function add_hide_shipping_if_free_available_fields( $settings ) {
|
153 |
+
$updated_settings = array();
|
154 |
+
foreach ( $settings as $section ) {
|
155 |
+
$updated_settings[] = $section;
|
156 |
+
if ( isset( $section['id'] ) && 'woocommerce_ship_to_destination' === $section['id'] ) {
|
157 |
+
/* $updated_settings[] = array(
|
158 |
+
'title' => __( 'Booster: Hide shipping', 'woocommerce-jetpack' ),
|
159 |
+
'desc' => __( 'Hide local delivery when free is available', 'woocommerce-jetpack' ),
|
160 |
+
'desc_tip' => __( '', 'woocommerce-jetpack' ),
|
161 |
+
'id' => 'wcj_shipping_hide_if_free_available_local_delivery',
|
162 |
+
'default' => 'no',
|
163 |
+
'type' => 'checkbox',
|
164 |
+
'checkboxgroup' => 'start',
|
165 |
+
); */
|
166 |
+
$updated_settings[] = array(
|
167 |
+
'title' => __( 'Booster: Hide shipping', 'woocommerce-jetpack' ),
|
168 |
+
'desc' => __( 'Hide all when free is available', 'woocommerce-jetpack' ),
|
169 |
+
'id' => 'wcj_shipping_hide_if_free_available_all',
|
170 |
+
'default' => 'no',
|
171 |
+
'type' => 'checkbox',
|
172 |
+
/* 'checkboxgroup' => 'end', */
|
173 |
+
);
|
174 |
+
}
|
175 |
+
}
|
176 |
+
return $updated_settings;
|
177 |
+
}
|
178 |
+
|
179 |
+
}
|
180 |
+
|
181 |
+
endif;
|
182 |
+
|
183 |
+
return new WCJ_Shipping_Options();
|
includes/class-wcj-shipping.php
CHANGED
@@ -1,8 +1,8 @@
|
|
1 |
<?php
|
2 |
/**
|
3 |
-
* Booster for WooCommerce - Module - Shipping
|
4 |
*
|
5 |
-
* @version 2.
|
6 |
* @author Algoritmika Ltd.
|
7 |
*/
|
8 |
|
@@ -15,171 +15,22 @@ class WCJ_Shipping extends WCJ_Module {
|
|
15 |
/**
|
16 |
* Constructor.
|
17 |
*
|
18 |
-
* @version 2.
|
19 |
-
* @todo "custom shipping" to new module
|
20 |
*/
|
21 |
function __construct() {
|
22 |
|
23 |
$this->id = 'shipping';
|
24 |
-
$this->short_desc = __( 'Shipping', 'woocommerce-jetpack' );
|
25 |
-
$this->desc =
|
26 |
-
|
27 |
-
__( 'Add descriptions and icons to shipping methods on frontend.', 'woocommerce-jetpack') . ' ' .
|
28 |
-
__( 'Hide WooCommerce shipping when free is available.', 'woocommerce-jetpack');
|
29 |
-
$this->link_slug = 'woocommerce-shipping';
|
30 |
parent::__construct();
|
31 |
|
32 |
if ( $this->is_enabled() ) {
|
33 |
-
|
34 |
-
// Custom Shipping
|
35 |
include_once( 'shipping/class-wc-shipping-wcj-custom.php' );
|
36 |
if ( 'yes' === get_option( 'wcj_shipping_custom_shipping_w_zones_enabled', 'no' ) ) {
|
37 |
include_once( 'shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php' );
|
38 |
}
|
39 |
-
|
40 |
-
// Hide if free is available
|
41 |
-
if ( 'yes' === get_option( 'wcj_shipping_hide_if_free_available_all', 'no' ) ) {
|
42 |
-
add_filter( 'woocommerce_package_rates', array( $this, 'hide_shipping_when_free_is_available' ), 10, 2 );
|
43 |
-
}
|
44 |
-
add_filter( 'woocommerce_shipping_settings', array( $this, 'add_hide_shipping_if_free_available_fields' ), 100 );
|
45 |
-
|
46 |
-
// Shipping Descriptions
|
47 |
-
if ( 'yes' === get_option( 'wcj_shipping_description_enabled', 'no' ) ) {
|
48 |
-
add_filter( 'woocommerce_cart_shipping_method_full_label', array( $this, 'shipping_description' ), PHP_INT_MAX, 2 );
|
49 |
-
}
|
50 |
-
|
51 |
-
// Shipping Icons
|
52 |
-
if ( 'yes' === get_option( 'wcj_shipping_icons_enabled', 'no' ) ) {
|
53 |
-
add_filter( 'woocommerce_cart_shipping_method_full_label', array( $this, 'shipping_icon' ), PHP_INT_MAX, 2 );
|
54 |
-
}
|
55 |
-
|
56 |
-
// Free shipping by product
|
57 |
-
if ( 'yes' === get_option( 'wcj_shipping_free_shipping_by_product_enabled', 'no' ) ) {
|
58 |
-
add_filter( 'woocommerce_shipping_free_shipping_is_available', array( $this, 'free_shipping_by_product' ), PHP_INT_MAX, 2 );
|
59 |
-
}
|
60 |
-
}
|
61 |
-
}
|
62 |
-
|
63 |
-
/**
|
64 |
-
* free_shipping_by_product.
|
65 |
-
*
|
66 |
-
* @version 2.6.0
|
67 |
-
* @since 2.6.0
|
68 |
-
* @return bool
|
69 |
-
*/
|
70 |
-
function free_shipping_by_product( $is_available, $package ) {
|
71 |
-
$free_shipping_granting_products = get_option( 'wcj_shipping_free_shipping_by_product_products', '' );
|
72 |
-
if ( empty( $free_shipping_granting_products ) ) {
|
73 |
-
return $is_available;
|
74 |
-
}
|
75 |
-
$free_shipping_granting_products_type = apply_filters( 'booster_get_option', 'all', get_option( 'wcj_shipping_free_shipping_by_product_type', 'all' ) );
|
76 |
-
$package_grants_free_shipping = false;
|
77 |
-
foreach( $package['contents'] as $item ) {
|
78 |
-
if ( in_array( $item['product_id'], $free_shipping_granting_products ) ) {
|
79 |
-
if ( 'at_least_one' === $free_shipping_granting_products_type ) {
|
80 |
-
return true;
|
81 |
-
} elseif ( ! $package_grants_free_shipping ) {
|
82 |
-
$package_grants_free_shipping = true;
|
83 |
-
}
|
84 |
-
} else {
|
85 |
-
if ( 'all' === $free_shipping_granting_products_type ) {
|
86 |
-
return $is_available;
|
87 |
-
}
|
88 |
-
}
|
89 |
-
}
|
90 |
-
return ( $package_grants_free_shipping ) ? true : $is_available;
|
91 |
-
}
|
92 |
-
|
93 |
-
/**
|
94 |
-
* shipping_icon.
|
95 |
-
*
|
96 |
-
* @version 2.6.0
|
97 |
-
* @since 2.5.6
|
98 |
-
*/
|
99 |
-
function shipping_icon( $label, $method ) {
|
100 |
-
$shipping_icons_visibility = apply_filters( 'booster_get_option', 'both', get_option( 'wcj_shipping_icons_visibility', 'both' ) );
|
101 |
-
if ( 'checkout_only' === $shipping_icons_visibility && is_cart() ) {
|
102 |
-
return $label;
|
103 |
-
}
|
104 |
-
if ( 'cart_only' === $shipping_icons_visibility && is_checkout() ) {
|
105 |
-
return $label;
|
106 |
-
}
|
107 |
-
if ( '' != ( $icon_url = get_option( 'wcj_shipping_icon_' . $method->method_id, '' ) ) ) {
|
108 |
-
$style_html = ( '' != ( $style = get_option( 'wcj_shipping_icons_style', 'display:inline;' ) ) ) ? 'style="' . $style . '" ' : '';
|
109 |
-
$img = '<img ' . $style_html . 'class="wcj_shipping_icon" id="wcj_shipping_icon_' . $method->method_id . '" src="' . $icon_url . '">';
|
110 |
-
$label = ( 'before' === get_option( 'wcj_shipping_icons_position', 'before' ) ) ? $img . ' ' . $label : $label . ' ' . $img;
|
111 |
-
}
|
112 |
-
return $label;
|
113 |
-
}
|
114 |
-
|
115 |
-
/**
|
116 |
-
* shipping_description.
|
117 |
-
*
|
118 |
-
* @version 2.6.0
|
119 |
-
* @since 2.5.6
|
120 |
-
*/
|
121 |
-
function shipping_description( $label, $method ) {
|
122 |
-
$shipping_descriptions_visibility = apply_filters( 'booster_get_option', 'both', get_option( 'wcj_shipping_descriptions_visibility', 'both' ) );
|
123 |
-
if ( 'checkout_only' === $shipping_descriptions_visibility && is_cart() ) {
|
124 |
-
return $label;
|
125 |
-
}
|
126 |
-
if ( 'cart_only' === $shipping_descriptions_visibility && is_checkout() ) {
|
127 |
-
return $label;
|
128 |
-
}
|
129 |
-
if ( '' != ( $desc = get_option( 'wcj_shipping_description_' . $method->method_id, '' ) ) ) {
|
130 |
-
$label .= $desc;
|
131 |
-
}
|
132 |
-
return $label;
|
133 |
-
}
|
134 |
-
|
135 |
-
/**
|
136 |
-
* hide_shipping_when_free_is_available.
|
137 |
-
*
|
138 |
-
* @version 2.5.3
|
139 |
-
* @todo if ( 'yes' === get_option( 'wcj_shipping_hide_if_free_available_local_delivery' ) ) { unset( $rates['local_delivery'] ); }
|
140 |
-
*/
|
141 |
-
function hide_shipping_when_free_is_available( $rates, $package ) {
|
142 |
-
$free_shipping_rates = array();
|
143 |
-
$is_free_shipping_available = false;
|
144 |
-
foreach ( $rates as $rate_key => $rate ) {
|
145 |
-
if ( false !== strpos( $rate_key, 'free_shipping' ) ) {
|
146 |
-
$is_free_shipping_available = true;
|
147 |
-
$free_shipping_rates[ $rate_key ] = $rate;
|
148 |
-
}
|
149 |
-
}
|
150 |
-
return ( $is_free_shipping_available ) ? $free_shipping_rates : $rates;
|
151 |
-
}
|
152 |
-
|
153 |
-
/**
|
154 |
-
* add_hide_shipping_if_free_available_fields.
|
155 |
-
*
|
156 |
-
* @version 2.5.3
|
157 |
-
*/
|
158 |
-
function add_hide_shipping_if_free_available_fields( $settings ) {
|
159 |
-
$updated_settings = array();
|
160 |
-
foreach ( $settings as $section ) {
|
161 |
-
$updated_settings[] = $section;
|
162 |
-
if ( isset( $section['id'] ) && 'woocommerce_ship_to_destination' === $section['id'] ) {
|
163 |
-
/* $updated_settings[] = array(
|
164 |
-
'title' => __( 'Booster: Hide shipping', 'woocommerce-jetpack' ),
|
165 |
-
'desc' => __( 'Hide local delivery when free is available', 'woocommerce-jetpack' ),
|
166 |
-
'desc_tip' => __( '', 'woocommerce-jetpack' ),
|
167 |
-
'id' => 'wcj_shipping_hide_if_free_available_local_delivery',
|
168 |
-
'default' => 'no',
|
169 |
-
'type' => 'checkbox',
|
170 |
-
'checkboxgroup' => 'start',
|
171 |
-
); */
|
172 |
-
$updated_settings[] = array(
|
173 |
-
'title' => __( 'Booster: Hide shipping', 'woocommerce-jetpack' ),
|
174 |
-
'desc' => __( 'Hide all when free is available', 'woocommerce-jetpack' ),
|
175 |
-
'id' => 'wcj_shipping_hide_if_free_available_all',
|
176 |
-
'default' => 'no',
|
177 |
-
'type' => 'checkbox',
|
178 |
-
/* 'checkboxgroup' => 'end', */
|
179 |
-
);
|
180 |
-
}
|
181 |
}
|
182 |
-
return $updated_settings;
|
183 |
}
|
184 |
|
185 |
}
|
1 |
<?php
|
2 |
/**
|
3 |
+
* Booster for WooCommerce - Module - Custom Shipping
|
4 |
*
|
5 |
+
* @version 2.9.0
|
6 |
* @author Algoritmika Ltd.
|
7 |
*/
|
8 |
|
15 |
/**
|
16 |
* Constructor.
|
17 |
*
|
18 |
+
* @version 2.9.0
|
|
|
19 |
*/
|
20 |
function __construct() {
|
21 |
|
22 |
$this->id = 'shipping';
|
23 |
+
$this->short_desc = __( 'Custom Shipping', 'woocommerce-jetpack' );
|
24 |
+
$this->desc = __( 'Add multiple custom shipping methods to WooCommerce.', 'woocommerce-jetpack' );
|
25 |
+
$this->link_slug = 'woocommerce-custom-shipping';
|
|
|
|
|
|
|
26 |
parent::__construct();
|
27 |
|
28 |
if ( $this->is_enabled() ) {
|
|
|
|
|
29 |
include_once( 'shipping/class-wc-shipping-wcj-custom.php' );
|
30 |
if ( 'yes' === get_option( 'wcj_shipping_custom_shipping_w_zones_enabled', 'no' ) ) {
|
31 |
include_once( 'shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php' );
|
32 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
33 |
}
|
|
|
34 |
}
|
35 |
|
36 |
}
|
includes/class-wcj-sku.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - SKU
|
4 |
*
|
5 |
-
* @version 2.
|
6 |
* @author Algoritmika Ltd.
|
7 |
*/
|
8 |
|
@@ -15,14 +15,13 @@ class WCJ_SKU extends WCJ_Module {
|
|
15 |
/**
|
16 |
* Constructor.
|
17 |
*
|
18 |
-
* @version 2.
|
19 |
-
* @todo `woocommerce_duplicate_product` (check SKU plugin)
|
20 |
*/
|
21 |
function __construct() {
|
22 |
|
23 |
$this->id = 'sku';
|
24 |
$this->short_desc = __( 'SKU', 'woocommerce-jetpack' );
|
25 |
-
$this->desc = __( 'Generate WooCommerce SKUs automatically.', 'woocommerce-jetpack' );
|
26 |
$this->link_slug = 'woocommerce-sku';
|
27 |
$this->extra_desc = __( 'When enabled - all new products will be given (autogenerated) SKU.', 'woocommerce-jetpack' ) . '<br>' .
|
28 |
__( 'If you wish to set SKUs for existing products, use "Autogenerate SKUs" Tool.', 'woocommerce-jetpack' );
|
@@ -36,18 +35,27 @@ class WCJ_SKU extends WCJ_Module {
|
|
36 |
) );
|
37 |
|
38 |
if ( $this->is_enabled() ) {
|
39 |
-
|
40 |
if ( 'yes' === get_option( 'wcj_sku_new_products_generate_enabled', 'yes' ) ) {
|
41 |
-
add_action( 'wp_insert_post',
|
|
|
42 |
}
|
43 |
-
|
44 |
if ( 'yes' === get_option( 'wcj_sku_allow_duplicates_enabled', 'no' ) ) {
|
45 |
add_filter( 'wc_product_has_unique_sku', '__return_false', PHP_INT_MAX );
|
46 |
}
|
47 |
-
|
48 |
if ( 'yes' === get_option( 'wcj_sku_add_to_customer_emails', 'no' ) ) {
|
49 |
add_filter( 'woocommerce_email_order_items_args', array( $this, 'add_sku_to_customer_emails' ), PHP_INT_MAX, 1 );
|
50 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
51 |
}
|
52 |
}
|
53 |
|
@@ -63,24 +71,48 @@ class WCJ_SKU extends WCJ_Module {
|
|
63 |
}
|
64 |
|
65 |
/**
|
66 |
-
*
|
67 |
*
|
68 |
-
* @version 2.
|
69 |
* @since 2.4.8
|
70 |
*/
|
71 |
function get_all_variations( $_product ) {
|
72 |
$all_variations = array();
|
73 |
foreach ( $_product->get_children() as $child_id ) {
|
74 |
-
$variation = ( WCJ_IS_WC_VERSION_BELOW_3 ? $_product->get_child( $child_id ) : wc_get_product( $child_id ) )
|
75 |
-
|
|
|
76 |
}
|
77 |
return $all_variations;
|
78 |
}
|
79 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
80 |
/**
|
81 |
* set_sku_with_variable.
|
82 |
*
|
83 |
-
* @version 2.
|
84 |
* @todo `as_variable_with_suffix` - handle cases with more than 26 variations
|
85 |
*/
|
86 |
function set_sku_with_variable( $product_id, $is_preview ) {
|
@@ -89,8 +121,9 @@ class WCJ_SKU extends WCJ_Module {
|
|
89 |
$sku_number = rand();
|
90 |
} */
|
91 |
if ( 'sequential' === apply_filters( 'booster_get_option', 'product_id', get_option( 'wcj_sku_number_generation', 'product_id' ) ) ) {
|
92 |
-
$sku_number = $this->
|
93 |
-
|
|
|
94 |
} else { // if 'product_id'
|
95 |
$sku_number = $product_id;
|
96 |
}
|
@@ -105,25 +138,25 @@ class WCJ_SKU extends WCJ_Module {
|
|
105 |
$variations = $this->get_all_variations( $product );
|
106 |
if ( 'as_variable' === $variation_handling ) {
|
107 |
foreach ( $variations as $variation ) {
|
108 |
-
$this->set_sku( $variation['variation_id'], $sku_number, '', $is_preview, $product_id, $
|
109 |
}
|
110 |
-
}
|
111 |
-
else if ( 'as_variation' === $variation_handling ) {
|
112 |
foreach ( $variations as $variation ) {
|
113 |
if ( 'sequential' === apply_filters( 'booster_get_option', 'product_id', get_option( 'wcj_sku_number_generation', 'product_id' ) ) ) {
|
114 |
-
$sku_number = $this->
|
115 |
-
|
|
|
116 |
} else { // if 'product_id'
|
117 |
$sku_number = $variation['variation_id'];
|
118 |
}
|
119 |
-
$this->set_sku( $variation['variation_id'], $sku_number, '', $is_preview, $product_id, $
|
120 |
}
|
121 |
}
|
122 |
else if ( 'as_variable_with_suffix' === $variation_handling ) {
|
123 |
$variation_suffixes = 'abcdefghijklmnopqrstuvwxyz';
|
124 |
$abc = 0;
|
125 |
foreach ( $variations as $variation ) {
|
126 |
-
$this->set_sku( $variation['variation_id'], $sku_number, $variation_suffixes[ $abc++ ], $is_preview, $product_id, $
|
127 |
if ( 26 == $abc ) {
|
128 |
$abc = 0;
|
129 |
}
|
@@ -135,7 +168,7 @@ class WCJ_SKU extends WCJ_Module {
|
|
135 |
/**
|
136 |
* set_sku.
|
137 |
*
|
138 |
-
* @version 2.
|
139 |
*/
|
140 |
function set_sku( $product_id, $sku_number, $variation_suffix, $is_preview, $parent_product_id, $_product ) {
|
141 |
|
@@ -155,17 +188,22 @@ class WCJ_SKU extends WCJ_Module {
|
|
155 |
}
|
156 |
}
|
157 |
|
158 |
-
$
|
159 |
-
|
160 |
-
|
161 |
-
$
|
162 |
-
|
163 |
-
|
164 |
-
$
|
165 |
-
|
|
|
|
|
|
|
|
|
|
|
166 |
|
167 |
if ( $is_preview ) {
|
168 |
-
|
169 |
'<td>' . $this->product_counter++ . '</td>' .
|
170 |
'<td>' . $product_id . '</td>' .
|
171 |
'<td>' . $_product->get_title() . '</td>' .
|
@@ -179,17 +217,54 @@ class WCJ_SKU extends WCJ_Module {
|
|
179 |
}
|
180 |
|
181 |
/**
|
182 |
-
*
|
183 |
*
|
184 |
-
* @version 2.
|
|
|
185 |
*/
|
186 |
-
function
|
187 |
if ( 'sequential' === apply_filters( 'booster_get_option', 'product_id', get_option( 'wcj_sku_number_generation', 'product_id' ) ) ) {
|
188 |
$this->sequential_counter = apply_filters( 'booster_get_option', 1, get_option( 'wcj_sku_number_generation_sequential', 1 ) );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
189 |
}
|
190 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
191 |
$offset = 0;
|
192 |
-
while (
|
193 |
$posts = new WP_Query( array(
|
194 |
'posts_per_page' => $limit,
|
195 |
'offset' => $offset,
|
@@ -198,7 +273,7 @@ class WCJ_SKU extends WCJ_Module {
|
|
198 |
'order' => 'ASC',
|
199 |
'orderby' => 'date',
|
200 |
'fields' => 'ids',
|
201 |
-
));
|
202 |
if ( ! $posts->have_posts() ) {
|
203 |
break;
|
204 |
}
|
@@ -207,40 +282,45 @@ class WCJ_SKU extends WCJ_Module {
|
|
207 |
}
|
208 |
$offset += $limit;
|
209 |
}
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
214 |
}
|
215 |
|
216 |
/**
|
217 |
* set_sku_for_new_product.
|
218 |
*
|
219 |
-
* @version 2.
|
220 |
*/
|
221 |
function set_sku_for_new_product( $post_ID, $post, $update ) {
|
222 |
if ( 'product' != $post->post_type ) {
|
223 |
return;
|
224 |
}
|
225 |
if ( false === $update ) {
|
226 |
-
|
227 |
-
$this->sequential_counter = apply_filters( 'booster_get_option', 1, get_option( 'wcj_sku_number_generation_sequential', 1 ) );
|
228 |
-
}
|
229 |
$this->set_sku_with_variable( $post_ID, false );
|
230 |
-
|
231 |
-
update_option( 'wcj_sku_number_generation_sequential', $this->sequential_counter );
|
232 |
-
}
|
233 |
}
|
234 |
}
|
235 |
|
236 |
/**
|
237 |
* create_sku_tool
|
238 |
*
|
239 |
-
* @version 2.
|
240 |
*/
|
241 |
function create_sku_tool() {
|
242 |
$result_message = '';
|
243 |
-
$is_preview = ( isset( $_POST['preview_sku'] ) )
|
244 |
if ( isset( $_POST['set_sku'] ) || isset( $_POST['preview_sku'] ) ) {
|
245 |
$this->product_counter = 1;
|
246 |
$preview_html = '<table class="widefat" style="width:50%; min-width: 300px; margin-top: 10px;">';
|
@@ -253,21 +333,78 @@ class WCJ_SKU extends WCJ_Module {
|
|
253 |
'<th>' . __( 'SKU', 'woocommerce-jetpack' ) . '</th>' .
|
254 |
'<th>' . __( 'Old SKU', 'woocommerce-jetpack' ) . '</th>' .
|
255 |
'</tr>';
|
256 |
-
|
257 |
$this->set_all_products_skus( $is_preview );
|
258 |
-
$preview_html .=
|
259 |
$preview_html .= '</table>';
|
260 |
$result_message = '<p><div class="updated"><p><strong>' . __( 'SKUs generated and set successfully!', 'woocommerce-jetpack' ) . '</strong></p></div></p>';
|
261 |
}
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
271 |
}
|
272 |
|
273 |
}
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - SKU
|
4 |
*
|
5 |
+
* @version 2.9.0
|
6 |
* @author Algoritmika Ltd.
|
7 |
*/
|
8 |
|
15 |
/**
|
16 |
* Constructor.
|
17 |
*
|
18 |
+
* @version 2.9.0
|
|
|
19 |
*/
|
20 |
function __construct() {
|
21 |
|
22 |
$this->id = 'sku';
|
23 |
$this->short_desc = __( 'SKU', 'woocommerce-jetpack' );
|
24 |
+
$this->desc = __( 'Generate WooCommerce SKUs automatically. Search by SKU on frontend.', 'woocommerce-jetpack' );
|
25 |
$this->link_slug = 'woocommerce-sku';
|
26 |
$this->extra_desc = __( 'When enabled - all new products will be given (autogenerated) SKU.', 'woocommerce-jetpack' ) . '<br>' .
|
27 |
__( 'If you wish to set SKUs for existing products, use "Autogenerate SKUs" Tool.', 'woocommerce-jetpack' );
|
35 |
) );
|
36 |
|
37 |
if ( $this->is_enabled() ) {
|
38 |
+
// New product
|
39 |
if ( 'yes' === get_option( 'wcj_sku_new_products_generate_enabled', 'yes' ) ) {
|
40 |
+
add_action( 'wp_insert_post', array( $this, 'set_sku_for_new_product' ), PHP_INT_MAX, 3 );
|
41 |
+
add_action( 'woocommerce_duplicate_product', array( $this, 'set_new_product_sku_on_duplicate' ), PHP_INT_MAX, 2 );
|
42 |
}
|
43 |
+
// Allow duplicates
|
44 |
if ( 'yes' === get_option( 'wcj_sku_allow_duplicates_enabled', 'no' ) ) {
|
45 |
add_filter( 'wc_product_has_unique_sku', '__return_false', PHP_INT_MAX );
|
46 |
}
|
47 |
+
// SKU in emails
|
48 |
if ( 'yes' === get_option( 'wcj_sku_add_to_customer_emails', 'no' ) ) {
|
49 |
add_filter( 'woocommerce_email_order_items_args', array( $this, 'add_sku_to_customer_emails' ), PHP_INT_MAX, 1 );
|
50 |
}
|
51 |
+
// Search by SKU
|
52 |
+
if ( 'yes' === get_option( 'wcj_sku_search_enabled', 'no' ) ) {
|
53 |
+
add_filter( 'pre_get_posts', array( $this, 'add_search_by_sku_to_frontend' ), PHP_INT_MAX );
|
54 |
+
}
|
55 |
+
// Disable SKU
|
56 |
+
if ( 'yes' === get_option( 'wcj_sku_disabled', 'no' ) ) {
|
57 |
+
add_filter( 'wc_product_sku_enabled', '__return_false', PHP_INT_MAX );
|
58 |
+
}
|
59 |
}
|
60 |
}
|
61 |
|
71 |
}
|
72 |
|
73 |
/**
|
74 |
+
* get_all_variations.
|
75 |
*
|
76 |
+
* @version 2.9.0
|
77 |
* @since 2.4.8
|
78 |
*/
|
79 |
function get_all_variations( $_product ) {
|
80 |
$all_variations = array();
|
81 |
foreach ( $_product->get_children() as $child_id ) {
|
82 |
+
if ( $variation = ( WCJ_IS_WC_VERSION_BELOW_3 ? $_product->get_child( $child_id ) : wc_get_product( $child_id ) ) ) {
|
83 |
+
$all_variations[] = $_product->get_available_variation( $variation );
|
84 |
+
}
|
85 |
}
|
86 |
return $all_variations;
|
87 |
}
|
88 |
|
89 |
+
/**
|
90 |
+
* get_sequential_counter.
|
91 |
+
*
|
92 |
+
* @version 2.9.0
|
93 |
+
* @since 2.9.0
|
94 |
+
*/
|
95 |
+
function get_sequential_counter( $product_id ) {
|
96 |
+
if ( 'yes' === get_option( 'wcj_sku_number_generation_sequential_by_cat', 'no' ) ) {
|
97 |
+
$product_terms = get_the_terms( $product_id, 'product_cat' );
|
98 |
+
if ( is_array( $product_terms ) ) {
|
99 |
+
foreach ( $product_terms as $term ) {
|
100 |
+
$sku_number = $this->sequential_counter_cats[ $term->term_id ];
|
101 |
+
$this->sequential_counter_cats[ $term->term_id ]++;
|
102 |
+
return $sku_number;
|
103 |
+
}
|
104 |
+
}
|
105 |
+
}
|
106 |
+
// Cats disabled or no category found
|
107 |
+
$sku_number = $this->sequential_counter;
|
108 |
+
$this->sequential_counter++;
|
109 |
+
return $sku_number;
|
110 |
+
}
|
111 |
+
|
112 |
/**
|
113 |
* set_sku_with_variable.
|
114 |
*
|
115 |
+
* @version 2.9.0
|
116 |
* @todo `as_variable_with_suffix` - handle cases with more than 26 variations
|
117 |
*/
|
118 |
function set_sku_with_variable( $product_id, $is_preview ) {
|
121 |
$sku_number = rand();
|
122 |
} */
|
123 |
if ( 'sequential' === apply_filters( 'booster_get_option', 'product_id', get_option( 'wcj_sku_number_generation', 'product_id' ) ) ) {
|
124 |
+
$sku_number = $this->get_sequential_counter( $product_id );
|
125 |
+
} elseif ( 'hash_crc32' === apply_filters( 'booster_get_option', 'product_id', get_option( 'wcj_sku_number_generation', 'product_id' ) ) ) {
|
126 |
+
$sku_number = sprintf( "%u", crc32( $product_id ) );
|
127 |
} else { // if 'product_id'
|
128 |
$sku_number = $product_id;
|
129 |
}
|
138 |
$variations = $this->get_all_variations( $product );
|
139 |
if ( 'as_variable' === $variation_handling ) {
|
140 |
foreach ( $variations as $variation ) {
|
141 |
+
$this->set_sku( $variation['variation_id'], $sku_number, '', $is_preview, $product_id, wc_get_product( $variation['variation_id'] ) );
|
142 |
}
|
143 |
+
} elseif ( 'as_variation' === $variation_handling ) {
|
|
|
144 |
foreach ( $variations as $variation ) {
|
145 |
if ( 'sequential' === apply_filters( 'booster_get_option', 'product_id', get_option( 'wcj_sku_number_generation', 'product_id' ) ) ) {
|
146 |
+
$sku_number = $this->get_sequential_counter( $product_id );
|
147 |
+
} elseif ( 'hash_crc32' === apply_filters( 'booster_get_option', 'product_id', get_option( 'wcj_sku_number_generation', 'product_id' ) ) ) {
|
148 |
+
$sku_number = sprintf( "%u", crc32( $variation['variation_id'] ) );
|
149 |
} else { // if 'product_id'
|
150 |
$sku_number = $variation['variation_id'];
|
151 |
}
|
152 |
+
$this->set_sku( $variation['variation_id'], $sku_number, '', $is_preview, $product_id, wc_get_product( $variation['variation_id'] ) );
|
153 |
}
|
154 |
}
|
155 |
else if ( 'as_variable_with_suffix' === $variation_handling ) {
|
156 |
$variation_suffixes = 'abcdefghijklmnopqrstuvwxyz';
|
157 |
$abc = 0;
|
158 |
foreach ( $variations as $variation ) {
|
159 |
+
$this->set_sku( $variation['variation_id'], $sku_number, $variation_suffixes[ $abc++ ], $is_preview, $product_id, wc_get_product( $variation['variation_id'] ) );
|
160 |
if ( 26 == $abc ) {
|
161 |
$abc = 0;
|
162 |
}
|
168 |
/**
|
169 |
* set_sku.
|
170 |
*
|
171 |
+
* @version 2.9.0
|
172 |
*/
|
173 |
function set_sku( $product_id, $sku_number, $variation_suffix, $is_preview, $parent_product_id, $_product ) {
|
174 |
|
188 |
}
|
189 |
}
|
190 |
|
191 |
+
$format_template = get_option( 'wcj_sku_template',
|
192 |
+
'{category_prefix}{prefix}{sku_number}{suffix}{category_suffix}{variation_suffix}' );
|
193 |
+
$replace_values = array(
|
194 |
+
'{category_prefix}' => apply_filters( 'booster_get_option', '', $category_prefix ),
|
195 |
+
// '{tag_prefix}' => $tag_prefix,
|
196 |
+
'{prefix}' => get_option( 'wcj_sku_prefix', '' ),
|
197 |
+
'{sku_number}' => sprintf( '%0' . get_option( 'wcj_sku_minimum_number_length', 0 ) . 's', $sku_number ),
|
198 |
+
'{suffix}' => get_option( 'wcj_sku_suffix', '' ),
|
199 |
+
// '{tag_suffix}' => $tag_suffix,
|
200 |
+
'{category_suffix}' => $category_suffix,
|
201 |
+
'{variation_suffix}' => $variation_suffix,
|
202 |
+
);
|
203 |
+
$the_sku = ( $do_generate_new_sku ) ? str_replace( array_keys( $replace_values ), array_values( $replace_values ), $format_template ) : $old_sku;
|
204 |
|
205 |
if ( $is_preview ) {
|
206 |
+
$this->preview_buffer .= '<tr>' .
|
207 |
'<td>' . $this->product_counter++ . '</td>' .
|
208 |
'<td>' . $product_id . '</td>' .
|
209 |
'<td>' . $_product->get_title() . '</td>' .
|
217 |
}
|
218 |
|
219 |
/**
|
220 |
+
* maybe_get_sequential_counters.
|
221 |
*
|
222 |
+
* @version 2.9.0
|
223 |
+
* @since 2.9.0
|
224 |
*/
|
225 |
+
function maybe_get_sequential_counters() {
|
226 |
if ( 'sequential' === apply_filters( 'booster_get_option', 'product_id', get_option( 'wcj_sku_number_generation', 'product_id' ) ) ) {
|
227 |
$this->sequential_counter = apply_filters( 'booster_get_option', 1, get_option( 'wcj_sku_number_generation_sequential', 1 ) );
|
228 |
+
if ( 'yes' === get_option( 'wcj_sku_number_generation_sequential_by_cat', 'no' ) ) {
|
229 |
+
$this->product_categories = get_terms( 'product_cat', 'orderby=name&hide_empty=0' );
|
230 |
+
if ( ! empty( $this->product_categories ) && ! is_wp_error( $this->product_categories ) ) {
|
231 |
+
foreach ( $this->product_categories as $product_category ) {
|
232 |
+
$this->sequential_counter_cats[ $product_category->term_id ] = get_option( 'wcj_sku_counter_cat_' . $product_category->term_id, 1 );
|
233 |
+
}
|
234 |
+
}
|
235 |
+
}
|
236 |
}
|
237 |
+
}
|
238 |
+
|
239 |
+
/**
|
240 |
+
* maybe_save_sequential_counters.
|
241 |
+
*
|
242 |
+
* @version 2.9.0
|
243 |
+
* @since 2.9.0
|
244 |
+
*/
|
245 |
+
function maybe_save_sequential_counters( $is_preview = false ) {
|
246 |
+
if ( 'sequential' === apply_filters( 'booster_get_option', 'product_id', get_option( 'wcj_sku_number_generation', 'product_id' ) ) && ! $is_preview ) {
|
247 |
+
update_option( 'wcj_sku_number_generation_sequential', $this->sequential_counter );
|
248 |
+
if ( 'yes' === get_option( 'wcj_sku_number_generation_sequential_by_cat', 'no' ) ) {
|
249 |
+
if ( ! empty( $this->product_categories ) && ! is_wp_error( $this->product_categories ) ) {
|
250 |
+
foreach ( $this->product_categories as $product_category ) {
|
251 |
+
update_option( 'wcj_sku_counter_cat_' . $product_category->term_id, $this->sequential_counter_cats[ $product_category->term_id ] );
|
252 |
+
}
|
253 |
+
}
|
254 |
+
}
|
255 |
+
}
|
256 |
+
}
|
257 |
+
|
258 |
+
/**
|
259 |
+
* set_all_products_skus.
|
260 |
+
*
|
261 |
+
* @version 2.9.0
|
262 |
+
*/
|
263 |
+
function set_all_products_skus( $is_preview ) {
|
264 |
+
$this->maybe_get_sequential_counters();
|
265 |
+
$limit = 512;
|
266 |
$offset = 0;
|
267 |
+
while ( true ) {
|
268 |
$posts = new WP_Query( array(
|
269 |
'posts_per_page' => $limit,
|
270 |
'offset' => $offset,
|
273 |
'order' => 'ASC',
|
274 |
'orderby' => 'date',
|
275 |
'fields' => 'ids',
|
276 |
+
) );
|
277 |
if ( ! $posts->have_posts() ) {
|
278 |
break;
|
279 |
}
|
282 |
}
|
283 |
$offset += $limit;
|
284 |
}
|
285 |
+
$this->maybe_save_sequential_counters( $is_preview );
|
286 |
+
}
|
287 |
+
|
288 |
+
/**
|
289 |
+
* set_new_product_sku_on_duplicate.
|
290 |
+
*
|
291 |
+
* @version 2.9.0
|
292 |
+
* @since 2.9.0
|
293 |
+
*/
|
294 |
+
function set_new_product_sku_on_duplicate( $post_ID, $post ) {
|
295 |
+
$this->maybe_get_sequential_counters();
|
296 |
+
$this->set_sku_with_variable( $post_ID, false );
|
297 |
+
$this->maybe_save_sequential_counters();
|
298 |
}
|
299 |
|
300 |
/**
|
301 |
* set_sku_for_new_product.
|
302 |
*
|
303 |
+
* @version 2.9.0
|
304 |
*/
|
305 |
function set_sku_for_new_product( $post_ID, $post, $update ) {
|
306 |
if ( 'product' != $post->post_type ) {
|
307 |
return;
|
308 |
}
|
309 |
if ( false === $update ) {
|
310 |
+
$this->maybe_get_sequential_counters();
|
|
|
|
|
311 |
$this->set_sku_with_variable( $post_ID, false );
|
312 |
+
$this->maybe_save_sequential_counters();
|
|
|
|
|
313 |
}
|
314 |
}
|
315 |
|
316 |
/**
|
317 |
* create_sku_tool
|
318 |
*
|
319 |
+
* @version 2.9.0
|
320 |
*/
|
321 |
function create_sku_tool() {
|
322 |
$result_message = '';
|
323 |
+
$is_preview = ( isset( $_POST['preview_sku'] ) );
|
324 |
if ( isset( $_POST['set_sku'] ) || isset( $_POST['preview_sku'] ) ) {
|
325 |
$this->product_counter = 1;
|
326 |
$preview_html = '<table class="widefat" style="width:50%; min-width: 300px; margin-top: 10px;">';
|
333 |
'<th>' . __( 'SKU', 'woocommerce-jetpack' ) . '</th>' .
|
334 |
'<th>' . __( 'Old SKU', 'woocommerce-jetpack' ) . '</th>' .
|
335 |
'</tr>';
|
336 |
+
$this->preview_buffer = '';
|
337 |
$this->set_all_products_skus( $is_preview );
|
338 |
+
$preview_html .= $this->preview_buffer;
|
339 |
$preview_html .= '</table>';
|
340 |
$result_message = '<p><div class="updated"><p><strong>' . __( 'SKUs generated and set successfully!', 'woocommerce-jetpack' ) . '</strong></p></div></p>';
|
341 |
}
|
342 |
+
$html = '';
|
343 |
+
$html .= '<div class="wrap">';
|
344 |
+
$html .= $this->get_tool_header_html( 'sku' );
|
345 |
+
if ( ! $is_preview ) {
|
346 |
+
$html .= $result_message;
|
347 |
+
}
|
348 |
+
$html .= '<form method="post" action="">';
|
349 |
+
$html .= '<input class="button-primary" type="submit" name="preview_sku" id="preview_sku" value="' . __( 'Preview SKUs', 'woocommerce-jetpack' ) . '">';
|
350 |
+
$html .= ' ';
|
351 |
+
$html .= '<input class="button-primary" type="submit" name="set_sku" id="set_sku" value="' . __( 'Set SKUs', 'woocommerce-jetpack' ) . '">';
|
352 |
+
$html .= '</form>';
|
353 |
+
if ( $is_preview ) {
|
354 |
+
$html .= $preview_html;
|
355 |
+
}
|
356 |
+
$html .= '</div>';
|
357 |
+
echo $html;
|
358 |
+
}
|
359 |
+
|
360 |
+
/**
|
361 |
+
* search_post_join.
|
362 |
+
*
|
363 |
+
* @version 2.9.0
|
364 |
+
* @since 2.9.0
|
365 |
+
*/
|
366 |
+
function search_post_join( $join = '' ) {
|
367 |
+
global $wp_the_query;
|
368 |
+
if ( empty( $wp_the_query->query_vars['wc_query'] ) || empty( $wp_the_query->query_vars['s'] ) ) {
|
369 |
+
return $join;
|
370 |
+
}
|
371 |
+
$join .= "INNER JOIN wp_postmeta AS wcj_sku ON (wp_posts.ID = wcj_sku.post_id)";
|
372 |
+
return $join;
|
373 |
+
}
|
374 |
+
|
375 |
+
/**
|
376 |
+
* search_post_where.
|
377 |
+
*
|
378 |
+
* @version 2.9.0
|
379 |
+
* @since 2.9.0
|
380 |
+
*/
|
381 |
+
function search_post_where( $where = '' ) {
|
382 |
+
global $wp_the_query;
|
383 |
+
if ( empty( $wp_the_query->query_vars['wc_query'] ) || empty( $wp_the_query->query_vars['s'] ) ) {
|
384 |
+
return $where;
|
385 |
+
}
|
386 |
+
$where = preg_replace( "/post_title LIKE ('%[^%]+%')/", "post_title LIKE $1) OR (wcj_sku.meta_key = '_sku' AND CAST(wcj_sku.meta_value AS CHAR) LIKE $1 ", $where );
|
387 |
+
return $where;
|
388 |
+
}
|
389 |
+
|
390 |
+
/*
|
391 |
+
* add_search_by_sku_to_frontend.
|
392 |
+
*
|
393 |
+
* @version 2.9.0
|
394 |
+
* @since 2.9.0
|
395 |
+
*/
|
396 |
+
function add_search_by_sku_to_frontend( $query ) {
|
397 |
+
if (
|
398 |
+
isset( $query->query ) &&
|
399 |
+
! $query->is_admin &&
|
400 |
+
$query->is_search &&
|
401 |
+
! empty( $query->query_vars['wc_query'] ) &&
|
402 |
+
! empty( $query->query_vars['s'] ) &&
|
403 |
+
'product' === $query->query_vars['post_type']
|
404 |
+
) {
|
405 |
+
add_filter( 'posts_join', array( $this, 'search_post_join' ) );
|
406 |
+
add_filter( 'posts_where', array( $this, 'search_post_where' ) );
|
407 |
+
}
|
408 |
}
|
409 |
|
410 |
}
|
includes/classes/class-wcj-invoice.php
CHANGED
@@ -18,7 +18,7 @@ class WCJ_Invoice {
|
|
18 |
/**
|
19 |
* Constructor.
|
20 |
*/
|
21 |
-
|
22 |
$this->order_id = $order_id;
|
23 |
$this->invoice_type = $invoice_type;
|
24 |
}
|
18 |
/**
|
19 |
* Constructor.
|
20 |
*/
|
21 |
+
function __construct( $order_id, $invoice_type ) {
|
22 |
$this->order_id = $order_id;
|
23 |
$this->invoice_type = $invoice_type;
|
24 |
}
|
includes/classes/class-wcj-module.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce Module
|
4 |
*
|
5 |
-
* @version 2.
|
6 |
* @since 2.2.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
@@ -213,7 +213,8 @@ if ( ! class_exists( 'WCJ_Module' ) ) :
|
|
213 |
/**
|
214 |
* create_meta_box.
|
215 |
*
|
216 |
-
* @version 2.
|
|
|
217 |
*/
|
218 |
function create_meta_box() {
|
219 |
$current_post_id = get_the_ID();
|
@@ -270,6 +271,9 @@ if ( ! class_exists( 'WCJ_Module' ) ) :
|
|
270 |
if ( isset( $option['custom_attributes'] ) ) {
|
271 |
$input_ending = ' ' . $option['custom_attributes'] . $input_ending;
|
272 |
}
|
|
|
|
|
|
|
273 |
}
|
274 |
switch ( $option['type'] ) {
|
275 |
case 'price':
|
@@ -307,7 +311,7 @@ if ( ! class_exists( 'WCJ_Module' ) ) :
|
|
307 |
/**
|
308 |
* is_enabled.
|
309 |
*/
|
310 |
-
|
311 |
$the_id = ( 'module' === $this->type ) ? $this->id : $this->parent_id;
|
312 |
return ( 'yes' === get_option( 'wcj_' . $the_id . '_enabled' ) ) ? true : false;
|
313 |
}
|
@@ -316,7 +320,7 @@ if ( ! class_exists( 'WCJ_Module' ) ) :
|
|
316 |
* add_enabled_option.
|
317 |
* only for `module`
|
318 |
*
|
319 |
-
|
320 |
$all_settings = $this->get_settings();
|
321 |
$settings[] = $all_settings[1];
|
322 |
return $settings;
|
@@ -449,7 +453,7 @@ if ( ! class_exists( 'WCJ_Module' ) ) :
|
|
449 |
* @version 2.3.10
|
450 |
* @since 2.3.10
|
451 |
*/
|
452 |
-
|
453 |
$is_enabled_html = ( $this->is_enabled() ) ?
|
454 |
'<span style="color:green;font-style:italic;">' . __( 'enabled', 'woocommerce-jetpack' ) . '</span>' :
|
455 |
'<span style="color:gray;font-style:italic;">' . __( 'disabled', 'woocommerce-jetpack' ) . '</span>';
|
2 |
/**
|
3 |
* Booster for WooCommerce Module
|
4 |
*
|
5 |
+
* @version 2.9.0
|
6 |
* @since 2.2.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
213 |
/**
|
214 |
* create_meta_box.
|
215 |
*
|
216 |
+
* @version 2.9.0
|
217 |
+
* @todo placeholder for textarea
|
218 |
*/
|
219 |
function create_meta_box() {
|
220 |
$current_post_id = get_the_ID();
|
271 |
if ( isset( $option['custom_attributes'] ) ) {
|
272 |
$input_ending = ' ' . $option['custom_attributes'] . $input_ending;
|
273 |
}
|
274 |
+
if ( isset( $option['placeholder'] ) ) {
|
275 |
+
$input_ending = ' placeholder="' . $option['placeholder'] . '"' . $input_ending;
|
276 |
+
}
|
277 |
}
|
278 |
switch ( $option['type'] ) {
|
279 |
case 'price':
|
311 |
/**
|
312 |
* is_enabled.
|
313 |
*/
|
314 |
+
function is_enabled() {
|
315 |
$the_id = ( 'module' === $this->type ) ? $this->id : $this->parent_id;
|
316 |
return ( 'yes' === get_option( 'wcj_' . $the_id . '_enabled' ) ) ? true : false;
|
317 |
}
|
320 |
* add_enabled_option.
|
321 |
* only for `module`
|
322 |
*
|
323 |
+
function add_enabled_option( $settings ) {
|
324 |
$all_settings = $this->get_settings();
|
325 |
$settings[] = $all_settings[1];
|
326 |
return $settings;
|
453 |
* @version 2.3.10
|
454 |
* @since 2.3.10
|
455 |
*/
|
456 |
+
function add_module_tools_info_to_tools_dashboard() {
|
457 |
$is_enabled_html = ( $this->is_enabled() ) ?
|
458 |
'<span style="color:green;font-style:italic;">' . __( 'enabled', 'woocommerce-jetpack' ) . '</span>' :
|
459 |
'<span style="color:gray;font-style:italic;">' . __( 'disabled', 'woocommerce-jetpack' ) . '</span>';
|
includes/classes/class-wcj-pdf-invoice.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce PDF Invoice
|
4 |
*
|
5 |
-
* @version 2.
|
6 |
* @author Algoritmika Ltd.
|
7 |
*/
|
8 |
|
@@ -15,118 +15,18 @@ class WCJ_PDF_Invoice extends WCJ_Invoice {
|
|
15 |
/**
|
16 |
* Constructor.
|
17 |
*/
|
18 |
-
|
19 |
parent::__construct( $order_id, $invoice_type );
|
20 |
}
|
21 |
|
22 |
-
/**
|
23 |
-
* check_tcpdf_fonts.
|
24 |
-
*
|
25 |
-
* @version 2.7.0
|
26 |
-
* @since 2.7.0
|
27 |
-
* @todo use function - search for `check_tcpdf_fonts`
|
28 |
-
* @todo optional "do not download" (then default fonts directory with basic fonts)
|
29 |
-
* @todo check file size > 0 (not only if file exists in directory)
|
30 |
-
* @todo check if it works ok with https://booster.io
|
31 |
-
* @todo use `download_url()` instead of `file_get_contents()` or `curl` (in all Booster files)
|
32 |
-
*/
|
33 |
-
/* function check_tcpdf_fonts() {
|
34 |
-
$tcpdf_fonts_dir = wcj_get_wcj_uploads_dir( 'tcpdf_fonts' ) . '/';
|
35 |
-
if ( ! file_exists( $tcpdf_fonts_dir ) ) {
|
36 |
-
mkdir( $tcpdf_fonts_dir );
|
37 |
-
}
|
38 |
-
$tcpdf_fonts_dir_files = scandir( $tcpdf_fonts_dir );
|
39 |
-
$tcpdf_fonts_files = array(
|
40 |
-
'angsanaupc.ctg.z',
|
41 |
-
'angsanaupc.php',
|
42 |
-
'angsanaupc.z',
|
43 |
-
'angsanaupcb.ctg.z',
|
44 |
-
'angsanaupcb.php',
|
45 |
-
'angsanaupcb.z',
|
46 |
-
'angsanaupcbi.ctg.z',
|
47 |
-
'angsanaupcbi.php',
|
48 |
-
'angsanaupcbi.z',
|
49 |
-
'angsanaupci.ctg.z',
|
50 |
-
'angsanaupci.php',
|
51 |
-
'angsanaupci.z',
|
52 |
-
'cordiaupc.ctg.z',
|
53 |
-
'cordiaupc.php',
|
54 |
-
'cordiaupc.z',
|
55 |
-
'cordiaupcb.ctg.z',
|
56 |
-
'cordiaupcb.php',
|
57 |
-
'cordiaupcb.z',
|
58 |
-
'cordiaupcbi.ctg.z',
|
59 |
-
'cordiaupcbi.php',
|
60 |
-
'cordiaupcbi.z',
|
61 |
-
'cordiaupci.ctg.z',
|
62 |
-
'cordiaupci.php',
|
63 |
-
'cordiaupci.z',
|
64 |
-
'courier.php',
|
65 |
-
'courierb.php',
|
66 |
-
'courierbi.php',
|
67 |
-
'courieri.php',
|
68 |
-
'dejavusans.ctg.z',
|
69 |
-
'dejavusans.php',
|
70 |
-
'dejavusans.z',
|
71 |
-
'dejavusansb.ctg.z',
|
72 |
-
'dejavusansb.php',
|
73 |
-
'dejavusansb.z',
|
74 |
-
'dejavusansbi.ctg.z',
|
75 |
-
'dejavusansbi.php',
|
76 |
-
'dejavusansbi.z',
|
77 |
-
'droidsansfallback.ctg.z',
|
78 |
-
'droidsansfallback.php',
|
79 |
-
'droidsansfallback.z',
|
80 |
-
'helvetica.php',
|
81 |
-
'helveticab.php',
|
82 |
-
'helveticabi.php',
|
83 |
-
'helveticai.php',
|
84 |
-
'symbol.php',
|
85 |
-
'thsarabun.ctg.z',
|
86 |
-
'thsarabun.php',
|
87 |
-
'thsarabun.z',
|
88 |
-
'thsarabunb.ctg.z',
|
89 |
-
'thsarabunb.php',
|
90 |
-
'thsarabunb.z',
|
91 |
-
'thsarabunbi.ctg.z',
|
92 |
-
'thsarabunbi.php',
|
93 |
-
'thsarabunbi.z',
|
94 |
-
'thsarabuni.ctg.z',
|
95 |
-
'thsarabuni.php',
|
96 |
-
'thsarabuni.z',
|
97 |
-
'times.php',
|
98 |
-
'timesb.php',
|
99 |
-
'timesbi.php',
|
100 |
-
'timesi.php',
|
101 |
-
'zapfdingbats.php',
|
102 |
-
);
|
103 |
-
require_once( ABSPATH . 'wp-admin/includes/file.php' );
|
104 |
-
foreach ( $tcpdf_fonts_files as $tcpdf_fonts_file ) {
|
105 |
-
if ( ! in_array( $tcpdf_fonts_file, $tcpdf_fonts_dir_files ) ) {
|
106 |
-
$url = 'http://booster.io/tcpdf_fonts/' . $tcpdf_fonts_file;
|
107 |
-
if ( '.php' === substr( $tcpdf_fonts_file, -4 ) ) {
|
108 |
-
$url .= '.data';
|
109 |
-
}
|
110 |
-
$response_file_name = download_url( $url );
|
111 |
-
if ( ! is_wp_error( $response_file_name ) ) {
|
112 |
-
$response = file_get_contents( $response_file_name );
|
113 |
-
if ( $response ) {
|
114 |
-
file_put_contents( $tcpdf_fonts_dir . $tcpdf_fonts_file, $response );
|
115 |
-
}
|
116 |
-
unlink( $response_file_name );
|
117 |
-
}
|
118 |
-
}
|
119 |
-
}
|
120 |
-
} */
|
121 |
-
|
122 |
/**
|
123 |
* prepare_pdf.
|
124 |
*
|
125 |
-
* @version 2.
|
126 |
*/
|
127 |
function prepare_pdf() {
|
128 |
|
129 |
-
|
130 |
|
131 |
$invoice_type = $this->invoice_type;
|
132 |
|
@@ -188,9 +88,11 @@ class WCJ_PDF_Invoice extends WCJ_Invoice {
|
|
188 |
$pdf->SetPrintFooter( false );
|
189 |
}
|
190 |
|
|
|
|
|
191 |
// Set Header and Footer fonts
|
192 |
-
$pdf->setHeaderFont( Array( /* PDF_FONT_NAME_MAIN */
|
193 |
-
$pdf->setFooterFont( Array( /* PDF_FONT_NAME_DATA */
|
194 |
|
195 |
// Set default monospaced font
|
196 |
$pdf->SetDefaultMonospacedFont( PDF_FONT_MONOSPACED );
|
@@ -220,16 +122,10 @@ class WCJ_PDF_Invoice extends WCJ_Invoice {
|
|
220 |
$pdf->setFontSubsetting( true );
|
221 |
|
222 |
// Set font
|
223 |
-
/* if ( 'DroidSansFallback' ===
|
224 |
$pdf->addTTFfont( wcj_plugin_path() . '/includes/lib/tcpdf_min/fonts/' . 'DroidSansFallback.ttf' );
|
225 |
} */
|
226 |
-
|
227 |
-
$pdf->SetFont(
|
228 |
-
apply_filters( 'booster_get_option', 'dejavusans', get_option( 'wcj_invoicing_' . $invoice_type . '_general_font_family', 'dejavusans' ) ),
|
229 |
-
'',
|
230 |
-
apply_filters( 'booster_get_option', 8, get_option( 'wcj_invoicing_' . $invoice_type . '_general_font_size', 8 ) ),
|
231 |
-
'',
|
232 |
-
true );
|
233 |
|
234 |
// Add a page
|
235 |
$pdf->AddPage();
|
2 |
/**
|
3 |
* Booster for WooCommerce PDF Invoice
|
4 |
*
|
5 |
+
* @version 2.9.0
|
6 |
* @author Algoritmika Ltd.
|
7 |
*/
|
8 |
|
15 |
/**
|
16 |
* Constructor.
|
17 |
*/
|
18 |
+
function __construct( $order_id, $invoice_type ) {
|
19 |
parent::__construct( $order_id, $invoice_type );
|
20 |
}
|
21 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
22 |
/**
|
23 |
* prepare_pdf.
|
24 |
*
|
25 |
+
* @version 2.9.0
|
26 |
*/
|
27 |
function prepare_pdf() {
|
28 |
|
29 |
+
wcj_check_and_maybe_download_tcpdf_fonts();
|
30 |
|
31 |
$invoice_type = $this->invoice_type;
|
32 |
|
88 |
$pdf->SetPrintFooter( false );
|
89 |
}
|
90 |
|
91 |
+
$tcpdf_font = wcj_get_tcpdf_font( $invoice_type );
|
92 |
+
|
93 |
// Set Header and Footer fonts
|
94 |
+
$pdf->setHeaderFont( Array( /* PDF_FONT_NAME_MAIN */ $tcpdf_font, '', PDF_FONT_SIZE_MAIN ) );
|
95 |
+
$pdf->setFooterFont( Array( /* PDF_FONT_NAME_DATA */ $tcpdf_font, '', PDF_FONT_SIZE_DATA ) );
|
96 |
|
97 |
// Set default monospaced font
|
98 |
$pdf->SetDefaultMonospacedFont( PDF_FONT_MONOSPACED );
|
122 |
$pdf->setFontSubsetting( true );
|
123 |
|
124 |
// Set font
|
125 |
+
/* if ( 'DroidSansFallback' === $tcpdf_font ) {
|
126 |
$pdf->addTTFfont( wcj_plugin_path() . '/includes/lib/tcpdf_min/fonts/' . 'DroidSansFallback.ttf' );
|
127 |
} */
|
128 |
+
$pdf->SetFont( $tcpdf_font, '', get_option( 'wcj_invoicing_' . $invoice_type . '_general_font_size', 8 ), '', true );
|
|
|
|
|
|
|
|
|
|
|
|
|
129 |
|
130 |
// Add a page
|
131 |
$pdf->AddPage();
|
includes/classes/class-wcj-product.php
CHANGED
@@ -19,7 +19,7 @@ class WCJ_Product {
|
|
19 |
/**
|
20 |
* Constructor.
|
21 |
*/
|
22 |
-
|
23 |
$this->id = $product_id;
|
24 |
// $this->product = wc_get_product( $this->id );
|
25 |
}
|
@@ -29,7 +29,7 @@ class WCJ_Product {
|
|
29 |
*
|
30 |
* @version 2.4.8
|
31 |
*/
|
32 |
-
|
33 |
$purchase_price = 0;
|
34 |
if ( 'yes' === get_option( 'wcj_purchase_price_enabled', 'yes' ) ) {
|
35 |
$purchase_price += get_post_meta( $this->id, '_' . 'wcj_purchase_price' , true );
|
19 |
/**
|
20 |
* Constructor.
|
21 |
*/
|
22 |
+
function __construct( $product_id ) {
|
23 |
$this->id = $product_id;
|
24 |
// $this->product = wc_get_product( $this->id );
|
25 |
}
|
29 |
*
|
30 |
* @version 2.4.8
|
31 |
*/
|
32 |
+
function get_purchase_price() {
|
33 |
$purchase_price = 0;
|
34 |
if ( 'yes' === get_option( 'wcj_purchase_price_enabled', 'yes' ) ) {
|
35 |
$purchase_price += get_post_meta( $this->id, '_' . 'wcj_purchase_price' , true );
|
includes/classes/class-wcj-scripts.php
ADDED
@@ -0,0 +1,151 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Booster for WooCommerce - Scripts
|
4 |
+
*
|
5 |
+
* @version 2.9.0
|
6 |
+
* @since 2.9.0
|
7 |
+
* @author Algoritmika Ltd.
|
8 |
+
* @todo move this class to another directory
|
9 |
+
*/
|
10 |
+
|
11 |
+
if ( ! defined( 'ABSPATH' ) ) exit;
|
12 |
+
|
13 |
+
if ( ! class_exists( 'WCJ_Scripts' ) ) :
|
14 |
+
|
15 |
+
class WCJ_Scripts {
|
16 |
+
|
17 |
+
/**
|
18 |
+
* Constructor.
|
19 |
+
*
|
20 |
+
* @version 2.9.0
|
21 |
+
* @since 2.9.0
|
22 |
+
*/
|
23 |
+
function __construct() {
|
24 |
+
// Scripts - Admin
|
25 |
+
if ( is_admin() ) {
|
26 |
+
add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_wcj_backend_scripts' ) );
|
27 |
+
if (
|
28 |
+
wcj_is_module_enabled( 'purchase_data' ) ||
|
29 |
+
wcj_is_module_enabled( 'pdf_invoicing' ) ||
|
30 |
+
wcj_is_module_enabled( 'crowdfunding' ) ||
|
31 |
+
wcj_is_module_enabled( 'reports' )
|
32 |
+
) {
|
33 |
+
add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_backend_scripts' ) );
|
34 |
+
}
|
35 |
+
}
|
36 |
+
// Scripts - Frontend
|
37 |
+
if (
|
38 |
+
wcj_is_module_enabled( 'product_input_fields' ) ||
|
39 |
+
wcj_is_module_enabled( 'checkout_custom_fields' ) ||
|
40 |
+
wcj_is_module_enabled( 'product_bookings' )
|
41 |
+
){
|
42 |
+
add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_frontend_scripts' ) );
|
43 |
+
}
|
44 |
+
}
|
45 |
+
|
46 |
+
/**
|
47 |
+
* enqueue_wcj_backend_scripts.
|
48 |
+
*
|
49 |
+
* @version 2.5.3
|
50 |
+
* @since 2.5.3
|
51 |
+
*/
|
52 |
+
function enqueue_wcj_backend_scripts() {
|
53 |
+
wp_enqueue_style( 'wcj-admin', wcj_plugin_url() . '/includes/css/wcj-admin.css' );
|
54 |
+
}
|
55 |
+
|
56 |
+
/**
|
57 |
+
* enqueue_backend_scripts.
|
58 |
+
*
|
59 |
+
* @version 2.4.0
|
60 |
+
*/
|
61 |
+
function enqueue_backend_scripts() {
|
62 |
+
$this->maybe_enqueue_datepicker_scripts();
|
63 |
+
$this->maybe_enqueue_datepicker_style();
|
64 |
+
}
|
65 |
+
|
66 |
+
/**
|
67 |
+
* enqueue_frontend_scripts.
|
68 |
+
*
|
69 |
+
* @version 2.4.0
|
70 |
+
* @since 2.3.0
|
71 |
+
*/
|
72 |
+
function enqueue_frontend_scripts() {
|
73 |
+
$this->maybe_enqueue_datepicker_scripts();
|
74 |
+
$this->maybe_enqueue_timepicker_scripts();
|
75 |
+
$this->maybe_enqueue_datepicker_style();
|
76 |
+
$this->maybe_enqueue_timepicker_style();
|
77 |
+
}
|
78 |
+
|
79 |
+
/**
|
80 |
+
* maybe_enqueue_datepicker_scripts.
|
81 |
+
*
|
82 |
+
* @version 2.9.0
|
83 |
+
* @since 2.4.0
|
84 |
+
*/
|
85 |
+
function maybe_enqueue_datepicker_scripts() {
|
86 |
+
if ( ! wcj_is_module_enabled( 'general' ) || ( wcj_is_module_enabled( 'general' ) && 'no' === get_option( 'wcj_general_advanced_disable_datepicker_js', 'no' ) ) ) {
|
87 |
+
wp_enqueue_script( 'jquery-ui-datepicker' );
|
88 |
+
wp_enqueue_script( 'wcj-datepicker', wcj_plugin_url() . '/includes/js/wcj-datepicker.js',
|
89 |
+
array( 'jquery' ),
|
90 |
+
WCJ()->version,
|
91 |
+
true );
|
92 |
+
wp_enqueue_script( 'wcj-weekpicker', wcj_plugin_url() . '/includes/js/wcj-weekpicker.js',
|
93 |
+
array( 'jquery' ),
|
94 |
+
WCJ()->version,
|
95 |
+
true );
|
96 |
+
}
|
97 |
+
}
|
98 |
+
|
99 |
+
/**
|
100 |
+
* maybe_enqueue_timepicker_scripts.
|
101 |
+
*
|
102 |
+
* @version 2.9.0
|
103 |
+
* @since 2.4.0
|
104 |
+
*/
|
105 |
+
function maybe_enqueue_timepicker_scripts() {
|
106 |
+
if ( ! wcj_is_module_enabled( 'general' ) || ( wcj_is_module_enabled( 'general' ) && 'no' === get_option( 'wcj_general_advanced_disable_timepicker_js', 'no' ) ) ) {
|
107 |
+
wp_enqueue_script( 'jquery-ui-timepicker',
|
108 |
+
wcj_plugin_url() . '/includes/lib/timepicker/jquery.timepicker.min.js',
|
109 |
+
array( 'jquery' ),
|
110 |
+
WCJ()->version,
|
111 |
+
true );
|
112 |
+
wp_enqueue_script( 'wcj-timepicker', wcj_plugin_url() . '/includes/js/wcj-timepicker.js',
|
113 |
+
array( 'jquery' ),
|
114 |
+
WCJ()->version,
|
115 |
+
true );
|
116 |
+
}
|
117 |
+
}
|
118 |
+
|
119 |
+
/**
|
120 |
+
* maybe_enqueue_datepicker_style.
|
121 |
+
*
|
122 |
+
* @version 2.9.0
|
123 |
+
* @since 2.4.0
|
124 |
+
*/
|
125 |
+
function maybe_enqueue_datepicker_style() {
|
126 |
+
if ( ! wcj_is_module_enabled( 'general' ) || ( wcj_is_module_enabled( 'general' ) && 'no' === get_option( 'wcj_general_advanced_disable_datepicker_css', 'no' ) ) ) {
|
127 |
+
$datepicker_css_path = '//ajax.googleapis.com/ajax/libs/jqueryui/1.9.0/themes/base/jquery-ui.css';
|
128 |
+
if ( wcj_is_module_enabled( 'general' ) ) {
|
129 |
+
$datepicker_css_path = get_option( 'wcj_general_advanced_datepicker_css', $datepicker_css_path );
|
130 |
+
}
|
131 |
+
wp_enqueue_style( 'jquery-ui-style', $datepicker_css_path );
|
132 |
+
}
|
133 |
+
}
|
134 |
+
|
135 |
+
/**
|
136 |
+
* maybe_enqueue_timepicker_style.
|
137 |
+
*
|
138 |
+
* @version 2.9.0
|
139 |
+
* @since 2.4.0
|
140 |
+
*/
|
141 |
+
function maybe_enqueue_timepicker_style() {
|
142 |
+
if ( ! wcj_is_module_enabled( 'general' ) || ( wcj_is_module_enabled( 'general' ) && 'no' === get_option( 'wcj_general_advanced_disable_timepicker_css', 'no' ) ) ) {
|
143 |
+
wp_enqueue_style( 'wcj-timepicker-style', wcj_plugin_url() . '/includes/lib/timepicker/jquery.timepicker.min.css', array(), WCJ()->version );
|
144 |
+
}
|
145 |
+
}
|
146 |
+
|
147 |
+
}
|
148 |
+
|
149 |
+
endif;
|
150 |
+
|
151 |
+
return new WCJ_Scripts();
|
includes/classes/class-wcj-tcpdf.php
CHANGED
@@ -2,8 +2,9 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce TCPDF
|
4 |
*
|
5 |
-
* @version 2.
|
6 |
* @author Algoritmika Ltd.
|
|
|
7 |
*/
|
8 |
|
9 |
if ( ! defined( 'ABSPATH' ) ) exit;
|
@@ -14,48 +15,32 @@ if ( ! class_exists( 'WCJ_TCPDF' ) ) :
|
|
14 |
require_once( wcj_plugin_path() . '/includes/lib/tcpdf_min/tcpdf.php' );
|
15 |
|
16 |
class WCJ_TCPDF extends TCPDF {
|
17 |
-
|
18 |
/**
|
19 |
* set_invoice_type.
|
20 |
*/
|
21 |
-
|
22 |
$this->invoice_type = $invoice_type;
|
23 |
}
|
24 |
|
25 |
-
/**
|
26 |
-
* Page header.
|
27 |
-
*
|
28 |
-
public function Header() {
|
29 |
-
// Logo
|
30 |
-
$image_file = K_PATH_IMAGES.'logo_example.jpg';
|
31 |
-
$this->Image($image_file, 10, 10, 15, '', 'JPG', '', 'T', false, 300, '', false, false, 0, false, false, false);
|
32 |
-
// Set font
|
33 |
-
$this->SetFont('helvetica', 'B', 20);
|
34 |
-
// Title
|
35 |
-
$this->Cell(0, 15, '<< TCPDF Example 003 >>', 0, false, 'C', 0, '', 0, false, 'M', 'M');
|
36 |
-
}
|
37 |
-
|
38 |
/**
|
39 |
* Page footer.
|
|
|
|
|
|
|
40 |
*/
|
41 |
-
|
42 |
-
// Position at 15 mm from bottom
|
43 |
-
//$this->SetY(-15);
|
44 |
-
// Set font
|
45 |
-
//$this->SetFont('helvetica', 'I', 8);
|
46 |
-
|
47 |
$invoice_type = $this->invoice_type;
|
48 |
-
$footer_text =
|
49 |
-
//$this->Cell( 0, 0, do_shortcode( $footer_text ), 0, false, 'L', 0, '', 0, false, 'T', 'M' );
|
50 |
$footer_text = str_replace( '%page_number%', $this->getAliasNumPage(), $footer_text );
|
51 |
$footer_text = str_replace( '%total_pages%', $this->getAliasNbPages(), $footer_text );
|
52 |
$border_desc = array(
|
53 |
'T' => array(
|
54 |
-
'color' => wcj_hex2rgb( get_option( 'wcj_invoicing_' . $invoice_type . '_footer_line_color' ) ),
|
55 |
'width' => 0,
|
56 |
),
|
57 |
);
|
58 |
-
$footer_text_color_rgb = wcj_hex2rgb( get_option( 'wcj_invoicing_' . $invoice_type . '_footer_text_color' ) );
|
59 |
$this->SetTextColor( $footer_text_color_rgb[0], $footer_text_color_rgb[1], $footer_text_color_rgb[2] );
|
60 |
$this->writeHTMLCell( 0, 0, '', '', do_shortcode( $footer_text ), $border_desc, 1, 0, true, '', true );
|
61 |
}
|
2 |
/**
|
3 |
* Booster for WooCommerce TCPDF
|
4 |
*
|
5 |
+
* @version 2.9.0
|
6 |
* @author Algoritmika Ltd.
|
7 |
+
* @todo (maybe) `Header()`
|
8 |
*/
|
9 |
|
10 |
if ( ! defined( 'ABSPATH' ) ) exit;
|
15 |
require_once( wcj_plugin_path() . '/includes/lib/tcpdf_min/tcpdf.php' );
|
16 |
|
17 |
class WCJ_TCPDF extends TCPDF {
|
18 |
+
|
19 |
/**
|
20 |
* set_invoice_type.
|
21 |
*/
|
22 |
+
function set_invoice_type( $invoice_type ) {
|
23 |
$this->invoice_type = $invoice_type;
|
24 |
}
|
25 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
26 |
/**
|
27 |
* Page footer.
|
28 |
+
*
|
29 |
+
* @version 2.9.0
|
30 |
+
* @todo (maybe) e.g. "Set font" - `$this->SetFont( 'helvetica', 'I', 8 );`
|
31 |
*/
|
32 |
+
function Footer() {
|
|
|
|
|
|
|
|
|
|
|
33 |
$invoice_type = $this->invoice_type;
|
34 |
+
$footer_text = get_option( 'wcj_invoicing_' . $invoice_type . '_footer_text', __( 'Page %page_number% / %total_pages%', 'woocommerce-jetpack' ) );
|
|
|
35 |
$footer_text = str_replace( '%page_number%', $this->getAliasNumPage(), $footer_text );
|
36 |
$footer_text = str_replace( '%total_pages%', $this->getAliasNbPages(), $footer_text );
|
37 |
$border_desc = array(
|
38 |
'T' => array(
|
39 |
+
'color' => wcj_hex2rgb( get_option( 'wcj_invoicing_' . $invoice_type . '_footer_line_color', '#cccccc' ) ),
|
40 |
'width' => 0,
|
41 |
),
|
42 |
);
|
43 |
+
$footer_text_color_rgb = wcj_hex2rgb( get_option( 'wcj_invoicing_' . $invoice_type . '_footer_text_color', '#cccccc' ) );
|
44 |
$this->SetTextColor( $footer_text_color_rgb[0], $footer_text_color_rgb[1], $footer_text_color_rgb[2] );
|
45 |
$this->writeHTMLCell( 0, 0, '', '', do_shortcode( $footer_text ), $border_desc, 1, 0, true, '', true );
|
46 |
}
|
includes/css/wcj-offer-price.css
ADDED
@@ -0,0 +1,81 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/**
|
2 |
+
* wcj-offer-price.
|
3 |
+
*
|
4 |
+
* @version 2.9.0
|
5 |
+
* @since 2.9.0
|
6 |
+
*/
|
7 |
+
|
8 |
+
/* The Modal (background) */
|
9 |
+
.wcj-offer-price-modal {
|
10 |
+
display: none; /* Hidden by default */
|
11 |
+
position: fixed; /* Stay in place */
|
12 |
+
z-index: 999999; /* Sit on top */
|
13 |
+
padding-top: 100px; /* Location of the box */
|
14 |
+
left: 0;
|
15 |
+
top: 0;
|
16 |
+
width: 100%; /* Full width */
|
17 |
+
height: 100%; /* Full height */
|
18 |
+
overflow: auto; /* Enable scroll if needed */
|
19 |
+
background-color: rgb(0,0,0); /* Fallback color */
|
20 |
+
background-color: rgba(0,0,0,0.4); /* Black w/ opacity */
|
21 |
+
}
|
22 |
+
|
23 |
+
/* Modal Content */
|
24 |
+
.wcj-offer-price-modal-content {
|
25 |
+
position: relative;
|
26 |
+
background-color: #fefefe;
|
27 |
+
margin: auto;
|
28 |
+
padding: 0;
|
29 |
+
border: 1px solid #888;
|
30 |
+
width: 80%;
|
31 |
+
box-shadow: 0 4px 8px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19);
|
32 |
+
-webkit-animation-name: animatetop;
|
33 |
+
-webkit-animation-duration: 0.4s;
|
34 |
+
animation-name: animatetop;
|
35 |
+
animation-duration: 0.4s
|
36 |
+
}
|
37 |
+
|
38 |
+
/* Form */
|
39 |
+
#wcj-offer-price-form {
|
40 |
+
padding-top: 20px;
|
41 |
+
}
|
42 |
+
|
43 |
+
/* Add Animation */
|
44 |
+
@-webkit-keyframes animatetop {
|
45 |
+
from {top:-300px; opacity:0}
|
46 |
+
to {top:0; opacity:1}
|
47 |
+
}
|
48 |
+
|
49 |
+
@keyframes animatetop {
|
50 |
+
from {top:-300px; opacity:0}
|
51 |
+
to {top:0; opacity:1}
|
52 |
+
}
|
53 |
+
|
54 |
+
/* The Close Button */
|
55 |
+
.wcj-offer-price-form-close {
|
56 |
+
color: white;
|
57 |
+
float: right;
|
58 |
+
font-size: 28px;
|
59 |
+
font-weight: bold;
|
60 |
+
}
|
61 |
+
|
62 |
+
.wcj-offer-price-form-close:hover,
|
63 |
+
.wcj-offer-price-form-close:focus {
|
64 |
+
color: #000;
|
65 |
+
text-decoration: none;
|
66 |
+
cursor: pointer;
|
67 |
+
}
|
68 |
+
|
69 |
+
.wcj-offer-modal-header {
|
70 |
+
padding: 2px 16px;
|
71 |
+
background-color: #5cb85c;
|
72 |
+
color: white;
|
73 |
+
}
|
74 |
+
|
75 |
+
.wcj-offer-price-modal-body {padding: 2px 16px;}
|
76 |
+
|
77 |
+
.wcj-offer-price-modal-footer {
|
78 |
+
padding: 2px 16px;
|
79 |
+
background-color: #5cb85c;
|
80 |
+
color: white;
|
81 |
+
}
|
includes/emails/class-wc-email-wcj-custom.php
CHANGED
@@ -71,7 +71,7 @@ class WC_Email_WCJ_Custom extends WC_Email {
|
|
71 |
* @since 2.5.6
|
72 |
* @return string
|
73 |
*/
|
74 |
-
|
75 |
$value = is_null( $value ) ? '' : $value;
|
76 |
/* return wp_kses( trim( stripslashes( $value ) ),
|
77 |
array_merge(
|
@@ -93,7 +93,7 @@ class WC_Email_WCJ_Custom extends WC_Email {
|
|
93 |
* @since 2.5.6
|
94 |
* @return string
|
95 |
*/
|
96 |
-
|
97 |
return $this->generate_textarea_html( $key, $data );
|
98 |
}
|
99 |
|
@@ -106,7 +106,7 @@ class WC_Email_WCJ_Custom extends WC_Email {
|
|
106 |
* @param mixed $empty_value
|
107 |
* @return mixed
|
108 |
*/
|
109 |
-
|
110 |
$grandparent = get_parent_class( 'WC_Email' );
|
111 |
$value = $grandparent::get_option( $key, $empty_value );
|
112 |
return ( is_array( $value ) ) ? $value : apply_filters( 'woocommerce_email_get_option', __( $value ), $this, $value, $key, $empty_value );
|
71 |
* @since 2.5.6
|
72 |
* @return string
|
73 |
*/
|
74 |
+
function validate_custom_textarea_field( $key, $value ) {
|
75 |
$value = is_null( $value ) ? '' : $value;
|
76 |
/* return wp_kses( trim( stripslashes( $value ) ),
|
77 |
array_merge(
|
93 |
* @since 2.5.6
|
94 |
* @return string
|
95 |
*/
|
96 |
+
function generate_custom_textarea_html( $key, $data ) {
|
97 |
return $this->generate_textarea_html( $key, $data );
|
98 |
}
|
99 |
|
106 |
* @param mixed $empty_value
|
107 |
* @return mixed
|
108 |
*/
|
109 |
+
function get_option( $key, $empty_value = null ) {
|
110 |
$grandparent = get_parent_class( 'WC_Email' );
|
111 |
$value = $grandparent::get_option( $key, $empty_value );
|
112 |
return ( is_array( $value ) ) ? $value : apply_filters( 'woocommerce_email_get_option', __( $value ), $this, $value, $key, $empty_value );
|
includes/exchange-rates/class-wcj-exchange-rates-crons.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce Exchange Rates Crons
|
4 |
*
|
5 |
-
* @version 2.
|
6 |
* @author Algoritmika Ltd.
|
7 |
*/
|
8 |
|
@@ -17,7 +17,7 @@ class WCJ_Exchange_Rates_Crons {
|
|
17 |
*
|
18 |
* @version 2.7.0
|
19 |
*/
|
20 |
-
|
21 |
$this->update_intervals = array(
|
22 |
'minutely' => __( 'Update Every Minute', 'woocommerce-jetpack' ),
|
23 |
'hourly' => __( 'Update Hourly', 'woocommerce-jetpack' ),
|
@@ -77,7 +77,8 @@ class WCJ_Exchange_Rates_Crons {
|
|
77 |
/**
|
78 |
* On the scheduled action hook, run a function.
|
79 |
*
|
80 |
-
* @version 2.
|
|
|
81 |
*/
|
82 |
function update_the_exchange_rates( $interval ) {
|
83 |
|
@@ -137,12 +138,29 @@ class WCJ_Exchange_Rates_Crons {
|
|
137 |
}
|
138 |
}
|
139 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
140 |
// Currency Pairs - Final
|
141 |
$rate_offset_percent = get_option( 'wcj_currency_exchange_rates_offset_percent', 0 );
|
142 |
if ( 0 != $rate_offset_percent ) {
|
143 |
$rate_offset_percent = 1 + ( $rate_offset_percent / 100 );
|
144 |
}
|
145 |
$rate_offset_fixed = get_option( 'wcj_currency_exchange_rates_offset_fixed', 0 );
|
|
|
|
|
|
|
146 |
foreach ( $currency_pairs as $currency_pair ) {
|
147 |
$currency_from = $currency_pair['currency_from'];
|
148 |
$currency_to = $currency_pair['currency_to'];
|
@@ -154,9 +172,14 @@ class WCJ_Exchange_Rates_Crons {
|
|
154 |
if ( 0 != $rate_offset_fixed ) {
|
155 |
$the_rate = $the_rate + $rate_offset_fixed;
|
156 |
}
|
|
|
|
|
|
|
157 |
if ( $currency_from != $currency_to ) {
|
158 |
foreach ( $currency_pair['option_name'] as $option_name ) {
|
159 |
-
|
|
|
|
|
160 |
}
|
161 |
$field_id = 'wcj_currency_exchange_rates_' . sanitize_title( $currency_from . $currency_to );
|
162 |
update_option( $field_id, $the_rate );
|
2 |
/**
|
3 |
* Booster for WooCommerce Exchange Rates Crons
|
4 |
*
|
5 |
+
* @version 2.9.0
|
6 |
* @author Algoritmika Ltd.
|
7 |
*/
|
8 |
|
17 |
*
|
18 |
* @version 2.7.0
|
19 |
*/
|
20 |
+
function __construct() {
|
21 |
$this->update_intervals = array(
|
22 |
'minutely' => __( 'Update Every Minute', 'woocommerce-jetpack' ),
|
23 |
'hourly' => __( 'Update Hourly', 'woocommerce-jetpack' ),
|
77 |
/**
|
78 |
* On the scheduled action hook, run a function.
|
79 |
*
|
80 |
+
* @version 2.9.0
|
81 |
+
* @todo get currency pairs from "Currency Exchange Rates" module (see `get_all_currencies_exchange_rates_currencies()`)
|
82 |
*/
|
83 |
function update_the_exchange_rates( $interval ) {
|
84 |
|
138 |
}
|
139 |
}
|
140 |
|
141 |
+
// Additional currencies (via filter)
|
142 |
+
$additional_currencies = apply_filters( 'wcj_currency_exchange_rates_additional_currencies', array() );
|
143 |
+
foreach ( $additional_currencies as $additional_currency ) {
|
144 |
+
$currency_pairs = $this->get_currency_pair( $currency_pairs, $additional_currency, false );
|
145 |
+
}
|
146 |
+
|
147 |
+
// Additional currencies (via custom currencies section)
|
148 |
+
$total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_currency_exchange_custom_currencies_total_number', 1 ) );
|
149 |
+
for ( $i = 1; $i <= $total_number; $i++ ) {
|
150 |
+
if ( 'disabled' != ( $additional_currency = get_option( 'wcj_currency_exchange_custom_currencies_' . $i, 'disabled' ) ) ) {
|
151 |
+
$currency_pairs = $this->get_currency_pair( $currency_pairs, $additional_currency, false );
|
152 |
+
}
|
153 |
+
}
|
154 |
+
|
155 |
// Currency Pairs - Final
|
156 |
$rate_offset_percent = get_option( 'wcj_currency_exchange_rates_offset_percent', 0 );
|
157 |
if ( 0 != $rate_offset_percent ) {
|
158 |
$rate_offset_percent = 1 + ( $rate_offset_percent / 100 );
|
159 |
}
|
160 |
$rate_offset_fixed = get_option( 'wcj_currency_exchange_rates_offset_fixed', 0 );
|
161 |
+
if ( $rate_rounding_enabled = ( 'yes' === get_option( 'wcj_currency_exchange_rates_rounding_enabled', 'no' ) ) ) {
|
162 |
+
$rate_rounding_precision = get_option( 'wcj_currency_exchange_rates_rounding_precision', 0 );
|
163 |
+
}
|
164 |
foreach ( $currency_pairs as $currency_pair ) {
|
165 |
$currency_from = $currency_pair['currency_from'];
|
166 |
$currency_to = $currency_pair['currency_to'];
|
172 |
if ( 0 != $rate_offset_fixed ) {
|
173 |
$the_rate = $the_rate + $rate_offset_fixed;
|
174 |
}
|
175 |
+
if ( $rate_rounding_enabled ) {
|
176 |
+
$the_rate = round( $the_rate, $rate_rounding_precision );
|
177 |
+
}
|
178 |
if ( $currency_from != $currency_to ) {
|
179 |
foreach ( $currency_pair['option_name'] as $option_name ) {
|
180 |
+
if ( false != $option_name ) {
|
181 |
+
update_option( $option_name, $the_rate );
|
182 |
+
}
|
183 |
}
|
184 |
$field_id = 'wcj_currency_exchange_rates_' . sanitize_title( $currency_from . $currency_to );
|
185 |
update_option( $field_id, $the_rate );
|
includes/exchange-rates/class-wcj-exchange-rates.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce Exchange Rates
|
4 |
*
|
5 |
-
* @version 2.
|
6 |
* @author Algoritmika Ltd.
|
7 |
*/
|
8 |
|
@@ -15,7 +15,7 @@ class WCJ_Exchange_Rates {
|
|
15 |
/**
|
16 |
* Constructor.
|
17 |
*/
|
18 |
-
|
19 |
|
20 |
add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_exchange_rates_script' ) );
|
21 |
add_action( 'admin_init', array( $this, 'register_script' ) );
|
@@ -26,9 +26,9 @@ class WCJ_Exchange_Rates {
|
|
26 |
/**
|
27 |
* register_script.
|
28 |
*
|
29 |
-
* @version 2.
|
30 |
*/
|
31 |
-
|
32 |
if (
|
33 |
isset( $_GET['section'] ) &&
|
34 |
in_array( $_GET['section'], array(
|
@@ -40,7 +40,7 @@ class WCJ_Exchange_Rates {
|
|
40 |
'currency_exchange_rates',
|
41 |
) )
|
42 |
) {
|
43 |
-
wp_register_script( 'wcj-exchange-rates-ajax', trailingslashit(
|
44 |
wp_localize_script( 'wcj-exchange-rates-ajax', 'ajax_object', array(
|
45 |
'ajax_url' => admin_url( 'admin-ajax.php' ),
|
46 |
) );
|
@@ -52,7 +52,7 @@ class WCJ_Exchange_Rates {
|
|
52 |
*
|
53 |
* @version 2.6.0
|
54 |
*/
|
55 |
-
|
56 |
if (
|
57 |
isset( $_GET['section'] ) &&
|
58 |
in_array( $_GET['section'], array(
|
2 |
/**
|
3 |
* Booster for WooCommerce Exchange Rates
|
4 |
*
|
5 |
+
* @version 2.9.0
|
6 |
* @author Algoritmika Ltd.
|
7 |
*/
|
8 |
|
15 |
/**
|
16 |
* Constructor.
|
17 |
*/
|
18 |
+
function __construct() {
|
19 |
|
20 |
add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_exchange_rates_script' ) );
|
21 |
add_action( 'admin_init', array( $this, 'register_script' ) );
|
26 |
/**
|
27 |
* register_script.
|
28 |
*
|
29 |
+
* @version 2.9.0
|
30 |
*/
|
31 |
+
function register_script() {
|
32 |
if (
|
33 |
isset( $_GET['section'] ) &&
|
34 |
in_array( $_GET['section'], array(
|
40 |
'currency_exchange_rates',
|
41 |
) )
|
42 |
) {
|
43 |
+
wp_register_script( 'wcj-exchange-rates-ajax', trailingslashit( wcj_plugin_url() ) . 'includes/js/wcj-ajax-exchange-rates.js', array( 'jquery' ), WCJ()->version, true );
|
44 |
wp_localize_script( 'wcj-exchange-rates-ajax', 'ajax_object', array(
|
45 |
'ajax_url' => admin_url( 'admin-ajax.php' ),
|
46 |
) );
|
52 |
*
|
53 |
* @version 2.6.0
|
54 |
*/
|
55 |
+
function enqueue_exchange_rates_script() {
|
56 |
if (
|
57 |
isset( $_GET['section'] ) &&
|
58 |
in_array( $_GET['section'], array(
|
includes/functions/wcj-admin-functions.php
ADDED
@@ -0,0 +1,88 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Booster for WooCommerce - Functions - Admin
|
4 |
+
*
|
5 |
+
* @version 2.9.0
|
6 |
+
* @since 2.9.0
|
7 |
+
* @author Algoritmika Ltd.
|
8 |
+
*/
|
9 |
+
|
10 |
+
if ( ! defined( 'ABSPATH' ) ) exit;
|
11 |
+
|
12 |
+
if ( ! function_exists( 'wcj_message_replaced_values' ) ) {
|
13 |
+
/**
|
14 |
+
* wcj_message_replaced_values.
|
15 |
+
*
|
16 |
+
* @version 2.9.0
|
17 |
+
* @since 2.9.0
|
18 |
+
* @todo use this function in all applicable settings descriptions
|
19 |
+
*/
|
20 |
+
function wcj_message_replaced_values( $values ) {
|
21 |
+
$message_template = ( 1 == count( $values ) ? __( 'Replaced value: %s', 'woocommerce-jetpack' ) : __( 'Replaced values: %s', 'woocommerce-jetpack' ) );
|
22 |
+
return sprintf( $message_template, '<code>' . implode( '</code>, <code>', $values ) . '</code>' );
|
23 |
+
}
|
24 |
+
}
|
25 |
+
|
26 |
+
if ( ! function_exists( 'wcj_get_5_rocket_image' ) ) {
|
27 |
+
/**
|
28 |
+
* wcj_get_5_rocket_image.
|
29 |
+
*
|
30 |
+
* @version 2.5.5
|
31 |
+
* @since 2.5.3
|
32 |
+
*/
|
33 |
+
function wcj_get_5_rocket_image() {
|
34 |
+
return '<img class="wcj-rocket-icon" src="' . wcj_plugin_url() . '/assets/images/5-rockets.png' . '" title="">';
|
35 |
+
}
|
36 |
+
}
|
37 |
+
|
38 |
+
if ( ! function_exists( 'wcj_get_plus_message' ) ) {
|
39 |
+
/**
|
40 |
+
* wcj_get_plus_message.
|
41 |
+
*
|
42 |
+
* @version 2.9.0
|
43 |
+
*/
|
44 |
+
function wcj_get_plus_message( $value, $message_type, $args = array() ) {
|
45 |
+
|
46 |
+
switch ( $message_type ) {
|
47 |
+
|
48 |
+
case 'global':
|
49 |
+
return '<div class="updated">
|
50 |
+
<p class="main"><strong>' . __( 'Install Booster Plus to unlock all features', 'woocommerce-jetpack' ) . '</strong></p>
|
51 |
+
<span>' . sprintf( __( 'Some settings fields are locked and you will need %s to modify all locked fields.', 'woocommerce-jetpack'), '<a href="https://booster.io/plus/" target="_blank">Booster for WooCommerce Plus</a>' ) . '</span>
|
52 |
+
<p><a href="https://booster.io/plus/" target="_blank" class="button button-primary">' . __( 'Buy now', 'woocommerce-jetpack' ) . '</a> <a href="https://booster.io" target="_blank" class="button">'. __( 'Visit Booster Site', 'woocommerce-jetpack' ) . '</a></p>
|
53 |
+
</div>';
|
54 |
+
|
55 |
+
case 'desc':
|
56 |
+
return sprintf( __( 'Get <a href="%s" target="_blank">Booster Plus</a> to change value.', 'woocommerce-jetpack' ), 'https://booster.io/plus/' );
|
57 |
+
|
58 |
+
case 'desc_advanced':
|
59 |
+
return sprintf( __( 'Get <a href="%s" target="_blank">Booster Plus</a> to enable "%s" option.', 'woocommerce-jetpack' ), 'https://booster.io/plus/', $args['option'] );
|
60 |
+
|
61 |
+
case 'desc_advanced_no_link':
|
62 |
+
return sprintf( __( 'Get Booster Plus to enable "%s" option.', 'woocommerce-jetpack' ), $args['option'] );
|
63 |
+
|
64 |
+
case 'desc_below':
|
65 |
+
return sprintf( __( 'Get <a href="%s" target="_blank">Booster Plus</a> to change values below.', 'woocommerce-jetpack' ), 'https://booster.io/plus/' );
|
66 |
+
|
67 |
+
case 'desc_above':
|
68 |
+
return sprintf( __( 'Get <a href="%s" target="_blank">Booster Plus</a> to change values above.', 'woocommerce-jetpack' ), 'https://booster.io/plus/' );
|
69 |
+
|
70 |
+
case 'desc_no_link':
|
71 |
+
return __( 'Get Booster Plus to change value.', 'woocommerce-jetpack' );
|
72 |
+
|
73 |
+
case 'readonly':
|
74 |
+
return array( 'readonly' => 'readonly' );
|
75 |
+
|
76 |
+
case 'disabled':
|
77 |
+
return array( 'disabled' => 'disabled' );
|
78 |
+
|
79 |
+
case 'readonly_string':
|
80 |
+
return 'readonly';
|
81 |
+
|
82 |
+
case 'disabled_string':
|
83 |
+
return 'disabled';
|
84 |
+
}
|
85 |
+
|
86 |
+
return $value;
|
87 |
+
}
|
88 |
+
}
|
includes/functions/wcj-core-functions.php
ADDED
@@ -0,0 +1,45 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Booster for WooCommerce - Functions - Core
|
4 |
+
*
|
5 |
+
* @version 2.9.0
|
6 |
+
* @since 2.9.0
|
7 |
+
* @author Algoritmika Ltd.
|
8 |
+
*/
|
9 |
+
|
10 |
+
if ( ! defined( 'ABSPATH' ) ) exit;
|
11 |
+
|
12 |
+
if ( ! function_exists( 'wcj_plugin_url' ) ) {
|
13 |
+
/**
|
14 |
+
* wcj_plugin_url.
|
15 |
+
*
|
16 |
+
* @version 2.3.0
|
17 |
+
*/
|
18 |
+
function wcj_plugin_url() {
|
19 |
+
return untrailingslashit( plugin_dir_url( realpath( dirname( __FILE__ ) . '/..' ) ) );
|
20 |
+
}
|
21 |
+
}
|
22 |
+
|
23 |
+
if ( ! function_exists( 'wcj_plugin_path' ) ) {
|
24 |
+
/**
|
25 |
+
* Get the plugin path.
|
26 |
+
*
|
27 |
+
* @return string
|
28 |
+
*/
|
29 |
+
function wcj_plugin_path() {
|
30 |
+
return untrailingslashit( realpath( plugin_dir_path( __FILE__ ) . '/../..' ) );
|
31 |
+
}
|
32 |
+
}
|
33 |
+
|
34 |
+
if ( ! function_exists( 'wcj_is_module_enabled' ) ) {
|
35 |
+
/*
|
36 |
+
* wcj_is_module_enabled.
|
37 |
+
*
|
38 |
+
* @version 2.9.0
|
39 |
+
* @since 2.4.0
|
40 |
+
* @return boolean
|
41 |
+
*/
|
42 |
+
function wcj_is_module_enabled( $module_id ) {
|
43 |
+
return ( 'yes' === get_option( 'wcj_' . $module_id . '_enabled', 'no' ) );
|
44 |
+
}
|
45 |
+
}
|
includes/functions/wcj-country-functions.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Functions - Country
|
4 |
*
|
5 |
-
* @version 2.
|
6 |
* @author Algoritmika Ltd.
|
7 |
*/
|
8 |
|
@@ -18,32 +18,28 @@ if ( ! function_exists( 'wcj_get_country_flag_by_code' ) ) {
|
|
18 |
}
|
19 |
}
|
20 |
|
21 |
-
/**
|
22 |
-
* wcj_get_customer_country.
|
23 |
-
*
|
24 |
-
* @return string
|
25 |
-
*/
|
26 |
if ( ! function_exists( 'wcj_get_customer_country' ) ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
27 |
function wcj_get_customer_country( $user_id ) {
|
28 |
-
|
29 |
$user_meta = get_user_meta( $user_id );
|
30 |
-
|
31 |
$billing_country = isset( $user_meta['billing_country'][0] ) ? $user_meta['billing_country'][0] : '';
|
32 |
$shipping_country = isset( $user_meta['shipping_country'][0] ) ? $user_meta['shipping_country'][0] : '';
|
33 |
-
|
34 |
-
$customer_country = ( '' == $billing_country ) ? $shipping_country : $billing_country;
|
35 |
-
|
36 |
-
return $customer_country;
|
37 |
}
|
38 |
}
|
39 |
|
40 |
-
/**
|
41 |
-
* wcj_get_european_union_countries_with_vat.
|
42 |
-
*
|
43 |
-
* @version 2.4.0
|
44 |
-
* @return array
|
45 |
-
*/
|
46 |
if ( ! function_exists( 'wcj_get_european_union_countries_with_vat' ) ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
47 |
function wcj_get_european_union_countries_with_vat() {
|
48 |
return array(
|
49 |
'AT' => 20,
|
@@ -81,30 +77,27 @@ if ( ! function_exists( 'wcj_get_european_union_countries_with_vat' ) ) {
|
|
81 |
}
|
82 |
}
|
83 |
|
84 |
-
/**
|
85 |
-
* Get country name by country code.
|
86 |
-
*
|
87 |
-
* @return string on success, boolean false otherwise
|
88 |
-
*/
|
89 |
if ( ! function_exists( 'wcj_get_country_name_by_code' ) ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
90 |
function wcj_get_country_name_by_code( $country_code ) {
|
91 |
-
|
92 |
$countries = wcj_get_countries();
|
93 |
-
|
94 |
-
if ( isset( $countries[ $country_code ] ) ) return $countries[ $country_code ];
|
95 |
-
|
96 |
-
return false;
|
97 |
}
|
98 |
}
|
99 |
|
100 |
-
/**
|
101 |
-
* Get all states array.
|
102 |
-
*
|
103 |
-
* @version 2.4.4
|
104 |
-
* @since 2.4.4
|
105 |
-
* @return array
|
106 |
-
*/
|
107 |
if ( ! function_exists( 'wcj_get_states' ) ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
108 |
function wcj_get_states() {
|
109 |
$base_country = WC()->countries->get_base_country();
|
110 |
$states = WC()->countries->get_states( $base_country );
|
@@ -112,12 +105,13 @@ if ( ! function_exists( 'wcj_get_states' ) ) {
|
|
112 |
}
|
113 |
}
|
114 |
|
115 |
-
/**
|
116 |
-
* Get all countries array.
|
117 |
-
*
|
118 |
-
* @return array
|
119 |
-
*/
|
120 |
if ( ! function_exists( 'wcj_get_countries' ) ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
121 |
function wcj_get_countries() {
|
122 |
return array(
|
123 |
'AF' => __( 'Afghanistan', 'woocommerce' ),
|
@@ -363,7 +357,197 @@ if ( ! function_exists( 'wcj_get_countries' ) ) {
|
|
363 |
'WS' => __( 'Western Samoa', 'woocommerce' ),
|
364 |
'YE' => __( 'Yemen', 'woocommerce' ),
|
365 |
'ZM' => __( 'Zambia', 'woocommerce' ),
|
366 |
-
'ZW' => __( 'Zimbabwe', 'woocommerce' )
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
367 |
);
|
368 |
}
|
369 |
}
|
2 |
/**
|
3 |
* Booster for WooCommerce - Functions - Country
|
4 |
*
|
5 |
+
* @version 2.9.0
|
6 |
* @author Algoritmika Ltd.
|
7 |
*/
|
8 |
|
18 |
}
|
19 |
}
|
20 |
|
|
|
|
|
|
|
|
|
|
|
21 |
if ( ! function_exists( 'wcj_get_customer_country' ) ) {
|
22 |
+
/**
|
23 |
+
* wcj_get_customer_country.
|
24 |
+
*
|
25 |
+
* @version 2.9.0
|
26 |
+
* @return string
|
27 |
+
*/
|
28 |
function wcj_get_customer_country( $user_id ) {
|
|
|
29 |
$user_meta = get_user_meta( $user_id );
|
|
|
30 |
$billing_country = isset( $user_meta['billing_country'][0] ) ? $user_meta['billing_country'][0] : '';
|
31 |
$shipping_country = isset( $user_meta['shipping_country'][0] ) ? $user_meta['shipping_country'][0] : '';
|
32 |
+
return ( '' == $billing_country ) ? $shipping_country : $billing_country;
|
|
|
|
|
|
|
33 |
}
|
34 |
}
|
35 |
|
|
|
|
|
|
|
|
|
|
|
|
|
36 |
if ( ! function_exists( 'wcj_get_european_union_countries_with_vat' ) ) {
|
37 |
+
/**
|
38 |
+
* wcj_get_european_union_countries_with_vat.
|
39 |
+
*
|
40 |
+
* @version 2.4.0
|
41 |
+
* @return array
|
42 |
+
*/
|
43 |
function wcj_get_european_union_countries_with_vat() {
|
44 |
return array(
|
45 |
'AT' => 20,
|
77 |
}
|
78 |
}
|
79 |
|
|
|
|
|
|
|
|
|
|
|
80 |
if ( ! function_exists( 'wcj_get_country_name_by_code' ) ) {
|
81 |
+
/**
|
82 |
+
* Get country name by country code.
|
83 |
+
*
|
84 |
+
* @version 2.9.0
|
85 |
+
* @return string on success, boolean false otherwise
|
86 |
+
*/
|
87 |
function wcj_get_country_name_by_code( $country_code ) {
|
|
|
88 |
$countries = wcj_get_countries();
|
89 |
+
return ( isset( $countries[ $country_code ] ) ) ? $countries[ $country_code ] : false;
|
|
|
|
|
|
|
90 |
}
|
91 |
}
|
92 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
93 |
if ( ! function_exists( 'wcj_get_states' ) ) {
|
94 |
+
/**
|
95 |
+
* Get all states array.
|
96 |
+
*
|
97 |
+
* @version 2.4.4
|
98 |
+
* @since 2.4.4
|
99 |
+
* @return array
|
100 |
+
*/
|
101 |
function wcj_get_states() {
|
102 |
$base_country = WC()->countries->get_base_country();
|
103 |
$states = WC()->countries->get_states( $base_country );
|
105 |
}
|
106 |
}
|
107 |
|
|
|
|
|
|
|
|
|
|
|
108 |
if ( ! function_exists( 'wcj_get_countries' ) ) {
|
109 |
+
/**
|
110 |
+
* Get all countries array.
|
111 |
+
*
|
112 |
+
* @version 2.9.0
|
113 |
+
* @return array
|
114 |
+
*/
|
115 |
function wcj_get_countries() {
|
116 |
return array(
|
117 |
'AF' => __( 'Afghanistan', 'woocommerce' ),
|
357 |
'WS' => __( 'Western Samoa', 'woocommerce' ),
|
358 |
'YE' => __( 'Yemen', 'woocommerce' ),
|
359 |
'ZM' => __( 'Zambia', 'woocommerce' ),
|
360 |
+
'ZW' => __( 'Zimbabwe', 'woocommerce' ),
|
361 |
+
'EU' => __( 'European Union', 'woocommerce' ),
|
362 |
+
);
|
363 |
+
}
|
364 |
+
}
|
365 |
+
|
366 |
+
if ( ! function_exists( 'wcj_get_currency_countries' ) ) {
|
367 |
+
/**
|
368 |
+
* wcj_get_currency_countries.
|
369 |
+
*
|
370 |
+
* 158 currencies.
|
371 |
+
* Three-letter currency code (ISO 4217) => Two-letter countries codes (ISO 3166-1 alpha-2).
|
372 |
+
*
|
373 |
+
* @version 2.9.0
|
374 |
+
* @since 2.9.0
|
375 |
+
*/
|
376 |
+
function wcj_get_currency_countries() {
|
377 |
+
return array(
|
378 |
+
'AFN' => array( 'AF' ),
|
379 |
+
'ALL' => array( 'AL' ),
|
380 |
+
'DZD' => array( 'DZ' ),
|
381 |
+
'USD' => array( 'US', 'AS', 'IO', 'GU', 'MH', 'FM', 'MP', 'PW', 'PR', 'TC', 'UM', 'VI' ),
|
382 |
+
'EUR' => array( 'AD', 'AT', 'BE', 'CY', 'EE', 'FI', 'FR', 'GF', 'TF', 'DE', 'GR', 'GP', 'IE', 'IT', 'LV', 'LT', 'LU', 'MT', 'MQ', 'YT', 'MC', 'ME', 'NL', 'PT', 'RE', 'PM', 'SM', 'SK', 'SI', 'ES' ),
|
383 |
+
'AOA' => array( 'AO' ),
|
384 |
+
'XCD' => array( 'KN', 'AI', 'AQ', 'AG', 'DM', 'GD', 'MS', 'LC', 'VC' ),
|
385 |
+
'ARS' => array( 'AR' ),
|
386 |
+
'AMD' => array( 'AM' ),
|
387 |
+
'AWG' => array( 'AW' ),
|
388 |
+
'AUD' => array( 'AU', 'CX', 'CC', 'HM', 'KI', 'NR', 'NF', 'TV' ),
|
389 |
+
'AZN' => array( 'AZ' ),
|
390 |
+
'BSD' => array( 'BS' ),
|
391 |
+
'BHD' => array( 'BH' ),
|
392 |
+
'BDT' => array( 'BD' ),
|
393 |
+
'BBD' => array( 'BB' ),
|
394 |
+
'BYR' => array( 'BY' ),
|
395 |
+
'BZD' => array( 'BZ' ),
|
396 |
+
'XOF' => array( 'SN', 'BJ', 'BF', 'ML', 'NE', 'TG' ),
|
397 |
+
'BMD' => array( 'BM' ),
|
398 |
+
'BTN' => array( 'BT' ),
|
399 |
+
'BOB' => array( 'BO' ),
|
400 |
+
'BAM' => array( 'BA' ),
|
401 |
+
'BWP' => array( 'BW' ),
|
402 |
+
'NOK' => array( 'NO', 'BV', 'SJ' ),
|
403 |
+
'BRL' => array( 'BR' ),
|
404 |
+
'BND' => array( 'BN' ),
|
405 |
+
'BGN' => array( 'BG' ),
|
406 |
+
'BIF' => array( 'BI' ),
|
407 |
+
'KHR' => array( 'KH' ),
|
408 |
+
'XAF' => array( 'CF', 'CM', 'TD', 'CG', 'GQ', 'GA' ),
|
409 |
+
'CAD' => array( 'CA' ),
|
410 |
+
'CVE' => array( 'CV' ),
|
411 |
+
'KYD' => array( 'KY' ),
|
412 |
+
'CLP' => array( 'CL' ),
|
413 |
+
'CNY' => array( 'CN' ),
|
414 |
+
'RMB' => array( 'CN' ),
|
415 |
+
'HKD' => array( 'HK' ),
|
416 |
+
'COP' => array( 'CO' ),
|
417 |
+
'KMF' => array( 'KM' ),
|
418 |
+
'CDF' => array( 'CD' ),
|
419 |
+
'NZD' => array( 'NZ', 'CK', 'NU', 'PN', 'TK' ),
|
420 |
+
'CRC' => array( 'CR' ),
|
421 |
+
'HRK' => array( 'HR' ),
|
422 |
+
'CUP' => array( 'CU' ),
|
423 |
+
'CUC' => array( 'CU' ),
|
424 |
+
'CZK' => array( 'CZ' ),
|
425 |
+
'DKK' => array( 'DK', 'FO', 'GL' ),
|
426 |
+
'DJF' => array( 'DJ' ),
|
427 |
+
'DOP' => array( 'DO' ),
|
428 |
+
'ECS' => array( 'EC' ),
|
429 |
+
'EGP' => array( 'EG' ),
|
430 |
+
'SVC' => array( 'SV' ),
|
431 |
+
'ERN' => array( 'ER' ),
|
432 |
+
'ETB' => array( 'ET' ),
|
433 |
+
'FKP' => array( 'FK' ),
|
434 |
+
'FJD' => array( 'FJ' ),
|
435 |
+
'GMD' => array( 'GM' ),
|
436 |
+
'GEL' => array( 'GE' ),
|
437 |
+
'GHS' => array( 'GH' ),
|
438 |
+
'GIP' => array( 'GI' ),
|
439 |
+
'QTQ' => array( 'GT' ),
|
440 |
+
'GTQ' => array( 'GT' ),
|
441 |
+
'GGP' => array( 'GG' ),
|
442 |
+
'GNF' => array( 'GN' ),
|
443 |
+
'GWP' => array( 'GW' ),
|
444 |
+
'GYD' => array( 'GY' ),
|
445 |
+
'HTG' => array( 'HT' ),
|
446 |
+
'HNL' => array( 'HN' ),
|
447 |
+
'HUF' => array( 'HU' ),
|
448 |
+
'ISK' => array( 'IS' ),
|
449 |
+
'INR' => array( 'IN' ),
|
450 |
+
'IDR' => array( 'ID' ),
|
451 |
+
'IRR' => array( 'IR' ),
|
452 |
+
'IQD' => array( 'IQ' ),
|
453 |
+
'GBP' => array( 'GB', 'IM', 'JE', 'GS' ),
|
454 |
+
'ILS' => array( 'IL' ),
|
455 |
+
'JMD' => array( 'JM' ),
|
456 |
+
'JPY' => array( 'JP' ),
|
457 |
+
'JOD' => array( 'JO' ),
|
458 |
+
'KZT' => array( 'KZ' ),
|
459 |
+
'KES' => array( 'KE' ),
|
460 |
+
'KPW' => array( 'KP' ),
|
461 |
+
'KRW' => array( 'KR' ),
|
462 |
+
'KWD' => array( 'KW' ),
|
463 |
+
'KGS' => array( 'KG' ),
|
464 |
+
'LAK' => array( 'LA' ),
|
465 |
+
'KIP' => array( 'LA' ),
|
466 |
+
'LBP' => array( 'LB' ),
|
467 |
+
'LSL' => array( 'LS' ),
|
468 |
+
'LRD' => array( 'LR' ),
|
469 |
+
'LYD' => array( 'LY' ),
|
470 |
+
'CHF' => array( 'CH', 'LI' ),
|
471 |
+
'MKD' => array( 'MK' ),
|
472 |
+
'MGF' => array( 'MG' ),
|
473 |
+
'MGA' => array( 'MG' ),
|
474 |
+
'MWK' => array( 'MW' ),
|
475 |
+
'MYR' => array( 'MY' ),
|
476 |
+
'MVR' => array( 'MV' ),
|
477 |
+
'MRO' => array( 'MR' ),
|
478 |
+
'MUR' => array( 'MU' ),
|
479 |
+
'MXN' => array( 'MX' ),
|
480 |
+
'MDL' => array( 'MD' ),
|
481 |
+
'MNT' => array( 'MN' ),
|
482 |
+
'MAD' => array( 'MA', 'EH' ),
|
483 |
+
'MZN' => array( 'MZ' ),
|
484 |
+
'MZM' => array( 'MZ' ),
|
485 |
+
'MMK' => array( 'MM' ),
|
486 |
+
'NAD' => array( 'NA' ),
|
487 |
+
'NPR' => array( 'NP' ),
|
488 |
+
'ANG' => array( 'AN' ),
|
489 |
+
'XPF' => array( 'NC', 'WF' ),
|
490 |
+
'NIO' => array( 'NI' ),
|
491 |
+
'NGN' => array( 'NG' ),
|
492 |
+
'OMR' => array( 'OM' ),
|
493 |
+
'PKR' => array( 'PK' ),
|
494 |
+
'PAB' => array( 'PA' ),
|
495 |
+
'PGK' => array( 'PG' ),
|
496 |
+
'PYG' => array( 'PY' ),
|
497 |
+
'PEN' => array( 'PE' ),
|
498 |
+
'PHP' => array( 'PH' ),
|
499 |
+
'PLN' => array( 'PL' ),
|
500 |
+
'QAR' => array( 'QA' ),
|
501 |
+
'RON' => array( 'RO' ),
|
502 |
+
'RUB' => array( 'RU' ),
|
503 |
+
'RWF' => array( 'RW' ),
|
504 |
+
'SHP' => array( 'SH' ),
|
505 |
+
'WST' => array( 'WS' ),
|
506 |
+
'STD' => array( 'ST' ),
|
507 |
+
'SAR' => array( 'SA' ),
|
508 |
+
'RSD' => array( 'RS' ),
|
509 |
+
'SCR' => array( 'SC' ),
|
510 |
+
'SLL' => array( 'SL' ),
|
511 |
+
'SGD' => array( 'SG' ),
|
512 |
+
'SBD' => array( 'SB' ),
|
513 |
+
'SOS' => array( 'SO' ),
|
514 |
+
'ZAR' => array( 'ZA' ),
|
515 |
+
'SSP' => array( 'SS' ),
|
516 |
+
'LKR' => array( 'LK' ),
|
517 |
+
'SDG' => array( 'SD' ),
|
518 |
+
'SRD' => array( 'SR' ),
|
519 |
+
'SZL' => array( 'SZ' ),
|
520 |
+
'SEK' => array( 'SE' ),
|
521 |
+
'SYP' => array( 'SY' ),
|
522 |
+
'TWD' => array( 'TW' ),
|
523 |
+
'TJS' => array( 'TJ' ),
|
524 |
+
'TZS' => array( 'TZ' ),
|
525 |
+
'THB' => array( 'TH' ),
|
526 |
+
'TOP' => array( 'TO' ),
|
527 |
+
'TTD' => array( 'TT' ),
|
528 |
+
'TND' => array( 'TN' ),
|
529 |
+
'TRY' => array( 'TR' ),
|
530 |
+
'TMT' => array( 'TM' ),
|
531 |
+
'TMM' => array( 'TM' ),
|
532 |
+
'UGX' => array( 'UG' ),
|
533 |
+
'UAH' => array( 'UA' ),
|
534 |
+
'AED' => array( 'AE' ),
|
535 |
+
'UYU' => array( 'UY' ),
|
536 |
+
'UZS' => array( 'UZ' ),
|
537 |
+
'VUV' => array( 'VU' ),
|
538 |
+
'VEF' => array( 'VE' ),
|
539 |
+
'VND' => array( 'VN' ),
|
540 |
+
'YER' => array( 'YE' ),
|
541 |
+
'ZMW' => array( 'ZM' ),
|
542 |
+
'ZMK' => array( 'ZM' ),
|
543 |
+
'ZWD' => array( 'ZW' ),
|
544 |
+
'GQE' => array( 'CF' ),
|
545 |
+
'MOP' => array( 'MO' ),
|
546 |
+
// Former currencies
|
547 |
+
'LTL' => array( 'LT' ),
|
548 |
+
'LVL' => array( 'LV' ),
|
549 |
+
'EEK' => array( 'EE' ),
|
550 |
+
'SKK' => array( 'SK' ),
|
551 |
);
|
552 |
}
|
553 |
}
|
includes/{currencies → functions}/wcj-currencies.php
RENAMED
@@ -1,9 +1,10 @@
|
|
1 |
<?php
|
2 |
/**
|
3 |
-
* Booster for WooCommerce Currencies Array
|
4 |
*
|
5 |
-
* @version 2.
|
6 |
* @author Algoritmika Ltd.
|
|
|
7 |
*/
|
8 |
|
9 |
if ( ! function_exists( 'wcj_get_currencies_array' ) ) {
|
@@ -172,6 +173,9 @@ if ( ! function_exists( 'wcj_get_currencies_array' ) ) {
|
|
172 |
array( 'code' => 'ZAR', 'symbol' => 'R', 'name' => __( 'South African rand', 'woocommerce' ) ),
|
173 |
array( 'code' => 'ZMK', 'symbol' => 'ZMK', 'name' => __( 'Zambian kwacha', 'woocommerce-jetpack' ) ),
|
174 |
array( 'code' => 'ZWD', 'symbol' => 'ZWD', 'name' => __( 'Zimbabwean dollar', 'woocommerce-jetpack' ) ),
|
|
|
|
|
|
|
175 |
);
|
176 |
}
|
177 |
}
|
1 |
<?php
|
2 |
/**
|
3 |
+
* Booster for WooCommerce - Currencies Array
|
4 |
*
|
5 |
+
* @version 2.9.0
|
6 |
* @author Algoritmika Ltd.
|
7 |
+
* @todo move this to functions folder
|
8 |
*/
|
9 |
|
10 |
if ( ! function_exists( 'wcj_get_currencies_array' ) ) {
|
173 |
array( 'code' => 'ZAR', 'symbol' => 'R', 'name' => __( 'South African rand', 'woocommerce' ) ),
|
174 |
array( 'code' => 'ZMK', 'symbol' => 'ZMK', 'name' => __( 'Zambian kwacha', 'woocommerce-jetpack' ) ),
|
175 |
array( 'code' => 'ZWD', 'symbol' => 'ZWD', 'name' => __( 'Zimbabwean dollar', 'woocommerce-jetpack' ) ),
|
176 |
+
array( 'code' => 'BTC', 'symbol' => 'BTC', 'name' => __( 'Bitcoin', 'woocommerce-jetpack' ) ),
|
177 |
+
array( 'code' => 'ETH', 'symbol' => 'ETH', 'name' => __( 'Ethereum', 'woocommerce-jetpack' ) ),
|
178 |
+
array( 'code' => 'MYC', 'symbol' => 'MYC', 'name' => __( 'myCred', 'woocommerce-jetpack' ) ),
|
179 |
);
|
180 |
}
|
181 |
}
|
includes/functions/wcj-date-time-functions.php
ADDED
@@ -0,0 +1,160 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Booster for WooCommerce - Functions - Date and Time
|
4 |
+
*
|
5 |
+
* @version 2.9.0
|
6 |
+
* @since 2.9.0
|
7 |
+
* @author Algoritmika Ltd.
|
8 |
+
*/
|
9 |
+
|
10 |
+
if ( ! defined( 'ABSPATH' ) ) exit;
|
11 |
+
|
12 |
+
if ( ! function_exists( 'wcj_check_time_from' ) ) {
|
13 |
+
/**
|
14 |
+
* wcj_check_time_from.
|
15 |
+
*
|
16 |
+
* @version 2.8.0
|
17 |
+
* @since 2.8.0
|
18 |
+
*/
|
19 |
+
function wcj_check_time_from( $time_from, $args ) {
|
20 |
+
$time_from = explode( ':', $time_from );
|
21 |
+
if ( isset( $time_from[0] ) && $args['hours_now'] < $time_from[0] ) {
|
22 |
+
return false;
|
23 |
+
}
|
24 |
+
if ( isset( $time_from[1] ) && $time_from[0] == $args['hours_now'] && $args['minutes_now'] < $time_from[1] ) {
|
25 |
+
return false;
|
26 |
+
}
|
27 |
+
return true;
|
28 |
+
}
|
29 |
+
}
|
30 |
+
|
31 |
+
if ( ! function_exists( 'wcj_check_time_to' ) ) {
|
32 |
+
/**
|
33 |
+
* wcj_check_time_to.
|
34 |
+
*
|
35 |
+
* @version 2.8.0
|
36 |
+
* @since 2.8.0
|
37 |
+
*/
|
38 |
+
function wcj_check_time_to( $time_to, $args ) {
|
39 |
+
$time_to = explode( ':', $time_to );
|
40 |
+
if ( isset( $time_to[0] ) && $args['hours_now'] > $time_to[0] ) {
|
41 |
+
return false;
|
42 |
+
}
|
43 |
+
if ( isset( $time_to[1] ) && $time_to[0] == $args['hours_now'] && $args['minutes_now'] > $time_to[1] ) {
|
44 |
+
return false;
|
45 |
+
}
|
46 |
+
return true;
|
47 |
+
}
|
48 |
+
}
|
49 |
+
|
50 |
+
if ( ! function_exists( 'wcj_check_single_time' ) ) {
|
51 |
+
/**
|
52 |
+
* wcj_check_single_time.
|
53 |
+
*
|
54 |
+
* @version 2.8.0
|
55 |
+
* @since 2.8.0
|
56 |
+
*/
|
57 |
+
function wcj_check_single_time( $_time, $args ) {
|
58 |
+
$_time = explode( '-', $_time );
|
59 |
+
if ( isset( $_time[0] ) ) {
|
60 |
+
if ( ! wcj_check_time_from( $_time[0], $args ) ) {
|
61 |
+
return false;
|
62 |
+
}
|
63 |
+
}
|
64 |
+
if ( isset( $_time[1] ) ) {
|
65 |
+
if ( ! wcj_check_time_to( $_time[1], $args ) ) {
|
66 |
+
return false;
|
67 |
+
}
|
68 |
+
}
|
69 |
+
return true;
|
70 |
+
}
|
71 |
+
}
|
72 |
+
|
73 |
+
if ( ! function_exists( 'wcj_check_time' ) ) {
|
74 |
+
/**
|
75 |
+
* wcj_check_time.
|
76 |
+
*
|
77 |
+
* @version 2.8.0
|
78 |
+
* @since 2.8.0
|
79 |
+
*/
|
80 |
+
function wcj_check_time( $_time, $args = array() ) {
|
81 |
+
if ( empty( $args ) ) {
|
82 |
+
$time_now = current_time( 'timestamp' );
|
83 |
+
$args['hours_now'] = intval( date( 'H', $time_now ) );
|
84 |
+
$args['minutes_now'] = intval( date( 'i', $time_now ) );
|
85 |
+
}
|
86 |
+
$_time = explode( ',', $_time );
|
87 |
+
foreach ( $_time as $_single_time ) {
|
88 |
+
if ( wcj_check_single_time( $_single_time, $args ) ) {
|
89 |
+
return true;
|
90 |
+
}
|
91 |
+
}
|
92 |
+
return false;
|
93 |
+
}
|
94 |
+
}
|
95 |
+
|
96 |
+
if ( ! function_exists( 'wcj_date_format_php_to_js_v2' ) ) {
|
97 |
+
/*
|
98 |
+
* Matches each symbol of PHP date format standard
|
99 |
+
* with jQuery equivalent codeword
|
100 |
+
* http://stackoverflow.com/questions/16702398/convert-a-php-date-format-to-a-jqueryui-datepicker-date-format
|
101 |
+
*
|
102 |
+
* @author Tristan Jahier
|
103 |
+
* @version 2.4.0
|
104 |
+
* @since 2.4.0
|
105 |
+
*/
|
106 |
+
function wcj_date_format_php_to_js_v2( $php_format ) {
|
107 |
+
$SYMBOLS_MATCHING = array(
|
108 |
+
// Day
|
109 |
+
'd' => 'dd',
|
110 |
+
'D' => 'D',
|
111 |
+
'j' => 'd',
|
112 |
+
'l' => 'DD',
|
113 |
+
'N' => '',
|
114 |
+
'S' => '',
|
115 |
+
'w' => '',
|
116 |
+
'z' => 'o',
|
117 |
+
// Week
|
118 |
+
'W' => '',
|
119 |
+
// Month
|
120 |
+
'F' => 'MM',
|
121 |
+
'm' => 'mm',
|
122 |
+
'M' => 'M',
|
123 |
+
'n' => 'm',
|
124 |
+
't' => '',
|
125 |
+
// Year
|
126 |
+
'L' => '',
|
127 |
+
'o' => '',
|
128 |
+
'Y' => 'yy',
|
129 |
+
'y' => 'y',
|
130 |
+
// Time
|
131 |
+
'a' => '',
|
132 |
+
'A' => '',
|
133 |
+
'B' => '',
|
134 |
+
'g' => '',
|
135 |
+
'G' => '',
|
136 |
+
'h' => '',
|
137 |
+
'H' => '',
|
138 |
+
'i' => '',
|
139 |
+
's' => '',
|
140 |
+
'u' => ''
|
141 |
+
);
|
142 |
+
$jqueryui_format = "";
|
143 |
+
$escaping = false;
|
144 |
+
for ( $i = 0; $i < strlen( $php_format ); $i++ ) {
|
145 |
+
$char = $php_format[ $i ];
|
146 |
+
if ( $char === '\\' ) { // PHP date format escaping character
|
147 |
+
$i++;
|
148 |
+
$jqueryui_format .= ( $escaping ) ? $php_format[ $i ] : '\'' . $php_format[ $i ];
|
149 |
+
$escaping = true;
|
150 |
+
} else {
|
151 |
+
if ( $escaping ) {
|
152 |
+
$jqueryui_format .= "'";
|
153 |
+
$escaping = false;
|
154 |
+
}
|
155 |
+
$jqueryui_format .= ( isset( $SYMBOLS_MATCHING[ $char ] ) ) ? $SYMBOLS_MATCHING[ $char ] : $char;
|
156 |
+
}
|
157 |
+
}
|
158 |
+
return $jqueryui_format;
|
159 |
+
}
|
160 |
+
}
|
includes/functions/wcj-debug-functions.php
CHANGED
@@ -2,24 +2,30 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Functions - Debug
|
4 |
*
|
5 |
-
* @version
|
6 |
-
* @author
|
7 |
*/
|
8 |
|
9 |
if ( ! defined( 'ABSPATH' ) ) exit;
|
10 |
|
11 |
// Debug Mode
|
12 |
-
if (
|
13 |
error_reporting( E_ALL );
|
14 |
}
|
15 |
|
16 |
-
/**
|
17 |
-
* wcj_log.
|
18 |
-
*/
|
19 |
if ( ! function_exists( 'wcj_log' ) ) {
|
|
|
|
|
|
|
|
|
|
|
20 |
function wcj_log( $message = '' ) {
|
21 |
-
if (
|
22 |
-
|
|
|
|
|
|
|
|
|
23 |
if ( is_array( $message ) || is_object( $message ) ) {
|
24 |
$message = print_r( $message, true );
|
25 |
}
|
2 |
/**
|
3 |
* Booster for WooCommerce - Functions - Debug
|
4 |
*
|
5 |
+
* @version 2.9.0
|
6 |
+
* @author Algoritmika Ltd.
|
7 |
*/
|
8 |
|
9 |
if ( ! defined( 'ABSPATH' ) ) exit;
|
10 |
|
11 |
// Debug Mode
|
12 |
+
if ( wcj_is_module_enabled( 'admin_tools' ) && 'yes' === get_option( 'wcj_debuging_enabled', 'no' ) ) {
|
13 |
error_reporting( E_ALL );
|
14 |
}
|
15 |
|
|
|
|
|
|
|
16 |
if ( ! function_exists( 'wcj_log' ) ) {
|
17 |
+
/**
|
18 |
+
* wcj_log.
|
19 |
+
*
|
20 |
+
* @version 2.9.0
|
21 |
+
*/
|
22 |
function wcj_log( $message = '' ) {
|
23 |
+
if ( ! wcj_is_module_enabled( 'admin_tools' ) || 'no' === get_option( 'wcj_logging_enabled', 'no' ) ) {
|
24 |
+
return;
|
25 |
+
}
|
26 |
+
if ( '' == $message ) {
|
27 |
+
$message = 'CHECKPOINT';
|
28 |
+
}
|
29 |
if ( is_array( $message ) || is_object( $message ) ) {
|
30 |
$message = print_r( $message, true );
|
31 |
}
|
includes/functions/wcj-eu-vat-functions.php
ADDED
@@ -0,0 +1,123 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Booster for WooCommerce - Functions - EU VAT
|
4 |
+
*
|
5 |
+
* @version 2.9.0
|
6 |
+
* @version 2.9.0
|
7 |
+
* @author Algoritmika Ltd.
|
8 |
+
*/
|
9 |
+
|
10 |
+
if ( ! defined( 'ABSPATH' ) ) exit;
|
11 |
+
|
12 |
+
if ( ! function_exists( 'wcj_validate_vat_no_soap' ) ) {
|
13 |
+
/**
|
14 |
+
* wcj_validate_vat_no_soap.
|
15 |
+
*
|
16 |
+
* @version 2.9.0
|
17 |
+
* @since 2.5.7
|
18 |
+
* @return mixed: bool on successful checking (can be true or false), null otherwise
|
19 |
+
*/
|
20 |
+
function wcj_validate_vat_no_soap( $country_code, $vat_number, $method ) {
|
21 |
+
$country_code = strtoupper( $country_code );
|
22 |
+
$api_url = "http://ec.europa.eu/taxation_customs/vies/viesquer.do?ms=" . $country_code . "&vat=" . $vat_number;
|
23 |
+
switch ( $method ) {
|
24 |
+
case 'file_get_contents':
|
25 |
+
if ( ini_get( 'allow_url_fopen' ) ) {
|
26 |
+
$response = file_get_contents( $api_url );
|
27 |
+
} else {
|
28 |
+
return null;
|
29 |
+
}
|
30 |
+
break;
|
31 |
+
default: // 'curl'
|
32 |
+
if ( function_exists( 'curl_version' ) ) {
|
33 |
+
$curl = curl_init( $api_url );
|
34 |
+
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, 1 );
|
35 |
+
$response = curl_exec( $curl );
|
36 |
+
curl_close( $curl );
|
37 |
+
} else {
|
38 |
+
return null;
|
39 |
+
}
|
40 |
+
break;
|
41 |
+
}
|
42 |
+
if ( false === $response ) {
|
43 |
+
return null;
|
44 |
+
}
|
45 |
+
return ( false !== strpos( $response, '="validStyle"' ) );
|
46 |
+
}
|
47 |
+
}
|
48 |
+
|
49 |
+
if ( ! function_exists( 'wcj_validate_vat_soap' ) ) {
|
50 |
+
/**
|
51 |
+
* wcj_validate_vat_soap.
|
52 |
+
*
|
53 |
+
* @version 2.9.0
|
54 |
+
* @return mixed: bool on successful checking (can be true or false), null otherwise
|
55 |
+
*/
|
56 |
+
function wcj_validate_vat_soap( $country_code, $vat_number ) {
|
57 |
+
try {
|
58 |
+
if ( class_exists( 'SoapClient' ) ) {
|
59 |
+
$client = new SoapClient(
|
60 |
+
'http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl',
|
61 |
+
array( 'exceptions' => true )
|
62 |
+
);
|
63 |
+
$result = $client->checkVat( array(
|
64 |
+
'countryCode' => $country_code,
|
65 |
+
'vatNumber' => $vat_number,
|
66 |
+
) );
|
67 |
+
return ( isset( $result->valid ) ) ? $result->valid : null;
|
68 |
+
} else {
|
69 |
+
return null;
|
70 |
+
}
|
71 |
+
} catch( Exception $exception ) {
|
72 |
+
return null;
|
73 |
+
}
|
74 |
+
}
|
75 |
+
}
|
76 |
+
|
77 |
+
if ( ! function_exists( 'wcj_validate_vat_with_method' ) ) {
|
78 |
+
/**
|
79 |
+
* wcj_validate_vat_with_method.
|
80 |
+
*
|
81 |
+
* @version 2.9.0
|
82 |
+
* @since 2.9.0
|
83 |
+
* @return mixed: bool on successful checking (can be true or false), null otherwise
|
84 |
+
*/
|
85 |
+
function wcj_validate_vat_with_method( $country_code, $vat_number, $method ) {
|
86 |
+
switch ( $method ) {
|
87 |
+
case 'soap':
|
88 |
+
return wcj_validate_vat_soap( $country_code, $vat_number );
|
89 |
+
default: // 'curl', 'file_get_contents'
|
90 |
+
return wcj_validate_vat_no_soap( $country_code, $vat_number, $method );
|
91 |
+
}
|
92 |
+
}
|
93 |
+
}
|
94 |
+
|
95 |
+
if ( ! function_exists( 'wcj_validate_vat' ) ) {
|
96 |
+
/**
|
97 |
+
* wcj_validate_vat.
|
98 |
+
*
|
99 |
+
* @version 2.9.0
|
100 |
+
* @since 2.9.0
|
101 |
+
* @return mixed: bool on successful checking (can be true or false), null otherwise
|
102 |
+
*/
|
103 |
+
function wcj_validate_vat( $country_code, $vat_number ) {
|
104 |
+
$methods = array();
|
105 |
+
switch ( get_option( 'wcj_eu_vat_number_first_method', 'soap' ) ) {
|
106 |
+
case 'curl':
|
107 |
+
$methods = array( 'curl', 'file_get_contents', 'soap' );
|
108 |
+
break;
|
109 |
+
case 'file_get_contents':
|
110 |
+
$methods = array( 'file_get_contents', 'curl', 'soap' );
|
111 |
+
break;
|
112 |
+
default: // 'soap'
|
113 |
+
$methods = array( 'soap', 'curl', 'file_get_contents' );
|
114 |
+
break;
|
115 |
+
}
|
116 |
+
foreach ( $methods as $method ) {
|
117 |
+
if ( null !== ( $result = wcj_validate_vat_with_method( $country_code, $vat_number, $method ) ) ) {
|
118 |
+
return $result;
|
119 |
+
}
|
120 |
+
}
|
121 |
+
return null;
|
122 |
+
}
|
123 |
+
}
|
includes/functions/wcj-functions.php
DELETED
@@ -1,1092 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* Booster for WooCommerce - Functions
|
4 |
-
*
|
5 |
-
* @version 2.8.2
|
6 |
-
* @author Algoritmika Ltd.
|
7 |
-
*/
|
8 |
-
|
9 |
-
if ( ! defined( 'ABSPATH' ) ) exit;
|
10 |
-
|
11 |
-
if ( ! function_exists( 'wcj_customer_get_country' ) ) {
|
12 |
-
/**
|
13 |
-
* wcj_customer_get_country.
|
14 |
-
*
|
15 |
-
* @version 2.8.0
|
16 |
-
* @since 2.8.0
|
17 |
-
*/
|
18 |
-
function wcj_customer_get_country() {
|
19 |
-
return ( WCJ_IS_WC_VERSION_BELOW_3 ? WC()->customer->get_country() : WC()->customer->get_billing_country() );
|
20 |
-
}
|
21 |
-
}
|
22 |
-
|
23 |
-
if ( ! function_exists( 'wcj_order_get_payment_method' ) ) {
|
24 |
-
/**
|
25 |
-
* wcj_order_get_payment_method.
|
26 |
-
*
|
27 |
-
* @version 2.8.2
|
28 |
-
* @since 2.8.0
|
29 |
-
*/
|
30 |
-
function wcj_order_get_payment_method( $_order ) {
|
31 |
-
if ( ! $_order || ! is_object( $_order ) ) {
|
32 |
-
return null;
|
33 |
-
}
|
34 |
-
if ( WCJ_IS_WC_VERSION_BELOW_3 ) {
|
35 |
-
return ( isset( $_order->payment_method ) ? $_order->payment_method : null );
|
36 |
-
} else {
|
37 |
-
return ( method_exists( $_order, 'get_payment_method' ) ? $_order->get_payment_method() : null );
|
38 |
-
}
|
39 |
-
}
|
40 |
-
}
|
41 |
-
|
42 |
-
if ( ! function_exists( 'wcj_check_time_from' ) ) {
|
43 |
-
/**
|
44 |
-
* wcj_check_time_from.
|
45 |
-
*
|
46 |
-
* @version 2.8.0
|
47 |
-
* @since 2.8.0
|
48 |
-
*/
|
49 |
-
function wcj_check_time_from( $time_from, $args ) {
|
50 |
-
$time_from = explode( ':', $time_from );
|
51 |
-
if ( isset( $time_from[0] ) && $args['hours_now'] < $time_from[0] ) {
|
52 |
-
return false;
|
53 |
-
}
|
54 |
-
if ( isset( $time_from[1] ) && $time_from[0] == $args['hours_now'] && $args['minutes_now'] < $time_from[1] ) {
|
55 |
-
return false;
|
56 |
-
}
|
57 |
-
return true;
|
58 |
-
}
|
59 |
-
}
|
60 |
-
|
61 |
-
if ( ! function_exists( 'wcj_check_time_to' ) ) {
|
62 |
-
/**
|
63 |
-
* wcj_check_time_to.
|
64 |
-
*
|
65 |
-
* @version 2.8.0
|
66 |
-
* @since 2.8.0
|
67 |
-
*/
|
68 |
-
function wcj_check_time_to( $time_to, $args ) {
|
69 |
-
$time_to = explode( ':', $time_to );
|
70 |
-
if ( isset( $time_to[0] ) && $args['hours_now'] > $time_to[0] ) {
|
71 |
-
return false;
|
72 |
-
}
|
73 |
-
if ( isset( $time_to[1] ) && $time_to[0] == $args['hours_now'] && $args['minutes_now'] > $time_to[1] ) {
|
74 |
-
return false;
|
75 |
-
}
|
76 |
-
return true;
|
77 |
-
}
|
78 |
-
}
|
79 |
-
|
80 |
-
if ( ! function_exists( 'wcj_check_single_time' ) ) {
|
81 |
-
/**
|
82 |
-
* wcj_check_single_time.
|
83 |
-
*
|
84 |
-
* @version 2.8.0
|
85 |
-
* @since 2.8.0
|
86 |
-
*/
|
87 |
-
function wcj_check_single_time( $_time, $args ) {
|
88 |
-
$_time = explode( '-', $_time );
|
89 |
-
if ( isset( $_time[0] ) ) {
|
90 |
-
if ( ! wcj_check_time_from( $_time[0], $args ) ) {
|
91 |
-
return false;
|
92 |
-
}
|
93 |
-
}
|
94 |
-
if ( isset( $_time[1] ) ) {
|
95 |
-
if ( ! wcj_check_time_to( $_time[1], $args ) ) {
|
96 |
-
return false;
|
97 |
-
}
|
98 |
-
}
|
99 |
-
return true;
|
100 |
-
}
|
101 |
-
}
|
102 |
-
|
103 |
-
if ( ! function_exists( 'wcj_check_time' ) ) {
|
104 |
-
/**
|
105 |
-
* wcj_check_time.
|
106 |
-
*
|
107 |
-
* @version 2.8.0
|
108 |
-
* @since 2.8.0
|
109 |
-
*/
|
110 |
-
function wcj_check_time( $_time, $args = array() ) {
|
111 |
-
if ( empty( $args ) ) {
|
112 |
-
$time_now = current_time( 'timestamp' );
|
113 |
-
$args['hours_now'] = intval( date( 'H', $time_now ) );
|
114 |
-
$args['minutes_now'] = intval( date( 'i', $time_now ) );
|
115 |
-
}
|
116 |
-
$_time = explode( ',', $_time );
|
117 |
-
foreach ( $_time as $_single_time ) {
|
118 |
-
if ( wcj_check_single_time( $_single_time, $args ) ) {
|
119 |
-
return true;
|
120 |
-
}
|
121 |
-
}
|
122 |
-
return false;
|
123 |
-
}
|
124 |
-
}
|
125 |
-
|
126 |
-
if ( ! function_exists( 'wcj_get_product_id' ) ) {
|
127 |
-
/**
|
128 |
-
* wcj_get_product_id.
|
129 |
-
*
|
130 |
-
* @version 2.7.0
|
131 |
-
* @since 2.7.0
|
132 |
-
*/
|
133 |
-
function wcj_get_product_id( $_product ) {
|
134 |
-
if ( WCJ_IS_WC_VERSION_BELOW_3 ) {
|
135 |
-
return ( isset( $_product->variation_id ) ) ? $_product->variation_id : $_product->id;
|
136 |
-
} else {
|
137 |
-
return $_product->get_id();
|
138 |
-
}
|
139 |
-
}
|
140 |
-
}
|
141 |
-
|
142 |
-
if ( ! function_exists( 'wcj_get_product_id_or_variation_parent_id' ) ) {
|
143 |
-
/**
|
144 |
-
* wcj_get_product_id_or_variation_parent_id.
|
145 |
-
*
|
146 |
-
* @version 2.7.0
|
147 |
-
* @since 2.7.0
|
148 |
-
*/
|
149 |
-
function wcj_get_product_id_or_variation_parent_id( $_product ) {
|
150 |
-
if ( WCJ_IS_WC_VERSION_BELOW_3 ) {
|
151 |
-
return $_product->id;
|
152 |
-
} else {
|
153 |
-
return ( $_product->is_type( 'variation' ) ) ? $_product->get_parent_id() : $_product->get_id();
|
154 |
-
}
|
155 |
-
}
|
156 |
-
}
|
157 |
-
|
158 |
-
if ( ! function_exists( 'wcj_get_product_status' ) ) {
|
159 |
-
/**
|
160 |
-
* wcj_get_product_status.
|
161 |
-
*
|
162 |
-
* @version 2.7.0
|
163 |
-
* @since 2.7.0
|
164 |
-
*/
|
165 |
-
function wcj_get_product_status( $_product ) {
|
166 |
-
return ( WCJ_IS_WC_VERSION_BELOW_3 ) ? $_product->post->post_status : $_product->get_status();
|
167 |
-
}
|
168 |
-
}
|
169 |
-
|
170 |
-
if ( ! function_exists( 'wcj_get_product_total_stock' ) ) {
|
171 |
-
/**
|
172 |
-
* wcj_get_product_total_stock.
|
173 |
-
*
|
174 |
-
* @version 2.7.0
|
175 |
-
* @since 2.7.0
|
176 |
-
*/
|
177 |
-
function wcj_get_product_total_stock( $_product ) {
|
178 |
-
if ( WCJ_IS_WC_VERSION_BELOW_3 ) {
|
179 |
-
return $_product->get_total_stock();
|
180 |
-
} else {
|
181 |
-
if ( $_product->is_type( array( 'variable', 'grouped' ) ) ) {
|
182 |
-
$total_stock = 0;
|
183 |
-
foreach ( $_product->get_children() as $child_id ) {
|
184 |
-
$child = wc_get_product( $child_id );
|
185 |
-
$total_stock += $child->get_stock_quantity();
|
186 |
-
}
|
187 |
-
return $total_stock;
|
188 |
-
} else {
|
189 |
-
return $_product->get_stock_quantity();
|
190 |
-
}
|
191 |
-
}
|
192 |
-
}
|
193 |
-
}
|
194 |
-
|
195 |
-
if ( ! function_exists( 'wcj_get_product_display_price' ) ) {
|
196 |
-
/**
|
197 |
-
* wcj_get_product_display_price.
|
198 |
-
*
|
199 |
-
* @version 2.8.0
|
200 |
-
* @since 2.7.0
|
201 |
-
*/
|
202 |
-
function wcj_get_product_display_price( $_product, $price = '', $qty = 1 ) {
|
203 |
-
if ( WCJ_IS_WC_VERSION_BELOW_3 ) {
|
204 |
-
return $_product->get_display_price( $price, $qty );
|
205 |
-
} else {
|
206 |
-
$minus_sign = '';
|
207 |
-
if ( $price < 0 ) {
|
208 |
-
$minus_sign = '-';
|
209 |
-
$price *= -1;
|
210 |
-
}
|
211 |
-
return $minus_sign . wc_get_price_to_display( $_product, array( 'price' => $price, 'qty' => $qty ) );
|
212 |
-
}
|
213 |
-
}
|
214 |
-
}
|
215 |
-
|
216 |
-
if ( ! function_exists( 'wcj_get_product_formatted_variation' ) ) {
|
217 |
-
/**
|
218 |
-
* wcj_get_product_formatted_variation.
|
219 |
-
*
|
220 |
-
* @version 2.7.0
|
221 |
-
* @since 2.7.0
|
222 |
-
*/
|
223 |
-
function wcj_get_product_formatted_variation( $variation, $flat = false, $include_names = true ) {
|
224 |
-
if ( WCJ_IS_WC_VERSION_BELOW_3 ) {
|
225 |
-
return $variation->get_formatted_variation_attributes( $flat );
|
226 |
-
} else {
|
227 |
-
return wc_get_formatted_variation( $variation, $flat, $include_names );
|
228 |
-
}
|
229 |
-
}
|
230 |
-
}
|
231 |
-
|
232 |
-
if ( ! function_exists( 'wcj_get_order_id' ) ) {
|
233 |
-
/**
|
234 |
-
* wcj_get_order_id.
|
235 |
-
*
|
236 |
-
* @version 2.7.0
|
237 |
-
* @since 2.7.0
|
238 |
-
*/
|
239 |
-
function wcj_get_order_id( $_order ) {
|
240 |
-
return ( WCJ_IS_WC_VERSION_BELOW_3 ) ? $_order->id : $_order->get_id();
|
241 |
-
}
|
242 |
-
}
|
243 |
-
|
244 |
-
if ( ! function_exists( 'wcj_get_order_currency' ) ) {
|
245 |
-
/**
|
246 |
-
* wcj_get_order_currency.
|
247 |
-
*
|
248 |
-
* @version 2.7.0
|
249 |
-
* @since 2.7.0
|
250 |
-
*/
|
251 |
-
function wcj_get_order_currency( $_order ) {
|
252 |
-
return ( WCJ_IS_WC_VERSION_BELOW_3 ? $_order->get_order_currency() : $_order->get_currency() );
|
253 |
-
}
|
254 |
-
}
|
255 |
-
|
256 |
-
if ( ! function_exists( 'wcj_get_order_item_meta_info' ) ) {
|
257 |
-
/**
|
258 |
-
* wcj_get_order_item_meta_info.
|
259 |
-
*
|
260 |
-
* from woocommerce\includes\admin\meta-boxes\views\html-order-item-meta.php
|
261 |
-
*
|
262 |
-
* @version 2.8.0
|
263 |
-
* @since 2.5.9
|
264 |
-
*/
|
265 |
-
function wcj_get_order_item_meta_info( $item_id, $item, $_order, $exclude_wcj_meta = false, $_product = null ) {
|
266 |
-
$meta_info = '';
|
267 |
-
$metadata = ( WCJ_IS_WC_VERSION_BELOW_3 ? $_order->has_meta( $item_id ) : $item->get_meta_data() );
|
268 |
-
if ( $metadata ) {
|
269 |
-
$meta_info = array();
|
270 |
-
foreach ( $metadata as $meta ) {
|
271 |
-
|
272 |
-
$_meta_key = ( WCJ_IS_WC_VERSION_BELOW_3 ? $meta['meta_key'] : $meta->key );
|
273 |
-
$_meta_value = ( WCJ_IS_WC_VERSION_BELOW_3 ? $meta['meta_value'] : $meta->value );
|
274 |
-
|
275 |
-
// Skip hidden core fields
|
276 |
-
if ( in_array( $_meta_key, apply_filters( 'woocommerce_hidden_order_itemmeta', array(
|
277 |
-
'_qty',
|
278 |
-
'_tax_class',
|
279 |
-
'_product_id',
|
280 |
-
'_variation_id',
|
281 |
-
'_line_subtotal',
|
282 |
-
'_line_subtotal_tax',
|
283 |
-
'_line_total',
|
284 |
-
'_line_tax',
|
285 |
-
'method_id',
|
286 |
-
'cost'
|
287 |
-
) ) ) ) {
|
288 |
-
continue;
|
289 |
-
}
|
290 |
-
|
291 |
-
if ( $exclude_wcj_meta && ( 'wcj' === substr( $_meta_key, 0, 3 ) || '_wcj' === substr( $_meta_key, 0, 4 ) ) ) {
|
292 |
-
continue;
|
293 |
-
}
|
294 |
-
|
295 |
-
if ( $exclude_wcj_meta && 'is_custom' === $_meta_key ) {
|
296 |
-
continue;
|
297 |
-
}
|
298 |
-
|
299 |
-
// Skip serialised meta
|
300 |
-
if ( is_serialized( $_meta_value ) || is_array( $_meta_value ) ) {
|
301 |
-
continue;
|
302 |
-
}
|
303 |
-
|
304 |
-
// Get attribute data
|
305 |
-
if ( taxonomy_exists( wc_sanitize_taxonomy_name( $_meta_key ) ) ) {
|
306 |
-
$term = get_term_by( 'slug', $_meta_value, wc_sanitize_taxonomy_name( $_meta_key ) );
|
307 |
-
$_meta_key = wc_attribute_label( wc_sanitize_taxonomy_name( $_meta_key ) );
|
308 |
-
$_meta_value = isset( $term->name ) ? $term->name : $_meta_value;
|
309 |
-
} else {
|
310 |
-
$the_product = null;
|
311 |
-
if ( is_object( $_product ) ) {
|
312 |
-
$the_product = $_product;
|
313 |
-
} elseif ( is_object( $item ) ) {
|
314 |
-
$the_product = $_order->get_product_from_item( $item );
|
315 |
-
}
|
316 |
-
$_meta_key = ( is_object( $the_product ) ) ? wc_attribute_label( $_meta_key, $the_product ) : $_meta_key;
|
317 |
-
}
|
318 |
-
$meta_info[] = wp_kses_post( rawurldecode( $_meta_key ) ) . ': ' . wp_kses_post( rawurldecode( $_meta_value ) );
|
319 |
-
}
|
320 |
-
$meta_info = implode( ', ', $meta_info );
|
321 |
-
}
|
322 |
-
return $meta_info;
|
323 |
-
}
|
324 |
-
}
|
325 |
-
|
326 |
-
if ( ! function_exists( 'wcj_get_product_image_url' ) ) {
|
327 |
-
/**
|
328 |
-
* wcj_get_product_image_url.
|
329 |
-
*
|
330 |
-
* @version 2.5.7
|
331 |
-
* @since 2.5.7
|
332 |
-
* @todo placeholder
|
333 |
-
*/
|
334 |
-
function wcj_get_product_image_url( $product_id, $image_size = 'shop_thumbnail' ) {
|
335 |
-
if ( has_post_thumbnail( $product_id ) ) {
|
336 |
-
$image_url = get_the_post_thumbnail_url( $product_id, $image_size );
|
337 |
-
} elseif ( ( $parent_id = wp_get_post_parent_id( $product_id ) ) && has_post_thumbnail( $parent_id ) ) {
|
338 |
-
$image_url = get_the_post_thumbnail_url( $parent_id, $image_size );
|
339 |
-
} else {
|
340 |
-
$image_url = '';
|
341 |
-
}
|
342 |
-
return $image_url;
|
343 |
-
}
|
344 |
-
}
|
345 |
-
|
346 |
-
if ( ! function_exists( 'wcj_is_bot' ) ) {
|
347 |
-
/**
|
348 |
-
* wcj_is_bot.
|
349 |
-
*
|
350 |
-
* @version 2.5.7
|
351 |
-
* @since 2.5.6
|
352 |
-
*/
|
353 |
-
function wcj_is_bot() {
|
354 |
-
return ( isset( $_SERVER['HTTP_USER_AGENT'] ) && preg_match( '/Google-Structured-Data-Testing-Tool|bot|crawl|slurp|spider/i', $_SERVER['HTTP_USER_AGENT'] ) ) ? true : false;
|
355 |
-
}
|
356 |
-
}
|
357 |
-
|
358 |
-
if ( ! function_exists( 'wcj_get_rocket_icon' ) ) {
|
359 |
-
/**
|
360 |
-
* wcj_get_rocket_icon.
|
361 |
-
*
|
362 |
-
* @version 2.5.5
|
363 |
-
* @since 2.5.3
|
364 |
-
*/
|
365 |
-
function wcj_get_rocket_icon() {
|
366 |
-
return '<img class="wcj-rocket-icon" src="' . wcj_plugin_url() . '/assets/images/rocket-icon.png' . '" title="">';
|
367 |
-
}
|
368 |
-
}
|
369 |
-
|
370 |
-
if ( ! function_exists( 'wcj_get_5_rocket_image' ) ) {
|
371 |
-
/**
|
372 |
-
* wcj_get_5_rocket_image.
|
373 |
-
*
|
374 |
-
* @version 2.5.5
|
375 |
-
* @since 2.5.3
|
376 |
-
*/
|
377 |
-
function wcj_get_5_rocket_image() {
|
378 |
-
return '<img class="wcj-rocket-icon" src="' . wcj_plugin_url() . '/assets/images/5-rockets.png' . '" title="">';
|
379 |
-
}
|
380 |
-
}
|
381 |
-
|
382 |
-
if ( ! function_exists( 'wcj_add_files_upload_form_to_checkout_frontend' ) ) {
|
383 |
-
/**
|
384 |
-
* wcj_add_files_upload_form_to_checkout_frontend.
|
385 |
-
*
|
386 |
-
* @version 2.5.2
|
387 |
-
* @since 2.5.2
|
388 |
-
*/
|
389 |
-
function wcj_add_files_upload_form_to_checkout_frontend() {
|
390 |
-
WCJ()->modules['checkout_files_upload']->add_files_upload_form_to_checkout_frontend_all( true );
|
391 |
-
}
|
392 |
-
}
|
393 |
-
|
394 |
-
if ( ! function_exists( 'wcj_variation_radio_button' ) ) {
|
395 |
-
/**
|
396 |
-
* wcj_variation_radio_button.
|
397 |
-
*
|
398 |
-
* @version 2.5.0
|
399 |
-
* @since 2.4.8
|
400 |
-
*/
|
401 |
-
function wcj_variation_radio_button( $_product, $variation ) {
|
402 |
-
$attributes_html = '';
|
403 |
-
$variation_attributes_display_values = array();
|
404 |
-
$is_checked = true;
|
405 |
-
foreach ( $variation['attributes'] as $attribute_full_name => $attribute_value ) {
|
406 |
-
|
407 |
-
$attributes_html .= ' ' . $attribute_full_name . '="' . $attribute_value . '"';
|
408 |
-
|
409 |
-
$attribute_name = $attribute_full_name;
|
410 |
-
$prefix = 'attribute_';
|
411 |
-
if ( substr( $attribute_full_name, 0, strlen( $prefix ) ) === $prefix ) {
|
412 |
-
$attribute_name = substr( $attribute_full_name, strlen( $prefix ) );
|
413 |
-
}
|
414 |
-
|
415 |
-
$checked = isset( $_REQUEST[ 'attribute_' . sanitize_title( $attribute_name ) ] ) ? wc_clean( $_REQUEST[ 'attribute_' . sanitize_title( $attribute_name ) ] ) : $_product->get_variation_default_attribute( $attribute_name );
|
416 |
-
if ( $checked != $attribute_value ) $is_checked = false;
|
417 |
-
|
418 |
-
$terms = get_terms( $attribute_name );
|
419 |
-
foreach ( $terms as $term ) {
|
420 |
-
if ( is_object( $term ) && isset( $term->slug ) && $term->slug === $attribute_value && isset( $term->name ) ) {
|
421 |
-
$attribute_value = $term->name;
|
422 |
-
}
|
423 |
-
}
|
424 |
-
|
425 |
-
$variation_attributes_display_values[] = $attribute_value;
|
426 |
-
|
427 |
-
}
|
428 |
-
$variation_title = implode( ', ', $variation_attributes_display_values ) . ' (' . wc_price( $variation['display_price'] ) . ')';
|
429 |
-
$variation_id = $variation['variation_id'];
|
430 |
-
$is_checked = checked( $is_checked, true, false );
|
431 |
-
|
432 |
-
echo '<td style="width:10%;">';
|
433 |
-
echo '<input id="wcj_variation_' . $variation_id . '" name="wcj_variations" type="radio"' . $attributes_html . ' variation_id="' . $variation_id . '"' . $is_checked . '>';
|
434 |
-
echo '</td>';
|
435 |
-
echo '<td>';
|
436 |
-
echo '<label for="wcj_variation_' . $variation_id . '">';
|
437 |
-
echo $variation_title;
|
438 |
-
if ( '' != ( $variation_description = get_post_meta( $variation_id, '_variation_description', true ) ) ) {
|
439 |
-
echo '<br>';
|
440 |
-
// echo '<small>' . $variation['variation_description'] . '</small>';
|
441 |
-
echo '<small>' . $variation_description . '</small>';
|
442 |
-
}
|
443 |
-
echo '</label>';
|
444 |
-
echo '</td>';
|
445 |
-
}
|
446 |
-
}
|
447 |
-
|
448 |
-
if ( ! function_exists( 'wcj_current_filter_priority' ) ) {
|
449 |
-
/*
|
450 |
-
* wcj_current_filter_priority.
|
451 |
-
*
|
452 |
-
* @version 2.5.8
|
453 |
-
* @since 2.4.6
|
454 |
-
*/
|
455 |
-
function wcj_current_filter_priority() {
|
456 |
-
global $wp_filter;
|
457 |
-
$current_filter_data = $wp_filter[ current_filter() ];
|
458 |
-
if ( class_exists( 'WP_Hook' ) && is_a( $current_filter_data, 'WP_Hook' ) ) {
|
459 |
-
// since WordPress v4.7
|
460 |
-
return $current_filter_data->current_priority();
|
461 |
-
} else {
|
462 |
-
// before WordPress v4.7
|
463 |
-
return key( $current_filter_data );
|
464 |
-
}
|
465 |
-
}
|
466 |
-
}
|
467 |
-
|
468 |
-
if ( ! function_exists( 'wcj_maybe_unserialize_and_implode' ) ) {
|
469 |
-
/*
|
470 |
-
* wcj_maybe_unserialize_and_implode.
|
471 |
-
*
|
472 |
-
* @version 2.8.0
|
473 |
-
* @since 2.8.0
|
474 |
-
* @return string
|
475 |
-
* @todo `if ( ! is_array() )`
|
476 |
-
*/
|
477 |
-
function wcj_maybe_unserialize_and_implode( $value, $glue = ' ' ) {
|
478 |
-
if ( is_serialized( $value ) ) {
|
479 |
-
$value = unserialize( $value );
|
480 |
-
if ( is_array( $value ) ) {
|
481 |
-
$value = implode( $glue, $value );
|
482 |
-
}
|
483 |
-
}
|
484 |
-
return $value;
|
485 |
-
}
|
486 |
-
}
|
487 |
-
|
488 |
-
if ( ! function_exists( 'wcj_get_product_input_fields' ) ) {
|
489 |
-
/*
|
490 |
-
* wcj_get_product_input_fields.
|
491 |
-
*
|
492 |
-
* @version 2.8.0
|
493 |
-
* @since 2.4.4
|
494 |
-
* @return string
|
495 |
-
*/
|
496 |
-
function wcj_get_product_input_fields( $item ) {
|
497 |
-
$product_input_fields = array();
|
498 |
-
if ( WCJ_IS_WC_VERSION_BELOW_3 ) {
|
499 |
-
foreach ( $item as $key => $value ) {
|
500 |
-
if ( false !== strpos( $key, 'wcj_product_input_fields_' ) ) {
|
501 |
-
$product_input_fields[] = wcj_maybe_unserialize_and_implode( $value );
|
502 |
-
}
|
503 |
-
}
|
504 |
-
} else {
|
505 |
-
foreach ( $item->get_meta_data() as $value ) {
|
506 |
-
if ( isset( $value->key ) && isset( $value->value ) && false !== strpos( $value->key, 'wcj_product_input_fields_' ) ) {
|
507 |
-
$product_input_fields[] = wcj_maybe_unserialize_and_implode( $value->value );
|
508 |
-
}
|
509 |
-
}
|
510 |
-
}
|
511 |
-
return ( ! empty( $product_input_fields ) ) ? implode( ', ', $product_input_fields ) : '';
|
512 |
-
}
|
513 |
-
}
|
514 |
-
|
515 |
-
if ( ! function_exists( 'wcj_get_left_to_free_shipping' ) ) {
|
516 |
-
/*
|
517 |
-
* wcj_get_left_to_free_shipping.
|
518 |
-
*
|
519 |
-
* @version 2.5.8
|
520 |
-
* @since 2.4.4
|
521 |
-
* @return string
|
522 |
-
*/
|
523 |
-
function wcj_get_left_to_free_shipping( $content, $multiply_by = 1 ) {
|
524 |
-
if ( '' == $content ) {
|
525 |
-
$content = __( '%left_to_free% left to free shipping', 'woocommerce-jetpack' );
|
526 |
-
}
|
527 |
-
$min_free_shipping_amount = 0;
|
528 |
-
$current_wc_version = get_option( 'woocommerce_version', null );
|
529 |
-
if ( version_compare( $current_wc_version, '2.6.0', '<' ) ) {
|
530 |
-
$free_shipping = new WC_Shipping_Free_Shipping();
|
531 |
-
if ( in_array( $free_shipping->requires, array( 'min_amount', 'either', 'both' ) ) ) {
|
532 |
-
$min_free_shipping_amount = $free_shipping->min_amount;
|
533 |
-
}
|
534 |
-
} else {
|
535 |
-
$legacy_free_shipping = new WC_Shipping_Legacy_Free_Shipping();
|
536 |
-
if ( 'yes' === $legacy_free_shipping->enabled ) {
|
537 |
-
if ( in_array( $legacy_free_shipping->requires, array( 'min_amount', 'either', 'both' ) ) ) {
|
538 |
-
$min_free_shipping_amount = $legacy_free_shipping->min_amount;
|
539 |
-
}
|
540 |
-
}
|
541 |
-
if ( 0 == $min_free_shipping_amount ) {
|
542 |
-
if ( function_exists( 'WC' ) && ( $wc_shipping = WC()->shipping ) && ( $wc_cart = WC()->cart ) ) {
|
543 |
-
if ( $wc_shipping->enabled ) {
|
544 |
-
if ( $packages = $wc_cart->get_shipping_packages() ) {
|
545 |
-
$shipping_methods = $wc_shipping->load_shipping_methods( $packages[0] );
|
546 |
-
foreach ( $shipping_methods as $shipping_method ) {
|
547 |
-
if ( 'yes' === $shipping_method->enabled && 0 != $shipping_method->instance_id ) {
|
548 |
-
if ( 'WC_Shipping_Free_Shipping' === get_class( $shipping_method ) ) {
|
549 |
-
if ( in_array( $shipping_method->requires, array( 'min_amount', 'either', 'both' ) ) ) {
|
550 |
-
$min_free_shipping_amount = $shipping_method->min_amount;
|
551 |
-
break;
|
552 |
-
}
|
553 |
-
}
|
554 |
-
}
|
555 |
-
}
|
556 |
-
}
|
557 |
-
}
|
558 |
-
}
|
559 |
-
}
|
560 |
-
}
|
561 |
-
if ( 0 != $min_free_shipping_amount ) {
|
562 |
-
if ( isset( WC()->cart->cart_contents_total ) ) {
|
563 |
-
$total = ( WC()->cart->prices_include_tax ) ? WC()->cart->cart_contents_total + array_sum( WC()->cart->taxes ) : WC()->cart->cart_contents_total;
|
564 |
-
if ( $total >= $min_free_shipping_amount ) {
|
565 |
-
return do_shortcode( get_option( 'wcj_shipping_left_to_free_info_content_reached', __( 'You have Free delivery', 'woocommerce-jetpack' ) ) );
|
566 |
-
} else {
|
567 |
-
$content = str_replace( '%left_to_free%', wc_price( ( $min_free_shipping_amount - $total ) * $multiply_by ), $content );
|
568 |
-
$content = str_replace( '%free_shipping_min_amount%', wc_price( ( $min_free_shipping_amount ) * $multiply_by ), $content );
|
569 |
-
return $content;
|
570 |
-
}
|
571 |
-
}
|
572 |
-
}
|
573 |
-
}
|
574 |
-
}
|
575 |
-
|
576 |
-
/*
|
577 |
-
* wcj_get_cart_filters()
|
578 |
-
*
|
579 |
-
* @version 2.4.4
|
580 |
-
* @since 2.4.4
|
581 |
-
* @return array
|
582 |
-
*/
|
583 |
-
if ( ! function_exists( 'wcj_get_cart_filters' ) ) {
|
584 |
-
function wcj_get_cart_filters() {
|
585 |
-
return array(
|
586 |
-
'woocommerce_before_cart' => __( 'Before cart', 'woocommerce-jetpack' ),
|
587 |
-
'woocommerce_before_cart_table' => __( 'Before cart table', 'woocommerce-jetpack' ),
|
588 |
-
'woocommerce_before_cart_contents' => __( 'Before cart contents', 'woocommerce-jetpack' ),
|
589 |
-
'woocommerce_cart_contents' => __( 'Cart contents', 'woocommerce-jetpack' ),
|
590 |
-
'woocommerce_cart_coupon' => __( 'Cart coupon', 'woocommerce-jetpack' ),
|
591 |
-
'woocommerce_cart_actions' => __( 'Cart actions', 'woocommerce-jetpack' ),
|
592 |
-
'woocommerce_after_cart_contents' => __( 'After cart contents', 'woocommerce-jetpack' ),
|
593 |
-
'woocommerce_after_cart_table' => __( 'After cart table', 'woocommerce-jetpack' ),
|
594 |
-
'woocommerce_cart_collaterals' => __( 'Cart collaterals', 'woocommerce-jetpack' ),
|
595 |
-
'woocommerce_after_cart' => __( 'After cart', 'woocommerce-jetpack' ),
|
596 |
-
|
597 |
-
'woocommerce_before_cart_totals' => __( 'Before cart totals', 'woocommerce-jetpack' ),
|
598 |
-
'woocommerce_cart_totals_before_shipping' => __( 'Cart totals: Before shipping', 'woocommerce-jetpack' ),
|
599 |
-
'woocommerce_cart_totals_after_shipping' => __( 'Cart totals: After shipping', 'woocommerce-jetpack' ),
|
600 |
-
'woocommerce_cart_totals_before_order_total' => __( 'Cart totals: Before order total', 'woocommerce-jetpack' ),
|
601 |
-
'woocommerce_cart_totals_after_order_total' => __( 'Cart totals: After order total', 'woocommerce-jetpack' ),
|
602 |
-
'woocommerce_proceed_to_checkout' => __( 'Proceed to checkout', 'woocommerce-jetpack' ),
|
603 |
-
'woocommerce_after_cart_totals' => __( 'After cart totals', 'woocommerce-jetpack' ),
|
604 |
-
|
605 |
-
'woocommerce_before_shipping_calculator' => __( 'Before shipping calculator', 'woocommerce-jetpack' ),
|
606 |
-
'woocommerce_after_shipping_calculator' => __( 'After shipping calculator', 'woocommerce-jetpack' ),
|
607 |
-
|
608 |
-
'woocommerce_cart_is_empty' => __( 'If cart is empty', 'woocommerce-jetpack' ),
|
609 |
-
);
|
610 |
-
}
|
611 |
-
}
|
612 |
-
|
613 |
-
/*
|
614 |
-
* wcj_is_module_enabled()
|
615 |
-
*
|
616 |
-
* @version 2.4.0
|
617 |
-
* @since 2.4.0
|
618 |
-
* @return boolean
|
619 |
-
*/
|
620 |
-
if ( ! function_exists( 'wcj_is_module_enabled' ) ) {
|
621 |
-
function wcj_is_module_enabled( $module_id ) {
|
622 |
-
return ( 'yes' === get_option( 'wcj_' . $module_id . '_enabled', 'no' ) ) ? true : false;
|
623 |
-
}
|
624 |
-
}
|
625 |
-
|
626 |
-
if ( ! function_exists( 'wcj_get_rates_for_tax_class' ) ) {
|
627 |
-
/* Used by admin settings page.
|
628 |
-
*
|
629 |
-
* @param string $tax_class
|
630 |
-
*
|
631 |
-
* @return array|null|object
|
632 |
-
*
|
633 |
-
* @version 2.3.10
|
634 |
-
* @since 2.3.10
|
635 |
-
*/
|
636 |
-
function wcj_get_rates_for_tax_class( $tax_class ) {
|
637 |
-
global $wpdb;
|
638 |
-
|
639 |
-
// Get all the rates and locations. Snagging all at once should significantly cut down on the number of queries.
|
640 |
-
$rates = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM `{$wpdb->prefix}woocommerce_tax_rates` WHERE `tax_rate_class` = %s ORDER BY `tax_rate_order`;", sanitize_title( $tax_class ) ) );
|
641 |
-
$locations = $wpdb->get_results( "SELECT * FROM `{$wpdb->prefix}woocommerce_tax_rate_locations`" );
|
642 |
-
|
643 |
-
// Set the rates keys equal to their ids.
|
644 |
-
$rates = array_combine( wp_list_pluck( $rates, 'tax_rate_id' ), $rates );
|
645 |
-
|
646 |
-
// Drop the locations into the rates array.
|
647 |
-
foreach ( $locations as $location ) {
|
648 |
-
// Don't set them for unexistent rates.
|
649 |
-
if ( ! isset( $rates[ $location->tax_rate_id ] ) ) {
|
650 |
-
continue;
|
651 |
-
}
|
652 |
-
// If the rate exists, initialize the array before appending to it.
|
653 |
-
if ( ! isset( $rates[ $location->tax_rate_id ]->{$location->location_type} ) ) {
|
654 |
-
$rates[ $location->tax_rate_id ]->{$location->location_type} = array();
|
655 |
-
}
|
656 |
-
$rates[ $location->tax_rate_id ]->{$location->location_type}[] = $location->location_code;
|
657 |
-
}
|
658 |
-
|
659 |
-
return $rates;
|
660 |
-
}
|
661 |
-
}
|
662 |
-
|
663 |
-
/*
|
664 |
-
* wcj_get_select_options()
|
665 |
-
*
|
666 |
-
* @version 2.5.5
|
667 |
-
* @since 2.3.0
|
668 |
-
* @return array
|
669 |
-
*/
|
670 |
-
if ( ! function_exists( 'wcj_get_select_options' ) ) {
|
671 |
-
function wcj_get_select_options( $select_options_raw, $do_sanitize = true ) {
|
672 |
-
$select_options_raw = explode( PHP_EOL, $select_options_raw );
|
673 |
-
$select_options = array();
|
674 |
-
foreach ( $select_options_raw as $select_options_title ) {
|
675 |
-
$select_options_key = ( $do_sanitize ) ? sanitize_title( $select_options_title ) : $select_options_title;
|
676 |
-
$select_options[ $select_options_key ] = $select_options_title;
|
677 |
-
}
|
678 |
-
return $select_options;
|
679 |
-
}
|
680 |
-
}
|
681 |
-
|
682 |
-
/*
|
683 |
-
* is_frontend()
|
684 |
-
*
|
685 |
-
* @since 2.2.6
|
686 |
-
* @return boolean
|
687 |
-
*/
|
688 |
-
if ( ! function_exists( 'wcj_is_frontend' ) ) {
|
689 |
-
function wcj_is_frontend() {
|
690 |
-
return ( ! is_admin() || ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) ? true : false;
|
691 |
-
}
|
692 |
-
}
|
693 |
-
|
694 |
-
/**
|
695 |
-
* wcj_get_wcj_uploads_dir.
|
696 |
-
*/
|
697 |
-
if ( ! function_exists( 'wcj_get_wcj_uploads_dir' ) ) {
|
698 |
-
function wcj_get_wcj_uploads_dir( $subdir = '' ) {
|
699 |
-
$upload_dir = wp_upload_dir();
|
700 |
-
$upload_dir = $upload_dir['basedir'];
|
701 |
-
$upload_dir = $upload_dir . '/woocommerce_uploads/wcj_uploads';
|
702 |
-
if ( '' != $subdir ) $upload_dir = $upload_dir . '/' . $subdir;
|
703 |
-
return $upload_dir;
|
704 |
-
}
|
705 |
-
}
|
706 |
-
|
707 |
-
/**
|
708 |
-
* wcj_is_product_wholesale_enabled_per_product.
|
709 |
-
*
|
710 |
-
* @version 2.5.0
|
711 |
-
* @since 2.5.0
|
712 |
-
*/
|
713 |
-
if ( ! function_exists( 'wcj_is_product_wholesale_enabled_per_product' ) ) {
|
714 |
-
function wcj_is_product_wholesale_enabled_per_product( $product_id ) {
|
715 |
-
return (
|
716 |
-
'yes' === get_option( 'wcj_wholesale_price_per_product_enable', 'yes' ) &&
|
717 |
-
'yes' === get_post_meta( $product_id, '_' . 'wcj_wholesale_price_per_product_enabled', true )
|
718 |
-
) ? true : false;
|
719 |
-
}
|
720 |
-
}
|
721 |
-
|
722 |
-
/**
|
723 |
-
* wcj_is_product_wholesale_enabled.
|
724 |
-
*
|
725 |
-
* @version 2.5.4
|
726 |
-
*/
|
727 |
-
if ( ! function_exists( 'wcj_is_product_wholesale_enabled' ) ) {
|
728 |
-
function wcj_is_product_wholesale_enabled( $product_id ) {
|
729 |
-
if ( wcj_is_module_enabled( 'wholesale_price' ) ) {
|
730 |
-
if ( wcj_is_product_wholesale_enabled_per_product( $product_id ) ) {
|
731 |
-
return true;
|
732 |
-
} else {
|
733 |
-
$products_to_include_passed = false;
|
734 |
-
$products_to_include = get_option( 'wcj_wholesale_price_products_to_include', array() );
|
735 |
-
if ( empty ( $products_to_include ) ) {
|
736 |
-
$products_to_include_passed = true;
|
737 |
-
} else {
|
738 |
-
foreach ( $products_to_include as $id ) {
|
739 |
-
if ( $product_id == $id ) {
|
740 |
-
$products_to_include_passed = true;
|
741 |
-
}
|
742 |
-
}
|
743 |
-
}
|
744 |
-
$products_to_exclude_passed = false;
|
745 |
-
$products_to_exclude = get_option( 'wcj_wholesale_price_products_to_exclude', array() );
|
746 |
-
if ( empty ( $products_to_exclude ) ) {
|
747 |
-
$products_to_exclude_passed = true;
|
748 |
-
} else {
|
749 |
-
foreach ( $products_to_exclude as $id ) {
|
750 |
-
if ( $product_id == $id ) {
|
751 |
-
$products_to_exclude_passed = false;
|
752 |
-
}
|
753 |
-
}
|
754 |
-
}
|
755 |
-
return ( $products_to_include_passed && $products_to_exclude_passed );
|
756 |
-
}
|
757 |
-
}
|
758 |
-
return false;
|
759 |
-
}
|
760 |
-
}
|
761 |
-
|
762 |
-
/**
|
763 |
-
* add_wcj_get_products_filter.
|
764 |
-
*/
|
765 |
-
add_action( 'init', 'add_wcj_get_products_filter' );
|
766 |
-
if ( ! function_exists( 'add_wcj_get_products_filter' ) ) {
|
767 |
-
function add_wcj_get_products_filter() {
|
768 |
-
add_filter( 'wcj_get_products_filter', 'wcj_get_products' );
|
769 |
-
}
|
770 |
-
}
|
771 |
-
|
772 |
-
if ( ! function_exists( 'wcj_get_products' ) ) {
|
773 |
-
/**
|
774 |
-
* wcj_get_products.
|
775 |
-
*
|
776 |
-
* @version 2.8.0
|
777 |
-
*/
|
778 |
-
function wcj_get_products( $products = array(), $post_status = 'any', $block_size = 256, $add_variations = false ) {
|
779 |
-
$offset = 0;
|
780 |
-
while( true ) {
|
781 |
-
$args = array(
|
782 |
-
'post_type' => 'product',
|
783 |
-
'post_status' => $post_status,
|
784 |
-
'posts_per_page' => $block_size,
|
785 |
-
'offset' => $offset,
|
786 |
-
'orderby' => 'title',
|
787 |
-
'order' => 'ASC',
|
788 |
-
'fields' => 'ids',
|
789 |
-
);
|
790 |
-
$loop = new WP_Query( $args );
|
791 |
-
if ( ! $loop->have_posts() ) {
|
792 |
-
break;
|
793 |
-
}
|
794 |
-
foreach ( $loop->posts as $post_id ) {
|
795 |
-
$products[ $post_id ] = get_the_title( $post_id );
|
796 |
-
if ( $add_variations ) {
|
797 |
-
$_product = wc_get_product( $post_id );
|
798 |
-
if ( $_product->is_type( 'variable' ) ) {
|
799 |
-
foreach ( $_product->get_children() as $child_id ) {
|
800 |
-
$products[ $child_id ] = get_the_title( $child_id );
|
801 |
-
}
|
802 |
-
}
|
803 |
-
}
|
804 |
-
}
|
805 |
-
$offset += $block_size;
|
806 |
-
}
|
807 |
-
return $products;
|
808 |
-
}
|
809 |
-
}
|
810 |
-
|
811 |
-
if ( ! function_exists( 'wcj_product_has_terms' ) ) {
|
812 |
-
/**
|
813 |
-
* wcj_product_has_terms.
|
814 |
-
*
|
815 |
-
* @version 2.8.2
|
816 |
-
* @version 2.8.2
|
817 |
-
*/
|
818 |
-
function wcj_product_has_terms( $_product, $_values, $_term ) {
|
819 |
-
if ( is_string( $_values ) ) {
|
820 |
-
$_values = explode( ',', $_values );
|
821 |
-
}
|
822 |
-
if ( empty( $_values ) ) {
|
823 |
-
return false;
|
824 |
-
}
|
825 |
-
$product_categories = get_the_terms( wcj_get_product_id_or_variation_parent_id( $_product ), $_term );
|
826 |
-
if ( empty( $product_categories ) ) {
|
827 |
-
return false;
|
828 |
-
}
|
829 |
-
foreach ( $product_categories as $product_category ) {
|
830 |
-
foreach ( $_values as $_value ) {
|
831 |
-
if ( $product_category->slug === $_value ) {
|
832 |
-
return true;
|
833 |
-
}
|
834 |
-
}
|
835 |
-
}
|
836 |
-
return false;
|
837 |
-
}
|
838 |
-
}
|
839 |
-
|
840 |
-
if ( ! function_exists( 'wcj_get_terms' ) ) {
|
841 |
-
/**
|
842 |
-
* wcj_get_terms.
|
843 |
-
*
|
844 |
-
* @version 2.8.0
|
845 |
-
* @version 2.8.0
|
846 |
-
*/
|
847 |
-
function wcj_get_terms( $args ) {
|
848 |
-
if ( ! is_array( $args ) ) {
|
849 |
-
$_taxonomy = $args;
|
850 |
-
$args = array(
|
851 |
-
'taxonomy' => $_taxonomy,
|
852 |
-
'orderby' => 'name',
|
853 |
-
'hide_empty' => false,
|
854 |
-
);
|
855 |
-
}
|
856 |
-
global $wp_version;
|
857 |
-
if ( version_compare( $wp_version, '4.5.0', '>=' ) ) {
|
858 |
-
$_terms = get_terms( $args );
|
859 |
-
} else {
|
860 |
-
$_taxonomy = $args['taxonomy'];
|
861 |
-
unset( $args['taxonomy'] );
|
862 |
-
$_terms = get_terms( $_taxonomy, $args );
|
863 |
-
}
|
864 |
-
$_terms_options = array();
|
865 |
-
if ( ! empty( $_terms ) && ! is_wp_error( $_terms ) ){
|
866 |
-
foreach ( $_terms as $_term ) {
|
867 |
-
$_terms_options[ $_term->term_id ] = $_term->name;
|
868 |
-
}
|
869 |
-
}
|
870 |
-
return $_terms_options;
|
871 |
-
}
|
872 |
-
}
|
873 |
-
|
874 |
-
if ( ! function_exists( 'wcj_get_product' ) ) {
|
875 |
-
/*
|
876 |
-
* wcj_get_product.
|
877 |
-
*/
|
878 |
-
function wcj_get_product( $product_id = 0 ) {
|
879 |
-
if ( 0 == $product_id ) $product_id = get_the_ID();
|
880 |
-
$the_product = new WCJ_Product( $product_id );
|
881 |
-
return $the_product;
|
882 |
-
}
|
883 |
-
}
|
884 |
-
|
885 |
-
if ( ! function_exists( 'validate_vat_no_soap' ) ) {
|
886 |
-
/**
|
887 |
-
* validate_vat_no_soap.
|
888 |
-
*
|
889 |
-
* @version 2.6.0
|
890 |
-
* @since 2.5.7
|
891 |
-
* @return mixed: bool on successful checking (can be true or false), null otherwise
|
892 |
-
*/
|
893 |
-
function validate_vat_no_soap( $country_code, $vat_number ) {
|
894 |
-
$country_code = strtoupper( $country_code );
|
895 |
-
$api_url = "http://ec.europa.eu/taxation_customs/vies/viesquer.do?ms=" . $country_code . "&vat=" . $vat_number;
|
896 |
-
if ( ini_get( 'allow_url_fopen' ) ) {
|
897 |
-
$response = file_get_contents( $api_url );
|
898 |
-
} elseif ( function_exists( 'curl_version' ) ) {
|
899 |
-
$curl = curl_init( $api_url );
|
900 |
-
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, 1 );
|
901 |
-
$response = curl_exec( $curl );
|
902 |
-
curl_close( $curl );
|
903 |
-
} else {
|
904 |
-
return null;
|
905 |
-
}
|
906 |
-
if ( false === $response ) {
|
907 |
-
return null;
|
908 |
-
}
|
909 |
-
return ( false !== strpos( $response, '="validStyle"' ) ) ? true : false;
|
910 |
-
}
|
911 |
-
}
|
912 |
-
|
913 |
-
if ( ! function_exists( 'validate_VAT' ) ) {
|
914 |
-
/**
|
915 |
-
* validate_VAT.
|
916 |
-
*
|
917 |
-
* @version 2.5.7
|
918 |
-
* @return mixed: bool on successful checking (can be true or false), null otherwise
|
919 |
-
*/
|
920 |
-
function validate_VAT( $country_code, $vat_number ) {
|
921 |
-
try {
|
922 |
-
if ( class_exists( 'SoapClient' ) ) {
|
923 |
-
$client = new SoapClient(
|
924 |
-
'http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl',
|
925 |
-
array( 'exceptions' => true )
|
926 |
-
);
|
927 |
-
$result = $client->checkVat( array(
|
928 |
-
'countryCode' => $country_code,
|
929 |
-
'vatNumber' => $vat_number,
|
930 |
-
) );
|
931 |
-
return ( isset( $result->valid ) ) ? $result->valid : null;
|
932 |
-
} else {
|
933 |
-
return validate_vat_no_soap( $country_code, $vat_number );
|
934 |
-
}
|
935 |
-
} catch( Exception $exception ) {
|
936 |
-
return null;
|
937 |
-
}
|
938 |
-
}
|
939 |
-
}
|
940 |
-
|
941 |
-
if ( ! function_exists( 'wcj_plugin_url' ) ) {
|
942 |
-
/**
|
943 |
-
* wcj_plugin_url.
|
944 |
-
*
|
945 |
-
* @version 2.3.0
|
946 |
-
* @todo remove this function
|
947 |
-
*/
|
948 |
-
function wcj_plugin_url() {
|
949 |
-
return untrailingslashit( plugin_dir_url( realpath( dirname( __FILE__ ) . '/..' ) ) );
|
950 |
-
}
|
951 |
-
}
|
952 |
-
|
953 |
-
if ( ! function_exists( 'wcj_plugin_path' ) ) {
|
954 |
-
/**
|
955 |
-
* Get the plugin path.
|
956 |
-
*
|
957 |
-
* @return string
|
958 |
-
*/
|
959 |
-
function wcj_plugin_path() {
|
960 |
-
return untrailingslashit( realpath( plugin_dir_path( __FILE__ ) . '/../..' ) );
|
961 |
-
}
|
962 |
-
}
|
963 |
-
|
964 |
-
if ( ! function_exists( 'wcj_date_format_php_to_js_v2' ) ) {
|
965 |
-
/*
|
966 |
-
* Matches each symbol of PHP date format standard
|
967 |
-
* with jQuery equivalent codeword
|
968 |
-
* http://stackoverflow.com/questions/16702398/convert-a-php-date-format-to-a-jqueryui-datepicker-date-format
|
969 |
-
*
|
970 |
-
* @author Tristan Jahier
|
971 |
-
* @version 2.4.0
|
972 |
-
* @since 2.4.0
|
973 |
-
*/
|
974 |
-
function wcj_date_format_php_to_js_v2( $php_format ) {
|
975 |
-
$SYMBOLS_MATCHING = array(
|
976 |
-
// Day
|
977 |
-
'd' => 'dd',
|
978 |
-
'D' => 'D',
|
979 |
-
'j' => 'd',
|
980 |
-
'l' => 'DD',
|
981 |
-
'N' => '',
|
982 |
-
'S' => '',
|
983 |
-
'w' => '',
|
984 |
-
'z' => 'o',
|
985 |
-
// Week
|
986 |
-
'W' => '',
|
987 |
-
// Month
|
988 |
-
'F' => 'MM',
|
989 |
-
'm' => 'mm',
|
990 |
-
'M' => 'M',
|
991 |
-
'n' => 'm',
|
992 |
-
't' => '',
|
993 |
-
// Year
|
994 |
-
'L' => '',
|
995 |
-
'o' => '',
|
996 |
-
'Y' => 'yy',
|
997 |
-
'y' => 'y',
|
998 |
-
// Time
|
999 |
-
'a' => '',
|
1000 |
-
'A' => '',
|
1001 |
-
'B' => '',
|
1002 |
-
'g' => '',
|
1003 |
-
'G' => '',
|
1004 |
-
'h' => '',
|
1005 |
-
'H' => '',
|
1006 |
-
'i' => '',
|
1007 |
-
's' => '',
|
1008 |
-
'u' => ''
|
1009 |
-
);
|
1010 |
-
$jqueryui_format = "";
|
1011 |
-
$escaping = false;
|
1012 |
-
for ( $i = 0; $i < strlen( $php_format ); $i++ ) {
|
1013 |
-
$char = $php_format[ $i ];
|
1014 |
-
if ( $char === '\\' ) { // PHP date format escaping character
|
1015 |
-
$i++;
|
1016 |
-
$jqueryui_format .= ( $escaping ) ? $php_format[ $i ] : '\'' . $php_format[ $i ];
|
1017 |
-
$escaping = true;
|
1018 |
-
} else {
|
1019 |
-
if ( $escaping ) {
|
1020 |
-
$jqueryui_format .= "'";
|
1021 |
-
$escaping = false;
|
1022 |
-
}
|
1023 |
-
$jqueryui_format .= ( isset( $SYMBOLS_MATCHING[ $char ] ) ) ? $SYMBOLS_MATCHING[ $char ] : $char;
|
1024 |
-
}
|
1025 |
-
}
|
1026 |
-
return $jqueryui_format;
|
1027 |
-
}
|
1028 |
-
}
|
1029 |
-
|
1030 |
-
if ( ! function_exists( 'wcj_hex2rgb' ) ) {
|
1031 |
-
/**
|
1032 |
-
* wcj_hex2rgb.
|
1033 |
-
*/
|
1034 |
-
function wcj_hex2rgb( $hex ) {
|
1035 |
-
return sscanf( $hex, "#%2x%2x%2x" );
|
1036 |
-
}
|
1037 |
-
}
|
1038 |
-
|
1039 |
-
if ( ! function_exists( 'wcj_get_the_ip' ) ) {
|
1040 |
-
/**
|
1041 |
-
* wcj_get_the_ip.
|
1042 |
-
*
|
1043 |
-
* @see http://stackoverflow.com/questions/3003145/how-to-get-the-client-ip-address-in-php
|
1044 |
-
*/
|
1045 |
-
function wcj_get_the_ip( ) {
|
1046 |
-
$ip = null;
|
1047 |
-
if ( ! empty( $_SERVER['HTTP_CLIENT_IP'] ) ) {
|
1048 |
-
$ip = $_SERVER['HTTP_CLIENT_IP'];
|
1049 |
-
} elseif ( ! empty( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) {
|
1050 |
-
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
|
1051 |
-
} else {
|
1052 |
-
$ip = $_SERVER['REMOTE_ADDR'];
|
1053 |
-
}
|
1054 |
-
return $ip;
|
1055 |
-
}
|
1056 |
-
}
|
1057 |
-
|
1058 |
-
if ( ! function_exists( 'wcj_get_shortcodes_list' ) ) {
|
1059 |
-
/**
|
1060 |
-
* wcj_get_shortcodes_list.
|
1061 |
-
*/
|
1062 |
-
function wcj_get_shortcodes_list() {
|
1063 |
-
$the_array = apply_filters( 'wcj_shortcodes_list', array() );
|
1064 |
-
return implode( ', ', $the_array )/* . ' (' . count( $the_array ) . ')' */;
|
1065 |
-
}
|
1066 |
-
}
|
1067 |
-
|
1068 |
-
if ( ! function_exists( 'wcj_get_order_statuses' ) ) {
|
1069 |
-
/**
|
1070 |
-
* wcj_get_order_statuses.
|
1071 |
-
*/
|
1072 |
-
function wcj_get_order_statuses( $cut_the_prefix ) {
|
1073 |
-
$order_statuses = array(
|
1074 |
-
'wc-pending' => _x( 'Pending Payment', 'Order status', 'woocommerce' ),
|
1075 |
-
'wc-processing' => _x( 'Processing', 'Order status', 'woocommerce' ),
|
1076 |
-
'wc-on-hold' => _x( 'On Hold', 'Order status', 'woocommerce' ),
|
1077 |
-
'wc-completed' => _x( 'Completed', 'Order status', 'woocommerce' ),
|
1078 |
-
'wc-cancelled' => _x( 'Cancelled', 'Order status', 'woocommerce' ),
|
1079 |
-
'wc-refunded' => _x( 'Refunded', 'Order status', 'woocommerce' ),
|
1080 |
-
'wc-failed' => _x( 'Failed', 'Order status', 'woocommerce' ),
|
1081 |
-
);
|
1082 |
-
$order_statuses = apply_filters( 'wc_order_statuses', $order_statuses );
|
1083 |
-
if ( $cut_the_prefix ) {
|
1084 |
-
$order_statuses_no_prefix = array();
|
1085 |
-
foreach ( $order_statuses as $status => $desc ) {
|
1086 |
-
$order_statuses_no_prefix[ substr( $status, 3 ) ] = $desc;
|
1087 |
-
}
|
1088 |
-
return $order_statuses_no_prefix;
|
1089 |
-
}
|
1090 |
-
return $order_statuses;
|
1091 |
-
}
|
1092 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/functions/wcj-general-functions.php
ADDED
@@ -0,0 +1,404 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Booster for WooCommerce - Functions
|
4 |
+
*
|
5 |
+
* @version 2.9.0
|
6 |
+
* @author Algoritmika Ltd.
|
7 |
+
*/
|
8 |
+
|
9 |
+
if ( ! defined( 'ABSPATH' ) ) exit;
|
10 |
+
|
11 |
+
if ( ! function_exists( 'wcj_is_module_deprecated' ) ) {
|
12 |
+
/**
|
13 |
+
* wcj_is_module_deprecated.
|
14 |
+
*
|
15 |
+
* @version 2.9.0
|
16 |
+
* @since 2.9.0
|
17 |
+
* @return array|false
|
18 |
+
*/
|
19 |
+
function wcj_is_module_deprecated( $module_id, $by_module_option = false, $check_for_disabled = false ) {
|
20 |
+
if ( $check_for_disabled ) {
|
21 |
+
$module_option = ( $by_module_option ? $module_id : 'wcj_' . $module_id . '_enabled' );
|
22 |
+
if ( 'yes' === get_option( $module_option, 'no' ) ) {
|
23 |
+
return false;
|
24 |
+
}
|
25 |
+
}
|
26 |
+
if ( $by_module_option ) {
|
27 |
+
$module_id = str_replace( array( 'wcj_', '_enabled' ), '', $module_id );
|
28 |
+
}
|
29 |
+
$deprecated_and_replacement_modules = array(
|
30 |
+
'product_info' => array(
|
31 |
+
'cat' => 'products',
|
32 |
+
'module' => 'product_custom_info',
|
33 |
+
'title' => __( 'Product Info', 'woocommerce-jetpack' ),
|
34 |
+
),
|
35 |
+
);
|
36 |
+
if ( ! array_key_exists( $module_id, $deprecated_and_replacement_modules ) ) {
|
37 |
+
return false;
|
38 |
+
} else {
|
39 |
+
return ( isset( $deprecated_and_replacement_modules[ $module_id ] ) ? $deprecated_and_replacement_modules[ $module_id ] : array() );
|
40 |
+
}
|
41 |
+
}
|
42 |
+
}
|
43 |
+
|
44 |
+
if ( ! function_exists( 'wcj_customer_get_country' ) ) {
|
45 |
+
/**
|
46 |
+
* wcj_customer_get_country.
|
47 |
+
*
|
48 |
+
* @version 2.8.0
|
49 |
+
* @since 2.8.0
|
50 |
+
*/
|
51 |
+
function wcj_customer_get_country() {
|
52 |
+
return ( WCJ_IS_WC_VERSION_BELOW_3 ? WC()->customer->get_country() : WC()->customer->get_billing_country() );
|
53 |
+
}
|
54 |
+
}
|
55 |
+
|
56 |
+
if ( ! function_exists( 'wcj_is_bot' ) ) {
|
57 |
+
/**
|
58 |
+
* wcj_is_bot.
|
59 |
+
*
|
60 |
+
* @version 2.5.7
|
61 |
+
* @since 2.5.6
|
62 |
+
*/
|
63 |
+
function wcj_is_bot() {
|
64 |
+
return ( isset( $_SERVER['HTTP_USER_AGENT'] ) && preg_match( '/Google-Structured-Data-Testing-Tool|bot|crawl|slurp|spider/i', $_SERVER['HTTP_USER_AGENT'] ) ) ? true : false;
|
65 |
+
}
|
66 |
+
}
|
67 |
+
|
68 |
+
if ( ! function_exists( 'wcj_add_files_upload_form_to_checkout_frontend' ) ) {
|
69 |
+
/**
|
70 |
+
* wcj_add_files_upload_form_to_checkout_frontend.
|
71 |
+
*
|
72 |
+
* @version 2.5.2
|
73 |
+
* @since 2.5.2
|
74 |
+
*/
|
75 |
+
function wcj_add_files_upload_form_to_checkout_frontend() {
|
76 |
+
WCJ()->modules['checkout_files_upload']->add_files_upload_form_to_checkout_frontend_all( true );
|
77 |
+
}
|
78 |
+
}
|
79 |
+
|
80 |
+
if ( ! function_exists( 'wcj_variation_radio_button' ) ) {
|
81 |
+
/**
|
82 |
+
* wcj_variation_radio_button.
|
83 |
+
*
|
84 |
+
* @version 2.5.0
|
85 |
+
* @since 2.4.8
|
86 |
+
*/
|
87 |
+
function wcj_variation_radio_button( $_product, $variation ) {
|
88 |
+
$attributes_html = '';
|
89 |
+
$variation_attributes_display_values = array();
|
90 |
+
$is_checked = true;
|
91 |
+
foreach ( $variation['attributes'] as $attribute_full_name => $attribute_value ) {
|
92 |
+
|
93 |
+
$attributes_html .= ' ' . $attribute_full_name . '="' . $attribute_value . '"';
|
94 |
+
|
95 |
+
$attribute_name = $attribute_full_name;
|
96 |
+
$prefix = 'attribute_';
|
97 |
+
if ( substr( $attribute_full_name, 0, strlen( $prefix ) ) === $prefix ) {
|
98 |
+
$attribute_name = substr( $attribute_full_name, strlen( $prefix ) );
|
99 |
+
}
|
100 |
+
|
101 |
+
$checked = isset( $_REQUEST[ 'attribute_' . sanitize_title( $attribute_name ) ] ) ? wc_clean( $_REQUEST[ 'attribute_' . sanitize_title( $attribute_name ) ] ) : $_product->get_variation_default_attribute( $attribute_name );
|
102 |
+
if ( $checked != $attribute_value ) $is_checked = false;
|
103 |
+
|
104 |
+
$terms = get_terms( $attribute_name );
|
105 |
+
foreach ( $terms as $term ) {
|
106 |
+
if ( is_object( $term ) && isset( $term->slug ) && $term->slug === $attribute_value && isset( $term->name ) ) {
|
107 |
+
$attribute_value = $term->name;
|
108 |
+
}
|
109 |
+
}
|
110 |
+
|
111 |
+
$variation_attributes_display_values[] = $attribute_value;
|
112 |
+
|
113 |
+
}
|
114 |
+
$variation_title = implode( ', ', $variation_attributes_display_values ) . ' (' . wc_price( $variation['display_price'] ) . ')';
|
115 |
+
$variation_id = $variation['variation_id'];
|
116 |
+
$is_checked = checked( $is_checked, true, false );
|
117 |
+
|
118 |
+
echo '<td style="width:10%;">';
|
119 |
+
echo '<input id="wcj_variation_' . $variation_id . '" name="wcj_variations" type="radio"' . $attributes_html . ' variation_id="' . $variation_id . '"' . $is_checked . '>';
|
120 |
+
echo '</td>';
|
121 |
+
echo '<td>';
|
122 |
+
echo '<label for="wcj_variation_' . $variation_id . '">';
|
123 |
+
echo $variation_title;
|
124 |
+
if ( '' != ( $variation_description = get_post_meta( $variation_id, '_variation_description', true ) ) ) {
|
125 |
+
echo '<br>';
|
126 |
+
// echo '<small>' . $variation['variation_description'] . '</small>';
|
127 |
+
echo '<small>' . $variation_description . '</small>';
|
128 |
+
}
|
129 |
+
echo '</label>';
|
130 |
+
echo '</td>';
|
131 |
+
}
|
132 |
+
}
|
133 |
+
|
134 |
+
if ( ! function_exists( 'wcj_current_filter_priority' ) ) {
|
135 |
+
/*
|
136 |
+
* wcj_current_filter_priority.
|
137 |
+
*
|
138 |
+
* @version 2.5.8
|
139 |
+
* @since 2.4.6
|
140 |
+
*/
|
141 |
+
function wcj_current_filter_priority() {
|
142 |
+
global $wp_filter;
|
143 |
+
$current_filter_data = $wp_filter[ current_filter() ];
|
144 |
+
if ( class_exists( 'WP_Hook' ) && is_a( $current_filter_data, 'WP_Hook' ) ) {
|
145 |
+
// since WordPress v4.7
|
146 |
+
return $current_filter_data->current_priority();
|
147 |
+
} else {
|
148 |
+
// before WordPress v4.7
|
149 |
+
return key( $current_filter_data );
|
150 |
+
}
|
151 |
+
}
|
152 |
+
}
|
153 |
+
|
154 |
+
if ( ! function_exists( 'wcj_maybe_unserialize_and_implode' ) ) {
|
155 |
+
/*
|
156 |
+
* wcj_maybe_unserialize_and_implode.
|
157 |
+
*
|
158 |
+
* @version 2.8.0
|
159 |
+
* @since 2.8.0
|
160 |
+
* @return string
|
161 |
+
* @todo `if ( ! is_array() )`
|
162 |
+
*/
|
163 |
+
function wcj_maybe_unserialize_and_implode( $value, $glue = ' ' ) {
|
164 |
+
if ( is_serialized( $value ) ) {
|
165 |
+
$value = unserialize( $value );
|
166 |
+
if ( is_array( $value ) ) {
|
167 |
+
$value = implode( $glue, $value );
|
168 |
+
}
|
169 |
+
}
|
170 |
+
return $value;
|
171 |
+
}
|
172 |
+
}
|
173 |
+
|
174 |
+
if ( ! function_exists( 'wcj_get_left_to_free_shipping' ) ) {
|
175 |
+
/*
|
176 |
+
* wcj_get_left_to_free_shipping.
|
177 |
+
*
|
178 |
+
* @version 2.5.8
|
179 |
+
* @since 2.4.4
|
180 |
+
* @return string
|
181 |
+
*/
|
182 |
+
function wcj_get_left_to_free_shipping( $content, $multiply_by = 1 ) {
|
183 |
+
if ( '' == $content ) {
|
184 |
+
$content = __( '%left_to_free% left to free shipping', 'woocommerce-jetpack' );
|
185 |
+
}
|
186 |
+
$min_free_shipping_amount = 0;
|
187 |
+
$current_wc_version = get_option( 'woocommerce_version', null );
|
188 |
+
if ( version_compare( $current_wc_version, '2.6.0', '<' ) ) {
|
189 |
+
$free_shipping = new WC_Shipping_Free_Shipping();
|
190 |
+
if ( in_array( $free_shipping->requires, array( 'min_amount', 'either', 'both' ) ) ) {
|
191 |
+
$min_free_shipping_amount = $free_shipping->min_amount;
|
192 |
+
}
|
193 |
+
} else {
|
194 |
+
$legacy_free_shipping = new WC_Shipping_Legacy_Free_Shipping();
|
195 |
+
if ( 'yes' === $legacy_free_shipping->enabled ) {
|
196 |
+
if ( in_array( $legacy_free_shipping->requires, array( 'min_amount', 'either', 'both' ) ) ) {
|
197 |
+
$min_free_shipping_amount = $legacy_free_shipping->min_amount;
|
198 |
+
}
|
199 |
+
}
|
200 |
+
if ( 0 == $min_free_shipping_amount ) {
|
201 |
+
if ( function_exists( 'WC' ) && ( $wc_shipping = WC()->shipping ) && ( $wc_cart = WC()->cart ) ) {
|
202 |
+
if ( $wc_shipping->enabled ) {
|
203 |
+
if ( $packages = $wc_cart->get_shipping_packages() ) {
|
204 |
+
$shipping_methods = $wc_shipping->load_shipping_methods( $packages[0] );
|
205 |
+
foreach ( $shipping_methods as $shipping_method ) {
|
206 |
+
if ( 'yes' === $shipping_method->enabled && 0 != $shipping_method->instance_id ) {
|
207 |
+
if ( 'WC_Shipping_Free_Shipping' === get_class( $shipping_method ) ) {
|
208 |
+
if ( in_array( $shipping_method->requires, array( 'min_amount', 'either', 'both' ) ) ) {
|
209 |
+
$min_free_shipping_amount = $shipping_method->min_amount;
|
210 |
+
break;
|
211 |
+
}
|
212 |
+
}
|
213 |
+
}
|
214 |
+
}
|
215 |
+
}
|
216 |
+
}
|
217 |
+
}
|
218 |
+
}
|
219 |
+
}
|
220 |
+
if ( 0 != $min_free_shipping_amount ) {
|
221 |
+
if ( isset( WC()->cart->cart_contents_total ) ) {
|
222 |
+
$total = ( WC()->cart->prices_include_tax ) ? WC()->cart->cart_contents_total + array_sum( WC()->cart->taxes ) : WC()->cart->cart_contents_total;
|
223 |
+
if ( $total >= $min_free_shipping_amount ) {
|
224 |
+
return do_shortcode( get_option( 'wcj_shipping_left_to_free_info_content_reached', __( 'You have Free delivery', 'woocommerce-jetpack' ) ) );
|
225 |
+
} else {
|
226 |
+
$content = str_replace( '%left_to_free%', wc_price( ( $min_free_shipping_amount - $total ) * $multiply_by ), $content );
|
227 |
+
$content = str_replace( '%free_shipping_min_amount%', wc_price( ( $min_free_shipping_amount ) * $multiply_by ), $content );
|
228 |
+
return $content;
|
229 |
+
}
|
230 |
+
}
|
231 |
+
}
|
232 |
+
}
|
233 |
+
}
|
234 |
+
|
235 |
+
if ( ! function_exists( 'wcj_get_cart_filters' ) ) {
|
236 |
+
/*
|
237 |
+
* wcj_get_cart_filters()
|
238 |
+
*
|
239 |
+
* @version 2.4.4
|
240 |
+
* @since 2.4.4
|
241 |
+
* @return array
|
242 |
+
*/
|
243 |
+
function wcj_get_cart_filters() {
|
244 |
+
return array(
|
245 |
+
'woocommerce_before_cart' => __( 'Before cart', 'woocommerce-jetpack' ),
|
246 |
+
'woocommerce_before_cart_table' => __( 'Before cart table', 'woocommerce-jetpack' ),
|
247 |
+
'woocommerce_before_cart_contents' => __( 'Before cart contents', 'woocommerce-jetpack' ),
|
248 |
+
'woocommerce_cart_contents' => __( 'Cart contents', 'woocommerce-jetpack' ),
|
249 |
+
'woocommerce_cart_coupon' => __( 'Cart coupon', 'woocommerce-jetpack' ),
|
250 |
+
'woocommerce_cart_actions' => __( 'Cart actions', 'woocommerce-jetpack' ),
|
251 |
+
'woocommerce_after_cart_contents' => __( 'After cart contents', 'woocommerce-jetpack' ),
|
252 |
+
'woocommerce_after_cart_table' => __( 'After cart table', 'woocommerce-jetpack' ),
|
253 |
+
'woocommerce_cart_collaterals' => __( 'Cart collaterals', 'woocommerce-jetpack' ),
|
254 |
+
'woocommerce_after_cart' => __( 'After cart', 'woocommerce-jetpack' ),
|
255 |
+
|
256 |
+
'woocommerce_before_cart_totals' => __( 'Before cart totals', 'woocommerce-jetpack' ),
|
257 |
+
'woocommerce_cart_totals_before_shipping' => __( 'Cart totals: Before shipping', 'woocommerce-jetpack' ),
|
258 |
+
'woocommerce_cart_totals_after_shipping' => __( 'Cart totals: After shipping', 'woocommerce-jetpack' ),
|
259 |
+
'woocommerce_cart_totals_before_order_total' => __( 'Cart totals: Before order total', 'woocommerce-jetpack' ),
|
260 |
+
'woocommerce_cart_totals_after_order_total' => __( 'Cart totals: After order total', 'woocommerce-jetpack' ),
|
261 |
+
'woocommerce_proceed_to_checkout' => __( 'Proceed to checkout', 'woocommerce-jetpack' ),
|
262 |
+
'woocommerce_after_cart_totals' => __( 'After cart totals', 'woocommerce-jetpack' ),
|
263 |
+
|
264 |
+
'woocommerce_before_shipping_calculator' => __( 'Before shipping calculator', 'woocommerce-jetpack' ),
|
265 |
+
'woocommerce_after_shipping_calculator' => __( 'After shipping calculator', 'woocommerce-jetpack' ),
|
266 |
+
|
267 |
+
'woocommerce_cart_is_empty' => __( 'If cart is empty', 'woocommerce-jetpack' ),
|
268 |
+
);
|
269 |
+
}
|
270 |
+
}
|
271 |
+
|
272 |
+
if ( ! function_exists( 'wcj_get_rates_for_tax_class' ) ) {
|
273 |
+
/* Used by admin settings page.
|
274 |
+
*
|
275 |
+
* @param string $tax_class
|
276 |
+
*
|
277 |
+
* @return array|null|object
|
278 |
+
*
|
279 |
+
* @version 2.3.10
|
280 |
+
* @since 2.3.10
|
281 |
+
*/
|
282 |
+
function wcj_get_rates_for_tax_class( $tax_class ) {
|
283 |
+
global $wpdb;
|
284 |
+
|
285 |
+
// Get all the rates and locations. Snagging all at once should significantly cut down on the number of queries.
|
286 |
+
$rates = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM `{$wpdb->prefix}woocommerce_tax_rates` WHERE `tax_rate_class` = %s ORDER BY `tax_rate_order`;", sanitize_title( $tax_class ) ) );
|
287 |
+
$locations = $wpdb->get_results( "SELECT * FROM `{$wpdb->prefix}woocommerce_tax_rate_locations`" );
|
288 |
+
|
289 |
+
// Set the rates keys equal to their ids.
|
290 |
+
$rates = array_combine( wp_list_pluck( $rates, 'tax_rate_id' ), $rates );
|
291 |
+
|
292 |
+
// Drop the locations into the rates array.
|
293 |
+
foreach ( $locations as $location ) {
|
294 |
+
// Don't set them for unexistent rates.
|
295 |
+
if ( ! isset( $rates[ $location->tax_rate_id ] ) ) {
|
296 |
+
continue;
|
297 |
+
}
|
298 |
+
// If the rate exists, initialize the array before appending to it.
|
299 |
+
if ( ! isset( $rates[ $location->tax_rate_id ]->{$location->location_type} ) ) {
|
300 |
+
$rates[ $location->tax_rate_id ]->{$location->location_type} = array();
|
301 |
+
}
|
302 |
+
$rates[ $location->tax_rate_id ]->{$location->location_type}[] = $location->location_code;
|
303 |
+
}
|
304 |
+
|
305 |
+
return $rates;
|
306 |
+
}
|
307 |
+
}
|
308 |
+
|
309 |
+
if ( ! function_exists( 'wcj_get_select_options' ) ) {
|
310 |
+
/*
|
311 |
+
* wcj_get_select_options()
|
312 |
+
*
|
313 |
+
* @version 2.5.5
|
314 |
+
* @since 2.3.0
|
315 |
+
* @return array
|
316 |
+
*/
|
317 |
+
function wcj_get_select_options( $select_options_raw, $do_sanitize = true ) {
|
318 |
+
$select_options_raw = explode( PHP_EOL, $select_options_raw );
|
319 |
+
$select_options = array();
|
320 |
+
foreach ( $select_options_raw as $select_options_title ) {
|
321 |
+
$select_options_key = ( $do_sanitize ) ? sanitize_title( $select_options_title ) : $select_options_title;
|
322 |
+
$select_options[ $select_options_key ] = $select_options_title;
|
323 |
+
}
|
324 |
+
return $select_options;
|
325 |
+
}
|
326 |
+
}
|
327 |
+
|
328 |
+
if ( ! function_exists( 'wcj_is_frontend' ) ) {
|
329 |
+
/*
|
330 |
+
* is_frontend()
|
331 |
+
*
|
332 |
+
* @since 2.2.6
|
333 |
+
* @return boolean
|
334 |
+
*/
|
335 |
+
function wcj_is_frontend() {
|
336 |
+
return ( ! is_admin() || ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) ? true : false;
|
337 |
+
}
|
338 |
+
}
|
339 |
+
|
340 |
+
if ( ! function_exists( 'wcj_get_wcj_uploads_dir' ) ) {
|
341 |
+
/**
|
342 |
+
* wcj_get_wcj_uploads_dir.
|
343 |
+
*
|
344 |
+
* @version 2.9.0
|
345 |
+
* @todo no need to `mkdir` after `wcj_get_wcj_uploads_dir`
|
346 |
+
*/
|
347 |
+
function wcj_get_wcj_uploads_dir( $subdir = '' ) {
|
348 |
+
$upload_dir = wp_upload_dir();
|
349 |
+
$upload_dir = $upload_dir['basedir'];
|
350 |
+
$upload_dir = $upload_dir . '/woocommerce_uploads';
|
351 |
+
if ( ! file_exists( $upload_dir ) ) {
|
352 |
+
mkdir( $upload_dir, 0755, true );
|
353 |
+
}
|
354 |
+
$upload_dir = $upload_dir . '/wcj_uploads';
|
355 |
+
if ( ! file_exists( $upload_dir ) ) {
|
356 |
+
mkdir( $upload_dir, 0755, true );
|
357 |
+
}
|
358 |
+
if ( '' != $subdir ) {
|
359 |
+
$upload_dir = $upload_dir . '/' . $subdir;
|
360 |
+
if ( ! file_exists( $upload_dir ) ) {
|
361 |
+
mkdir( $upload_dir, 0755, true );
|
362 |
+
}
|
363 |
+
}
|
364 |
+
return $upload_dir;
|
365 |
+
}
|
366 |
+
}
|
367 |
+
|
368 |
+
if ( ! function_exists( 'wcj_hex2rgb' ) ) {
|
369 |
+
/**
|
370 |
+
* wcj_hex2rgb.
|
371 |
+
*/
|
372 |
+
function wcj_hex2rgb( $hex ) {
|
373 |
+
return sscanf( $hex, "#%2x%2x%2x" );
|
374 |
+
}
|
375 |
+
}
|
376 |
+
|
377 |
+
if ( ! function_exists( 'wcj_get_the_ip' ) ) {
|
378 |
+
/**
|
379 |
+
* wcj_get_the_ip.
|
380 |
+
*
|
381 |
+
* @see http://stackoverflow.com/questions/3003145/how-to-get-the-client-ip-address-in-php
|
382 |
+
*/
|
383 |
+
function wcj_get_the_ip( ) {
|
384 |
+
$ip = null;
|
385 |
+
if ( ! empty( $_SERVER['HTTP_CLIENT_IP'] ) ) {
|
386 |
+
$ip = $_SERVER['HTTP_CLIENT_IP'];
|
387 |
+
} elseif ( ! empty( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) {
|
388 |
+
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
|
389 |
+
} else {
|
390 |
+
$ip = $_SERVER['REMOTE_ADDR'];
|
391 |
+
}
|
392 |
+
return $ip;
|
393 |
+
}
|
394 |
+
}
|
395 |
+
|
396 |
+
if ( ! function_exists( 'wcj_get_shortcodes_list' ) ) {
|
397 |
+
/**
|
398 |
+
* wcj_get_shortcodes_list.
|
399 |
+
*/
|
400 |
+
function wcj_get_shortcodes_list() {
|
401 |
+
$the_array = apply_filters( 'wcj_shortcodes_list', array() );
|
402 |
+
return implode( ', ', $the_array )/* . ' (' . count( $the_array ) . ')' */;
|
403 |
+
}
|
404 |
+
}
|
includes/functions/wcj-invoicing-functions.php
CHANGED
@@ -2,10 +2,200 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Functions - Invoicing
|
4 |
*
|
5 |
-
* @version 2.
|
6 |
* @author Algoritmika Ltd.
|
7 |
*/
|
8 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
if ( ! function_exists( 'wcj_get_invoice_types' ) ) {
|
10 |
/*
|
11 |
* wcj_get_invoice_types.
|
@@ -123,11 +313,17 @@ if ( ! function_exists( 'wcj_get_invoice' ) ) {
|
|
123 |
if ( ! function_exists( 'wcj_get_invoice_date' ) ) {
|
124 |
/*
|
125 |
* wcj_get_invoice_date.
|
|
|
|
|
126 |
*/
|
127 |
function wcj_get_invoice_date( $order_id, $invoice_type_id, $extra_days, $date_format ) {
|
128 |
$the_invoice = wcj_get_invoice( $order_id, $invoice_type_id );
|
129 |
-
$
|
130 |
-
|
|
|
|
|
|
|
|
|
131 |
}
|
132 |
}
|
133 |
|
2 |
/**
|
3 |
* Booster for WooCommerce - Functions - Invoicing
|
4 |
*
|
5 |
+
* @version 2.9.0
|
6 |
* @author Algoritmika Ltd.
|
7 |
*/
|
8 |
|
9 |
+
if ( ! function_exists( 'wcj_get_fonts_list' ) ) {
|
10 |
+
/**
|
11 |
+
* wcj_get_fonts_list.
|
12 |
+
*
|
13 |
+
* @version 2.9.0
|
14 |
+
* @since 2.9.0
|
15 |
+
*/
|
16 |
+
function wcj_get_fonts_list() {
|
17 |
+
return array(
|
18 |
+
'angsanaupc.ctg.z',
|
19 |
+
'angsanaupc.php',
|
20 |
+
'angsanaupc.z',
|
21 |
+
'angsanaupcb.ctg.z',
|
22 |
+
'angsanaupcb.php',
|
23 |
+
'angsanaupcb.z',
|
24 |
+
'angsanaupcbi.ctg.z',
|
25 |
+
'angsanaupcbi.php',
|
26 |
+
'angsanaupcbi.z',
|
27 |
+
'angsanaupci.ctg.z',
|
28 |
+
'angsanaupci.php',
|
29 |
+
'angsanaupci.z',
|
30 |
+
'cid0ct.php',
|
31 |
+
'cordiaupc.ctg.z',
|
32 |
+
'cordiaupc.php',
|
33 |
+
'cordiaupc.z',
|
34 |
+
'cordiaupcb.ctg.z',
|
35 |
+
'cordiaupcb.php',
|
36 |
+
'cordiaupcb.z',
|
37 |
+
'cordiaupcbi.ctg.z',
|
38 |
+
'cordiaupcbi.php',
|
39 |
+
'cordiaupcbi.z',
|
40 |
+
'cordiaupci.ctg.z',
|
41 |
+
'cordiaupci.php',
|
42 |
+
'cordiaupci.z',
|
43 |
+
'courier.php',
|
44 |
+
'courierb.php',
|
45 |
+
'courierbi.php',
|
46 |
+
'courieri.php',
|
47 |
+
'dejavusans.ctg.z',
|
48 |
+
'dejavusans.php',
|
49 |
+
'dejavusans.z',
|
50 |
+
'dejavusansb.ctg.z',
|
51 |
+
'dejavusansb.php',
|
52 |
+
'dejavusansb.z',
|
53 |
+
'dejavusansbi.ctg.z',
|
54 |
+
'dejavusansbi.php',
|
55 |
+
'dejavusansbi.z',
|
56 |
+
'droidsansfallback.ctg.z',
|
57 |
+
'droidsansfallback.php',
|
58 |
+
'droidsansfallback.z',
|
59 |
+
'helvetica.php',
|
60 |
+
'helveticab.php',
|
61 |
+
'helveticabi.php',
|
62 |
+
'helveticai.php',
|
63 |
+
'stsongstdlight.php',
|
64 |
+
'symbol.php',
|
65 |
+
'thsarabun.ctg.z',
|
66 |
+
'thsarabun.php',
|
67 |
+
'thsarabun.z',
|
68 |
+
'thsarabunb.ctg.z',
|
69 |
+
'thsarabunb.php',
|
70 |
+
'thsarabunb.z',
|
71 |
+
'thsarabunbi.ctg.z',
|
72 |
+
'thsarabunbi.php',
|
73 |
+
'thsarabunbi.z',
|
74 |
+
'thsarabuni.ctg.z',
|
75 |
+
'thsarabuni.php',
|
76 |
+
'thsarabuni.z',
|
77 |
+
'times.php',
|
78 |
+
'timesb.php',
|
79 |
+
'timesbi.php',
|
80 |
+
'timesi.php',
|
81 |
+
'uni2cid_aj16.php',
|
82 |
+
'zapfdingbats.php',
|
83 |
+
);
|
84 |
+
}
|
85 |
+
}
|
86 |
+
|
87 |
+
if ( ! function_exists( 'wcj_get_tcpdf_font' ) ) {
|
88 |
+
/**
|
89 |
+
* wcj_get_tcpdf_font.
|
90 |
+
*
|
91 |
+
* @version 2.9.0
|
92 |
+
* @since 2.9.0
|
93 |
+
*/
|
94 |
+
function wcj_get_tcpdf_font( $invoice_type ) {
|
95 |
+
return ( wcj_check_tcpdf_fonts_version( true ) ?
|
96 |
+
get_option( 'wcj_invoicing_' . $invoice_type . '_general_font_family', 'helvetica' ) :
|
97 |
+
get_option( 'wcj_invoicing_' . $invoice_type . '_general_font_family_fallback', 'helvetica' )
|
98 |
+
);
|
99 |
+
}
|
100 |
+
}
|
101 |
+
|
102 |
+
if ( ! function_exists( 'wcj_get_tcpdf_fonts_version' ) ) {
|
103 |
+
/**
|
104 |
+
* wcj_get_tcpdf_fonts_version.
|
105 |
+
*
|
106 |
+
* @version 2.9.0
|
107 |
+
* @since 2.9.0
|
108 |
+
*/
|
109 |
+
function wcj_get_tcpdf_fonts_version() {
|
110 |
+
return '2.9.0';
|
111 |
+
}
|
112 |
+
}
|
113 |
+
|
114 |
+
if ( ! function_exists( 'wcj_check_tcpdf_fonts_version' ) ) {
|
115 |
+
/**
|
116 |
+
* wcj_check_tcpdf_fonts_version.
|
117 |
+
*
|
118 |
+
* @version 2.9.0
|
119 |
+
* @since 2.9.0
|
120 |
+
*/
|
121 |
+
function wcj_check_tcpdf_fonts_version( $force_file_check = false ) {
|
122 |
+
if ( 'yes' === get_option( 'wcj_invoicing_fonts_manager_do_not_download', 'no' ) ) {
|
123 |
+
return false;
|
124 |
+
}
|
125 |
+
$result = ( 0 == version_compare( get_option( 'wcj_invoicing_fonts_version', null ), wcj_get_tcpdf_fonts_version() ) );
|
126 |
+
if ( $result && $force_file_check ) {
|
127 |
+
$tcpdf_fonts_dir = wcj_get_wcj_uploads_dir( 'tcpdf_fonts' ) . '/';
|
128 |
+
$tcpdf_fonts_dir_files = scandir( $tcpdf_fonts_dir );
|
129 |
+
$tcpdf_fonts_files = wcj_get_fonts_list();
|
130 |
+
foreach ( $tcpdf_fonts_files as $tcpdf_fonts_file ) {
|
131 |
+
if ( ! in_array( $tcpdf_fonts_file, $tcpdf_fonts_dir_files ) ) {
|
132 |
+
return false;
|
133 |
+
}
|
134 |
+
}
|
135 |
+
}
|
136 |
+
return $result;
|
137 |
+
}
|
138 |
+
}
|
139 |
+
|
140 |
+
if ( ! function_exists( 'wcj_check_and_maybe_download_tcpdf_fonts' ) ) {
|
141 |
+
/**
|
142 |
+
* wcj_check_and_maybe_download_tcpdf_fonts.
|
143 |
+
*
|
144 |
+
* @version 2.9.0
|
145 |
+
* @since 2.9.0
|
146 |
+
* @todo (maybe) check file size > 0 or even for exact size (not only if file exists in directory)
|
147 |
+
* @todo (maybe) use `download_url()` instead of `file_get_contents()` or `curl` (in all Booster files)
|
148 |
+
*/
|
149 |
+
function wcj_check_and_maybe_download_tcpdf_fonts( $force_download = false ) {
|
150 |
+
if ( 'yes' === get_option( 'wcj_invoicing_fonts_manager_do_not_download', 'no' ) ) {
|
151 |
+
return false;
|
152 |
+
}
|
153 |
+
if ( ! $force_download ) {
|
154 |
+
if ( wcj_check_tcpdf_fonts_version( true ) ) {
|
155 |
+
return true;
|
156 |
+
}
|
157 |
+
if ( ( (int) current_time( 'timestamp' ) - get_option( 'wcj_invoicing_fonts_version_timestamp', null ) ) < 60 * 60 ) {
|
158 |
+
return false;
|
159 |
+
}
|
160 |
+
}
|
161 |
+
update_option( 'wcj_invoicing_fonts_version_timestamp', (int) current_time( 'timestamp' ) );
|
162 |
+
$tcpdf_fonts_dir = wcj_get_wcj_uploads_dir( 'tcpdf_fonts' ) . '/';
|
163 |
+
if ( ! file_exists( $tcpdf_fonts_dir ) ) {
|
164 |
+
mkdir( $tcpdf_fonts_dir );
|
165 |
+
}
|
166 |
+
$tcpdf_fonts_dir_files = scandir( $tcpdf_fonts_dir );
|
167 |
+
$tcpdf_fonts_files = wcj_get_fonts_list();
|
168 |
+
require_once( ABSPATH . 'wp-admin/includes/file.php' );
|
169 |
+
foreach ( $tcpdf_fonts_files as $tcpdf_fonts_file ) {
|
170 |
+
if ( ! in_array( $tcpdf_fonts_file, $tcpdf_fonts_dir_files ) ) {
|
171 |
+
$url = 'http://storage.algoritmika.com/booster/tcpdf_fonts/' . $tcpdf_fonts_file;
|
172 |
+
if ( '.php' === substr( $tcpdf_fonts_file, -4 ) ) {
|
173 |
+
$url .= '.data';
|
174 |
+
}
|
175 |
+
$response_file_name = download_url( $url );
|
176 |
+
if ( ! is_wp_error( $response_file_name ) ) {
|
177 |
+
if ( $response = file_get_contents( $response_file_name ) ) {
|
178 |
+
if ( ! file_put_contents( $tcpdf_fonts_dir . $tcpdf_fonts_file, $response ) ) {
|
179 |
+
return false;
|
180 |
+
}
|
181 |
+
} else {
|
182 |
+
return false;
|
183 |
+
}
|
184 |
+
unlink( $response_file_name );
|
185 |
+
} else {
|
186 |
+
return false;
|
187 |
+
}
|
188 |
+
}
|
189 |
+
}
|
190 |
+
if (
|
191 |
+
update_option( 'wcj_invoicing_fonts_version', wcj_get_tcpdf_fonts_version() ) &&
|
192 |
+
update_option( 'wcj_invoicing_fonts_version_timestamp', (int) current_time( 'timestamp' ) )
|
193 |
+
) {
|
194 |
+
return true;
|
195 |
+
}
|
196 |
+
}
|
197 |
+
}
|
198 |
+
|
199 |
if ( ! function_exists( 'wcj_get_invoice_types' ) ) {
|
200 |
/*
|
201 |
* wcj_get_invoice_types.
|
313 |
if ( ! function_exists( 'wcj_get_invoice_date' ) ) {
|
314 |
/*
|
315 |
* wcj_get_invoice_date.
|
316 |
+
*
|
317 |
+
* @version 2.9.0
|
318 |
*/
|
319 |
function wcj_get_invoice_date( $order_id, $invoice_type_id, $extra_days, $date_format ) {
|
320 |
$the_invoice = wcj_get_invoice( $order_id, $invoice_type_id );
|
321 |
+
if ( $invoice_date_timestamp = $the_invoice->get_invoice_date() ) {
|
322 |
+
$extra_days_in_sec = $extra_days * 24 * 60 * 60;
|
323 |
+
return date_i18n( $date_format, $invoice_date_timestamp + $extra_days_in_sec );
|
324 |
+
} else {
|
325 |
+
return '';
|
326 |
+
}
|
327 |
}
|
328 |
}
|
329 |
|
includes/functions/wcj-order-functions.php
ADDED
@@ -0,0 +1,168 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Booster for WooCommerce - Functions - Order
|
4 |
+
*
|
5 |
+
* @version 2.9.0
|
6 |
+
* @since 2.9.0
|
7 |
+
* @author Algoritmika Ltd.
|
8 |
+
*/
|
9 |
+
|
10 |
+
if ( ! defined( 'ABSPATH' ) ) exit;
|
11 |
+
|
12 |
+
if ( ! function_exists( 'wcj_get_order_id' ) ) {
|
13 |
+
/**
|
14 |
+
* wcj_get_order_id.
|
15 |
+
*
|
16 |
+
* @version 2.7.0
|
17 |
+
* @since 2.7.0
|
18 |
+
*/
|
19 |
+
function wcj_get_order_id( $_order ) {
|
20 |
+
return ( WCJ_IS_WC_VERSION_BELOW_3 ) ? $_order->id : $_order->get_id();
|
21 |
+
}
|
22 |
+
}
|
23 |
+
|
24 |
+
if ( ! function_exists( 'wcj_get_order_currency' ) ) {
|
25 |
+
/**
|
26 |
+
* wcj_get_order_currency.
|
27 |
+
*
|
28 |
+
* @version 2.7.0
|
29 |
+
* @since 2.7.0
|
30 |
+
*/
|
31 |
+
function wcj_get_order_currency( $_order ) {
|
32 |
+
return ( WCJ_IS_WC_VERSION_BELOW_3 ? $_order->get_order_currency() : $_order->get_currency() );
|
33 |
+
}
|
34 |
+
}
|
35 |
+
|
36 |
+
if ( ! function_exists( 'wcj_get_order_item_meta_info' ) ) {
|
37 |
+
/**
|
38 |
+
* wcj_get_order_item_meta_info.
|
39 |
+
*
|
40 |
+
* from woocommerce\includes\admin\meta-boxes\views\html-order-item-meta.php
|
41 |
+
*
|
42 |
+
* @version 2.8.0
|
43 |
+
* @since 2.5.9
|
44 |
+
*/
|
45 |
+
function wcj_get_order_item_meta_info( $item_id, $item, $_order, $exclude_wcj_meta = false, $_product = null ) {
|
46 |
+
$meta_info = '';
|
47 |
+
$metadata = ( WCJ_IS_WC_VERSION_BELOW_3 ? $_order->has_meta( $item_id ) : $item->get_meta_data() );
|
48 |
+
if ( $metadata ) {
|
49 |
+
$meta_info = array();
|
50 |
+
foreach ( $metadata as $meta ) {
|
51 |
+
|
52 |
+
$_meta_key = ( WCJ_IS_WC_VERSION_BELOW_3 ? $meta['meta_key'] : $meta->key );
|
53 |
+
$_meta_value = ( WCJ_IS_WC_VERSION_BELOW_3 ? $meta['meta_value'] : $meta->value );
|
54 |
+
|
55 |
+
// Skip hidden core fields
|
56 |
+
if ( in_array( $_meta_key, apply_filters( 'woocommerce_hidden_order_itemmeta', array(
|
57 |
+
'_qty',
|
58 |
+
'_tax_class',
|
59 |
+
'_product_id',
|
60 |
+
'_variation_id',
|
61 |
+
'_line_subtotal',
|
62 |
+
'_line_subtotal_tax',
|
63 |
+
'_line_total',
|
64 |
+
'_line_tax',
|
65 |
+
'method_id',
|
66 |
+
'cost'
|
67 |
+
) ) ) ) {
|
68 |
+
continue;
|
69 |
+
}
|
70 |
+
|
71 |
+
if ( $exclude_wcj_meta && ( 'wcj' === substr( $_meta_key, 0, 3 ) || '_wcj' === substr( $_meta_key, 0, 4 ) ) ) {
|
72 |
+
continue;
|
73 |
+
}
|
74 |
+
|
75 |
+
if ( $exclude_wcj_meta && 'is_custom' === $_meta_key ) {
|
76 |
+
continue;
|
77 |
+
}
|
78 |
+
|
79 |
+
// Skip serialised meta
|
80 |
+
if ( is_serialized( $_meta_value ) || is_array( $_meta_value ) ) {
|
81 |
+
continue;
|
82 |
+
}
|
83 |
+
|
84 |
+
// Get attribute data
|
85 |
+
if ( taxonomy_exists( wc_sanitize_taxonomy_name( $_meta_key ) ) ) {
|
86 |
+
$term = get_term_by( 'slug', $_meta_value, wc_sanitize_taxonomy_name( $_meta_key ) );
|
87 |
+
$_meta_key = wc_attribute_label( wc_sanitize_taxonomy_name( $_meta_key ) );
|
88 |
+
$_meta_value = isset( $term->name ) ? $term->name : $_meta_value;
|
89 |
+
} else {
|
90 |
+
$the_product = null;
|
91 |
+
if ( is_object( $_product ) ) {
|
92 |
+
$the_product = $_product;
|
93 |
+
} elseif ( is_object( $item ) ) {
|
94 |
+
$the_product = $_order->get_product_from_item( $item );
|
95 |
+
}
|
96 |
+
$_meta_key = ( is_object( $the_product ) ) ? wc_attribute_label( $_meta_key, $the_product ) : $_meta_key;
|
97 |
+
}
|
98 |
+
$meta_info[] = wp_kses_post( rawurldecode( $_meta_key ) ) . ': ' . wp_kses_post( rawurldecode( $_meta_value ) );
|
99 |
+
}
|
100 |
+
$meta_info = implode( ', ', $meta_info );
|
101 |
+
}
|
102 |
+
return $meta_info;
|
103 |
+
}
|
104 |
+
}
|
105 |
+
|
106 |
+
if ( ! function_exists( 'wcj_get_order_statuses' ) ) {
|
107 |
+
/**
|
108 |
+
* wcj_get_order_statuses.
|
109 |
+
*/
|
110 |
+
function wcj_get_order_statuses( $cut_the_prefix ) {
|
111 |
+
$order_statuses = array(
|
112 |
+
'wc-pending' => _x( 'Pending Payment', 'Order status', 'woocommerce' ),
|
113 |
+
'wc-processing' => _x( 'Processing', 'Order status', 'woocommerce' ),
|
114 |
+
'wc-on-hold' => _x( 'On Hold', 'Order status', 'woocommerce' ),
|
115 |
+
'wc-completed' => _x( 'Completed', 'Order status', 'woocommerce' ),
|
116 |
+
'wc-cancelled' => _x( 'Cancelled', 'Order status', 'woocommerce' ),
|
117 |
+
'wc-refunded' => _x( 'Refunded', 'Order status', 'woocommerce' ),
|
118 |
+
'wc-failed' => _x( 'Failed', 'Order status', 'woocommerce' ),
|
119 |
+
);
|
120 |
+
$order_statuses = apply_filters( 'wc_order_statuses', $order_statuses );
|
121 |
+
if ( $cut_the_prefix ) {
|
122 |
+
$order_statuses_no_prefix = array();
|
123 |
+
foreach ( $order_statuses as $status => $desc ) {
|
124 |
+
$order_statuses_no_prefix[ substr( $status, 3 ) ] = $desc;
|
125 |
+
}
|
126 |
+
return $order_statuses_no_prefix;
|
127 |
+
}
|
128 |
+
return $order_statuses;
|
129 |
+
}
|
130 |
+
}
|
131 |
+
|
132 |
+
if ( ! function_exists( 'wcj_get_order_statuses_v2' ) ) {
|
133 |
+
/**
|
134 |
+
* wcj_get_order_statuses_v2.
|
135 |
+
*
|
136 |
+
* @version 2.9.0
|
137 |
+
* @since 2.9.0
|
138 |
+
* @todo check `wcj_get_order_statuses`
|
139 |
+
*/
|
140 |
+
function wcj_get_order_statuses_v2() {
|
141 |
+
$result = array();
|
142 |
+
$statuses = function_exists( 'wc_get_order_statuses' ) ? wc_get_order_statuses() : array();
|
143 |
+
foreach( $statuses as $status => $status_name ) {
|
144 |
+
$result[ substr( $status, 3 ) ] = $statuses[ $status ];
|
145 |
+
}
|
146 |
+
return $result;
|
147 |
+
}
|
148 |
+
}
|
149 |
+
|
150 |
+
if ( ! function_exists( 'wcj_order_get_payment_method' ) ) {
|
151 |
+
/**
|
152 |
+
* wcj_order_get_payment_method.
|
153 |
+
*
|
154 |
+
* @version 2.8.2
|
155 |
+
* @since 2.8.0
|
156 |
+
*/
|
157 |
+
function wcj_order_get_payment_method( $_order ) {
|
158 |
+
if ( ! $_order || ! is_object( $_order ) ) {
|
159 |
+
return null;
|
160 |
+
}
|
161 |
+
if ( WCJ_IS_WC_VERSION_BELOW_3 ) {
|
162 |
+
return ( isset( $_order->payment_method ) ? $_order->payment_method : null );
|
163 |
+
} else {
|
164 |
+
return ( method_exists( $_order, 'get_payment_method' ) ? $_order->get_payment_method() : null );
|
165 |
+
}
|
166 |
+
}
|
167 |
+
}
|
168 |
+
|
includes/functions/wcj-price-currency-functions.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Functions - Price and Currency
|
4 |
*
|
5 |
-
* @version 2.
|
6 |
* @since 2.7.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
@@ -41,6 +41,39 @@ if ( ! function_exists( 'wcj_add_change_price_hooks' ) ) {
|
|
41 |
}
|
42 |
}
|
43 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
44 |
if ( ! function_exists( 'wcj_get_currency_exchange_rate_product_base_currency' ) ) {
|
45 |
/**
|
46 |
* wcj_get_currency_exchange_rate_product_base_currency.
|
@@ -368,8 +401,6 @@ if ( ! function_exists( 'wcj_get_currencies_names_and_symbols' ) ) {
|
|
368 |
return $currency_names_and_symbols;
|
369 |
} */
|
370 |
if ( 'all' === $scope || 'no_custom' === $scope ) {
|
371 |
-
// $currencies = include( wcj_plugin_path() . '/includes/currencies/wcj-currencies.php' );
|
372 |
-
// include( wcj_plugin_path() . '/includes/currencies/wcj-currencies.php' );
|
373 |
$currencies = wcj_get_currencies_array();
|
374 |
foreach( $currencies as $data ) {
|
375 |
switch ( $result ) {
|
2 |
/**
|
3 |
* Booster for WooCommerce - Functions - Price and Currency
|
4 |
*
|
5 |
+
* @version 2.9.0
|
6 |
* @since 2.7.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
41 |
}
|
42 |
}
|
43 |
|
44 |
+
if ( ! function_exists( 'wcj_remove_change_price_hooks' ) ) {
|
45 |
+
/**
|
46 |
+
* wcj_remove_change_price_hooks.
|
47 |
+
*
|
48 |
+
* @version 2.9.0
|
49 |
+
* @since 2.9.0
|
50 |
+
* @todo make one function from this and `wcj_add_change_price_hooks()`
|
51 |
+
*/
|
52 |
+
function wcj_remove_change_price_hooks( $module_object, $priority, $include_shipping = true ) {
|
53 |
+
// Prices
|
54 |
+
remove_filter( WCJ_PRODUCT_GET_PRICE_FILTER, array( $module_object, 'change_price' ), $priority );
|
55 |
+
remove_filter( WCJ_PRODUCT_GET_SALE_PRICE_FILTER, array( $module_object, 'change_price' ), $priority );
|
56 |
+
remove_filter( WCJ_PRODUCT_GET_REGULAR_PRICE_FILTER, array( $module_object, 'change_price' ), $priority );
|
57 |
+
// Variations
|
58 |
+
remove_filter( 'woocommerce_variation_prices_price', array( $module_object, 'change_price' ), $priority );
|
59 |
+
remove_filter( 'woocommerce_variation_prices_regular_price', array( $module_object, 'change_price' ), $priority );
|
60 |
+
remove_filter( 'woocommerce_variation_prices_sale_price', array( $module_object, 'change_price' ), $priority );
|
61 |
+
remove_filter( 'woocommerce_get_variation_prices_hash', array( $module_object, 'get_variation_prices_hash' ), $priority );
|
62 |
+
if ( ! WCJ_IS_WC_VERSION_BELOW_3 ) {
|
63 |
+
remove_filter( 'woocommerce_product_variation_get_price', array( $module_object, 'change_price' ), $priority );
|
64 |
+
remove_filter( 'woocommerce_product_variation_get_regular_price', array( $module_object, 'change_price' ), $priority );
|
65 |
+
remove_filter( 'woocommerce_product_variation_get_sale_price', array( $module_object, 'change_price' ), $priority );
|
66 |
+
}
|
67 |
+
// Shipping
|
68 |
+
if ( $include_shipping ) {
|
69 |
+
remove_filter( 'woocommerce_package_rates', array( $module_object, 'change_price_shipping' ), $priority );
|
70 |
+
}
|
71 |
+
// Grouped products
|
72 |
+
remove_filter( 'woocommerce_get_price_including_tax', array( $module_object, 'change_price_grouped' ), $priority );
|
73 |
+
remove_filter( 'woocommerce_get_price_excluding_tax', array( $module_object, 'change_price_grouped' ), $priority );
|
74 |
+
}
|
75 |
+
}
|
76 |
+
|
77 |
if ( ! function_exists( 'wcj_get_currency_exchange_rate_product_base_currency' ) ) {
|
78 |
/**
|
79 |
* wcj_get_currency_exchange_rate_product_base_currency.
|
401 |
return $currency_names_and_symbols;
|
402 |
} */
|
403 |
if ( 'all' === $scope || 'no_custom' === $scope ) {
|
|
|
|
|
404 |
$currencies = wcj_get_currencies_array();
|
405 |
foreach( $currencies as $data ) {
|
406 |
switch ( $result ) {
|
includes/functions/wcj-product-functions.php
ADDED
@@ -0,0 +1,378 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Booster for WooCommerce - Functions - Product
|
4 |
+
*
|
5 |
+
* @version 2.9.0
|
6 |
+
* @since 2.9.0
|
7 |
+
* @author Algoritmika Ltd.
|
8 |
+
*/
|
9 |
+
|
10 |
+
if ( ! defined( 'ABSPATH' ) ) exit;
|
11 |
+
|
12 |
+
if ( ! function_exists( 'wcj_get_product' ) ) {
|
13 |
+
/*
|
14 |
+
* wcj_get_product.
|
15 |
+
*/
|
16 |
+
function wcj_get_product( $product_id = 0 ) {
|
17 |
+
if ( 0 == $product_id ) $product_id = get_the_ID();
|
18 |
+
$the_product = new WCJ_Product( $product_id );
|
19 |
+
return $the_product;
|
20 |
+
}
|
21 |
+
}
|
22 |
+
|
23 |
+
if ( ! function_exists( 'wcj_get_product_id' ) ) {
|
24 |
+
/**
|
25 |
+
* wcj_get_product_id.
|
26 |
+
*
|
27 |
+
* @version 2.9.0
|
28 |
+
* @since 2.7.0
|
29 |
+
*/
|
30 |
+
function wcj_get_product_id( $_product ) {
|
31 |
+
if ( ! $_product || ! is_object( $_product ) ) {
|
32 |
+
return 0;
|
33 |
+
}
|
34 |
+
if ( WCJ_IS_WC_VERSION_BELOW_3 ) {
|
35 |
+
return ( isset( $_product->variation_id ) ) ? $_product->variation_id : $_product->id;
|
36 |
+
} else {
|
37 |
+
return $_product->get_id();
|
38 |
+
}
|
39 |
+
}
|
40 |
+
}
|
41 |
+
|
42 |
+
if ( ! function_exists( 'wcj_get_product_id_or_variation_parent_id' ) ) {
|
43 |
+
/**
|
44 |
+
* wcj_get_product_id_or_variation_parent_id.
|
45 |
+
*
|
46 |
+
* @version 2.9.0
|
47 |
+
* @since 2.7.0
|
48 |
+
*/
|
49 |
+
function wcj_get_product_id_or_variation_parent_id( $_product ) {
|
50 |
+
if ( ! $_product || ! is_object( $_product ) ) {
|
51 |
+
return 0;
|
52 |
+
}
|
53 |
+
if ( WCJ_IS_WC_VERSION_BELOW_3 ) {
|
54 |
+
return $_product->id;
|
55 |
+
} else {
|
56 |
+
return ( $_product->is_type( 'variation' ) ) ? $_product->get_parent_id() : $_product->get_id();
|
57 |
+
}
|
58 |
+
}
|
59 |
+
}
|
60 |
+
|
61 |
+
if ( ! function_exists( 'wcj_get_product_status' ) ) {
|
62 |
+
/**
|
63 |
+
* wcj_get_product_status.
|
64 |
+
*
|
65 |
+
* @version 2.7.0
|
66 |
+
* @since 2.7.0
|
67 |
+
*/
|
68 |
+
function wcj_get_product_status( $_product ) {
|
69 |
+
return ( WCJ_IS_WC_VERSION_BELOW_3 ) ? $_product->post->post_status : $_product->get_status();
|
70 |
+
}
|
71 |
+
}
|
72 |
+
|
73 |
+
if ( ! function_exists( 'wcj_get_product_total_stock' ) ) {
|
74 |
+
/**
|
75 |
+
* wcj_get_product_total_stock.
|
76 |
+
*
|
77 |
+
* @version 2.7.0
|
78 |
+
* @since 2.7.0
|
79 |
+
*/
|
80 |
+
function wcj_get_product_total_stock( $_product ) {
|
81 |
+
if ( WCJ_IS_WC_VERSION_BELOW_3 ) {
|
82 |
+
return $_product->get_total_stock();
|
83 |
+
} else {
|
84 |
+
if ( $_product->is_type( array( 'variable', 'grouped' ) ) ) {
|
85 |
+
$total_stock = 0;
|
86 |
+
foreach ( $_product->get_children() as $child_id ) {
|
87 |
+
$child = wc_get_product( $child_id );
|
88 |
+
$total_stock += $child->get_stock_quantity();
|
89 |
+
}
|
90 |
+
return $total_stock;
|
91 |
+
} else {
|
92 |
+
return $_product->get_stock_quantity();
|
93 |
+
}
|
94 |
+
}
|
95 |
+
}
|
96 |
+
}
|
97 |
+
|
98 |
+
if ( ! function_exists( 'wcj_get_product_display_price' ) ) {
|
99 |
+
/**
|
100 |
+
* wcj_get_product_display_price.
|
101 |
+
*
|
102 |
+
* @version 2.8.0
|
103 |
+
* @since 2.7.0
|
104 |
+
*/
|
105 |
+
function wcj_get_product_display_price( $_product, $price = '', $qty = 1 ) {
|
106 |
+
if ( WCJ_IS_WC_VERSION_BELOW_3 ) {
|
107 |
+
return $_product->get_display_price( $price, $qty );
|
108 |
+
} else {
|
109 |
+
$minus_sign = '';
|
110 |
+
if ( $price < 0 ) {
|
111 |
+
$minus_sign = '-';
|
112 |
+
$price *= -1;
|
113 |
+
}
|
114 |
+
return $minus_sign . wc_get_price_to_display( $_product, array( 'price' => $price, 'qty' => $qty ) );
|
115 |
+
}
|
116 |
+
}
|
117 |
+
}
|
118 |
+
|
119 |
+
if ( ! function_exists( 'wcj_get_product_formatted_variation' ) ) {
|
120 |
+
/**
|
121 |
+
* wcj_get_product_formatted_variation.
|
122 |
+
*
|
123 |
+
* @version 2.7.0
|
124 |
+
* @since 2.7.0
|
125 |
+
*/
|
126 |
+
function wcj_get_product_formatted_variation( $variation, $flat = false, $include_names = true ) {
|
127 |
+
if ( WCJ_IS_WC_VERSION_BELOW_3 ) {
|
128 |
+
return $variation->get_formatted_variation_attributes( $flat );
|
129 |
+
} else {
|
130 |
+
return wc_get_formatted_variation( $variation, $flat, $include_names );
|
131 |
+
}
|
132 |
+
}
|
133 |
+
}
|
134 |
+
|
135 |
+
if ( ! function_exists( 'wcj_get_product_image_url' ) ) {
|
136 |
+
/**
|
137 |
+
* wcj_get_product_image_url.
|
138 |
+
*
|
139 |
+
* @version 2.5.7
|
140 |
+
* @since 2.5.7
|
141 |
+
* @todo placeholder
|
142 |
+
*/
|
143 |
+
function wcj_get_product_image_url( $product_id, $image_size = 'shop_thumbnail' ) {
|
144 |
+
if ( has_post_thumbnail( $product_id ) ) {
|
145 |
+
$image_url = get_the_post_thumbnail_url( $product_id, $image_size );
|
146 |
+
} elseif ( ( $parent_id = wp_get_post_parent_id( $product_id ) ) && has_post_thumbnail( $parent_id ) ) {
|
147 |
+
$image_url = get_the_post_thumbnail_url( $parent_id, $image_size );
|
148 |
+
} else {
|
149 |
+
$image_url = '';
|
150 |
+
}
|
151 |
+
return $image_url;
|
152 |
+
}
|
153 |
+
}
|
154 |
+
|
155 |
+
if ( ! function_exists( 'wcj_get_product_input_fields' ) ) {
|
156 |
+
/*
|
157 |
+
* wcj_get_product_input_fields.
|
158 |
+
*
|
159 |
+
* @version 2.8.0
|
160 |
+
* @since 2.4.4
|
161 |
+
* @return string
|
162 |
+
*/
|
163 |
+
function wcj_get_product_input_fields( $item ) {
|
164 |
+
$product_input_fields = array();
|
165 |
+
if ( WCJ_IS_WC_VERSION_BELOW_3 ) {
|
166 |
+
foreach ( $item as $key => $value ) {
|
167 |
+
if ( false !== strpos( $key, 'wcj_product_input_fields_' ) ) {
|
168 |
+
$product_input_fields[] = wcj_maybe_unserialize_and_implode( $value );
|
169 |
+
}
|
170 |
+
}
|
171 |
+
} else {
|
172 |
+
foreach ( $item->get_meta_data() as $value ) {
|
173 |
+
if ( isset( $value->key ) && isset( $value->value ) && false !== strpos( $value->key, 'wcj_product_input_fields_' ) ) {
|
174 |
+
$product_input_fields[] = wcj_maybe_unserialize_and_implode( $value->value );
|
175 |
+
}
|
176 |
+
}
|
177 |
+
}
|
178 |
+
return ( ! empty( $product_input_fields ) ) ? implode( ', ', $product_input_fields ) : '';
|
179 |
+
}
|
180 |
+
}
|
181 |
+
|
182 |
+
if ( ! function_exists( 'wcj_get_products' ) ) {
|
183 |
+
/**
|
184 |
+
* wcj_get_products.
|
185 |
+
*
|
186 |
+
* @version 2.8.0
|
187 |
+
*/
|
188 |
+
function wcj_get_products( $products = array(), $post_status = 'any', $block_size = 256, $add_variations = false ) {
|
189 |
+
$offset = 0;
|
190 |
+
while( true ) {
|
191 |
+
$args = array(
|
192 |
+
'post_type' => 'product',
|
193 |
+
'post_status' => $post_status,
|
194 |
+
'posts_per_page' => $block_size,
|
195 |
+
'offset' => $offset,
|
196 |
+
'orderby' => 'title',
|
197 |
+
'order' => 'ASC',
|
198 |
+
'fields' => 'ids',
|
199 |
+
);
|
200 |
+
$loop = new WP_Query( $args );
|
201 |
+
if ( ! $loop->have_posts() ) {
|
202 |
+
break;
|
203 |
+
}
|
204 |
+
foreach ( $loop->posts as $post_id ) {
|
205 |
+
$products[ $post_id ] = get_the_title( $post_id );
|
206 |
+
if ( $add_variations ) {
|
207 |
+
$_product = wc_get_product( $post_id );
|
208 |
+
if ( $_product->is_type( 'variable' ) ) {
|
209 |
+
foreach ( $_product->get_children() as $child_id ) {
|
210 |
+
$products[ $child_id ] = get_the_title( $child_id );
|
211 |
+
}
|
212 |
+
}
|
213 |
+
}
|
214 |
+
}
|
215 |
+
$offset += $block_size;
|
216 |
+
}
|
217 |
+
return $products;
|
218 |
+
}
|
219 |
+
}
|
220 |
+
|
221 |
+
if ( ! function_exists( 'wcj_product_has_terms' ) ) {
|
222 |
+
/**
|
223 |
+
* wcj_product_has_terms.
|
224 |
+
*
|
225 |
+
* @version 2.8.2
|
226 |
+
* @version 2.8.2
|
227 |
+
*/
|
228 |
+
function wcj_product_has_terms( $_product, $_values, $_term ) {
|
229 |
+
if ( is_string( $_values ) ) {
|
230 |
+
$_values = explode( ',', $_values );
|
231 |
+
}
|
232 |
+
if ( empty( $_values ) ) {
|
233 |
+
return false;
|
234 |
+
}
|
235 |
+
$product_categories = get_the_terms( wcj_get_product_id_or_variation_parent_id( $_product ), $_term );
|
236 |
+
if ( empty( $product_categories ) ) {
|
237 |
+
return false;
|
238 |
+
}
|
239 |
+
foreach ( $product_categories as $product_category ) {
|
240 |
+
foreach ( $_values as $_value ) {
|
241 |
+
if ( $product_category->slug === $_value ) {
|
242 |
+
return true;
|
243 |
+
}
|
244 |
+
}
|
245 |
+
}
|
246 |
+
return false;
|
247 |
+
}
|
248 |
+
}
|
249 |
+
|
250 |
+
if ( ! function_exists( 'wcj_is_product_wholesale_enabled_per_product' ) ) {
|
251 |
+
/**
|
252 |
+
* wcj_is_product_wholesale_enabled_per_product.
|
253 |
+
*
|
254 |
+
* @version 2.5.0
|
255 |
+
* @since 2.5.0
|
256 |
+
*/
|
257 |
+
function wcj_is_product_wholesale_enabled_per_product( $product_id ) {
|
258 |
+
return (
|
259 |
+
'yes' === get_option( 'wcj_wholesale_price_per_product_enable', 'yes' ) &&
|
260 |
+
'yes' === get_post_meta( $product_id, '_' . 'wcj_wholesale_price_per_product_enabled', true )
|
261 |
+
) ? true : false;
|
262 |
+
}
|
263 |
+
}
|
264 |
+
|
265 |
+
if ( ! function_exists( 'wcj_is_product_wholesale_enabled' ) ) {
|
266 |
+
/**
|
267 |
+
* wcj_is_product_wholesale_enabled.
|
268 |
+
*
|
269 |
+
* @version 2.5.4
|
270 |
+
*/
|
271 |
+
function wcj_is_product_wholesale_enabled( $product_id ) {
|
272 |
+
if ( wcj_is_module_enabled( 'wholesale_price' ) ) {
|
273 |
+
if ( wcj_is_product_wholesale_enabled_per_product( $product_id ) ) {
|
274 |
+
return true;
|
275 |
+
} else {
|
276 |
+
$products_to_include_passed = false;
|
277 |
+
$products_to_include = get_option( 'wcj_wholesale_price_products_to_include', array() );
|
278 |
+
if ( empty ( $products_to_include ) ) {
|
279 |
+
$products_to_include_passed = true;
|
280 |
+
} else {
|
281 |
+
foreach ( $products_to_include as $id ) {
|
282 |
+
if ( $product_id == $id ) {
|
283 |
+
$products_to_include_passed = true;
|
284 |
+
}
|
285 |
+
}
|
286 |
+
}
|
287 |
+
$products_to_exclude_passed = false;
|
288 |
+
$products_to_exclude = get_option( 'wcj_wholesale_price_products_to_exclude', array() );
|
289 |
+
if ( empty ( $products_to_exclude ) ) {
|
290 |
+
$products_to_exclude_passed = true;
|
291 |
+
} else {
|
292 |
+
foreach ( $products_to_exclude as $id ) {
|
293 |
+
if ( $product_id == $id ) {
|
294 |
+
$products_to_exclude_passed = false;
|
295 |
+
}
|
296 |
+
}
|
297 |
+
}
|
298 |
+
return ( $products_to_include_passed && $products_to_exclude_passed );
|
299 |
+
}
|
300 |
+
}
|
301 |
+
return false;
|
302 |
+
}
|
303 |
+
}
|
304 |
+
|
305 |
+
if ( ! function_exists( 'wcj_get_the_terms' ) ) {
|
306 |
+
/**
|
307 |
+
* wcj_get_the_terms.
|
308 |
+
*
|
309 |
+
* @version 2.9.0
|
310 |
+
* @version 2.9.0
|
311 |
+
*/
|
312 |
+
function wcj_get_the_terms( $product_id, $taxonomy ) {
|
313 |
+
$result = array();
|
314 |
+
$_terms = get_the_terms( $product_id, $taxonomy );
|
315 |
+
if ( ! empty( $_terms ) ) {
|
316 |
+
foreach( $_terms as $_term ) {
|
317 |
+
$result[] = $_term->term_id;
|
318 |
+
}
|
319 |
+
}
|
320 |
+
return $result;
|
321 |
+
}
|
322 |
+
}
|
323 |
+
|
324 |
+
if ( ! function_exists( 'wcj_is_product_term' ) ) {
|
325 |
+
/**
|
326 |
+
* wcj_is_product_term.
|
327 |
+
*
|
328 |
+
* @version 2.9.0
|
329 |
+
* @since 2.9.0
|
330 |
+
* @todo (maybe) check if $term_ids is empty
|
331 |
+
*/
|
332 |
+
function wcj_is_product_term( $product_id, $term_ids, $taxonomy ) {
|
333 |
+
$product_terms = get_the_terms( $product_id, $taxonomy );
|
334 |
+
if ( empty( $product_terms ) ) {
|
335 |
+
return false;
|
336 |
+
}
|
337 |
+
foreach( $product_terms as $product_term ) {
|
338 |
+
if ( in_array( $product_term->term_id, $term_ids ) ) {
|
339 |
+
return true;
|
340 |
+
}
|
341 |
+
}
|
342 |
+
return false;
|
343 |
+
}
|
344 |
+
}
|
345 |
+
|
346 |
+
if ( ! function_exists( 'wcj_get_terms' ) ) {
|
347 |
+
/**
|
348 |
+
* wcj_get_terms.
|
349 |
+
*
|
350 |
+
* @version 2.8.0
|
351 |
+
* @version 2.8.0
|
352 |
+
*/
|
353 |
+
function wcj_get_terms( $args ) {
|
354 |
+
if ( ! is_array( $args ) ) {
|
355 |
+
$_taxonomy = $args;
|
356 |
+
$args = array(
|
357 |
+
'taxonomy' => $_taxonomy,
|
358 |
+
'orderby' => 'name',
|
359 |
+
'hide_empty' => false,
|
360 |
+
);
|
361 |
+
}
|
362 |
+
global $wp_version;
|
363 |
+
if ( version_compare( $wp_version, '4.5.0', '>=' ) ) {
|
364 |
+
$_terms = get_terms( $args );
|
365 |
+
} else {
|
366 |
+
$_taxonomy = $args['taxonomy'];
|
367 |
+
unset( $args['taxonomy'] );
|
368 |
+
$_terms = get_terms( $_taxonomy, $args );
|
369 |
+
}
|
370 |
+
$_terms_options = array();
|
371 |
+
if ( ! empty( $_terms ) && ! is_wp_error( $_terms ) ){
|
372 |
+
foreach ( $_terms as $_term ) {
|
373 |
+
$_terms_options[ $_term->term_id ] = $_term->name;
|
374 |
+
}
|
375 |
+
}
|
376 |
+
return $_terms_options;
|
377 |
+
}
|
378 |
+
}
|
includes/functions/wcj-reports-functions.php
ADDED
@@ -0,0 +1,148 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Booster for WooCommerce - Functions - Reports
|
4 |
+
*
|
5 |
+
* @version 2.9.0
|
6 |
+
* @version 2.9.0
|
7 |
+
* @author Algoritmika Ltd.
|
8 |
+
*/
|
9 |
+
|
10 |
+
if ( ! defined( 'ABSPATH' ) ) exit;
|
11 |
+
|
12 |
+
if ( ! function_exists( 'wcj_get_product_sales_daily_report_columns' ) ) {
|
13 |
+
/*
|
14 |
+
* wcj_get_product_sales_daily_report_columns.
|
15 |
+
*
|
16 |
+
* @version 2.9.0
|
17 |
+
* @since 2.9.0
|
18 |
+
*/
|
19 |
+
function wcj_get_product_sales_daily_report_columns() {
|
20 |
+
return array(
|
21 |
+
'date' => __( 'Date', 'woocommerce-jetpack' ),
|
22 |
+
'daily_total_sum' => __( 'Daily Total Sum', 'woocommerce-jetpack' ),
|
23 |
+
'daily_total_quantity' => __( 'Daily Total Quantity', 'woocommerce-jetpack' ),
|
24 |
+
'date' => __( 'Date', 'woocommerce-jetpack' ),
|
25 |
+
'product_id' => __( 'Product ID', 'woocommerce-jetpack' ),
|
26 |
+
'item_title' => __( 'Item Title', 'woocommerce-jetpack' ),
|
27 |
+
'item_quantity' => __( 'Quantity', 'woocommerce-jetpack' ),
|
28 |
+
'sum' => __( 'Sum', 'woocommerce-jetpack' ),
|
29 |
+
'profit' => __( 'Profit', 'woocommerce-jetpack' ),
|
30 |
+
'last_sale' => __( 'Last Sale Date', 'woocommerce-jetpack' ),
|
31 |
+
'last_sale_order_id' => __( 'Last Sale Order ID', 'woocommerce-jetpack' ),
|
32 |
+
'last_sale_order_status' => __( 'Last Sale Order Status', 'woocommerce-jetpack' ),
|
33 |
+
);
|
34 |
+
}
|
35 |
+
}
|
36 |
+
|
37 |
+
if ( ! function_exists( 'wcj_get_reports_standard_ranges' ) ) {
|
38 |
+
/*
|
39 |
+
* wcj_get_reports_standard_ranges.
|
40 |
+
*
|
41 |
+
* @version 2.9.0
|
42 |
+
* @since 2.9.0
|
43 |
+
*/
|
44 |
+
function wcj_get_reports_standard_ranges() {
|
45 |
+
return array(
|
46 |
+
'year' => array(
|
47 |
+
'title' => __( 'Year', 'woocommerce' ),
|
48 |
+
'start_date' => date( 'Y-01-01' ),
|
49 |
+
'end_date' => date( 'Y-m-d' ),
|
50 |
+
),
|
51 |
+
'last_month' => array(
|
52 |
+
'title' => __( 'Last month', 'woocommerce' ),
|
53 |
+
'start_date' => date( 'Y-m-d', strtotime( 'first day of previous month' ) ),
|
54 |
+
'end_date' => date( 'Y-m-d', strtotime( 'last day of previous month' ) ),
|
55 |
+
),
|
56 |
+
'this_month' => array(
|
57 |
+
'title' => __( 'This month', 'woocommerce' ),
|
58 |
+
'start_date' => date( 'Y-m-01' ),
|
59 |
+
'end_date' => date( 'Y-m-d' ),
|
60 |
+
),
|
61 |
+
'last_7_days' => array(
|
62 |
+
'title' => __( 'Last 7 days', 'woocommerce' ),
|
63 |
+
'start_date' => date( 'Y-m-d', strtotime( '-7 days' ) ),
|
64 |
+
'end_date' => date( 'Y-m-d' ),
|
65 |
+
),
|
66 |
+
);
|
67 |
+
}
|
68 |
+
}
|
69 |
+
|
70 |
+
if ( ! function_exists( 'wcj_get_reports_custom_ranges' ) ) {
|
71 |
+
/*
|
72 |
+
* wcj_get_reports_custom_ranges.
|
73 |
+
*
|
74 |
+
* @version 2.9.0
|
75 |
+
* @since 2.9.0
|
76 |
+
*/
|
77 |
+
function wcj_get_reports_custom_ranges() {
|
78 |
+
return array(
|
79 |
+
'last_14_days' => array(
|
80 |
+
'title' => __( 'Last 14 days', 'woocommerce-jetpack' ),
|
81 |
+
'start_date' => date( 'Y-m-d', strtotime( '-14 days' ) ),
|
82 |
+
'end_date' => date( 'Y-m-d' ),
|
83 |
+
),
|
84 |
+
'last_30_days' => array(
|
85 |
+
'title' => __( 'Last 30 days', 'woocommerce-jetpack' ),
|
86 |
+
'start_date' => date( 'Y-m-d', strtotime( '-30 days' ) ),
|
87 |
+
'end_date' => date( 'Y-m-d' ),
|
88 |
+
),
|
89 |
+
'last_3_months' => array(
|
90 |
+
'title' => __( 'Last 3 months', 'woocommerce-jetpack' ),
|
91 |
+
'start_date' => date( 'Y-m-d', strtotime( '-3 months' ) ),
|
92 |
+
'end_date' => date( 'Y-m-d' ),
|
93 |
+
),
|
94 |
+
'last_6_months' => array(
|
95 |
+
'title' => __( 'Last 6 months', 'woocommerce-jetpack' ),
|
96 |
+
'start_date' => date( 'Y-m-d', strtotime( '-6 months' ) ),
|
97 |
+
'end_date' => date( 'Y-m-d' ),
|
98 |
+
),
|
99 |
+
'last_12_months' => array(
|
100 |
+
'title' => __( 'Last 12 months', 'woocommerce-jetpack' ),
|
101 |
+
'start_date' => date( 'Y-m-d', strtotime( '-12 months' ) ),
|
102 |
+
'end_date' => date( 'Y-m-d' ),
|
103 |
+
),
|
104 |
+
'last_24_months' => array(
|
105 |
+
'title' => __( 'Last 24 months', 'woocommerce-jetpack' ),
|
106 |
+
'start_date' => date( 'Y-m-d', strtotime( '-24 months' ) ),
|
107 |
+
'end_date' => date( 'Y-m-d' ),
|
108 |
+
),
|
109 |
+
'last_36_months' => array(
|
110 |
+
'title' => __( 'Last 36 months', 'woocommerce-jetpack' ),
|
111 |
+
'start_date' => date( 'Y-m-d', strtotime( '-36 months' ) ),
|
112 |
+
'end_date' => date( 'Y-m-d' ),
|
113 |
+
),
|
114 |
+
'same_days_last_month' => array(
|
115 |
+
'title' => __( 'Same days last month', 'woocommerce-jetpack' ),
|
116 |
+
'start_date' => date( 'Y-m-01', strtotime( '-1 month' ) ),
|
117 |
+
'end_date' => date( 'Y-m-d', strtotime( '-1 month' ) ),
|
118 |
+
),
|
119 |
+
'same_days_last_year' => array(
|
120 |
+
'title' => __( 'Same days last year', 'woocommerce-jetpack' ),
|
121 |
+
'start_date' => date( 'Y-m-01', strtotime( '-1 year' ) ),
|
122 |
+
'end_date' => date( 'Y-m-d', strtotime( '-1 year' ) ),
|
123 |
+
),
|
124 |
+
'last_year' => array(
|
125 |
+
'title' => __( 'Last year', 'woocommerce-jetpack' ),
|
126 |
+
'start_date' => date( 'Y-01-01', strtotime( '-1 year' ) ),
|
127 |
+
'end_date' => date( 'Y-12-31', strtotime( '-1 year' ) ),
|
128 |
+
),
|
129 |
+
'yesterday' => array(
|
130 |
+
'title' => __( 'Yesterday', 'woocommerce-jetpack' ),
|
131 |
+
'start_date' => date( 'Y-m-d', strtotime( '-1 day' ) ),
|
132 |
+
'end_date' => date( 'Y-m-d', strtotime( '-1 day' ) ),
|
133 |
+
),
|
134 |
+
'today' => array(
|
135 |
+
'title' => __( 'Today', 'woocommerce-jetpack' ),
|
136 |
+
'start_date' => date( 'Y-m-d' ),
|
137 |
+
'end_date' => date( 'Y-m-d' ),
|
138 |
+
),
|
139 |
+
/*
|
140 |
+
'last_week' => array(
|
141 |
+
'title' => __( 'Last week', 'woocommerce-jetpack' ),
|
142 |
+
'start_date' => date( 'Y-m-d', strtotime( 'last monday' ) ),
|
143 |
+
'end_date' => date( 'Y-m-d', strtotime( 'last sunday' ) ),
|
144 |
+
),
|
145 |
+
*/
|
146 |
+
);
|
147 |
+
}
|
148 |
+
}
|
includes/functions/wcj-user-roles-functions.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Functions - User Roles
|
4 |
*
|
5 |
-
* @version 2.
|
6 |
* @since 2.7.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
@@ -13,12 +13,12 @@ if ( ! function_exists( 'is_shop_manager' ) ) {
|
|
13 |
/**
|
14 |
* is_shop_manager.
|
15 |
*
|
16 |
-
* @
|
|
|
17 |
*/
|
18 |
function is_shop_manager( $user_id = 0 ) {
|
19 |
$the_user = ( 0 == $user_id ) ? wp_get_current_user() : get_user_by( 'id', $user_id );
|
20 |
-
|
21 |
-
return ( isset( $the_user->roles[0] ) && 'shop_manager' === $the_user->roles[0] ) ? true : false;
|
22 |
}
|
23 |
}
|
24 |
|
@@ -35,14 +35,51 @@ if ( ! function_exists( 'wcj_get_current_user_all_roles' ) ) {
|
|
35 |
}
|
36 |
}
|
37 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
38 |
if ( ! function_exists( 'wcj_get_current_user_first_role' ) ) {
|
39 |
/**
|
40 |
* wcj_get_current_user_first_role.
|
41 |
*
|
42 |
-
* @version 2.
|
43 |
* @since 2.5.3
|
44 |
*/
|
45 |
function wcj_get_current_user_first_role() {
|
|
|
|
|
|
|
|
|
|
|
|
|
46 |
$current_user = wp_get_current_user();
|
47 |
return ( isset( $current_user->roles[0] ) && '' != $current_user->roles[0] ) ? $current_user->roles[0] : 'guest';
|
48 |
}
|
@@ -96,15 +133,23 @@ if ( ! function_exists( 'wcj_is_user_role' ) ) {
|
|
96 |
/**
|
97 |
* wcj_is_user_role.
|
98 |
*
|
99 |
-
* @version 2.
|
100 |
* @since 2.5.0
|
101 |
* @return bool
|
102 |
*/
|
103 |
function wcj_is_user_role( $user_role, $user_id = 0 ) {
|
104 |
-
$
|
105 |
-
if ( ! isset( $
|
106 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
107 |
}
|
108 |
-
return ( isset( $the_user->roles ) && is_array( $the_user->roles ) && in_array( $user_role, $the_user->roles ) ) ? true : false;
|
109 |
}
|
110 |
-
}
|
2 |
/**
|
3 |
* Booster for WooCommerce - Functions - User Roles
|
4 |
*
|
5 |
+
* @version 2.9.0
|
6 |
* @since 2.7.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
13 |
/**
|
14 |
* is_shop_manager.
|
15 |
*
|
16 |
+
* @version 2.9.0
|
17 |
+
* @return bool
|
18 |
*/
|
19 |
function is_shop_manager( $user_id = 0 ) {
|
20 |
$the_user = ( 0 == $user_id ) ? wp_get_current_user() : get_user_by( 'id', $user_id );
|
21 |
+
return ( isset( $the_user->roles[0] ) && 'shop_manager' === $the_user->roles[0] );
|
|
|
22 |
}
|
23 |
}
|
24 |
|
35 |
}
|
36 |
}
|
37 |
|
38 |
+
if ( ! function_exists( 'wcj_is_user_logged_in' ) ) {
|
39 |
+
/**
|
40 |
+
* wcj_is_user_logged_in.
|
41 |
+
*
|
42 |
+
* @version 2.9.0
|
43 |
+
* @since 2.9.0
|
44 |
+
*/
|
45 |
+
function wcj_is_user_logged_in() {
|
46 |
+
if ( ! function_exists( 'is_user_logged_in' ) ) {
|
47 |
+
require_once( ABSPATH . 'wp-includes/pluggable.php' );
|
48 |
+
}
|
49 |
+
return is_user_logged_in();
|
50 |
+
}
|
51 |
+
}
|
52 |
+
|
53 |
+
if ( ! function_exists( 'wcj_is_booster_role_changer_enabled' ) ) {
|
54 |
+
/**
|
55 |
+
* wcj_is_booster_role_changer_enabled.
|
56 |
+
*
|
57 |
+
* @version 2.9.0
|
58 |
+
* @since 2.9.0
|
59 |
+
*/
|
60 |
+
function wcj_is_booster_role_changer_enabled() {
|
61 |
+
return (
|
62 |
+
'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_general_user_role_changer_enabled', 'no' ) ) &&
|
63 |
+
wcj_is_user_logged_in() &&
|
64 |
+
wcj_is_user_role( get_option( 'wcj_general_user_role_changer_enabled_for', array( 'administrator', 'shop_manager' ) ) )
|
65 |
+
);
|
66 |
+
}
|
67 |
+
}
|
68 |
+
|
69 |
if ( ! function_exists( 'wcj_get_current_user_first_role' ) ) {
|
70 |
/**
|
71 |
* wcj_get_current_user_first_role.
|
72 |
*
|
73 |
+
* @version 2.9.0
|
74 |
* @since 2.5.3
|
75 |
*/
|
76 |
function wcj_get_current_user_first_role() {
|
77 |
+
if ( wcj_is_module_enabled( 'general' ) && wcj_is_booster_role_changer_enabled() ) {
|
78 |
+
$current_user_id = get_current_user_id();
|
79 |
+
if ( '' != ( $role_by_meta = get_user_meta( $current_user_id, '_' . 'wcj_booster_user_role', true ) ) ) {
|
80 |
+
return $role_by_meta;
|
81 |
+
}
|
82 |
+
}
|
83 |
$current_user = wp_get_current_user();
|
84 |
return ( isset( $current_user->roles[0] ) && '' != $current_user->roles[0] ) ? $current_user->roles[0] : 'guest';
|
85 |
}
|
133 |
/**
|
134 |
* wcj_is_user_role.
|
135 |
*
|
136 |
+
* @version 2.9.0
|
137 |
* @since 2.5.0
|
138 |
* @return bool
|
139 |
*/
|
140 |
function wcj_is_user_role( $user_role, $user_id = 0 ) {
|
141 |
+
$_user = ( 0 == $user_id ) ? wp_get_current_user() : get_user_by( 'id', $user_id );
|
142 |
+
if ( ! isset( $_user->roles ) || empty( $_user->roles ) ) {
|
143 |
+
$_user->roles = array( 'guest' );
|
144 |
+
}
|
145 |
+
if ( ! is_array( $_user->roles ) ) {
|
146 |
+
return false;
|
147 |
+
}
|
148 |
+
if ( is_array( $user_role ) ) {
|
149 |
+
$_intersect = array_intersect( $user_role, $_user->roles );
|
150 |
+
return ( ! empty( $_intersect ) );
|
151 |
+
} else {
|
152 |
+
return ( in_array( $user_role, $_user->roles ) );
|
153 |
}
|
|
|
154 |
}
|
155 |
+
}
|
includes/gateways/class-wc-gateway-wcj-custom.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Custom Payment Gateway
|
4 |
*
|
5 |
-
* @version 2.
|
6 |
* @author Algoritmika Ltd.
|
7 |
*/
|
8 |
|
@@ -17,14 +17,14 @@ if ( ! function_exists( 'init_wc_gateway_wcj_custom_class' ) ) {
|
|
17 |
/**
|
18 |
* WC_Gateway_WCJ_Custom_Template class.
|
19 |
*
|
20 |
-
* @version 2.
|
21 |
*/
|
22 |
class WC_Gateway_WCJ_Custom_Template extends WC_Payment_Gateway {
|
23 |
|
24 |
/**
|
25 |
* set_icon
|
26 |
*/
|
27 |
-
/*
|
28 |
$icon_url = get_option( 'wcj_payment_gateways_icons_woocommerce_wcj_custom_icon', '' );
|
29 |
if ( $icon_url === '' )
|
30 |
return $this->get_option( 'icon', '' );
|
@@ -36,7 +36,7 @@ if ( ! function_exists( 'init_wc_gateway_wcj_custom_class' ) ) {
|
|
36 |
*
|
37 |
* @version 2.5.7
|
38 |
*/
|
39 |
-
|
40 |
global $woocommerce;
|
41 |
|
42 |
$shipping_methods = array();
|
@@ -190,7 +190,7 @@ if ( ! function_exists( 'init_wc_gateway_wcj_custom_class' ) ) {
|
|
190 |
* @version 2.5.6
|
191 |
* @return bool
|
192 |
*/
|
193 |
-
|
194 |
|
195 |
// Check min amount
|
196 |
$min_amount = apply_filters( 'booster_get_option', 0, $this->min_amount );
|
@@ -284,7 +284,7 @@ if ( ! function_exists( 'init_wc_gateway_wcj_custom_class' ) ) {
|
|
284 |
/**
|
285 |
* Output for the order received page.
|
286 |
*/
|
287 |
-
|
288 |
if ( $this->instructions )
|
289 |
echo do_shortcode( wpautop( wptexturize( $this->instructions ) ) );
|
290 |
}
|
@@ -298,7 +298,7 @@ if ( ! function_exists( 'init_wc_gateway_wcj_custom_class' ) ) {
|
|
298 |
* @param bool $sent_to_admin
|
299 |
* @param bool $plain_text
|
300 |
*/
|
301 |
-
|
302 |
if ( $this->instructions_in_email && ! $sent_to_admin && $this->id === wcj_order_get_payment_method( $order ) && $this->default_order_status === ( WCJ_IS_WC_VERSION_BELOW_3 ? $order->status : $order->get_status() ) ) {
|
303 |
echo do_shortcode( wpautop( wptexturize( $this->instructions_in_email ) ) . PHP_EOL );
|
304 |
}
|
@@ -307,19 +307,18 @@ if ( ! function_exists( 'init_wc_gateway_wcj_custom_class' ) ) {
|
|
307 |
/**
|
308 |
* Process the payment and return the result
|
309 |
*
|
310 |
-
* @version 2.
|
311 |
* @param int $order_id
|
312 |
* @return array
|
313 |
*/
|
314 |
-
|
315 |
|
316 |
-
$order =
|
317 |
|
318 |
// Mark as on-hold (we're awaiting the payment)
|
319 |
-
//$order->update_status( 'on-hold', __( 'Awaiting payment', 'woocommerce' ) );
|
320 |
$statuses = $this->get_order_statuses();
|
321 |
$note = isset( $statuses[ $this->default_order_status ] ) ? $statuses[ $this->default_order_status ] : '';
|
322 |
-
$order->update_status( $this->default_order_status, $note );
|
323 |
|
324 |
if ( 'yes' === $this->send_email_to_admin || 'yes' === $this->send_email_to_customer ) {
|
325 |
$woocommerce_mailer = WC()->mailer();
|
@@ -328,7 +327,11 @@ if ( ! function_exists( 'init_wc_gateway_wcj_custom_class' ) ) {
|
|
328 |
}
|
329 |
|
330 |
// Reduce stock levels
|
331 |
-
|
|
|
|
|
|
|
|
|
332 |
|
333 |
// Remove cart
|
334 |
WC()->cart->empty_cart();
|
@@ -345,7 +348,7 @@ if ( ! function_exists( 'init_wc_gateway_wcj_custom_class' ) ) {
|
|
345 |
*
|
346 |
* @version 2.5.2
|
347 |
*/
|
348 |
-
|
349 |
$this->id = ( 1 === $id_count ) ? 'jetpack_custom_gateway' : 'jetpack_custom_gateway_' . $id_count;
|
350 |
$this->has_fields = false;
|
351 |
$this->method_title = get_option( 'wcj_custom_payment_gateways_admin_title_' . $id_count, __( 'Custom Gateway', 'woocommerce-jetpack' ) . ' #' . $id_count );
|
@@ -376,7 +379,7 @@ if ( ! function_exists( 'init_wc_gateway_wcj_custom_class' ) ) {
|
|
376 |
/**
|
377 |
* Constructor.
|
378 |
*/
|
379 |
-
|
380 |
}
|
381 |
}
|
382 |
|
2 |
/**
|
3 |
* Booster for WooCommerce - Custom Payment Gateway
|
4 |
*
|
5 |
+
* @version 2.9.0
|
6 |
* @author Algoritmika Ltd.
|
7 |
*/
|
8 |
|
17 |
/**
|
18 |
* WC_Gateway_WCJ_Custom_Template class.
|
19 |
*
|
20 |
+
* @version 2.9.0
|
21 |
*/
|
22 |
class WC_Gateway_WCJ_Custom_Template extends WC_Payment_Gateway {
|
23 |
|
24 |
/**
|
25 |
* set_icon
|
26 |
*/
|
27 |
+
/* function set_icon() {
|
28 |
$icon_url = get_option( 'wcj_payment_gateways_icons_woocommerce_wcj_custom_icon', '' );
|
29 |
if ( $icon_url === '' )
|
30 |
return $this->get_option( 'icon', '' );
|
36 |
*
|
37 |
* @version 2.5.7
|
38 |
*/
|
39 |
+
function init_form_fields() {
|
40 |
global $woocommerce;
|
41 |
|
42 |
$shipping_methods = array();
|
190 |
* @version 2.5.6
|
191 |
* @return bool
|
192 |
*/
|
193 |
+
function is_available() {
|
194 |
|
195 |
// Check min amount
|
196 |
$min_amount = apply_filters( 'booster_get_option', 0, $this->min_amount );
|
284 |
/**
|
285 |
* Output for the order received page.
|
286 |
*/
|
287 |
+
function thankyou_page() {
|
288 |
if ( $this->instructions )
|
289 |
echo do_shortcode( wpautop( wptexturize( $this->instructions ) ) );
|
290 |
}
|
298 |
* @param bool $sent_to_admin
|
299 |
* @param bool $plain_text
|
300 |
*/
|
301 |
+
function email_instructions( $order, $sent_to_admin, $plain_text = false ) {
|
302 |
if ( $this->instructions_in_email && ! $sent_to_admin && $this->id === wcj_order_get_payment_method( $order ) && $this->default_order_status === ( WCJ_IS_WC_VERSION_BELOW_3 ? $order->status : $order->get_status() ) ) {
|
303 |
echo do_shortcode( wpautop( wptexturize( $this->instructions_in_email ) ) . PHP_EOL );
|
304 |
}
|
307 |
/**
|
308 |
* Process the payment and return the result
|
309 |
*
|
310 |
+
* @version 2.9.0
|
311 |
* @param int $order_id
|
312 |
* @return array
|
313 |
*/
|
314 |
+
function process_payment( $order_id ) {
|
315 |
|
316 |
+
$order = wc_get_order( $order_id );
|
317 |
|
318 |
// Mark as on-hold (we're awaiting the payment)
|
|
|
319 |
$statuses = $this->get_order_statuses();
|
320 |
$note = isset( $statuses[ $this->default_order_status ] ) ? $statuses[ $this->default_order_status ] : '';
|
321 |
+
$order->update_status( $this->default_order_status, $note ); // e.g. 'on-hold', __( 'Awaiting payment', 'woocommerce' )
|
322 |
|
323 |
if ( 'yes' === $this->send_email_to_admin || 'yes' === $this->send_email_to_customer ) {
|
324 |
$woocommerce_mailer = WC()->mailer();
|
327 |
}
|
328 |
|
329 |
// Reduce stock levels
|
330 |
+
if ( WCJ_IS_WC_VERSION_BELOW_3 ) {
|
331 |
+
$order->reduce_order_stock();
|
332 |
+
} else {
|
333 |
+
wc_reduce_stock_levels( $order_id );
|
334 |
+
}
|
335 |
|
336 |
// Remove cart
|
337 |
WC()->cart->empty_cart();
|
348 |
*
|
349 |
* @version 2.5.2
|
350 |
*/
|
351 |
+
function init( $id_count ) {
|
352 |
$this->id = ( 1 === $id_count ) ? 'jetpack_custom_gateway' : 'jetpack_custom_gateway_' . $id_count;
|
353 |
$this->has_fields = false;
|
354 |
$this->method_title = get_option( 'wcj_custom_payment_gateways_admin_title_' . $id_count, __( 'Custom Gateway', 'woocommerce-jetpack' ) . ' #' . $id_count );
|
379 |
/**
|
380 |
* Constructor.
|
381 |
*/
|
382 |
+
function __construct() {
|
383 |
}
|
384 |
}
|
385 |
|
includes/input-fields/class-wcj-product-input-fields-abstract.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Product Input Fields - Abstract
|
4 |
*
|
5 |
-
* @version 2.
|
6 |
* @author Algoritmika Ltd.
|
7 |
*/
|
8 |
|
@@ -669,7 +669,7 @@ class WCJ_Product_Input_Fields_Abstract {
|
|
669 |
/**
|
670 |
* Adds product input values to order details (and emails).
|
671 |
*
|
672 |
-
* @version 2.
|
673 |
*/
|
674 |
function add_product_input_fields_to_order_item_name( $name, $item, $is_cart = false ) {
|
675 |
$total_number = apply_filters( 'booster_get_option', 1, $this->get_value( 'wcj_' . 'product_input_fields' . '_' . $this->scope . '_total_number', $item['product_id'], 1 ) );
|
@@ -677,7 +677,10 @@ class WCJ_Product_Input_Fields_Abstract {
|
|
677 |
return $name;
|
678 |
}
|
679 |
if ( $is_cart ) {
|
680 |
-
$name .= '<dl style="font-size:smaller;">';
|
|
|
|
|
|
|
681 |
}
|
682 |
for ( $i = 1; $i <= $total_number; $i++ ) {
|
683 |
$is_enabled = $this->get_value( 'wcj_product_input_fields_enabled_' . $this->scope . '_' . $i, $item['product_id'], 'no' );
|
@@ -708,20 +711,12 @@ class WCJ_Product_Input_Fields_Abstract {
|
|
708 |
$value = ( isset( $value['name'] ) ) ? $value['name'] : '';
|
709 |
}
|
710 |
if ( '' != $value ) {
|
711 |
-
|
712 |
-
$name .= '<dt>' . $title . '</dt>' . '<dd>' . $value . '</dd>';
|
713 |
-
} else {
|
714 |
-
$name .= str_replace(
|
715 |
-
array( '%title%', '%value%' ),
|
716 |
-
array( $title, $value ),
|
717 |
-
get_option( 'wcj_product_input_fields_frontend_view_order_table_format', ' | %title% %value%' )
|
718 |
-
);
|
719 |
-
}
|
720 |
}
|
721 |
}
|
722 |
}
|
723 |
if ( $is_cart ) {
|
724 |
-
$name .= '</dl>';
|
725 |
}
|
726 |
return $name;
|
727 |
}
|
@@ -735,12 +730,59 @@ class WCJ_Product_Input_Fields_Abstract {
|
|
735 |
return $this->add_product_input_fields_to_order_item_name( $name, $cart_item, true );
|
736 |
}
|
737 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
738 |
/**
|
739 |
* add_product_input_fields_to_order_item_meta.
|
740 |
*
|
741 |
* @version 2.5.0
|
742 |
*/
|
743 |
-
function add_product_input_fields_to_order_item_meta(
|
744 |
$total_number = apply_filters( 'booster_get_option', 1, $this->get_value( 'wcj_' . 'product_input_fields' . '_' . $this->scope . '_total_number', $values['product_id'], 1 ) );
|
745 |
for ( $i = 1; $i <= $total_number; $i++ ) {
|
746 |
if ( array_key_exists( 'wcj_product_input_fields_' . $this->scope . '_' . $i , $values ) ) {
|
2 |
/**
|
3 |
* Booster for WooCommerce - Product Input Fields - Abstract
|
4 |
*
|
5 |
+
* @version 2.9.0
|
6 |
* @author Algoritmika Ltd.
|
7 |
*/
|
8 |
|
669 |
/**
|
670 |
* Adds product input values to order details (and emails).
|
671 |
*
|
672 |
+
* @version 2.9.0
|
673 |
*/
|
674 |
function add_product_input_fields_to_order_item_name( $name, $item, $is_cart = false ) {
|
675 |
$total_number = apply_filters( 'booster_get_option', 1, $this->get_value( 'wcj_' . 'product_input_fields' . '_' . $this->scope . '_total_number', $item['product_id'], 1 ) );
|
677 |
return $name;
|
678 |
}
|
679 |
if ( $is_cart ) {
|
680 |
+
$name .= get_option( 'wcj_product_input_fields_cart_start_template', '<dl style="font-size:smaller;">' );
|
681 |
+
$item_template = get_option( 'wcj_product_input_fields_cart_field_template', '<dt>%title%</dt><dd>%value%</dd>' );
|
682 |
+
} else {
|
683 |
+
$item_template = get_option( 'wcj_product_input_fields_frontend_view_order_table_format', ' | %title% %value%' );
|
684 |
}
|
685 |
for ( $i = 1; $i <= $total_number; $i++ ) {
|
686 |
$is_enabled = $this->get_value( 'wcj_product_input_fields_enabled_' . $this->scope . '_' . $i, $item['product_id'], 'no' );
|
711 |
$value = ( isset( $value['name'] ) ) ? $value['name'] : '';
|
712 |
}
|
713 |
if ( '' != $value ) {
|
714 |
+
$name .= str_replace( array( '%title%', '%value%' ), array( $title, $value ), $item_template );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
715 |
}
|
716 |
}
|
717 |
}
|
718 |
if ( $is_cart ) {
|
719 |
+
$name .= get_option( 'wcj_product_input_fields_cart_end_template', '</dl>' );
|
720 |
}
|
721 |
return $name;
|
722 |
}
|
730 |
return $this->add_product_input_fields_to_order_item_name( $name, $cart_item, true );
|
731 |
}
|
732 |
|
733 |
+
/**
|
734 |
+
* add_product_input_fields_to_cart_item_display_data.
|
735 |
+
*
|
736 |
+
* @version 2.9.0
|
737 |
+
* @since 2.9.0
|
738 |
+
*/
|
739 |
+
function add_product_input_fields_to_cart_item_display_data( $item_data, $item ) {
|
740 |
+
$total_number = apply_filters( 'booster_get_option', 1, $this->get_value( 'wcj_' . 'product_input_fields' . '_' . $this->scope . '_total_number', $item['product_id'], 1 ) );
|
741 |
+
if ( $total_number < 1 ) {
|
742 |
+
return $item_data;
|
743 |
+
}
|
744 |
+
for ( $i = 1; $i <= $total_number; $i++ ) {
|
745 |
+
$is_enabled = $this->get_value( 'wcj_product_input_fields_enabled_' . $this->scope . '_' . $i, $item['product_id'], 'no' );
|
746 |
+
if ( ! ( 'on' === $is_enabled || 'yes' === $is_enabled ) ) {
|
747 |
+
continue;
|
748 |
+
}
|
749 |
+
$type = $this->get_value( 'wcj_product_input_fields_type_' . $this->scope . '_' . $i, $item['product_id'], '' );
|
750 |
+
$meta_key = 'wcj_product_input_fields_' . $this->scope . '_' . $i;
|
751 |
+
$meta_exists = array_key_exists( $meta_key, $item );
|
752 |
+
if ( $meta_exists ) {
|
753 |
+
$value = $item[ $meta_key ];
|
754 |
+
} elseif ( 'checkbox' === $type ) {
|
755 |
+
$value = 'off';
|
756 |
+
$meta_exists = true;
|
757 |
+
}
|
758 |
+
if ( $meta_exists ) {
|
759 |
+
$title = $this->get_value( 'wcj_product_input_fields_title_' . $this->scope . '_' . $i, $item['product_id'], '' );
|
760 |
+
$yes_value = $this->get_value( 'wcj_product_input_fields_type_checkbox_yes_' . $this->scope . '_' . $i, $item['product_id'], '' );
|
761 |
+
$no_value = $this->get_value( 'wcj_product_input_fields_type_checkbox_no_' . $this->scope . '_' . $i, $item['product_id'], '' );
|
762 |
+
if ( 'checkbox' === $type ) {
|
763 |
+
$value = ( 'on' === $value ) ? $yes_value : $no_value;
|
764 |
+
}
|
765 |
+
if ( 'file' === $type ) {
|
766 |
+
$value = maybe_unserialize( $value );
|
767 |
+
$value = ( isset( $value['name'] ) ) ? $value['name'] : '';
|
768 |
+
}
|
769 |
+
if ( '' != $value ) {
|
770 |
+
$item_data[] = array(
|
771 |
+
'key' => $title,
|
772 |
+
'display' => $value,
|
773 |
+
);
|
774 |
+
}
|
775 |
+
}
|
776 |
+
}
|
777 |
+
return $item_data;
|
778 |
+
}
|
779 |
+
|
780 |
/**
|
781 |
* add_product_input_fields_to_order_item_meta.
|
782 |
*
|
783 |
* @version 2.5.0
|
784 |
*/
|
785 |
+
function add_product_input_fields_to_order_item_meta( $item_id, $values, $cart_item_key ) {
|
786 |
$total_number = apply_filters( 'booster_get_option', 1, $this->get_value( 'wcj_' . 'product_input_fields' . '_' . $this->scope . '_total_number', $values['product_id'], 1 ) );
|
787 |
for ( $i = 1; $i <= $total_number; $i++ ) {
|
788 |
if ( array_key_exists( 'wcj_product_input_fields_' . $this->scope . '_' . $i , $values ) ) {
|
includes/input-fields/class-wcj-product-input-fields-global.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Product Input Fields - Global
|
4 |
*
|
5 |
-
* @version 2.
|
6 |
* @author Algoritmika Ltd.
|
7 |
*/
|
8 |
|
@@ -15,7 +15,7 @@ class WCJ_Product_Input_Fields_Global extends WCJ_Product_Input_Fields_Abstract
|
|
15 |
/**
|
16 |
* Constructor.
|
17 |
*
|
18 |
-
* @version 2.
|
19 |
*/
|
20 |
function __construct() {
|
21 |
|
@@ -33,7 +33,11 @@ class WCJ_Product_Input_Fields_Global extends WCJ_Product_Input_Fields_Abstract
|
|
33 |
add_filter( 'woocommerce_get_cart_item_from_session', array( $this, 'get_cart_item_product_input_fields_from_session' ), 100, 3 );
|
34 |
|
35 |
// Show details at cart, order details, emails
|
36 |
-
|
|
|
|
|
|
|
|
|
37 |
add_filter( 'woocommerce_order_item_name', array( $this, 'add_product_input_fields_to_order_item_name' ), 100, 2 );
|
38 |
|
39 |
// Add item meta from cart to order
|
2 |
/**
|
3 |
* Booster for WooCommerce - Product Input Fields - Global
|
4 |
*
|
5 |
+
* @version 2.9.0
|
6 |
* @author Algoritmika Ltd.
|
7 |
*/
|
8 |
|
15 |
/**
|
16 |
* Constructor.
|
17 |
*
|
18 |
+
* @version 2.9.0
|
19 |
*/
|
20 |
function __construct() {
|
21 |
|
33 |
add_filter( 'woocommerce_get_cart_item_from_session', array( $this, 'get_cart_item_product_input_fields_from_session' ), 100, 3 );
|
34 |
|
35 |
// Show details at cart, order details, emails
|
36 |
+
if ( 'data' === get_option( 'wcj_product_input_fields_display_options', 'name' ) ) {
|
37 |
+
add_filter( 'woocommerce_get_item_data', array( $this, 'add_product_input_fields_to_cart_item_display_data' ), PHP_INT_MAX, 2 );
|
38 |
+
} else {
|
39 |
+
add_filter( 'woocommerce_cart_item_name', array( $this, 'add_product_input_fields_to_cart_item_name' ), 100, 3 );
|
40 |
+
}
|
41 |
add_filter( 'woocommerce_order_item_name', array( $this, 'add_product_input_fields_to_order_item_name' ), 100, 2 );
|
42 |
|
43 |
// Add item meta from cart to order
|
includes/input-fields/class-wcj-product-input-fields-per-product.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Product Input Fields - per Product
|
4 |
*
|
5 |
-
* @version 2.
|
6 |
* @author Algoritmika Ltd.
|
7 |
*/
|
8 |
|
@@ -15,13 +15,12 @@ class WCJ_Product_Input_Fields_Per_Product extends WCJ_Product_Input_Fields_Abst
|
|
15 |
/**
|
16 |
* Constructor.
|
17 |
*
|
18 |
-
* @version 2.
|
19 |
*/
|
20 |
-
|
21 |
|
22 |
$this->scope = 'local';
|
23 |
|
24 |
-
// Main hooks
|
25 |
if ( 'yes' === get_option( 'wcj_product_input_fields_local_enabled' ) ) {
|
26 |
|
27 |
// Product Edit
|
@@ -38,7 +37,11 @@ class WCJ_Product_Input_Fields_Per_Product extends WCJ_Product_Input_Fields_Abst
|
|
38 |
add_filter( 'woocommerce_get_cart_item_from_session', array( $this, 'get_cart_item_product_input_fields_from_session' ), 100, 3 );
|
39 |
|
40 |
// Show details at cart, order details, emails
|
41 |
-
|
|
|
|
|
|
|
|
|
42 |
add_filter( 'woocommerce_order_item_name', array( $this, 'add_product_input_fields_to_order_item_name' ), 100, 2 );
|
43 |
|
44 |
// Add item meta from cart to order
|
@@ -62,7 +65,7 @@ class WCJ_Product_Input_Fields_Per_Product extends WCJ_Product_Input_Fields_Abst
|
|
62 |
/**
|
63 |
* get_value.
|
64 |
*/
|
65 |
-
|
66 |
return get_post_meta( $product_id, '_' . $option_name, true );
|
67 |
}
|
68 |
|
@@ -71,7 +74,7 @@ class WCJ_Product_Input_Fields_Per_Product extends WCJ_Product_Input_Fields_Abst
|
|
71 |
*
|
72 |
* @version 2.2.9
|
73 |
*/
|
74 |
-
|
75 |
|
76 |
// Check that we are saving with input fields displayed.
|
77 |
if ( ! isset( $_POST['woojetpack_product_input_fields_save_post'] ) )
|
@@ -103,7 +106,7 @@ class WCJ_Product_Input_Fields_Per_Product extends WCJ_Product_Input_Fields_Abst
|
|
103 |
*
|
104 |
* @version 2.4.8
|
105 |
*/
|
106 |
-
|
107 |
add_meta_box(
|
108 |
'wc-jetpack-product-input-fields',
|
109 |
__( 'Booster: Product Input Fields', 'woocommerce-jetpack' ),
|
@@ -119,7 +122,7 @@ class WCJ_Product_Input_Fields_Per_Product extends WCJ_Product_Input_Fields_Abst
|
|
119 |
*
|
120 |
* @version 2.2.9
|
121 |
*/
|
122 |
-
|
123 |
|
124 |
$meta_box_id = 'product_input_fields';
|
125 |
$meta_box_desc = __( 'Product Input Fields', 'woocommerce-jetpack' );
|
2 |
/**
|
3 |
* Booster for WooCommerce - Product Input Fields - per Product
|
4 |
*
|
5 |
+
* @version 2.9.0
|
6 |
* @author Algoritmika Ltd.
|
7 |
*/
|
8 |
|
15 |
/**
|
16 |
* Constructor.
|
17 |
*
|
18 |
+
* @version 2.9.0
|
19 |
*/
|
20 |
+
function __construct() {
|
21 |
|
22 |
$this->scope = 'local';
|
23 |
|
|
|
24 |
if ( 'yes' === get_option( 'wcj_product_input_fields_local_enabled' ) ) {
|
25 |
|
26 |
// Product Edit
|
37 |
add_filter( 'woocommerce_get_cart_item_from_session', array( $this, 'get_cart_item_product_input_fields_from_session' ), 100, 3 );
|
38 |
|
39 |
// Show details at cart, order details, emails
|
40 |
+
if ( 'data' === get_option( 'wcj_product_input_fields_display_options', 'name' ) ) {
|
41 |
+
add_filter( 'woocommerce_get_item_data', array( $this, 'add_product_input_fields_to_cart_item_display_data' ), PHP_INT_MAX, 2 );
|
42 |
+
} else {
|
43 |
+
add_filter( 'woocommerce_cart_item_name', array( $this, 'add_product_input_fields_to_cart_item_name' ), 100, 3 );
|
44 |
+
}
|
45 |
add_filter( 'woocommerce_order_item_name', array( $this, 'add_product_input_fields_to_order_item_name' ), 100, 2 );
|
46 |
|
47 |
// Add item meta from cart to order
|
65 |
/**
|
66 |
* get_value.
|
67 |
*/
|
68 |
+
function get_value( $option_name, $product_id, $default ) {
|
69 |
return get_post_meta( $product_id, '_' . $option_name, true );
|
70 |
}
|
71 |
|
74 |
*
|
75 |
* @version 2.2.9
|
76 |
*/
|
77 |
+
function save_local_product_input_fields_on_product_edit( $post_id, $post ) {
|
78 |
|
79 |
// Check that we are saving with input fields displayed.
|
80 |
if ( ! isset( $_POST['woojetpack_product_input_fields_save_post'] ) )
|
106 |
*
|
107 |
* @version 2.4.8
|
108 |
*/
|
109 |
+
function add_local_product_input_fields_meta_box_to_product_edit() {
|
110 |
add_meta_box(
|
111 |
'wc-jetpack-product-input-fields',
|
112 |
__( 'Booster: Product Input Fields', 'woocommerce-jetpack' ),
|
122 |
*
|
123 |
* @version 2.2.9
|
124 |
*/
|
125 |
+
function create_local_product_input_fields_meta_box() {
|
126 |
|
127 |
$meta_box_id = 'product_input_fields';
|
128 |
$meta_box_desc = __( 'Product Input Fields', 'woocommerce-jetpack' );
|
includes/js/{ajax_exchange_rates.js → wcj-ajax-exchange-rates.js}
RENAMED
@@ -1,5 +1,5 @@
|
|
1 |
/**
|
2 |
-
*
|
3 |
*
|
4 |
* @version 2.6.0
|
5 |
*/
|
1 |
/**
|
2 |
+
* wcj-ajax-exchange-rates.js
|
3 |
*
|
4 |
* @version 2.6.0
|
5 |
*/
|
includes/js/{checkout.js → wcj-checkout.js}
RENAMED
File without changes
|
includes/js/{eu-vat-number.js → wcj-eu-vat-number.js}
RENAMED
File without changes
|
includes/js/wcj-offer-price.js
ADDED
@@ -0,0 +1,51 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/**
|
2 |
+
* wcj-offer-price.
|
3 |
+
*
|
4 |
+
* @version 2.9.0
|
5 |
+
* @since 2.9.0
|
6 |
+
*/
|
7 |
+
|
8 |
+
// Get the modal
|
9 |
+
var modal = jQuery('#wcj-offer-price-modal');
|
10 |
+
|
11 |
+
// When the user clicks on the button, fill in values and open the modal
|
12 |
+
jQuery('.wcj-offer-price-button').click(function(){
|
13 |
+
// Get data
|
14 |
+
var wcj_data = jQuery.parseJSON(jQuery(this).attr('wcj_data'));
|
15 |
+
// Fill in price input
|
16 |
+
var price_input = jQuery('#wcj-offer-price-price');
|
17 |
+
price_input.attr('step',wcj_data['price_step']);
|
18 |
+
price_input.attr('min',wcj_data['min_price']);
|
19 |
+
if (0 != wcj_data['max_price']){
|
20 |
+
price_input.attr('max',wcj_data['max_price']);
|
21 |
+
}
|
22 |
+
if (0 != wcj_data['default_price']){
|
23 |
+
price_input.val(wcj_data['default_price']);
|
24 |
+
}
|
25 |
+
jQuery('#wcj-offer-price-price-label').html(wcj_data['price_label']);
|
26 |
+
// Fill in form header
|
27 |
+
jQuery('#wcj-offer-form-header').html(wcj_data['form_header']);
|
28 |
+
// Product ID (hidden input)
|
29 |
+
jQuery('#wcj-offer-price-product-id').val(wcj_data['product_id']);
|
30 |
+
// Show the form
|
31 |
+
modal.css('display','block');
|
32 |
+
});
|
33 |
+
|
34 |
+
// When the user clicks on <span> (x), close the modal
|
35 |
+
jQuery('.wcj-offer-price-form-close').first().click(function(){
|
36 |
+
modal.css('display','none');
|
37 |
+
});
|
38 |
+
|
39 |
+
// When the user clicks anywhere outside of the modal, close it
|
40 |
+
jQuery(window).click(function(e){
|
41 |
+
if (modal.is(e.target)){
|
42 |
+
modal.css('display','none');
|
43 |
+
}
|
44 |
+
});
|
45 |
+
|
46 |
+
// When the user presses ESC, close the modal
|
47 |
+
jQuery(document).keyup(function(e){
|
48 |
+
if (27 === e.keyCode){ // esc
|
49 |
+
modal.css('display','none');
|
50 |
+
}
|
51 |
+
});
|
includes/js/{product-input-fields.js → wcj-product-input-fields.js}
RENAMED
File without changes
|
includes/js/wcj-variations-frontend.js
CHANGED
@@ -1,26 +1,109 @@
|
|
1 |
-
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
|
|
|
|
|
|
|
|
|
|
13 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
14 |
jQuery("input:radio[name='wcj_variations']").change(
|
15 |
function(){
|
16 |
-
|
17 |
-
jQuery(this
|
18 |
-
|
19 |
-
|
20 |
-
jQuery("input:hidden[name='" + attribute.name + "']").val(attribute.value);
|
21 |
-
}
|
22 |
-
}
|
23 |
-
);
|
24 |
}
|
25 |
);
|
26 |
-
});
|
1 |
+
/**
|
2 |
+
* Booster for WooCommerce - Variations Radio Buttons
|
3 |
+
*
|
4 |
+
* @version 2.9.0
|
5 |
+
* @author Algoritmika Ltd.
|
6 |
+
*/
|
7 |
+
|
8 |
+
/**
|
9 |
+
* maybe_hide_unavailable.
|
10 |
+
*
|
11 |
+
* @version 2.9.0
|
12 |
+
* @since 2.9.0
|
13 |
+
*/
|
14 |
+
function maybe_hide_unavailable(variation) {
|
15 |
+
if ( ! variation.is_purchasable || ! variation.is_in_stock || ! variation.variation_is_visible ) {
|
16 |
+
jQuery( '.single_add_to_cart_button' ).removeClass( 'wc-variation-selection-needed' ).addClass( 'disabled wc-variation-is-unavailable' );
|
17 |
+
jQuery( '.woocommerce-variation-add-to-cart' ).removeClass( 'woocommerce-variation-add-to-cart-enabled' ).addClass( 'woocommerce-variation-add-to-cart-disabled' );
|
18 |
}
|
19 |
+
}
|
20 |
+
|
21 |
+
/**
|
22 |
+
* process_variations.
|
23 |
+
*
|
24 |
+
* @version 2.9.0
|
25 |
+
* @since 2.9.0
|
26 |
+
*/
|
27 |
+
function process_variations(variation_id) {
|
28 |
+
var data_product_variations = jQuery.parseJSON(jQuery("form.variations_form.cart").attr('data-product_variations'));
|
29 |
+
data_product_variations.forEach(function(variation){
|
30 |
+
if(variation_id == variation.variation_id){
|
31 |
+
maybe_hide_unavailable(variation);
|
32 |
+
jQuery("form.variations_form.cart").wc_variations_image_update(variation);
|
33 |
+
jQuery("div.woocommerce-variation-price").html(variation.price_html);
|
34 |
+
jQuery("div.woocommerce-variation-availability").html(variation.availability_html);
|
35 |
+
}
|
36 |
+
});
|
37 |
+
}
|
38 |
+
|
39 |
+
/**
|
40 |
+
* hide_all.
|
41 |
+
*
|
42 |
+
* @version 2.9.0
|
43 |
+
* @since 2.9.0
|
44 |
+
*/
|
45 |
+
function hide_all() {
|
46 |
+
jQuery("div.woocommerce-variation-availability").hide();
|
47 |
+
jQuery("div.woocommerce-variation-price").hide();
|
48 |
+
jQuery( '.single_add_to_cart_button' ).removeClass( 'wc-variation-is-unavailable' ).addClass( 'disabled wc-variation-selection-needed' );
|
49 |
+
jQuery( '.woocommerce-variation-add-to-cart' ).removeClass( 'woocommerce-variation-add-to-cart-enabled' ).addClass( 'woocommerce-variation-add-to-cart-disabled' );
|
50 |
+
}
|
51 |
+
|
52 |
+
/**
|
53 |
+
* show_all.
|
54 |
+
*
|
55 |
+
* @version 2.9.0
|
56 |
+
* @since 2.9.0
|
57 |
+
*/
|
58 |
+
function show_all() {
|
59 |
+
jQuery("div.woocommerce-variation-availability").show();
|
60 |
+
jQuery("div.woocommerce-variation-price").show();
|
61 |
+
jQuery( '.single_add_to_cart_button' ).removeClass( 'disabled wc-variation-selection-needed wc-variation-is-unavailable' );
|
62 |
+
jQuery( '.woocommerce-variation-add-to-cart' ).removeClass( 'woocommerce-variation-add-to-cart-disabled' ).addClass( 'woocommerce-variation-add-to-cart-enabled' );
|
63 |
+
}
|
64 |
+
|
65 |
+
/**
|
66 |
+
* fill_values.
|
67 |
+
*
|
68 |
+
* @version 2.9.0
|
69 |
+
* @since 2.9.0
|
70 |
+
*/
|
71 |
+
function fill_values(variation_id,radio_element) {
|
72 |
+
jQuery("input:hidden[name='variation_id']").val(variation_id);
|
73 |
+
jQuery(radio_element.attributes).each(
|
74 |
+
function(i, attribute){
|
75 |
+
if(attribute.name.match("^attribute_")){
|
76 |
+
jQuery("input:hidden[name='" + attribute.name + "']").val(attribute.value);
|
77 |
+
}
|
78 |
+
}
|
79 |
+
);
|
80 |
+
}
|
81 |
+
|
82 |
+
/**
|
83 |
+
* document ready.
|
84 |
+
*
|
85 |
+
* @version 2.9.0
|
86 |
+
*/
|
87 |
+
jQuery(document).ready(function() {
|
88 |
+
// Initial display
|
89 |
+
jQuery("form.variations_form.cart").on('wc_variation_form',function(){
|
90 |
+
if(jQuery("input:radio[name='wcj_variations']").is(':checked')){
|
91 |
+
show_all();
|
92 |
+
var checked_radio = jQuery("input:radio[name='wcj_variations']:checked");
|
93 |
+
var variation_id = checked_radio.attr("variation_id");
|
94 |
+
fill_values(variation_id, checked_radio[0]);
|
95 |
+
process_variations(variation_id);
|
96 |
+
} else {
|
97 |
+
hide_all();
|
98 |
+
}
|
99 |
+
});
|
100 |
+
// On change
|
101 |
jQuery("input:radio[name='wcj_variations']").change(
|
102 |
function(){
|
103 |
+
show_all();
|
104 |
+
var variation_id = jQuery(this).attr("variation_id");
|
105 |
+
fill_values(variation_id, this);
|
106 |
+
process_variations(variation_id);
|
|
|
|
|
|
|
|
|
107 |
}
|
108 |
);
|
109 |
+
});
|
includes/lib/tcpdf_min/config/tcpdf_config.php
CHANGED
@@ -59,13 +59,10 @@
|
|
59 |
*/
|
60 |
//define ('K_PATH_FONTS', K_PATH_MAIN.'fonts/');
|
61 |
////////////////////////////////////////////
|
62 |
-
// Algoritmika - Booster version 2.
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
$tcpdf_fonts_dir = $tcpdf_fonts_dir['basedir'] . '/woocommerce_uploads/wcj_uploads/tcpdf_fonts/';
|
67 |
-
define ('K_PATH_FONTS', $tcpdf_fonts_dir );
|
68 |
-
*/
|
69 |
////////////////////////////////////////////
|
70 |
|
71 |
/**
|
59 |
*/
|
60 |
//define ('K_PATH_FONTS', K_PATH_MAIN.'fonts/');
|
61 |
////////////////////////////////////////////
|
62 |
+
// Algoritmika - Booster - version 2.9.0 / since 2.9.0
|
63 |
+
if ( wcj_check_tcpdf_fonts_version( true ) ) {
|
64 |
+
define( 'K_PATH_FONTS', wcj_get_wcj_uploads_dir( 'tcpdf_fonts' ) . '/' );
|
65 |
+
}
|
|
|
|
|
|
|
66 |
////////////////////////////////////////////
|
67 |
|
68 |
/**
|
includes/lib/tcpdf_min/fonts/angsanaupc.ctg.z
DELETED
Binary file
|
includes/lib/tcpdf_min/fonts/angsanaupc.php
DELETED
@@ -1,48 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
$type='TrueTypeUnicode';
|
3 |
-
$name='AngsanaUPC';
|
4 |
-
$desc=array('Ascent'=>923,'Descent'=>-239,'CapHeight'=>5,'Flags'=>32,'FontBBox'=>'[-490 -410 791 941]','ItalicAngle'=>0,'StemV'=>70,'MissingWidth'=>600);
|
5 |
-
$up=-50;
|
6 |
-
$ut=25;
|
7 |
-
$dw=600;
|
8 |
-
$cw=array(
|
9 |
-
32=>165,33=>220,34=>270,35=>330,36=>330,37=>550,38=>513,39=>119,40=>220,41=>220,
|
10 |
-
42=>330,43=>372,44=>165,45=>220,46=>165,47=>183,48=>330,49=>330,50=>330,51=>330,
|
11 |
-
52=>330,53=>330,54=>330,55=>330,56=>330,57=>330,58=>183,59=>183,60=>372,61=>372,
|
12 |
-
62=>372,63=>293,64=>608,65=>477,66=>440,67=>440,68=>477,69=>403,70=>367,71=>477,
|
13 |
-
72=>477,73=>220,74=>257,75=>477,76=>403,77=>587,78=>477,79=>477,80=>367,81=>477,
|
14 |
-
82=>440,83=>367,84=>403,85=>477,86=>477,87=>623,88=>477,89=>477,90=>403,91=>220,
|
15 |
-
92=>183,93=>220,94=>310,95=>330,96=>220,97=>293,98=>330,99=>293,100=>330,101=>293,
|
16 |
-
102=>220,103=>330,104=>330,105=>183,106=>183,107=>330,108=>183,109=>513,110=>330,111=>330,
|
17 |
-
112=>330,113=>330,114=>220,115=>257,116=>183,117=>330,118=>330,119=>477,120=>330,121=>330,
|
18 |
-
122=>293,123=>317,124=>132,125=>317,126=>357,8364=>330,8218=>165,402=>330,8222=>293,8230=>660,
|
19 |
-
8224=>330,8225=>330,710=>220,8240=>660,352=>367,8249=>220,338=>587,8216=>220,8217=>220,8220=>293,
|
20 |
-
8221=>293,8226=>231,8211=>330,8212=>660,732=>220,8482=>647,353=>257,8250=>220,339=>477,376=>477,
|
21 |
-
161=>220,162=>330,163=>330,164=>330,165=>330,166=>132,167=>330,168=>220,169=>501,170=>182,
|
22 |
-
171=>330,172=>372,173=>220,174=>501,175=>330,176=>264,177=>362,178=>198,179=>198,180=>220,
|
23 |
-
181=>380,182=>299,183=>165,184=>220,185=>198,186=>205,187=>330,188=>495,189=>495,190=>495,
|
24 |
-
191=>293,192=>477,193=>477,194=>477,195=>477,196=>477,197=>477,198=>587,199=>440,200=>403,
|
25 |
-
201=>403,202=>403,203=>403,204=>220,205=>220,206=>220,207=>220,208=>477,209=>477,210=>477,
|
26 |
-
211=>477,212=>477,213=>477,214=>477,215=>372,216=>477,217=>477,218=>477,219=>477,220=>477,
|
27 |
-
221=>477,222=>367,223=>330,224=>293,225=>293,226=>293,227=>293,228=>293,229=>293,230=>440,
|
28 |
-
231=>293,232=>293,233=>293,234=>293,235=>293,236=>183,237=>183,238=>183,239=>183,240=>330,
|
29 |
-
241=>330,242=>330,243=>330,244=>330,245=>330,246=>330,247=>362,248=>330,249=>330,250=>330,
|
30 |
-
251=>330,252=>330,253=>330,254=>330,255=>330,63259=>0,63232=>378,63233=>0,63234=>0,63235=>0,
|
31 |
-
63236=>0,63237=>0,63238=>0,63239=>0,63240=>0,63241=>0,63242=>0,63243=>0,63244=>0,63245=>0,
|
32 |
-
63246=>0,63247=>525,63248=>0,63249=>0,63250=>0,63251=>0,63252=>0,63253=>0,63254=>0,63255=>0,
|
33 |
-
3584=>100,3585=>396,3586=>398,3587=>454,3588=>398,3589=>400,3590=>484,3591=>315,3592=>355,3593=>428,
|
34 |
-
3594=>405,3595=>440,3596=>506,3597=>522,3598=>420,3599=>425,3600=>378,3601=>524,3602=>521,3603=>534,
|
35 |
-
3604=>400,3605=>401,3606=>395,3607=>450,3608=>380,3609=>460,3610=>450,3611=>450,3612=>391,3613=>391,
|
36 |
-
3614=>464,3615=>464,3616=>414,3617=>420,3618=>343,3619=>342,3620=>395,3621=>395,3622=>415,3623=>354,
|
37 |
-
3624=>390,3625=>441,3626=>440,3627=>467,3628=>455,3629=>394,3630=>371,3631=>400,3632=>358,3633=>0,
|
38 |
-
3634=>285,3635=>285,3636=>0,3637=>0,3638=>0,3639=>0,3640=>0,3641=>0,3642=>0,63260=>221,
|
39 |
-
63261=>221,3647=>440,3648=>168,3649=>377,3650=>342,3651=>306,3652=>344,3653=>292,3654=>425,3655=>0,
|
40 |
-
3656=>0,3657=>0,3658=>0,3659=>0,3660=>0,3661=>0,3662=>0,3663=>428,3664=>402,3665=>404,
|
41 |
-
3666=>568,3667=>510,3668=>512,3669=>528,3670=>427,3671=>536,3672=>502,3673=>408,3674=>471,3675=>816,
|
42 |
-
63256=>0,63257=>0,63258=>0,9702=>220,305=>183,711=>220);
|
43 |
-
$enc='';
|
44 |
-
$diff='';
|
45 |
-
$file='angsanaupc.z';
|
46 |
-
$ctg='angsanaupc.ctg.z';
|
47 |
-
$originalsize=95808;
|
48 |
-
?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/lib/tcpdf_min/fonts/angsanaupc.z
DELETED
Binary file
|
includes/lib/tcpdf_min/fonts/angsanaupcb.ctg.z
DELETED
Binary file
|
includes/lib/tcpdf_min/fonts/angsanaupcb.php
DELETED
@@ -1,48 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
$type='TrueTypeUnicode';
|
3 |
-
$name='AngsanaUPC-Bold';
|
4 |
-
$desc=array('Ascent'=>888,'Descent'=>-239,'CapHeight'=>4,'Flags'=>32,'FontBBox'=>'[-501 -433 783 995]','ItalicAngle'=>0,'StemV'=>120,'MissingWidth'=>600);
|
5 |
-
$up=-50;
|
6 |
-
$ut=25;
|
7 |
-
$dw=600;
|
8 |
-
$cw=array(
|
9 |
-
32=>165,33=>220,34=>366,35=>330,36=>330,37=>660,38=>550,39=>183,40=>220,41=>220,
|
10 |
-
42=>330,43=>376,44=>165,45=>220,46=>165,47=>183,48=>330,49=>330,50=>330,51=>330,
|
11 |
-
52=>330,53=>330,54=>330,55=>330,56=>330,57=>330,58=>220,59=>220,60=>376,61=>376,
|
12 |
-
62=>376,63=>330,64=>614,65=>477,66=>440,67=>477,68=>477,69=>440,70=>403,71=>513,
|
13 |
-
72=>513,73=>257,74=>330,75=>513,76=>440,77=>623,78=>477,79=>513,80=>403,81=>513,
|
14 |
-
82=>477,83=>367,84=>440,85=>477,86=>477,87=>660,88=>477,89=>477,90=>440,91=>220,
|
15 |
-
92=>183,93=>220,94=>384,95=>330,96=>220,97=>330,98=>367,99=>293,100=>367,101=>293,
|
16 |
-
102=>220,103=>330,104=>367,105=>183,106=>220,107=>367,108=>183,109=>550,110=>367,111=>330,
|
17 |
-
112=>367,113=>367,114=>293,115=>257,116=>220,117=>367,118=>330,119=>477,120=>330,121=>330,
|
18 |
-
122=>293,123=>260,124=>145,125=>260,126=>358,8364=>330,8218=>220,402=>330,8222=>330,8230=>660,
|
19 |
-
8224=>330,8225=>330,710=>220,8240=>660,352=>367,8249=>220,338=>660,8216=>220,8217=>220,8220=>330,
|
20 |
-
8221=>330,8226=>231,8211=>330,8212=>660,732=>220,8482=>660,353=>257,8250=>220,339=>477,376=>477,
|
21 |
-
161=>220,162=>330,163=>330,164=>330,165=>330,166=>146,167=>330,168=>220,169=>493,170=>198,
|
22 |
-
171=>330,172=>376,173=>220,174=>493,175=>330,176=>264,177=>362,178=>198,179=>198,180=>220,
|
23 |
-
181=>380,182=>356,183=>165,184=>220,185=>198,186=>218,187=>330,188=>495,189=>495,190=>495,
|
24 |
-
191=>330,192=>477,193=>477,194=>477,195=>477,196=>477,197=>477,198=>660,199=>477,200=>440,
|
25 |
-
201=>440,202=>440,203=>440,204=>257,205=>257,206=>257,207=>257,208=>477,209=>477,210=>513,
|
26 |
-
211=>513,212=>513,213=>513,214=>513,215=>376,216=>514,217=>477,218=>477,219=>477,220=>477,
|
27 |
-
221=>477,222=>403,223=>367,224=>330,225=>330,226=>330,227=>330,228=>330,229=>330,230=>477,
|
28 |
-
231=>293,232=>293,233=>293,234=>293,235=>293,236=>184,237=>184,238=>184,239=>184,240=>330,
|
29 |
-
241=>367,242=>330,243=>330,244=>330,245=>330,246=>330,247=>362,248=>330,249=>367,250=>367,
|
30 |
-
251=>367,252=>367,253=>330,254=>367,255=>330,63259=>0,63232=>386,63233=>0,63234=>0,63235=>0,
|
31 |
-
63236=>0,63237=>0,63238=>0,63239=>0,63240=>0,63241=>0,63242=>0,63243=>0,63244=>0,63245=>0,
|
32 |
-
63246=>0,63247=>540,63248=>0,63249=>0,63250=>0,63251=>0,63252=>0,63253=>0,63254=>0,63255=>0,
|
33 |
-
3584=>100,3585=>383,3586=>415,3587=>453,3588=>404,3589=>419,3590=>499,3591=>324,3592=>380,3593=>426,
|
34 |
-
3594=>403,3595=>470,3596=>527,3597=>545,3598=>444,3599=>449,3600=>386,3601=>526,3602=>561,3603=>543,
|
35 |
-
3604=>411,3605=>418,3606=>398,3607=>447,3608=>383,3609=>460,3610=>442,3611=>444,3612=>414,3613=>414,
|
36 |
-
3614=>494,3615=>494,3616=>433,3617=>435,3618=>370,3619=>349,3620=>387,3621=>383,3622=>437,3623=>360,
|
37 |
-
3624=>417,3625=>442,3626=>420,3627=>462,3628=>568,3629=>383,3630=>374,3631=>440,3632=>350,3633=>0,
|
38 |
-
3634=>284,3635=>284,3636=>0,3637=>0,3638=>0,3639=>0,3640=>0,3641=>0,3642=>0,63260=>221,
|
39 |
-
63261=>221,3647=>440,3648=>174,3649=>356,3650=>251,3651=>232,3652=>291,3653=>300,3654=>338,3655=>0,
|
40 |
-
3656=>0,3657=>0,3658=>0,3659=>0,3660=>0,3661=>0,3662=>0,3663=>357,3664=>380,3665=>358,
|
41 |
-
3666=>529,3667=>498,3668=>496,3669=>508,3670=>356,3671=>515,3672=>503,3673=>388,3674=>491,3675=>821,
|
42 |
-
63256=>0,63257=>0,63258=>0,9702=>220,305=>184,711=>220);
|
43 |
-
$enc='';
|
44 |
-
$diff='';
|
45 |
-
$file='angsanaupcb.z';
|
46 |
-
$ctg='angsanaupcb.ctg.z';
|
47 |
-
$originalsize=91688;
|
48 |
-
?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/lib/tcpdf_min/fonts/angsanaupcb.z
DELETED
Binary file
|
includes/lib/tcpdf_min/fonts/angsanaupcbi.ctg.z
DELETED
Binary file
|
includes/lib/tcpdf_min/fonts/angsanaupcbi.php
DELETED
@@ -1,37 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
$type='TrueTypeUnicode';
|
3 |
-
$name='AngsanaUPC-BoldItalic';
|
4 |
-
$desc=array('Ascent'=>928,'Descent'=>-206,'CapHeight'=>-40,'Flags'=>96,'FontBBox'=>'[-458 -433 790 994]','ItalicAngle'=>-10,'StemV'=>120,'MissingWidth'=>600);
|
5 |
-
$up=-50;
|
6 |
-
$ut=25;
|
7 |
-
$dw=600;
|
8 |
-
$cw=array(
|
9 |
-
32=>165,33=>257,34=>366,35=>330,36=>330,37=>550,38=>513,39=>183,40=>220,41=>220,
|
10 |
-
42=>330,43=>376,44=>165,45=>220,46=>165,47=>183,48=>330,49=>330,50=>330,51=>330,
|
11 |
-
52=>330,53=>330,54=>330,55=>330,56=>330,57=>330,58=>220,59=>220,60=>376,61=>376,
|
12 |
-
62=>376,63=>330,64=>549,65=>440,66=>440,67=>440,68=>477,69=>440,70=>440,71=>477,
|
13 |
-
72=>513,73=>257,74=>330,75=>440,76=>403,77=>587,78=>477,79=>477,80=>403,81=>477,
|
14 |
-
82=>440,83=>367,84=>403,85=>477,86=>440,87=>587,88=>440,89=>403,90=>403,91=>220,
|
15 |
-
92=>183,93=>220,94=>376,95=>330,96=>220,97=>330,98=>330,99=>293,100=>330,101=>293,
|
16 |
-
102=>220,103=>330,104=>367,105=>183,106=>183,107=>330,108=>183,109=>513,110=>367,111=>330,
|
17 |
-
112=>330,113=>330,114=>257,115=>257,116=>183,117=>367,118=>293,119=>440,120=>330,121=>293,
|
18 |
-
122=>257,123=>230,124=>145,125=>230,126=>376,8364=>330,8230=>660,8216=>220,8217=>220,8220=>330,
|
19 |
-
8221=>330,8226=>231,8211=>330,8212=>660,63259=>0,63232=>386,63233=>0,63234=>0,63235=>0,63236=>0,
|
20 |
-
63237=>0,63238=>0,63239=>0,63240=>0,63241=>0,63242=>0,63243=>0,63244=>0,63245=>0,63246=>0,
|
21 |
-
63247=>540,63248=>0,63249=>0,63250=>0,63251=>0,63252=>0,63253=>0,63254=>0,63255=>0,3584=>100,
|
22 |
-
3585=>383,3586=>415,3587=>453,3588=>404,3589=>419,3590=>499,3591=>324,3592=>380,3593=>426,3594=>403,
|
23 |
-
3595=>470,3596=>527,3597=>545,3598=>444,3599=>449,3600=>363,3601=>526,3602=>561,3603=>543,3604=>411,
|
24 |
-
3605=>418,3606=>398,3607=>447,3608=>383,3609=>460,3610=>442,3611=>444,3612=>414,3613=>414,3614=>494,
|
25 |
-
3615=>489,3616=>433,3617=>435,3618=>370,3619=>349,3620=>387,3621=>383,3622=>437,3623=>360,3624=>417,
|
26 |
-
3625=>442,3626=>420,3627=>462,3628=>568,3629=>383,3630=>374,3631=>440,3633=>0,3632=>350,3634=>284,
|
27 |
-
3635=>284,3636=>0,3637=>0,3638=>0,3639=>0,3640=>0,3641=>0,3642=>0,63260=>221,63261=>221,
|
28 |
-
3647=>448,3648=>174,3649=>356,3650=>251,3651=>232,3652=>291,3653=>300,3654=>338,3655=>0,3656=>0,
|
29 |
-
3657=>0,3658=>0,3659=>0,3660=>2,3661=>0,3662=>0,3663=>357,3664=>380,3665=>358,3666=>529,
|
30 |
-
3667=>498,3668=>496,3669=>508,3670=>356,3671=>515,3672=>503,3673=>388,3674=>491,3675=>821,63256=>0,
|
31 |
-
63257=>0,63258=>0);
|
32 |
-
$enc='';
|
33 |
-
$diff='';
|
34 |
-
$file='angsanaupcbi.z';
|
35 |
-
$ctg='angsanaupcbi.ctg.z';
|
36 |
-
$originalsize=76280;
|
37 |
-
?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/lib/tcpdf_min/fonts/angsanaupcbi.z
DELETED
Binary file
|
includes/lib/tcpdf_min/fonts/angsanaupci.ctg.z
DELETED
Binary file
|
includes/lib/tcpdf_min/fonts/angsanaupci.php
DELETED
@@ -1,37 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
$type='TrueTypeUnicode';
|
3 |
-
$name='AngsanaUPC-Italic';
|
4 |
-
$desc=array('Ascent'=>923,'Descent'=>-239,'CapHeight'=>-44,'Flags'=>96,'FontBBox'=>'[-434 -410 797 941]','ItalicAngle'=>-10,'StemV'=>70,'MissingWidth'=>600);
|
5 |
-
$up=-50;
|
6 |
-
$ut=25;
|
7 |
-
$dw=600;
|
8 |
-
$cw=array(
|
9 |
-
32=>165,33=>220,34=>277,35=>330,36=>330,37=>550,38=>513,39=>141,40=>220,41=>220,
|
10 |
-
42=>330,43=>445,44=>165,45=>220,46=>165,47=>183,48=>330,49=>330,50=>330,51=>330,
|
11 |
-
52=>330,53=>330,54=>330,55=>330,56=>330,57=>330,58=>220,59=>220,60=>445,61=>445,
|
12 |
-
62=>445,63=>330,64=>607,65=>403,66=>403,67=>440,68=>477,69=>403,70=>403,71=>477,
|
13 |
-
72=>477,73=>220,74=>293,75=>440,76=>367,77=>550,78=>440,79=>477,80=>403,81=>477,
|
14 |
-
82=>403,83=>330,84=>367,85=>477,86=>403,87=>550,88=>403,89=>367,90=>367,91=>257,
|
15 |
-
92=>183,93=>257,94=>279,95=>330,96=>220,97=>330,98=>330,99=>293,100=>330,101=>293,
|
16 |
-
102=>183,103=>330,104=>330,105=>183,106=>183,107=>293,108=>183,109=>477,110=>330,111=>330,
|
17 |
-
112=>330,113=>330,114=>257,115=>257,116=>183,117=>330,118=>293,119=>440,120=>293,121=>293,
|
18 |
-
122=>257,123=>264,124=>181,125=>264,126=>357,8364=>330,8230=>587,8216=>220,8217=>220,8220=>367,
|
19 |
-
8221=>367,8226=>231,8211=>330,8212=>587,63259=>0,63232=>378,63233=>0,63234=>0,63235=>0,63236=>0,
|
20 |
-
63237=>0,63238=>0,63239=>0,63240=>0,63241=>0,63242=>0,63243=>0,63244=>0,63245=>0,63246=>0,
|
21 |
-
63247=>525,63248=>0,63249=>0,63250=>0,63251=>0,63252=>0,63253=>0,63254=>0,63255=>0,3584=>100,
|
22 |
-
3585=>396,3586=>398,3587=>454,3588=>398,3589=>400,3590=>484,3591=>315,3592=>355,3593=>428,3594=>405,
|
23 |
-
3595=>440,3596=>506,3597=>522,3598=>420,3599=>425,3600=>378,3601=>524,3602=>521,3603=>534,3604=>400,
|
24 |
-
3605=>401,3606=>394,3607=>450,3608=>380,3609=>460,3610=>450,3611=>450,3612=>391,3613=>390,3614=>464,
|
25 |
-
3615=>464,3616=>414,3617=>420,3618=>343,3619=>342,3620=>395,3621=>395,3622=>415,3623=>354,3624=>390,
|
26 |
-
3625=>441,3626=>440,3627=>467,3628=>455,3629=>394,3630=>371,3631=>400,3633=>0,3632=>358,3634=>285,
|
27 |
-
3635=>290,3636=>0,3637=>0,3638=>0,3639=>0,3640=>0,3641=>0,3642=>0,63260=>221,63261=>221,
|
28 |
-
3647=>440,3648=>168,3649=>377,3650=>342,3651=>306,3652=>344,3653=>292,3654=>425,3655=>0,3656=>0,
|
29 |
-
3657=>0,3658=>0,3659=>0,3660=>0,3661=>0,3662=>0,3663=>428,3664=>402,3665=>404,3666=>568,
|
30 |
-
3667=>510,3668=>512,3669=>528,3670=>427,3671=>536,3672=>502,3673=>408,3674=>471,3675=>816,63256=>0,
|
31 |
-
63257=>0,63258=>0);
|
32 |
-
$enc='';
|
33 |
-
$diff='';
|
34 |
-
$file='angsanaupci.z';
|
35 |
-
$ctg='angsanaupci.ctg.z';
|
36 |
-
$originalsize=75060;
|
37 |
-
?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/lib/tcpdf_min/fonts/angsanaupci.z
DELETED
Binary file
|
includes/lib/tcpdf_min/fonts/cordiaupc.ctg.z
DELETED
Binary file
|
includes/lib/tcpdf_min/fonts/cordiaupc.php
DELETED
@@ -1,48 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
$type='TrueTypeUnicode';
|
3 |
-
$name='CordiaUPC';
|
4 |
-
$desc=array('Ascent'=>893,'Descent'=>-254,'CapHeight'=>4,'Flags'=>32,'FontBBox'=>'[-452 -488 777 898]','ItalicAngle'=>0,'StemV'=>70,'MissingWidth'=>600);
|
5 |
-
$up=-50;
|
6 |
-
$ut=25;
|
7 |
-
$dw=600;
|
8 |
-
$cw=array(
|
9 |
-
32=>182,33=>218,34=>182,35=>365,36=>365,37=>583,38=>437,39=>146,40=>218,41=>218,
|
10 |
-
42=>255,43=>433,44=>182,45=>218,46=>182,47=>182,48=>365,49=>365,50=>365,51=>365,
|
11 |
-
52=>365,53=>365,54=>365,55=>365,56=>365,57=>365,58=>182,59=>182,60=>433,61=>433,
|
12 |
-
62=>433,63=>328,64=>524,65=>437,66=>437,67=>473,68=>473,69=>400,70=>365,71=>510,
|
13 |
-
72=>473,73=>182,74=>328,75=>437,76=>365,77=>546,78=>473,79=>510,80=>400,81=>510,
|
14 |
-
82=>437,83=>400,84=>365,85=>473,86=>400,87=>583,88=>400,89=>400,90=>400,91=>218,
|
15 |
-
92=>182,93=>218,94=>433,95=>328,96=>218,97=>365,98=>400,99=>365,100=>400,101=>365,
|
16 |
-
102=>182,103=>400,104=>365,105=>146,106=>146,107=>328,108=>146,109=>546,110=>365,111=>365,
|
17 |
-
112=>400,113=>400,114=>218,115=>328,116=>182,117=>365,118=>328,119=>473,120=>328,121=>328,
|
18 |
-
122=>328,123=>218,124=>146,125=>218,126=>433,8218=>151,402=>377,8222=>226,8230=>655,8224=>377,
|
19 |
-
8225=>377,710=>226,8240=>679,352=>400,8249=>226,338=>679,8216=>146,8217=>146,8220=>255,8221=>255,
|
20 |
-
8226=>328,8211=>328,8212=>655,732=>226,8482=>679,353=>328,8250=>226,339=>641,376=>400,161=>226,
|
21 |
-
162=>377,163=>377,164=>377,165=>377,166=>176,167=>377,168=>226,169=>500,170=>251,171=>377,
|
22 |
-
172=>396,173=>226,174=>500,175=>375,176=>271,177=>373,178=>226,179=>226,180=>226,181=>391,
|
23 |
-
182=>365,183=>188,184=>226,185=>226,186=>248,187=>377,188=>566,189=>566,190=>566,191=>415,
|
24 |
-
192=>437,193=>437,194=>437,195=>437,196=>437,197=>437,198=>679,199=>473,200=>400,201=>400,
|
25 |
-
202=>400,203=>400,204=>182,205=>182,206=>182,207=>182,208=>490,209=>473,210=>510,211=>510,
|
26 |
-
212=>510,213=>510,214=>510,215=>396,216=>528,217=>473,218=>473,219=>473,220=>473,221=>400,
|
27 |
-
222=>453,223=>415,224=>365,225=>365,226=>365,227=>365,228=>365,229=>365,230=>604,231=>365,
|
28 |
-
232=>365,233=>365,234=>365,235=>365,236=>188,237=>188,238=>188,239=>188,240=>377,241=>365,
|
29 |
-
242=>365,243=>365,244=>365,245=>365,246=>365,247=>373,248=>415,249=>365,250=>365,251=>365,
|
30 |
-
252=>365,253=>328,254=>377,255=>328,63259=>0,63232=>382,63233=>0,63234=>0,63235=>0,63236=>0,
|
31 |
-
63237=>0,63238=>0,63239=>0,63240=>0,63241=>0,63242=>0,63243=>0,63244=>0,63245=>0,63246=>0,
|
32 |
-
63247=>608,63248=>0,63249=>0,63250=>0,63251=>0,63252=>0,63253=>0,63254=>0,63255=>0,3584=>100,
|
33 |
-
3585=>400,3586=>376,3587=>400,3588=>417,3589=>417,3590=>487,3591=>313,3592=>382,3593=>405,3594=>382,
|
34 |
-
3595=>382,3596=>597,3597=>608,3598=>440,3599=>440,3600=>382,3601=>504,3602=>614,3603=>608,3604=>417,
|
35 |
-
3605=>417,3606=>400,3607=>429,3608=>359,3609=>429,3610=>446,3611=>446,3612=>405,3613=>405,3614=>463,
|
36 |
-
3615=>463,3616=>440,3617=>434,3618=>400,3619=>301,3620=>400,3621=>405,3622=>440,3623=>347,3624=>417,
|
37 |
-
3625=>475,3626=>405,3627=>429,3628=>463,3629=>394,3630=>382,3631=>359,3632=>359,3633=>0,3634=>347,
|
38 |
-
3635=>347,3636=>0,3637=>0,3638=>0,3639=>0,3640=>0,3641=>0,3642=>0,63260=>220,63261=>220,
|
39 |
-
3647=>437,3648=>202,3649=>376,3650=>243,3651=>278,3652=>260,3653=>347,3654=>376,3655=>0,3656=>0,
|
40 |
-
3657=>0,3658=>0,3659=>0,3660=>0,3661=>0,3662=>0,3663=>313,3664=>463,3665=>463,3666=>487,
|
41 |
-
3667=>487,3668=>487,3669=>487,3670=>463,3671=>487,3672=>487,3673=>487,3674=>409,3675=>792,63256=>0,
|
42 |
-
63257=>0,63258=>0,9702=>226,305=>188,711=>226);
|
43 |
-
$enc='';
|
44 |
-
$diff='';
|
45 |
-
$file='cordiaupc.z';
|
46 |
-
$ctg='cordiaupc.ctg.z';
|
47 |
-
$originalsize=96088;
|
48 |
-
?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/lib/tcpdf_min/fonts/cordiaupc.z
DELETED
Binary file
|
includes/lib/tcpdf_min/fonts/cordiaupcb.ctg.z
DELETED
Binary file
|
includes/lib/tcpdf_min/fonts/cordiaupcb.php
DELETED
@@ -1,48 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
$type='TrueTypeUnicode';
|
3 |
-
$name='CordiaUPC-Bold';
|
4 |
-
$desc=array('Ascent'=>833,'Descent'=>-261,'CapHeight'=>3,'Flags'=>32,'FontBBox'=>'[-547 -417 791 833]','ItalicAngle'=>0,'StemV'=>120,'MissingWidth'=>600);
|
5 |
-
$up=-50;
|
6 |
-
$ut=25;
|
7 |
-
$dw=600;
|
8 |
-
$cw=array(
|
9 |
-
32=>224,33=>182,34=>233,35=>365,36=>365,37=>583,38=>437,39=>125,40=>218,41=>218,
|
10 |
-
42=>255,43=>383,44=>182,45=>218,46=>182,47=>182,48=>365,49=>365,50=>365,51=>365,
|
11 |
-
52=>365,53=>365,54=>365,55=>365,56=>365,57=>365,58=>182,59=>182,60=>383,61=>383,
|
12 |
-
62=>383,63=>365,64=>665,65=>437,66=>437,67=>473,68=>473,69=>437,70=>400,71=>510,
|
13 |
-
72=>473,73=>182,74=>328,75=>437,76=>365,77=>546,78=>473,79=>510,80=>437,81=>510,
|
14 |
-
82=>473,83=>437,84=>400,85=>473,86=>437,87=>618,88=>437,89=>437,90=>400,91=>182,
|
15 |
-
92=>182,93=>182,94=>307,95=>365,96=>218,97=>365,98=>365,99=>328,100=>365,101=>365,
|
16 |
-
102=>182,103=>365,104=>365,105=>146,106=>146,107=>328,108=>146,109=>546,110=>365,111=>365,
|
17 |
-
112=>365,113=>365,114=>218,115=>328,116=>182,117=>365,118=>328,119=>473,120=>328,121=>328,
|
18 |
-
122=>328,123=>219,124=>170,125=>219,126=>383,8218=>146,402=>365,8222=>218,8230=>655,8224=>365,
|
19 |
-
8225=>365,710=>218,8240=>655,352=>437,8249=>218,338=>655,8216=>146,8217=>146,8220=>218,8221=>218,
|
20 |
-
8226=>229,8211=>365,8212=>655,732=>218,8482=>655,353=>328,8250=>218,339=>619,376=>437,161=>218,
|
21 |
-
162=>365,163=>365,164=>365,165=>365,166=>170,167=>365,168=>218,169=>483,170=>243,171=>365,
|
22 |
-
172=>383,173=>218,174=>483,175=>362,176=>262,177=>360,178=>218,179=>218,180=>218,181=>377,
|
23 |
-
182=>352,183=>182,184=>218,185=>218,186=>239,187=>365,188=>546,189=>546,190=>546,191=>400,
|
24 |
-
192=>437,193=>437,194=>437,195=>437,196=>437,197=>437,198=>655,199=>473,200=>437,201=>437,
|
25 |
-
202=>437,203=>437,204=>182,205=>182,206=>182,207=>182,208=>473,209=>473,210=>510,211=>510,
|
26 |
-
212=>510,213=>510,214=>510,215=>383,216=>510,217=>473,218=>473,219=>473,220=>473,221=>437,
|
27 |
-
222=>437,223=>400,224=>365,225=>365,226=>365,227=>365,228=>365,229=>365,230=>583,231=>328,
|
28 |
-
232=>365,233=>365,234=>365,235=>365,236=>182,237=>182,238=>182,239=>182,240=>365,241=>365,
|
29 |
-
242=>365,243=>365,244=>365,245=>365,246=>365,247=>360,248=>400,249=>365,250=>365,251=>365,
|
30 |
-
252=>365,253=>328,254=>365,255=>328,63259=>0,63232=>395,63233=>0,63234=>0,63235=>0,63236=>0,
|
31 |
-
63237=>0,63238=>0,63239=>0,63240=>0,63241=>0,63242=>0,63243=>0,63244=>0,63245=>0,63246=>0,
|
32 |
-
63247=>625,63248=>0,63249=>0,63250=>0,63251=>0,63252=>0,63253=>0,63254=>0,63255=>0,3584=>100,
|
33 |
-
3585=>441,3586=>433,3587=>441,3588=>451,3589=>457,3590=>505,3591=>333,3592=>419,3593=>470,3594=>434,
|
34 |
-
3595=>436,3596=>626,3597=>626,3598=>485,3599=>489,3600=>399,3601=>544,3602=>627,3603=>624,3604=>458,
|
35 |
-
3605=>458,3606=>439,3607=>483,3608=>418,3609=>483,3610=>487,3611=>487,3612=>440,3613=>439,3614=>520,
|
36 |
-
3615=>523,3616=>479,3617=>472,3618=>430,3619=>363,3620=>438,3621=>444,3622=>482,3623=>373,3624=>448,
|
37 |
-
3625=>494,3626=>444,3627=>483,3628=>530,3629=>451,3630=>416,3631=>415,3632=>371,3633=>0,3634=>351,
|
38 |
-
3635=>351,3636=>0,3637=>0,3638=>0,3639=>0,3640=>0,3641=>0,3642=>0,63260=>224,63261=>224,
|
39 |
-
3647=>437,3648=>247,3649=>439,3650=>273,3651=>318,3652=>299,3653=>349,3654=>528,3655=>0,3656=>0,
|
40 |
-
3657=>0,3658=>0,3659=>0,3660=>0,3661=>0,3662=>0,3663=>503,3664=>425,3665=>436,3666=>466,
|
41 |
-
3667=>448,3668=>460,3669=>460,3670=>464,3671=>550,3672=>496,3673=>516,3674=>487,3675=>806,63256=>0,
|
42 |
-
63257=>0,63258=>0,9702=>218,305=>182,711=>218);
|
43 |
-
$enc='';
|
44 |
-
$diff='';
|
45 |
-
$file='cordiaupcb.z';
|
46 |
-
$ctg='cordiaupcb.ctg.z';
|
47 |
-
$originalsize=82952;
|
48 |
-
?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/lib/tcpdf_min/fonts/cordiaupcb.z
DELETED
Binary file
|
includes/lib/tcpdf_min/fonts/cordiaupcbi.ctg.z
DELETED
Binary file
|
includes/lib/tcpdf_min/fonts/cordiaupcbi.php
DELETED
@@ -1,37 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
$type='TrueTypeUnicode';
|
3 |
-
$name='CordiaUPC-BoldItalic';
|
4 |
-
$desc=array('Ascent'=>833,'Descent'=>-262,'CapHeight'=>-21,'Flags'=>96,'FontBBox'=>'[-490 -399 797 833]','ItalicAngle'=>-10,'StemV'=>120,'MissingWidth'=>600);
|
5 |
-
$up=-50;
|
6 |
-
$ut=25;
|
7 |
-
$dw=600;
|
8 |
-
$cw=array(
|
9 |
-
32=>182,33=>182,34=>233,35=>365,36=>365,37=>583,38=>437,39=>125,40=>218,41=>218,
|
10 |
-
42=>255,43=>383,44=>182,45=>218,46=>182,47=>182,48=>365,49=>365,50=>365,51=>365,
|
11 |
-
52=>365,53=>365,54=>365,55=>365,56=>365,57=>365,58=>182,59=>182,60=>383,61=>383,
|
12 |
-
62=>383,63=>365,64=>665,65=>437,66=>437,67=>473,68=>473,69=>437,70=>400,71=>510,
|
13 |
-
72=>473,73=>182,74=>328,75=>437,76=>365,77=>546,78=>473,79=>510,80=>437,81=>510,
|
14 |
-
82=>473,83=>437,84=>400,85=>473,86=>437,87=>618,88=>437,89=>437,90=>400,91=>182,
|
15 |
-
92=>182,93=>182,94=>307,95=>365,96=>218,97=>365,98=>365,99=>328,100=>365,101=>365,
|
16 |
-
102=>182,103=>365,104=>365,105=>146,106=>146,107=>328,108=>146,109=>546,110=>365,111=>365,
|
17 |
-
112=>365,113=>365,114=>218,115=>328,116=>182,117=>365,118=>328,119=>473,120=>328,121=>328,
|
18 |
-
122=>328,123=>219,124=>170,125=>219,126=>383,8230=>655,8216=>146,8217=>146,8220=>218,8221=>218,
|
19 |
-
8226=>229,8211=>365,8212=>655,63259=>0,63232=>395,63233=>0,63234=>0,63235=>0,63236=>0,63237=>0,
|
20 |
-
63238=>0,63239=>0,63240=>0,63241=>0,63242=>0,63243=>0,63244=>0,63245=>0,63246=>0,63247=>625,
|
21 |
-
63248=>0,63249=>0,63250=>0,63251=>0,63252=>0,63253=>0,63254=>0,63255=>0,3584=>100,3585=>441,
|
22 |
-
3586=>433,3587=>441,3588=>451,3589=>457,3590=>505,3591=>333,3592=>419,3593=>470,3594=>434,3595=>436,
|
23 |
-
3596=>626,3597=>626,3598=>485,3599=>489,3600=>399,3601=>544,3602=>627,3603=>624,3604=>458,3605=>458,
|
24 |
-
3606=>439,3607=>483,3608=>418,3609=>483,3610=>487,3611=>487,3612=>439,3613=>439,3614=>523,3615=>523,
|
25 |
-
3616=>479,3617=>472,3618=>430,3619=>363,3620=>438,3621=>444,3622=>482,3623=>373,3624=>448,3625=>494,
|
26 |
-
3626=>444,3627=>483,3628=>530,3629=>451,3630=>416,3631=>415,3632=>371,3633=>0,3634=>351,3635=>351,
|
27 |
-
3636=>0,3637=>0,3638=>0,3639=>0,3640=>0,3641=>0,3642=>0,63260=>224,63261=>224,3647=>437,
|
28 |
-
3648=>247,3649=>439,3650=>273,3651=>318,3652=>299,3653=>349,3654=>528,3655=>0,3656=>0,3657=>0,
|
29 |
-
3658=>0,3659=>0,3660=>0,3661=>0,3662=>0,3663=>510,3664=>425,3665=>436,3666=>466,3667=>448,
|
30 |
-
3668=>460,3669=>460,3670=>464,3671=>550,3672=>496,3673=>516,3674=>487,3675=>806,63256=>0,63257=>0,
|
31 |
-
63258=>0);
|
32 |
-
$enc='';
|
33 |
-
$diff='';
|
34 |
-
$file='cordiaupcbi.z';
|
35 |
-
$ctg='cordiaupcbi.ctg.z';
|
36 |
-
$originalsize=69840;
|
37 |
-
?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/lib/tcpdf_min/fonts/cordiaupcbi.z
DELETED
Binary file
|
includes/lib/tcpdf_min/fonts/cordiaupci.ctg.z
DELETED
Binary file
|
includes/lib/tcpdf_min/fonts/cordiaupci.php
DELETED
@@ -1,37 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
$type='TrueTypeUnicode';
|
3 |
-
$name='CordiaUPC-Italic';
|
4 |
-
$desc=array('Ascent'=>893,'Descent'=>-254,'CapHeight'=>-15,'Flags'=>96,'FontBBox'=>'[-394 -460 781 898]','ItalicAngle'=>-10,'StemV'=>70,'MissingWidth'=>600);
|
5 |
-
$up=-50;
|
6 |
-
$ut=25;
|
7 |
-
$dw=600;
|
8 |
-
$cw=array(
|
9 |
-
32=>220,33=>218,34=>182,35=>365,36=>365,37=>583,38=>437,39=>146,40=>218,41=>218,
|
10 |
-
42=>255,43=>433,44=>182,45=>218,46=>182,47=>182,48=>365,49=>365,50=>365,51=>365,
|
11 |
-
52=>365,53=>365,54=>365,55=>365,56=>365,57=>365,58=>182,59=>182,60=>433,61=>433,
|
12 |
-
62=>433,63=>328,64=>524,65=>437,66=>437,67=>473,68=>473,69=>400,70=>365,71=>510,
|
13 |
-
72=>473,73=>182,74=>328,75=>437,76=>365,77=>546,78=>473,79=>510,80=>400,81=>510,
|
14 |
-
82=>437,83=>400,84=>365,85=>473,86=>400,87=>583,88=>400,89=>400,90=>400,91=>218,
|
15 |
-
92=>182,93=>218,94=>433,95=>328,96=>218,97=>365,98=>400,99=>365,100=>400,101=>365,
|
16 |
-
102=>182,103=>400,104=>365,105=>146,106=>146,107=>328,108=>146,109=>546,110=>365,111=>365,
|
17 |
-
112=>400,113=>400,114=>218,115=>328,116=>182,117=>365,118=>328,119=>473,120=>328,121=>328,
|
18 |
-
122=>328,123=>218,124=>146,125=>218,126=>433,8230=>655,8216=>146,8217=>146,8220=>255,8221=>255,
|
19 |
-
8226=>328,8211=>328,8212=>655,63259=>0,63232=>382,63233=>0,63234=>0,63235=>0,63236=>0,63237=>0,
|
20 |
-
63238=>0,63239=>0,63240=>0,63241=>0,63242=>0,63243=>0,63244=>0,63245=>0,63246=>0,63247=>608,
|
21 |
-
63248=>0,63249=>0,63250=>0,63251=>0,63252=>0,63253=>0,63254=>0,63255=>0,3584=>100,3585=>400,
|
22 |
-
3586=>376,3587=>400,3588=>417,3589=>417,3590=>487,3591=>313,3592=>382,3593=>405,3594=>382,3595=>382,
|
23 |
-
3596=>597,3597=>608,3598=>440,3599=>440,3600=>382,3601=>504,3602=>614,3603=>608,3604=>417,3605=>417,
|
24 |
-
3606=>400,3607=>429,3608=>359,3609=>429,3610=>446,3611=>446,3612=>405,3613=>405,3614=>463,3615=>463,
|
25 |
-
3616=>440,3617=>434,3618=>400,3619=>301,3620=>400,3621=>405,3622=>440,3623=>347,3624=>417,3625=>475,
|
26 |
-
3626=>405,3627=>429,3628=>463,3629=>394,3630=>382,3631=>359,3632=>359,3633=>0,3634=>347,3635=>347,
|
27 |
-
3636=>0,3637=>0,3638=>0,3639=>0,3640=>0,3641=>0,3642=>0,63260=>220,63261=>220,3647=>437,
|
28 |
-
3648=>202,3649=>376,3650=>243,3651=>278,3652=>260,3653=>347,3654=>376,3655=>0,3656=>0,3657=>0,
|
29 |
-
3658=>0,3659=>0,3660=>0,3661=>0,3662=>0,3663=>313,3664=>463,3665=>463,3666=>487,3667=>487,
|
30 |
-
3668=>487,3669=>487,3670=>463,3671=>487,3672=>487,3673=>487,3674=>409,3675=>792,63256=>0,63257=>0,
|
31 |
-
63258=>0);
|
32 |
-
$enc='';
|
33 |
-
$diff='';
|
34 |
-
$file='cordiaupci.z';
|
35 |
-
$ctg='cordiaupci.ctg.z';
|
36 |
-
$originalsize=75700;
|
37 |
-
?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/lib/tcpdf_min/fonts/cordiaupci.z
DELETED
Binary file
|
includes/lib/tcpdf_min/fonts/dejavusans.ctg.z
DELETED
Binary file
|
includes/lib/tcpdf_min/fonts/dejavusans.php
DELETED
@@ -1,16 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
// TCPDF FONT FILE DESCRIPTION
|
3 |
-
$type='TrueTypeUnicode';
|
4 |
-
$name='DejaVuSans';
|
5 |
-
$up=-63;
|
6 |
-
$ut=44;
|
7 |
-
$dw=600;
|
8 |
-
$diff='';
|
9 |
-
$originalsize=741536;
|
10 |
-
$enc='';
|
11 |
-
$file='dejavusans.z';
|
12 |
-
$ctg='dejavusans.ctg.z';
|
13 |
-
$desc=array('Flags'=>32,'FontBBox'=>'[-1021 -415 1681 1167]','ItalicAngle'=>0,'Ascent'=>928,'Descent'=>-236,'Leading'=>0,'CapHeight'=>729,'XHeight'=>547,'StemV'=>34,'StemH'=>15,'AvgWidth'=>507,'MaxWidth'=>1735,'MissingWidth'=>600);
|
14 |
-
$cbbox=array(0=>array(50,-177,550,705),32=>array(151,0,250,729),33=>array(151,0,250,729),34=>array(96,458,364,729),35=>array(77,0,761,718),36=>array(83,-147,553,760),37=>array(55,-14,895,742),38=>array(63,-14,749,742),39=>array(96,458,179,729),40=>array(86,-132,310,759),41=>array(80,-132,304,759),42=>array(30,286,470,742),43=>array(106,0,732,627),44=>array(77,-116,220,124),45=>array(49,234,312,314),46=>array(107,0,210,124),47=>array(0,-93,337,729),48=>array(66,-14,570,742),49=>array(110,0,544,729),50=>array(73,0,536,742),51=>array(76,-14,556,742),52=>array(49,0,580,729),53=>array(77,-14,549,729),54=>array(70,-14,573,742),55=>array(82,0,551,729),56=>array(68,-14,568,742),57=>array(63,-14,566,742),58=>array(117,0,220,517),59=>array(77,-116,220,517),60=>array(106,46,732,581),61=>array(106,172,732,454),62=>array(106,46,732,581),63=>array(72,0,461,742),64=>array(66,-174,930,704),65=>array(8,0,676,729),66=>array(98,0,615,729),67=>array(56,-14,644,742),68=>array(98,0,711,729),69=>array(98,0,568,729),70=>array(98,0,517,729),71=>array(56,-14,693,742),72=>array(98,0,654,729),73=>array(98,0,197,729),74=>array(-52,-200,197,729),75=>array(98,0,677,729),76=>array(98,0,552,729),77=>array(98,0,765,729),78=>array(98,0,650,729),79=>array(56,-14,731,742),80=>array(98,0,569,729),81=>array(56,-129,731,742),82=>array(98,0,666,729),83=>array(66,-14,579,742),84=>array(-3,0,614,729),85=>array(87,-14,645,729),86=>array(8,0,676,729),87=>array(33,0,956,729),88=>array(30,0,654,729),89=>array(-2,0,613,729),90=>array(45,0,640,729),91=>array(86,-132,293,760),92=>array(0,-93,337,729),93=>array(97,-132,304,760),94=>array(106,457,732,729),95=>array(-10,-236,510,-166),96=>array(83,617,317,800),97=>array(60,-14,522,560),98=>array(91,-14,580,760),99=>array(55,-14,488,560),100=>array(55,-14,544,760),101=>array(55,-14,562,560),102=>array(23,0,371,760),103=>array(55,-208,544,560),104=>array(91,0,549,760),105=>array(94,0,184,760),106=>array(-18,-208,184,760),107=>array(91,0,576,760),108=>array(94,0,184,760),109=>array(91,0,889,560),110=>array(91,0,549,560),111=>array(55,-14,557,560),112=>array(91,-208,580,560),113=>array(55,-208,544,560),114=>array(91,0,411,560),115=>array(54,-14,472,560),116=>array(27,0,368,702),117=>array(85,-14,543,560),118=>array(30,0,562,547),119=>array(42,0,776,547),120=>array(29,0,559,547),121=>array(30,-208,562,547),122=>array(43,0,482,547),123=>array(125,-163,511,760),124=>array(127,-236,210,764),125=>array(125,-163,511,760),126=>array(106,228,732,399),160=>array(151,0,250,729),161=>array(151,0,250,729),162=>array(84,-153,517,699),163=>array(63,0,548,742),164=>array(46,40,592,587),165=>array(40,0,595,729),166=>array(127,-171,210,699),167=>array(45,-95,454,742),168=>array(105,659,395,758),169=>array(138,0,862,725),170=>array(56,229,404,742),171=>array(77,69,518,517),172=>array(106,140,732,421),173=>array(49,234,312,314),174=>array(138,0,862,725),175=>array(104,673,396,745),176=>array(95,432,405,742),177=>array(106,0,732,627),178=>array(46,326,338,742),179=>array(48,319,350,742),180=>array(181,616,415,800),181=>array(85,-208,612,547),182=>array(77,-96,528,729),183=>array(107,285,210,409),184=>array(142,-193,344,0),185=>array(67,326,346,734),186=>array(47,229,424,742),187=>array(94,69,535,517),188=>array(67,-14,937,742),189=>array(67,-14,906,742),190=>array(48,-14,937,742),191=>array(70,-14,459,729),192=>array(8,0,676,927),193=>array(8,0,676,927),194=>array(8,0,676,928),195=>array(8,0,676,921),196=>array(8,0,676,913),197=>array(8,0,676,928),198=>array(4,0,910,729),199=>array(56,-193,644,742),200=>array(98,0,568,927),201=>array(98,0,568,927),202=>array(98,0,568,928),203=>array(98,0,568,913),204=>array(29,0,216,927),205=>array(79,0,265,927),206=>array(-1,0,297,928),207=>array(3,0,293,913),208=>array(5,0,716,729),209=>array(98,0,650,921),210=>array(56,-14,731,927),211=>array(56,-14,731,927),212=>array(56,-14,731,928),213=>array(56,-14,731,921),214=>array(56,-14,731,913),215=>array(137,31,701,596),216=>array(50,-34,737,761),217=>array(87,-14,645,927),218=>array(87,-14,645,927),219=>array(87,-14,645,928),220=>array(87,-14,645,913),221=>array(-2,0,613,927),222=>array(98,0,569,729),223=>array(91,-14,584,760),224=>array(60,-14,522,800),225=>array(60,-14,522,800),226=>array(60,-14,522,800),227=>array(60,-14,522,777),228=>array(60,-14,522,758),229=>array(60,-14,522,878),230=>array(60,-14,929,560),231=>array(55,-193,488,560),232=>array(55,-14,562,800),233=>array(55,-14,562,800),234=>array(55,-14,562,800),235=>array(55,-14,562,758),236=>array(-28,0,206,800),237=>array(70,0,304,800),238=>array(-17,0,295,800),239=>array(-6,0,284,758),240=>array(55,-14,557,760),241=>array(91,0,549,777),242=>array(55,-14,557,800),243=>array(55,-14,557,800),244=>array(55,-14,557,800),245=>array(55,-14,557,777),246=>array(55,-14,557,758),247=>array(106,73,732,554),248=>array(35,-46,576,592),249=>array(85,-14,543,800),250=>array(85,-14,543,800),251=>array(85,-14,543,800),252=>array(85,-14,543,758),253=>array(30,-208,562,800),254=>array(91,-208,580,760),255=>array(30,-208,562,758),256=>array(8,0,676,899),257=>array(60,-14,522,745),258=>array(8,0,676,946),259=>array(60,-14,522,765),260=>array(8,-193,706,729),261=>array(60,-193,563,560),262=>array(56,-14,644,927),263=>array(55,-14,488,800),264=>array(56,-14,644,928),265=>array(55,-14,488,800),266=>array(56,-14,644,914),267=>array(55,-14,488,760),268=>array(56,-14,644,928),269=>array(55,-14,488,800),270=>array(98,0,711,928),271=>array(55,-14,732,760),272=>array(5,0,716,729),273=>array(55,-14,619,760),274=>array(98,0,568,900),275=>array(55,-14,562,745),276=>array(98,0,568,928),277=>array(55,-14,562,785),278=>array(98,0,568,914),279=>array(55,-14,562,760),280=>array(98,-193,569,729),281=>array(55,-193,562,560),282=>array(98,0,568,925),283=>array(55,-14,562,797),284=>array(56,-14,693,928),285=>array(55,-208,544,800),286=>array(56,-14,693,928),287=>array(55,-208,544,785),288=>array(56,-14,693,914),289=>array(55,-208,544,760),290=>array(56,-250,693,742),291=>array(55,-208,544,775),292=>array(98,0,654,928),293=>array(-13,0,549,928),294=>array(98,0,818,729),295=>array(59,0,578,760),296=>array(-14,0,309,921),297=>array(-22,0,300,777),298=>array(1,0,293,899),299=>array(-7,0,285,745),300=>array(-5,0,300,928),301=>array(-14,0,292,785),302=>array(86,-193,268,729),303=>array(73,-193,255,760),304=>array(98,0,198,914),305=>array(94,0,184,560),306=>array(98,-200,492,729),307=>array(94,-208,461,760),308=>array(-52,-200,296,928),309=>array(-18,-208,295,800),310=>array(98,-235,677,729),311=>array(91,-235,576,760),312=>array(91,0,576,547),313=>array(98,0,552,928),314=>array(94,0,286,928),315=>array(98,-235,552,729),316=>array(66,-235,209,760),317=>array(98,0,552,729),318=>array(94,0,375,760),319=>array(98,0,552,729),320=>array(94,0,314,760),321=>array(-7,0,557,729),322=>array(1,0,285,760),323=>array(98,0,650,928),324=>array(91,0,549,803),325=>array(98,-235,650,729),326=>array(91,-235,549,560),327=>array(98,0,650,921),328=>array(91,0,549,800),329=>array(100,0,715,729),330=>array(98,-208,637,742),331=>array(91,-208,549,560),332=>array(56,-14,731,899),333=>array(55,-14,557,745),334=>array(56,-14,731,928),335=>array(55,-14,557,785),336=>array(56,-14,731,927),337=>array(55,-14,557,800),338=>array(56,0,1006,729),339=>array(55,-14,970,560),340=>array(98,0,666,928),341=>array(91,0,447,803),342=>array(98,-235,666,729),343=>array(63,-235,411,560),344=>array(98,0,666,921),345=>array(91,0,419,800),346=>array(66,-14,579,928),347=>array(54,-14,472,803),348=>array(66,-14,579,928),349=>array(54,-14,472,800),350=>array(66,-193,579,742),351=>array(54,-193,472,560),352=>array(66,-14,579,928),353=>array(54,-14,472,800),354=>array(-3,-193,614,729),355=>array(27,-193,368,702),356=>array(-3,0,614,921),357=>array(27,0,374,813),358=>array(-3,0,614,729),359=>array(27,0,368,702),360=>array(87,-14,645,921),361=>array(85,-14,543,777),362=>array(87,-14,645,899),363=>array(85,-14,543,745),364=>array(87,-14,645,928),365=>array(85,-14,543,785),366=>array(87,-14,645,929),367=>array(85,-14,543,849),368=>array(87,-14,645,927),369=>array(85,-14,546,800),370=>array(87,-193,645,729),371=>array(85,-193,613,560),372=>array(33,0,956,932),373=>array(42,0,776,803),374=>array(-2,0,613,932),375=>array(30,-208,562,803),376=>array(-2,0,613,913),377=>array(45,0,640,928),378=>array(43,0,482,803),379=>array(45,0,640,914),380=>array(43,0,482,760),381=>array(45,0,640,928),382=>array(43,0,482,800),383=>array(23,0,371,760),384=>array(16,-14,580,760),385=>array(-51,0,664,729),386=>array(98,0,615,729),387=>array(91,-14,580,760),388=>array(0,0,615,729),389=>array(0,-14,580,760),390=>array(56,-14,644,742),391=>array(56,-14,794,924),392=>array(55,-14,600,760),393=>array(5,0,716,729),394=>array(-51,0,760,729),395=>array(98,0,615,729),396=>array(55,-14,544,760),397=>array(55,-208,557,548),398=>array(64,0,534,729),399=>array(57,-14,731,742),400=>array(80,-14,560,742),401=>array(-52,-200,517,729),402=>array(-63,-208,371,760),403=>array(56,-14,824,924),404=>array(4,-210,683,729),405=>array(91,0,910,760),406=>array(98,0,347,729),407=>array(5,0,290,729),408=>array(98,0,746,742),409=>array(90,0,576,760),410=>array(5,0,271,760),411=>array(30,0,562,760),412=>array(87,-14,894,729),413=>array(-52,-200,650,729),414=>array(91,-208,549,560),415=>array(56,-14,731,742),416=>array(50,-14,764,760),417=>array(58,-14,603,615),418=>array(56,-14,851,742),419=>array(55,-208,668,560),420=>array(-51,0,618,729),421=>array(90,-208,580,760),422=>array(98,-129,666,729),423=>array(56,-14,569,742),424=>array(49,-14,467,560),425=>array(98,0,568,729),426=>array(-132,-208,355,760),427=>array(27,-208,368,702),428=>array(12,0,614,729),429=>array(27,0,368,760),430=>array(-3,-200,614,729),431=>array(84,-4,796,760),432=>array(86,-14,676,615),433=>array(38,-14,726,724),434=>array(98,-15,683,729),435=>array(-2,0,742,742),436=>array(30,-208,730,560),437=>array(45,0,640,729),438=>array(43,0,482,547),439=>array(78,-31,621,729),440=>array(45,-31,588,729),441=>array(51,-213,531,547),442=>array(55,-208,488,547),443=>array(73,0,536,742),444=>array(45,-31,622,729),445=>array(51,-213,531,547),446=>array(43,-14,456,702),447=>array(91,-208,580,560),448=>array(98,-208,197,729),449=>array(98,-208,394,729),450=>array(10,-208,451,729),451=>array(98,0,197,729),452=>array(98,0,1352,928),453=>array(98,0,1211,800),454=>array(55,-14,1071,800),455=>array(98,-200,768,729),456=>array(98,-208,733,760),457=>array(94,-208,367,760),458=>array(98,-200,868,729),459=>array(98,-208,839,760),460=>array(91,-208,733,760),461=>array(8,0,676,928),462=>array(60,-14,522,800),463=>array(-1,0,297,928),464=>array(-16,0,296,800),465=>array(56,-14,731,928),466=>array(55,-14,557,800),467=>array(87,-14,645,928),468=>array(85,-14,543,800),469=>array(87,-14,645,1025),470=>array(85,-14,543,899),471=>array(87,-14,645,1044),472=>array(85,-14,543,892),473=>array(87,-14,645,1044),474=>array(85,-14,543,892),475=>array(87,-14,645,1047),476=>array(85,-14,543,892),477=>array(55,-14,562,560),478=>array(8,0,676,1025),479=>array(60,-14,522,899),480=>array(8,0,676,1025),481=>array(60,-14,522,869),482=>array(4,0,910,900),483=>array(60,-14,929,743),484=>array(56,-14,752,742),485=>array(55,-208,622,560),486=>array(56,-14,693,928),487=>array(55,-208,544,798),488=>array(98,0,677,928),489=>array(-11,0,576,928),490=>array(56,-193,731,742),491=>array(55,-193,557,560),492=>array(56,-193,731,899),493=>array(55,-193,557,745),494=>array(78,-31,621,928),495=>array(43,-213,523,800),496=>array(-18,-208,299,800),497=>array(98,0,1352,729),498=>array(98,0,1211,729),499=>array(55,-14,1071,760),500=>array(56,-14,693,928),501=>array(55,-208,544,798),502=>array(98,-14,1022,729),503=>array(98,-208,626,742),504=>array(98,0,650,927),505=>array(91,0,549,799),506=>array(8,0,676,931),507=>array(60,-14,607,931),508=>array(4,0,910,928),509=>array(60,-14,929,798),510=>array(50,-34,737,928),511=>array(35,-46,576,798),512=>array(8,0,676,930),513=>array(60,-14,522,799),514=>array(8,0,676,901),515=>array(60,-14,522,785),516=>array(98,0,568,930),517=>array(55,-14,562,798),518=>array(98,0,568,901),519=>array(55,-14,562,785),520=>array(-43,0,306,930),521=>array(-30,0,313,798),522=>array(2,0,308,901),523=>array(-14,0,292,785),524=>array(56,-14,731,930),525=>array(55,-14,557,799),526=>array(56,-14,731,901),527=>array(55,-14,557,785),528=>array(97,0,666,930),529=>array(63,0,411,798),530=>array(98,0,666,901),531=>array(91,0,421,785),532=>array(87,-14,645,930),533=>array(85,-14,543,799),534=>array(87,-14,645,901),535=>array(85,-14,543,785),536=>array(66,-240,579,742),537=>array(54,-240,472,560),538=>array(-3,-240,614,729),539=>array(27,-240,368,702),540=>array(76,-210,556,742),541=>array(35,-211,467,560),542=>array(98,0,654,928),543=>array(-8,0,549,928),544=>array(98,-208,637,742),545=>array(55,-70,783,760),546=>array(55,-14,643,742),547=>array(55,-14,555,632),548=>array(45,-208,640,729),549=>array(43,-208,482,547),550=>array(8,0,676,914),551=>array(60,-14,522,760),552=>array(98,-193,568,729),553=>array(55,-193,562,560),554=>array(56,-14,731,1025),555=>array(55,-14,557,899),556=>array(56,-14,731,1025),557=>array(55,-14,557,864),558=>array(56,-14,731,914),559=>array(55,-14,557,760),560=>array(56,-14,731,1025),561=>array(55,-14,557,899),562=>array(-2,0,613,899),563=>array(30,-208,562,745),564=>array(67,-70,420,757),565=>array(91,-70,788,560),566=>array(27,-70,422,702),567=>array(-18,-208,184,547),568=>array(55,-14,943,760),569=>array(55,-208,943,560),570=>array(-1,-34,686,761),571=>array(6,-34,692,761),572=>array(4,-46,545,592),573=>array(5,0,552,729),574=>array(-38,-34,649,761),575=>array(54,-242,512,560),576=>array(43,-242,525,547),577=>array(39,0,569,729),578=>array(39,0,445,560),579=>array(5,0,615,729),580=>array(6,-14,726,729),581=>array(8,0,676,729),582=>array(98,-93,568,822),583=>array(55,-93,562,640),584=>array(-52,-200,290,729),585=>array(-18,-208,264,760),586=>array(56,-200,836,743),587=>array(55,-208,656,560),588=>array(5,0,666,729),589=>array(7,0,411,560),590=>array(-5,0,615,729),591=>array(5,-208,588,547),592=>array(85,-14,547,560),593=>array(55,-14,544,560),594=>array(91,-14,580,560),595=>array(91,-14,580,760),596=>array(62,-14,495,560),597=>array(55,-69,488,560),598=>array(55,-208,656,760),599=>array(55,-14,715,760),600=>array(55,-14,562,560),601=>array(55,-14,562,560),602=>array(61,-14,814,560),603=>array(65,-14,473,561),604=>array(65,-14,473,561),605=>array(65,-14,771,561),606=>array(55,-14,596,561),607=>array(-18,-208,264,547),608=>array(55,-208,715,760),609=>array(55,-208,544,547),610=>array(55,-14,539,560),611=>array(47,-210,549,547),612=>array(47,-14,549,547),613=>array(85,-208,543,547),614=>array(91,0,549,760),615=>array(91,-208,549,760),616=>array(7,0,265,760),617=>array(81,0,304,547),618=>array(57,0,314,547),619=>array(37,0,359,760),620=>array(38,0,416,760),621=>array(94,-208,296,760),622=>array(94,-213,651,760),623=>array(91,-13,889,548),624=>array(91,-208,889,548),625=>array(91,-208,889,560),626=>array(-18,-208,552,560),627=>array(91,-208,661,560),628=>array(87,0,549,547),629=>array(55,-14,557,560),630=>array(55,0,768,547),631=>array(72,-18,655,561),632=>array(55,-208,602,760),633=>array(0,-13,320,547),634=>array(0,-13,320,755),635=>array(0,-208,433,547),636=>array(91,-207,411,560),637=>array(91,-208,411,560),638=>array(64,0,437,560),639=>array(57,0,437,560),640=>array(91,0,574,547),641=>array(91,0,574,547),642=>array(54,-208,472,560),643=>array(-19,-208,355,760),644=>array(-19,-208,355,760),645=>array(27,-208,401,549),646=>array(-132,-208,355,760),647=>array(27,-156,368,546),648=>array(27,-208,370,702),649=>array(0,-14,634,547),650=>array(55,-15,564,547),651=>array(94,0,545,548),652=>array(30,0,562,547),653=>array(42,0,776,547),654=>array(30,0,562,760),655=>array(50,0,552,547),656=>array(43,-208,593,547),657=>array(43,-54,482,547),658=>array(43,-213,523,547),659=>array(53,-213,553,547),660=>array(43,0,456,759),661=>array(43,0,456,759),662=>array(43,0,456,759),663=>array(43,-213,456,760),664=>array(56,-14,731,742),665=>array(91,0,530,547),666=>array(55,-14,596,561),667=>array(55,-14,724,760),668=>array(91,0,563,547),669=>array(-132,-208,272,760),670=>array(91,-213,576,547),671=>array(91,0,493,547),672=>array(55,-208,746,759),673=>array(43,0,456,759),674=>array(43,0,456,759),675=>array(55,-14,970,760),676=>array(55,-213,1014,760),677=>array(55,-54,970,760),678=>array(27,0,781,702),679=>array(27,-208,629,760),680=>array(27,-70,723,702),681=>array(23,-208,804,760),682=>array(94,0,657,760),683=>array(94,0,610,760),684=>array(26,-15,489,640),685=>array(26,84,489,640),686=>array(0,-214,570,760),687=>array(0,-208,683,760),688=>array(57,326,346,751),689=>array(57,326,346,751),690=>array(-11,209,116,751),691=>array(57,326,259,640),692=>array(35,319,236,632),693=>array(35,209,307,632),694=>array(16,326,320,632),695=>array(26,326,489,632),696=>array(19,209,354,632),697=>array(78,557,203,800),698=>array(78,557,384,800),699=>array(85,489,228,729),700=>array(87,499,230,729),701=>array(96,616,239,856),702=>array(57,492,191,760),703=>array(57,492,191,760),704=>array(57,326,317,751),705=>array(57,326,317,751),706=>array(130,524,370,836),707=>array(130,524,370,836),708=>array(94,561,406,800),709=>array(94,561,406,800),710=>array(94,616,406,800),711=>array(94,616,406,800),712=>array(104,488,171,759),713=>array(104,673,396,745),714=>array(181,616,415,800),715=>array(83,617,317,800),716=>array(104,-148,171,123),717=>array(104,-156,396,-84),718=>array(83,-236,317,-54),719=>array(181,-236,415,-53),720=>array(54,0,229,517),721=>array(54,356,229,517),722=>array(57,249,191,517),723=>array(57,249,191,517),724=>array(140,229,360,448),725=>array(140,229,360,448),726=>array(49,125,341,417),727=>array(49,234,269,307),728=>array(97,645,403,785),729=>array(200,658,300,758),730=>array(116,610,384,878),731=>array(162,-193,344,0),732=>array(89,639,411,777),733=>array(117,616,460,800),734=>array(-0,233,334,504),735=>array(117,616,383,800),736=>array(57,208,374,632),737=>array(60,326,116,751),738=>array(57,326,320,648),739=>array(57,326,391,632),740=>array(57,326,317,751),741=>array(104,0,389,668),742=>array(104,0,389,668),743=>array(104,0,389,668),744=>array(104,0,389,668),745=>array(104,0,389,668),748=>array(94,-260,406,-21),749=>array(104,610,396,808),750=>array(85,489,428,729),755=>array(116,-240,384,28),759=>array(89,-192,411,-55),768=>array(-418,560,-184,800),769=>array(-320,560,-86,800),770=>array(-406,560,-94,800),771=>array(-412,639,-90,777),772=>array(-394,673,-102,745),773=>array(-510,686,10,755),774=>array(-407,645,-101,785),775=>array(-296,560,-206,760),776=>array(-395,560,-105,758),777=>array(-348,618,-129,810),778=>array(-385,610,-117,878),779=>array(-381,616,-38,800),780=>array(-404,560,-92,800),781=>array(-283,615,-217,832),782=>array(-383,615,-117,832),783=>array(-455,616,-112,800),784=>array(-407,645,-101,917),785=>array(-407,645,-101,785),786=>array(-235,489,-92,645),787=>array(-305,595,-187,844),788=>array(-305,595,-187,844),789=>array(-66,575,66,759),790=>array(-418,-266,-184,-83),791=>array(-320,-267,-86,-83),792=>array(-357,-240,-221,-24),793=>array(-279,-240,-143,-24),794=>array(-208,690,31,930),795=>array(-133,427,60,609),796=>array(-313,-241,-208,-32),797=>array(-370,-240,-130,-87),798=>array(-370,-240,-130,-87),799=>array(-357,-240,-143,-24),800=>array(-370,-184,-130,-117),801=>array(-315,-208,-23,63),802=>array(-317,-208,-25,63),803=>array(-296,-183,-206,-69),804=>array(-396,-183,-106,-84),805=>array(-355,-241,-146,-32),806=>array(-323,-240,-180,-84),807=>array(-358,-193,-156,0),808=>array(-338,-193,-156,0),809=>array(-283,-240,-217,-47),810=>array(-383,-211,-114,-50),811=>array(-452,-222,-51,-82),812=>array(-404,-240,-92,-57),813=>array(-407,-240,-95,-57),814=>array(-407,-222,-101,-82),815=>array(-407,-224,-101,-83),816=>array(-412,-222,-90,-84),817=>array(-394,-156,-102,-84),818=>array(-510,-236,10,-166),819=>array(-510,-236,10,-9),820=>array(-557,240,-41,381),821=>array(-316,221,-59,301),822=>array(-634,221,-0,301),823=>array(-574,-46,-33,592),824=>array(-741,-34,-54,761),825=>array(-291,-241,-187,-32),826=>array(-382,-206,-113,-44),827=>array(-359,-240,-139,-21),828=>array(-452,-222,-51,-82),829=>array(-354,619,-138,834),830=>array(-247,595,-109,853),831=>array(-510,528,10,755),832=>array(-418,617,-184,800),833=>array(-320,616,-86,800),834=>array(-412,639,-90,777),835=>array(-305,595,-187,844),836=>array(-387,659,-77,978),837=>array(-278,-208,-171,-45),838=>array(-396,639,-104,786),839=>array(-360,-226,-140,-35),840=>array(-365,-240,-135,-47),841=>array(-360,-240,-140,-21),842=>array(-411,616,-89,800),843=>array(-411,567,-89,850),844=>array(-411,596,-89,820),845=>array(-452,-230,-48,-30),846=>array(-350,-240,-150,-45),847=>array(-316,610,-184,878),849=>array(-316,610,-184,878),850=>array(-407,547,-101,855),851=>array(-354,-240,-138,-24),855=>array(-316,610,-184,878),856=>array(-103,658,-3,758),858=>array(-430,-241,-71,-32),860=>array(-445,-237,445,-60),861=>array(-445,802,445,979),862=>array(-445,855,445,927),863=>array(-445,-156,445,-84),864=>array(-354,756,354,894),865=>array(-445,752,445,929),866=>array(-442,-230,447,-30),880=>array(98,0,555,729),881=>array(94,0,477,547),882=>array(98,0,764,729),883=>array(98,0,549,729),884=>array(78,557,203,800),885=>array(78,-208,203,35),886=>array(98,0,650,729),887=>array(91,0,559,547),890=>array(214,-208,321,-45),891=>array(62,-14,495,560),892=>array(55,-14,488,560),893=>array(62,-14,495,560),894=>array(77,-116,220,517),900=>array(181,616,415,800),901=>array(105,659,415,978),902=>array(8,0,676,800),903=>array(107,285,210,409),904=>array(-12,0,682,800),905=>array(-6,0,765,800),906=>array(-9,0,311,800),908=>array(-7,-14,750,800),910=>array(-15,0,821,800),911=>array(-18,0,752,800),912=>array(2,0,313,978),913=>array(8,0,676,729),914=>array(98,0,615,729),915=>array(98,0,552,729),916=>array(8,0,676,729),917=>array(98,0,568,729),918=>array(45,0,640,729),919=>array(98,0,654,729),920=>array(56,-14,731,742),921=>array(98,0,197,729),922=>array(98,0,677,729),923=>array(8,0,676,729),924=>array(98,0,765,729),925=>array(98,0,650,729),926=>array(98,0,548,729),927=>array(56,-14,731,742),928=>array(98,0,654,729),929=>array(98,0,569,729),931=>array(98,0,568,729),932=>array(-3,0,614,729),933=>array(-2,0,613,729),934=>array(56,0,731,729),935=>array(30,0,654,729),936=>array(56,0,732,729),937=>array(38,0,726,738),938=>array(3,0,293,913),939=>array(-2,0,613,913),940=>array(55,-12,611,800),941=>array(65,-14,473,800),942=>array(91,-208,549,800),943=>array(81,0,324,800),944=>array(73,-14,521,978),945=>array(55,-12,611,559),946=>array(94,-208,566,766),947=>array(16,-208,562,547),948=>array(55,-14,557,742),949=>array(65,-14,473,561),950=>array(52,-210,496,760),951=>array(91,-208,549,560),952=>array(55,-11,557,768),953=>array(81,0,304,547),954=>array(93,0,565,547),955=>array(30,0,562,760),956=>array(85,-208,612,547),957=>array(36,0,512,547),958=>array(52,-210,500,760),959=>array(55,-14,557,560),960=>array(36,-19,574,547),961=>array(91,-208,580,560),962=>array(55,-210,488,560),963=>array(55,-14,604,547),964=>array(49,0,553,547),965=>array(73,-14,521,547),966=>array(55,-208,602,551),967=>array(29,-208,549,547),968=>array(55,-208,602,547),969=>array(66,-14,769,547),970=>array(2,0,311,758),971=>array(73,-14,521,758),972=>array(55,-14,557,800),973=>array(73,-14,521,800),974=>array(66,-14,769,800),975=>array(98,-208,677,729),976=>array(82,-11,538,768),977=>array(55,-11,557,768),978=>array(42,0,665,734),979=>array(-15,0,829,800),980=>array(42,0,665,913),981=>array(55,-208,602,760),982=>array(32,-14,803,547),983=>array(55,-206,600,550),984=>array(56,-207,731,742),985=>array(55,-208,557,560),986=>array(68,-210,583,729),987=>array(55,-210,540,547),988=>array(98,0,517,729),989=>array(-94,-208,409,760),990=>array(87,-2,604,729),991=>array(93,0,566,759),992=>array(56,-208,797,742),993=>array(58,-180,573,559),994=>array(56,-213,877,729),995=>array(66,-208,769,547),996=>array(56,-208,660,742),997=>array(55,-208,568,560),998=>array(98,-213,735,729),999=>array(22,-14,571,575),1000=>array(39,-208,630,745),1001=>array(49,-208,552,560),1002=>array(56,0,714,742),1003=>array(26,0,599,560),1004=>array(56,-14,643,758),1005=>array(55,-14,544,758),1006=>array(21,-208,589,729),1007=>array(27,-208,510,726),1008=>array(55,-7,600,550),1009=>array(91,-208,580,560),1010=>array(55,-14,488,560),1011=>array(-18,-208,184,760),1012=>array(56,-14,731,742),1013=>array(55,-14,480,560),1014=>array(96,-14,521,560),1015=>array(98,0,569,729),1016=>array(91,-208,580,760),1017=>array(56,-14,644,742),1018=>array(98,0,765,729),1019=>array(62,-208,587,547),1020=>array(42,-208,580,560),1021=>array(56,-14,644,742),1022=>array(56,-14,644,742),1023=>array(56,-14,644,742),1024=>array(98,0,568,927),1025=>array(98,0,568,913),1026=>array(-3,-200,709,729),1027=>array(98,0,552,927),1028=>array(56,-14,644,742),1029=>array(66,-14,579,742),1030=>array(98,0,197,729),1031=>array(3,0,293,913),1032=>array(-52,-200,197,729),1033=>array(41,0,1023,729),1034=>array(98,0,975,729),1035=>array(-3,0,709,729),1036=>array(98,0,690,927),1037=>array(98,0,650,927),1038=>array(17,0,592,928),1039=>array(98,-157,654,729),1040=>array(8,0,676,729),1041=>array(98,0,615,729),1042=>array(98,0,615,729),1043=>array(98,0,552,729),1044=>array(49,-157,732,729),1045=>array(98,0,568,729),1046=>array(20,0,1058,729),1047=>array(66,-14,575,742),1048=>array(98,0,650,729),1049=>array(98,0,650,928),1050=>array(98,0,690,729),1051=>array(41,0,653,729),1052=>array(98,0,765,729),1053=>array(98,0,654,729),1054=>array(56,-14,731,742),1055=>array(98,0,654,729),1056=>array(98,0,569,729),1057=>array(56,-14,644,742),1058=>array(-3,0,614,729),1059=>array(17,0,592,729),1060=>array(59,0,802,729),1061=>array(30,0,654,729),1062=>array(98,-157,737,729),1063=>array(85,0,587,729),1064=>array(98,0,971,729),1065=>array(98,-157,1054,729),1066=>array(29,0,762,729),1067=>array(98,0,784,729),1068=>array(98,0,615,729),1069=>array(54,-14,642,742),1070=>array(103,-14,1023,742),1071=>array(66,0,597,729),1072=>array(60,-14,522,560),1073=>array(55,-14,562,777),1074=>array(91,0,530,547),1075=>array(91,0,477,547),1076=>array(52,-138,639,547),1077=>array(55,-14,562,560),1078=>array(34,0,867,547),1079=>array(65,-14,473,561),1080=>array(91,0,559,547),1081=>array(91,0,559,760),1082=>array(91,0,571,547),1083=>array(37,0,556,547),1084=>array(91,0,664,547),1085=>array(91,0,563,547),1086=>array(55,-14,557,560),1087=>array(91,0,563,547),1088=>array(91,-208,580,560),1089=>array(55,-14,488,560),1090=>array(29,0,553,547),1091=>array(30,-208,562,547),1092=>array(55,-208,800,729),1093=>array(29,0,559,547),1094=>array(91,-138,635,547),1095=>array(73,0,500,547),1096=>array(91,0,824,547),1097=>array(91,-138,896,547),1098=>array(30,0,647,547),1099=>array(91,0,701,560),1100=>array(91,0,530,547),1101=>array(55,-14,488,560),1102=>array(94,-14,787,560),1103=>array(57,0,517,547),1104=>array(55,-14,562,802),1105=>array(55,-14,562,758),1106=>array(23,-208,570,760),1107=>array(91,0,480,803),1108=>array(55,-14,488,560),1109=>array(54,-14,472,560),1110=>array(94,0,184,760),1111=>array(-6,0,284,758),1112=>array(-18,-208,184,760),1113=>array(37,0,843,547),1114=>array(91,0,839,547),1115=>array(23,0,567,760),1116=>array(91,0,571,803),1117=>array(91,0,559,802),1118=>array(30,-208,562,760),1119=>array(91,-138,563,547),1120=>array(56,-14,877,729),1121=>array(66,-14,769,547),1122=>array(15,0,711,729),1123=>array(15,0,613,760),1124=>array(103,-14,888,742),1125=>array(94,-14,688,560),1126=>array(8,0,871,729),1127=>array(25,0,758,547),1128=>array(98,0,1135,729),1129=>array(94,0,977,547),1130=>array(56,0,731,729),1131=>array(52,0,560,547),1132=>array(98,0,971,729),1133=>array(94,0,772,547),1134=>array(56,-208,556,935),1135=>array(44,-193,473,753),1136=>array(8,0,844,729),1137=>array(24,-208,852,765),1138=>array(56,-14,731,742),1139=>array(55,-14,557,560),1140=>array(8,0,769,742),1141=>array(24,0,640,560),1142=>array(8,0,769,930),1143=>array(24,0,640,800),1144=>array(56,-208,962,742),1145=>array(55,-208,875,560),1146=>array(56,-14,897,742),1147=>array(55,-14,704,560),1148=>array(58,-14,1122,932),1149=>array(74,-14,954,758),1150=>array(56,-14,877,900),1151=>array(66,-14,769,734),1152=>array(56,-208,644,742),1153=>array(55,-208,488,560),1154=>array(29,-44,474,457),1155=>array(-519,608,-93,810),1156=>array(-372,645,4,788),1157=>array(-288,595,-169,797),1158=>array(-288,595,-169,797),1159=>array(-776,606,4,788),1160=>array(-1021,-180,409,922),1161=>array(-957,-280,345,1022),1162=>array(98,-208,748,928),1163=>array(94,-208,652,760),1164=>array(16,0,615,729),1165=>array(19,0,534,702),1166=>array(98,0,610,729),1167=>array(91,-208,580,560),1168=>array(98,0,552,878),1169=>array(91,0,477,700),1170=>array(35,0,617,729),1171=>array(27,0,542,547),1172=>array(98,-200,600,729),1173=>array(91,-208,505,547),1174=>array(20,-157,1071,729),1175=>array(34,-138,876,547),1176=>array(66,-193,575,742),1177=>array(65,-193,473,561),1178=>array(98,-157,713,729),1179=>array(91,-138,587,547),1180=>array(98,0,690,729),1181=>array(91,0,571,547),1182=>array(16,0,690,729),1183=>array(30,0,571,760),1184=>array(24,0,837,729),1185=>array(21,0,688,547),1186=>array(98,-157,752,729),1187=>array(94,-138,656,547),1188=>array(98,0,1009,729),1189=>array(94,0,862,547),1190=>array(98,-200,1057,729),1191=>array(94,-208,891,547),1192=>array(56,-14,871,743),1193=>array(55,-14,684,560),1194=>array(56,-193,644,742),1195=>array(55,-193,488,560),1196=>array(-3,-157,614,729),1197=>array(29,-138,553,547),1198=>array(-2,0,613,729),1199=>array(30,-208,562,547),1200=>array(-2,0,613,729),1201=>array(30,-208,562,547),1202=>array(30,-157,654,729),1203=>array(29,-138,559,547),1204=>array(-3,-157,910,729),1205=>array(2,-138,782,547),1206=>array(85,-157,686,729),1207=>array(73,-138,590,547),1208=>array(85,0,587,729),1209=>array(73,0,500,547),1210=>array(85,0,587,729),1211=>array(91,0,549,760),1212=>array(10,-14,885,742),1213=>array(7,-14,675,560),1214=>array(10,-184,885,742),1215=>array(7,-161,675,560),1216=>array(98,0,197,729),1217=>array(20,0,1058,928),1218=>array(34,0,867,785),1219=>array(98,-200,651,729),1220=>array(93,-208,566,547),1221=>array(26,-208,751,729),1222=>array(22,-208,646,547),1223=>array(98,-200,654,729),1224=>array(94,-208,566,547),1225=>array(98,-208,752,729),1226=>array(94,-208,656,547),1227=>array(85,-157,587,729),1228=>array(73,-138,500,547),1229=>array(98,-208,863,729),1230=>array(94,-208,750,547),1231=>array(94,0,184,760),1232=>array(8,0,676,946),1233=>array(60,-14,522,765),1234=>array(8,0,676,913),1235=>array(60,-14,522,758),1236=>array(4,0,910,729),1237=>array(60,-14,929,560),1238=>array(98,0,568,928),1239=>array(55,-14,562,785),1240=>array(57,-14,731,742),1241=>array(55,-14,562,560),1242=>array(57,-14,731,913),1243=>array(55,-14,562,758),1244=>array(20,0,1058,913),1245=>array(34,0,867,758),1246=>array(66,-14,575,913),1247=>array(65,-14,473,758),1248=>array(78,-31,621,729),1249=>array(43,-213,523,547),1250=>array(98,0,650,899),1251=>array(91,0,559,745),1252=>array(98,0,650,913),1253=>array(91,0,559,758),1254=>array(56,-14,731,913),1255=>array(55,-14,557,758),1256=>array(56,-14,731,742),1257=>array(55,-14,557,560),1258=>array(56,-14,731,913),1259=>array(55,-14,557,758),1260=>array(54,-14,642,913),1261=>array(55,-14,488,758),1262=>array(17,0,592,899),1263=>array(30,-208,562,745),1264=>array(17,0,592,913),1265=>array(30,-208,562,758),1266=>array(17,0,592,927),1267=>array(30,-208,562,800),1268=>array(85,0,587,913),1269=>array(73,0,500,758),1270=>array(98,-157,552,729),1271=>array(91,-138,477,547),1272=>array(98,0,784,913),1273=>array(91,0,701,758),1274=>array(35,-208,617,729),1275=>array(27,-208,542,547),1276=>array(30,-200,646,729),1277=>array(29,-208,549,547),1278=>array(30,0,654,729),1279=>array(29,0,559,547),1280=>array(71,0,588,729),1281=>array(55,0,495,547),1282=>array(71,-14,908,729),1283=>array(55,-14,806,547),1284=>array(98,-14,876,742),1285=>array(83,-14,784,561),1286=>array(98,-208,654,742),1287=>array(83,-208,564,561),1288=>array(26,-14,974,729),1289=>array(22,-14,866,547),1290=>array(98,-14,1022,729),1291=>array(94,-14,876,547),1292=>array(56,-14,692,742),1293=>array(55,-14,534,560),1294=>array(-3,-14,675,729),1295=>array(2,-14,620,547),1296=>array(80,-14,560,742),1297=>array(65,-14,473,561),1298=>array(41,-200,653,729),1299=>array(37,-208,556,547),1300=>array(41,0,1139,729),1301=>array(37,0,962,547),1302=>array(98,0,863,729),1303=>array(91,-208,832,560),1304=>array(66,0,967,729),1305=>array(57,-14,933,560),1306=>array(56,-129,731,742),1307=>array(55,-208,544,560),1308=>array(33,0,956,729),1309=>array(42,0,776,547),1310=>array(98,0,690,729),1311=>array(91,0,571,547),1312=>array(41,-200,1056,729),1313=>array(37,-208,881,547),1314=>array(98,-200,1057,729),1315=>array(91,-208,888,547),1316=>array(98,-157,752,729),1317=>array(91,-138,653,547),1329=>array(87,-29,680,729),1330=>array(87,0,650,743),1331=>array(45,0,729,743),1332=>array(44,0,724,743),1333=>array(87,-14,650,729),1334=>array(87,0,692,744),1335=>array(92,0,616,729),1336=>array(87,0,650,743),1337=>array(87,-14,835,743),1338=>array(45,-14,729,729),1339=>array(92,0,650,729),1340=>array(92,0,533,729),1341=>array(92,-14,849,729),1342=>array(129,-13,763,742),1343=>array(87,0,645,729),1344=>array(34,-26,638,729),1345=>array(82,-23,688,744),1346=>array(49,0,729,743),1347=>array(51,0,715,735),1348=>array(87,-14,767,729),1349=>array(71,-14,668,743),1350=>array(0,-14,680,729),1351=>array(78,-15,684,729),1352=>array(87,0,645,743),1353=>array(59,-28,664,744),1354=>array(44,0,713,743),1355=>array(82,0,686,744),1356=>array(87,0,767,743),1357=>array(87,-14,645,729),1358=>array(49,0,729,729),1359=>array(73,-14,632,741),1360=>array(87,0,645,743),1361=>array(78,-14,675,743),1362=>array(92,0,538,729),1363=>array(59,0,752,729),1364=>array(24,0,679,743),1365=>array(56,-14,731,742),1366=>array(54,-13,746,729),1369=>array(57,492,191,760),1370=>array(87,499,230,729),1371=>array(0,620,234,803),1372=>array(2,618,356,893),1373=>array(-0,617,233,800),1374=>array(4,613,401,866),1375=>array(44,618,462,760),1377=>array(85,-14,883,547),1378=>array(91,-208,549,560),1379=>array(55,-208,648,560),1380=>array(91,-208,653,560),1381=>array(85,-14,548,760),1382=>array(55,-208,648,560),1383=>array(91,0,490,760),1384=>array(91,-208,549,560),1385=>array(91,-208,738,560),1386=>array(55,-14,648,760),1387=>array(91,-208,549,760),1388=>array(91,-208,303,547),1389=>array(91,-208,889,760),1390=>array(55,-14,557,760),1391=>array(85,-208,543,760),1392=>array(91,0,549,760),1393=>array(52,-15,523,760),1394=>array(91,-208,653,560),1395=>array(68,-14,544,768),1396=>array(85,-14,647,760),1397=>array(-21,-208,181,547),1398=>array(-19,-14,543,760),1399=>array(0,-208,435,560),1400=>array(91,0,549,560),1401=>array(5,-208,370,547),1402=>array(85,-208,883,547),1403=>array(54,-208,494,561),1404=>array(91,0,609,560),1405=>array(85,-14,543,560),1406=>array(85,-208,647,760),1407=>array(85,-14,889,560),1408=>array(91,-208,549,560),1409=>array(54,-208,543,560),1410=>array(91,0,449,547),1411=>array(85,-208,889,760),1412=>array(20,-208,580,560),1413=>array(54,-14,556,560),1414=>array(34,-208,766,760),1415=>array(85,-14,812,760),1417=>array(117,0,220,415),1418=>array(49,212,312,314),1456=>array(283,-217,356,-22),1457=>array(83,-217,438,-22),1458=>array(125,-217,454,-22),1459=>array(125,-217,454,-22),1460=>array(283,-159,356,-85),1461=>array(222,-159,417,-85),1462=>array(222,-217,417,-22),1463=>array(173,-159,466,-85),1464=>array(173,-193,466,-46),1465=>array(0,625,73,698),1466=>array(0,625,73,698),1467=>array(148,-237,465,-17),1468=>array(288,237,361,310),1469=>array(283,-217,356,-22),1470=>array(49,472,312,552),1471=>array(173,625,466,698),1472=>array(102,-98,193,645),1473=>array(637,625,710,698),1474=>array(96,625,169,698),1475=>array(102,0,193,547),1478=>array(50,0,357,547),1479=>array(173,-217,466,-22),1488=>array(91,0,578,547),1489=>array(43,0,535,547),1490=>array(43,-5,383,547),1491=>array(43,0,511,547),1492=>array(91,0,563,547),1493=>array(91,0,182,547),1494=>array(43,0,303,547),1495=>array(91,0,563,547),1496=>array(90,-14,593,552),1497=>array(66,204,157,547),1498=>array(43,-208,446,547),1499=>array(43,0,474,547),1500=>array(43,0,492,729),1501=>array(91,0,573,547),1502=>array(43,0,588,555),1503=>array(91,-208,182,547),1504=>array(43,0,309,547),1505=>array(90,-14,593,547),1506=>array(43,-93,535,547),1507=>array(91,-208,549,547),1508=>array(91,0,569,547),1509=>array(43,-208,497,548),1510=>array(43,0,502,547),1511=>array(91,-208,633,546),1512=>array(43,0,474,547),1513=>array(43,0,666,547),1514=>array(10,-4,566,547),1520=>array(91,0,380,547),1521=>array(66,0,332,547),1522=>array(66,204,312,547),1523=>array(91,361,325,547),1524=>array(91,361,554,547),1542=>array(0,-20,607,892),1543=>array(0,-20,607,895),1545=>array(65,0,685,635),1546=>array(65,0,904,635),1548=>array(107,0,250,240),1557=>array(123,624,377,868),1563=>array(107,0,250,633),1567=>array(72,0,461,742),1569=>array(80,42,390,483),1570=>array(-37,0,315,939),1571=>array(53,0,220,999),1572=>array(-42,-244,406,588),1573=>array(53,-244,220,760),1574=>array(63,-131,719,588),1575=>array(94,0,184,760),1576=>array(63,-171,865,327),1577=>array(68,-28,453,513),1578=>array(63,-10,865,391),1579=>array(63,-10,865,513),1580=>array(77,-244,645,425),1581=>array(77,-244,645,425),1582=>array(77,-244,645,586),1583=>array(61,-19,388,415),1584=>array(61,-19,388,586),1585=>array(-42,-244,423,269),1586=>array(-42,-244,423,464),1587=>array(63,-244,1138,366),1588=>array(63,-244,1138,586),1589=>array(63,-244,1134,362),1590=>array(63,-244,1134,464),1591=>array(70,0,857,760),1592=>array(70,0,857,760),1593=>array(57,-244,587,521),1594=>array(57,-244,587,659),1600=>array(-10,0,303,90),1601=>array(63,-45,952,635),1602=>array(52,-215,701,635),1603=>array(70,-27,722,760),1604=>array(70,-152,637,760),1605=>array(68,-240,546,369),1606=>array(72,-162,660,464),1607=>array(68,-28,453,358),1608=>array(-42,-244,406,315),1609=>array(63,-131,719,411),1610=>array(63,-244,719,411),1611=>array(107,591,393,825),1612=>array(107,591,393,874),1613=>array(107,-239,393,-5),1614=>array(107,591,393,708),1615=>array(107,590,393,874),1616=>array(107,-137,393,-20),1617=>array(98,599,402,869),1618=>array(115,610,383,878),1619=>array(74,590,426,719),1620=>array(164,593,331,808),1621=>array(164,-244,331,-29),1623=>array(107,615,393,898),1626=>array(119,616,381,775),1632=>array(215,220,322,342),1633=>array(136,0,342,635),1634=>array(40,0,492,635),1635=>array(37,0,509,635),1636=>array(85,-10,457,641),1637=>array(66,-10,471,643),1638=>array(42,0,493,635),1639=>array(29,0,508,635),1640=>array(29,0,508,635),1641=>array(49,0,493,640),1642=>array(65,0,472,635),1643=>array(0,-110,300,318),1644=>array(87,499,230,729),1645=>array(42,101,502,537),1646=>array(63,-10,865,327),1647=>array(52,-215,701,481),1648=>array(223,602,277,887),1652=>array(60,649,227,864),1657=>array(63,-10,865,575),1658=>array(63,-10,865,513),1659=>array(63,-244,865,327),1660=>array(63,-180,865,391),1661=>array(63,-10,865,464),1662=>array(63,-244,865,327),1663=>array(63,-10,865,513),1664=>array(63,-244,865,327),1665=>array(77,-244,645,710),1666=>array(77,-244,645,708),1667=>array(77,-244,645,425),1668=>array(77,-244,645,425),1669=>array(77,-244,645,708),1670=>array(77,-244,645,425),1671=>array(77,-244,645,425),1672=>array(61,-19,388,746),1673=>array(61,-180,388,415),1674=>array(61,-171,388,415),1675=>array(61,-171,388,746),1676=>array(61,-19,388,586),1677=>array(61,-146,388,415),1678=>array(61,-19,388,708),1679=>array(61,-19,388,684),1680=>array(61,-19,388,708),1681=>array(-42,-244,469,648),1682=>array(-42,-244,473,556),1683=>array(-42,-244,507,269),1684=>array(-42,-244,474,269),1685=>array(-42,-244,634,269),1686=>array(-42,-244,474,269),1687=>array(-42,-244,439,464),1688=>array(-42,-244,439,586),1689=>array(-42,-244,439,586),1690=>array(63,-244,1138,464),1691=>array(63,-244,1138,366),1692=>array(63,-244,1138,586),1693=>array(63,-244,1134,362),1694=>array(63,-244,1134,586),1695=>array(70,0,857,760),1696=>array(57,-244,587,781),1697=>array(63,-45,952,481),1698=>array(63,-171,952,481),1699=>array(63,-171,952,635),1700=>array(63,-45,952,757),1701=>array(63,-293,952,481),1702=>array(63,-45,952,757),1703=>array(52,-215,701,635),1704=>array(52,-215,701,757),1705=>array(63,-43,895,760),1706=>array(63,-43,1000,760),1707=>array(63,-43,895,760),1708=>array(70,-27,722,760),1709=>array(70,-27,722,854),1710=>array(70,-293,722,760),1711=>array(63,-43,895,896),1712=>array(63,-43,895,896),1713=>array(63,-43,895,903),1714=>array(63,-171,895,896),1715=>array(63,-293,895,896),1716=>array(63,-43,895,1025),1717=>array(70,-152,723,971),1718=>array(70,-152,637,952),1719=>array(70,-152,684,1025),1720=>array(70,-391,637,760),1721=>array(72,-317,660,464),1722=>array(72,-162,660,366),1723=>array(72,-162,660,636),1724=>array(72,-330,660,464),1725=>array(72,-162,660,586),1726=>array(70,-33,638,487),1727=>array(77,-244,645,586),1734=>array(-42,-244,406,556),1740=>array(63,-131,719,411),1742=>array(63,-131,719,556),1749=>array(68,-28,453,358),1776=>array(215,220,322,342),1777=>array(136,0,342,635),1778=>array(40,0,492,635),1779=>array(37,0,509,635),1780=>array(40,0,471,643),1781=>array(52,-5,485,643),1782=>array(102,0,445,640),1783=>array(29,0,508,635),1784=>array(29,0,508,635),1785=>array(49,0,493,640),1984=>array(66,-14,570,742),1985=>array(110,0,544,729),1986=>array(110,0,530,729),1987=>array(110,0,530,729),1988=>array(110,0,530,729),1989=>array(110,0,530,729),1990=>array(110,0,530,729),1991=>array(104,0,532,729),1992=>array(104,0,532,729),1993=>array(77,0,560,741),1994=>array(94,0,184,729),1995=>array(55,-14,516,447),1996=>array(30,0,394,731),1997=>array(30,0,562,430),1998=>array(91,0,563,430),1999=>array(91,0,563,430),2000=>array(55,0,539,735),2001=>array(91,0,563,581),2002=>array(55,0,738,741),2003=>array(94,0,408,729),2004=>array(30,0,344,729),2005=>array(91,0,504,729),2006=>array(94,0,518,729),2007=>array(30,0,256,729),2008=>array(94,0,865,513),2009=>array(30,0,443,729),2010=>array(30,0,754,729),2011=>array(91,0,563,430),2012=>array(30,0,595,729),2013=>array(94,0,679,729),2014=>array(94,0,436,729),2015=>array(55,0,630,729),2016=>array(30,0,443,729),2017=>array(30,0,595,729),2018=>array(55,0,539,729),2019=>array(94,0,436,729),2020=>array(94,0,436,612),2021=>array(94,0,428,729),2022=>array(55,0,539,729),2023=>array(55,0,539,729),2027=>array(106,673,398,745),2028=>array(32,609,468,800),2029=>array(205,658,305,758),2030=>array(93,616,405,800),2031=>array(44,616,456,800),2032=>array(32,609,468,800),2033=>array(44,616,456,800),2034=>array(200,-184,300,-84),2035=>array(104,659,394,758),2036=>array(98,557,216,760),2037=>array(98,557,216,760),2040=>array(49,0,511,498),2041=>array(49,0,511,483),2042=>array(-10,0,371,72),3647=>array(86,-138,571,769),3713=>array(63,-10,607,560),3714=>array(68,-17,691,568),3716=>array(67,-10,619,568),3719=>array(53,-238,415,568),3720=>array(62,-0,574,575),3722=>array(68,-234,690,568),3725=>array(56,-8,619,573),3732=>array(91,-14,592,560),3733=>array(63,-15,564,579),3734=>array(0,-240,587,560),3735=>array(42,-8,599,571),3737=>array(46,-14,593,568),3738=>array(36,-8,556,561),3739=>array(36,-8,556,760),3740=>array(43,-8,725,614),3741=>array(91,-14,676,760),3742=>array(51,-8,636,561),3743=>array(51,-8,636,760),3745=>array(31,-14,636,547),3746=>array(56,-8,619,760),3747=>array(68,-8,634,568),3749=>array(39,-8,583,568),3751=>array(56,-13,558,560),3754=>array(39,-8,688,679),3755=>array(62,-12,762,575),3757=>array(56,-14,558,560),3758=>array(68,-8,684,605),3759=>array(99,-166,742,579),3760=>array(54,-13,589,563),3761=>array(-578,639,-43,880),3762=>array(60,0,473,560),3763=>array(-425,0,473,806),3764=>array(-594,615,-73,926),3765=>array(-594,615,0,926),3766=>array(-594,615,-73,926),3767=>array(-594,615,0,926),3768=>array(-376,-350,-161,-38),3769=>array(-418,-306,-152,-40),3771=>array(-578,639,-43,880),3772=>array(-611,-278,6,-39),3773=>array(63,-240,619,715),3776=>array(60,-14,324,560),3777=>array(60,-14,598,560),3778=>array(-22,-5,398,896),3779=>array(45,-14,490,892),3780=>array(92,-11,445,886),3782=>array(72,-232,574,557),3784=>array(-366,618,-278,792),3785=>array(-563,609,-45,891),3786=>array(-595,598,22,869),3787=>array(-462,609,-182,890),3788=>array(-611,636,6,875),3789=>array(-425,620,-220,806),3792=>array(66,-14,570,547),3793=>array(48,-75,582,576),3794=>array(48,-66,545,711),3795=>array(11,-9,692,830),3796=>array(48,-83,601,711),3797=>array(48,-83,601,711),3798=>array(43,-8,744,812),3799=>array(63,-240,607,560),3800=>array(73,-210,680,557),3801=>array(51,-4,621,571),3804=>array(62,-12,947,575),3805=>array(62,-12,973,575),4256=>array(59,-15,815,828),4257=>array(54,-0,704,828),4258=>array(54,-148,649,837),4259=>array(54,-15,781,828),4260=>array(49,0,552,837),4261=>array(39,0,714,837),4262=>array(29,-15,695,828),4263=>array(59,-15,885,837),4264=>array(29,0,390,874),4265=>array(59,0,561,828),4266=>array(29,-15,784,828),4267=>array(59,-15,824,828),4268=>array(63,0,566,828),4269=>array(49,-167,806,837),4270=>array(24,-15,717,837),4271=>array(39,0,566,828),4272=>array(54,-15,853,828),4273=>array(63,-15,567,828),4274=>array(63,-0,566,837),4275=>array(49,-182,806,837),4276=>array(49,0,817,834),4277=>array(44,0,680,828),4278=>array(64,-15,566,837),4279=>array(54,0,557,828),4280=>array(59,-15,562,828),4281=>array(63,0,566,828),4282=>array(59,-15,764,837),4283=>array(59,-15,810,828),4284=>array(63,-0,566,828),4285=>array(49,-15,574,837),4286=>array(63,-0,566,828),4287=>array(29,0,695,828),4288=>array(29,-15,785,828),4289=>array(63,0,566,828),4290=>array(54,-15,635,837),4291=>array(29,0,532,828),4292=>array(54,0,540,828),4293=>array(39,-15,699,837),4304=>array(49,-15,459,592),4305=>array(49,-14,469,837),4306=>array(44,-235,537,551),4307=>array(49,-230,759,547),4308=>array(49,-236,449,547),4309=>array(49,-236,459,547),4310=>array(20,-14,452,838),4311=>array(49,-14,752,547),4312=>array(49,0,469,547),4313=>array(44,-236,456,542),4314=>array(49,-230,1016,552),4315=>array(49,-15,459,837),4316=>array(63,-15,474,833),4317=>array(49,-0,737,547),4318=>array(49,-15,459,833),4319=>array(49,-236,458,551),4320=>array(49,0,747,833),4321=>array(63,-15,474,827),4322=>array(44,-236,610,680),4323=>array(5,-236,464,571),4324=>array(49,-236,766,547),4325=>array(49,-236,449,828),4326=>array(49,-230,737,546),4327=>array(49,-236,459,538),4328=>array(29,-15,454,837),4329=>array(63,0,474,837),4330=>array(44,-236,527,532),4331=>array(49,-14,458,828),4332=>array(64,-15,488,837),4333=>array(49,-236,471,827),4334=>array(63,-15,474,827),4335=>array(10,-235,444,572),4336=>array(49,-15,459,837),4337=>array(59,-15,469,837),4338=>array(49,-141,458,547),4339=>array(49,-236,459,546),4340=>array(49,-236,458,837),4341=>array(49,-15,515,837),4342=>array(49,-236,778,547),4343=>array(44,-236,508,547),4344=>array(49,-236,459,538),4345=>array(39,-236,532,551),4346=>array(49,-77,459,547),4347=>array(54,-10,394,484),4348=>array(49,420,270,837),5121=>array(8,1,676,730),5122=>array(8,0,676,1037),5123=>array(8,0,676,729),5124=>array(8,0,676,914),5125=>array(98,0,711,729),5126=>array(98,0,711,914),5127=>array(98,0,711,913),5129=>array(98,0,711,729),5130=>array(58,0,671,729),5131=>array(58,0,671,914),5132=>array(98,1,827,730),5133=>array(8,1,776,730),5134=>array(98,0,827,729),5135=>array(8,0,776,729),5136=>array(98,0,827,914),5137=>array(8,0,776,914),5138=>array(98,0,909,729),5139=>array(98,0,909,729),5140=>array(98,0,909,914),5141=>array(98,0,909,914),5142=>array(98,0,711,914),5143=>array(98,0,869,729),5144=>array(58,0,909,729),5145=>array(98,0,869,914),5146=>array(58,0,909,914),5147=>array(58,0,671,914),5149=>array(98,629,198,729),5150=>array(67,326,488,734),5151=>array(46,356,362,714),5152=>array(46,356,362,714),5153=>array(67,398,334,674),5154=>array(67,391,334,667),5155=>array(67,398,338,667),5156=>array(67,398,334,667),5157=>array(35,327,405,733),5158=>array(67,326,331,734),5159=>array(98,312,198,412),5160=>array(67,503,334,563),5161=>array(67,399,334,667),5162=>array(67,399,334,691),5163=>array(8,1,1028,730),5164=>array(8,0,847,729),5165=>array(98,0,892,729),5166=>array(58,0,1055,729),5167=>array(8,0,676,729),5168=>array(8,0,676,1037),5169=>array(8,0,676,729),5170=>array(8,0,676,914),5171=>array(58,0,671,729),5172=>array(58,0,671,914),5173=>array(58,0,671,913),5175=>array(58,0,671,729),5176=>array(58,0,671,729),5177=>array(58,0,671,914),5178=>array(98,0,827,729),5179=>array(8,0,776,729),5180=>array(98,0,827,729),5181=>array(8,0,776,729),5182=>array(98,0,827,914),5183=>array(8,0,776,914),5184=>array(98,0,869,729),5185=>array(58,0,909,729),5186=>array(98,0,869,914),5187=>array(58,0,909,914),5188=>array(98,0,869,729),5189=>array(58,0,909,729),5190=>array(98,0,869,914),5191=>array(58,0,909,914),5192=>array(58,0,671,913),5193=>array(67,326,453,734),5194=>array(67,326,137,734),5196=>array(87,-14,645,729),5197=>array(87,0,645,1037),5198=>array(87,0,645,743),5199=>array(87,0,645,914),5200=>array(58,0,671,729),5201=>array(58,0,671,914),5202=>array(58,0,671,913),5204=>array(58,0,671,729),5205=>array(59,0,672,729),5206=>array(59,0,672,914),5207=>array(98,-14,834,729),5208=>array(87,-14,831,729),5209=>array(98,0,834,743),5210=>array(87,0,831,743),5211=>array(98,0,834,914),5212=>array(87,0,831,914),5213=>array(98,0,869,729),5214=>array(58,0,842,729),5215=>array(98,0,869,914),5216=>array(58,0,842,914),5217=>array(98,0,889,729),5218=>array(59,0,842,729),5219=>array(98,0,889,914),5220=>array(59,0,842,914),5221=>array(117,0,889,729),5222=>array(67,326,379,734),5223=>array(87,-14,823,734),5224=>array(87,0,823,743),5225=>array(58,0,811,734),5226=>array(59,0,835,734),5227=>array(34,0,530,743),5228=>array(98,0,594,1037),5229=>array(98,0,594,743),5230=>array(98,0,594,914),5231=>array(34,-14,530,729),5232=>array(34,-14,530,914),5233=>array(34,-14,623,913),5234=>array(98,-14,594,729),5235=>array(98,-14,594,914),5236=>array(98,0,762,743),5237=>array(34,0,712,743),5238=>array(98,0,781,743),5239=>array(98,0,758,743),5240=>array(98,0,781,914),5241=>array(98,0,758,914),5242=>array(98,-14,762,729),5243=>array(34,-14,712,729),5244=>array(98,-14,762,914),5245=>array(34,-14,712,914),5246=>array(98,-14,781,729),5247=>array(98,-14,758,729),5248=>array(98,-14,781,914),5249=>array(98,-14,758,914),5250=>array(117,-14,781,729),5251=>array(67,318,379,734),5252=>array(27,318,340,734),5253=>array(34,0,696,743),5254=>array(98,0,720,743),5255=>array(34,-14,696,734),5256=>array(98,-14,720,734),5257=>array(34,0,530,743),5258=>array(98,0,594,1037),5259=>array(98,0,594,743),5260=>array(98,0,594,914),5261=>array(34,-14,530,729),5262=>array(34,-14,530,914),5263=>array(34,-14,623,913),5264=>array(98,-14,594,729),5265=>array(98,-14,594,914),5266=>array(98,0,762,743),5267=>array(34,0,712,743),5268=>array(98,0,781,743),5269=>array(98,0,758,743),5270=>array(98,0,781,914),5271=>array(98,0,758,914),5272=>array(98,-14,762,729),5273=>array(34,-14,712,729),5274=>array(98,-14,762,914),5275=>array(34,-14,712,914),5276=>array(98,-14,781,729),5277=>array(98,-14,758,729),5278=>array(98,-14,781,914),5279=>array(98,-14,758,914),5280=>array(117,-14,781,729),5281=>array(67,318,379,734),5282=>array(67,318,379,734),5283=>array(58,0,512,729),5284=>array(98,0,552,1037),5285=>array(98,0,552,729),5286=>array(98,0,552,914),5287=>array(58,0,512,729),5288=>array(58,0,512,914),5289=>array(58,0,607,913),5290=>array(98,0,552,729),5291=>array(98,0,552,914),5292=>array(98,0,651,729),5293=>array(58,0,710,729),5294=>array(98,0,741,729),5295=>array(98,0,706,729),5296=>array(98,0,741,914),5297=>array(98,0,706,914),5298=>array(98,0,651,729),5299=>array(58,0,710,729),5300=>array(98,0,651,914),5301=>array(58,0,710,914),5302=>array(98,0,741,729),5303=>array(98,0,706,729),5304=>array(98,0,741,914),5305=>array(98,0,706,914),5306=>array(117,0,741,729),5307=>array(67,326,331,734),5308=>array(67,326,453,734),5309=>array(67,326,331,734),5312=>array(58,-14,817,436),5313=>array(34,-14,793,755),5314=>array(34,-14,793,436),5315=>array(5,-14,765,636),5316=>array(58,0,817,450),5317=>array(58,0,817,636),5318=>array(58,0,817,635),5319=>array(34,0,793,450),5320=>array(34,0,793,636),5321=>array(98,-14,1035,436),5322=>array(58,-14,977,436),5323=>array(98,0,1025,450),5324=>array(34,0,793,450),5325=>array(98,0,1025,636),5326=>array(34,0,793,636),5327=>array(34,0,793,635),5328=>array(67,484,545,736),5329=>array(67,318,397,734),5330=>array(67,484,545,736),5331=>array(58,0,817,450),5332=>array(34,0,793,755),5333=>array(34,0,793,450),5334=>array(34,0,793,636),5335=>array(58,0,817,450),5336=>array(58,0,817,636),5337=>array(58,0,817,635),5338=>array(34,0,793,450),5339=>array(34,0,793,636),5340=>array(98,0,1035,450),5341=>array(58,0,977,450),5342=>array(98,0,1025,450),5343=>array(34,0,972,450),5344=>array(98,0,1025,636),5345=>array(34,0,972,636),5346=>array(98,0,1035,450),5347=>array(58,0,977,450),5348=>array(98,0,1035,636),5349=>array(58,0,977,636),5350=>array(98,0,1025,450),5351=>array(34,0,972,450),5352=>array(98,0,1025,636),5353=>array(34,0,972,636),5354=>array(67,484,545,736),5356=>array(58,0,671,729),5357=>array(34,0,505,729),5358=>array(98,0,649,1037),5359=>array(98,0,569,729),5360=>array(98,0,569,914),5361=>array(34,0,505,729),5362=>array(34,0,505,914),5363=>array(34,0,600,913),5364=>array(98,0,569,729),5365=>array(98,0,569,914),5366=>array(98,0,736,729),5367=>array(34,0,696,729),5368=>array(98,0,758,729),5369=>array(98,0,713,729),5370=>array(98,0,758,914),5371=>array(98,0,713,914),5372=>array(98,0,736,729),5373=>array(34,0,696,729),5374=>array(98,0,736,914),5375=>array(34,0,696,914),5376=>array(98,0,758,729),5377=>array(98,0,713,729),5378=>array(98,0,758,914),5379=>array(98,0,713,914),5380=>array(117,0,758,729),5381=>array(67,326,363,734),5382=>array(67,318,365,741),5383=>array(67,326,363,734),5392=>array(34,-14,678,743),5393=>array(34,-14,678,743),5394=>array(34,-14,678,914),5395=>array(34,-14,857,464),5396=>array(34,-14,857,636),5397=>array(34,-14,857,464),5398=>array(34,-14,857,636),5399=>array(98,-14,875,743),5400=>array(34,-14,814,743),5401=>array(98,-14,875,743),5402=>array(34,-14,814,743),5403=>array(98,-14,875,914),5404=>array(34,-14,814,914),5405=>array(98,-14,1106,464),5406=>array(34,-14,1042,464),5407=>array(98,-14,1106,636),5408=>array(34,-14,1042,636),5409=>array(98,-14,1106,464),5410=>array(34,-14,1042,464),5411=>array(98,-14,1106,636),5412=>array(34,-14,1042,636),5413=>array(67,476,585,737),5414=>array(58,0,529,729),5415=>array(98,0,569,1037),5416=>array(98,0,569,729),5417=>array(98,0,569,914),5418=>array(58,0,529,729),5419=>array(58,0,531,914),5420=>array(58,0,626,913),5421=>array(98,0,569,729),5422=>array(98,0,569,914),5423=>array(98,0,746,729),5424=>array(58,0,723,729),5425=>array(98,0,758,729),5426=>array(98,0,760,729),5427=>array(98,0,758,914),5428=>array(98,0,760,914),5429=>array(98,0,746,729),5430=>array(58,0,723,729),5431=>array(98,0,749,914),5432=>array(58,0,723,914),5433=>array(98,0,758,729),5434=>array(98,0,760,729),5435=>array(98,0,758,914),5436=>array(98,0,760,914),5437=>array(117,0,758,729),5438=>array(67,326,363,734),5440=>array(67,399,334,667),5441=>array(67,326,429,734),5442=>array(98,-14,857,436),5443=>array(58,-14,817,436),5444=>array(58,0,817,450),5445=>array(98,0,857,755),5446=>array(98,0,857,450),5447=>array(98,0,857,636),5448=>array(98,0,569,729),5449=>array(98,0,569,914),5450=>array(98,0,569,729),5451=>array(34,0,505,729),5452=>array(34,0,505,914),5453=>array(34,0,505,729),5454=>array(98,0,736,914),5455=>array(34,0,696,914),5456=>array(67,326,363,734),5458=>array(58,0,671,729),5459=>array(73,0,676,744),5460=>array(73,-15,676,1037),5461=>array(73,-15,676,729),5462=>array(73,-15,676,914),5463=>array(38,0,668,662),5464=>array(38,0,668,914),5465=>array(58,0,688,662),5466=>array(58,0,688,914),5467=>array(98,0,886,914),5468=>array(58,0,909,914),5469=>array(67,326,462,695),5470=>array(87,-14,645,743),5471=>array(87,-14,645,743),5472=>array(87,-14,645,743),5473=>array(87,-14,645,743),5474=>array(87,-14,645,914),5475=>array(87,-14,645,914),5476=>array(41,0,671,729),5477=>array(41,0,671,914),5478=>array(59,0,689,729),5479=>array(59,0,689,914),5480=>array(98,0,907,914),5481=>array(59,0,842,914),5482=>array(67,326,467,734),5492=>array(34,0,772,743),5493=>array(58,0,796,743),5494=>array(58,0,796,914),5495=>array(34,-14,772,729),5496=>array(34,-14,772,914),5497=>array(58,-14,796,729),5498=>array(58,-14,796,914),5499=>array(67,318,508,734),5500=>array(98,0,654,729),5501=>array(67,326,429,734),5502=>array(67,0,1013,1037),5503=>array(67,0,1013,743),5504=>array(67,0,1013,914),5505=>array(67,-14,949,734),5506=>array(67,-14,949,914),5507=>array(67,-14,1013,734),5508=>array(67,-14,1013,914),5509=>array(67,318,798,734),5514=>array(34,0,772,743),5515=>array(58,0,796,743),5516=>array(34,-14,772,729),5517=>array(58,-14,796,729),5518=>array(67,0,1225,1037),5519=>array(67,0,1225,743),5520=>array(67,0,1225,914),5521=>array(67,-14,904,736),5522=>array(67,-14,904,914),5523=>array(67,-14,1225,736),5524=>array(67,-14,1225,914),5525=>array(67,332,645,736),5526=>array(67,332,1018,736),5536=>array(34,0,793,692),5537=>array(34,0,793,692),5538=>array(58,-242,817,450),5539=>array(58,-242,817,636),5540=>array(34,-242,793,450),5541=>array(34,-242,793,636),5542=>array(67,338,545,736),5543=>array(58,0,627,729),5544=>array(16,0,585,729),5545=>array(16,0,585,914),5546=>array(58,0,627,729),5547=>array(58,0,627,914),5548=>array(16,0,585,729),5549=>array(16,0,585,914),5550=>array(5,326,363,734),5551=>array(98,-14,594,729),5598=>array(98,0,711,729),5601=>array(56,0,669,729),5702=>array(67,326,413,734),5703=>array(67,240,413,820),5742=>array(57,0,391,306),5743=>array(67,0,949,743),5744=>array(67,0,1211,743),5745=>array(67,0,1598,743),5746=>array(67,0,1598,914),5747=>array(67,-14,1277,736),5748=>array(67,-14,1277,914),5749=>array(67,-14,1598,736),5750=>array(67,-14,1598,914),5760=>array(-10,246,487,328),5761=>array(-10,-125,502,328),5762=>array(-10,-125,722,328),5763=>array(-10,-125,941,328),5764=>array(-10,-125,1160,328),5765=>array(-10,-125,1379,328),5766=>array(-10,246,502,697),5767=>array(-10,246,722,697),5768=>array(-10,246,941,697),5769=>array(-10,246,1160,697),5770=>array(-10,246,1379,697),5771=>array(-10,-125,508,697),5772=>array(-10,-125,728,697),5773=>array(-10,-125,948,697),5774=>array(-10,-125,1168,697),5775=>array(-10,-125,1389,697),5776=>array(-10,41,502,533),5777=>array(-10,41,722,533),5778=>array(-10,41,939,533),5779=>array(-10,41,1159,533),5780=>array(-10,41,1379,533),5781=>array(-10,-125,508,697),5782=>array(-10,-125,762,697),5783=>array(-10,-83,798,328),5784=>array(-10,-240,1214,328),5785=>array(-10,246,1160,902),5786=>array(-10,82,693,328),5787=>array(55,28,517,544),5788=>array(-10,28,452,544),7424=>array(30,0,562,547),7425=>array(5,0,669,547),7426=>array(60,-14,929,560),7427=>array(30,0,530,547),7428=>array(55,-14,488,560),7429=>array(91,0,550,547),7430=>array(18,0,550,547),7431=>array(91,0,443,547),7432=>array(63,-14,471,561),7433=>array(94,-213,184,547),7434=>array(0,-14,310,547),7435=>array(91,0,576,547),7436=>array(1,0,498,560),7437=>array(91,0,664,547),7438=>array(91,0,559,547),7439=>array(55,-14,557,560),7440=>array(62,-14,495,560),7441=>array(55,22,629,524),7442=>array(55,57,629,489),7443=>array(25,2,663,543),7444=>array(55,-14,970,560),7446=>array(55,273,557,560),7447=>array(55,-14,557,273),7448=>array(74,0,475,547),7449=>array(24,0,507,547),7450=>array(24,0,507,547),7451=>array(29,0,553,547),7452=>array(91,-16,510,547),7453=>array(85,37,646,495),7454=>array(85,38,857,496),7455=>array(23,-238,583,560),7456=>array(30,0,562,547),7457=>array(42,0,776,547),7458=>array(43,0,482,547),7459=>array(59,-14,466,547),7462=>array(87,0,498,560),7463=>array(30,0,562,547),7464=>array(74,0,490,547),7465=>array(74,0,475,547),7466=>array(44,0,546,547),7467=>array(37,0,556,547),7468=>array(5,326,426,734),7469=>array(2,326,573,734),7470=>array(62,326,388,734),7472=>array(62,326,448,734),7473=>array(62,326,358,734),7474=>array(41,326,336,734),7475=>array(35,318,437,742),7476=>array(62,326,412,734),7477=>array(62,326,124,734),7478=>array(-33,214,124,734),7479=>array(62,326,426,734),7480=>array(62,326,348,734),7481=>array(62,326,482,734),7482=>array(62,326,410,734),7483=>array(62,326,410,734),7484=>array(35,318,460,742),7485=>array(35,318,405,742),7486=>array(62,326,358,734),7487=>array(62,326,419,734),7488=>array(-2,326,387,734),7489=>array(55,318,406,734),7490=>array(21,326,603,734),7491=>array(38,318,329,640),7492=>array(38,318,329,640),7493=>array(35,318,343,640),7494=>array(38,318,585,640),7495=>array(57,318,365,751),7496=>array(35,318,343,751),7497=>array(35,318,354,640),7498=>array(35,318,354,640),7499=>array(41,318,298,640),7500=>array(40,318,297,640),7501=>array(35,209,343,640),7502=>array(60,207,116,632),7503=>array(57,326,363,751),7504=>array(57,326,560,640),7505=>array(57,209,346,640),7506=>array(35,318,351,640),7507=>array(35,318,307,640),7508=>array(35,479,351,640),7509=>array(35,318,351,479),7510=>array(57,209,365,640),7511=>array(17,326,232,719),7512=>array(54,318,342,632),7513=>array(54,347,407,604),7514=>array(57,319,560,633),7515=>array(19,326,354,632),7517=>array(59,209,357,755),7518=>array(10,209,354,632),7519=>array(35,318,351,742),7520=>array(35,209,379,635),7521=>array(18,209,346,633),7522=>array(60,0,116,425),7523=>array(57,0,259,313),7524=>array(54,-8,342,306),7525=>array(19,0,354,306),7526=>array(59,-117,357,429),7527=>array(10,-117,354,306),7528=>array(59,-117,367,313),7529=>array(35,-117,379,309),7530=>array(18,-117,346,307),7543=>array(91,-208,580,560),7544=>array(62,326,412,734),7547=>array(57,0,314,547),7549=>array(24,-208,643,560),7557=>array(71,-208,273,760),7579=>array(35,318,343,640),7580=>array(35,318,307,640),7581=>array(35,287,307,640),7582=>array(35,318,351,751),7583=>array(41,318,298,640),7584=>array(15,326,234,751),7585=>array(-11,209,170,632),7586=>array(35,209,343,632),7587=>array(54,209,342,632),7588=>array(36,326,198,751),7589=>array(60,326,187,632),7590=>array(36,326,198,632),7591=>array(36,326,198,632),7592=>array(-83,209,172,751),7593=>array(60,209,187,751),7594=>array(44,209,172,751),7595=>array(55,326,314,640),7596=>array(57,209,560,640),7597=>array(57,209,560,633),7598=>array(-11,209,348,640),7599=>array(57,209,417,640),7600=>array(55,326,346,640),7601=>array(35,318,351,640),7602=>array(35,210,351,751),7603=>array(34,209,297,640),7604=>array(-11,209,224,751),7605=>array(17,209,232,719),7606=>array(46,318,445,632),7607=>array(35,318,355,632),7608=>array(57,317,321,632),7609=>array(60,326,343,632),7610=>array(19,326,354,632),7611=>array(27,326,304,632),7612=>array(27,209,374,632),7613=>array(27,296,304,632),7614=>array(27,207,330,632),7615=>array(35,320,351,756),7620=>array(-456,616,-44,800),7621=>array(-456,616,-44,800),7622=>array(-456,616,-44,800),7623=>array(-456,616,-44,800),7624=>array(-468,616,-32,800),7625=>array(-468,616,-32,800),7680=>array(8,-241,676,729),7681=>array(60,-241,522,560),7682=>array(98,0,615,914),7683=>array(90,-14,580,915),7684=>array(98,-183,615,729),7685=>array(91,-183,580,760),7686=>array(98,-156,615,729),7687=>array(91,-156,580,760),7688=>array(56,-193,644,928),7689=>array(55,-193,488,800),7690=>array(98,0,711,914),7691=>array(55,-14,544,942),7692=>array(98,-183,711,729),7693=>array(55,-183,544,760),7694=>array(98,-156,711,729),7695=>array(55,-156,544,760),7696=>array(98,-192,711,729),7697=>array(55,-193,544,760),7698=>array(98,-240,711,729),7699=>array(55,-240,544,760),7700=>array(98,0,568,1044),7701=>array(55,-14,562,921),7702=>array(98,0,568,1044),7703=>array(55,-14,562,921),7704=>array(98,-213,568,729),7705=>array(55,-213,562,560),7706=>array(98,-192,568,729),7707=>array(55,-192,562,560),7708=>array(98,-193,568,928),7709=>array(55,-193,562,785),7710=>array(98,0,517,914),7711=>array(23,0,371,942),7712=>array(56,-14,693,887),7713=>array(55,-208,544,745),7714=>array(98,0,654,913),7715=>array(90,0,549,915),7716=>array(98,-183,654,729),7717=>array(91,-183,549,760),7718=>array(98,0,654,914),7719=>array(-9,0,549,913),7720=>array(8,-193,654,729),7721=>array(1,-193,549,760),7722=>array(98,-222,654,729),7723=>array(91,-222,549,760),7724=>array(0,-192,322,729),7725=>array(-22,-192,300,760),7726=>array(3,0,293,1044),7727=>array(-6,0,284,886),7728=>array(98,0,677,928),7729=>array(91,0,576,928),7730=>array(98,-183,677,729),7731=>array(91,-183,576,760),7732=>array(98,-156,677,729),7733=>array(91,-156,576,760),7734=>array(98,-183,552,729),7735=>array(98,-183,189,760),7736=>array(1,-183,552,927),7737=>array(-1,-183,291,899),7738=>array(98,-156,552,729),7739=>array(-6,-156,286,760),7740=>array(98,-240,552,729),7741=>array(-17,-240,295,760),7742=>array(98,0,765,928),7743=>array(91,0,889,800),7744=>array(98,0,765,914),7745=>array(91,0,889,760),7746=>array(98,-183,765,729),7747=>array(91,-183,889,560),7748=>array(98,0,650,914),7749=>array(91,0,549,760),7750=>array(98,-183,650,729),7751=>array(91,-183,549,560),7752=>array(98,-156,650,729),7753=>array(91,-156,549,560),7754=>array(98,-240,650,729),7755=>array(91,-240,549,560),7756=>array(56,-14,731,1044),7757=>array(55,-14,557,881),7758=>array(56,-14,731,1042),7759=>array(55,-14,557,882),7760=>array(56,-14,731,1044),7761=>array(55,-14,557,921),7762=>array(56,-14,731,1044),7763=>array(55,-14,557,921),7764=>array(98,0,569,928),7765=>array(91,-208,580,800),7766=>array(98,0,569,914),7767=>array(91,-208,580,760),7768=>array(98,0,666,913),7769=>array(91,0,411,760),7770=>array(98,-183,666,729),7771=>array(91,-183,411,560),7772=>array(98,-183,666,899),7773=>array(91,-183,411,745),7774=>array(98,-156,666,729),7775=>array(41,-156,411,560),7776=>array(66,-14,579,914),7777=>array(54,-14,472,760),7778=>array(66,-183,579,742),7779=>array(54,-183,472,560),7780=>array(66,-14,579,928),7781=>array(54,-14,485,800),7782=>array(66,-14,579,1042),7783=>array(54,-14,472,973),7784=>array(66,-183,579,914),7785=>array(54,-183,472,733),7786=>array(-3,0,614,914),7787=>array(27,0,368,942),7788=>array(-3,-183,614,729),7789=>array(27,-183,368,702),7790=>array(-3,-156,614,729),7791=>array(27,-156,390,702),7792=>array(-3,-240,614,729),7793=>array(27,-240,394,702),7794=>array(87,-183,645,729),7795=>array(85,-183,543,560),7796=>array(87,-192,645,729),7797=>array(85,-192,543,560),7798=>array(87,-213,645,729),7799=>array(85,-213,543,560),7800=>array(87,-14,645,1044),7801=>array(85,-14,543,990),7802=>array(87,-14,645,1025),7803=>array(85,-14,543,869),7804=>array(8,0,676,936),7805=>array(30,0,562,777),7806=>array(8,-183,676,729),7807=>array(30,-183,562,547),7808=>array(33,0,956,931),7809=>array(42,0,776,802),7810=>array(33,0,956,931),7811=>array(42,0,776,803),7812=>array(33,0,956,913),7813=>array(42,0,776,758),7814=>array(33,0,956,913),7815=>array(42,0,776,760),7816=>array(33,-183,956,729),7817=>array(42,-183,776,547),7818=>array(30,0,654,914),7819=>array(29,0,559,760),7820=>array(30,0,654,913),7821=>array(29,0,559,758),7822=>array(-2,0,613,914),7823=>array(30,-208,562,760),7824=>array(45,0,640,928),7825=>array(43,0,482,800),7826=>array(45,-183,640,729),7827=>array(43,-183,482,547),7828=>array(45,-156,640,729),7829=>array(43,-156,482,547),7830=>array(91,-156,549,760),7831=>array(2,0,368,913),7832=>array(42,0,776,878),7833=>array(30,-208,562,878),7834=>array(60,-14,672,760),7835=>array(23,0,371,942),7836=>array(1,0,371,760),7837=>array(23,0,371,760),7838=>array(87,-14,713,743),7839=>array(55,-14,557,742),7840=>array(8,-183,676,729),7841=>array(60,-183,522,560),7842=>array(8,0,676,992),7843=>array(60,-14,522,810),7844=>array(8,0,676,1028),7845=>array(60,-14,585,846),7846=>array(8,0,676,1028),7847=>array(60,-14,522,847),7848=>array(8,0,676,1044),7849=>array(60,-14,577,862),7850=>array(8,0,676,1057),7851=>array(60,-14,522,875),7852=>array(8,-183,676,928),7853=>array(60,-183,522,800),7854=>array(8,0,676,1044),7855=>array(60,-14,522,877),7856=>array(8,0,676,1044),7857=>array(60,-14,522,877),7858=>array(8,0,676,1068),7859=>array(60,-14,522,901),7860=>array(8,0,676,1043),7861=>array(60,-14,522,876),7862=>array(8,-183,676,946),7863=>array(60,-183,522,765),7864=>array(98,-183,568,729),7865=>array(55,-183,562,560),7866=>array(98,0,568,992),7867=>array(55,-14,562,810),7868=>array(98,0,568,921),7869=>array(55,-14,562,777),7870=>array(98,0,637,1028),7871=>array(55,-14,613,846),7872=>array(98,0,568,1028),7873=>array(55,-14,562,847),7874=>array(98,0,620,1044),7875=>array(55,-14,605,862),7876=>array(98,0,568,1057),7877=>array(55,-14,562,875),7878=>array(98,-183,568,928),7879=>array(55,-183,562,800),7880=>array(44,0,263,992),7881=>array(33,0,252,811),7882=>array(98,-183,197,729),7883=>array(93,-183,184,760),7884=>array(56,-183,731,742),7885=>array(55,-183,557,560),7886=>array(56,-14,731,992),7887=>array(55,-14,557,810),7888=>array(56,-14,731,1028),7889=>array(55,-14,601,846),7890=>array(56,-14,731,1028),7891=>array(55,-14,557,847),7892=>array(56,-14,731,1044),7893=>array(55,-14,592,862),7894=>array(56,-14,731,1057),7895=>array(55,-14,557,875),7896=>array(56,-183,731,928),7897=>array(55,-183,557,800),7898=>array(50,-14,764,927),7899=>array(58,-14,603,800),7900=>array(50,-14,764,927),7901=>array(58,-14,603,800),7902=>array(50,-14,764,992),7903=>array(58,-14,603,810),7904=>array(50,-14,764,921),7905=>array(58,-14,603,777),7906=>array(50,-183,764,760),7907=>array(58,-183,603,615),7908=>array(87,-183,645,729),7909=>array(85,-183,543,560),7910=>array(87,-14,645,992),7911=>array(85,-14,543,810),7912=>array(84,-4,796,927),7913=>array(86,-14,676,800),7914=>array(84,-4,796,927),7915=>array(86,-14,676,800),7916=>array(84,-4,796,992),7917=>array(86,-14,676,810),7918=>array(84,-4,796,921),7919=>array(86,-14,676,777),7920=>array(84,-183,796,760),7921=>array(86,-183,676,615),7922=>array(-2,0,613,931),7923=>array(30,-208,562,802),7924=>array(-2,-183,613,729),7925=>array(30,-208,562,547),7926=>array(-2,0,613,996),7927=>array(30,-208,562,813),7928=>array(-2,0,613,921),7929=>array(30,-208,562,777),7930=>array(98,0,764,729),7931=>array(16,0,462,760),7936=>array(55,-12,611,797),7937=>array(55,-12,611,797),7938=>array(55,-12,611,800),7939=>array(55,-12,611,800),7940=>array(55,-12,611,800),7941=>array(55,-12,611,800),7942=>array(55,-12,611,928),7943=>array(55,-12,611,928),7944=>array(8,0,676,797),7945=>array(8,0,676,797),7946=>array(2,0,869,800),7947=>array(3,0,869,800),7948=>array(3,0,761,800),7949=>array(2,0,793,800),7950=>array(3,0,700,928),7951=>array(2,0,734,928),7952=>array(65,-14,473,797),7953=>array(65,-14,473,797),7954=>array(65,-14,473,800),7955=>array(65,-14,473,800),7956=>array(65,-14,486,800),7957=>array(65,-14,501,800),7960=>array(3,0,647,797),7961=>array(3,0,647,797),7962=>array(2,0,902,800),7963=>array(3,0,911,800),7964=>array(3,0,834,800),7965=>array(2,0,864,800),7968=>array(91,-208,549,797),7969=>array(91,-208,549,797),7970=>array(91,-208,549,800),7971=>array(91,-208,549,800),7972=>array(91,-208,549,800),7973=>array(91,-208,549,800),7974=>array(91,-208,549,928),7975=>array(91,-208,549,928),7976=>array(3,0,739,797),7977=>array(3,0,737,797),7978=>array(2,0,988,800),7979=>array(3,0,991,800),7980=>array(3,0,929,800),7981=>array(2,0,953,800),7982=>array(3,0,835,928),7983=>array(2,0,849,928),7984=>array(76,0,304,797),7985=>array(71,0,304,797),7986=>array(-39,0,340,800),7987=>array(-34,0,347,800),7988=>array(2,0,362,800),7989=>array(-22,0,366,800),7990=>array(-26,0,304,928),7991=>array(-28,0,304,928),7992=>array(3,0,282,797),7993=>array(3,0,276,797),7994=>array(2,0,537,800),7995=>array(3,0,537,800),7996=>array(3,0,472,800),7997=>array(2,0,501,800),7998=>array(3,0,392,928),7999=>array(2,0,395,928),8000=>array(55,-14,557,797),8001=>array(55,-14,557,797),8002=>array(55,-14,557,800),8003=>array(55,-14,557,800),8004=>array(55,-14,557,800),8005=>array(55,-14,557,800),8008=>array(3,-14,748,797),8009=>array(3,-14,792,797),8010=>array(2,-14,1039,800),8011=>array(3,-14,1043,800),8012=>array(3,-14,882,800),8013=>array(2,-14,914,800),8016=>array(73,-14,521,797),8017=>array(73,-14,521,797),8018=>array(73,-14,521,800),8019=>array(73,-14,521,800),8020=>array(73,-14,521,800),8021=>array(73,-14,521,800),8022=>array(73,-14,521,928),8023=>array(73,-14,521,928),8025=>array(3,0,786,797),8027=>array(3,0,1000,800),8029=>array(2,0,1014,800),8031=>array(2,0,900,928),8032=>array(66,-14,769,797),8033=>array(66,-14,769,797),8034=>array(66,-14,769,800),8035=>array(66,-14,769,800),8036=>array(66,-14,769,800),8037=>array(66,-14,769,800),8038=>array(66,-14,769,928),8039=>array(66,-14,769,928),8040=>array(3,0,764,797),8041=>array(3,0,805,797),8042=>array(2,0,1051,800),8043=>array(3,0,1057,800),8044=>array(3,0,908,800),8045=>array(2,0,934,800),8046=>array(3,0,883,928),8047=>array(2,0,914,928),8048=>array(55,-12,611,800),8049=>array(55,-12,611,800),8050=>array(65,-14,473,800),8051=>array(65,-14,473,800),8052=>array(91,-208,549,800),8053=>array(91,-208,549,800),8054=>array(-56,0,304,800),8055=>array(81,0,324,800),8056=>array(55,-14,557,800),8057=>array(55,-14,557,800),8058=>array(73,-14,521,800),8059=>array(73,-14,521,800),8060=>array(66,-14,769,800),8061=>array(66,-14,769,800),8064=>array(55,-208,611,797),8065=>array(55,-208,611,797),8066=>array(55,-208,611,800),8067=>array(55,-208,611,800),8068=>array(55,-208,611,800),8069=>array(55,-208,611,800),8070=>array(55,-208,611,928),8071=>array(55,-208,611,928),8072=>array(8,-208,676,797),8073=>array(8,-208,676,797),8074=>array(2,-208,869,800),8075=>array(3,-208,869,800),8076=>array(3,-208,761,800),8077=>array(2,-208,793,800),8078=>array(3,-208,700,928),8079=>array(2,-208,734,928),8080=>array(91,-208,549,797),8081=>array(91,-208,549,797),8082=>array(91,-208,549,800),8083=>array(91,-208,549,800),8084=>array(91,-208,549,800),8085=>array(91,-208,549,800),8086=>array(91,-208,549,928),8087=>array(91,-208,549,928),8088=>array(3,-208,739,797),8089=>array(3,-208,737,797),8090=>array(2,-208,988,800),8091=>array(3,-208,991,800),8092=>array(3,-208,929,800),8093=>array(2,-208,953,800),8094=>array(3,-208,835,928),8095=>array(2,-208,849,928),8096=>array(66,-208,769,797),8097=>array(66,-208,769,797),8098=>array(66,-208,769,800),8099=>array(66,-208,769,800),8100=>array(66,-208,769,800),8101=>array(66,-208,769,800),8102=>array(66,-208,769,928),8103=>array(66,-208,769,928),8104=>array(3,-208,764,797),8105=>array(3,-208,805,797),8106=>array(2,-208,1051,800),8107=>array(3,-208,1057,800),8108=>array(3,-208,908,800),8109=>array(2,-208,934,800),8110=>array(3,-208,883,928),8111=>array(2,-208,914,928),8112=>array(55,-12,611,785),8113=>array(55,-12,611,745),8114=>array(55,-208,611,800),8115=>array(55,-208,611,559),8116=>array(55,-208,611,800),8118=>array(55,-12,611,777),8119=>array(55,-208,611,777),8120=>array(8,0,676,928),8121=>array(8,0,676,899),8122=>array(-2,0,708,800),8123=>array(8,0,676,800),8124=>array(8,-208,676,729),8125=>array(190,595,309,797),8126=>array(214,-208,321,-45),8127=>array(190,595,309,797),8128=>array(89,639,411,777),8129=>array(89,659,411,928),8130=>array(91,-208,549,800),8131=>array(91,-208,549,560),8132=>array(91,-208,549,800),8134=>array(91,-208,549,777),8135=>array(91,-208,549,777),8136=>array(-2,0,741,800),8137=>array(-12,0,682,800),8138=>array(-2,0,833,800),8139=>array(-6,0,765,800),8140=>array(98,-208,654,729),8141=>array(67,595,446,800),8142=>array(88,595,447,800),8143=>array(89,595,411,928),8144=>array(-10,0,304,785),8145=>array(-14,0,304,745),8146=>array(-20,0,304,978),8147=>array(2,0,313,978),8150=>array(-14,0,309,777),8151=>array(-13,0,310,928),8152=>array(-5,0,300,928),8153=>array(1,0,293,899),8154=>array(-2,0,377,800),8155=>array(-9,0,311,800),8157=>array(62,595,443,800),8158=>array(73,595,461,800),8159=>array(89,595,411,928),8160=>array(73,-14,521,785),8161=>array(73,-14,521,745),8162=>array(73,-14,521,978),8163=>array(73,-14,521,978),8164=>array(91,-208,580,797),8165=>array(91,-208,580,797),8166=>array(73,-14,521,777),8167=>array(73,-14,521,928),8168=>array(-2,0,613,928),8169=>array(-2,0,613,899),8170=>array(-2,0,847,800),8171=>array(-15,0,821,800),8172=>array(3,0,651,797),8173=>array(83,659,395,978),8174=>array(105,659,415,978),8175=>array(83,617,317,800),8178=>array(66,-208,769,800),8179=>array(66,-208,769,547),8180=>array(66,-208,769,800),8182=>array(66,-14,769,777),8183=>array(66,-208,769,777),8184=>array(-2,-14,885,800),8185=>array(-7,-14,750,800),8186=>array(-2,0,884,800),8187=>array(-18,0,752,800),8188=>array(38,-208,726,738),8189=>array(181,616,415,800),8190=>array(190,595,309,797),8192=>array(49,234,312,314),8193=>array(49,234,312,314),8194=>array(49,234,312,314),8195=>array(49,234,312,314),8196=>array(49,234,312,314),8197=>array(49,234,312,314),8198=>array(49,234,312,314),8199=>array(49,234,312,314),8200=>array(49,234,312,314),8201=>array(49,234,312,314),8202=>array(49,234,312,314),8203=>array(49,234,312,314),8204=>array(49,234,312,314),8205=>array(49,234,312,314),8206=>array(49,234,312,314),8207=>array(49,234,312,314),8208=>array(49,234,312,314),8209=>array(49,234,312,314),8210=>array(49,239,587,309),8211=>array(49,239,451,309),8212=>array(49,239,951,309),8213=>array(0,239,1000,309),8214=>array(127,-236,371,764),8215=>array(-10,-236,510,-9),8216=>array(85,489,228,729),8217=>array(87,499,230,729),8218=>array(85,-116,228,124),8219=>array(87,499,230,729),8220=>array(85,489,428,729),8221=>array(85,489,428,729),8222=>array(85,-116,428,124),8223=>array(85,489,428,729),8224=>array(28,-96,472,729),8225=>array(28,-96,472,729),8226=>array(150,227,440,516),8227=>array(150,188,479,555),8228=>array(115,0,219,124),8229=>array(115,0,552,124),8230=>array(115,0,885,124),8231=>array(107,302,210,426),8232=>array(55,-14,1287,742),8233=>array(55,-14,1287,742),8234=>array(55,-14,1287,742),8235=>array(55,-14,1287,742),8236=>array(55,-14,1287,742),8237=>array(55,-14,1287,742),8238=>array(55,-14,1287,742),8239=>array(55,-14,1287,742),8240=>array(55,-14,1287,742),8241=>array(55,-14,1681,742),8242=>array(20,547,203,729),8243=>array(20,547,350,729),8244=>array(20,547,496,729),8245=>array(20,547,203,729),8246=>array(20,547,350,729),8247=>array(20,547,496,729),8248=>array(5,-236,333,-30),8249=>array(77,69,306,517),8250=>array(94,69,323,517),8251=>array(95,2,740,725),8252=>array(72,0,414,729),8253=>array(72,0,461,742),8254=>array(-10,686,510,755),8255=>array(-43,-237,847,-60),8256=>array(-43,752,847,929),8257=>array(-42,-236,286,229),8258=>array(30,-29,970,814),8259=>array(108,313,400,421),8260=>array(-183,-14,350,742),8261=>array(86,-132,293,760),8262=>array(86,-132,293,760),8263=>array(36,0,886,742),8264=>array(72,0,661,742),8265=>array(72,0,661,742),8266=>array(49,-123,448,545),8267=>array(115,-96,566,729),8268=>array(105,220,395,509),8269=>array(105,220,395,509),8270=>array(30,-29,470,427),8271=>array(139,-116,282,517),8272=>array(-43,-237,847,929),8273=>array(30,-7,470,929),8274=>array(71,-93,408,729),8275=>array(49,228,951,399),8276=>array(-43,-240,847,-63),8277=>array(152,98,686,631),8278=>array(122,149,464,589),8279=>array(20,547,643,729),8280=>array(175,125,663,613),8281=>array(175,120,663,608),8282=>array(107,0,210,729),8283=>array(49,-138,749,867),8284=>array(55,0,783,729),8285=>array(107,39,210,655),8286=>array(107,8,210,683),8287=>array(42,319,366,742),8288=>array(42,319,366,742),8289=>array(42,319,366,742),8290=>array(42,319,366,742),8291=>array(42,319,366,742),8292=>array(42,319,366,742),8298=>array(42,319,366,742),8299=>array(42,319,366,742),8300=>array(42,319,366,742),8301=>array(42,319,366,742),8302=>array(42,319,366,742),8303=>array(42,319,366,742),8304=>array(42,319,366,742),8305=>array(60,326,116,751),8308=>array(31,326,369,734),8309=>array(50,319,353,734),8310=>array(45,319,369,742),8311=>array(53,326,354,734),8312=>array(43,319,365,742),8313=>array(41,319,364,742),8314=>array(67,326,461,677),8315=>array(67,479,461,525),8316=>array(67,422,461,581),8317=>array(54,252,195,751),8318=>array(50,252,191,751),8319=>array(57,326,346,640),8320=>array(42,-7,366,416),8321=>array(67,0,346,408),8322=>array(46,0,338,416),8323=>array(48,-7,350,416),8324=>array(31,0,369,408),8325=>array(50,-7,353,408),8326=>array(45,-7,369,416),8327=>array(53,0,354,408),8328=>array(43,-7,365,416),8329=>array(41,-7,364,416),8330=>array(67,0,461,351),8331=>array(67,152,461,199),8332=>array(67,96,461,254),8333=>array(54,-74,195,425),8334=>array(50,-74,191,425),8336=>array(38,-8,329,313),8337=>array(35,-8,354,313),8338=>array(35,-8,351,313),8339=>array(57,0,391,306),8340=>array(35,-8,354,313),8341=>array(57,0,346,425),8342=>array(57,0,363,425),8343=>array(60,0,116,425),8344=>array(57,0,560,313),8345=>array(57,0,346,313),8346=>array(57,-117,365,313),8347=>array(57,0,320,322),8348=>array(17,0,232,393),8352=>array(42,0,835,729),8353=>array(56,-44,593,778),8354=>array(47,-14,587,742),8355=>array(65,0,599,729),8356=>array(63,0,548,742),8357=>array(91,-93,889,640),8358=>array(57,0,691,729),8359=>array(98,-14,1226,729),8360=>array(98,-14,1025,729),8361=>array(29,0,960,729),8362=>array(46,-14,743,729),8363=>array(55,-156,619,760),8364=>array(0,-14,570,742),8365=>array(20,0,636,729),8366=>array(10,0,626,729),8367=>array(102,-222,1205,742),8368=>array(22,-14,569,742),8369=>array(33,0,579,729),8370=>array(45,-81,586,809),8371=>array(8,0,627,729),8372=>array(57,-14,717,742),8373=>array(81,-147,556,760),8376=>array(10,0,626,729),8377=>array(52,0,585,729),8378=>array(5,2,649,731),8400=>array(-491,635,-26,760),8401=>array(-470,635,-5,760),8406=>array(-470,560,-26,760),8407=>array(-470,560,-26,760),8411=>array(-491,560,-10,758),8412=>array(-586,560,86,758),8417=>array(-470,560,-26,760),8448=>array(33,-24,980,752),8449=>array(33,-24,999,752),8450=>array(56,-14,644,742),8451=>array(95,-14,1053,742),8452=>array(-21,0,637,729),8453=>array(29,-24,987,752),8454=>array(29,-24,1038,752),8455=>array(80,-14,560,742),8456=>array(54,-146,642,611),8457=>array(95,0,894,742),8459=>array(36,-14,943,748),8460=>array(1,-128,693,731),8461=>array(98,0,751,729),8462=>array(35,0,566,760),8463=>array(44,0,566,760),8464=>array(29,-15,432,742),8465=>array(52,-14,659,742),8466=>array(33,-14,679,743),8467=>array(-14,-14,353,742),8468=>array(16,-14,763,760),8469=>array(97,0,704,729),8470=>array(26,0,969,729),8471=>array(138,0,862,724),8472=>array(54,-221,658,495),8473=>array(98,0,666,729),8474=>array(56,-129,731,742),8475=>array(32,-9,764,774),8476=>array(41,-14,803,743),8477=>array(98,0,774,729),8478=>array(83,0,814,729),8479=>array(98,-107,666,847),8480=>array(126,443,770,730),8481=>array(-2,0,1023,547),8482=>array(144,447,784,729),8483=>array(8,-108,676,846),8484=>array(45,0,700,729),8485=>array(43,-213,523,760),8486=>array(38,0,726,738),8487=>array(38,-14,726,724),8488=>array(12,-149,573,783),8489=>array(33,0,255,547),8490=>array(98,0,677,729),8491=>array(8,0,676,928),8492=>array(45,0,734,772),8493=>array(63,-12,652,742),8494=>array(61,-12,793,647),8495=>array(42,-14,547,533),8496=>array(79,-14,565,742),8497=>array(41,-16,758,755),8498=>array(98,0,517,729),8499=>array(28,-28,1032,751),8500=>array(51,-12,411,395),8501=>array(50,-14,712,742),8502=>array(-2,-14,653,743),8503=>array(13,-35,407,742),8504=>array(42,-35,591,742),8505=>array(34,0,355,760),8506=>array(44,-21,915,654),8507=>array(74,0,1162,547),8508=>array(18,-8,685,547),8509=>array(0,-194,669,560),8510=>array(98,0,648,729),8511=>array(98,0,750,729),8512=>array(12,-192,791,719),8513=>array(80,-14,716,742),8514=>array(4,0,458,729),8515=>array(3,0,457,729),8516=>array(-2,0,613,729),8517=>array(42,0,786,729),8518=>array(44,-14,709,760),8519=>array(44,-14,572,560),8520=>array(39,0,313,760),8521=>array(-114,-208,313,760),8523=>array(29,-14,715,742),8526=>array(40,0,441,547),8528=>array(67,-14,922,742),8529=>array(67,-14,932,742),8530=>array(67,-14,1335,742),8531=>array(67,-14,918,742),8532=>array(46,-14,918,742),8533=>array(67,-14,921,742),8534=>array(46,-14,921,742),8535=>array(48,-14,921,742),8536=>array(31,-14,921,742),8537=>array(67,-14,937,742),8538=>array(50,-14,937,742),8539=>array(67,-14,933,742),8540=>array(48,-14,933,742),8541=>array(50,-14,933,742),8542=>array(53,-14,933,742),8543=>array(67,-14,751,742),8544=>array(98,0,197,729),8545=>array(98,0,394,729),8546=>array(98,0,591,729),8547=>array(98,0,915,729),8548=>array(8,0,676,729),8549=>array(8,0,824,729),8550=>array(8,0,1021,729),8551=>array(8,0,1219,729),8552=>array(98,0,886,729),8553=>array(30,0,654,729),8554=>array(30,0,835,729),8555=>array(30,0,1032,729),8556=>array(98,0,552,729),8557=>array(56,-14,644,742),8558=>array(98,0,711,729),8559=>array(98,0,765,729),8560=>array(94,0,184,760),8561=>array(94,0,364,760),8562=>array(94,0,543,760),8563=>array(94,0,782,760),8564=>array(30,0,562,547),8565=>array(30,0,717,760),8566=>array(30,0,897,760),8567=>array(30,0,1077,760),8568=>array(94,0,786,760),8569=>array(29,0,559,547),8570=>array(29,0,729,760),8571=>array(29,0,908,760),8572=>array(94,0,184,760),8573=>array(55,-14,488,560),8574=>array(55,-14,544,760),8575=>array(91,0,889,560),8576=>array(59,0,1186,729),8577=>array(98,0,711,729),8578=>array(59,0,1186,729),8579=>array(56,-14,644,742),8580=>array(62,-14,495,560),8581=>array(56,-208,644,742),8585=>array(42,-14,918,742),8592=>array(49,100,781,527),8593=>array(205,0,632,732),8594=>array(57,100,789,527),8595=>array(205,-3,632,729),8596=>array(49,100,789,527),8597=>array(205,-8,632,732),8598=>array(141,25,703,587),8599=>array(141,25,703,587),8600=>array(141,25,703,587),8601=>array(141,25,703,587),8602=>array(49,100,781,527),8603=>array(57,100,789,527),8604=>array(21,103,827,414),8605=>array(11,103,816,414),8606=>array(49,100,781,527),8607=>array(206,0,633,732),8608=>array(57,100,789,527),8609=>array(206,-3,633,729),8610=>array(49,100,781,527),8611=>array(57,100,789,527),8612=>array(49,100,781,527),8613=>array(206,0,632,732),8614=>array(57,100,789,527),8615=>array(206,-3,632,729),8616=>array(206,0,632,732),8617=>array(49,100,780,565),8618=>array(58,100,789,565),8619=>array(49,100,780,565),8620=>array(58,100,789,565),8621=>array(49,100,789,527),8622=>array(49,93,789,534),8623=>array(146,-2,702,730),8624=>array(169,0,629,743),8625=>array(209,0,669,743),8626=>array(169,-14,629,729),8627=>array(209,-14,669,729),8628=>array(233,-3,760,604),8629=>array(49,100,656,626),8630=>array(22,203,799,668),8631=>array(39,203,816,668),8632=>array(108,25,788,729),8633=>array(55,-46,783,673),8634=>array(103,62,762,680),8635=>array(77,62,736,680),8636=>array(49,272,781,527),8637=>array(49,100,781,355),8638=>array(377,0,632,732),8639=>array(205,0,460,732),8640=>array(57,272,789,527),8641=>array(57,100,789,355),8642=>array(377,0,632,732),8643=>array(205,0,460,732),8644=>array(49,-47,789,674),8645=>array(58,-3,779,732),8646=>array(49,-47,789,674),8647=>array(49,-47,781,674),8648=>array(59,0,779,732),8649=>array(58,-47,790,674),8650=>array(59,-3,779,729),8651=>array(49,7,789,620),8652=>array(49,7,789,620),8653=>array(49,100,781,527),8654=>array(49,94,789,533),8655=>array(57,100,789,527),8656=>array(49,100,781,527),8657=>array(206,0,633,732),8658=>array(57,100,789,527),8659=>array(206,-3,633,729),8660=>array(49,100,789,527),8661=>array(205,-8,633,732),8662=>array(141,-23,751,587),8663=>array(92,-23,703,587),8664=>array(92,25,703,636),8665=>array(141,25,751,636),8666=>array(49,100,781,527),8667=>array(57,100,789,527),8668=>array(49,100,781,527),8669=>array(57,100,789,527),8670=>array(205,0,632,732),8671=>array(205,-3,632,729),8672=>array(49,100,781,527),8673=>array(205,0,633,732),8674=>array(57,100,789,527),8675=>array(205,-3,633,729),8676=>array(52,99,781,528),8677=>array(57,99,786,528),8678=>array(27,65,781,562),8679=>array(171,0,667,754),8680=>array(35,65,789,562),8681=>array(171,-25,667,729),8682=>array(171,0,667,754),8683=>array(171,0,667,754),8684=>array(156,0,682,754),8685=>array(171,0,667,754),8686=>array(171,0,667,754),8687=>array(171,0,667,754),8688=>array(57,65,811,562),8689=>array(60,0,788,729),8690=>array(60,0,788,729),8691=>array(171,-25,667,754),8692=>array(57,100,789,527),8693=>array(58,-3,779,732),8694=>array(57,-193,789,820),8695=>array(49,94,781,533),8696=>array(57,94,789,533),8697=>array(49,94,789,533),8698=>array(49,94,781,533),8699=>array(57,94,789,533),8700=>array(49,94,789,533),8701=>array(27,96,781,531),8702=>array(57,96,811,531),8703=>array(27,96,811,531),8704=>array(8,0,676,729),8705=>array(66,-14,554,742),8706=>array(46,-14,471,662),8707=>array(98,0,568,729),8708=>array(98,-46,568,776),8709=>array(76,-10,795,710),8710=>array(-3,0,672,719),8711=>array(-3,0,672,719),8712=>array(85,-10,786,710),8713=>array(85,-138,786,835),8714=>array(106,76,612,550),8715=>array(85,-10,786,710),8716=>array(85,-138,786,835),8717=>array(106,76,612,550),8718=>array(146,0,490,485),8719=>array(76,-192,680,719),8720=>array(76,-192,680,719),8721=>array(12,-192,654,719),8722=>array(106,272,732,355),8723=>array(106,0,732,627),8724=>array(106,0,732,729),8725=>array(0,-93,337,729),8726=>array(192,-54,529,768),8727=>array(127,0,710,627),8728=>array(158,160,468,470),8729=>array(168,168,458,458),8730=>array(30,-20,637,811),8731=>array(30,-20,637,933),8732=>array(30,-20,637,924),8733=>array(107,112,607,487),8734=>array(107,112,726,487),8735=>array(138,99,700,661),8736=>array(85,0,786,729),8737=>array(85,-53,786,729),8738=>array(116,-3,732,727),8739=>array(211,-214,289,771),8740=>array(50,-214,451,771),8741=>array(133,-214,367,771),8742=>array(50,-214,451,771),8743=>array(129,0,603,579),8744=>array(129,0,603,579),8745=>array(129,0,603,579),8746=>array(129,0,603,579),8747=>array(57,-212,464,757),8748=>array(57,-212,732,757),8749=>array(57,-212,1000,757),8750=>array(57,-212,464,757),8751=>array(57,-212,732,757),8752=>array(57,-212,1000,757),8753=>array(57,-213,522,757),8754=>array(57,-212,514,757),8755=>array(57,-212,515,757),8756=>array(59,100,577,604),8757=>array(59,100,577,604),8758=>array(79,100,182,604),8759=>array(59,100,577,604),8760=>array(106,272,732,552),8761=>array(106,78,732,552),8762=>array(105,78,732,552),8763=>array(106,78,732,552),8764=>array(106,228,732,399),8765=>array(106,228,732,399),8766=>array(79,149,759,479),8767=>array(106,42,732,584),8768=>array(102,0,273,626),8769=>array(106,77,732,553),8770=>array(106,133,732,454),8771=>array(106,172,732,494),8772=>array(106,48,732,603),8773=>array(106,90,732,594),8774=>array(106,12,732,594),8775=>array(106,-5,732,657),8776=>array(106,133,732,494),8777=>array(106,2,732,625),8778=>array(106,90,732,598),8779=>array(106,59,732,602),8780=>array(106,90,732,594),8781=>array(105,105,732,521),8782=>array(106,26,732,601),8783=>array(106,172,732,601),8784=>array(106,172,732,625),8785=>array(106,1,732,625),8786=>array(106,2,733,625),8787=>array(106,2,733,625),8788=>array(101,151,899,476),8789=>array(100,151,900,475),8790=>array(106,172,732,454),8791=>array(106,172,732,760),8792=>array(106,172,732,662),8793=>array(106,172,732,812),8794=>array(106,172,732,812),8795=>array(106,172,732,849),8796=>array(106,172,732,854),8797=>array(106,172,732,764),8798=>array(106,172,732,760),8799=>array(106,172,732,856),8800=>array(106,19,732,608),8801=>array(106,90,732,537),8802=>array(106,-24,732,650),8803=>array(106,0,732,629),8804=>array(106,0,732,582),8805=>array(106,0,732,582),8806=>array(106,-83,732,638),8807=>array(106,-83,732,638),8808=>array(106,-164,732,638),8809=>array(106,-164,732,638),8810=>array(72,22,975,609),8811=>array(72,22,975,609),8812=>array(86,-132,378,759),8813=>array(105,13,732,613),8814=>array(106,2,732,674),8815=>array(106,-47,732,625),8816=>array(106,-102,732,667),8817=>array(106,-102,732,667),8818=>array(106,-55,732,582),8819=>array(106,-39,732,582),8820=>array(106,-105,732,664),8821=>array(106,-102,732,667),8822=>array(102,-87,732,686),8823=>array(102,-87,732,686),8824=>array(102,-197,732,797),8825=>array(102,-197,732,797),8826=>array(106,-38,732,664),8827=>array(106,-38,732,664),8828=>array(106,-105,732,667),8829=>array(106,-105,732,667),8830=>array(106,-85,732,667),8831=>array(106,-85,732,667),8832=>array(106,-61,732,764),8833=>array(106,-138,732,687),8834=>array(100,80,738,546),8835=>array(100,80,738,546),8836=>array(100,-96,738,726),8837=>array(100,-100,738,722),8838=>array(93,0,732,613),8839=>array(106,0,745,613),8840=>array(93,-116,732,730),8841=>array(106,-116,745,730),8842=>array(93,-73,732,614),8843=>array(93,-73,732,614),8844=>array(129,0,603,579),8845=>array(129,0,603,579),8846=>array(129,2,603,582),8847=>array(106,0,732,568),8848=>array(106,0,732,568),8849=>array(106,-83,732,630),8850=>array(106,-83,732,630),8851=>array(106,0,674,626),8852=>array(106,0,674,626),8853=>array(91,-14,747,643),8854=>array(91,-14,747,643),8855=>array(91,-14,747,643),8856=>array(91,-14,747,643),8857=>array(91,-14,747,643),8858=>array(91,-14,747,643),8859=>array(91,-14,747,643),8860=>array(91,-14,747,643),8861=>array(91,-14,747,643),8862=>array(91,-14,747,643),8863=>array(91,-14,747,643),8864=>array(91,-14,747,643),8865=>array(91,-14,747,643),8866=>array(85,0,786,700),8867=>array(85,0,786,700),8868=>array(85,0,786,700),8869=>array(85,0,786,700),8870=>array(85,0,436,700),8871=>array(85,0,436,700),8872=>array(85,0,786,700),8873=>array(85,0,786,700),8874=>array(85,0,786,700),8875=>array(85,0,786,700),8876=>array(85,-40,786,740),8877=>array(85,-40,786,740),8878=>array(85,-40,786,740),8879=>array(85,-40,786,740),8880=>array(106,-43,724,670),8881=>array(106,-43,724,670),8882=>array(106,15,732,612),8883=>array(106,15,732,612),8884=>array(106,-48,732,674),8885=>array(106,-48,732,674),8886=>array(59,175,941,454),8887=>array(59,175,941,454),8888=>array(48,175,790,454),8889=>array(59,-47,779,674),8890=>array(116,0,404,701),8891=>array(98,0,634,740),8892=>array(98,0,634,740),8893=>array(98,0,634,740),8894=>array(138,0,700,562),8895=>array(138,0,700,562),8896=>array(-3,-192,823,719),8897=>array(-3,-192,823,719),8898=>array(68,-192,752,719),8899=>array(68,-192,752,719),8900=>array(3,-233,491,807),8901=>array(107,285,210,409),8902=>array(122,149,504,512),8903=>array(106,15,732,613),8904=>array(106,-30,894,657),8905=>array(106,-30,894,657),8906=>array(106,-30,894,657),8907=>array(106,-30,894,657),8908=>array(106,-30,894,657),8909=>array(106,172,732,494),8910=>array(48,0,684,579),8911=>array(48,0,684,579),8912=>array(93,-3,732,630),8913=>array(106,-3,745,630),8914=>array(103,0,735,663),8915=>array(103,-14,735,649),8916=>array(186,0,652,729),8917=>array(106,-100,732,729),8918=>array(106,46,732,581),8919=>array(106,46,732,581),8920=>array(72,22,1350,609),8921=>array(72,22,1350,609),8922=>array(106,-228,732,854),8923=>array(106,-228,732,854),8924=>array(106,0,732,582),8925=>array(106,0,732,582),8926=>array(106,-105,732,667),8927=>array(106,-105,732,667),8928=>array(106,-178,732,764),8929=>array(106,-178,732,764),8930=>array(106,-141,732,767),8931=>array(106,-141,732,767),8932=>array(106,-94,732,619),8933=>array(106,-94,732,619),8934=>array(106,-138,732,582),8935=>array(106,-138,732,582),8936=>array(106,-169,732,667),8937=>array(110,-171,736,667),8938=>array(106,-130,732,756),8939=>array(106,-130,732,756),8940=>array(106,-189,732,815),8941=>array(104,-189,730,815),8942=>array(448,-93,551,715),8943=>array(115,249,884,373),8944=>array(115,-93,884,715),8945=>array(115,-93,884,715),8946=>array(43,-10,957,710),8947=>array(85,-10,786,710),8948=>array(106,76,612,550),8949=>array(85,-10,786,910),8950=>array(85,-10,786,853),8951=>array(106,76,612,686),8952=>array(85,-144,786,710),8953=>array(85,-10,786,710),8954=>array(43,-10,957,710),8955=>array(85,-10,786,710),8956=>array(106,76,612,550),8957=>array(85,-10,786,853),8958=>array(106,76,612,686),8959=>array(106,0,765,720),8960=>array(36,-18,567,514),8961=>array(56,162,540,443),8962=>array(71,0,563,596),8963=>array(205,481,632,732),8964=>array(205,0,632,251),8965=>array(205,0,632,406),8966=>array(205,0,632,513),8967=>array(154,-29,334,788),8968=>array(86,-132,293,760),8969=>array(97,-132,304,760),8970=>array(86,-132,293,760),8971=>array(97,-132,304,760),8972=>array(369,-77,759,313),8973=>array(49,-77,439,313),8974=>array(369,243,759,634),8975=>array(49,243,439,634),8976=>array(106,140,732,421),8977=>array(3,126,510,634),8984=>array(121,0,879,759),8985=>array(106,140,732,421),8988=>array(86,425,403,760),8989=>array(65,425,383,760),8990=>array(86,-70,403,264),8991=>array(65,-70,383,264),8992=>array(210,-250,497,928),8993=>array(21,-237,307,942),8996=>array(76,227,1076,575),8997=>array(76,0,1076,575),8998=>array(76,0,1414,760),8999=>array(76,0,1076,760),9000=>array(59,0,1385,729),9003=>array(0,0,1338,760),9004=>array(73,-91,800,748),9075=>array(81,0,304,547),9076=>array(91,-208,580,560),9077=>array(66,-14,769,547),9082=>array(55,-12,611,559),9085=>array(13,-228,745,102),9095=>array(76,0,1096,748),9108=>array(17,0,856,727),9115=>array(86,-252,414,946),9116=>array(86,-252,181,942),9117=>array(86,-240,414,942),9118=>array(86,-252,414,946),9119=>array(319,-252,414,942),9120=>array(86,-240,414,942),9121=>array(86,-252,414,928),9122=>array(86,-252,181,942),9123=>array(86,-240,414,942),9124=>array(86,-252,414,928),9125=>array(319,-252,414,935),9126=>array(86,-240,414,935),9127=>array(330,-261,668,928),9128=>array(82,-252,420,940),9129=>array(330,-240,668,940),9130=>array(330,-256,420,943),9131=>array(82,-261,420,928),9132=>array(330,-252,668,940),9133=>array(82,-240,420,940),9134=>array(210,-250,307,942),9166=>array(27,65,781,729),9167=>array(91,0,854,596),9187=>array(73,-91,800,748),9189=>array(3,75,766,444),9192=>array(43,-129,601,294),9250=>array(-62,-14,580,760),9251=>array(71,-228,563,102),9312=>array(74,-10,822,738),9313=>array(74,-10,822,738),9314=>array(74,-10,822,738),9315=>array(74,-10,822,738),9316=>array(74,-10,822,738),9317=>array(74,-10,822,738),9318=>array(74,-10,822,738),9319=>array(74,-10,822,738),9320=>array(74,-10,822,738),9321=>array(74,-10,822,738),9472=>array(-10,242,612,326),9473=>array(-10,200,612,368),9474=>array(262,-302,340,973),9475=>array(223,-302,379,973),9476=>array(-10,242,612,326),9477=>array(-10,200,612,368),9478=>array(262,-302,340,973),9479=>array(223,-302,379,973),9480=>array(-10,242,612,326),9481=>array(-10,200,612,368),9482=>array(262,-302,340,973),9483=>array(223,-302,379,973),9484=>array(262,-302,612,326),9485=>array(262,-302,612,368),9486=>array(223,-302,612,326),9487=>array(223,-302,612,368),9488=>array(-10,-302,340,326),9489=>array(-10,-302,340,368),9490=>array(-10,-302,379,326),9491=>array(-10,-302,379,368),9492=>array(262,242,612,973),9493=>array(262,200,612,973),9494=>array(223,242,612,973),9495=>array(223,200,612,973),9496=>array(-10,242,340,973),9497=>array(-10,200,340,973),9498=>array(-10,242,379,973),9499=>array(-10,200,379,973),9500=>array(262,-302,612,973),9501=>array(262,-302,612,973),9502=>array(223,-302,612,973),9503=>array(223,-302,612,973),9504=>array(223,-302,612,973),9505=>array(223,-302,612,973),9506=>array(223,-302,612,973),9507=>array(223,-302,612,973),9508=>array(-10,-302,340,973),9509=>array(-10,-302,340,973),9510=>array(-10,-302,379,973),9511=>array(-10,-302,379,973),9512=>array(-10,-302,379,973),9513=>array(-10,-302,379,973),9514=>array(-10,-302,379,973),9515=>array(-10,-302,379,973),9516=>array(-10,-302,612,326),9517=>array(-10,-302,612,368),9518=>array(-10,-302,612,368),9519=>array(-10,-302,612,368),9520=>array(-10,-302,612,326),9521=>array(-10,-302,612,368),9522=>array(-10,-302,612,368),9523=>array(-10,-302,612,368),9524=>array(-10,242,612,973),9525=>array(-10,200,612,973),9526=>array(-10,200,612,973),9527=>array(-10,200,612,973),9528=>array(-10,242,612,973),9529=>array(-10,200,612,973),9530=>array(-10,200,612,973),9531=>array(-10,200,612,973),9532=>array(-10,-302,612,973),9533=>array(-10,-302,612,973),9534=>array(-10,-302,612,973),9535=>array(-10,-302,612,973),9536=>array(-10,-302,612,973),9537=>array(-10,-302,612,973),9538=>array(-10,-302,612,973),9539=>array(-10,-302,612,973),9540=>array(-10,-302,612,973),9541=>array(-10,-302,612,973),9542=>array(-10,-302,612,973),9543=>array(-10,-302,612,973),9544=>array(-10,-302,612,973),9545=>array(-10,-302,612,973),9546=>array(-10,-302,612,973),9547=>array(-10,-302,612,973),9548=>array(-10,242,612,326),9549=>array(-10,200,612,368),9550=>array(262,-302,340,973),9551=>array(223,-302,379,973),9552=>array(-10,158,612,410),9553=>array(184,-302,418,973),9554=>array(262,-302,612,410),9555=>array(184,-302,612,326),9556=>array(184,-302,612,410),9557=>array(-10,-302,340,410),9558=>array(-10,-302,418,326),9559=>array(-10,-302,418,410),9560=>array(262,158,612,973),9561=>array(184,242,612,973),9562=>array(184,158,612,973),9563=>array(-10,158,340,973),9564=>array(-10,242,418,973),9565=>array(-10,158,418,973),9566=>array(262,-302,612,973),9567=>array(184,-302,612,973),9568=>array(184,-302,612,973),9569=>array(-10,-302,340,973),9570=>array(-10,-302,418,973),9571=>array(-10,-302,418,973),9572=>array(-10,-302,612,410),9573=>array(-10,-302,612,326),9574=>array(-10,-302,612,410),9575=>array(-10,158,612,973),9576=>array(-10,242,612,973),9577=>array(-10,158,612,973),9578=>array(-10,-302,612,973),9579=>array(-10,-302,612,973),9580=>array(-10,-302,612,973),9581=>array(262,-302,612,326),9582=>array(-10,-302,340,326),9583=>array(-10,242,340,973),9584=>array(262,242,612,973),9585=>array(-53,-302,655,973),9586=>array(-53,-302,655,973),9587=>array(-53,-302,655,973),9588=>array(-10,242,311,326),9589=>array(262,284,340,973),9590=>array(311,242,612,326),9591=>array(262,-302,340,284),9592=>array(-10,200,311,368),9593=>array(223,284,379,973),9594=>array(311,200,612,368),9595=>array(223,-302,379,284),9596=>array(-10,200,612,368),9597=>array(223,-302,379,973),9598=>array(-10,200,612,368),9599=>array(223,-302,379,973),9600=>array(-10,260,779,770),9601=>array(-10,-250,779,-123),9602=>array(-10,-250,779,-5),9603=>array(-10,-250,779,132),9604=>array(-10,-250,779,260),9605=>array(-10,-250,779,387),9606=>array(-10,-250,779,515),9607=>array(-10,-250,779,642),9608=>array(-10,-250,779,770),9609=>array(-10,-250,680,770),9610=>array(-10,-250,582,770),9611=>array(-10,-250,483,770),9612=>array(-10,-250,384,770),9613=>array(-10,-250,286,770),9614=>array(-10,-250,187,770),9615=>array(-10,-250,88,770),9616=>array(384,-250,778,770),9617=>array(-10,-250,680,770),9618=>array(-10,-250,775,770),9619=>array(-10,-250,779,770),9620=>array(-10,642,779,770),9621=>array(680,-250,778,770),9622=>array(-10,-250,385,260),9623=>array(384,-250,779,260),9624=>array(-10,260,385,770),9625=>array(-10,-250,779,770),9626=>array(-10,-250,779,770),9627=>array(-10,-250,779,770),9628=>array(-10,-250,779,770),9629=>array(384,260,779,770),9630=>array(-10,-250,779,770),9631=>array(-10,-250,779,770),9632=>array(91,-123,854,643),9633=>array(91,-123,854,643),9634=>array(91,-123,854,643),9635=>array(91,-123,854,643),9636=>array(91,-123,854,643),9637=>array(91,-123,854,643),9638=>array(91,-123,854,643),9639=>array(91,-123,854,643),9640=>array(91,-123,854,643),9641=>array(91,-123,854,643),9642=>array(91,11,587,509),9643=>array(91,11,587,509),9644=>array(91,75,854,444),9645=>array(91,75,854,444),9646=>array(91,-122,459,642),9647=>array(91,-122,459,642),9648=>array(3,75,766,444),9649=>array(3,75,766,444),9650=>array(3,-123,766,643),9651=>array(3,-123,766,643),9652=>array(3,11,499,509),9653=>array(3,11,499,509),9654=>array(3,-123,766,643),9655=>array(3,-123,766,643),9656=>array(3,11,499,509),9657=>array(3,11,499,509),9658=>array(3,11,766,509),9659=>array(3,11,766,509),9660=>array(3,-123,766,643),9661=>array(3,-123,766,643),9662=>array(3,11,499,509),9663=>array(3,11,499,509),9664=>array(3,-123,766,643),9665=>array(3,-123,766,643),9666=>array(3,11,499,509),9667=>array(3,11,499,509),9668=>array(3,11,766,509),9669=>array(3,11,766,509),9670=>array(3,-123,766,643),9671=>array(3,-123,766,643),9672=>array(3,-123,766,643),9673=>array(55,-125,818,645),9674=>array(3,-233,491,807),9675=>array(55,-125,818,645),9676=>array(56,-125,817,644),9677=>array(55,-125,818,645),9678=>array(55,-125,818,645),9679=>array(55,-123,818,641),9680=>array(55,-123,818,641),9681=>array(55,-123,818,641),9682=>array(55,-123,818,641),9683=>array(55,-123,818,641),9684=>array(55,-123,818,641),9685=>array(55,-123,818,641),9686=>array(55,-125,436,645),9687=>array(91,-125,472,645),9688=>array(91,-10,700,770),9689=>array(91,-250,879,770),9690=>array(91,260,879,770),9691=>array(91,-250,879,260),9692=>array(3,260,384,645),9693=>array(3,260,384,645),9694=>array(3,-125,384,260),9695=>array(3,-125,384,260),9696=>array(55,260,818,645),9697=>array(55,-125,818,260),9698=>array(3,-123,766,643),9699=>array(3,-123,766,643),9700=>array(3,-123,766,643),9701=>array(3,-123,766,643),9702=>array(150,227,440,516),9703=>array(91,-123,854,643),9704=>array(91,-123,854,643),9705=>array(91,-123,854,643),9706=>array(91,-123,854,643),9707=>array(91,-123,854,643),9708=>array(3,-123,766,643),9709=>array(3,-123,766,643),9710=>array(3,-123,766,643),9711=>array(55,-250,1064,770),9712=>array(91,-123,854,643),9713=>array(91,-123,854,643),9714=>array(91,-123,854,643),9715=>array(91,-123,854,643),9716=>array(55,-123,818,641),9717=>array(55,-123,818,641),9718=>array(55,-123,818,641),9719=>array(55,-123,818,641),9720=>array(3,-123,766,643),9721=>array(3,-123,766,643),9722=>array(3,-123,766,643),9723=>array(91,-66,739,585),9724=>array(91,-66,739,585),9725=>array(91,-17,642,537),9726=>array(91,-17,642,537),9727=>array(3,-123,766,643),9728=>array(83,0,813,729),9729=>array(51,-2,949,360),9730=>array(49,0,848,729),9731=>array(83,-0,813,927),9732=>array(64,0,833,880),9733=>array(65,-4,832,723),9734=>array(65,-4,832,723),9735=>array(83,2,490,729),9736=>array(83,0,813,731),9737=>array(83,0,813,730),9738=>array(61,0,828,727),9739=>array(61,0,828,723),9740=>array(61,-1,610,722),9741=>array(61,0,952,723),9742=>array(68,0,1177,729),9743=>array(71,0,1180,729),9744=>array(90,0,807,729),9745=>array(89,0,808,729),9746=>array(89,0,808,729),9747=>array(75,78,457,656),9748=>array(49,0,870,933),9749=>array(74,0,822,731),9750=>array(84,0,813,731),9751=>array(84,0,813,727),9752=>array(78,0,819,729),9753=>array(83,140,813,574),9754=>array(84,113,813,569),9755=>array(84,113,813,569),9756=>array(87,104,810,569),9757=>array(72,0,537,724),9758=>array(86,103,810,569),9759=>array(72,-3,537,720),9760=>array(61,0,835,730),9761=>array(84,0,813,730),9762=>array(83,0,813,730),9763=>array(49,0,848,730),9764=>array(49,-2,620,727),9765=>array(83,0,663,731),9766=>array(83,-1,566,731),9767=>array(83,0,701,911),9768=>array(83,0,462,730),9769=>array(83,-1,813,729),9770=>array(87,0,810,730),9771=>array(83,0,814,731),9772=>array(83,0,627,731),9773=>array(83,0,813,730),9774=>array(83,0,813,730),9775=>array(83,0,813,730),9776=>array(83,0,813,729),9777=>array(83,0,814,729),9778=>array(83,0,813,729),9779=>array(83,0,813,729),9780=>array(83,0,813,729),9781=>array(83,0,813,729),9782=>array(83,0,813,729),9783=>array(83,0,813,729),9784=>array(66,-11,831,735),9785=>array(83,-73,959,804),9786=>array(83,-73,959,804),9787=>array(83,-73,959,804),9788=>array(83,0,813,730),9789=>array(358,0,814,730),9790=>array(83,0,539,730),9791=>array(85,-102,528,732),9792=>array(85,-125,647,731),9793=>array(85,-14,647,843),9794=>array(79,-14,831,720),9795=>array(166,0,730,730),9796=>array(219,0,677,730),9797=>array(121,0,774,730),9798=>array(127,0,769,730),9799=>array(240,0,656,730),9800=>array(45,0,851,731),9801=>array(89,0,807,730),9802=>array(94,0,802,731),9803=>array(113,31,784,679),9804=>array(140,0,756,730),9805=>array(53,-180,843,730),9806=>array(83,52,813,653),9807=>array(34,-96,863,730),9808=>array(83,-0,813,730),9809=>array(94,0,802,730),9810=>array(86,153,810,579),9811=>array(157,0,739,730),9812=>array(98,0,798,730),9813=>array(110,0,786,730),9814=>array(167,-1,729,729),9815=>array(214,0,683,730),9816=>array(165,0,732,730),9817=>array(148,-0,748,730),9818=>array(98,0,798,730),9819=>array(110,0,786,730),9820=>array(167,-1,729,729),9821=>array(214,0,683,730),9822=>array(162,0,734,730),9823=>array(148,-0,748,730),9824=>array(158,0,738,729),9825=>array(90,0,806,727),9826=>array(168,0,728,729),9827=>array(111,0,785,729),9828=>array(157,0,739,729),9829=>array(89,0,808,729),9830=>array(168,0,728,729),9831=>array(111,0,785,732),9832=>array(105,-1,791,729),9833=>array(84,-5,339,729),9834=>array(84,-5,554,729),9835=>array(184,-102,712,729),9836=>array(92,-5,804,729),9837=>array(88,-3,392,731),9838=>array(84,0,273,731),9839=>array(84,0,400,731),9840=>array(84,0,664,731),9841=>array(64,0,701,731),9842=>array(84,0,813,709),9843=>array(76,16,820,731),9844=>array(76,16,820,731),9845=>array(76,16,820,731),9846=>array(76,16,820,731),9847=>array(76,16,820,731),9848=>array(76,16,820,731),9849=>array(76,16,820,731),9850=>array(76,16,820,731),9851=>array(84,0,812,704),9852=>array(83,0,814,731),9853=>array(83,0,814,731),9854=>array(83,0,814,731),9855=>array(149,1,747,731),9856=>array(73,0,797,725),9857=>array(73,0,797,725),9858=>array(73,0,797,725),9859=>array(73,0,797,725),9860=>array(73,0,797,725),9861=>array(73,0,797,725),9862=>array(83,0,813,731),9863=>array(83,0,813,731),9864=>array(83,0,813,731),9865=>array(83,0,813,731),9866=>array(83,0,813,98),9867=>array(83,0,813,98),9868=>array(83,0,813,413),9869=>array(83,0,813,413),9870=>array(83,0,813,413),9871=>array(83,0,813,413),9872=>array(168,3,728,731),9873=>array(168,3,728,731),9874=>array(52,0,844,731),9875=>array(97,-10,799,732),9876=>array(131,0,765,729),9877=>array(61,-10,479,732),9878=>array(59,-10,837,732),9879=>array(61,0,835,732),9880=>array(145,0,750,732),9881=>array(95,-17,802,727),9882=>array(128,-9,768,733),9883=>array(127,0,769,728),9884=>array(127,0,769,729),9888=>array(49,0,848,729),9889=>array(83,2,619,730),9890=>array(85,-125,919,731),9891=>array(79,-206,1023,720),9892=>array(85,-186,1109,856),9893=>array(85,-125,837,917),9894=>array(131,-14,727,869),9895=>array(101,-170,741,884),9896=>array(188,-14,650,869),9897=>array(4,133,829,596),9898=>array(187,133,651,596),9899=>array(187,133,651,596),9900=>array(247,194,591,537),9901=>array(174,194,664,537),9902=>array(41,169,797,560),9903=>array(5,194,833,536),9904=>array(103,237,757,540),9905=>array(211,42,626,698),9906=>array(85,-125,647,731),9907=>array(168,-125,646,731),9908=>array(86,-125,646,731),9909=>array(86,-125,646,731),9910=>array(59,-118,791,643),9911=>array(194,-104,595,710),9912=>array(158,-125,543,731),9920=>array(42,4,796,553),9921=>array(42,4,796,724),9922=>array(42,4,796,553),9923=>array(42,4,796,724),9954=>array(85,-14,647,843),9985=>array(11,190,803,635),9986=>array(42,141,784,588),9987=>array(11,94,803,539),9988=>array(36,119,824,613),9990=>array(42,-14,796,742),9991=>array(42,-14,796,742),9992=>array(59,21,782,708),9993=>array(64,107,773,622),9996=>array(212,0,561,742),9997=>array(21,83,802,678),9998=>array(89,75,724,710),9999=>array(26,198,819,530),10000=>array(89,75,724,710),10001=>array(43,185,757,544),10002=>array(67,209,757,520),10003=>array(150,97,667,630),10004=>array(116,87,721,631),10005=>array(126,72,711,657),10006=>array(85,31,752,698),10007=>array(118,-9,701,732),10008=>array(123,0,754,739),10009=>array(55,0,783,729),10010=>array(55,0,783,729),10011=>array(55,0,783,729),10012=>array(55,0,783,729),10013=>array(165,0,673,729),10014=>array(131,0,678,729),10015=>array(155,0,683,729),10016=>array(55,0,783,729),10017=>array(91,-13,747,744),10018=>array(41,-14,797,742),10019=>array(42,-12,796,742),10020=>array(41,-14,797,742),10021=>array(41,-13,797,743),10022=>array(42,-14,796,745),10023=>array(42,-14,796,745),10025=>array(23,-10,815,744),10026=>array(42,-14,796,742),10027=>array(23,-9,814,743),10028=>array(23,-10,815,744),10029=>array(23,-9,814,743),10030=>array(23,-9,814,743),10031=>array(23,-9,814,743),10032=>array(24,12,815,714),10033=>array(64,0,773,729),10034=>array(74,0,764,729),10035=>array(55,0,783,729),10036=>array(31,-14,787,742),10037=>array(41,-14,797,742),10038=>array(91,-14,747,742),10039=>array(41,-14,797,742),10040=>array(41,-14,797,742),10041=>array(41,-14,797,742),10042=>array(55,0,783,729),10043=>array(82,-14,756,742),10044=>array(82,-14,756,742),10045=>array(79,-14,759,742),10046=>array(79,-14,759,742),10047=>array(54,0,784,709),10048=>array(54,0,784,709),10049=>array(41,-14,797,742),10050=>array(42,-14,796,742),10051=>array(79,-14,759,742),10052=>array(89,0,749,729),10053=>array(76,0,762,729),10054=>array(63,2,773,729),10055=>array(79,-13,759,742),10056=>array(47,-13,791,730),10057=>array(47,-13,791,730),10058=>array(41,-13,797,743),10059=>array(41,-13,797,743),10061=>array(50,-10,847,738),10063=>array(60,-49,837,729),10064=>array(60,0,837,777),10065=>array(60,-49,837,729),10066=>array(60,0,837,777),10070=>array(83,-2,813,728),10072=>array(377,-240,460,760),10073=>array(336,-240,502,760),10074=>array(253,-240,585,760),10075=>array(85,395,264,729),10076=>array(59,395,237,729),10077=>array(85,395,479,729),10078=>array(59,395,453,729),10081=>array(155,-93,772,851),10082=>array(202,-17,636,742),10083=>array(163,-17,675,742),10084=>array(54,83,784,645),10085=>array(168,-1,729,729),10086=>array(62,21,724,702),10087=>array(78,169,759,564),10088=>array(196,-139,648,769),10089=>array(196,-139,648,769),10090=>array(264,-132,574,758),10091=>array(264,-132,574,758),10092=>array(215,-240,607,760),10093=>array(232,-240,623,760),10094=>array(142,-240,685,760),10095=>array(153,-240,696,760),10096=>array(167,-240,656,760),10097=>array(183,-240,672,760),10098=>array(346,-241,535,760),10099=>array(303,-241,492,760),10100=>array(175,-163,634,760),10101=>array(204,-163,663,760),10102=>array(74,-10,822,738),10103=>array(74,-10,822,738),10104=>array(74,-10,822,738),10105=>array(74,-10,822,738),10106=>array(74,-10,822,738),10107=>array(74,-10,822,738),10108=>array(74,-10,822,738),10109=>array(74,-10,822,738),10110=>array(74,-10,822,738),10111=>array(74,-10,822,738),10112=>array(4,-52,833,780),10113=>array(4,-52,833,780),10114=>array(4,-52,833,780),10115=>array(4,-52,833,780),10116=>array(4,-52,833,780),10117=>array(4,-52,833,780),10118=>array(4,-52,833,780),10119=>array(4,-52,833,780),10120=>array(4,-52,833,780),10121=>array(4,-52,833,780),10122=>array(4,-52,833,780),10123=>array(4,-52,833,780),10124=>array(4,-52,833,780),10125=>array(4,-52,833,780),10126=>array(4,-52,833,780),10127=>array(4,-52,833,780),10128=>array(4,-52,833,780),10129=>array(4,-52,833,780),10130=>array(4,-52,833,780),10131=>array(4,-52,833,780),10132=>array(57,75,789,552),10136=>array(123,55,682,614),10137=>array(57,100,789,527),10138=>array(123,13,682,572),10139=>array(57,129,789,498),10140=>array(57,57,764,570),10141=>array(57,100,789,527),10142=>array(57,100,789,527),10143=>array(57,100,789,527),10144=>array(57,100,789,527),10145=>array(57,65,811,562),10146=>array(111,94,789,533),10147=>array(111,94,789,533),10148=>array(111,-4,789,631),10149=>array(57,100,789,548),10150=>array(57,79,789,527),10151=>array(240,-7,606,634),10152=>array(57,100,789,527),10153=>array(57,75,765,552),10154=>array(57,75,765,552),10155=>array(21,12,794,586),10156=>array(21,12,794,586),10157=>array(135,0,774,574),10158=>array(135,0,774,574),10159=>array(62,49,799,574),10161=>array(62,49,799,574),10162=>array(154,-20,721,585),10163=>array(63,157,789,470),10164=>array(81,55,682,655),10165=>array(57,173,789,454),10166=>array(82,-29,682,572),10167=>array(82,55,682,655),10168=>array(57,172,789,455),10169=>array(82,-28,682,572),10170=>array(56,84,789,543),10171=>array(73,140,779,487),10172=>array(79,167,774,460),10173=>array(79,118,774,509),10174=>array(57,81,789,546),10181=>array(54,-163,352,769),10182=>array(39,-163,336,769),10208=>array(3,-233,491,807),10214=>array(86,-132,398,760),10215=>array(85,-132,398,760),10216=>array(89,-132,310,759),10217=>array(80,-132,301,759),10218=>array(89,-132,476,759),10219=>array(80,-132,467,759),10224=>array(44,0,794,732),10225=>array(43,-3,793,729),10226=>array(39,53,814,658),10227=>array(39,61,814,666),10228=>array(57,-14,1108,643),10229=>array(49,100,1376,527),10230=>array(57,100,1385,527),10231=>array(49,100,1385,527),10232=>array(49,100,1376,527),10233=>array(57,100,1385,527),10234=>array(49,100,1385,527),10235=>array(49,100,1376,527),10236=>array(57,100,1385,527),10237=>array(49,100,1376,527),10238=>array(57,100,1385,527),10239=>array(57,100,1385,527),10240=>array(146,635,293,781),10241=>array(146,635,293,781),10242=>array(146,358,293,504),10243=>array(146,358,293,781),10244=>array(146,82,293,228),10245=>array(146,82,293,781),10246=>array(146,82,293,504),10247=>array(146,82,293,781),10248=>array(439,635,586,781),10249=>array(146,635,586,781),10250=>array(146,358,586,781),10251=>array(146,358,586,781),10252=>array(146,82,586,781),10253=>array(146,82,586,781),10254=>array(146,82,586,781),10255=>array(146,82,586,781),10256=>array(439,358,586,504),10257=>array(146,358,586,781),10258=>array(146,358,586,504),10259=>array(146,358,586,781),10260=>array(146,82,586,504),10261=>array(146,82,586,781),10262=>array(146,82,586,504),10263=>array(146,82,586,781),10264=>array(439,358,586,781),10265=>array(146,358,586,781),10266=>array(146,358,586,781),10267=>array(146,358,586,781),10268=>array(146,82,586,781),10269=>array(146,82,586,781),10270=>array(146,82,586,781),10271=>array(146,82,586,781),10272=>array(439,82,586,228),10273=>array(146,82,586,781),10274=>array(146,82,586,504),10275=>array(146,82,586,781),10276=>array(146,82,586,228),10277=>array(146,82,586,781),10278=>array(146,82,586,504),10279=>array(146,82,586,781),10280=>array(439,82,586,781),10281=>array(146,82,586,781),10282=>array(146,82,586,781),10283=>array(146,82,586,781),10284=>array(146,82,586,781),10285=>array(146,82,586,781),10286=>array(146,82,586,781),10287=>array(146,82,586,781),10288=>array(439,82,586,504),10289=>array(146,82,586,781),10290=>array(146,82,586,504),10291=>array(146,82,586,781),10292=>array(146,82,586,504),10293=>array(146,82,586,781),10294=>array(146,82,586,504),10295=>array(146,82,586,781),10296=>array(439,82,586,781),10297=>array(146,82,586,781),10298=>array(146,82,586,781),10299=>array(146,82,586,781),10300=>array(146,82,586,781),10301=>array(146,82,586,781),10302=>array(146,82,586,781),10303=>array(146,82,586,781),10304=>array(146,-195,293,-49),10305=>array(146,-195,293,781),10306=>array(146,-195,293,504),10307=>array(146,-195,293,781),10308=>array(146,-195,293,228),10309=>array(146,-195,293,781),10310=>array(146,-195,293,504),10311=>array(146,-195,293,781),10312=>array(146,-195,586,781),10313=>array(146,-195,586,781),10314=>array(146,-195,586,781),10315=>array(146,-195,586,781),10316=>array(146,-195,586,781),10317=>array(146,-195,586,781),10318=>array(146,-195,586,781),10319=>array(146,-195,586,781),10320=>array(146,-195,586,504),10321=>array(146,-195,586,781),10322=>array(146,-195,586,504),10323=>array(146,-195,586,781),10324=>array(146,-195,586,504),10325=>array(146,-195,586,781),10326=>array(146,-195,586,504),10327=>array(146,-195,586,781),10328=>array(146,-195,586,781),10329=>array(146,-195,586,781),10330=>array(146,-195,586,781),10331=>array(146,-195,586,781),10332=>array(146,-195,586,781),10333=>array(146,-195,586,781),10334=>array(146,-195,586,781),10335=>array(146,-195,586,781),10336=>array(146,-195,586,228),10337=>array(146,-195,586,781),10338=>array(146,-195,586,504),10339=>array(146,-195,586,781),10340=>array(146,-195,586,228),10341=>array(146,-195,586,781),10342=>array(146,-195,586,504),10343=>array(146,-195,586,781),10344=>array(146,-195,586,781),10345=>array(146,-195,586,781),10346=>array(146,-195,586,781),10347=>array(146,-195,586,781),10348=>array(146,-195,586,781),10349=>array(146,-195,586,781),10350=>array(146,-195,586,781),10351=>array(146,-195,586,781),10352=>array(146,-195,586,504),10353=>array(146,-195,586,781),10354=>array(146,-195,586,504),10355=>array(146,-195,586,781),10356=>array(146,-195,586,504),10357=>array(146,-195,586,781),10358=>array(146,-195,586,504),10359=>array(146,-195,586,781),10360=>array(146,-195,586,781),10361=>array(146,-195,586,781),10362=>array(146,-195,586,781),10363=>array(146,-195,586,781),10364=>array(146,-195,586,781),10365=>array(146,-195,586,781),10366=>array(146,-195,586,781),10367=>array(146,-195,586,781),10368=>array(439,-195,586,-49),10369=>array(146,-195,586,781),10370=>array(146,-195,586,504),10371=>array(146,-195,586,781),10372=>array(146,-195,586,228),10373=>array(146,-195,586,781),10374=>array(146,-195,586,504),10375=>array(146,-195,586,781),10376=>array(439,-195,586,781),10377=>array(146,-195,586,781),10378=>array(146,-195,586,781),10379=>array(146,-195,586,781),10380=>array(146,-195,586,781),10381=>array(146,-195,586,781),10382=>array(146,-195,586,781),10383=>array(146,-195,586,781),10384=>array(439,-195,586,504),10385=>array(146,-195,586,781),10386=>array(146,-195,586,504),10387=>array(146,-195,586,781),10388=>array(146,-195,586,504),10389=>array(146,-195,586,781),10390=>array(146,-195,586,504),10391=>array(146,-195,586,781),10392=>array(439,-195,586,781),10393=>array(146,-195,586,781),10394=>array(146,-195,586,781),10395=>array(146,-195,586,781),10396=>array(146,-195,586,781),10397=>array(146,-195,586,781),10398=>array(146,-195,586,781),10399=>array(146,-195,586,781),10400=>array(439,-195,586,228),10401=>array(146,-195,586,781),10402=>array(146,-195,586,504),10403=>array(146,-195,586,781),10404=>array(146,-195,586,228),10405=>array(146,-195,586,781),10406=>array(146,-195,586,504),10407=>array(146,-195,586,781),10408=>array(439,-195,586,781),10409=>array(146,-195,586,781),10410=>array(146,-195,586,781),10411=>array(146,-195,586,781),10412=>array(146,-195,586,781),10413=>array(146,-195,586,781),10414=>array(146,-195,586,781),10415=>array(146,-195,586,781),10416=>array(439,-195,586,504),10417=>array(146,-195,586,781),10418=>array(146,-195,586,504),10419=>array(146,-195,586,781),10420=>array(146,-195,586,504),10421=>array(146,-195,586,781),10422=>array(146,-195,586,504),10423=>array(146,-195,586,781),10424=>array(439,-195,586,781),10425=>array(146,-195,586,781),10426=>array(146,-195,586,781),10427=>array(146,-195,586,781),10428=>array(146,-195,586,781),10429=>array(146,-195,586,781),10430=>array(146,-195,586,781),10431=>array(146,-195,586,781),10432=>array(146,-195,586,-49),10433=>array(146,-195,586,781),10434=>array(146,-195,586,504),10435=>array(146,-195,586,781),10436=>array(146,-195,586,228),10437=>array(146,-195,586,781),10438=>array(146,-195,586,504),10439=>array(146,-195,586,781),10440=>array(146,-195,586,781),10441=>array(146,-195,586,781),10442=>array(146,-195,586,781),10443=>array(146,-195,586,781),10444=>array(146,-195,586,781),10445=>array(146,-195,586,781),10446=>array(146,-195,586,781),10447=>array(146,-195,586,781),10448=>array(146,-195,586,504),10449=>array(146,-195,586,781),10450=>array(146,-195,586,504),10451=>array(146,-195,586,781),10452=>array(146,-195,586,504),10453=>array(146,-195,586,781),10454=>array(146,-195,586,504),10455=>array(146,-195,586,781),10456=>array(146,-195,586,781),10457=>array(146,-195,586,781),10458=>array(146,-195,586,781),10459=>array(146,-195,586,781),10460=>array(146,-195,586,781),10461=>array(146,-195,586,781),10462=>array(146,-195,586,781),10463=>array(146,-195,586,781),10464=>array(146,-195,586,228),10465=>array(146,-195,586,781),10466=>array(146,-195,586,504),10467=>array(146,-195,586,781),10468=>array(146,-195,586,228),10469=>array(146,-195,586,781),10470=>array(146,-195,586,504),10471=>array(146,-195,586,781),10472=>array(146,-195,586,781),10473=>array(146,-195,586,781),10474=>array(146,-195,586,781),10475=>array(146,-195,586,781),10476=>array(146,-195,586,781),10477=>array(146,-195,586,781),10478=>array(146,-195,586,781),10479=>array(146,-195,586,781),10480=>array(146,-195,586,504),10481=>array(146,-195,586,781),10482=>array(146,-195,586,504),10483=>array(146,-195,586,781),10484=>array(146,-195,586,504),10485=>array(146,-195,586,781),10486=>array(146,-195,586,504),10487=>array(146,-195,586,781),10488=>array(146,-195,586,781),10489=>array(146,-195,586,781),10490=>array(146,-195,586,781),10491=>array(146,-195,586,781),10492=>array(146,-195,586,781),10493=>array(146,-195,586,781),10494=>array(146,-195,586,781),10495=>array(146,-195,586,781),10502=>array(49,100,781,527),10503=>array(57,100,789,527),10506=>array(125,0,713,732),10507=>array(125,-3,713,729),10560=>array(39,63,644,838),10561=>array(39,63,644,838),10627=>array(125,-163,609,760),10628=>array(125,-163,609,760),10702=>array(106,-226,732,747),10703=>array(106,15,894,612),10704=>array(106,15,894,612),10705=>array(106,-30,894,657),10706=>array(106,-30,894,657),10707=>array(106,-30,894,657),10708=>array(106,-30,894,657),10709=>array(106,-30,894,657),10731=>array(3,-233,491,807),10746=>array(106,0,732,627),10747=>array(106,0,732,627),10752=>array(28,-198,972,748),10753=>array(28,-198,972,748),10754=>array(28,-198,972,748),10764=>array(57,-212,1268,757),10765=>array(57,-212,464,757),10766=>array(57,-212,464,757),10767=>array(57,-212,464,757),10768=>array(57,-212,464,757),10769=>array(57,-212,522,757),10770=>array(57,-212,464,757),10771=>array(57,-212,464,757),10772=>array(57,-212,555,757),10773=>array(57,-212,464,757),10774=>array(57,-212,464,757),10775=>array(-32,-212,553,757),10776=>array(57,-212,464,757),10777=>array(57,-212,464,757),10778=>array(57,-212,464,757),10779=>array(57,-212,469,872),10780=>array(52,-327,464,757),10799=>array(137,31,701,596),10858=>array(106,228,732,552),10859=>array(106,78,732,552),10877=>array(106,-123,732,581),10878=>array(106,-123,732,581),10879=>array(106,-123,733,581),10880=>array(106,-123,732,581),10881=>array(106,-123,732,644),10882=>array(106,-123,732,644),10883=>array(106,-123,733,759),10884=>array(106,-123,732,756),10885=>array(106,-132,732,663),10886=>array(106,-132,732,663),10887=>array(106,-121,732,582),10888=>array(106,-121,732,582),10889=>array(106,-204,732,663),10890=>array(106,-204,732,663),10891=>array(106,-311,732,791),10892=>array(106,-311,732,791),10893=>array(106,-124,732,663),10894=>array(106,-124,732,663),10895=>array(106,-241,732,756),10896=>array(106,-241,732,756),10897=>array(106,-229,732,730),10898=>array(106,-229,732,730),10899=>array(106,-224,732,741),10900=>array(106,-224,732,741),10901=>array(106,-61,732,644),10902=>array(106,-61,732,644),10903=>array(106,-61,733,644),10904=>array(106,-61,732,644),10905=>array(106,-36,732,685),10906=>array(106,-36,732,685),10907=>array(106,-31,732,725),10908=>array(106,-31,732,725),10909=>array(106,8,732,645),10910=>array(106,23,732,645),10911=>array(106,-176,732,729),10912=>array(106,-176,732,729),10926=>array(106,50,732,601),10927=>array(106,-24,732,667),10928=>array(106,-24,732,667),10929=>array(106,-145,732,667),10930=>array(106,-145,732,667),10931=>array(106,-121,732,662),10932=>array(106,-121,732,662),10933=>array(106,-195,732,662),10934=>array(106,-195,732,662),10935=>array(106,-191,732,693),10936=>array(106,-191,732,693),10937=>array(106,-259,732,693),10938=>array(106,-259,732,693),11001=>array(106,-171,732,585),11002=>array(106,-171,732,585),11008=>array(88,-27,703,587),11009=>array(141,-27,755,587),11010=>array(88,25,703,640),11011=>array(141,25,755,640),11012=>array(27,65,789,562),11013=>array(27,65,781,562),11014=>array(171,0,667,754),11015=>array(171,-25,667,729),11016=>array(88,-27,703,587),11017=>array(141,-27,755,587),11018=>array(88,25,703,640),11019=>array(141,25,755,640),11020=>array(27,65,789,562),11021=>array(171,-25,667,754),11022=>array(57,-3,790,355),11023=>array(57,272,790,630),11024=>array(35,-3,768,355),11025=>array(35,272,768,630),11026=>array(91,-123,854,643),11027=>array(91,-123,854,643),11028=>array(91,-123,854,643),11029=>array(91,-123,854,643),11030=>array(3,-123,766,643),11031=>array(3,-123,766,643),11032=>array(3,-123,766,643),11033=>array(3,-123,766,643),11034=>array(91,-123,854,643),11039=>array(18,-26,852,767),11040=>array(18,-26,852,767),11041=>array(73,-91,800,748),11042=>array(73,-91,800,748),11043=>array(17,-35,856,692),11044=>array(55,-250,1064,770),11091=>array(38,-47,832,788),11092=>array(38,-47,832,788),11360=>array(5,0,552,729),11361=>array(5,0,271,760),11362=>array(-20,0,552,729),11363=>array(5,0,569,729),11364=>array(98,-200,666,729),11365=>array(35,-46,576,592),11366=>array(-12,-93,384,822),11367=>array(98,-157,752,729),11368=>array(91,-138,639,760),11369=>array(98,-157,677,729),11370=>array(91,-138,576,760),11371=>array(45,-157,738,729),11372=>array(43,-138,572,547),11373=>array(56,-14,683,743),11374=>array(98,-200,765,729),11375=>array(8,0,676,729),11376=>array(56,-14,683,743),11377=>array(30,0,734,560),11378=>array(33,0,1128,742),11379=>array(42,0,961,560),11380=>array(51,0,562,587),11381=>array(98,0,555,729),11382=>array(94,0,477,547),11383=>array(55,-12,602,551),11385=>array(0,-13,320,760),11386=>array(55,-14,557,560),11387=>array(48,0,400,547),11388=>array(-11,-117,116,425),11389=>array(5,326,426,734),11390=>array(66,-242,598,742),11391=>array(45,-242,640,729),11520=>array(60,-63,544,547),11521=>array(24,-235,556,546),11522=>array(39,-235,535,546),11523=>array(62,-10,572,807),11524=>array(51,-235,537,546),11525=>array(39,-236,862,546),11526=>array(0,-8,575,816),11527=>array(53,0,900,546),11528=>array(69,0,542,546),11529=>array(51,-235,556,816),11530=>array(39,0,903,546),11531=>array(53,-8,595,816),11532=>array(39,0,544,816),11533=>array(51,0,887,546),11534=>array(51,0,556,546),11535=>array(69,-235,767,816),11536=>array(51,0,880,816),11537=>array(51,0,545,816),11538=>array(50,-235,536,546),11539=>array(51,-235,884,661),11540=>array(60,-235,892,546),11541=>array(49,-235,784,816),11542=>array(39,0,545,546),11543=>array(51,-235,556,547),11544=>array(51,-235,551,546),11545=>array(39,-235,541,816),11546=>array(42,-235,532,547),11547=>array(60,-9,596,816),11548=>array(39,-235,870,547),11549=>array(29,-235,545,546),11550=>array(47,-235,547,546),11551=>array(34,-235,547,567),11552=>array(39,0,875,546),11553=>array(49,-235,544,816),11554=>array(60,0,538,626),11555=>array(61,-235,553,816),11556=>array(51,-235,603,546),11557=>array(60,-8,841,816),11568=>array(55,-14,591,380),11569=>array(56,-14,832,742),11570=>array(56,-14,832,742),11571=>array(31,0,651,729),11572=>array(33,0,652,729),11573=>array(31,0,604,729),11574=>array(73,0,488,729),11575=>array(8,0,676,729),11576=>array(8,0,676,729),11577=>array(98,0,568,729),11578=>array(64,0,534,729),11579=>array(73,-14,609,742),11580=>array(107,0,811,729),11581=>array(45,0,665,729),11582=>array(73,0,437,729),11583=>array(45,0,665,729),11584=>array(56,-14,832,742),11585=>array(56,-52,832,781),11586=>array(73,0,197,729),11587=>array(20,0,610,729),11588=>array(98,0,654,729),11589=>array(30,0,654,729),11590=>array(73,0,454,729),11591=>array(45,0,629,729),11592=>array(73,301,571,426),11593=>array(98,0,568,729),11594=>array(54,0,448,729),11595=>array(54,-15,899,742),11596=>array(54,0,725,729),11597=>array(98,0,650,729),11598=>array(100,0,566,729),11599=>array(98,0,197,729),11600=>array(54,0,725,729),11601=>array(98,0,198,729),11602=>array(78,-14,705,729),11603=>array(48,-14,584,742),11604=>array(56,-14,832,742),11605=>array(56,-54,832,742),11606=>array(98,0,654,729),11607=>array(98,0,222,729),11608=>array(73,0,676,729),11609=>array(56,-14,832,742),11610=>array(56,-14,832,780),11611=>array(56,-14,681,742),11612=>array(49,0,719,729),11613=>array(30,0,654,729),11614=>array(56,-14,681,742),11615=>array(98,0,568,729),11616=>array(8,0,676,729),11617=>array(98,0,654,729),11618=>array(98,0,559,729),11619=>array(56,0,732,729),11620=>array(98,0,495,729),11621=>array(56,0,732,729),11631=>array(26,522,489,729),11800=>array(70,-14,459,728),11806=>array(106,78,732,399),11810=>array(86,403,293,760),11811=>array(97,403,304,760),11812=>array(86,-132,293,225),11813=>array(97,-132,304,225),11822=>array(72,0,461,742),19904=>array(83,-158,813,729),19905=>array(83,-158,813,729),19906=>array(83,-158,813,729),19907=>array(83,-158,813,729),19908=>array(83,-158,813,729),19909=>array(83,-158,813,729),19910=>array(83,-158,813,729),19911=>array(83,-158,813,729),19912=>array(83,-158,813,729),19913=>array(83,-158,814,729),19914=>array(83,-158,813,729),19915=>array(83,-158,813,729),19916=>array(83,-158,813,729),19917=>array(83,-158,813,729),19918=>array(83,-158,813,729),19919=>array(83,-158,813,729),19920=>array(83,-158,814,729),19921=>array(83,-158,813,729),19922=>array(83,-158,814,729),19923=>array(83,-158,813,729),19924=>array(83,-158,813,729),19925=>array(83,-158,813,729),19926=>array(83,-158,813,729),19927=>array(83,-158,813,729),19928=>array(83,-158,813,729),19929=>array(83,-158,813,729),19930=>array(83,-158,813,729),19931=>array(83,-158,814,729),19932=>array(83,-158,813,729),19933=>array(83,-158,813,729),19934=>array(83,-158,814,729),19935=>array(83,-158,813,729),19936=>array(83,-158,813,729),19937=>array(83,-158,813,729),19938=>array(83,-158,813,729),19939=>array(83,-158,813,729),19940=>array(83,-158,813,729),19941=>array(83,-158,814,729),19942=>array(83,-158,813,729),19943=>array(83,-158,813,729),19944=>array(83,-158,814,729),19945=>array(83,-158,813,729),19946=>array(83,-158,814,729),19947=>array(83,-158,813,729),19948=>array(83,-158,814,729),19949=>array(83,-158,813,729),19950=>array(83,-158,814,729),19951=>array(83,-158,813,729),19952=>array(83,-158,814,729),19953=>array(83,-158,813,729),19954=>array(83,-158,813,729),19955=>array(83,-158,813,729),19956=>array(83,-158,813,729),19957=>array(83,-158,814,729),19958=>array(83,-158,813,729),19959=>array(83,-158,813,729),19960=>array(83,-158,813,729),19961=>array(83,-158,814,729),19962=>array(83,-158,813,729),19963=>array(83,-158,814,729),19964=>array(83,-158,814,729),19965=>array(83,-158,813,729),19966=>array(83,-158,813,729),19967=>array(83,-158,813,729),42192=>array(98,0,615,729),42193=>array(98,0,569,729),42194=>array(34,0,505,729),42195=>array(98,0,711,729),42196=>array(-3,0,614,729),42197=>array(-3,0,614,729),42198=>array(56,-14,693,742),42199=>array(98,0,677,729),42200=>array(-21,0,558,729),42201=>array(0,-14,414,729),42202=>array(56,-14,644,742),42203=>array(56,-14,644,742),42204=>array(45,0,640,729),42205=>array(98,0,517,729),42206=>array(98,0,517,729),42207=>array(98,0,765,729),42208=>array(98,0,650,729),42209=>array(98,0,552,729),42210=>array(66,-14,579,742),42211=>array(98,0,666,729),42212=>array(29,0,597,729),42213=>array(8,0,676,729),42214=>array(8,0,676,729),42215=>array(98,0,654,729),42216=>array(80,-14,716,742),42217=>array(98,0,512,743),42218=>array(33,0,956,729),42219=>array(30,0,654,729),42220=>array(-2,0,613,729),42221=>array(71,0,588,729),42222=>array(8,0,676,729),42223=>array(8,0,676,729),42224=>array(98,0,568,729),42225=>array(64,0,534,729),42226=>array(98,0,197,729),42227=>array(56,-14,731,742),42228=>array(87,-14,645,729),42229=>array(87,0,645,743),42230=>array(4,0,458,729),42231=>array(56,0,669,729),42232=>array(85,0,214,155),42233=>array(71,-156,214,155),42234=>array(85,0,511,155),42235=>array(85,-156,511,155),42236=>array(71,-156,214,517),42237=>array(85,0,214,517),42238=>array(85,0,502,354),42239=>array(85,172,502,454),42564=>array(56,-14,569,742),42565=>array(49,-14,467,560),42566=>array(98,0,347,729),42567=>array(81,0,304,547),42572=>array(58,-14,1122,645),42573=>array(74,-14,954,471),42576=>array(29,0,931,729),42577=>array(30,0,817,560),42580=>array(56,-14,977,742),42581=>array(55,-14,748,560),42582=>array(103,0,968,729),42583=>array(94,-14,752,560),42594=>array(49,-157,1004,729),42595=>array(52,-138,863,547),42596=>array(41,0,1008,729),42597=>array(37,0,852,547),42598=>array(98,0,1120,729),42599=>array(91,0,959,547),42600=>array(56,-14,731,742),42601=>array(55,-14,557,560),42602=>array(56,-14,799,742),42603=>array(55,-14,658,560),42604=>array(56,-14,1302,742),42605=>array(55,-14,964,560),42606=>array(28,-208,851,743),42634=>array(-3,-200,758,729),42635=>array(29,-208,660,547),42636=>array(-3,0,614,729),42637=>array(29,0,553,547),42644=>array(85,0,587,729),42645=>array(91,0,549,760),42760=>array(104,0,389,668),42761=>array(104,0,389,668),42762=>array(104,0,389,668),42763=>array(104,0,389,668),42764=>array(104,0,389,668),42765=>array(104,0,389,668),42766=>array(104,0,389,668),42767=>array(104,0,389,668),42768=>array(104,0,389,668),42769=>array(104,0,389,668),42770=>array(104,0,389,668),42771=>array(104,0,389,668),42772=>array(104,0,389,668),42773=>array(104,0,389,668),42774=>array(104,0,389,668),42779=>array(50,326,319,736),42780=>array(50,324,319,734),42781=>array(95,326,158,734),42782=>array(95,326,158,734),42783=>array(95,0,158,408),42786=>array(67,0,350,729),42787=>array(67,0,321,547),42788=>array(56,224,411,742),42789=>array(56,42,411,560),42790=>array(98,-200,654,729),42791=>array(91,-208,549,760),42792=>array(-3,-213,819,729),42793=>array(27,-213,650,702),42794=>array(80,-14,560,742),42795=>array(65,-200,473,561),42800=>array(91,0,437,547),42801=>array(54,-14,472,560),42802=>array(8,0,1241,729),42803=>array(60,-14,894,560),42804=>array(8,-14,1147,742),42805=>array(60,-14,935,560),42806=>array(8,-14,1055,729),42807=>array(60,-14,890,560),42808=>array(8,0,963,729),42809=>array(60,-14,788,560),42810=>array(8,0,963,729),42811=>array(60,-14,788,560),42812=>array(8,-208,951,729),42813=>array(60,-208,788,560),42814=>array(56,-14,644,742),42815=>array(62,-14,495,560),42816=>array(5,0,677,729),42817=>array(7,0,580,760),42822=>array(98,0,675,729),42823=>array(94,0,298,760),42824=>array(41,0,576,729),42825=>array(59,0,368,760),42826=>array(5,-14,802,742),42827=>array(5,-14,694,560),42830=>array(56,-14,1302,742),42831=>array(55,-14,964,560),42832=>array(5,0,569,729),42833=>array(-2,-208,580,560),42834=>array(24,0,700,729),42835=>array(24,-208,720,560),42838=>array(56,-178,731,742),42839=>array(55,-208,637,560),42852=>array(5,0,569,729),42853=>array(-2,-208,580,760),42854=>array(5,0,569,729),42855=>array(-2,-208,580,760),42880=>array(5,0,459,729),42881=>array(94,-208,184,560),42882=>array(98,-208,637,742),42883=>array(91,-208,549,560),42889=>array(117,0,220,517),42890=>array(78,161,298,380),42891=>array(151,235,250,729),42892=>array(96,458,179,729),42893=>array(85,0,587,729),42894=>array(38,-208,416,760),42896=>array(98,-157,733,729),42897=>array(91,-138,621,560),42912=>array(2,-14,778,742),42913=>array(2,-208,633,560),42914=>array(2,0,677,729),42915=>array(2,0,577,760),42916=>array(2,0,746,729),42917=>array(2,0,633,560),42918=>array(2,0,693,729),42919=>array(2,0,411,560),42920=>array(2,-14,633,742),42921=>array(2,-14,519,560),42922=>array(-51,0,703,729),43002=>array(91,0,824,547),43003=>array(58,0,477,729),43004=>array(34,0,505,729),43005=>array(98,0,765,729),43006=>array(98,0,197,928),43007=>array(33,0,1167,729),61184=>array(95,602,323,668),61185=>array(69,451,342,668),61186=>array(54,301,361,668),61187=>array(47,150,368,668),61188=>array(44,0,372,668),61189=>array(69,451,342,668),61190=>array(95,451,323,518),61191=>array(69,301,342,518),61192=>array(54,150,361,518),61193=>array(47,0,368,518),61194=>array(54,301,361,668),61195=>array(69,301,342,518),61196=>array(95,301,323,367),61197=>array(69,150,342,367),61198=>array(54,0,361,367),61199=>array(47,150,368,668),61200=>array(54,150,361,518),61201=>array(69,150,342,367),61202=>array(95,150,323,217),61203=>array(69,0,342,217),61204=>array(44,0,372,668),61205=>array(47,0,368,518),61206=>array(54,0,361,367),61207=>array(69,0,342,217),61208=>array(95,0,323,66),61209=>array(104,0,171,668),61440=>array(73,0,903,732),61441=>array(73,0,903,732),61442=>array(73,0,903,732),61443=>array(73,0,903,732),62464=>array(54,-15,526,828),62465=>array(54,-15,526,828),62466=>array(54,-15,570,837),62467=>array(54,0,835,837),62468=>array(54,-15,526,837),62469=>array(54,-15,526,837),62470=>array(54,-15,599,837),62471=>array(54,-15,828,837),62472=>array(54,0,501,837),62473=>array(54,-15,526,828),62474=>array(54,0,1115,837),62475=>array(54,-15,525,837),62476=>array(63,-15,536,828),62477=>array(54,0,815,837),62478=>array(54,-15,526,828),62479=>array(54,-15,526,844),62480=>array(54,0,860,837),62481=>array(63,-15,536,828),62482=>array(54,-15,677,837),62483=>array(24,-15,519,837),62484=>array(54,-15,818,837),62485=>array(54,-15,526,828),62486=>array(54,-15,841,837),62487=>array(54,-15,525,829),62488=>array(54,-15,525,837),62489=>array(64,0,536,837),62490=>array(55,-15,595,828),62491=>array(54,-15,525,828),62492=>array(64,-15,536,837),62493=>array(54,-15,545,828),62494=>array(63,-15,536,828),62495=>array(24,-15,492,837),62496=>array(54,-15,526,837),62497=>array(59,-15,530,837),62498=>array(54,-79,526,837),62499=>array(54,-15,525,838),62500=>array(54,-15,532,838),62501=>array(54,-15,594,837),62502=>array(54,-15,901,838),62504=>array(60,-235,872,816),62505=>array(49,-230,759,853),62506=>array(49,-15,459,765),62507=>array(49,-15,459,777),62508=>array(49,-15,459,875),62509=>array(49,-15,459,818),62510=>array(49,-15,459,887),62511=>array(49,-15,459,809),62512=>array(49,-236,449,765),62513=>array(49,-236,449,799),62514=>array(49,-236,449,901),62515=>array(49,-236,449,809),62516=>array(49,0,469,765),62517=>array(49,0,469,799),62518=>array(49,0,469,809),62519=>array(49,-0,737,765),62520=>array(49,-0,737,777),62521=>array(49,-0,737,895),62522=>array(49,-0,737,799),62523=>array(49,-0,737,809),62524=>array(29,-236,488,765),62525=>array(29,-236,488,777),62526=>array(29,-236,488,904),62527=>array(29,-236,488,799),62528=>array(29,-236,488,809),62529=>array(29,-236,488,852),63173=>array(55,-14,557,760),64256=>array(23,0,708,760),64257=>array(23,0,536,760),64258=>array(23,0,536,760),64259=>array(23,0,873,760),64260=>array(23,0,873,760),64261=>array(23,0,662,760),64262=>array(54,-14,837,742),64275=>array(83,-14,1111,760),64276=>array(85,-14,1111,760),64277=>array(85,-208,1111,760),64278=>array(85,-208,1111,760),64279=>array(85,-208,1451,760),64285=>array(66,44,157,547),64286=>array(167,625,473,765),64287=>array(36,44,329,547),64288=>array(38,0,562,547),64289=>array(85,0,772,547),64290=>array(43,0,717,547),64291=>array(91,0,764,547),64292=>array(43,0,716,547),64293=>array(43,0,716,760),64294=>array(91,0,764,547),64295=>array(43,0,716,547),64296=>array(47,-4,716,547),64297=>array(106,272,732,627),64298=>array(43,0,666,698),64299=>array(38,0,666,698),64300=>array(43,0,666,698),64301=>array(43,0,666,698),64302=>array(91,-159,578,547),64303=>array(91,-193,578,547),64304=>array(91,-159,578,547),64305=>array(43,0,535,547),64306=>array(43,-5,383,547),64307=>array(43,0,511,547),64308=>array(91,0,563,547),64309=>array(43,0,265,547),64310=>array(43,0,363,547),64312=>array(90,-14,593,552),64313=>array(43,204,264,547),64314=>array(43,-208,446,547),64315=>array(43,0,474,547),64316=>array(43,0,492,729),64318=>array(43,0,588,555),64320=>array(43,0,309,547),64321=>array(90,-14,593,547),64323=>array(91,-208,549,547),64324=>array(91,0,569,547),64326=>array(43,0,502,547),64327=>array(91,-208,633,546),64328=>array(43,0,474,547),64329=>array(43,0,666,547),64330=>array(10,-4,566,547),64331=>array(91,0,182,698),64332=>array(43,0,535,698),64333=>array(43,0,474,698),64334=>array(91,0,569,698),64335=>array(43,0,571,760),64338=>array(63,-244,865,327),64339=>array(63,-244,992,327),64340=>array(-10,-244,191,293),64341=>array(-10,-244,312,293),64342=>array(63,-244,865,327),64343=>array(63,-244,992,327),64344=>array(-10,-244,244,293),64345=>array(-10,-244,312,293),64346=>array(63,-244,865,327),64347=>array(63,-244,992,327),64348=>array(-10,-244,244,293),64349=>array(-10,-244,312,293),64350=>array(63,-10,865,513),64351=>array(63,-10,992,513),64352=>array(-10,0,191,610),64353=>array(-10,0,312,610),64354=>array(63,-10,865,513),64355=>array(63,-10,992,513),64356=>array(-10,0,244,610),64357=>array(-10,0,312,610),64358=>array(63,-10,865,575),64359=>array(63,-10,992,575),64360=>array(-10,0,273,672),64361=>array(-10,0,312,672),64362=>array(63,-45,952,757),64363=>array(63,-44,1045,659),64364=>array(-10,0,406,757),64365=>array(-10,0,516,684),64366=>array(63,-45,952,757),64367=>array(63,-44,1045,659),64368=>array(-10,0,406,757),64369=>array(-10,0,516,684),64370=>array(77,-244,645,425),64371=>array(77,-244,655,425),64372=>array(-10,-220,545,398),64373=>array(-10,-220,655,398),64374=>array(77,-244,645,425),64375=>array(77,-244,655,425),64376=>array(-10,-98,545,398),64377=>array(-10,-98,655,398),64378=>array(77,-244,645,425),64379=>array(77,-244,655,425),64380=>array(-10,-220,545,398),64381=>array(-10,-220,655,398),64382=>array(77,-244,645,425),64383=>array(77,-244,655,425),64384=>array(-10,-220,545,398),64385=>array(-10,-220,655,398),64386=>array(61,-146,388,415),64387=>array(61,-146,535,415),64388=>array(61,-19,388,586),64389=>array(61,-19,535,586),64390=>array(61,-19,388,708),64391=>array(61,-19,535,708),64392=>array(61,-19,388,746),64393=>array(61,-19,535,746),64394=>array(-42,-244,439,586),64395=>array(-42,-244,562,586),64396=>array(-42,-244,469,648),64397=>array(-42,-244,562,648),64398=>array(63,-43,895,760),64399=>array(63,-43,981,760),64400=>array(-10,0,476,760),64401=>array(-10,0,562,760),64402=>array(63,-43,895,896),64403=>array(63,-43,981,896),64404=>array(-10,0,476,896),64405=>array(-10,0,562,896),64406=>array(63,-293,895,896),64407=>array(63,-293,981,896),64408=>array(-10,-269,476,896),64409=>array(-10,-269,562,896),64410=>array(63,-43,895,903),64411=>array(63,-43,981,903),64412=>array(-10,0,476,903),64413=>array(-10,0,562,903),64414=>array(72,-162,660,366),64415=>array(72,-244,771,284),64416=>array(72,-162,660,636),64417=>array(72,-244,771,514),64418=>array(-10,0,273,672),64419=>array(-10,0,312,672),64426=>array(70,-33,638,487),64427=>array(70,-244,642,333),64428=>array(-10,-33,467,487),64429=>array(-10,-244,471,333),64467=>array(70,-27,722,854),64468=>array(70,-27,853,854),64469=>array(-10,0,476,928),64470=>array(-10,0,562,928),64473=>array(-42,-244,406,556),64474=>array(-42,-244,526,556),64488=>array(-10,0,191,293),64489=>array(-10,0,312,293),64508=>array(63,-131,719,411),64509=>array(63,-133,843,251),64510=>array(-10,-146,244,293),64511=>array(-10,-146,312,293),65024=>array(-445,752,0,929),65025=>array(-445,752,0,929),65026=>array(-445,752,0,929),65027=>array(-445,752,0,929),65028=>array(-445,752,0,929),65029=>array(-445,752,0,929),65030=>array(-445,752,0,929),65031=>array(-445,752,0,929),65032=>array(-445,752,0,929),65033=>array(-445,752,0,929),65034=>array(-445,752,0,929),65035=>array(-445,752,0,929),65036=>array(-445,752,0,929),65037=>array(-445,752,0,929),65038=>array(-445,752,0,929),65039=>array(-445,752,0,929),65056=>array(-445,752,0,929),65057=>array(0,752,445,929),65058=>array(-354,756,0,894),65059=>array(0,756,354,894),65136=>array(4,591,289,825),65137=>array(-10,0,303,825),65138=>array(4,591,289,874),65139=>array(51,0,271,177),65140=>array(4,-239,289,-5),65142=>array(4,591,289,708),65143=>array(-10,0,303,708),65144=>array(4,590,289,874),65145=>array(-10,0,303,874),65146=>array(4,-137,289,-20),65147=>array(-10,-137,303,90),65148=>array(-6,599,299,869),65149=>array(-10,0,303,869),65150=>array(12,610,279,878),65151=>array(-10,0,303,878),65152=>array(80,42,390,483),65153=>array(-37,0,315,939),65154=>array(-37,0,315,939),65155=>array(53,0,220,1028),65156=>array(53,0,314,1028),65157=>array(-42,-244,406,588),65158=>array(-42,-244,526,588),65159=>array(53,-244,220,760),65160=>array(53,-244,314,760),65161=>array(63,-131,719,588),65162=>array(63,-133,843,466),65163=>array(-10,0,227,613),65164=>array(-10,0,312,613),65165=>array(94,0,184,760),65166=>array(94,0,314,760),65167=>array(63,-171,865,327),65168=>array(63,-171,992,327),65169=>array(-10,-146,191,293),65170=>array(-10,-146,312,293),65171=>array(68,-28,453,513),65172=>array(71,0,546,513),65173=>array(63,-10,865,391),65174=>array(63,-10,992,391),65175=>array(-10,0,244,488),65176=>array(-10,0,312,488),65177=>array(63,-10,865,513),65178=>array(63,-10,992,513),65179=>array(-10,0,244,610),65180=>array(-10,0,312,610),65181=>array(77,-244,645,425),65182=>array(77,-244,655,425),65183=>array(-10,-146,545,398),65184=>array(-10,-146,655,398),65185=>array(77,-244,645,425),65186=>array(77,-244,655,425),65187=>array(-10,0,545,398),65188=>array(-10,0,655,398),65189=>array(77,-244,645,586),65190=>array(77,-244,655,586),65191=>array(-10,0,545,537),65192=>array(-10,0,655,537),65193=>array(61,-19,388,415),65194=>array(61,-19,535,415),65195=>array(61,-19,388,586),65196=>array(61,-19,535,586),65197=>array(-42,-244,423,269),65198=>array(-42,-244,562,269),65199=>array(-42,-244,423,464),65200=>array(-42,-244,562,464),65201=>array(63,-244,1138,366),65202=>array(63,-244,1285,366),65203=>array(-10,-14,755,366),65204=>array(-10,-14,902,366),65205=>array(63,-244,1138,586),65206=>array(63,-244,1285,586),65207=>array(-10,-14,755,586),65208=>array(-10,-14,902,586),65209=>array(63,-244,1134,362),65210=>array(63,-244,1235,362),65211=>array(-10,0,774,362),65212=>array(-10,0,877,362),65213=>array(63,-244,1134,464),65214=>array(63,-244,1235,464),65215=>array(-10,0,774,464),65216=>array(-10,0,877,464),65217=>array(70,0,857,760),65218=>array(70,0,959,760),65219=>array(-10,0,729,760),65220=>array(-10,0,830,760),65221=>array(70,0,857,760),65222=>array(70,0,959,760),65223=>array(-10,0,729,760),65224=>array(-10,0,830,760),65225=>array(57,-244,587,521),65226=>array(57,-244,587,382),65227=>array(-10,0,496,521),65228=>array(-10,0,492,382),65229=>array(57,-244,587,659),65230=>array(57,-244,587,537),65231=>array(-10,0,496,659),65232=>array(-10,0,492,537),65233=>array(63,-45,952,635),65234=>array(63,-44,1045,537),65235=>array(-10,0,406,635),65236=>array(-10,0,516,562),65237=>array(52,-215,701,635),65238=>array(52,-244,844,500),65239=>array(-10,0,406,635),65240=>array(-10,0,516,562),65241=>array(70,-27,722,760),65242=>array(70,-27,853,760),65243=>array(-10,0,476,760),65244=>array(-10,0,562,760),65245=>array(70,-152,637,760),65246=>array(70,-152,767,760),65247=>array(-10,0,210,760),65248=>array(-10,0,341,760),65249=>array(68,-240,546,369),65250=>array(68,-240,675,307),65251=>array(-10,-25,456,303),65252=>array(-10,-24,588,303),65253=>array(72,-162,660,464),65254=>array(72,-244,771,342),65255=>array(-10,0,191,488),65256=>array(-10,0,312,488),65257=>array(68,-28,453,358),65258=>array(71,0,546,366),65259=>array(-10,-33,467,487),65260=>array(-10,-244,471,333),65261=>array(-42,-244,406,315),65262=>array(-42,-244,526,315),65263=>array(63,-131,719,411),65264=>array(63,-133,843,251),65265=>array(63,-244,719,411),65266=>array(63,-244,843,251),65267=>array(-10,-146,244,293),65268=>array(-10,-146,312,293),65269=>array(-103,-10,468,866),65270=>array(-103,-10,606,866),65271=>array(-13,-10,468,955),65272=>array(-13,-10,606,955),65273=>array(11,-244,468,760),65274=>array(11,-244,606,760),65275=>array(41,-10,468,760),65276=>array(41,-10,606,760),65279=>array(15,-84,1011,912),65529=>array(15,-84,1011,912),65530=>array(15,-84,1011,912),65531=>array(15,-84,1011,912),65532=>array(15,-84,1011,912),65533=>array(15,-84,1011,912),65535=>array(50,-177,550,705));
|
15 |
-
$cw=array(0=>600,32=>318,33=>401,34=>460,35=>838,36=>636,37=>950,38=>780,39=>275,40=>390,41=>390,42=>500,43=>838,44=>318,45=>361,46=>318,47=>337,48=>636,49=>636,50=>636,51=>636,52=>636,53=>636,54=>636,55=>636,56=>636,57=>636,58=>337,59=>337,60=>838,61=>838,62=>838,63=>531,64=>1000,65=>684,66=>686,67=>698,68=>770,69=>632,70=>575,71=>775,72=>752,73=>295,74=>295,75=>656,76=>557,77=>863,78=>748,79=>787,80=>603,81=>787,82=>695,83=>635,84=>611,85=>732,86=>684,87=>989,88=>685,89=>611,90=>685,91=>390,92=>337,93=>390,94=>838,95=>500,96=>500,97=>613,98=>635,99=>550,100=>635,101=>615,102=>352,103=>635,104=>634,105=>278,106=>278,107=>579,108=>278,109=>974,110=>634,111=>612,112=>635,113=>635,114=>411,115=>521,116=>392,117=>634,118=>592,119=>818,120=>592,121=>592,122=>525,123=>636,124=>337,125=>636,126=>838,160=>318,161=>401,162=>636,163=>636,164=>636,165=>636,166=>337,167=>500,168=>500,169=>1000,170=>471,171=>612,172=>838,173=>361,174=>1000,175=>500,176=>500,177=>838,178=>401,179=>401,180=>500,181=>636,182=>636,183=>318,184=>500,185=>401,186=>471,187=>612,188=>969,189=>969,190=>969,191=>531,192=>684,193=>684,194=>684,195=>684,196=>684,197=>684,198=>974,199=>698,200=>632,201=>632,202=>632,203=>632,204=>295,205=>295,206=>295,207=>295,208=>775,209=>748,210=>787,211=>787,212=>787,213=>787,214=>787,215=>838,216=>787,217=>732,218=>732,219=>732,220=>732,221=>611,222=>605,223=>630,224=>613,225=>613,226=>613,227=>613,228=>613,229=>613,230=>982,231=>550,232=>615,233=>615,234=>615,235=>615,236=>278,237=>278,238=>278,239=>278,240=>612,241=>634,242=>612,243=>612,244=>612,245=>612,246=>612,247=>838,248=>612,249=>634,250=>634,251=>634,252=>634,253=>592,254=>635,255=>592,256=>684,257=>613,258=>684,259=>613,260=>684,261=>613,262=>698,263=>550,264=>698,265=>550,266=>698,267=>550,268=>698,269=>550,270=>770,271=>635,272=>775,273=>635,274=>632,275=>615,276=>632,277=>615,278=>632,279=>615,280=>632,281=>615,282=>632,283=>615,284=>775,285=>635,286=>775,287=>635,288=>775,289=>635,290=>775,291=>635,292=>752,293=>634,294=>916,295=>695,296=>295,297=>278,298=>295,299=>278,300=>295,301=>278,302=>295,303=>278,304=>295,305=>278,306=>590,307=>556,308=>295,309=>278,310=>656,311=>579,312=>579,313=>557,314=>278,315=>557,316=>278,317=>557,318=>375,319=>557,320=>342,321=>562,322=>284,323=>748,324=>634,325=>748,326=>634,327=>748,328=>634,329=>813,330=>748,331=>634,332=>787,333=>612,334=>787,335=>612,336=>787,337=>612,338=>1070,339=>1023,340=>695,341=>411,342=>695,343=>411,344=>695,345=>411,346=>635,347=>521,348=>635,349=>521,350=>635,351=>521,352=>635,353=>521,354=>611,355=>392,356=>611,357=>392,358=>611,359=>392,360=>732,361=>634,362=>732,363=>634,364=>732,365=>634,366=>732,367=>634,368=>732,369=>634,370=>732,371=>634,372=>989,373=>818,374=>611,375=>592,376=>611,377=>685,378=>525,379=>685,380=>525,381=>685,382=>525,383=>352,384=>635,385=>735,386=>686,387=>635,388=>686,389=>635,390=>703,391=>698,392=>550,393=>775,394=>819,395=>686,396=>635,397=>612,398=>632,399=>787,400=>614,401=>575,402=>352,403=>775,404=>687,405=>984,406=>354,407=>295,408=>746,409=>579,410=>278,411=>592,412=>974,413=>748,414=>634,415=>787,416=>913,417=>612,418=>949,419=>759,420=>652,421=>635,422=>695,423=>635,424=>521,425=>632,426=>336,427=>392,428=>611,429=>392,430=>611,431=>858,432=>634,433=>764,434=>721,435=>744,436=>730,437=>685,438=>525,439=>666,440=>666,441=>578,442=>525,443=>636,444=>666,445=>578,446=>510,447=>635,448=>295,449=>492,450=>459,451=>295,452=>1422,453=>1299,454=>1154,455=>835,456=>787,457=>457,458=>931,459=>924,460=>797,461=>684,462=>613,463=>295,464=>278,465=>787,466=>612,467=>732,468=>634,469=>732,470=>634,471=>732,472=>634,473=>732,474=>634,475=>732,476=>634,477=>615,478=>684,479=>613,480=>684,481=>613,482=>974,483=>982,484=>775,485=>635,486=>775,487=>635,488=>656,489=>579,490=>787,491=>612,492=>787,493=>612,494=>666,495=>578,496=>278,497=>1422,498=>1299,499=>1154,500=>775,501=>635,502=>1113,503=>682,504=>748,505=>634,506=>684,507=>613,508=>974,509=>982,510=>787,511=>612,512=>684,513=>613,514=>684,515=>613,516=>632,517=>615,518=>632,519=>615,520=>295,521=>278,522=>295,523=>278,524=>787,525=>612,526=>787,527=>612,528=>695,529=>411,530=>695,531=>411,532=>732,533=>634,534=>732,535=>634,536=>635,537=>521,538=>611,539=>392,540=>627,541=>521,542=>752,543=>634,544=>735,545=>838,546=>698,547=>610,548=>685,549=>525,550=>684,551=>613,552=>632,553=>615,554=>787,555=>612,556=>787,557=>612,558=>787,559=>612,560=>787,561=>612,562=>611,563=>592,564=>475,565=>843,566=>477,567=>278,568=>998,569=>998,570=>684,571=>698,572=>550,573=>557,574=>611,575=>521,576=>525,577=>603,578=>479,579=>686,580=>732,581=>684,582=>632,583=>615,584=>295,585=>278,586=>781,587=>635,588=>695,589=>411,590=>611,591=>592,592=>600,593=>635,594=>635,595=>635,596=>549,597=>550,598=>635,599=>696,600=>615,601=>615,602=>819,603=>541,604=>532,605=>775,606=>664,607=>278,608=>696,609=>635,610=>629,611=>596,612=>596,613=>634,614=>634,615=>634,616=>278,617=>338,618=>372,619=>396,620=>487,621=>278,622=>706,623=>974,624=>974,625=>974,626=>646,627=>642,628=>634,629=>612,630=>858,631=>728,632=>660,633=>414,634=>414,635=>414,636=>411,637=>411,638=>530,639=>530,640=>604,641=>604,642=>521,643=>336,644=>336,645=>461,646=>336,647=>392,648=>392,649=>634,650=>618,651=>598,652=>592,653=>818,654=>592,655=>611,656=>525,657=>525,658=>578,659=>578,660=>510,661=>510,662=>510,663=>510,664=>787,665=>580,666=>664,667=>708,668=>654,669=>292,670=>667,671=>507,672=>727,673=>510,674=>510,675=>1014,676=>1058,677=>1013,678=>830,679=>610,680=>778,681=>848,682=>706,683=>654,684=>515,685=>515,686=>661,687=>664,688=>404,689=>399,690=>175,691=>259,692=>295,693=>296,694=>379,695=>515,696=>373,697=>278,698=>460,699=>318,700=>318,701=>318,702=>307,703=>307,704=>370,705=>370,706=>500,707=>500,708=>500,709=>500,710=>500,711=>500,712=>275,713=>500,714=>500,715=>500,716=>275,717=>500,718=>500,719=>500,720=>337,721=>337,722=>307,723=>307,724=>500,725=>500,726=>390,727=>317,728=>500,729=>500,730=>500,731=>500,732=>500,733=>500,734=>315,735=>500,736=>426,737=>166,738=>373,739=>444,740=>370,741=>493,742=>493,743=>493,744=>493,745=>493,748=>500,749=>500,750=>518,755=>500,759=>500,768=>0,769=>0,770=>0,771=>0,772=>0,773=>0,774=>0,775=>0,776=>0,777=>0,778=>0,779=>0,780=>0,781=>0,782=>0,783=>0,784=>0,785=>0,786=>0,787=>0,788=>0,789=>0,790=>0,791=>0,792=>0,793=>0,794=>0,795=>0,796=>0,797=>0,798=>0,799=>0,800=>0,801=>0,802=>0,803=>0,804=>0,805=>0,806=>0,807=>0,808=>0,809=>0,810=>0,811=>0,812=>0,813=>0,814=>0,815=>0,816=>0,817=>0,818=>0,819=>0,820=>0,821=>0,822=>0,823=>0,824=>0,825=>0,826=>0,827=>0,828=>0,829=>0,830=>0,831=>0,832=>0,833=>0,834=>0,835=>0,836=>0,837=>0,838=>0,839=>0,840=>0,841=>0,842=>0,843=>0,844=>0,845=>0,846=>0,847=>0,849=>0,850=>0,851=>0,855=>0,856=>0,858=>0,860=>0,861=>0,862=>0,863=>0,864=>0,865=>0,866=>0,880=>654,881=>568,882=>862,883=>647,884=>278,885=>278,886=>748,887=>650,890=>500,891=>549,892=>550,893=>549,894=>337,900=>500,901=>500,902=>692,903=>318,904=>746,905=>871,906=>408,908=>813,910=>825,911=>826,912=>338,913=>684,914=>686,915=>557,916=>684,917=>632,918=>685,919=>752,920=>787,921=>295,922=>656,923=>684,924=>863,925=>748,926=>632,927=>787,928=>752,929=>603,931=>632,932=>611,933=>611,934=>787,935=>685,936=>787,937=>764,938=>295,939=>611,940=>659,941=>541,942=>634,943=>338,944=>579,945=>659,946=>638,947=>592,948=>612,949=>541,950=>544,951=>634,952=>612,953=>338,954=>589,955=>592,956=>636,957=>559,958=>558,959=>612,960=>602,961=>635,962=>587,963=>634,964=>602,965=>579,966=>660,967=>578,968=>660,969=>837,970=>338,971=>579,972=>612,973=>579,974=>837,975=>656,976=>614,977=>619,978=>699,979=>842,980=>699,981=>660,982=>837,983=>664,984=>787,985=>612,986=>648,987=>587,988=>575,989=>458,990=>660,991=>660,992=>865,993=>627,994=>934,995=>837,996=>758,997=>659,998=>792,999=>615,1000=>687,1001=>607,1002=>768,1003=>625,1004=>699,1005=>612,1006=>611,1007=>536,1008=>664,1009=>635,1010=>550,1011=>278,1012=>787,1013=>615,1014=>615,1015=>605,1016=>635,1017=>698,1018=>863,1019=>651,1020=>635,1021=>703,1022=>698,1023=>703,1024=>632,1025=>632,1026=>786,1027=>610,1028=>698,1029=>635,1030=>295,1031=>295,1032=>295,1033=>1094,1034=>1045,1035=>786,1036=>710,1037=>748,1038=>609,1039=>752,1040=>684,1041=>686,1042=>686,1043=>610,1044=>781,1045=>632,1046=>1077,1047=>641,1048=>748,1049=>748,1050=>710,1051=>752,1052=>863,1053=>752,1054=>787,1055=>752,1056=>603,1057=>698,1058=>611,1059=>609,1060=>861,1061=>685,1062=>776,1063=>686,1064=>1069,1065=>1094,1066=>833,1067=>882,1068=>686,1069=>698,1070=>1080,1071=>695,1072=>613,1073=>617,1074=>589,1075=>525,1076=>691,1077=>615,1078=>901,1079=>532,1080=>650,1081=>650,1082=>604,1083=>639,1084=>754,1085=>654,1086=>612,1087=>654,1088=>635,1089=>550,1090=>583,1091=>592,1092=>855,1093=>592,1094=>681,1095=>591,1096=>915,1097=>942,1098=>707,1099=>790,1100=>589,1101=>549,1102=>842,1103=>602,1104=>615,1105=>615,1106=>625,1107=>525,1108=>549,1109=>521,1110=>278,1111=>278,1112=>278,1113=>902,1114=>898,1115=>652,1116=>604,1117=>650,1118=>592,1119=>654,1120=>934,1121=>837,1122=>771,1123=>672,1124=>942,1125=>749,1126=>879,1127=>783,1128=>1160,1129=>1001,1130=>787,1131=>612,1132=>1027,1133=>824,1134=>636,1135=>541,1136=>856,1137=>876,1138=>787,1139=>612,1140=>781,1141=>665,1142=>781,1143=>665,1144=>992,1145=>904,1146=>953,1147=>758,1148=>1180,1149=>1028,1150=>934,1151=>837,1152=>698,1153=>550,1154=>502,1155=>0,1156=>0,1157=>0,1158=>0,1159=>0,1160=>418,1161=>418,1162=>772,1163=>677,1164=>686,1165=>589,1166=>603,1167=>635,1168=>610,1169=>525,1170=>675,1171=>590,1172=>624,1173=>530,1174=>1077,1175=>901,1176=>641,1177=>532,1178=>710,1179=>604,1180=>710,1181=>604,1182=>710,1183=>604,1184=>856,1185=>832,1186=>752,1187=>661,1188=>1014,1189=>877,1190=>1081,1191=>916,1192=>878,1193=>693,1194=>698,1195=>550,1196=>611,1197=>583,1198=>611,1199=>592,1200=>611,1201=>592,1202=>685,1203=>592,1204=>934,1205=>807,1206=>686,1207=>591,1208=>686,1209=>591,1210=>686,1211=>634,1212=>941,1213=>728,1214=>941,1215=>728,1216=>295,1217=>1077,1218=>901,1219=>656,1220=>604,1221=>776,1222=>670,1223=>752,1224=>661,1225=>776,1226=>681,1227=>686,1228=>591,1229=>888,1230=>774,1231=>278,1232=>684,1233=>613,1234=>684,1235=>613,1236=>974,1237=>982,1238=>632,1239=>615,1240=>787,1241=>615,1242=>787,1243=>615,1244=>1077,1245=>901,1246=>641,1247=>532,1248=>666,1249=>578,1250=>748,1251=>650,1252=>748,1253=>650,1254=>787,1255=>612,1256=>787,1257=>612,1258=>787,1259=>612,1260=>698,1261=>549,1262=>609,1263=>592,1264=>609,1265=>592,1266=>609,1267=>592,1268=>686,1269=>591,1270=>610,1271=>525,1272=>882,1273=>790,1274=>675,1275=>590,1276=>685,1277=>592,1278=>685,1279=>592,1280=>686,1281=>589,1282=>1006,1283=>897,1284=>975,1285=>869,1286=>679,1287=>588,1288=>1072,1289=>957,1290=>1113,1291=>967,1292=>775,1293=>660,1294=>773,1295=>711,1296=>614,1297=>541,1298=>752,1299=>639,1300=>1169,1301=>994,1302=>894,1303=>864,1304=>1032,1305=>986,1306=>787,1307=>635,1308=>989,1309=>818,1310=>710,1311=>604,1312=>1081,1313=>905,1314=>1081,1315=>912,1316=>793,1317=>683,1329=>766,1330=>732,1331=>753,1332=>753,1333=>732,1334=>772,1335=>640,1336=>732,1337=>859,1338=>753,1339=>691,1340=>533,1341=>922,1342=>863,1343=>732,1344=>716,1345=>766,1346=>753,1347=>767,1348=>792,1349=>728,1350=>729,1351=>757,1352=>732,1353=>713,1354=>800,1355=>768,1356=>792,1357=>732,1358=>753,1359=>705,1360=>694,1361=>744,1362=>538,1363=>811,1364=>757,1365=>787,1366=>790,1369=>307,1370=>318,1371=>234,1372=>361,1373=>238,1374=>405,1375=>500,1377=>974,1378=>634,1379=>658,1380=>663,1381=>634,1382=>635,1383=>515,1384=>634,1385=>738,1386=>658,1387=>634,1388=>271,1389=>980,1390=>623,1391=>634,1392=>634,1393=>608,1394=>634,1395=>629,1396=>634,1397=>271,1398=>634,1399=>499,1400=>634,1401=>404,1402=>974,1403=>560,1404=>648,1405=>634,1406=>634,1407=>974,1408=>634,1409=>633,1410=>435,1411=>974,1412=>636,1413=>609,1414=>805,1415=>812,1417=>337,1418=>361,1456=>0,1457=>0,1458=>0,1459=>0,1460=>0,1461=>0,1462=>0,1463=>0,1464=>0,1465=>0,1466=>0,1467=>0,1468=>0,1469=>0,1470=>361,1471=>0,1472=>295,1473=>0,1474=>0,1475=>295,1478=>441,1479=>0,1488=>668,1489=>578,1490=>412,1491=>546,1492=>653,1493=>272,1494=>346,1495=>653,1496=>648,1497=>224,1498=>537,1499=>529,1500=>568,1501=>664,1502=>679,1503=>272,1504=>400,1505=>649,1506=>626,1507=>640,1508=>625,1509=>540,1510=>593,1511=>709,1512=>564,1513=>708,1514=>657,1520=>471,1521=>423,1522=>331,1523=>416,1524=>645,1542=>637,1543=>637,1545=>757,1546=>977,1548=>323,1557=>0,1563=>318,1567=>531,1569=>470,1570=>278,1571=>278,1572=>483,1573=>278,1574=>783,1575=>278,1576=>941,1577=>524,1578=>941,1579=>941,1580=>646,1581=>646,1582=>646,1583=>445,1584=>445,1585=>483,1586=>483,1587=>1221,1588=>1221,1589=>1209,1590=>1209,1591=>925,1592=>925,1593=>597,1594=>597,1600=>293,1601=>1037,1602=>776,1603=>824,1604=>727,1605=>619,1606=>734,1607=>524,1608=>483,1609=>783,1610=>783,1611=>0,1612=>0,1613=>0,1614=>0,1615=>0,1616=>0,1617=>0,1618=>0,1619=>0,1620=>0,1621=>0,1623=>0,1626=>500,1632=>537,1633=>537,1634=>537,1635=>537,1636=>537,1637=>537,1638=>537,1639=>537,1640=>537,1641=>537,1642=>537,1643=>325,1644=>318,1645=>545,1646=>941,1647=>776,1648=>0,1652=>292,1657=>941,1658=>941,1659=>941,1660=>941,1661=>941,1662=>941,1663=>941,1664=>941,1665=>646,1666=>646,1667=>646,1668=>646,1669=>646,1670=>646,1671=>646,1672=>445,1673=>445,1674=>445,1675=>445,1676=>445,1677=>445,1678=>445,1679=>445,1680=>445,1681=>483,1682=>483,1683=>498,1684=>530,1685=>610,1686=>530,1687=>483,1688=>483,1689=>483,1690=>1221,1691=>1221,1692=>1221,1693=>1209,1694=>1209,1695=>925,1696=>597,1697=>1037,1698=>1037,1699=>1037,1700=>1037,1701=>1037,1702=>1037,1703=>776,1704=>776,1705=>895,1706=>1054,1707=>895,1708=>824,1709=>824,1710=>824,1711=>895,1712=>895,1713=>895,1714=>895,1715=>895,1716=>895,1717=>727,1718=>727,1719=>727,1720=>727,1721=>734,1722=>734,1723=>734,1724=>734,1725=>734,1726=>698,1727=>646,1734=>483,1740=>783,1742=>783,1749=>524,1776=>537,1777=>537,1778=>537,1779=>537,1780=>537,1781=>537,1782=>537,1783=>537,1784=>537,1785=>537,1984=>636,1985=>636,1986=>636,1987=>636,1988=>636,1989=>636,1990=>636,1991=>636,1992=>636,1993=>636,1994=>278,1995=>571,1996=>424,1997=>592,1998=>654,1999=>654,2000=>594,2001=>654,2002=>829,2003=>438,2004=>438,2005=>559,2006=>612,2007=>350,2008=>959,2009=>473,2010=>783,2011=>654,2012=>625,2013=>734,2014=>530,2015=>724,2016=>473,2017=>625,2018=>594,2019=>530,2020=>530,2021=>522,2022=>594,2023=>594,2027=>0,2028=>0,2029=>0,2030=>0,2031=>0,2032=>0,2033=>0,2034=>0,2035=>0,2036=>313,2037=>313,2040=>560,2041=>560,2042=>361,3647=>636,3713=>670,3714=>684,3716=>688,3719=>482,3720=>628,3722=>684,3725=>688,3732=>669,3733=>642,3734=>645,3735=>655,3737=>659,3738=>625,3739=>625,3740=>745,3741=>767,3742=>687,3743=>687,3745=>702,3746=>688,3747=>684,3749=>649,3751=>632,3754=>703,3755=>819,3757=>633,3758=>684,3759=>788,3760=>632,3761=>0,3762=>539,3763=>539,3764=>0,3765=>0,3766=>0,3767=>0,3768=>0,3769=>0,3771=>0,3772=>0,3773=>663,3776=>375,3777=>657,3778=>460,3779=>547,3780=>491,3782=>674,3784=>0,3785=>0,3786=>0,3787=>0,3788=>0,3789=>0,3792=>636,3793=>641,3794=>641,3795=>670,3796=>625,3797=>625,3798=>703,3799=>670,3800=>674,3801=>677,3804=>1028,3805=>1028,4256=>874,4257=>733,4258=>679,4259=>834,4260=>615,4261=>768,4262=>753,4263=>914,4264=>453,4265=>620,4266=>843,4267=>882,4268=>625,4269=>854,4270=>781,4271=>629,4272=>912,4273=>621,4274=>620,4275=>854,4276=>866,4277=>724,4278=>630,4279=>621,4280=>625,4281=>620,4282=>818,4283=>874,4284=>615,4285=>623,4286=>625,4287=>725,4288=>844,4289=>596,4290=>688,4291=>596,4292=>594,4293=>738,4304=>508,4305=>518,4306=>581,4307=>818,4308=>508,4309=>513,4310=>500,4311=>801,4312=>518,4313=>510,4314=>1064,4315=>522,4316=>522,4317=>786,4318=>508,4319=>518,4320=>796,4321=>522,4322=>654,4323=>522,4324=>825,4325=>513,4326=>786,4327=>518,4328=>518,4329=>522,4330=>571,4331=>522,4332=>518,4333=>520,4334=>522,4335=>454,4336=>508,4337=>518,4338=>508,4339=>508,4340=>518,4341=>554,4342=>828,4343=>552,4344=>508,4345=>571,4346=>508,4347=>448,4348=>324,5121=>684,5122=>684,5123=>684,5124=>684,5125=>769,5126=>769,5127=>769,5129=>769,5130=>769,5131=>769,5132=>835,5133=>834,5134=>835,5135=>834,5136=>835,5137=>834,5138=>967,5139=>1007,5140=>967,5141=>1007,5142=>769,5143=>967,5144=>1007,5145=>967,5146=>1007,5147=>769,5149=>256,5150=>543,5151=>423,5152=>423,5153=>389,5154=>389,5155=>393,5156=>389,5157=>466,5158=>385,5159=>256,5160=>389,5161=>389,5162=>389,5163=>1090,5164=>909,5165=>953,5166=>1117,5167=>684,5168=>684,5169=>684,5170=>684,5171=>729,5172=>729,5173=>729,5175=>729,5176=>729,5177=>729,5178=>835,5179=>684,5180=>835,5181=>834,5182=>835,5183=>834,5184=>967,5185=>1007,5186=>967,5187=>1007,5188=>967,5189=>1007,5190=>967,5191=>1007,5192=>729,5193=>508,5194=>192,5196=>732,5197=>732,5198=>732,5199=>732,5200=>730,5201=>730,5202=>730,5204=>730,5205=>730,5206=>730,5207=>921,5208=>889,5209=>921,5210=>889,5211=>921,5212=>889,5213=>928,5214=>900,5215=>928,5216=>900,5217=>947,5218=>900,5219=>947,5220=>900,5221=>947,5222=>434,5223=>877,5224=>877,5225=>866,5226=>890,5227=>628,5228=>628,5229=>628,5230=>628,5231=>628,5232=>628,5233=>628,5234=>628,5235=>628,5236=>860,5237=>771,5238=>815,5239=>816,5240=>815,5241=>816,5242=>860,5243=>771,5244=>860,5245=>771,5246=>815,5247=>816,5248=>815,5249=>816,5250=>815,5251=>407,5252=>407,5253=>750,5254=>775,5255=>750,5256=>775,5257=>628,5258=>628,5259=>628,5260=>628,5261=>628,5262=>628,5263=>628,5264=>628,5265=>628,5266=>860,5267=>771,5268=>815,5269=>816,5270=>815,5271=>816,5272=>860,5273=>771,5274=>860,5275=>771,5276=>815,5277=>816,5278=>815,5279=>816,5280=>815,5281=>435,5282=>435,5283=>610,5284=>557,5285=>557,5286=>557,5287=>610,5288=>610,5289=>610,5290=>557,5291=>557,5292=>749,5293=>769,5294=>746,5295=>764,5296=>746,5297=>764,5298=>749,5299=>769,5300=>749,5301=>769,5302=>746,5303=>764,5304=>746,5305=>764,5306=>746,5307=>386,5308=>508,5309=>386,5312=>852,5313=>852,5314=>852,5315=>852,5316=>852,5317=>852,5318=>852,5319=>852,5320=>852,5321=>1069,5322=>1035,5323=>1059,5324=>852,5325=>1059,5326=>852,5327=>852,5328=>600,5329=>453,5330=>600,5331=>852,5332=>852,5333=>852,5334=>852,5335=>852,5336=>852,5337=>852,5338=>852,5339=>852,5340=>1069,5341=>1035,5342=>1059,5343=>1030,5344=>1059,5345=>1030,5346=>1069,5347=>1035,5348=>1069,5349=>1035,5350=>1083,5351=>1030,5352=>1083,5353=>1030,5354=>600,5356=>729,5357=>603,5358=>603,5359=>603,5360=>603,5361=>603,5362=>603,5363=>603,5364=>603,5365=>603,5366=>834,5367=>754,5368=>792,5369=>771,5370=>792,5371=>771,5372=>834,5373=>754,5374=>834,5375=>754,5376=>792,5377=>771,5378=>792,5379=>771,5380=>792,5381=>418,5382=>420,5383=>418,5392=>712,5393=>712,5394=>712,5395=>892,5396=>892,5397=>892,5398=>892,5399=>910,5400=>872,5401=>910,5402=>872,5403=>910,5404=>872,5405=>1140,5406=>1100,5407=>1140,5408=>1100,5409=>1140,5410=>1100,5411=>1140,5412=>1100,5413=>641,5414=>627,5415=>627,5416=>627,5417=>627,5418=>627,5419=>627,5420=>627,5421=>627,5422=>627,5423=>844,5424=>781,5425=>816,5426=>818,5427=>816,5428=>818,5429=>844,5430=>781,5431=>844,5432=>781,5433=>816,5434=>818,5435=>816,5436=>818,5437=>816,5438=>418,5440=>389,5441=>484,5442=>916,5443=>916,5444=>916,5445=>916,5446=>916,5447=>916,5448=>603,5449=>603,5450=>603,5451=>603,5452=>603,5453=>603,5454=>834,5455=>754,5456=>418,5458=>729,5459=>684,5460=>684,5461=>684,5462=>684,5463=>726,5464=>726,5465=>726,5466=>726,5467=>924,5468=>1007,5469=>508,5470=>732,5471=>732,5472=>732,5473=>732,5474=>732,5475=>732,5476=>730,5477=>730,5478=>730,5479=>730,5480=>947,5481=>900,5482=>508,5492=>831,5493=>831,5494=>831,5495=>831,5496=>831,5497=>831,5498=>831,5499=>563,5500=>752,5501=>484,5502=>1047,5503=>1047,5504=>1047,5505=>1047,5506=>1047,5507=>1047,5508=>1047,5509=>825,5514=>831,5515=>831,5516=>831,5517=>831,5518=>1259,5519=>1259,5520=>1259,5521=>1002,5522=>1002,5523=>1259,5524=>1259,5525=>700,5526=>1073,5536=>852,5537=>852,5538=>852,5539=>852,5540=>852,5541=>852,5542=>600,5543=>643,5544=>643,5545=>643,5546=>643,5547=>643,5548=>643,5549=>643,5550=>418,5551=>628,5598=>770,5601=>767,5702=>468,5703=>468,5742=>444,5743=>1047,5744=>1310,5745=>1632,5746=>1632,5747=>1375,5748=>1375,5749=>1632,5750=>1632,5760=>477,5761=>493,5762=>712,5763=>931,5764=>1150,5765=>1370,5766=>493,5767=>712,5768=>931,5769=>1150,5770=>1370,5771=>498,5772=>718,5773=>938,5774=>1159,5775=>1379,5776=>493,5777=>712,5778=>930,5779=>1149,5780=>1370,5781=>498,5782=>752,5783=>789,5784=>1205,5785=>1150,5786=>683,5787=>507,5788=>507,7424=>592,7425=>717,7426=>982,7427=>586,7428=>550,7429=>605,7430=>605,7431=>491,7432=>541,7433=>278,7434=>395,7435=>579,7436=>583,7437=>754,7438=>650,7439=>612,7440=>550,7441=>684,7442=>684,7443=>684,7444=>1023,7446=>612,7447=>612,7448=>524,7449=>602,7450=>602,7451=>583,7452=>574,7453=>737,7454=>948,7455=>638,7456=>592,7457=>818,7458=>525,7459=>526,7462=>583,7463=>592,7464=>564,7465=>524,7466=>590,7467=>639,7468=>431,7469=>613,7470=>432,7472=>485,7473=>398,7474=>398,7475=>488,7476=>474,7477=>186,7478=>186,7479=>413,7480=>351,7481=>543,7482=>471,7483=>471,7484=>496,7485=>439,7486=>380,7487=>438,7488=>385,7489=>461,7490=>623,7491=>392,7492=>392,7493=>405,7494=>648,7495=>428,7496=>405,7497=>417,7498=>417,7499=>360,7500=>359,7501=>405,7502=>179,7503=>426,7504=>623,7505=>409,7506=>414,7507=>370,7508=>414,7509=>414,7510=>428,7511=>295,7512=>405,7513=>470,7514=>623,7515=>417,7517=>402,7518=>373,7519=>385,7520=>416,7521=>364,7522=>179,7523=>259,7524=>405,7525=>417,7526=>402,7527=>373,7528=>412,7529=>416,7530=>364,7543=>635,7544=>474,7547=>372,7549=>667,7557=>278,7579=>405,7580=>370,7581=>370,7582=>414,7583=>360,7584=>296,7585=>233,7586=>405,7587=>405,7588=>261,7589=>250,7590=>261,7591=>261,7592=>234,7593=>250,7594=>235,7595=>376,7596=>623,7597=>623,7598=>411,7599=>479,7600=>409,7601=>414,7602=>414,7603=>360,7604=>287,7605=>295,7606=>508,7607=>418,7608=>361,7609=>406,7610=>417,7611=>366,7612=>437,7613=>366,7614=>392,7615=>414,7620=>0,7621=>0,7622=>0,7623=>0,7624=>0,7625=>0,7680=>684,7681=>613,7682=>686,7683=>635,7684=>686,7685=>635,7686=>686,7687=>635,7688=>698,7689=>550,7690=>770,7691=>635,7692=>770,7693=>635,7694=>770,7695=>635,7696=>770,7697=>635,7698=>770,7699=>635,7700=>632,7701=>615,7702=>632,7703=>615,7704=>632,7705=>615,7706=>632,7707=>615,7708=>632,7709=>615,7710=>575,7711=>352,7712=>775,7713=>635,7714=>752,7715=>634,7716=>752,7717=>634,7718=>752,7719=>634,7720=>752,7721=>634,7722=>752,7723=>634,7724=>295,7725=>278,7726=>295,7727=>278,7728=>656,7729=>579,7730=>656,7731=>579,7732=>656,7733=>579,7734=>557,7735=>288,7736=>557,7737=>288,7738=>557,7739=>278,7740=>557,7741=>278,7742=>863,7743=>974,7744=>863,7745=>974,7746=>863,7747=>974,7748=>748,7749=>634,7750=>748,7751=>634,7752=>748,7753=>634,7754=>748,7755=>634,7756=>787,7757=>612,7758=>787,7759=>612,7760=>787,7761=>612,7762=>787,7763=>612,7764=>603,7765=>635,7766=>603,7767=>635,7768=>695,7769=>411,7770=>695,7771=>411,7772=>695,7773=>411,7774=>695,7775=>411,7776=>635,7777=>521,7778=>635,7779=>521,7780=>635,7781=>521,7782=>635,7783=>521,7784=>635,7785=>521,7786=>611,7787=>392,7788=>611,7789=>392,7790=>611,7791=>392,7792=>611,7793=>392,7794=>732,7795=>634,7796=>732,7797=>634,7798=>732,7799=>634,7800=>732,7801=>634,7802=>732,7803=>634,7804=>684,7805=>592,7806=>684,7807=>592,7808=>989,7809=>818,7810=>989,7811=>818,7812=>989,7813=>818,7814=>989,7815=>818,7816=>989,7817=>818,7818=>685,7819=>592,7820=>685,7821=>592,7822=>611,7823=>592,7824=>685,7825=>525,7826=>685,7827=>525,7828=>685,7829=>525,7830=>634,7831=>392,7832=>818,7833=>592,7834=>613,7835=>352,7836=>352,7837=>352,7838=>769,7839=>612,7840=>684,7841=>613,7842=>684,7843=>613,7844=>684,7845=>613,7846=>684,7847=>613,7848=>684,7849=>613,7850=>684,7851=>613,7852=>684,7853=>613,7854=>684,7855=>613,7856=>684,7857=>613,7858=>684,7859=>613,7860=>684,7861=>613,7862=>684,7863=>613,7864=>632,7865=>615,7866=>632,7867=>615,7868=>632,7869=>615,7870=>632,7871=>615,7872=>632,7873=>615,7874=>632,7875=>615,7876=>632,7877=>615,7878=>632,7879=>615,7880=>295,7881=>278,7882=>295,7883=>278,7884=>787,7885=>612,7886=>787,7887=>612,7888=>787,7889=>612,7890=>787,7891=>612,7892=>787,7893=>612,7894=>787,7895=>612,7896=>787,7897=>612,7898=>913,7899=>612,7900=>913,7901=>612,7902=>913,7903=>612,7904=>913,7905=>612,7906=>913,7907=>612,7908=>732,7909=>634,7910=>732,7911=>634,7912=>858,7913=>634,7914=>858,7915=>634,7916=>858,7917=>634,7918=>858,7919=>634,7920=>858,7921=>634,7922=>611,7923=>592,7924=>611,7925=>592,7926=>611,7927=>592,7928=>611,7929=>592,7930=>769,7931=>477,7936=>659,7937=>659,7938=>659,7939=>659,7940=>659,7941=>659,7942=>659,7943=>659,7944=>684,7945=>684,7946=>877,7947=>877,7948=>769,7949=>801,7950=>708,7951=>743,7952=>541,7953=>541,7954=>541,7955=>541,7956=>541,7957=>541,7960=>711,7961=>711,7962=>966,7963=>975,7964=>898,7965=>928,7968=>634,7969=>634,7970=>634,7971=>634,7972=>634,7973=>634,7974=>634,7975=>634,7976=>837,7977=>835,7978=>1086,7979=>1089,7980=>1027,7981=>1051,7982=>934,7983=>947,7984=>338,7985=>338,7986=>338,7987=>338,7988=>338,7989=>338,7990=>338,7991=>338,7992=>380,7993=>374,7994=>635,7995=>635,7996=>570,7997=>600,7998=>489,7999=>493,8000=>612,8001=>612,8002=>612,8003=>612,8004=>612,8005=>612,8008=>804,8009=>848,8010=>1095,8011=>1100,8012=>938,8013=>970,8016=>579,8017=>579,8018=>579,8019=>579,8020=>579,8021=>579,8022=>579,8023=>579,8025=>784,8027=>998,8029=>1012,8031=>897,8032=>837,8033=>837,8034=>837,8035=>837,8036=>837,8037=>837,8038=>837,8039=>837,8040=>802,8041=>843,8042=>1089,8043=>1095,8044=>946,8045=>972,8046=>921,8047=>952,8048=>659,8049=>659,8050=>541,8051=>548,8052=>634,8053=>654,8054=>338,8055=>338,8056=>612,8057=>612,8058=>579,8059=>579,8060=>837,8061=>837,8064=>659,8065=>659,8066=>659,8067=>659,8068=>659,8069=>659,8070=>659,8071=>659,8072=>684,8073=>684,8074=>877,8075=>877,8076=>769,8077=>801,8078=>708,8079=>743,8080=>634,8081=>634,8082=>634,8083=>634,8084=>634,8085=>634,8086=>634,8087=>634,8088=>837,8089=>835,8090=>1086,8091=>1089,8092=>1027,8093=>1051,8094=>934,8095=>947,8096=>837,8097=>837,8098=>837,8099=>837,8100=>837,8101=>837,8102=>837,8103=>837,8104=>802,8105=>843,8106=>1089,8107=>1095,8108=>946,8109=>972,8110=>921,8111=>952,8112=>659,8113=>659,8114=>659,8115=>659,8116=>659,8118=>659,8119=>659,8120=>684,8121=>684,8122=>716,8123=>692,8124=>684,8125=>500,8126=>500,8127=>500,8128=>500,8129=>500,8130=>634,8131=>634,8132=>654,8134=>634,8135=>634,8136=>805,8137=>746,8138=>931,8139=>871,8140=>752,8141=>500,8142=>500,8143=>500,8144=>338,8145=>338,8146=>338,8147=>338,8150=>338,8151=>338,8152=>295,8153=>295,8154=>475,8155=>408,8157=>500,8158=>500,8159=>500,8160=>579,8161=>579,8162=>579,8163=>579,8164=>635,8165=>635,8166=>579,8167=>579,8168=>611,8169=>611,8170=>845,8171=>825,8172=>685,8173=>500,8174=>500,8175=>500,8178=>837,8179=>837,8180=>837,8182=>837,8183=>837,8184=>941,8185=>813,8186=>922,8187=>826,8188=>764,8189=>500,8190=>500,8192=>500,8193=>1000,8194=>500,8195=>1000,8196=>330,8197=>250,8198=>167,8199=>636,8200=>318,8201=>200,8202=>100,8203=>0,8204=>0,8205=>0,8206=>0,8207=>0,8208=>361,8209=>361,8210=>636,8211=>500,8212=>1000,8213=>1000,8214=>500,8215=>500,8216=>318,8217=>318,8218=>318,8219=>318,8220=>518,8221=>518,8222=>518,8223=>518,8224=>500,8225=>500,8226=>590,8227=>590,8228=>334,8229=>667,8230=>1000,8231=>318,8232=>0,8233=>0,8234=>0,8235=>0,8236=>0,8237=>0,8238=>0,8239=>200,8240=>1342,8241=>1735,8242=>227,8243=>374,8244=>520,8245=>227,8246=>374,8247=>520,8248=>339,8249=>400,8250=>400,8251=>838,8252=>485,8253=>531,8254=>500,8255=>804,8256=>804,8257=>250,8258=>1000,8259=>500,8260=>167,8261=>390,8262=>390,8263=>922,8264=>733,8265=>733,8266=>497,8267=>636,8268=>500,8269=>500,8270=>500,8271=>337,8272=>804,8273=>500,8274=>450,8275=>1000,8276=>804,8277=>838,8278=>586,8279=>663,8280=>838,8281=>838,8282=>318,8283=>797,8284=>838,8285=>318,8286=>318,8287=>222,8288=>0,8289=>0,8290=>0,8291=>0,8292=>0,8298=>0,8299=>0,8300=>0,8301=>0,8302=>0,8303=>0,8304=>401,8305=>179,8308=>401,8309=>401,8310=>401,8311=>401,8312=>401,8313=>401,8314=>528,8315=>528,8316=>528,8317=>246,8318=>246,8319=>398,8320=>401,8321=>401,8322=>401,8323=>401,8324=>401,8325=>401,8326=>401,8327=>401,8328=>401,8329=>401,8330=>528,8331=>528,8332=>528,8333=>246,8334=>246,8336=>392,8337=>417,8338=>414,8339=>444,8340=>417,8341=>404,8342=>426,8343=>166,8344=>623,8345=>398,8346=>428,8347=>373,8348=>295,8352=>877,8353=>636,8354=>636,8355=>636,8356=>636,8357=>974,8358=>748,8359=>1272,8360=>1074,8361=>989,8362=>784,8363=>636,8364=>636,8365=>636,8366=>636,8367=>1272,8368=>636,8369=>636,8370=>636,8371=>636,8372=>774,8373=>636,8376=>636,8377=>636,8378=>679,8400=>0,8401=>0,8406=>0,8407=>0,8411=>0,8412=>0,8417=>0,8448=>1019,8449=>1019,8450=>698,8451=>1123,8452=>642,8453=>1019,8454=>1067,8455=>614,8456=>698,8457=>952,8459=>988,8460=>754,8461=>850,8462=>634,8463=>634,8464=>470,8465=>697,8466=>720,8467=>413,8468=>818,8469=>801,8470=>1040,8471=>1000,8472=>697,8473=>701,8474=>787,8475=>798,8476=>814,8477=>792,8478=>896,8479=>684,8480=>1020,8481=>1074,8482=>1000,8483=>684,8484=>745,8485=>578,8486=>764,8487=>764,8488=>616,8489=>338,8490=>656,8491=>684,8492=>786,8493=>703,8494=>854,8495=>592,8496=>605,8497=>786,8498=>575,8499=>1069,8500=>462,8501=>745,8502=>674,8503=>466,8504=>645,8505=>380,8506=>926,8507=>1194,8508=>702,8509=>728,8510=>654,8511=>849,8512=>811,8513=>775,8514=>557,8515=>557,8516=>611,8517=>819,8518=>708,8519=>615,8520=>351,8521=>351,8523=>780,8526=>526,8528=>969,8529=>969,8530=>1370,8531=>969,8532=>969,8533=>969,8534=>969,8535=>969,8536=>969,8537=>969,8538=>969,8539=>969,8540=>969,8541=>969,8542=>969,8543=>568,8544=>295,8545=>492,8546=>689,8547=>923,8548=>684,8549=>922,8550=>1120,8551=>1317,8552=>917,8553=>685,8554=>933,8555=>1131,8556=>557,8557=>698,8558=>770,8559=>863,8560=>278,8561=>458,8562=>637,8563=>812,8564=>592,8565=>811,8566=>991,8567=>1170,8568=>819,8569=>592,8570=>822,8571=>1002,8572=>278,8573=>550,8574=>635,8575=>974,8576=>1245,8577=>770,8578=>1245,8579=>703,8580=>549,8581=>698,8585=>969,8592=>838,8593=>838,8594=>838,8595=>838,8596=>838,8597=>838,8598=>838,8599=>838,8600=>838,8601=>838,8602=>838,8603=>838,8604=>838,8605=>838,8606=>838,8607=>838,8608=>838,8609=>838,8610=>838,8611=>838,8612=>838,8613=>838,8614=>838,8615=>838,8616=>838,8617=>838,8618=>838,8619=>838,8620=>838,8621=>838,8622=>838,8623=>838,8624=>838,8625=>838,8626=>838,8627=>838,8628=>838,8629=>838,8630=>838,8631=>838,8632=>838,8633=>838,8634=>838,8635=>838,8636=>838,8637=>838,8638=>838,8639=>838,8640=>838,8641=>838,8642=>838,8643=>838,8644=>838,8645=>838,8646=>838,8647=>838,8648=>838,8649=>838,8650=>838,8651=>838,8652=>838,8653=>838,8654=>838,8655=>838,8656=>838,8657=>838,8658=>838,8659=>838,8660=>838,8661=>838,8662=>838,8663=>838,8664=>838,8665=>838,8666=>838,8667=>838,8668=>838,8669=>838,8670=>838,8671=>838,8672=>838,8673=>838,8674=>838,8675=>838,8676=>838,8677=>838,8678=>838,8679=>838,8680=>838,8681=>838,8682=>838,8683=>838,8684=>838,8685=>838,8686=>838,8687=>838,8688=>838,8689=>838,8690=>838,8691=>838,8692=>838,8693=>838,8694=>838,8695=>838,8696=>838,8697=>838,8698=>838,8699=>838,8700=>838,8701=>838,8702=>838,8703=>838,8704=>684,8705=>636,8706=>517,8707=>632,8708=>632,8709=>871,8710=>669,8711=>669,8712=>871,8713=>871,8714=>718,8715=>871,8716=>871,8717=>718,8718=>636,8719=>757,8720=>757,8721=>674,8722=>838,8723=>838,8724=>838,8725=>337,8726=>637,8727=>838,8728=>626,8729=>626,8730=>637,8731=>637,8732=>637,8733=>714,8734=>833,8735=>838,8736=>896,8737=>896,8738=>838,8739=>500,8740=>500,8741=>500,8742=>500,8743=>732,8744=>732,8745=>732,8746=>732,8747=>521,8748=>789,8749=>1057,8750=>521,8751=>789,8752=>1057,8753=>521,8754=>521,8755=>521,8756=>636,8757=>636,8758=>260,8759=>636,8760=>838,8761=>838,8762=>838,8763=>838,8764=>838,8765=>838,8766=>838,8767=>838,8768=>375,8769=>838,8770=>838,8771=>838,8772=>838,8773=>838,8774=>838,8775=>838,8776=>838,8777=>838,8778=>838,8779=>838,8780=>838,8781=>838,8782=>838,8783=>838,8784=>838,8785=>838,8786=>839,8787=>839,8788=>1000,8789=>1000,8790=>838,8791=>838,8792=>838,8793=>838,8794=>838,8795=>838,8796=>838,8797=>838,8798=>838,8799=>838,8800=>838,8801=>838,8802=>838,8803=>838,8804=>838,8805=>838,8806=>838,8807=>838,8808=>838,8809=>838,8810=>1047,8811=>1047,8812=>464,8813=>838,8814=>838,8815=>838,8816=>838,8817=>838,8818=>838,8819=>838,8820=>838,8821=>838,8822=>838,8823=>838,8824=>838,8825=>838,8826=>838,8827=>838,8828=>838,8829=>838,8830=>838,8831=>838,8832=>838,8833=>838,8834=>838,8835=>838,8836=>838,8837=>838,8838=>838,8839=>838,8840=>838,8841=>838,8842=>838,8843=>838,8844=>732,8845=>732,8846=>732,8847=>838,8848=>838,8849=>838,8850=>838,8851=>780,8852=>780,8853=>838,8854=>838,8855=>838,8856=>838,8857=>838,8858=>838,8859=>838,8860=>838,8861=>838,8862=>838,8863=>838,8864=>838,8865=>838,8866=>871,8867=>871,8868=>871,8869=>871,8870=>521,8871=>521,8872=>871,8873=>871,8874=>871,8875=>871,8876=>871,8877=>871,8878=>871,8879=>871,8880=>838,8881=>838,8882=>838,8883=>838,8884=>838,8885=>838,8886=>1000,8887=>1000,8888=>838,8889=>838,8890=>521,8891=>732,8892=>732,8893=>732,8894=>838,8895=>838,8896=>820,8897=>820,8898=>820,8899=>820,8900=>494,8901=>318,8902=>626,8903=>838,8904=>1000,8905=>1000,8906=>1000,8907=>1000,8908=>1000,8909=>838,8910=>732,8911=>732,8912=>838,8913=>838,8914=>838,8915=>838,8916=>838,8917=>838,8918=>838,8919=>838,8920=>1422,8921=>1422,8922=>838,8923=>838,8924=>838,8925=>838,8926=>838,8927=>838,8928=>838,8929=>838,8930=>838,8931=>838,8932=>838,8933=>838,8934=>838,8935=>838,8936=>838,8937=>838,8938=>838,8939=>838,8940=>838,8941=>838,8942=>1000,8943=>1000,8944=>1000,8945=>1000,8946=>1000,8947=>871,8948=>718,8949=>871,8950=>871,8951=>718,8952=>871,8953=>871,8954=>1000,8955=>871,8956=>718,8957=>871,8958=>718,8959=>871,8960=>602,8961=>602,8962=>635,8963=>838,8964=>838,8965=>838,8966=>838,8967=>488,8968=>390,8969=>390,8970=>390,8971=>390,8972=>809,8973=>809,8974=>809,8975=>809,8976=>838,8977=>513,8984=>1000,8985=>838,8988=>469,8989=>469,8990=>469,8991=>469,8992=>521,8993=>521,8996=>1152,8997=>1152,8998=>1414,8999=>1152,9000=>1443,9003=>1414,9004=>873,9075=>338,9076=>635,9077=>837,9082=>659,9085=>757,9095=>1152,9108=>873,9115=>500,9116=>500,9117=>500,9118=>500,9119=>500,9120=>500,9121=>500,9122=>500,9123=>500,9124=>500,9125=>500,9126=>500,9127=>750,9128=>750,9129=>750,9130=>750,9131=>750,9132=>750,9133=>750,9134=>521,9166=>838,9167=>945,9187=>873,9189=>769,9192=>636,9250=>635,9251=>635,9312=>896,9313=>896,9314=>896,9315=>896,9316=>896,9317=>896,9318=>896,9319=>896,9320=>896,9321=>896,9472=>602,9473=>602,9474=>602,9475=>602,9476=>602,9477=>602,9478=>602,9479=>602,9480=>602,9481=>602,9482=>602,9483=>602,9484=>602,9485=>602,9486=>602,9487=>602,9488=>602,9489=>602,9490=>602,9491=>602,9492=>602,9493=>602,9494=>602,9495=>602,9496=>602,9497=>602,9498=>602,9499=>602,9500=>602,9501=>602,9502=>602,9503=>602,9504=>602,9505=>602,9506=>602,9507=>602,9508=>602,9509=>602,9510=>602,9511=>602,9512=>602,9513=>602,9514=>602,9515=>602,9516=>602,9517=>602,9518=>602,9519=>602,9520=>602,9521=>602,9522=>602,9523=>602,9524=>602,9525=>602,9526=>602,9527=>602,9528=>602,9529=>602,9530=>602,9531=>602,9532=>602,9533=>602,9534=>602,9535=>602,9536=>602,9537=>602,9538=>602,9539=>602,9540=>602,9541=>602,9542=>602,9543=>602,9544=>602,9545=>602,9546=>602,9547=>602,9548=>602,9549=>602,9550=>602,9551=>602,9552=>602,9553=>602,9554=>602,9555=>602,9556=>602,9557=>602,9558=>602,9559=>602,9560=>602,9561=>602,9562=>602,9563=>602,9564=>602,9565=>602,9566=>602,9567=>602,9568=>602,9569=>602,9570=>602,9571=>602,9572=>602,9573=>602,9574=>602,9575=>602,9576=>602,9577=>602,9578=>602,9579=>602,9580=>602,9581=>602,9582=>602,9583=>602,9584=>602,9585=>602,9586=>602,9587=>602,9588=>602,9589=>602,9590=>602,9591=>602,9592=>602,9593=>602,9594=>602,9595=>602,9596=>602,9597=>602,9598=>602,9599=>602,9600=>769,9601=>769,9602=>769,9603=>769,9604=>769,9605=>769,9606=>769,9607=>769,9608=>769,9609=>769,9610=>769,9611=>769,9612=>769,9613=>769,9614=>769,9615=>769,9616=>769,9617=>769,9618=>769,9619=>769,9620=>769,9621=>769,9622=>769,9623=>769,9624=>769,9625=>769,9626=>769,9627=>769,9628=>769,9629=>769,9630=>769,9631=>769,9632=>945,9633=>945,9634=>945,9635=>945,9636=>945,9637=>945,9638=>945,9639=>945,9640=>945,9641=>945,9642=>678,9643=>678,9644=>945,9645=>945,9646=>550,9647=>550,9648=>769,9649=>769,9650=>769,9651=>769,9652=>502,9653=>502,9654=>769,9655=>769,9656=>502,9657=>502,9658=>769,9659=>769,9660=>769,9661=>769,9662=>502,9663=>502,9664=>769,9665=>769,9666=>502,9667=>502,9668=>769,9669=>769,9670=>769,9671=>769,9672=>769,9673=>873,9674=>494,9675=>873,9676=>873,9677=>873,9678=>873,9679=>873,9680=>873,9681=>873,9682=>873,9683=>873,9684=>873,9685=>873,9686=>527,9687=>527,9688=>791,9689=>970,9690=>970,9691=>970,9692=>387,9693=>387,9694=>387,9695=>387,9696=>873,9697=>873,9698=>769,9699=>769,9700=>769,9701=>769,9702=>590,9703=>945,9704=>945,9705=>945,9706=>945,9707=>945,9708=>769,9709=>769,9710=>769,9711=>1119,9712=>945,9713=>945,9714=>945,9715=>945,9716=>873,9717=>873,9718=>873,9719=>873,9720=>769,9721=>769,9722=>769,9723=>830,9724=>830,9725=>732,9726=>732,9727=>769,9728=>896,9729=>1000,9730=>896,9731=>896,9732=>896,9733=>896,9734=>896,9735=>573,9736=>896,9737=>896,9738=>888,9739=>888,9740=>671,9741=>1013,9742=>1246,9743=>1250,9744=>896,9745=>896,9746=>896,9747=>532,9748=>896,9749=>896,9750=>896,9751=>896,9752=>896,9753=>896,9754=>896,9755=>896,9756=>896,9757=>609,9758=>896,9759=>609,9760=>896,9761=>896,9762=>896,9763=>896,9764=>669,9765=>746,9766=>649,9767=>784,9768=>545,9769=>896,9770=>896,9771=>896,9772=>710,9773=>896,9774=>896,9775=>896,9776=>896,9777=>896,9778=>896,9779=>896,9780=>896,9781=>896,9782=>896,9783=>896,9784=>896,9785=>1042,9786=>1042,9787=>1042,9788=>896,9789=>896,9790=>896,9791=>614,9792=>732,9793=>732,9794=>896,9795=>896,9796=>896,9797=>896,9798=>896,9799=>896,9800=>896,9801=>896,9802=>896,9803=>896,9804=>896,9805=>896,9806=>896,9807=>896,9808=>896,9809=>896,9810=>896,9811=>896,9812=>896,9813=>896,9814=>896,9815=>896,9816=>896,9817=>896,9818=>896,9819=>896,9820=>896,9821=>896,9822=>896,9823=>896,9824=>896,9825=>896,9826=>896,9827=>896,9828=>896,9829=>896,9830=>896,9831=>896,9832=>896,9833=>472,9834=>638,9835=>896,9836=>896,9837=>472,9838=>357,9839=>484,9840=>748,9841=>766,9842=>896,9843=>896,9844=>896,9845=>896,9846=>896,9847=>896,9848=>896,9849=>896,9850=>896,9851=>896,9852=>896,9853=>896,9854=>896,9855=>896,9856=>869,9857=>869,9858=>869,9859=>869,9860=>869,9861=>869,9862=>896,9863=>896,9864=>896,9865=>896,9866=>896,9867=>896,9868=>896,9869=>896,9870=>896,9871=>896,9872=>896,9873=>896,9874=>896,9875=>896,9876=>896,9877=>541,9878=>896,9879=>896,9880=>896,9881=>896,9882=>896,9883=>896,9884=>896,9888=>896,9889=>702,9890=>1004,9891=>1089,9892=>1175,9893=>903,9894=>838,9895=>838,9896=>838,9897=>838,9898=>838,9899=>838,9900=>838,9901=>838,9902=>838,9903=>838,9904=>844,9905=>838,9906=>732,9907=>732,9908=>732,9909=>732,9910=>850,9911=>732,9912=>732,9920=>838,9921=>838,9922=>838,9923=>838,9954=>732,9985=>838,9986=>838,9987=>838,9988=>838,9990=>838,9991=>838,9992=>838,9993=>838,9996=>838,9997=>838,9998=>838,9999=>838,10000=>838,10001=>838,10002=>838,10003=>838,10004=>838,10005=>838,10006=>838,10007=>838,10008=>838,10009=>838,10010=>838,10011=>838,10012=>838,10013=>838,10014=>838,10015=>838,10016=>838,10017=>838,10018=>838,10019=>838,10020=>838,10021=>838,10022=>838,10023=>838,10025=>838,10026=>838,10027=>838,10028=>838,10029=>838,10030=>838,10031=>838,10032=>838,10033=>838,10034=>838,10035=>838,10036=>838,10037=>838,10038=>838,10039=>838,10040=>838,10041=>838,10042=>838,10043=>838,10044=>838,10045=>838,10046=>838,10047=>838,10048=>838,10049=>838,10050=>838,10051=>838,10052=>838,10053=>838,10054=>838,10055=>838,10056=>838,10057=>838,10058=>838,10059=>838,10061=>896,10063=>896,10064=>896,10065=>896,10066=>896,10070=>896,10072=>838,10073=>838,10074=>838,10075=>322,10076=>322,10077=>538,10078=>538,10081=>838,10082=>838,10083=>838,10084=>838,10085=>838,10086=>838,10087=>838,10088=>838,10089=>838,10090=>838,10091=>838,10092=>838,10093=>838,10094=>838,10095=>838,10096=>838,10097=>838,10098=>838,10099=>838,10100=>838,10101=>838,10102=>896,10103=>896,10104=>896,10105=>896,10106=>896,10107=>896,10108=>896,10109=>896,10110=>896,10111=>896,10112=>838,10113=>838,10114=>838,10115=>838,10116=>838,10117=>838,10118=>838,10119=>838,10120=>838,10121=>838,10122=>838,10123=>838,10124=>838,10125=>838,10126=>838,10127=>838,10128=>838,10129=>838,10130=>838,10131=>838,10132=>838,10136=>838,10137=>838,10138=>838,10139=>838,10140=>838,10141=>838,10142=>838,10143=>838,10144=>838,10145=>838,10146=>838,10147=>838,10148=>838,10149=>838,10150=>838,10151=>838,10152=>838,10153=>838,10154=>838,10155=>838,10156=>838,10157=>838,10158=>838,10159=>838,10161=>838,10162=>838,10163=>838,10164=>838,10165=>838,10166=>838,10167=>838,10168=>838,10169=>838,10170=>838,10171=>838,10172=>838,10173=>838,10174=>838,10181=>390,10182=>390,10208=>494,10214=>495,10215=>495,10216=>390,10217=>390,10218=>556,10219=>556,10224=>838,10225=>838,10226=>838,10227=>838,10228=>1157,10229=>1434,10230=>1434,10231=>1434,10232=>1434,10233=>1434,10234=>1434,10235=>1434,10236=>1434,10237=>1434,10238=>1434,10239=>1434,10240=>732,10241=>732,10242=>732,10243=>732,10244=>732,10245=>732,10246=>732,10247=>732,10248=>732,10249=>732,10250=>732,10251=>732,10252=>732,10253=>732,10254=>732,10255=>732,10256=>732,10257=>732,10258=>732,10259=>732,10260=>732,10261=>732,10262=>732,10263=>732,10264=>732,10265=>732,10266=>732,10267=>732,10268=>732,10269=>732,10270=>732,10271=>732,10272=>732,10273=>732,10274=>732,10275=>732,10276=>732,10277=>732,10278=>732,10279=>732,10280=>732,10281=>732,10282=>732,10283=>732,10284=>732,10285=>732,10286=>732,10287=>732,10288=>732,10289=>732,10290=>732,10291=>732,10292=>732,10293=>732,10294=>732,10295=>732,10296=>732,10297=>732,10298=>732,10299=>732,10300=>732,10301=>732,10302=>732,10303=>732,10304=>732,10305=>732,10306=>732,10307=>732,10308=>732,10309=>732,10310=>732,10311=>732,10312=>732,10313=>732,10314=>732,10315=>732,10316=>732,10317=>732,10318=>732,10319=>732,10320=>732,10321=>732,10322=>732,10323=>732,10324=>732,10325=>732,10326=>732,10327=>732,10328=>732,10329=>732,10330=>732,10331=>732,10332=>732,10333=>732,10334=>732,10335=>732,10336=>732,10337=>732,10338=>732,10339=>732,10340=>732,10341=>732,10342=>732,10343=>732,10344=>732,10345=>732,10346=>732,10347=>732,10348=>732,10349=>732,10350=>732,10351=>732,10352=>732,10353=>732,10354=>732,10355=>732,10356=>732,10357=>732,10358=>732,10359=>732,10360=>732,10361=>732,10362=>732,10363=>732,10364=>732,10365=>732,10366=>732,10367=>732,10368=>732,10369=>732,10370=>732,10371=>732,10372=>732,10373=>732,10374=>732,10375=>732,10376=>732,10377=>732,10378=>732,10379=>732,10380=>732,10381=>732,10382=>732,10383=>732,10384=>732,10385=>732,10386=>732,10387=>732,10388=>732,10389=>732,10390=>732,10391=>732,10392=>732,10393=>732,10394=>732,10395=>732,10396=>732,10397=>732,10398=>732,10399=>732,10400=>732,10401=>732,10402=>732,10403=>732,10404=>732,10405=>732,10406=>732,10407=>732,10408=>732,10409=>732,10410=>732,10411=>732,10412=>732,10413=>732,10414=>732,10415=>732,10416=>732,10417=>732,10418=>732,10419=>732,10420=>732,10421=>732,10422=>732,10423=>732,10424=>732,10425=>732,10426=>732,10427=>732,10428=>732,10429=>732,10430=>732,10431=>732,10432=>732,10433=>732,10434=>732,10435=>732,10436=>732,10437=>732,10438=>732,10439=>732,10440=>732,10441=>732,10442=>732,10443=>732,10444=>732,10445=>732,10446=>732,10447=>732,10448=>732,10449=>732,10450=>732,10451=>732,10452=>732,10453=>732,10454=>732,10455=>732,10456=>732,10457=>732,10458=>732,10459=>732,10460=>732,10461=>732,10462=>732,10463=>732,10464=>732,10465=>732,10466=>732,10467=>732,10468=>732,10469=>732,10470=>732,10471=>732,10472=>732,10473=>732,10474=>732,10475=>732,10476=>732,10477=>732,10478=>732,10479=>732,10480=>732,10481=>732,10482=>732,10483=>732,10484=>732,10485=>732,10486=>732,10487=>732,10488=>732,10489=>732,10490=>732,10491=>732,10492=>732,10493=>732,10494=>732,10495=>732,10502=>838,10503=>838,10506=>838,10507=>838,10560=>683,10561=>683,10627=>734,10628=>734,10702=>838,10703=>1000,10704=>1000,10705=>1000,10706=>1000,10707=>1000,10708=>1000,10709=>1000,10731=>494,10746=>838,10747=>838,10752=>1000,10753=>1000,10754=>1000,10764=>1325,10765=>521,10766=>521,10767=>521,10768=>521,10769=>521,10770=>521,10771=>521,10772=>521,10773=>521,10774=>521,10775=>521,10776=>521,10777=>521,10778=>521,10779=>521,10780=>521,10799=>838,10858=>838,10859=>838,10877=>838,10878=>838,10879=>838,10880=>838,10881=>838,10882=>838,10883=>838,10884=>838,10885=>838,10886=>838,10887=>838,10888=>838,10889=>838,10890=>838,10891=>838,10892=>838,10893=>838,10894=>838,10895=>838,10896=>838,10897=>838,10898=>838,10899=>838,10900=>838,10901=>838,10902=>838,10903=>838,10904=>838,10905=>838,10906=>838,10907=>838,10908=>838,10909=>838,10910=>838,10911=>838,10912=>838,10926=>838,10927=>838,10928=>838,10929=>838,10930=>838,10931=>838,10932=>838,10933=>838,10934=>838,10935=>838,10936=>838,10937=>838,10938=>838,11001=>838,11002=>838,11008=>838,11009=>838,11010=>838,11011=>838,11012=>838,11013=>838,11014=>838,11015=>838,11016=>838,11017=>838,11018=>838,11019=>838,11020=>838,11021=>838,11022=>836,11023=>836,11024=>836,11025=>836,11026=>945,11027=>945,11028=>945,11029=>945,11030=>769,11031=>769,11032=>769,11033=>769,11034=>945,11039=>869,11040=>869,11041=>873,11042=>873,11043=>873,11044=>1119,11091=>869,11092=>869,11360=>557,11361=>278,11362=>557,11363=>603,11364=>695,11365=>613,11366=>392,11367=>752,11368=>634,11369=>656,11370=>579,11371=>685,11372=>525,11373=>781,11374=>863,11375=>684,11376=>781,11377=>734,11378=>1128,11379=>961,11380=>592,11381=>654,11382=>568,11383=>660,11385=>414,11386=>612,11387=>491,11388=>175,11389=>431,11390=>635,11391=>685,11520=>591,11521=>595,11522=>564,11523=>602,11524=>587,11525=>911,11526=>626,11527=>952,11528=>595,11529=>607,11530=>954,11531=>620,11532=>595,11533=>926,11534=>595,11535=>806,11536=>931,11537=>584,11538=>592,11539=>923,11540=>953,11541=>828,11542=>596,11543=>595,11544=>590,11545=>592,11546=>592,11547=>621,11548=>920,11549=>589,11550=>586,11551=>581,11552=>914,11553=>596,11554=>595,11555=>592,11556=>642,11557=>901,11568=>646,11569=>888,11570=>888,11571=>682,11572=>684,11573=>635,11574=>562,11575=>684,11576=>684,11577=>632,11578=>632,11579=>683,11580=>875,11581=>685,11582=>491,11583=>685,11584=>888,11585=>888,11586=>300,11587=>627,11588=>752,11589=>656,11590=>527,11591=>685,11592=>645,11593=>632,11594=>502,11595=>953,11596=>778,11597=>748,11598=>621,11599=>295,11600=>778,11601=>295,11602=>752,11603=>633,11604=>888,11605=>888,11606=>752,11607=>320,11608=>749,11609=>888,11610=>888,11611=>698,11612=>768,11613=>685,11614=>698,11615=>622,11616=>684,11617=>752,11618=>632,11619=>788,11620=>567,11621=>788,11631=>515,11800=>531,11806=>838,11810=>390,11811=>390,11812=>390,11813=>390,11822=>531,19904=>896,19905=>896,19906=>896,19907=>896,19908=>896,19909=>896,19910=>896,19911=>896,19912=>896,19913=>896,19914=>896,19915=>896,19916=>896,19917=>896,19918=>896,19919=>896,19920=>896,19921=>896,19922=>896,19923=>896,19924=>896,19925=>896,19926=>896,19927=>896,19928=>896,19929=>896,19930=>896,19931=>896,19932=>896,19933=>896,19934=>896,19935=>896,19936=>896,19937=>896,19938=>896,19939=>896,19940=>896,19941=>896,19942=>896,19943=>896,19944=>896,19945=>896,19946=>896,19947=>896,19948=>896,19949=>896,19950=>896,19951=>896,19952=>896,19953=>896,19954=>896,19955=>896,19956=>896,19957=>896,19958=>896,19959=>896,19960=>896,19961=>896,19962=>896,19963=>896,19964=>896,19965=>896,19966=>896,19967=>896,42192=>686,42193=>603,42194=>603,42195=>770,42196=>611,42197=>611,42198=>775,42199=>656,42200=>656,42201=>512,42202=>698,42203=>703,42204=>685,42205=>575,42206=>575,42207=>863,42208=>748,42209=>557,42210=>635,42211=>695,42212=>695,42213=>684,42214=>684,42215=>752,42216=>775,42217=>512,42218=>989,42219=>685,42220=>611,42221=>686,42222=>684,42223=>684,42224=>632,42225=>632,42226=>295,42227=>787,42228=>732,42229=>732,42230=>557,42231=>767,42232=>300,42233=>300,42234=>596,42235=>596,42236=>300,42237=>300,42238=>588,42239=>588,42564=>635,42565=>521,42566=>354,42567=>338,42572=>1180,42573=>1028,42576=>1029,42577=>906,42580=>1080,42581=>842,42582=>977,42583=>843,42594=>1062,42595=>912,42596=>1066,42597=>901,42598=>1178,42599=>1008,42600=>787,42601=>612,42602=>855,42603=>712,42604=>1358,42605=>1019,42606=>879,42634=>782,42635=>685,42636=>611,42637=>583,42644=>686,42645=>634,42760=>493,42761=>493,42762=>493,42763=>493,42764=>493,42765=>493,42766=>493,42767=>493,42768=>493,42769=>493,42770=>493,42771=>493,42772=>493,42773=>493,42774=>493,42779=>369,42780=>369,42781=>252,42782=>252,42783=>252,42786=>385,42787=>356,42788=>472,42789=>472,42790=>752,42791=>634,42792=>878,42793=>709,42794=>614,42795=>541,42800=>491,42801=>521,42802=>1250,42803=>985,42804=>1203,42805=>990,42806=>1142,42807=>981,42808=>971,42809=>818,42810=>971,42811=>818,42812=>959,42813=>818,42814=>703,42815=>549,42816=>656,42817=>583,42822=>680,42823=>392,42824=>582,42825=>427,42826=>807,42827=>704,42830=>1358,42831=>1019,42832=>603,42833=>635,42834=>734,42835=>774,42838=>787,42839=>635,42852=>605,42853=>635,42854=>605,42855=>635,42880=>557,42881=>278,42882=>735,42883=>634,42889=>337,42890=>376,42891=>401,42892=>275,42893=>686,42894=>487,42896=>772,42897=>667,42912=>775,42913=>635,42914=>656,42915=>579,42916=>748,42917=>634,42918=>695,42919=>411,42920=>635,42921=>521,42922=>801,43002=>915,43003=>575,43004=>603,43005=>863,43006=>295,43007=>1199,61184=>213,61185=>238,61186=>257,61187=>264,61188=>267,61189=>238,61190=>213,61191=>238,61192=>257,61193=>264,61194=>257,61195=>238,61196=>213,61197=>238,61198=>257,61199=>264,61200=>257,61201=>238,61202=>213,61203=>238,61204=>267,61205=>264,61206=>257,61207=>238,61208=>213,61209=>275,61440=>977,61441=>977,61442=>977,61443=>977,62464=>580,62465=>580,62466=>624,62467=>889,62468=>585,62469=>580,62470=>653,62471=>882,62472=>555,62473=>580,62474=>1168,62475=>589,62476=>590,62477=>869,62478=>580,62479=>589,62480=>914,62481=>590,62482=>731,62483=>583,62484=>872,62485=>589,62486=>895,62487=>589,62488=>589,62489=>590,62490=>649,62491=>589,62492=>589,62493=>599,62494=>590,62495=>516,62496=>580,62497=>584,62498=>580,62499=>580,62500=>581,62501=>638,62502=>955,62504=>931,62505=>808,62506=>508,62507=>508,62508=>508,62509=>508,62510=>508,62511=>508,62512=>508,62513=>508,62514=>508,62515=>508,62516=>518,62517=>518,62518=>518,62519=>787,62520=>787,62521=>787,62522=>787,62523=>787,62524=>546,62525=>546,62526=>546,62527=>546,62528=>546,62529=>546,63173=>612,64256=>689,64257=>630,64258=>630,64259=>967,64260=>967,64261=>686,64262=>861,64275=>1202,64276=>1202,64277=>1196,64278=>1186,64279=>1529,64285=>224,64286=>0,64287=>331,64288=>636,64289=>856,64290=>774,64291=>906,64292=>771,64293=>843,64294=>855,64295=>807,64296=>875,64297=>838,64298=>708,64299=>708,64300=>708,64301=>708,64302=>668,64303=>668,64304=>668,64305=>578,64306=>412,64307=>546,64308=>653,64309=>355,64310=>406,64312=>648,64313=>330,64314=>537,64315=>529,64316=>568,64318=>679,64320=>399,64321=>649,64323=>640,64324=>625,64326=>593,64327=>709,64328=>564,64329=>708,64330=>657,64331=>272,64332=>578,64333=>529,64334=>625,64335=>629,64338=>941,64339=>982,64340=>278,64341=>302,64342=>941,64343=>982,64344=>278,64345=>302,64346=>941,64347=>982,64348=>278,64349=>302,64350=>941,64351=>982,64352=>278,64353=>302,64354=>941,64355=>982,64356=>278,64357=>302,64358=>941,64359=>982,64360=>278,64361=>302,64362=>1037,64363=>1035,64364=>478,64365=>506,64366=>1037,64367=>1035,64368=>478,64369=>506,64370=>646,64371=>646,64372=>618,64373=>646,64374=>646,64375=>646,64376=>618,64377=>646,64378=>646,64379=>646,64380=>618,64381=>646,64382=>646,64383=>646,64384=>618,64385=>646,64386=>445,64387=>525,64388=>445,64389=>525,64390=>445,64391=>525,64392=>445,64393=>525,64394=>483,64395=>552,64396=>483,64397=>552,64398=>895,64399=>895,64400=>476,64401=>552,64402=>895,64403=>895,64404=>476,64405=>552,64406=>895,64407=>895,64408=>476,64409=>552,64410=>895,64411=>895,64412=>476,64413=>552,64414=>734,64415=>761,64416=>734,64417=>761,64418=>278,64419=>302,64426=>698,64427=>632,64428=>527,64429=>461,64467=>824,64468=>843,64469=>476,64470=>552,64473=>483,64474=>517,64488=>278,64489=>302,64508=>783,64509=>833,64510=>278,64511=>302,65024=>0,65025=>0,65026=>0,65027=>0,65028=>0,65029=>0,65030=>0,65031=>0,65032=>0,65033=>0,65034=>0,65035=>0,65036=>0,65037=>0,65038=>0,65039=>0,65056=>0,65057=>0,65058=>0,65059=>0,65136=>293,65137=>293,65138=>293,65139=>262,65140=>293,65142=>293,65143=>293,65144=>293,65145=>293,65146=>293,65147=>293,65148=>293,65149=>293,65150=>293,65151=>293,65152=>470,65153=>278,65154=>305,65155=>278,65156=>305,65157=>483,65158=>517,65159=>278,65160=>305,65161=>783,65162=>833,65163=>278,65164=>302,65165=>278,65166=>305,65167=>941,65168=>982,65169=>278,65170=>302,65171=>524,65172=>536,65173=>941,65174=>982,65175=>278,65176=>302,65177=>941,65178=>982,65179=>278,65180=>302,65181=>646,65182=>646,65183=>618,65184=>646,65185=>646,65186=>646,65187=>618,65188=>646,65189=>646,65190=>646,65191=>618,65192=>646,65193=>445,65194=>525,65195=>445,65196=>525,65197=>483,65198=>552,65199=>483,65200=>552,65201=>1221,65202=>1275,65203=>838,65204=>892,65205=>1221,65206=>1275,65207=>838,65208=>892,65209=>1209,65210=>1225,65211=>849,65212=>867,65213=>1209,65214=>1225,65215=>849,65216=>867,65217=>925,65218=>949,65219=>796,65220=>820,65221=>925,65222=>949,65223=>796,65224=>820,65225=>597,65226=>532,65227=>597,65228=>482,65229=>597,65230=>532,65231=>523,65232=>482,65233=>1037,65234=>1035,65235=>478,65236=>506,65237=>776,65238=>834,65239=>478,65240=>506,65241=>824,65242=>843,65243=>476,65244=>552,65245=>727,65246=>757,65247=>305,65248=>331,65249=>619,65250=>666,65251=>536,65252=>578,65253=>734,65254=>761,65255=>278,65256=>302,65257=>524,65258=>536,65259=>527,65260=>461,65261=>483,65262=>517,65263=>783,65264=>833,65265=>783,65266=>833,65267=>278,65268=>302,65269=>570,65270=>597,65271=>570,65272=>597,65273=>570,65274=>597,65275=>570,65276=>597,65279=>0,65529=>0,65530=>0,65531=>0,65532=>0,65533=>1025,65535=>600);
|
16 |
-
// --- EOF ---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/lib/tcpdf_min/fonts/dejavusans.z
DELETED
Binary file
|
includes/lib/tcpdf_min/fonts/dejavusansb.ctg.z
DELETED
Binary file
|
includes/lib/tcpdf_min/fonts/dejavusansb.php
DELETED
@@ -1,16 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
// TCPDF FONT FILE DESCRIPTION
|
3 |
-
$type='TrueTypeUnicode';
|
4 |
-
$name='DejaVuSans-Bold';
|
5 |
-
$up=-63;
|
6 |
-
$ut=44;
|
7 |
-
$dw=600;
|
8 |
-
$diff='';
|
9 |
-
$originalsize=693876;
|
10 |
-
$enc='';
|
11 |
-
$file='dejavusansb.z';
|
12 |
-
$ctg='dejavusansb.ctg.z';
|
13 |
-
$desc=array('Flags'=>32,'FontBBox'=>'[-1069 -415 1975 1174]','ItalicAngle'=>0,'Ascent'=>928,'Descent'=>-236,'Leading'=>0,'CapHeight'=>729,'XHeight'=>547,'StemV'=>60,'StemH'=>26,'AvgWidth'=>573,'MaxWidth'=>2016,'MissingWidth'=>600);
|
14 |
-
$cbbox=array(0=>array(50,-177,550,705),32=>array(140,0,316,729),33=>array(140,0,316,729),34=>array(95,458,426,729),35=>array(68,0,770,718),36=>array(78,-147,628,760),37=>array(32,-14,970,742),38=>array(60,-14,830,742),39=>array(95,458,211,729),40=>array(86,-132,377,759),41=>array(80,-132,371,759),42=>array(20,278,503,742),43=>array(106,0,732,627),44=>array(53,-142,278,189),45=>array(54,217,361,359),46=>array(102,0,278,189),47=>array(0,-93,365,729),48=>array(48,-14,648,742),49=>array(113,0,627,729),50=>array(79,0,609,742),51=>array(67,-14,616,742),52=>array(45,0,650,729),53=>array(77,-14,626,729),54=>array(62,-14,642,741),55=>array(67,0,616,729),56=>array(61,-14,634,742),57=>array(52,-14,632,741),58=>array(112,0,288,547),59=>array(63,-142,288,547),60=>array(106,30,732,597),61=>array(106,144,732,482),62=>array(106,30,732,597),63=>array(69,0,515,742),64=>array(66,-174,929,703),65=>array(5,0,769,729),66=>array(92,0,692,729),67=>array(50,-14,670,742),68=>array(92,0,778,729),69=>array(92,0,610,729),70=>array(92,0,599,729),71=>array(50,-14,747,742),72=>array(92,0,745,729),73=>array(92,0,280,729),74=>array(-56,-200,280,729),75=>array(92,0,805,729),76=>array(92,0,610,729),77=>array(92,0,903,729),78=>array(92,0,745,729),79=>array(50,-14,800,742),80=>array(92,0,692,729),81=>array(50,-146,800,742),82=>array(92,0,750,729),83=>array(72,-14,647,742),84=>array(5,0,677,729),85=>array(92,-14,720,729),86=>array(5,0,769,729),87=>array(30,0,1072,729),88=>array(19,0,751,729),89=>array(-10,0,734,729),90=>array(45,0,680,729),91=>array(86,-132,389,760),92=>array(0,-93,365,729),93=>array(68,-132,371,760),94=>array(101,457,737,729),95=>array(0,-236,500,-143),96=>array(46,616,322,800),97=>array(43,-14,596,560),98=>array(84,-14,671,760),99=>array(43,-14,526,560),100=>array(45,-14,632,760),101=>array(43,-14,630,560),102=>array(19,0,444,760),103=>array(45,-216,632,559),104=>array(84,0,634,760),105=>array(84,0,259,760),106=>array(-33,-216,259,760),107=>array(84,0,684,760),108=>array(84,0,259,760),109=>array(83,0,963,560),110=>array(84,0,634,560),111=>array(43,-14,644,560),112=>array(84,-208,671,560),113=>array(45,-208,632,559),114=>array(84,0,490,560),115=>array(52,-14,548,560),116=>array(13,0,455,702),117=>array(78,-14,628,547),118=>array(15,0,637,547),119=>array(35,0,889,547),120=>array(15,0,630,547),121=>array(12,-216,634,547),122=>array(45,0,534,547),123=>array(125,-163,587,760),124=>array(127,-236,238,764),125=>array(125,-163,587,760),126=>array(106,212,732,415),160=>array(140,0,316,729),161=>array(140,0,316,729),162=>array(85,-153,567,699),163=>array(61,0,613,742),164=>array(36,30,601,596),165=>array(12,0,684,729),166=>array(127,-171,238,699),167=>array(7,-95,496,742),168=>array(96,654,404,774),169=>array(138,0,862,725),170=>array(77,182,489,742),171=>array(77,67,552,519),172=>array(106,140,732,444),173=>array(54,217,361,359),174=>array(138,0,862,725),175=>array(96,668,404,760),176=>array(87,424,412,749),177=>array(106,0,732,627),178=>array(53,326,382,742),179=>array(44,319,384,742),180=>array(178,616,454,800),181=>array(85,-209,704,547),182=>array(63,-96,549,729),183=>array(102,253,278,442),184=>array(128,-196,349,0),185=>array(60,326,382,734),186=>array(57,182,507,742),187=>array(94,67,569,519),188=>array(49,-14,957,742),189=>array(49,-14,987,742),190=>array(51,-14,957,742),191=>array(69,-14,515,729),192=>array(5,0,769,927),193=>array(5,0,769,927),194=>array(5,0,769,927),195=>array(5,0,769,931),196=>array(5,0,769,927),197=>array(5,0,769,928),198=>array(0,0,1012,729),199=>array(50,-196,670,742),200=>array(92,0,610,927),201=>array(92,0,610,927),202=>array(92,0,610,927),203=>array(92,0,610,927),204=>array(11,0,280,927),205=>array(92,0,337,927),206=>array(1,0,370,927),207=>array(32,0,339,927),208=>array(16,0,787,729),209=>array(92,0,745,928),210=>array(50,-14,800,927),211=>array(50,-14,800,927),212=>array(50,-14,800,927),213=>array(50,-14,800,928),214=>array(50,-14,800,927),215=>array(125,20,713,607),216=>array(22,-36,823,765),217=>array(92,-14,720,927),218=>array(92,-14,720,927),219=>array(92,-14,720,927),220=>array(92,-14,720,927),221=>array(-10,0,734,927),222=>array(92,0,692,729),223=>array(84,-14,676,760),224=>array(43,-14,596,800),225=>array(43,-14,596,800),226=>array(43,-14,596,800),227=>array(43,-14,596,778),228=>array(43,-14,596,774),229=>array(43,-14,596,888),230=>array(43,-14,1000,560),231=>array(43,-196,526,560),232=>array(43,-14,630,800),233=>array(43,-14,630,800),234=>array(43,-14,630,800),235=>array(43,-14,630,774),236=>array(-21,0,259,800),237=>array(84,0,387,800),238=>array(-13,0,355,800),239=>array(17,0,325,774),240=>array(43,-14,644,760),241=>array(84,0,634,778),242=>array(43,-14,644,800),243=>array(43,-14,644,800),244=>array(43,-14,644,800),245=>array(43,-14,644,778),246=>array(43,-14,644,774),247=>array(106,42,732,585),248=>array(38,-46,645,594),249=>array(78,-14,628,800),250=>array(78,-14,628,800),251=>array(78,-14,628,800),252=>array(78,-14,628,774),253=>array(12,-216,634,800),254=>array(84,-208,671,760),255=>array(12,-216,634,774),256=>array(5,0,769,914),257=>array(43,-14,596,763),258=>array(5,0,769,935),259=>array(43,-14,596,780),260=>array(5,-196,769,729),261=>array(43,-196,596,560),262=>array(50,-14,670,927),263=>array(43,-14,557,800),264=>array(50,-14,670,927),265=>array(43,-14,542,800),266=>array(50,-14,670,927),267=>array(43,-14,526,760),268=>array(50,-14,670,927),269=>array(43,-14,537,800),270=>array(92,0,778,927),271=>array(45,-14,871,760),272=>array(16,0,787,729),273=>array(45,-14,707,760),274=>array(92,0,610,914),275=>array(43,-14,630,763),276=>array(92,0,610,927),277=>array(43,-14,630,784),278=>array(92,0,610,927),279=>array(43,-14,630,760),280=>array(92,-196,610,729),281=>array(43,-196,630,560),282=>array(92,0,610,927),283=>array(43,-14,630,800),284=>array(50,-14,747,927),285=>array(45,-216,632,800),286=>array(50,-14,747,927),287=>array(45,-216,632,784),288=>array(50,-14,747,927),289=>array(45,-216,632,760),290=>array(50,-224,747,742),291=>array(45,-216,632,765),292=>array(92,0,745,927),293=>array(-9,0,634,927),294=>array(92,0,882,729),295=>array(81,0,709,760),296=>array(16,0,355,928),297=>array(1,0,341,778),298=>array(32,0,339,914),299=>array(18,0,325,763),300=>array(21,0,350,927),301=>array(7,0,335,784),302=>array(92,-196,366,729),303=>array(84,-196,345,760),304=>array(92,0,280,927),305=>array(84,0,259,547),306=>array(92,-200,651,729),307=>array(84,-216,602,760),308=>array(-56,-200,370,927),309=>array(-33,-216,355,800),310=>array(92,-209,805,729),311=>array(84,-209,684,760),312=>array(84,0,684,547),313=>array(92,0,610,928),314=>array(84,0,357,928),315=>array(92,-209,610,729),316=>array(71,-209,273,760),317=>array(92,0,610,729),318=>array(84,0,479,760),319=>array(92,0,610,729),320=>array(84,0,484,760),321=>array(-45,0,615,729),322=>array(-18,0,390,760),323=>array(92,0,745,928),324=>array(84,0,634,803),325=>array(92,-209,745,729),326=>array(84,-209,634,560),327=>array(92,0,745,927),328=>array(84,0,634,800),329=>array(51,0,891,729),330=>array(84,-200,730,742),331=>array(84,-216,634,560),332=>array(50,-14,800,914),333=>array(43,-14,644,763),334=>array(50,-14,800,927),335=>array(43,-14,644,787),336=>array(50,-14,800,927),337=>array(43,-14,644,800),338=>array(50,-1,1094,730),339=>array(43,-14,1046,560),340=>array(92,0,750,928),341=>array(84,0,515,803),342=>array(92,-209,750,729),343=>array(71,-209,490,560),344=>array(92,0,750,927),345=>array(84,0,490,800),346=>array(72,-14,647,928),347=>array(52,-14,548,803),348=>array(72,-14,647,927),349=>array(52,-14,548,800),350=>array(72,-196,647,742),351=>array(52,-196,548,560),352=>array(72,-14,647,927),353=>array(52,-14,548,800),354=>array(5,-196,677,729),355=>array(13,-196,455,702),356=>array(5,0,677,930),357=>array(13,0,507,814),358=>array(5,0,677,729),359=>array(13,0,455,702),360=>array(92,-14,720,928),361=>array(78,-14,628,778),362=>array(92,-14,720,914),363=>array(78,-14,628,763),364=>array(92,-14,720,927),365=>array(78,-14,628,784),366=>array(92,-14,720,929),367=>array(78,-14,628,881),368=>array(92,-14,720,927),369=>array(78,-14,628,800),370=>array(92,-196,720,729),371=>array(78,-196,716,547),372=>array(30,0,1072,931),373=>array(35,0,889,800),374=>array(-10,0,734,931),375=>array(12,-216,634,800),376=>array(-10,0,734,927),377=>array(45,0,680,928),378=>array(45,0,534,803),379=>array(45,0,680,929),380=>array(45,0,534,760),381=>array(45,0,680,927),382=>array(45,0,534,800),383=>array(19,0,444,760),384=>array(9,-14,671,760),385=>array(-68,0,741,729),386=>array(92,0,692,729),387=>array(84,-14,671,760),388=>array(40,0,731,729),389=>array(25,-14,696,760),390=>array(50,-14,670,742),391=>array(50,-14,818,924),392=>array(43,-14,643,724),393=>array(16,0,787,729),394=>array(-68,0,827,729),395=>array(70,0,669,729),396=>array(45,-14,632,760),397=>array(43,-222,645,560),398=>array(92,0,610,729),399=>array(51,-14,800,742),400=>array(67,-14,616,742),401=>array(-56,-200,599,729),402=>array(-57,-208,444,760),403=>array(50,-14,868,924),404=>array(2,-211,793,730),405=>array(84,0,1000,760),406=>array(92,0,428,729),407=>array(5,0,384,729),408=>array(92,0,805,742),409=>array(84,0,684,760),410=>array(5,0,355,760),411=>array(-11,0,562,760),412=>array(83,-13,963,729),413=>array(-56,-200,745,729),414=>array(84,-208,634,560),415=>array(50,-14,800,742),416=>array(53,-14,854,761),417=>array(46,-14,708,609),418=>array(50,-14,1007,742),419=>array(43,-216,826,560),420=>array(-68,0,741,729),421=>array(84,-208,671,760),422=>array(92,-146,760,729),423=>array(26,-14,601,742),424=>array(15,-14,511,560),425=>array(92,0,610,729),426=>array(-31,-217,561,760),427=>array(13,-216,455,702),428=>array(15,0,701,729),429=>array(13,0,455,760),430=>array(5,-200,677,729),431=>array(91,-14,833,761),432=>array(75,-14,733,609),433=>array(27,-14,823,728),434=>array(92,0,772,729),435=>array(-10,0,796,742),436=>array(12,-216,778,560),437=>array(45,0,680,729),438=>array(45,0,534,547),439=>array(72,-33,728,729),440=>array(41,-33,696,729),441=>array(37,-215,586,547),442=>array(57,-208,534,547),443=>array(79,0,609,742),444=>array(41,-33,728,729),445=>array(37,-215,586,547),446=>array(36,-15,525,702),447=>array(84,-208,671,560),448=>array(92,-208,280,729),449=>array(92,-208,566,729),450=>array(5,-208,536,729),451=>array(99,0,274,729),452=>array(92,0,1510,927),453=>array(92,0,1364,800),454=>array(45,-14,1250,800),455=>array(92,-200,917,729),456=>array(92,-216,896,760),457=>array(84,-216,602,760),458=>array(92,-200,1117,729),459=>array(92,-216,1096,760),460=>array(84,-216,971,760),461=>array(5,0,769,927),462=>array(43,-14,596,800),463=>array(3,0,371,927),464=>array(2,0,370,800),465=>array(50,-14,800,927),466=>array(43,-14,644,800),467=>array(92,-14,720,927),468=>array(78,-14,628,800),469=>array(92,-14,720,1040),470=>array(78,-14,628,914),471=>array(92,-14,720,1114),472=>array(78,-14,628,917),473=>array(92,-14,720,1114),474=>array(78,-14,628,917),475=>array(92,-14,720,1114),476=>array(78,-14,628,917),477=>array(43,-14,630,560),478=>array(5,0,769,1040),479=>array(43,-14,596,914),480=>array(5,0,769,1042),481=>array(43,-14,596,914),482=>array(0,0,1012,914),483=>array(43,-14,1000,758),484=>array(50,-14,792,742),485=>array(45,-216,674,559),486=>array(50,-14,747,927),487=>array(45,-216,632,800),488=>array(92,0,805,927),489=>array(-5,0,684,927),490=>array(50,-196,800,742),491=>array(43,-196,644,560),492=>array(50,-196,800,914),493=>array(43,-196,644,763),494=>array(72,-33,728,927),495=>array(43,-215,593,793),496=>array(-33,-216,359,800),497=>array(92,0,1510,729),498=>array(92,0,1364,729),499=>array(45,-14,1250,760),500=>array(50,-14,747,928),501=>array(45,-216,632,800),502=>array(92,-14,1186,729),503=>array(92,-208,737,742),504=>array(92,0,745,927),505=>array(84,0,634,800),506=>array(5,0,769,931),507=>array(43,-14,708,931),508=>array(0,0,1012,927),509=>array(43,-14,1000,800),510=>array(22,-36,823,927),511=>array(38,-46,645,800),512=>array(5,0,769,928),513=>array(43,-14,596,800),514=>array(5,0,769,923),515=>array(43,-14,596,784),516=>array(92,0,610,928),517=>array(43,-14,630,800),518=>array(92,0,610,923),519=>array(43,-14,630,784),520=>array(-41,0,377,928),521=>array(-3,0,381,800),522=>array(23,0,351,923),523=>array(7,0,335,784),524=>array(50,-14,800,928),525=>array(43,-14,644,800),526=>array(50,-14,800,923),527=>array(43,-14,644,784),528=>array(92,0,750,928),529=>array(58,0,490,800),530=>array(92,0,750,923),531=>array(84,0,490,784),532=>array(92,-14,720,928),533=>array(78,-14,628,800),534=>array(92,-14,720,923),535=>array(78,-14,628,784),536=>array(72,-239,647,742),537=>array(52,-239,548,560),538=>array(5,-239,677,729),539=>array(13,-239,455,702),540=>array(67,-210,616,742),541=>array(49,-211,544,560),542=>array(92,0,745,927),543=>array(-12,0,634,927),544=>array(84,-208,730,742),545=>array(45,-75,822,760),546=>array(61,-14,748,742),547=>array(43,-14,616,646),548=>array(45,-216,680,729),549=>array(45,-216,534,547),550=>array(5,0,769,927),551=>array(43,-14,596,760),552=>array(92,-192,610,729),553=>array(43,-196,630,560),554=>array(50,-14,800,1040),555=>array(43,-14,644,914),556=>array(50,-14,800,1040),557=>array(43,-14,644,898),558=>array(50,-14,800,927),559=>array(43,-14,644,760),560=>array(50,-14,800,1042),561=>array(43,-14,644,914),562=>array(-10,0,734,914),563=>array(12,-216,634,763),564=>array(84,-75,449,760),565=>array(84,-75,824,560),566=>array(13,-76,469,702),567=>array(-33,-216,259,547),568=>array(45,-14,1043,760),569=>array(45,-208,1043,560),570=>array(-14,-36,788,765),571=>array(-34,-36,768,765),572=>array(-7,-46,600,594),573=>array(-1,0,610,729),574=>array(-60,-36,742,765),575=>array(52,-240,595,560),576=>array(45,-240,595,547),577=>array(40,0,741,729),578=>array(42,0,573,560),579=>array(6,0,692,729),580=>array(23,-14,789,729),581=>array(5,0,769,729),582=>array(92,-93,610,822),583=>array(43,-93,630,640),584=>array(-56,-200,360,729),585=>array(-33,-216,360,760),586=>array(48,-200,927,741),587=>array(45,-216,800,560),588=>array(6,0,750,729),589=>array(-21,0,490,560),590=>array(-10,0,734,729),591=>array(-4,-216,656,547),592=>array(78,-14,631,560),593=>array(45,-14,632,560),594=>array(84,-14,671,560),595=>array(84,-14,671,760),596=>array(43,-14,526,560),597=>array(43,-69,526,560),598=>array(45,-216,750,760),599=>array(45,-14,801,760),600=>array(43,-14,630,560),601=>array(43,-14,630,560),602=>array(59,-14,885,560),603=>array(54,-14,493,560),604=>array(54,-14,493,560),605=>array(54,-14,769,560),606=>array(54,-14,665,560),607=>array(-33,-216,360,547),608=>array(45,-216,801,760),609=>array(45,-216,632,547),610=>array(43,-14,545,546),611=>array(25,-211,619,547),612=>array(25,-21,619,547),613=>array(78,-214,628,547),614=>array(84,0,634,760),615=>array(84,-216,634,760),616=>array(84,0,461,760),617=>array(83,0,356,547),618=>array(84,0,461,547),619=>array(84,0,475,760),620=>array(84,0,609,760),621=>array(85,-216,429,760),622=>array(84,-215,793,760),623=>array(79,-14,959,546),624=>array(79,-209,959,546),625=>array(83,-216,964,560),626=>array(-33,-216,634,560),627=>array(84,-216,802,560),628=>array(84,0,623,547),629=>array(43,-14,644,560),630=>array(43,-1,826,547),631=>array(51,0,630,574),632=>array(60,-208,729,760),633=>array(84,-13,490,547),634=>array(84,-13,490,760),635=>array(84,-216,659,547),636=>array(84,-208,490,560),637=>array(83,-216,490,560),638=>array(84,0,530,547),639=>array(84,0,530,547),640=>array(52,0,590,547),641=>array(52,0,590,547),642=>array(52,-216,548,560),643=>array(-33,-216,431,760),644=>array(-11,-216,444,760),645=>array(84,-216,539,560),646=>array(-31,-217,561,760),647=>array(13,-155,455,547),648=>array(13,-216,455,702),649=>array(84,-14,836,547),650=>array(79,-14,693,547),651=>array(83,0,625,547),652=>array(15,0,637,547),653=>array(35,0,889,547),654=>array(12,0,634,763),655=>array(64,0,660,547),656=>array(45,-216,703,547),657=>array(45,-69,617,547),658=>array(43,-215,593,547),659=>array(57,-215,593,547),660=>array(36,0,525,759),661=>array(36,0,525,759),662=>array(36,0,525,759),663=>array(36,-208,525,759),664=>array(50,-14,800,742),665=>array(84,0,589,547),666=>array(54,-14,665,560),667=>array(43,0,693,760),668=>array(84,0,607,547),669=>array(-170,-216,341,760),670=>array(84,-213,684,547),671=>array(84,0,499,547),672=>array(45,-208,801,760),673=>array(36,0,525,759),674=>array(36,0,525,759),675=>array(45,-14,1108,760),676=>array(45,-215,1167,760),677=>array(45,-55,1107,760),678=>array(13,0,928,702),679=>array(13,-216,777,760),680=>array(13,-69,881,702),681=>array(19,-216,979,760),682=>array(84,0,815,760),683=>array(84,0,732,760),684=>array(22,0,569,641),685=>array(22,86,345,641),686=>array(-89,-214,629,760),687=>array(-89,-216,797,760),688=>array(54,326,406,751),689=>array(54,326,406,751),690=>array(-21,205,166,751),691=>array(54,326,314,640),692=>array(54,319,314,632),693=>array(54,205,421,632),694=>array(14,326,358,632),695=>array(22,326,569,632),696=>array(8,205,406,632),697=>array(78,557,218,800),698=>array(78,557,437,800),699=>array(103,418,318,729),700=>array(63,418,278,729),701=>array(124,616,296,856),702=>array(116,481,255,760),703=>array(116,481,255,760),704=>array(23,326,336,751),705=>array(23,326,336,751),706=>array(130,517,370,843),707=>array(130,517,370,843),708=>array(87,561,413,800),709=>array(87,561,413,800),710=>array(66,616,434,800),711=>array(66,616,434,800),712=>array(107,488,199,759),713=>array(96,668,404,760),714=>array(178,616,454,800),715=>array(46,616,322,800),716=>array(107,-81,199,190),717=>array(96,-184,404,-92),718=>array(46,-236,322,-52),719=>array(178,-236,454,-52),720=>array(45,0,246,547),721=>array(45,361,246,547),722=>array(116,269,255,547),723=>array(116,269,255,547),724=>array(138,238,357,458),725=>array(141,238,360,458),726=>array(54,119,362,427),727=>array(54,229,274,317),728=>array(86,639,414,784),729=>array(183,654,317,774),730=>array(111,610,389,888),731=>array(167,-196,376,0),732=>array(80,638,420,778),733=>array(94,616,479,800),734=>array(0,213,360,524),735=>array(111,616,387,800),736=>array(16,208,390,633),737=>array(54,326,166,751),738=>array(33,318,351,640),739=>array(10,326,403,632),740=>array(23,326,336,751),741=>array(96,0,404,693),742=>array(96,0,404,693),743=>array(96,0,404,693),744=>array(96,0,404,693),745=>array(96,0,404,693),748=>array(88,-260,414,-21),749=>array(96,605,404,822),750=>array(92,418,554,729),755=>array(111,-240,389,38),759=>array(80,-196,420,-84),768=>array(-455,616,-179,800),769=>array(-326,616,-50,800),770=>array(-435,616,-67,800),771=>array(-424,638,-84,778),772=>array(-405,668,-97,760),773=>array(-500,663,0,755),774=>array(-409,639,-81,784),775=>array(-338,617,-164,760),776=>array(-402,654,-94,774),777=>array(-370,616,-122,843),778=>array(-390,610,-112,888),779=>array(-404,616,-19,800),780=>array(-435,616,-67,800),781=>array(-297,615,-205,832),782=>array(-390,615,-113,832),783=>array(-484,616,-100,800),784=>array(-409,639,-81,882),785=>array(-409,639,-81,784),786=>array(-271,418,-69,563),787=>array(-266,595,-132,844),788=>array(-266,595,-132,844),789=>array(-89,616,89,800),790=>array(-455,-276,-179,-93),791=>array(-326,-276,-50,-93),792=>array(-380,-240,-211,-6),793=>array(-295,-240,-126,-6),794=>array(-224,658,47,929),795=>array(-175,400,21,609),796=>array(-331,-240,-216,-11),797=>array(-386,-240,-115,-59),798=>array(-389,-240,-118,-59),799=>array(-370,-240,-136,-6),800=>array(-389,-202,-118,-110),801=>array(-423,-216,-79,117),802=>array(-419,-216,-75,117),803=>array(-338,-212,-164,-70),804=>array(-402,-212,-94,-92),805=>array(-365,-240,-135,-11),806=>array(-327,-239,-125,-93),807=>array(-372,-196,-151,0),808=>array(-333,-196,-124,0),809=>array(-297,-240,-205,-47),810=>array(-405,-237,-97,-54),811=>array(-450,-239,-51,-94),812=>array(-435,-240,-67,-57),813=>array(-435,-240,-67,-57),814=>array(-409,-239,-81,-94),815=>array(-409,-240,-81,-95),816=>array(-424,-234,-84,-94),817=>array(-405,-184,-97,-92),818=>array(-500,-236,0,-143),819=>array(-500,-236,0,-9),820=>array(-625,212,1,415),821=>array(-471,214,-94,309),822=>array(-837,214,-86,309),823=>array(-655,-46,-48,594),824=>array(-825,-36,-24,765),825=>array(-285,-240,-170,-11),826=>array(-405,-238,-97,-55),827=>array(-332,-241,-98,-6),828=>array(-450,-239,-51,-94),829=>array(-379,585,-123,842),830=>array(-267,595,-127,867),831=>array(-500,528,0,755),832=>array(-455,616,-179,800),833=>array(-323,616,-47,800),834=>array(-421,638,-81,778),835=>array(-266,595,-132,844),836=>array(-404,654,-55,978),837=>array(-286,-208,-179,-45),838=>array(-403,639,-97,786),839=>array(-360,-226,-140,-35),840=>array(-379,-240,-121,-47),841=>array(-367,-240,-133,-21),842=>array(-420,616,-80,800),843=>array(-420,567,-80,850),844=>array(-420,573,-80,835),845=>array(-459,-230,-41,-30),846=>array(-357,-240,-143,-45),847=>array(-320,610,-179,888),849=>array(-320,610,-179,888),850=>array(-409,640,-81,882),851=>array(-367,-240,-135,-9),855=>array(-320,610,-179,888),856=>array(-120,654,14,774),858=>array(-445,-240,-58,-11),860=>array(-433,-237,458,-79),861=>array(-433,802,458,960),862=>array(-445,797,445,889),863=>array(-445,-185,445,-93),864=>array(-362,756,362,894),865=>array(-445,769,445,927),866=>array(-449,-230,454,-30),880=>array(92,0,606,729),881=>array(84,0,481,547),882=>array(92,0,930,729),883=>array(92,0,744,729),884=>array(78,557,218,800),885=>array(78,-208,218,35),886=>array(92,0,745,729),887=>array(84,0,617,547),890=>array(202,-208,333,-45),891=>array(43,-14,526,560),892=>array(43,-14,526,560),893=>array(43,-14,526,560),894=>array(63,-142,288,547),900=>array(169,616,445,800),901=>array(96,654,445,978),902=>array(26,0,792,800),903=>array(102,253,278,442),904=>array(-24,0,771,800),905=>array(-18,0,915,800),906=>array(-21,0,450,800),908=>array(-19,-14,836,800),910=>array(-27,0,992,800),911=>array(-30,0,867,800),912=>array(23,-19,372,978),913=>array(5,0,769,729),914=>array(92,0,692,729),915=>array(92,0,610,729),916=>array(5,0,769,729),917=>array(92,0,610,729),918=>array(45,0,680,729),919=>array(92,0,745,729),920=>array(50,-14,800,742),921=>array(92,0,280,729),922=>array(92,0,805,729),923=>array(5,0,769,729),924=>array(92,0,903,729),925=>array(92,0,745,729),926=>array(98,0,548,729),927=>array(50,-14,800,742),928=>array(92,0,745,729),929=>array(92,0,692,729),931=>array(92,0,610,729),932=>array(5,0,677,729),933=>array(-10,0,734,729),934=>array(50,0,800,729),935=>array(19,0,751,729),936=>array(56,0,795,729),937=>array(27,0,823,742),938=>array(34,0,342,927),939=>array(-10,0,734,927),940=>array(48,-13,645,800),941=>array(54,-14,493,800),942=>array(84,-208,634,800),943=>array(77,-19,353,800),944=>array(78,-10,629,978),945=>array(48,-13,645,559),946=>array(84,-208,671,773),947=>array(15,-208,667,547),948=>array(43,-14,645,768),949=>array(54,-14,493,560),950=>array(43,-208,542,760),951=>array(84,-208,634,560),952=>array(43,-11,645,768),953=>array(78,-19,348,547),954=>array(84,0,655,547),955=>array(30,0,603,760),956=>array(85,-209,704,547),957=>array(15,0,635,547),958=>array(43,-208,542,760),959=>array(43,-14,644,560),960=>array(42,-19,732,547),961=>array(84,-208,671,562),962=>array(43,-208,526,560),963=>array(43,-14,727,547),964=>array(21,-19,612,547),965=>array(78,-10,629,547),966=>array(64,-208,725,552),967=>array(25,-208,620,547),968=>array(65,-208,724,547),969=>array(43,-13,826,547),970=>array(19,-19,355,774),971=>array(78,-10,629,774),972=>array(43,-14,644,800),973=>array(78,-10,629,800),974=>array(43,-13,826,800),975=>array(92,-208,805,729),976=>array(55,-11,575,768),977=>array(51,-11,612,768),978=>array(21,0,717,729),979=>array(-24,0,954,800),980=>array(21,0,717,927),981=>array(60,-208,729,760),982=>array(22,-13,843,547),983=>array(54,-205,688,548),984=>array(50,-208,800,742),985=>array(43,-208,644,560),986=>array(50,-208,678,729),987=>array(43,-208,541,547),988=>array(92,0,599,729),989=>array(-56,-208,437,760),990=>array(61,2,646,729),991=>array(82,0,571,759),992=>array(56,-208,843,742),993=>array(22,-180,537,559),994=>array(50,-213,1043,729),995=>array(59,-208,775,547),996=>array(50,-208,740,742),997=>array(45,-208,632,560),998=>array(92,-213,878,729),999=>array(21,-14,689,575),1000=>array(42,-208,692,745),1001=>array(46,-208,608,560),1002=>array(53,0,736,742),1003=>array(49,0,622,560),1004=>array(50,-14,715,758),1005=>array(83,-14,670,758),1006=>array(28,-208,654,729),1007=>array(27,-208,563,729),1008=>array(54,-7,688,548),1009=>array(84,-216,671,562),1010=>array(43,-14,526,560),1011=>array(-33,-216,259,760),1012=>array(50,-14,800,742),1013=>array(67,-14,550,560),1014=>array(81,-14,563,560),1015=>array(92,0,692,729),1016=>array(84,-208,671,760),1017=>array(50,-14,670,742),1018=>array(92,0,903,729),1019=>array(73,-208,649,547),1020=>array(33,-208,671,562),1021=>array(33,-14,653,742),1022=>array(50,-14,670,742),1023=>array(33,-14,653,742),1024=>array(92,0,610,927),1025=>array(92,0,610,927),1026=>array(5,-200,798,729),1027=>array(92,0,610,928),1028=>array(50,-14,670,742),1029=>array(72,-14,647,742),1030=>array(92,0,280,729),1031=>array(32,0,339,927),1032=>array(-56,-200,280,729),1033=>array(46,0,1102,729),1034=>array(92,0,1060,729),1035=>array(5,0,798,729),1036=>array(92,0,803,928),1037=>array(92,0,745,927),1038=>array(29,0,741,927),1039=>array(92,-157,745,729),1040=>array(5,0,769,729),1041=>array(92,0,692,729),1042=>array(92,0,692,729),1043=>array(92,0,610,729),1044=>array(60,-157,831,729),1045=>array(92,0,610,729),1046=>array(15,0,1209,729),1047=>array(66,-14,645,742),1048=>array(92,0,745,729),1049=>array(92,0,745,927),1050=>array(92,0,803,729),1051=>array(46,0,739,729),1052=>array(92,0,903,729),1053=>array(92,0,745,729),1054=>array(50,-14,800,742),1055=>array(92,0,745,729),1056=>array(92,0,692,729),1057=>array(50,-14,670,742),1058=>array(5,0,677,729),1059=>array(29,0,741,729),1060=>array(50,0,941,729),1061=>array(19,0,751,729),1062=>array(92,-157,868,729),1063=>array(81,0,716,729),1064=>array(92,0,1143,729),1065=>array(92,-157,1266,729),1066=>array(49,0,890,729),1067=>array(92,0,944,729),1068=>array(92,0,692,729),1069=>array(64,-14,684,742),1070=>array(92,-14,1119,742),1071=>array(64,0,678,729),1072=>array(43,-14,596,560),1073=>array(43,-14,655,792),1074=>array(84,0,589,547),1075=>array(84,0,499,547),1076=>array(56,-138,751,547),1077=>array(43,-14,630,560),1078=>array(15,0,980,547),1079=>array(49,-14,518,560),1080=>array(84,0,617,547),1081=>array(84,0,617,765),1082=>array(84,0,664,547),1083=>array(55,0,648,547),1084=>array(84,0,733,547),1085=>array(84,0,607,547),1086=>array(43,-14,644,560),1087=>array(84,0,607,547),1088=>array(84,-208,671,560),1089=>array(43,-14,526,560),1090=>array(4,0,575,547),1091=>array(12,-216,634,547),1092=>array(55,-208,937,760),1093=>array(15,0,630,547),1094=>array(84,-138,698,547),1095=>array(64,0,573,547),1096=>array(84,0,972,547),1097=>array(84,-138,1063,547),1098=>array(20,0,711,547),1099=>array(84,0,823,547),1100=>array(84,0,588,547),1101=>array(67,-14,550,560),1102=>array(84,-14,928,560),1103=>array(31,0,560,547),1104=>array(43,-14,630,803),1105=>array(43,-14,630,774),1106=>array(20,-216,669,760),1107=>array(84,0,520,803),1108=>array(43,-14,526,560),1109=>array(52,-14,548,560),1110=>array(84,0,259,760),1111=>array(17,0,325,774),1112=>array(-33,-216,259,760),1113=>array(44,0,942,547),1114=>array(84,0,912,547),1115=>array(20,0,656,760),1116=>array(84,0,664,803),1117=>array(84,0,617,803),1118=>array(12,-216,634,765),1119=>array(84,-138,607,547),1120=>array(50,-14,1043,729),1121=>array(43,-13,826,547),1122=>array(49,0,791,729),1123=>array(20,0,692,731),1124=>array(92,-14,948,742),1125=>array(84,-14,760,560),1126=>array(8,0,984,729),1127=>array(25,0,807,547),1128=>array(92,0,1351,729),1129=>array(84,0,1097,547),1130=>array(50,0,800,729),1131=>array(43,0,644,547),1132=>array(92,0,1137,729),1133=>array(84,0,964,547),1134=>array(54,-208,616,938),1135=>array(40,-193,493,756),1136=>array(9,0,1060,729),1137=>array(9,-208,1046,759),1138=>array(50,-14,800,742),1139=>array(43,-14,644,560),1140=>array(5,0,826,742),1141=>array(9,0,681,560),1142=>array(5,0,826,928),1143=>array(9,0,681,800),1144=>array(47,-216,1130,742),1145=>array(43,-216,1025,560),1146=>array(50,-14,1024,742),1147=>array(43,-14,820,560),1148=>array(57,-14,1348,928),1149=>array(47,-13,1126,828),1150=>array(50,-14,1043,910),1151=>array(43,-13,826,746),1152=>array(50,-208,670,742),1153=>array(43,-208,526,560),1154=>array(27,-33,521,488),1155=>array(-601,606,-85,822),1156=>array(-413,638,0,784),1157=>array(-365,595,-231,785),1158=>array(-365,595,-231,785),1159=>array(-796,592,4,788),1160=>array(-1069,-179,383,928),1161=>array(-996,-280,306,1022),1162=>array(92,-208,933,927),1163=>array(84,-208,782,765),1164=>array(23,0,692,729),1165=>array(0,0,567,702),1166=>array(92,0,702,729),1167=>array(84,-208,671,560),1168=>array(92,0,610,878),1169=>array(84,0,499,700),1170=>array(28,0,638,729),1171=>array(21,0,519,547),1172=>array(92,-200,728,729),1173=>array(84,-216,591,547),1174=>array(15,-157,1209,729),1175=>array(15,-138,980,547),1176=>array(66,-196,645,742),1177=>array(49,-196,518,560),1178=>array(92,-157,803,729),1179=>array(84,-138,664,547),1180=>array(92,0,803,729),1181=>array(84,0,664,547),1182=>array(23,0,803,729),1183=>array(7,0,664,760),1184=>array(24,0,1000,729),1185=>array(20,0,812,547),1186=>array(92,-157,932,729),1187=>array(84,-138,783,547),1188=>array(92,0,1075,729),1189=>array(84,0,847,547),1190=>array(92,-200,1193,729),1191=>array(84,-216,939,547),1192=>array(56,-14,924,743),1193=>array(55,-14,836,560),1194=>array(50,-196,670,742),1195=>array(43,-196,526,560),1196=>array(5,-157,677,729),1197=>array(4,-138,575,547),1198=>array(-10,0,734,729),1199=>array(12,-216,634,547),1200=>array(-10,0,734,729),1201=>array(12,-216,634,547),1202=>array(19,-157,751,729),1203=>array(15,-138,630,547),1204=>array(5,-157,1088,729),1205=>array(4,-138,976,547),1206=>array(81,-157,904,729),1207=>array(64,-138,749,547),1208=>array(81,0,716,729),1209=>array(64,0,573,547),1210=>array(81,0,716,729),1211=>array(84,0,634,760),1212=>array(7,-14,976,742),1213=>array(5,-14,761,560),1214=>array(7,-184,976,742),1215=>array(5,-161,761,560),1216=>array(92,0,280,729),1217=>array(15,0,1209,927),1218=>array(15,0,980,784),1219=>array(92,-200,769,729),1220=>array(84,-216,626,547),1221=>array(26,-208,926,729),1222=>array(21,-208,781,547),1223=>array(92,-200,745,729),1224=>array(84,-216,608,547),1225=>array(92,-208,933,729),1226=>array(84,-208,782,547),1227=>array(81,-157,716,729),1228=>array(64,-138,573,547),1229=>array(92,-208,1090,729),1230=>array(84,-208,908,547),1231=>array(84,0,259,760),1232=>array(5,0,769,935),1233=>array(43,-14,596,780),1234=>array(5,0,769,927),1235=>array(43,-14,596,774),1236=>array(0,0,1012,729),1237=>array(43,-14,1000,560),1238=>array(92,0,610,927),1239=>array(43,-14,630,784),1240=>array(51,-14,800,742),1241=>array(43,-14,630,560),1242=>array(51,-14,800,927),1243=>array(43,-14,630,774),1244=>array(15,0,1209,927),1245=>array(15,0,980,774),1246=>array(66,-14,645,927),1247=>array(49,-14,518,773),1248=>array(72,-33,728,729),1249=>array(43,-215,593,547),1250=>array(92,0,745,914),1251=>array(84,0,617,763),1252=>array(92,0,745,927),1253=>array(84,0,617,774),1254=>array(50,-14,800,927),1255=>array(43,-14,644,774),1256=>array(50,-14,800,742),1257=>array(43,-14,644,560),1258=>array(50,-14,800,927),1259=>array(43,-14,644,774),1260=>array(64,-14,684,927),1261=>array(67,-14,550,774),1262=>array(29,0,741,914),1263=>array(12,-216,634,763),1264=>array(29,0,741,927),1265=>array(12,-216,634,774),1266=>array(29,0,741,927),1267=>array(12,-216,634,800),1268=>array(81,0,716,927),1269=>array(64,0,573,774),1270=>array(92,-157,610,729),1271=>array(84,-138,499,547),1272=>array(92,0,944,927),1273=>array(84,0,823,774),1274=>array(28,-216,638,729),1275=>array(21,-217,519,547),1276=>array(19,-200,750,729),1277=>array(15,-216,620,547),1278=>array(19,0,751,729),1279=>array(15,0,630,547),1280=>array(70,0,670,729),1281=>array(44,0,524,547),1282=>array(70,-14,1081,729),1283=>array(44,-14,850,547),1284=>array(98,-14,1027,742),1285=>array(79,-14,836,560),1286=>array(98,-208,804,742),1287=>array(79,-208,668,560),1288=>array(26,-14,1150,729),1289=>array(21,-14,933,547),1290=>array(92,-14,1186,729),1291=>array(84,-14,939,547),1292=>array(50,-14,748,742),1293=>array(43,-14,544,546),1294=>array(5,-14,846,729),1295=>array(4,-14,709,547),1296=>array(67,-14,616,742),1297=>array(54,-14,493,560),1298=>array(46,-200,739,729),1299=>array(55,-216,648,547),1300=>array(46,0,1266,729),1301=>array(55,0,1053,547),1302=>array(92,0,1045,729),1303=>array(84,-208,964,560),1304=>array(64,0,1008,729),1305=>array(31,-14,965,560),1306=>array(50,-146,800,742),1307=>array(45,-208,632,559),1308=>array(30,0,1072,729),1309=>array(35,0,889,547),1310=>array(92,0,803,729),1311=>array(84,0,664,547),1312=>array(46,-200,1187,729),1313=>array(55,-216,980,547),1314=>array(92,-200,1193,729),1315=>array(84,-216,939,547),1316=>array(92,-157,933,729),1317=>array(84,-138,782,547),1329=>array(83,-38,731,729),1330=>array(83,0,655,743),1331=>array(26,0,728,743),1332=>array(22,0,731,743),1333=>array(83,-14,655,729),1334=>array(66,0,664,743),1335=>array(83,0,625,729),1336=>array(83,0,655,743),1337=>array(83,-13,903,742),1338=>array(26,-14,728,729),1339=>array(83,0,648,729),1340=>array(83,0,549,729),1341=>array(83,-14,888,729),1342=>array(62,-12,722,741),1343=>array(74,0,639,729),1344=>array(4,-46,598,729),1345=>array(66,-48,664,743),1346=>array(18,0,715,743),1347=>array(22,0,660,735),1348=>array(83,-14,780,729),1349=>array(57,-14,645,743),1350=>array(0,-14,697,729),1351=>array(57,-14,655,729),1352=>array(83,0,648,743),1353=>array(40,-48,638,743),1354=>array(18,0,789,743),1355=>array(57,0,654,743),1356=>array(83,0,780,743),1357=>array(92,-14,720,729),1358=>array(18,0,715,729),1359=>array(53,-14,641,743),1360=>array(83,0,648,743),1361=>array(57,-14,645,743),1362=>array(83,0,567,729),1363=>array(22,0,811,729),1364=>array(9,0,645,743),1365=>array(49,-14,799,742),1366=>array(44,-14,833,729),1369=>array(104,481,230,760),1370=>array(57,418,250,729),1371=>array(0,616,310,800),1372=>array(0,595,375,893),1373=>array(-7,614,290,847),1374=>array(0,586,460,878),1375=>array(40,618,434,893),1377=>array(71,-13,863,547),1378=>array(76,-208,571,560),1379=>array(40,-208,700,559),1380=>array(76,-208,703,560),1381=>array(71,-14,567,760),1382=>array(40,-208,700,559),1383=>array(76,0,532,760),1384=>array(76,-208,579,560),1385=>array(76,-208,756,560),1386=>array(40,-14,700,760),1387=>array(76,-208,571,760),1388=>array(76,-208,410,547),1389=>array(76,-208,909,760),1390=>array(40,-14,600,760),1391=>array(71,-208,567,760),1392=>array(76,0,571,760),1393=>array(26,-13,536,760),1394=>array(76,-208,703,560),1395=>array(62,-13,570,768),1396=>array(71,-13,699,760),1397=>array(-30,-216,233,547),1398=>array(-61,-13,567,760),1399=>array(13,-208,456,560),1400=>array(76,0,571,560),1401=>array(5,-208,375,547),1402=>array(71,-208,863,546),1403=>array(44,-208,533,560),1404=>array(76,0,622,560),1405=>array(71,-13,567,547),1406=>array(71,-208,699,760),1407=>array(71,-13,863,560),1408=>array(76,-208,571,560),1409=>array(44,-216,631,559),1410=>array(76,0,475,547),1411=>array(71,-208,863,760),1412=>array(-56,-208,604,560),1413=>array(44,-14,645,560),1414=>array(31,-190,774,760),1415=>array(71,-14,808,760),1417=>array(101,0,259,547),1418=>array(49,180,325,359),1456=>array(296,-229,394,-10),1457=>array(147,-229,501,-10),1458=>array(138,-229,492,-10),1459=>array(125,-229,492,-10),1460=>array(296,-171,394,-73),1461=>array(223,-171,467,-73),1462=>array(235,-229,455,-10),1463=>array(174,-171,516,0),1464=>array(187,-217,504,0),1465=>array(-24,547,73,723),1466=>array(-24,547,73,723),1467=>array(187,-239,528,-5),1468=>array(301,225,399,322),1469=>array(296,-217,394,-22),1470=>array(54,413,361,555),1471=>array(187,547,504,710),1472=>array(98,-98,273,645),1473=>array(753,613,851,710),1474=>array(137,613,235,710),1475=>array(98,0,273,547),1478=>array(78,0,462,547),1479=>array(187,-229,504,-10),1488=>array(84,0,644,547),1489=>array(43,0,567,547),1490=>array(43,-9,418,547),1491=>array(43,0,545,547),1492=>array(91,0,596,547),1493=>array(91,0,252,547),1494=>array(43,0,357,547),1495=>array(91,0,596,547),1496=>array(90,-13,624,553),1497=>array(66,164,228,547),1498=>array(43,-240,487,547),1499=>array(43,0,511,547),1500=>array(43,0,527,711),1501=>array(91,0,605,547),1502=>array(43,0,633,554),1503=>array(91,-240,252,547),1504=>array(43,0,362,547),1505=>array(90,-13,624,547),1506=>array(43,-101,575,547),1507=>array(91,-240,584,547),1508=>array(91,0,603,547),1509=>array(11,-240,543,548),1510=>array(33,0,564,547),1511=>array(91,-240,660,546),1512=>array(43,0,511,547),1513=>array(20,0,750,547),1514=>array(10,-4,592,547),1520=>array(91,0,574,547),1521=>array(66,0,524,547),1522=>array(66,164,500,547),1523=>array(84,361,360,547),1524=>array(84,361,626,547),1542=>array(-2,-20,630,892),1543=>array(-2,-20,630,897),1545=>array(65,0,811,635),1546=>array(65,0,1084,635),1548=>array(98,0,322,331),1557=>array(121,612,379,868),1563=>array(98,0,323,689),1567=>array(69,0,515,742),1569=>array(73,20,437,493),1570=>array(-20,0,362,955),1571=>array(75,0,259,993),1572=>array(-42,-244,547,603),1573=>array(76,-245,259,760),1574=>array(63,-107,863,603),1575=>array(84,0,259,760),1576=>array(63,-149,921,327),1577=>array(48,-30,540,513),1578=>array(63,-5,921,415),1579=>array(63,-5,921,537),1580=>array(77,-244,720,425),1581=>array(77,-244,720,425),1582=>array(77,-244,720,579),1583=>array(61,-15,442,415),1584=>array(61,-15,442,579),1585=>array(-42,-244,508,269),1586=>array(-42,-244,508,457),1587=>array(63,-244,1297,366),1588=>array(63,-244,1297,586),1589=>array(63,-244,1265,362),1590=>array(63,-244,1265,457),1591=>array(70,0,971,760),1592=>array(70,0,971,760),1593=>array(87,-244,720,521),1594=>array(87,-244,720,652),1600=>array(-10,0,352,125),1601=>array(63,-24,1082,627),1602=>array(52,-215,825,635),1603=>array(70,-27,814,760),1604=>array(70,-142,778,760),1605=>array(68,-244,660,369),1606=>array(62,-165,779,457),1607=>array(48,-30,540,358),1608=>array(-42,-244,547,322),1609=>array(63,-107,863,462),1610=>array(63,-244,863,462),1611=>array(107,591,393,825),1612=>array(107,591,393,881),1613=>array(107,-239,393,-5),1614=>array(107,591,393,723),1615=>array(107,590,393,881),1616=>array(107,-137,393,-5),1617=>array(88,599,412,869),1618=>array(115,610,383,878),1619=>array(59,584,441,735),1620=>array(154,601,335,822),1621=>array(155,-245,336,-23),1623=>array(107,615,393,906),1626=>array(99,616,401,775),1632=>array(218,195,392,366),1633=>array(140,0,431,635),1634=>array(12,0,598,635),1635=>array(12,0,597,635),1636=>array(74,-10,530,646),1637=>array(63,-10,547,643),1638=>array(37,0,574,635),1639=>array(15,0,596,635),1640=>array(15,0,596,635),1641=>array(32,0,590,640),1642=>array(65,0,545,635),1643=>array(0,-118,349,318),1644=>array(63,418,278,729),1645=>array(42,101,502,537),1646=>array(63,-5,921,327),1647=>array(52,-215,825,484),1648=>array(216,600,284,885),1652=>array(51,641,232,863),1657=>array(63,-5,921,599),1658=>array(63,-5,921,566),1659=>array(63,-244,921,327),1660=>array(63,-171,921,415),1661=>array(63,-5,921,566),1662=>array(63,-244,921,327),1663=>array(63,-5,921,566),1664=>array(63,-244,921,327),1665=>array(77,-244,720,725),1666=>array(77,-244,720,737),1667=>array(77,-244,720,425),1668=>array(77,-244,720,425),1669=>array(77,-244,720,737),1670=>array(77,-244,720,425),1671=>array(77,-244,720,425),1672=>array(61,-15,442,746),1673=>array(61,-180,442,415),1674=>array(61,-171,442,415),1675=>array(61,-171,442,746),1676=>array(61,-15,442,586),1677=>array(61,-146,442,415),1678=>array(61,-15,442,708),1679=>array(61,-15,442,684),1680=>array(61,-15,442,708),1681=>array(-42,-244,520,648),1682=>array(-42,-244,542,556),1683=>array(-42,-244,587,269),1684=>array(-42,-244,522,269),1685=>array(-42,-244,753,269),1686=>array(-42,-244,522,269),1687=>array(-42,-244,508,464),1688=>array(-42,-244,508,586),1689=>array(-42,-244,508,586),1690=>array(63,-244,1297,464),1691=>array(63,-244,1297,366),1692=>array(63,-244,1297,586),1693=>array(63,-244,1265,362),1694=>array(63,-244,1265,586),1695=>array(70,0,971,760),1696=>array(87,-244,720,781),1697=>array(63,-24,1082,484),1698=>array(63,-171,1082,484),1699=>array(63,-171,1082,635),1700=>array(63,-24,1082,786),1701=>array(63,-293,1082,484),1702=>array(63,-24,1082,786),1703=>array(52,-215,825,635),1704=>array(52,-215,825,757),1705=>array(63,-39,1024,760),1706=>array(63,-39,1194,760),1707=>array(63,-39,1024,760),1708=>array(70,-27,814,760),1709=>array(70,-27,814,854),1710=>array(70,-293,814,760),1711=>array(63,-39,1024,910),1712=>array(63,-39,1024,910),1713=>array(63,-39,1024,910),1714=>array(63,-171,1024,910),1715=>array(63,-293,1024,910),1716=>array(63,-39,1024,1025),1717=>array(70,-142,841,971),1718=>array(70,-142,778,952),1719=>array(70,-142,781,1025),1720=>array(70,-391,778,760),1721=>array(62,-317,779,464),1722=>array(62,-165,779,366),1723=>array(62,-165,779,636),1724=>array(62,-330,779,464),1725=>array(62,-165,779,586),1726=>array(70,-33,877,506),1727=>array(77,-244,720,579),1734=>array(-42,-244,547,556),1740=>array(63,-107,863,462),1742=>array(63,-107,863,556),1749=>array(48,-30,540,358),1776=>array(218,195,392,366),1777=>array(140,0,431,635),1778=>array(12,0,598,635),1779=>array(12,0,597,635),1780=>array(12,0,573,650),1781=>array(30,-8,580,643),1782=>array(85,0,514,645),1783=>array(15,0,596,635),1784=>array(15,0,596,635),1785=>array(32,0,590,640),1984=>array(48,-14,648,742),1985=>array(69,0,583,729),1986=>array(80,0,616,729),1987=>array(80,0,616,729),1988=>array(80,0,616,729),1989=>array(80,0,616,729),1990=>array(80,0,616,729),1991=>array(98,0,599,729),1992=>array(98,0,599,729),1993=>array(70,0,625,742),1994=>array(84,0,259,729),1995=>array(43,-14,504,465),1996=>array(15,0,529,729),1997=>array(15,0,637,451),1998=>array(84,0,607,451),1999=>array(84,0,607,451),2000=>array(46,0,548,742),2001=>array(84,0,607,667),2002=>array(43,0,820,742),2003=>array(84,0,467,729),2004=>array(84,0,467,729),2005=>array(84,0,584,729),2006=>array(84,0,604,729),2007=>array(15,0,360,729),2008=>array(84,0,938,532),2009=>array(15,0,491,729),2010=>array(15,0,811,729),2011=>array(84,0,607,451),2012=>array(15,0,637,729),2013=>array(84,0,869,729),2014=>array(84,0,543,729),2015=>array(43,0,692,729),2016=>array(15,0,491,729),2017=>array(15,0,637,729),2018=>array(43,0,531,729),2019=>array(84,0,543,729),2020=>array(84,0,543,581),2021=>array(84,0,543,729),2022=>array(43,0,531,729),2023=>array(43,0,531,729),2027=>array(95,668,403,760),2028=>array(63,638,438,777),2029=>array(185,654,319,774),2030=>array(65,616,433,800),2031=>array(33,616,438,803),2032=>array(63,638,438,777),2033=>array(33,616,438,803),2034=>array(183,-212,317,-92),2035=>array(96,654,404,774),2036=>array(63,418,278,729),2037=>array(103,418,318,729),2040=>array(84,0,607,562),2041=>array(84,0,607,564),2042=>array(-10,0,425,125),3647=>array(62,-147,638,760),3713=>array(43,-14,706,560),3714=>array(43,-14,723,560),3716=>array(43,-14,704,560),3719=>array(21,-241,521,561),3720=>array(42,0,705,560),3722=>array(40,-269,768,560),3725=>array(40,-24,713,610),3732=>array(42,-14,647,560),3733=>array(42,-19,647,561),3734=>array(-22,-240,684,560),3735=>array(20,-14,768,560),3737=>array(37,-15,681,560),3738=>array(38,-15,664,561),3739=>array(38,-15,664,760),3740=>array(60,-12,910,626),3741=>array(64,-14,762,760),3742=>array(76,-14,773,560),3743=>array(76,-14,773,760),3745=>array(24,-14,771,547),3746=>array(40,-23,713,760),3747=>array(48,-10,733,615),3749=>array(41,-33,693,560),3751=>array(33,-33,640,561),3754=>array(51,-21,819,724),3755=>array(44,-21,935,620),3757=>array(53,-20,662,606),3758=>array(48,-14,825,698),3759=>array(43,-259,897,648),3760=>array(36,-16,658,567),3761=>array(-653,610,-31,896),3762=>array(39,0,563,593),3763=>array(-479,0,563,875),3764=>array(-654,622,-62,950),3765=>array(-654,633,13,962),3766=>array(-654,622,-62,950),3767=>array(-654,633,13,962),3768=>array(-426,-385,-165,-55),3769=>array(-473,-316,-174,-28),3771=>array(-653,610,-31,896),3772=>array(-682,-311,15,-48),3773=>array(39,-220,691,776),3776=>array(83,-13,444,561),3777=>array(83,-13,818,561),3778=>array(-37,-14,458,936),3779=>array(23,-14,595,879),3780=>array(-15,-35,585,809),3782=>array(70,-240,688,582),3784=>array(-413,659,-297,844),3785=>array(-627,622,-22,918),3786=>array(-667,621,39,965),3787=>array(-521,612,-187,917),3788=>array(-682,603,15,866),3789=>array(-479,668,-229,875),3792=>array(66,-29,723,563),3793=>array(25,-139,721,586),3794=>array(31,-80,603,711),3795=>array(24,-14,882,981),3796=>array(48,-156,696,711),3797=>array(48,-156,696,711),3798=>array(64,-14,894,950),3799=>array(43,-240,706,560),3800=>array(72,-269,774,582),3801=>array(58,-14,858,564),3804=>array(44,-21,1301,620),3805=>array(44,-21,1305,620),4256=>array(47,-14,827,819),4257=>array(39,-0,719,819),4258=>array(37,-138,667,828),4259=>array(41,-15,793,819),4260=>array(29,0,572,828),4261=>array(24,0,729,828),4262=>array(15,-14,709,819),4263=>array(49,-14,890,828),4264=>array(4,0,415,862),4265=>array(39,0,581,819),4266=>array(18,-14,796,820),4267=>array(48,-14,837,819),4268=>array(43,0,586,819),4269=>array(37,-157,817,829),4270=>array(11,-14,731,822),4271=>array(20,0,585,823),4272=>array(43,-15,863,820),4273=>array(43,-15,587,820),4274=>array(43,-0,586,828),4275=>array(37,-170,817,828),4276=>array(37,0,828,825),4277=>array(28,0,695,820),4278=>array(44,0,586,828),4279=>array(34,0,577,820),4280=>array(39,-14,582,820),4281=>array(43,0,586,819),4282=>array(45,-14,778,827),4283=>array(46,-15,822,820),4284=>array(43,-0,586,819),4285=>array(29,-15,594,828),4286=>array(43,-0,586,819),4287=>array(15,0,726,819),4288=>array(18,-14,796,820),4289=>array(43,0,586,820),4290=>array(37,-15,652,828),4291=>array(9,0,552,820),4292=>array(33,0,561,820),4293=>array(24,-14,714,828),4304=>array(49,-14,505,599),4305=>array(49,-14,515,823),4306=>array(44,-232,578,561),4307=>array(49,-225,786,557),4308=>array(49,-232,496,557),4309=>array(49,-232,505,557),4310=>array(25,-14,502,828),4311=>array(49,-14,779,557),4312=>array(49,0,515,557),4313=>array(49,-232,506,542),4314=>array(49,-225,1025,562),4315=>array(49,-14,505,828),4316=>array(63,-14,520,819),4317=>array(49,-0,765,557),4318=>array(49,-14,505,818),4319=>array(49,-232,504,560),4320=>array(49,0,774,830),4321=>array(63,-14,520,818),4322=>array(49,-232,651,670),4323=>array(29,-232,533,604),4324=>array(49,-232,792,558),4325=>array(49,-232,496,818),4326=>array(49,-225,766,557),4327=>array(49,-232,505,549),4328=>array(20,-14,489,828),4329=>array(63,0,520,828),4330=>array(49,-232,573,548),4331=>array(49,-14,504,818),4332=>array(64,-15,534,828),4333=>array(49,-232,517,818),4334=>array(63,-14,520,818),4335=>array(24,-232,516,580),4336=>array(49,-15,505,823),4337=>array(49,-14,505,823),4338=>array(49,-146,504,557),4339=>array(49,-232,505,558),4340=>array(49,-232,504,828),4341=>array(49,-14,558,828),4342=>array(49,-232,803,557),4343=>array(49,-232,556,557),4344=>array(49,-232,505,549),4345=>array(44,-232,578,561),4346=>array(49,-111,505,557),4347=>array(49,0,399,500),4348=>array(24,400,294,828),5121=>array(5,0,769,729),5122=>array(5,0,769,1056),5123=>array(5,0,769,729),5124=>array(5,0,769,928),5125=>array(92,0,821,729),5126=>array(92,0,821,928),5127=>array(92,0,821,927),5129=>array(92,0,821,729),5130=>array(84,0,813,729),5131=>array(84,0,813,928),5132=>array(92,0,1013,729),5133=>array(5,0,925,729),5134=>array(92,0,1013,729),5135=>array(5,0,925,729),5136=>array(92,0,1013,928),5137=>array(5,0,925,928),5138=>array(92,0,1065,729),5139=>array(92,0,1056,729),5140=>array(92,0,1065,928),5141=>array(92,0,1056,928),5142=>array(92,0,821,928),5143=>array(92,0,1057,729),5144=>array(84,0,1058,729),5145=>array(92,0,1057,928),5146=>array(84,0,1058,928),5147=>array(84,0,813,928),5149=>array(92,607,226,728),5150=>array(60,326,473,734),5151=>array(31,338,379,722),5152=>array(31,338,379,722),5153=>array(60,392,338,711),5154=>array(60,352,338,670),5155=>array(60,392,338,670),5156=>array(60,392,338,670),5157=>array(31,327,518,749),5158=>array(60,326,414,734),5159=>array(92,304,226,424),5160=>array(60,494,338,569),5161=>array(60,392,338,670),5162=>array(60,392,338,693),5163=>array(5,0,1167,729),5164=>array(5,0,940,729),5165=>array(92,0,1170,729),5166=>array(84,0,1251,729),5167=>array(5,0,769,729),5168=>array(5,0,769,1056),5169=>array(5,0,769,729),5170=>array(5,0,769,928),5171=>array(73,0,802,729),5172=>array(73,0,802,928),5173=>array(73,0,802,927),5175=>array(73,0,802,729),5176=>array(73,0,802,729),5177=>array(73,0,802,928),5178=>array(92,0,1013,729),5179=>array(5,0,925,729),5180=>array(92,0,1013,729),5181=>array(5,0,925,729),5182=>array(92,0,1013,928),5183=>array(5,0,925,928),5184=>array(92,0,1046,729),5185=>array(73,0,1056,729),5186=>array(92,0,1046,928),5187=>array(73,0,1056,928),5188=>array(92,0,1046,729),5189=>array(73,0,1058,729),5190=>array(92,0,1046,928),5191=>array(73,0,1058,928),5192=>array(73,0,802,927),5193=>array(60,326,520,727),5194=>array(60,326,172,734),5196=>array(92,-14,720,729),5197=>array(92,0,720,1056),5198=>array(92,0,720,743),5199=>array(92,0,720,928),5200=>array(73,0,759,729),5201=>array(73,0,759,928),5202=>array(73,0,759,927),5204=>array(73,0,759,729),5205=>array(56,0,742,729),5206=>array(56,0,742,928),5207=>array(92,-14,964,729),5208=>array(92,-14,964,729),5209=>array(92,0,964,743),5210=>array(92,0,964,743),5211=>array(92,0,964,928),5212=>array(92,0,964,928),5213=>array(92,0,1003,729),5214=>array(73,0,970,729),5215=>array(92,0,1003,928),5216=>array(73,0,970,928),5217=>array(92,0,986,729),5218=>array(56,0,968,729),5219=>array(92,0,986,928),5220=>array(56,0,968,928),5221=>array(92,0,986,729),5222=>array(60,326,427,733),5223=>array(92,-14,949,734),5224=>array(92,0,949,743),5225=>array(73,0,967,734),5226=>array(56,0,960,734),5227=>array(41,0,651,743),5228=>array(92,0,702,1056),5229=>array(92,0,702,743),5230=>array(92,0,702,928),5231=>array(41,-14,651,729),5232=>array(41,-14,651,928),5233=>array(41,-14,708,927),5234=>array(92,-14,702,729),5235=>array(92,-14,702,928),5236=>array(92,0,937,743),5237=>array(41,0,891,743),5238=>array(92,0,939,743),5239=>array(92,0,891,743),5240=>array(92,0,939,928),5241=>array(92,0,891,928),5242=>array(92,-14,937,729),5243=>array(41,-14,891,729),5244=>array(92,-14,937,928),5245=>array(41,-14,891,928),5246=>array(92,-14,939,729),5247=>array(92,-14,891,729),5248=>array(92,-14,939,928),5249=>array(92,-14,891,928),5250=>array(92,-14,939,729),5251=>array(60,319,445,734),5252=>array(60,319,445,734),5253=>array(41,0,881,743),5254=>array(92,0,881,743),5255=>array(41,-14,881,734),5256=>array(92,-14,881,734),5257=>array(41,0,651,743),5258=>array(92,0,702,1056),5259=>array(92,0,702,743),5260=>array(92,0,702,928),5261=>array(41,-14,651,729),5262=>array(41,-14,651,928),5263=>array(41,-14,714,927),5264=>array(92,-14,702,729),5265=>array(92,-14,702,928),5266=>array(92,0,937,743),5267=>array(41,0,891,743),5268=>array(92,0,988,743),5269=>array(92,0,891,743),5270=>array(92,0,988,928),5271=>array(92,0,891,928),5272=>array(92,-14,937,729),5273=>array(41,-14,891,729),5274=>array(92,-14,937,928),5275=>array(41,-14,891,928),5276=>array(92,-14,988,729),5277=>array(92,-14,891,729),5278=>array(92,-14,988,928),5279=>array(92,-14,891,928),5280=>array(92,-14,988,729),5281=>array(60,319,445,734),5282=>array(60,319,445,734),5283=>array(27,0,535,729),5284=>array(92,0,599,1056),5285=>array(92,0,599,729),5286=>array(92,0,599,928),5287=>array(27,0,535,729),5288=>array(27,0,535,928),5289=>array(27,0,598,927),5290=>array(92,0,599,729),5291=>array(92,0,599,928),5292=>array(92,0,790,729),5293=>array(27,0,771,729),5294=>array(92,0,836,729),5295=>array(92,0,790,729),5296=>array(92,0,836,928),5297=>array(92,0,790,928),5298=>array(92,0,790,729),5299=>array(27,0,790,729),5300=>array(92,0,790,928),5301=>array(27,0,790,928),5302=>array(92,0,836,729),5303=>array(92,0,790,729),5304=>array(92,0,836,928),5305=>array(92,0,790,928),5306=>array(92,0,836,729),5307=>array(60,326,380,734),5308=>array(60,326,492,733),5309=>array(60,326,380,734),5312=>array(84,-14,947,468),5313=>array(41,-14,904,786),5314=>array(41,-14,904,468),5315=>array(41,-14,904,667),5316=>array(27,0,890,482),5317=>array(27,0,890,667),5318=>array(27,0,890,667),5319=>array(41,0,904,482),5320=>array(41,0,904,667),5321=>array(92,-14,1197,468),5322=>array(84,-14,1163,468),5323=>array(92,0,1172,482),5324=>array(41,0,1144,482),5325=>array(92,0,1172,667),5326=>array(41,0,1144,667),5327=>array(41,0,904,667),5328=>array(60,477,604,742),5329=>array(60,319,440,734),5330=>array(60,477,604,742),5331=>array(84,0,947,468),5332=>array(41,0,904,786),5333=>array(41,0,904,468),5334=>array(41,0,904,667),5335=>array(27,0,890,468),5336=>array(27,0,890,667),5337=>array(27,0,890,667),5338=>array(41,0,904,468),5339=>array(41,0,904,667),5340=>array(92,0,1190,468),5341=>array(84,0,1163,468),5342=>array(92,0,1199,468),5343=>array(41,0,1144,468),5344=>array(92,0,1199,667),5345=>array(41,0,1144,667),5346=>array(92,0,1187,468),5347=>array(27,0,1130,468),5348=>array(92,0,1187,667),5349=>array(27,0,1130,667),5350=>array(92,0,1199,468),5351=>array(41,0,1144,468),5352=>array(92,0,1199,667),5353=>array(41,0,1144,667),5354=>array(60,477,604,734),5356=>array(73,0,802,729),5357=>array(41,0,638,729),5358=>array(92,0,736,1056),5359=>array(92,0,689,729),5360=>array(92,0,689,928),5361=>array(41,0,638,729),5362=>array(41,0,638,928),5363=>array(41,0,694,927),5364=>array(92,0,689,729),5365=>array(92,0,689,928),5366=>array(92,0,906,729),5367=>array(41,0,875,729),5368=>array(92,0,926,729),5369=>array(92,0,905,729),5370=>array(92,0,926,928),5371=>array(92,0,905,928),5372=>array(92,0,906,729),5373=>array(41,0,875,729),5374=>array(92,0,906,928),5375=>array(41,0,875,928),5376=>array(92,0,926,729),5377=>array(92,0,905,729),5378=>array(92,0,926,928),5379=>array(92,0,905,928),5380=>array(92,0,926,729),5381=>array(60,326,437,734),5382=>array(60,319,404,742),5383=>array(60,326,437,734),5392=>array(41,-14,882,743),5393=>array(41,-14,882,743),5394=>array(41,-14,882,928),5395=>array(41,-14,1095,482),5396=>array(41,-14,1095,667),5397=>array(41,-14,1095,482),5398=>array(41,-14,1095,667),5399=>array(92,-14,1168,743),5400=>array(41,-14,1118,743),5401=>array(92,-14,1168,743),5402=>array(41,-14,1118,743),5403=>array(92,-14,1168,928),5404=>array(41,-14,1118,928),5405=>array(92,-14,1390,482),5406=>array(41,-14,1336,482),5407=>array(92,-14,1390,667),5408=>array(41,-14,1336,667),5409=>array(92,-14,1390,482),5410=>array(41,-14,1336,482),5411=>array(92,-14,1390,667),5412=>array(41,-14,1336,667),5413=>array(60,469,690,747),5414=>array(84,0,684,729),5415=>array(92,0,692,1056),5416=>array(92,0,692,729),5417=>array(92,0,692,928),5418=>array(84,0,684,729),5419=>array(84,0,684,928),5420=>array(84,0,750,927),5421=>array(92,0,692,729),5422=>array(92,0,692,928),5423=>array(92,0,911,729),5424=>array(84,0,919,729),5425=>array(92,0,929,729),5426=>array(92,0,912,729),5427=>array(92,0,929,928),5428=>array(92,0,912,928),5429=>array(92,0,911,729),5430=>array(84,0,919,729),5431=>array(92,0,911,928),5432=>array(84,0,919,928),5433=>array(92,0,929,729),5434=>array(92,0,912,729),5435=>array(92,0,929,928),5436=>array(92,0,912,928),5437=>array(92,0,929,928),5438=>array(60,326,438,734),5440=>array(60,392,338,670),5441=>array(60,326,454,734),5442=>array(92,-14,949,468),5443=>array(84,-14,941,468),5444=>array(27,0,884,482),5445=>array(92,0,949,786),5446=>array(92,0,949,482),5447=>array(92,0,949,667),5448=>array(92,0,692,729),5449=>array(92,0,692,928),5450=>array(92,0,692,729),5451=>array(41,0,641,729),5452=>array(41,0,641,928),5453=>array(41,0,641,729),5454=>array(92,0,911,928),5455=>array(41,0,875,928),5456=>array(60,326,438,727),5458=>array(73,0,802,729),5459=>array(51,0,769,743),5460=>array(51,-14,769,1056),5461=>array(51,-14,769,729),5462=>array(51,-14,769,928),5463=>array(73,0,844,663),5464=>array(73,0,844,928),5465=>array(84,0,855,663),5466=>array(84,0,855,928),5467=>array(92,0,1099,928),5468=>array(84,0,1058,928),5469=>array(60,311,546,675),5470=>array(92,-14,720,743),5471=>array(92,-14,720,743),5472=>array(92,-14,720,743),5473=>array(92,-14,720,743),5474=>array(92,-14,720,928),5475=>array(92,-14,720,928),5476=>array(54,0,759,729),5477=>array(54,0,759,928),5478=>array(56,0,762,729),5479=>array(56,0,762,928),5480=>array(92,0,1006,928),5481=>array(56,0,968,928),5482=>array(60,326,512,733),5492=>array(41,0,893,743),5493=>array(84,0,936,743),5494=>array(84,0,936,928),5495=>array(41,-14,893,729),5496=>array(41,-14,893,928),5497=>array(84,-14,936,729),5498=>array(84,-14,936,928),5499=>array(60,319,562,734),5500=>array(92,0,745,729),5501=>array(60,326,454,734),5502=>array(60,0,1197,1056),5503=>array(60,0,1197,743),5504=>array(60,0,1197,928),5505=>array(60,-14,1146,729),5506=>array(60,-14,1146,928),5507=>array(60,-14,1197,729),5508=>array(60,-14,1197,928),5509=>array(60,319,939,734),5514=>array(41,0,893,743),5515=>array(84,0,936,743),5516=>array(41,-14,893,729),5517=>array(84,-14,936,729),5518=>array(60,0,1550,1056),5519=>array(60,0,1550,743),5520=>array(60,0,1550,928),5521=>array(60,-14,1203,741),5522=>array(60,-14,1203,928),5523=>array(60,-14,1550,741),5524=>array(60,-14,1550,928),5525=>array(60,335,792,741),5526=>array(60,335,1217,741),5536=>array(41,0,904,709),5537=>array(41,0,904,709),5538=>array(27,-242,890,468),5539=>array(27,-242,890,667),5540=>array(41,-242,904,468),5541=>array(41,-242,904,667),5542=>array(60,344,604,734),5543=>array(84,0,771,729),5544=>array(5,0,692,729),5545=>array(5,0,692,928),5546=>array(84,0,771,729),5547=>array(84,0,771,928),5548=>array(5,0,692,729),5549=>array(5,0,692,928),5550=>array(15,326,438,734),5551=>array(92,-14,702,729),5598=>array(92,0,778,729),5601=>array(52,0,738,729),5702=>array(60,326,439,734),5703=>array(60,240,439,820),5742=>array(10,0,403,306),5743=>array(60,0,1146,743),5744=>array(60,0,1499,743),5745=>array(60,0,1975,743),5746=>array(60,0,1975,928),5747=>array(60,-14,1628,741),5748=>array(60,-14,1586,928),5749=>array(60,-14,1975,741),5750=>array(60,-14,1975,928),5760=>array(-10,219,553,354),5761=>array(-10,-125,646,354),5762=>array(-10,-125,955,354),5763=>array(-10,-125,1264,354),5764=>array(-10,-125,1572,354),5765=>array(-10,-125,1881,354),5766=>array(-10,219,637,697),5767=>array(-10,219,945,697),5768=>array(-10,219,1264,697),5769=>array(-10,219,1569,697),5770=>array(-10,219,1881,697),5771=>array(-10,-125,579,697),5772=>array(-10,-125,888,697),5773=>array(-10,-125,1198,697),5774=>array(-10,-125,1507,697),5775=>array(-10,-125,1817,697),5776=>array(-10,41,646,532),5777=>array(-10,41,955,532),5778=>array(-10,41,1264,532),5779=>array(-10,41,1572,532),5780=>array(-10,41,1881,532),5781=>array(-10,-125,579,697),5782=>array(-10,-125,948,697),5783=>array(-10,-109,798,354),5784=>array(-10,-254,1244,354),5785=>array(-10,219,1569,928),5786=>array(-10,14,750,354),5787=>array(55,-49,648,622),5788=>array(-10,-49,583,622),7424=>array(15,0,637,547),7425=>array(0,0,755,547),7426=>array(43,-14,1000,560),7427=>array(20,0,564,547),7428=>array(43,-14,526,560),7429=>array(84,-1,611,547),7430=>array(20,-1,611,547),7431=>array(92,0,480,547),7432=>array(54,-14,493,560),7433=>array(84,-213,259,547),7434=>array(44,-14,416,547),7435=>array(84,0,684,547),7436=>array(-18,0,499,547),7437=>array(84,0,733,547),7438=>array(84,0,617,547),7439=>array(43,-14,644,560),7440=>array(43,-14,526,560),7441=>array(43,-27,617,573),7442=>array(43,31,617,515),7443=>array(13,-28,653,579),7444=>array(43,-14,1046,560),7446=>array(43,273,644,560),7447=>array(44,-14,646,273),7448=>array(51,0,515,547),7449=>array(21,0,560,547),7450=>array(21,0,560,547),7451=>array(4,0,575,547),7452=>array(84,-14,607,547),7453=>array(85,10,646,560),7454=>array(69,10,857,561),7455=>array(19,-238,651,560),7456=>array(15,0,637,547),7457=>array(35,0,889,547),7458=>array(45,0,534,547),7459=>array(57,-14,581,547),7462=>array(84,0,499,547),7463=>array(15,0,637,547),7464=>array(84,0,607,547),7465=>array(51,0,515,547),7466=>array(84,0,698,547),7467=>array(55,0,648,547),7468=>array(3,326,484,734),7469=>array(0,326,638,734),7470=>array(58,326,436,734),7472=>array(58,326,490,734),7473=>array(58,326,384,734),7474=>array(58,326,384,734),7475=>array(31,318,471,742),7476=>array(58,326,469,734),7477=>array(58,326,176,734),7478=>array(-35,214,176,734),7479=>array(58,326,507,734),7480=>array(58,326,384,734),7481=>array(58,326,569,734),7482=>array(58,326,469,734),7483=>array(58,326,469,734),7484=>array(31,318,504,742),7485=>array(39,318,471,742),7486=>array(58,326,436,734),7487=>array(58,326,473,734),7488=>array(3,326,426,734),7489=>array(58,318,454,734),7490=>array(19,326,675,734),7491=>array(53,318,402,640),7492=>array(53,318,402,640),7493=>array(53,318,423,640),7494=>array(53,318,656,640),7495=>array(53,318,423,751),7496=>array(53,318,423,751),7497=>array(53,318,423,640),7498=>array(53,318,423,640),7499=>array(53,318,330,640),7500=>array(53,318,330,640),7501=>array(53,205,423,639),7502=>array(53,207,164,632),7503=>array(53,326,431,751),7504=>array(53,326,607,640),7505=>array(53,205,399,640),7506=>array(53,318,432,640),7507=>array(53,318,357,640),7508=>array(53,479,432,640),7509=>array(53,318,432,479),7510=>array(53,209,423,640),7511=>array(53,326,332,719),7512=>array(53,318,399,632),7513=>array(53,332,407,640),7514=>array(53,318,607,632),7515=>array(53,326,445,632),7517=>array(53,209,423,759),7518=>array(10,209,420,632),7519=>array(27,318,406,756),7520=>array(41,209,457,635),7521=>array(16,209,391,632),7522=>array(53,0,164,425),7523=>array(54,0,314,313),7524=>array(53,-8,399,306),7525=>array(53,0,445,306),7526=>array(53,-117,423,433),7527=>array(10,-117,420,306),7528=>array(53,-117,423,314),7529=>array(41,-117,457,309),7530=>array(16,-117,391,306),7543=>array(84,-216,671,559),7544=>array(58,326,469,734),7547=>array(84,0,461,547),7549=>array(5,-208,742,560),7557=>array(84,-216,434,760),7579=>array(53,318,423,640),7580=>array(53,318,357,640),7581=>array(53,288,357,640),7582=>array(53,318,432,751),7583=>array(53,318,330,640),7584=>array(53,326,321,751),7585=>array(53,205,292,632),7586=>array(53,205,423,632),7587=>array(53,207,399,632),7588=>array(53,326,291,751),7589=>array(53,326,226,632),7590=>array(53,326,291,632),7591=>array(53,326,291,632),7592=>array(53,205,375,751),7593=>array(53,205,270,751),7594=>array(53,205,274,751),7595=>array(53,326,314,632),7596=>array(53,205,608,640),7597=>array(53,209,607,632),7598=>array(53,205,506,640),7599=>array(53,205,505,640),7600=>array(53,326,393,632),7601=>array(53,318,432,640),7602=>array(53,209,486,751),7603=>array(53,205,366,640),7604=>array(53,205,340,751),7605=>array(53,205,332,719),7606=>array(53,318,527,632),7607=>array(53,298,438,632),7608=>array(53,318,383,632),7609=>array(53,326,395,632),7610=>array(53,326,445,632),7611=>array(53,326,361,632),7612=>array(53,205,468,632),7613=>array(53,288,414,632),7614=>array(53,206,399,632),7615=>array(53,320,370,756),7620=>array(-467,616,-35,800),7621=>array(-467,616,-35,800),7622=>array(-467,616,-35,800),7623=>array(-467,616,-35,800),7624=>array(-513,616,11,800),7625=>array(-513,616,11,800),7680=>array(5,-240,769,729),7681=>array(43,-240,596,560),7682=>array(92,0,692,928),7683=>array(84,-14,671,913),7684=>array(92,-212,692,729),7685=>array(84,-212,671,760),7686=>array(92,-184,692,729),7687=>array(84,-184,671,760),7688=>array(50,-196,670,927),7689=>array(43,-196,526,800),7690=>array(92,0,778,927),7691=>array(45,-14,632,942),7692=>array(92,-212,778,729),7693=>array(45,-212,632,760),7694=>array(92,-184,778,729),7695=>array(45,-184,632,760),7696=>array(92,-192,778,729),7697=>array(45,-196,632,760),7698=>array(92,-240,778,729),7699=>array(45,-240,632,760),7700=>array(92,0,610,1057),7701=>array(43,-14,630,927),7702=>array(92,0,610,1057),7703=>array(43,-14,630,927),7704=>array(92,-203,610,729),7705=>array(43,-203,630,560),7706=>array(92,-195,610,729),7707=>array(43,-195,630,560),7708=>array(92,-196,610,927),7709=>array(43,-196,630,784),7710=>array(92,0,599,928),7711=>array(19,0,444,942),7712=>array(50,-14,747,901),7713=>array(45,-216,632,760),7714=>array(92,0,745,928),7715=>array(84,0,634,913),7716=>array(92,-212,745,729),7717=>array(84,-212,634,760),7718=>array(92,0,745,927),7719=>array(23,0,634,927),7720=>array(45,-196,745,729),7721=>array(38,-196,634,760),7722=>array(92,-236,745,729),7723=>array(84,-236,634,760),7724=>array(16,-195,355,729),7725=>array(1,-195,341,760),7726=>array(40,0,378,1057),7727=>array(16,0,354,917),7728=>array(92,0,805,927),7729=>array(84,0,684,982),7730=>array(92,-212,805,729),7731=>array(84,-212,684,760),7732=>array(92,-184,805,729),7733=>array(84,-184,684,760),7734=>array(92,-212,610,729),7735=>array(83,-212,259,760),7736=>array(32,-212,610,942),7737=>array(18,-212,325,914),7738=>array(92,-184,610,729),7739=>array(20,-184,328,760),7740=>array(92,-240,610,729),7741=>array(-13,-240,355,760),7742=>array(92,0,903,927),7743=>array(83,0,963,800),7744=>array(92,0,903,928),7745=>array(83,0,963,760),7746=>array(92,-212,903,729),7747=>array(83,-212,963,560),7748=>array(92,0,745,928),7749=>array(84,0,634,760),7750=>array(92,-212,745,729),7751=>array(84,-212,634,560),7752=>array(92,-184,745,729),7753=>array(84,-184,634,560),7754=>array(92,-240,745,729),7755=>array(84,-240,634,560),7756=>array(50,-14,800,1057),7757=>array(43,-14,644,916),7758=>array(50,-14,800,1043),7759=>array(43,-14,644,900),7760=>array(50,-14,800,1057),7761=>array(43,-14,644,927),7762=>array(50,-14,800,1057),7763=>array(43,-14,644,927),7764=>array(92,0,692,927),7765=>array(84,-208,671,800),7766=>array(92,0,692,928),7767=>array(84,-208,671,760),7768=>array(92,0,750,928),7769=>array(84,0,490,760),7770=>array(92,-212,750,729),7771=>array(83,-212,490,560),7772=>array(92,-212,750,914),7773=>array(83,-212,490,759),7774=>array(92,-184,750,729),7775=>array(33,-184,490,560),7776=>array(72,-14,647,928),7777=>array(52,-14,548,760),7778=>array(72,-212,647,742),7779=>array(52,-212,548,560),7780=>array(72,-14,647,928),7781=>array(52,-14,548,816),7782=>array(72,-14,647,1053),7783=>array(52,-14,548,1002),7784=>array(72,-212,647,928),7785=>array(52,-212,548,762),7786=>array(5,0,677,927),7787=>array(13,0,455,942),7788=>array(5,-212,677,729),7789=>array(13,-212,455,702),7790=>array(5,-184,677,729),7791=>array(13,-184,455,702),7792=>array(5,-240,677,729),7793=>array(13,-240,455,702),7794=>array(92,-212,720,729),7795=>array(78,-212,628,547),7796=>array(92,-196,720,729),7797=>array(78,-195,628,547),7798=>array(92,-203,720,729),7799=>array(78,-203,628,547),7800=>array(92,-14,720,1057),7801=>array(78,-14,628,916),7802=>array(92,-14,720,1043),7803=>array(78,-14,628,887),7804=>array(5,0,769,928),7805=>array(15,0,637,778),7806=>array(5,-212,769,729),7807=>array(15,-212,637,547),7808=>array(30,0,1072,931),7809=>array(35,0,889,803),7810=>array(30,0,1072,931),7811=>array(35,0,889,803),7812=>array(30,0,1072,927),7813=>array(35,0,889,774),7814=>array(30,0,1072,927),7815=>array(35,0,889,760),7816=>array(30,-212,1072,729),7817=>array(35,-212,889,547),7818=>array(19,0,751,928),7819=>array(15,0,630,760),7820=>array(19,0,751,927),7821=>array(15,0,630,774),7822=>array(-10,0,734,928),7823=>array(12,-216,634,760),7824=>array(45,0,680,927),7825=>array(45,0,534,798),7826=>array(45,-212,680,729),7827=>array(45,-212,534,547),7828=>array(45,-184,680,729),7829=>array(45,-184,534,547),7830=>array(84,-184,634,760),7831=>array(13,0,455,927),7832=>array(35,0,889,888),7833=>array(12,-216,634,888),7834=>array(43,-14,758,760),7835=>array(19,0,444,942),7836=>array(-18,0,444,760),7837=>array(19,0,444,760),7838=>array(92,-14,823,743),7839=>array(43,-14,645,768),7840=>array(5,-212,769,729),7841=>array(43,-212,596,560),7842=>array(5,0,769,1025),7843=>array(43,-14,596,843),7844=>array(5,0,769,1054),7845=>array(43,-14,652,873),7846=>array(5,0,769,1054),7847=>array(43,-14,597,874),7848=>array(5,0,769,1093),7849=>array(43,-14,672,912),7850=>array(5,0,769,1068),7851=>array(43,-14,596,887),7852=>array(5,-212,769,927),7853=>array(43,-212,596,800),7854=>array(5,0,769,1057),7855=>array(43,-14,596,891),7856=>array(5,0,769,1057),7857=>array(43,-14,596,894),7858=>array(5,0,769,1123),7859=>array(43,-14,596,959),7860=>array(5,0,769,1068),7861=>array(43,-14,596,905),7862=>array(5,-212,769,935),7863=>array(43,-212,596,780),7864=>array(92,-212,610,729),7865=>array(43,-212,630,560),7866=>array(92,0,610,1025),7867=>array(43,-14,630,843),7868=>array(92,0,610,928),7869=>array(43,-14,630,778),7870=>array(92,0,684,1054),7871=>array(43,-14,688,873),7872=>array(92,0,621,1054),7873=>array(43,-14,630,874),7874=>array(92,0,686,1093),7875=>array(43,-14,681,912),7876=>array(92,0,610,1068),7877=>array(43,-14,630,887),7878=>array(92,-212,610,927),7879=>array(43,-212,630,800),7880=>array(66,0,313,1025),7881=>array(52,0,300,842),7882=>array(92,-212,280,729),7883=>array(83,-212,259,760),7884=>array(50,-212,800,742),7885=>array(43,-212,644,560),7886=>array(50,-14,800,1025),7887=>array(43,-14,644,843),7888=>array(50,-14,800,1054),7889=>array(43,-14,679,873),7890=>array(50,-14,800,1054),7891=>array(43,-14,644,874),7892=>array(50,-14,800,1093),7893=>array(43,-14,685,912),7894=>array(50,-14,800,1068),7895=>array(43,-14,644,887),7896=>array(50,-212,800,927),7897=>array(43,-212,644,800),7898=>array(53,-14,854,927),7899=>array(46,-14,708,800),7900=>array(53,-14,854,927),7901=>array(46,-14,708,800),7902=>array(53,-14,854,1025),7903=>array(46,-14,708,843),7904=>array(53,-14,854,928),7905=>array(46,-14,708,778),7906=>array(53,-212,854,761),7907=>array(46,-212,708,609),7908=>array(92,-212,720,729),7909=>array(78,-212,628,547),7910=>array(92,-14,720,1025),7911=>array(78,-14,628,843),7912=>array(91,-14,833,927),7913=>array(75,-14,733,800),7914=>array(91,-14,833,927),7915=>array(75,-14,733,800),7916=>array(91,-14,833,1025),7917=>array(75,-14,733,843),7918=>array(91,-14,833,928),7919=>array(75,-14,733,778),7920=>array(91,-212,833,761),7921=>array(75,-212,733,609),7922=>array(-10,0,734,931),7923=>array(12,-216,634,803),7924=>array(-10,-212,734,729),7925=>array(12,-216,634,547),7926=>array(-10,0,734,1029),7927=>array(12,-216,634,843),7928=>array(-10,0,734,928),7929=>array(12,-216,634,778),7930=>array(92,0,925,729),7931=>array(9,0,635,760),7936=>array(48,-13,645,785),7937=>array(48,-13,645,785),7938=>array(48,-13,645,800),7939=>array(48,-13,645,800),7940=>array(48,-13,645,800),7941=>array(48,-13,645,800),7942=>array(48,-13,645,928),7943=>array(48,-13,645,928),7944=>array(5,0,769,785),7945=>array(5,0,769,785),7946=>array(2,0,1036,800),7947=>array(3,0,1039,800),7948=>array(1,0,930,800),7949=>array(2,0,958,800),7950=>array(4,0,831,928),7951=>array(3,0,854,928),7952=>array(54,-14,493,785),7953=>array(54,-14,493,785),7954=>array(54,-14,498,800),7955=>array(54,-14,493,800),7956=>array(54,-14,531,800),7957=>array(54,-14,516,800),7960=>array(3,0,718,785),7961=>array(4,0,721,785),7962=>array(2,0,1026,800),7963=>array(3,0,1023,800),7964=>array(1,0,950,800),7965=>array(2,0,979,800),7968=>array(84,-208,634,785),7969=>array(84,-208,634,785),7970=>array(84,-208,634,800),7971=>array(84,-208,634,800),7972=>array(84,-208,634,800),7973=>array(84,-208,634,800),7974=>array(84,-208,634,928),7975=>array(84,-208,634,928),7976=>array(3,0,854,785),7977=>array(4,0,859,785),7978=>array(2,0,1159,800),7979=>array(3,0,1158,800),7980=>array(1,0,1088,800),7981=>array(2,0,1114,800),7982=>array(4,0,962,928),7983=>array(3,0,971,928),7984=>array(78,-19,348,785),7985=>array(78,-19,348,785),7986=>array(-27,-19,407,800),7987=>array(-58,-19,376,800),7988=>array(31,-19,446,800),7989=>array(-6,-19,438,800),7990=>array(-2,-19,348,928),7991=>array(-5,-19,348,928),7992=>array(3,0,391,785),7993=>array(4,0,397,785),7994=>array(2,0,685,800),7995=>array(3,0,693,800),7996=>array(1,0,620,800),7997=>array(2,0,646,800),7998=>array(4,0,512,928),7999=>array(3,0,512,928),8000=>array(43,-14,644,785),8001=>array(43,-14,644,785),8002=>array(43,-14,644,800),8003=>array(43,-14,644,800),8004=>array(43,-14,644,800),8005=>array(43,-14,644,800),8008=>array(3,-14,841,785),8009=>array(4,-14,883,785),8010=>array(2,-14,1171,800),8011=>array(3,-14,1173,800),8012=>array(1,-14,1002,800),8013=>array(2,-14,1032,800),8016=>array(78,-10,629,785),8017=>array(78,-10,629,785),8018=>array(78,-10,629,800),8019=>array(78,-10,629,800),8020=>array(78,-10,629,800),8021=>array(78,-10,629,800),8022=>array(78,-10,629,928),8023=>array(78,-10,629,928),8025=>array(4,0,940,785),8027=>array(3,0,1194,800),8029=>array(2,0,1208,800),8031=>array(3,0,1059,928),8032=>array(43,-13,826,785),8033=>array(43,-13,826,785),8034=>array(43,-13,826,800),8035=>array(43,-13,826,800),8036=>array(43,-13,826,800),8037=>array(43,-13,826,800),8038=>array(43,-13,826,928),8039=>array(43,-13,826,928),8040=>array(3,0,881,785),8041=>array(4,0,931,785),8042=>array(2,0,1219,800),8043=>array(3,-3,1224,800),8044=>array(1,0,1048,800),8045=>array(2,0,1078,800),8046=>array(4,0,1000,928),8047=>array(3,0,1048,928),8048=>array(48,-13,645,800),8049=>array(48,-13,645,800),8050=>array(54,-14,493,800),8051=>array(54,-14,493,800),8052=>array(84,-208,634,800),8053=>array(84,-208,634,800),8054=>array(-26,-19,348,800),8055=>array(77,-19,353,800),8056=>array(43,-14,644,800),8057=>array(43,-14,644,800),8058=>array(78,-10,629,800),8059=>array(78,-10,629,800),8060=>array(43,-13,826,800),8061=>array(43,-13,826,800),8064=>array(48,-208,645,785),8065=>array(48,-208,645,785),8066=>array(48,-208,645,800),8067=>array(48,-208,645,800),8068=>array(48,-208,645,800),8069=>array(48,-208,645,800),8070=>array(48,-208,645,928),8071=>array(48,-208,645,928),8072=>array(5,-208,769,785),8073=>array(5,-208,769,785),8074=>array(2,-208,1036,800),8075=>array(3,-208,1039,800),8076=>array(1,-208,930,800),8077=>array(2,-208,958,800),8078=>array(4,-208,831,928),8079=>array(3,-208,854,928),8080=>array(84,-208,634,785),8081=>array(84,-208,634,785),8082=>array(84,-208,634,800),8083=>array(84,-208,634,800),8084=>array(84,-208,634,800),8085=>array(84,-208,634,800),8086=>array(84,-208,634,928),8087=>array(84,-208,634,928),8088=>array(3,-208,854,785),8089=>array(4,-208,859,785),8090=>array(2,-208,1159,800),8091=>array(3,-208,1158,800),8092=>array(1,-208,1088,800),8093=>array(2,-208,1114,800),8094=>array(4,-208,962,928),8095=>array(3,-208,971,928),8096=>array(43,-208,826,785),8097=>array(43,-208,826,785),8098=>array(43,-208,826,800),8099=>array(43,-208,826,800),8100=>array(43,-208,826,800),8101=>array(43,-208,826,800),8102=>array(43,-208,826,928),8103=>array(43,-208,826,928),8104=>array(3,-208,881,785),8105=>array(4,-208,931,785),8106=>array(2,-208,1219,800),8107=>array(3,-208,1224,800),8108=>array(1,-208,1048,800),8109=>array(2,-208,1078,800),8110=>array(4,-208,1000,928),8111=>array(3,-208,1048,928),8112=>array(48,-13,645,784),8113=>array(48,-13,645,760),8114=>array(48,-208,645,800),8115=>array(48,-208,645,559),8116=>array(48,-208,645,800),8118=>array(48,-13,645,778),8119=>array(48,-208,645,778),8120=>array(5,0,769,927),8121=>array(5,0,769,914),8122=>array(-1,0,872,800),8123=>array(26,0,792,800),8124=>array(5,-208,769,729),8125=>array(183,595,317,785),8126=>array(202,-208,333,-45),8127=>array(183,595,317,785),8128=>array(80,638,420,778),8129=>array(80,654,420,928),8130=>array(84,-208,634,800),8131=>array(84,-208,634,560),8132=>array(84,-208,634,800),8134=>array(84,-208,634,778),8135=>array(84,-208,634,778),8136=>array(-1,0,856,800),8137=>array(-24,0,771,800),8138=>array(-1,0,988,800),8139=>array(-18,0,915,800),8140=>array(92,-208,745,729),8141=>array(34,595,468,800),8142=>array(63,595,478,800),8143=>array(80,595,420,928),8144=>array(3,-19,348,784),8145=>array(20,-19,348,760),8146=>array(-36,-19,348,978),8147=>array(23,-19,372,978),8150=>array(4,-19,348,778),8151=>array(-6,-19,348,928),8152=>array(21,0,350,927),8153=>array(32,0,339,914),8154=>array(-1,0,529,800),8155=>array(-21,0,450,800),8157=>array(40,595,474,800),8158=>array(45,595,489,800),8159=>array(80,595,420,928),8160=>array(78,-10,629,784),8161=>array(78,-10,629,760),8162=>array(78,-10,629,978),8163=>array(78,-10,629,978),8164=>array(84,-208,671,785),8165=>array(84,-208,671,785),8166=>array(78,-10,629,778),8167=>array(78,-10,629,928),8168=>array(-10,0,734,927),8169=>array(-10,0,734,914),8170=>array(-1,0,1030,800),8171=>array(-27,0,992,800),8172=>array(4,0,797,785),8173=>array(46,654,404,978),8174=>array(96,654,445,978),8175=>array(46,616,322,800),8178=>array(43,-208,826,800),8179=>array(43,-208,826,547),8180=>array(43,-208,826,800),8182=>array(43,-13,826,778),8183=>array(43,-208,826,778),8184=>array(-1,-14,1015,800),8185=>array(-19,-14,836,800),8186=>array(-1,0,1057,800),8187=>array(-30,0,867,800),8188=>array(27,-208,823,742),8189=>array(178,616,454,800),8190=>array(183,595,317,785),8192=>array(54,217,361,359),8193=>array(54,217,361,359),8194=>array(54,217,361,359),8195=>array(54,217,361,359),8196=>array(54,217,361,359),8197=>array(54,217,361,359),8198=>array(54,217,361,359),8199=>array(54,217,361,359),8200=>array(54,217,361,359),8201=>array(54,217,361,359),8202=>array(54,217,361,359),8203=>array(54,217,361,359),8204=>array(54,217,361,359),8205=>array(54,217,361,359),8206=>array(54,217,361,359),8207=>array(54,217,361,359),8208=>array(54,217,361,359),8209=>array(54,217,361,359),8210=>array(54,211,642,337),8211=>array(54,211,446,337),8212=>array(54,211,946,337),8213=>array(0,211,1000,337),8214=>array(127,-236,399,764),8215=>array(0,-236,500,-9),8216=>array(103,418,318,729),8217=>array(63,418,278,729),8218=>array(72,-122,287,189),8219=>array(63,418,278,729),8220=>array(103,418,565,729),8221=>array(92,418,554,729),8222=>array(72,-122,534,189),8223=>array(92,418,554,729),8224=>array(26,-96,470,729),8225=>array(25,-96,470,729),8226=>array(144,196,495,547),8227=>array(144,157,534,586),8228=>array(79,0,255,189),8229=>array(79,0,588,189),8230=>array(79,0,921,189),8231=>array(86,253,262,442),8232=>array(32,-14,1417,742),8233=>array(32,-14,1417,742),8234=>array(32,-14,1417,742),8235=>array(32,-14,1417,742),8236=>array(32,-14,1417,742),8237=>array(32,-14,1417,742),8238=>array(32,-14,1417,742),8239=>array(32,-14,1417,742),8240=>array(32,-14,1417,742),8241=>array(32,-14,1864,742),8242=>array(20,547,240,729),8243=>array(20,547,423,729),8244=>array(20,547,606,729),8245=>array(20,547,240,729),8246=>array(20,547,425,729),8247=>array(20,547,606,729),8248=>array(101,-238,632,29),8249=>array(77,67,318,519),8250=>array(94,67,335,519),8251=>array(72,0,900,829),8252=>array(69,0,558,729),8253=>array(69,0,515,742),8254=>array(0,663,500,755),8255=>array(-31,-237,859,-79),8256=>array(-31,769,859,927),8257=>array(-52,-235,296,231),8258=>array(20,-37,1003,832),8259=>array(96,220,404,358),8260=>array(-199,-14,366,742),8261=>array(86,-132,389,760),8262=>array(68,-132,371,760),8263=>array(34,0,996,742),8264=>array(69,0,760,742),8265=>array(69,0,760,742),8266=>array(49,-125,464,546),8267=>array(93,-96,579,729),8268=>array(75,189,425,541),8269=>array(75,189,425,541),8270=>array(20,0,503,464),8271=>array(104,-142,329,547),8272=>array(-31,-237,859,927),8273=>array(53,-14,439,797),8274=>array(30,-93,529,729),8275=>array(49,212,951,415),8276=>array(-31,-240,859,-82),8277=>array(152,98,686,631),8278=>array(110,93,574,645),8279=>array(20,547,789,729),8280=>array(76,21,762,708),8281=>array(126,71,712,657),8282=>array(102,0,280,729),8283=>array(49,-170,822,898),8284=>array(55,0,783,729),8285=>array(102,0,278,683),8286=>array(102,0,278,683),8287=>array(29,319,398,742),8288=>array(29,319,398,742),8289=>array(29,319,398,742),8290=>array(29,319,398,742),8291=>array(29,319,398,742),8292=>array(29,319,398,742),8298=>array(29,319,398,742),8299=>array(29,319,398,742),8300=>array(29,319,398,742),8301=>array(29,319,398,742),8302=>array(29,319,398,742),8303=>array(29,319,398,742),8304=>array(29,319,398,742),8305=>array(53,326,164,751),8308=>array(27,326,397,734),8309=>array(47,319,384,734),8310=>array(38,319,394,742),8311=>array(41,326,378,734),8312=>array(38,319,389,742),8313=>array(32,319,388,742),8314=>array(67,326,461,677),8315=>array(67,469,461,534),8316=>array(67,407,461,596),8317=>array(54,252,237,751),8318=>array(50,252,234,751),8319=>array(54,326,406,640),8320=>array(29,-7,398,416),8321=>array(60,0,382,408),8322=>array(53,0,382,416),8323=>array(44,-7,384,416),8324=>array(27,0,397,408),8325=>array(47,-7,384,408),8326=>array(38,-7,394,416),8327=>array(41,0,378,408),8328=>array(38,-7,389,416),8329=>array(32,-7,388,416),8330=>array(67,0,461,351),8331=>array(67,143,461,208),8332=>array(67,81,461,270),8333=>array(54,-74,237,425),8334=>array(50,-74,234,425),8336=>array(53,-8,402,313),8337=>array(53,-8,423,313),8338=>array(53,-8,432,313),8339=>array(10,0,403,306),8340=>array(53,-8,423,313),8341=>array(54,0,406,425),8342=>array(53,0,431,425),8343=>array(54,0,166,425),8344=>array(53,0,607,313),8345=>array(54,0,406,313),8346=>array(53,-117,423,313),8347=>array(33,-8,351,313),8348=>array(53,0,332,393),8352=>array(38,0,892,729),8353=>array(50,-44,634,778),8354=>array(29,-14,667,742),8355=>array(75,0,663,729),8356=>array(61,0,613,742),8357=>array(83,-93,963,640),8358=>array(43,0,794,729),8359=>array(92,-14,1470,729),8360=>array(92,-14,1157,729),8361=>array(13,0,1088,729),8362=>array(39,-14,859,729),8363=>array(30,-182,692,760),8364=>array(-19,-14,629,742),8365=>array(29,0,695,729),8366=>array(12,0,684,729),8367=>array(92,-223,1247,742),8368=>array(14,-14,648,742),8369=>array(34,0,696,729),8370=>array(50,-81,643,809),8371=>array(5,0,691,729),8372=>array(43,-14,816,742),8373=>array(72,-147,629,760),8376=>array(12,0,684,729),8377=>array(50,0,647,729),8378=>array(5,0,745,729),8400=>array(-498,628,-26,760),8401=>array(-470,628,1,760),8406=>array(-470,560,-26,760),8407=>array(-470,560,-26,760),8411=>array(-501,654,-1,774),8412=>array(-595,654,99,774),8417=>array(-470,560,-26,760),8448=>array(20,-24,1083,752),8449=>array(20,-24,1137,752),8450=>array(50,-14,670,742),8451=>array(87,-14,1147,749),8452=>array(64,0,832,729),8453=>array(20,-24,1064,752),8454=>array(20,-24,1117,752),8455=>array(67,-14,616,742),8456=>array(64,-146,684,611),8457=>array(87,0,1002,749),8459=>array(36,-14,1063,746),8460=>array(6,-125,809,747),8461=>array(100,0,788,729),8462=>array(31,0,654,760),8463=>array(10,0,625,760),8464=>array(36,-14,533,742),8465=>array(52,-14,659,743),8466=>array(37,-14,787,742),8467=>array(-14,-14,401,742),8468=>array(9,-14,936,760),8469=>array(92,0,745,729),8470=>array(34,0,1154,729),8471=>array(138,0,862,725),8472=>array(54,-221,658,495),8473=>array(92,0,709,729),8474=>array(50,-146,800,742),8475=>array(31,-14,904,768),8476=>array(41,-14,803,743),8477=>array(98,0,793,729),8478=>array(37,0,859,729),8479=>array(81,-112,694,887),8480=>array(127,444,792,731),8481=>array(3,0,1249,547),8482=>array(144,447,790,729),8483=>array(11,-113,729,885),8484=>array(45,0,709,729),8485=>array(26,-230,540,777),8486=>array(27,0,823,742),8487=>array(27,-14,823,728),8488=>array(-5,-159,670,729),8489=>array(1,0,271,566),8490=>array(92,0,805,729),8491=>array(5,0,769,928),8492=>array(41,-1,853,772),8493=>array(63,-19,767,742),8494=>array(61,-12,793,647),8495=>array(41,-14,591,533),8496=>array(72,-14,668,742),8497=>array(37,-14,860,773),8498=>array(92,0,599,729),8499=>array(38,-18,1156,751),8500=>array(29,-12,436,420),8501=>array(50,-14,761,742),8502=>array(19,-14,687,742),8503=>array(31,-35,439,742),8504=>array(63,-41,633,742),8505=>array(34,0,355,760),8506=>array(44,-27,932,723),8507=>array(69,0,1352,547),8508=>array(34,-14,765,547),8509=>array(-40,-208,700,561),8510=>array(92,0,627,729),8511=>array(92,0,771,729),8512=>array(12,-192,820,719),8513=>array(25,-14,723,742),8514=>array(9,0,527,729),8515=>array(43,0,561,729),8516=>array(0,0,744,729),8517=>array(21,0,786,729),8518=>array(34,-14,752,760),8519=>array(33,-14,635,560),8520=>array(15,0,353,760),8521=>array(-143,-216,354,760),8523=>array(41,-14,811,742),8526=>array(55,0,470,547),8528=>array(49,-14,983,742),8529=>array(49,-14,993,742),8530=>array(49,-14,1441,742),8531=>array(49,-14,989,742),8532=>array(53,-14,989,742),8533=>array(49,-14,989,742),8534=>array(53,-14,989,742),8535=>array(44,-14,989,742),8536=>array(27,-14,989,742),8537=>array(49,-14,999,742),8538=>array(47,-14,999,742),8539=>array(49,-14,994,742),8540=>array(44,-14,994,742),8541=>array(47,-14,994,742),8542=>array(41,-14,994,742),8543=>array(49,-14,814,742),8544=>array(92,0,280,729),8545=>array(92,0,566,729),8546=>array(92,0,853,729),8547=>array(92,0,1094,729),8548=>array(5,0,769,729),8549=>array(5,0,1007,729),8550=>array(5,0,1293,729),8551=>array(5,0,1580,729),8552=>array(92,0,1101,729),8553=>array(19,0,751,729),8554=>array(19,0,1028,729),8555=>array(19,0,1314,729),8556=>array(92,0,610,729),8557=>array(50,-14,670,742),8558=>array(92,0,778,729),8559=>array(92,0,903,729),8560=>array(84,0,259,760),8561=>array(84,0,523,760),8562=>array(84,0,788,760),8563=>array(84,0,946,760),8564=>array(15,0,637,547),8565=>array(15,0,878,760),8566=>array(15,0,1143,760),8567=>array(15,0,1407,760),8568=>array(84,0,954,760),8569=>array(15,0,630,547),8570=>array(15,0,885,760),8571=>array(15,0,1149,760),8572=>array(84,0,259,760),8573=>array(43,-14,526,560),8574=>array(45,-14,632,760),8575=>array(83,0,963,560),8576=>array(52,0,1236,729),8577=>array(92,0,778,729),8578=>array(52,0,1236,729),8579=>array(50,-14,670,742),8580=>array(43,-14,526,560),8581=>array(50,-208,670,742),8585=>array(29,-14,989,742),8592=>array(49,87,781,540),8593=>array(193,0,646,732),8594=>array(57,87,789,540),8595=>array(193,-3,646,729),8596=>array(49,87,789,540),8597=>array(193,-3,646,732),8598=>array(136,66,720,650),8599=>array(136,66,720,650),8600=>array(136,66,720,650),8601=>array(136,66,720,650),8602=>array(49,87,781,540),8603=>array(57,87,789,540),8604=>array(13,84,833,431),8605=>array(5,84,825,431),8606=>array(49,87,781,540),8607=>array(189,0,641,732),8608=>array(57,87,789,540),8609=>array(194,-3,646,729),8610=>array(49,87,793,540),8611=>array(45,87,789,540),8612=>array(49,87,781,540),8613=>array(193,0,646,732),8614=>array(57,87,789,540),8615=>array(193,0,646,732),8616=>array(193,0,646,732),8617=>array(49,87,781,565),8618=>array(57,87,789,565),8619=>array(49,87,781,565),8620=>array(57,87,789,565),8621=>array(49,87,789,540),8622=>array(49,86,789,541),8623=>array(123,-4,714,733),8624=>array(169,0,646,755),8625=>array(192,0,669,755),8626=>array(169,-26,646,729),8627=>array(192,-26,669,729),8628=>array(233,-3,772,621),8629=>array(49,87,673,626),8630=>array(11,198,816,685),8631=>array(22,198,828,685),8632=>array(118,13,788,729),8633=>array(49,-108,789,735),8634=>array(86,45,767,691),8635=>array(71,45,751,691),8636=>array(49,255,781,540),8637=>array(49,87,781,372),8638=>array(361,0,646,732),8639=>array(193,0,478,732),8640=>array(57,255,789,540),8641=>array(57,87,789,372),8642=>array(361,0,646,732),8643=>array(193,0,478,732),8644=>array(49,-59,789,686),8645=>array(47,-3,792,732),8646=>array(49,-59,789,686),8647=>array(49,-59,781,686),8648=>array(46,0,792,732),8649=>array(57,-59,789,686),8650=>array(46,-3,792,729),8651=>array(49,-5,789,632),8652=>array(49,-5,789,632),8653=>array(49,87,781,540),8654=>array(49,87,789,540),8655=>array(57,87,789,540),8656=>array(49,87,781,540),8657=>array(193,0,645,732),8658=>array(57,87,789,540),8659=>array(193,-3,645,729),8660=>array(49,87,789,540),8661=>array(193,-8,645,732),8662=>array(132,-26,755,596),8663=>array(88,-26,711,597),8664=>array(88,16,711,639),8665=>array(132,16,755,639),8666=>array(49,87,781,540),8667=>array(57,87,789,540),8668=>array(44,87,776,540),8669=>array(57,87,789,540),8670=>array(193,0,646,732),8671=>array(193,-3,646,729),8672=>array(49,87,781,540),8673=>array(193,0,646,732),8674=>array(57,87,789,540),8675=>array(193,-3,646,729),8676=>array(49,87,781,540),8677=>array(57,87,789,540),8678=>array(27,46,781,581),8679=>array(151,0,687,754),8680=>array(35,46,789,581),8681=>array(151,-25,687,729),8682=>array(151,0,687,754),8683=>array(151,0,687,754),8684=>array(151,0,687,754),8685=>array(151,0,687,754),8686=>array(151,0,687,754),8687=>array(151,0,687,754),8688=>array(35,46,789,581),8689=>array(60,0,788,729),8690=>array(60,0,788,729),8691=>array(151,-25,687,754),8692=>array(57,87,789,540),8693=>array(47,-3,792,732),8694=>array(57,-223,789,850),8695=>array(49,87,781,540),8696=>array(57,87,789,540),8697=>array(49,87,789,540),8698=>array(49,87,781,540),8699=>array(57,87,789,540),8700=>array(49,87,789,540),8701=>array(27,96,781,531),8702=>array(57,96,811,531),8703=>array(27,96,811,531),8704=>array(5,0,769,729),8705=>array(48,-14,629,742),8706=>array(29,-14,515,674),8707=>array(92,0,610,729),8708=>array(92,-46,610,775),8709=>array(47,-15,810,715),8710=>array(0,0,697,719),8711=>array(0,0,697,719),8712=>array(73,-2,824,730),8713=>array(73,-46,824,775),8714=>array(106,58,644,568),8715=>array(73,-2,824,730),8716=>array(73,-46,824,775),8717=>array(106,58,644,568),8718=>array(98,0,539,553),8719=>array(73,-192,712,719),8720=>array(73,-193,712,718),8721=>array(20,-192,697,719),8722=>array(106,256,732,371),8723=>array(106,0,732,627),8724=>array(49,0,647,729),8725=>array(0,-93,365,729),8726=>array(165,-49,530,772),8727=>array(118,0,720,626),8728=>array(150,151,475,477),8729=>array(102,253,278,442),8730=>array(37,-20,669,837),8731=>array(37,-20,669,933),8732=>array(36,-20,669,924),8733=>array(92,89,617,505),8734=>array(92,89,741,505),8735=>array(106,67,732,693),8736=>array(77,0,820,729),8737=>array(77,-44,820,729),8738=>array(116,-0,732,726),8739=>array(207,-207,322,773),8740=>array(48,-207,482,773),8741=>array(112,-207,417,773),8742=>array(48,-207,482,773),8743=>array(151,0,661,579),8744=>array(151,0,661,579),8745=>array(151,0,661,579),8746=>array(151,0,661,579),8747=>array(15,-227,548,754),8748=>array(15,-227,914,754),8749=>array(15,-227,1280,754),8750=>array(14,-227,548,754),8751=>array(38,-227,938,754),8752=>array(23,-227,1290,754),8753=>array(15,-227,616,754),8754=>array(14,-227,600,754),8755=>array(14,-227,588,754),8756=>array(60,78,637,647),8757=>array(60,78,637,647),8758=>array(59,79,235,647),8759=>array(60,78,637,647),8760=>array(106,256,732,631),8761=>array(106,45,800,584),8762=>array(106,-4,732,631),8763=>array(106,-34,732,660),8764=>array(106,212,732,415),8765=>array(106,212,732,415),8766=>array(65,131,772,497),8767=>array(106,42,732,584),8768=>array(85,0,289,626),8769=>array(106,76,732,551),8770=>array(106,110,732,482),8771=>array(106,144,732,517),8772=>array(106,0,732,637),8773=>array(106,37,732,628),8774=>array(106,-31,732,628),8775=>array(106,-86,732,726),8776=>array(106,110,732,517),8777=>array(106,8,732,614),8778=>array(106,37,732,628),8779=>array(106,-13,732,628),8780=>array(106,37,732,628),8781=>array(105,105,732,585),8782=>array(106,26,732,656),8783=>array(106,172,732,656),8784=>array(106,144,732,744),8785=>array(106,-117,732,743),8786=>array(105,-92,732,719),8787=>array(104,-92,731,719),8788=>array(98,102,965,520),8789=>array(96,102,966,520),8790=>array(106,144,732,482),8791=>array(106,144,732,839),8792=>array(106,144,732,704),8793=>array(106,144,732,840),8794=>array(106,144,732,840),8795=>array(106,144,732,959),8796=>array(106,144,732,952),8797=>array(106,144,732,762),8798=>array(106,144,732,786),8799=>array(106,144,732,903),8800=>array(106,-5,732,631),8801=>array(106,38,732,588),8802=>array(106,-69,732,695),8803=>array(106,-74,732,700),8804=>array(106,0,732,582),8805=>array(106,0,732,582),8806=>array(106,-106,732,617),8807=>array(106,-106,732,617),8808=>array(106,-185,732,617),8809=>array(106,-185,732,617),8810=>array(72,-34,974,660),8811=>array(72,-34,974,660),8812=>array(86,-132,414,759),8813=>array(105,-10,732,700),8814=>array(106,-4,732,690),8815=>array(106,-63,732,631),8816=>array(106,-112,732,645),8817=>array(106,-112,732,645),8818=>array(106,-84,732,582),8819=>array(106,-84,732,582),8820=>array(106,-112,732,645),8821=>array(106,-112,732,645),8822=>array(102,-119,732,678),8823=>array(102,-119,732,678),8824=>array(102,-221,732,779),8825=>array(102,-221,732,779),8826=>array(106,-55,732,681),8827=>array(106,-55,732,681),8828=>array(106,-177,732,684),8829=>array(106,-177,732,684),8830=>array(106,-132,732,684),8831=>array(106,-132,732,684),8832=>array(106,-89,732,781),8833=>array(106,-89,732,781),8834=>array(99,67,739,559),8835=>array(99,65,739,559),8836=>array(99,-96,739,726),8837=>array(99,-100,739,722),8838=>array(99,0,739,636),8839=>array(99,0,739,635),8840=>array(99,-124,739,759),8841=>array(99,-124,739,759),8842=>array(99,-97,739,636),8843=>array(99,-97,739,635),8844=>array(151,0,661,579),8845=>array(151,0,661,579),8846=>array(151,0,661,579),8847=>array(106,0,732,584),8848=>array(106,0,732,584),8849=>array(106,-115,732,667),8850=>array(106,-115,732,667),8851=>array(106,0,690,626),8852=>array(106,0,690,626),8853=>array(91,-14,747,643),8854=>array(91,-14,747,643),8855=>array(91,-14,747,643),8856=>array(91,-13,747,642),8857=>array(91,-14,747,643),8858=>array(91,-14,747,643),8859=>array(91,-14,747,643),8860=>array(91,-14,747,643),8861=>array(91,-14,747,643),8862=>array(77,-29,761,657),8863=>array(77,-29,761,657),8864=>array(77,-29,761,657),8865=>array(77,-29,761,657),8866=>array(85,0,829,705),8867=>array(85,0,829,705),8868=>array(85,0,829,705),8869=>array(85,0,829,705),8870=>array(85,0,457,705),8871=>array(85,0,457,705),8872=>array(85,0,829,705),8873=>array(85,0,829,705),8874=>array(85,0,829,705),8875=>array(85,0,829,705),8876=>array(85,-100,829,805),8877=>array(85,-100,829,805),8878=>array(85,-100,829,805),8879=>array(85,-100,829,805),8880=>array(106,-54,724,681),8881=>array(114,-54,732,681),8882=>array(106,-1,732,628),8883=>array(106,-1,732,628),8884=>array(106,-80,732,706),8885=>array(106,-80,732,706),8886=>array(60,151,940,477),8887=>array(60,151,940,477),8888=>array(60,151,778,477),8889=>array(43,-63,794,689),8890=>array(63,0,480,705),8891=>array(103,0,709,759),8892=>array(103,0,709,759),8893=>array(103,0,709,759),8894=>array(106,0,732,626),8895=>array(106,0,732,626),8896=>array(0,-192,843,719),8897=>array(0,-192,843,719),8898=>array(48,-192,794,719),8899=>array(48,-192,794,719),8900=>array(3,-233,491,807),8901=>array(102,253,278,442),8902=>array(83,112,543,549),8903=>array(106,-56,732,683),8904=>array(106,-48,894,674),8905=>array(106,-48,894,675),8906=>array(106,-48,894,675),8907=>array(106,-48,894,675),8908=>array(106,-48,894,675),8909=>array(106,144,732,517),8910=>array(49,0,763,579),8911=>array(49,0,763,579),8912=>array(93,-22,732,649),8913=>array(106,-22,745,649),8914=>array(83,0,755,639),8915=>array(83,-14,755,625),8916=>array(186,0,652,729),8917=>array(106,-100,732,729),8918=>array(106,30,732,597),8919=>array(106,30,732,597),8920=>array(72,-34,1350,660),8921=>array(72,-34,1350,660),8922=>array(106,-211,732,837),8923=>array(106,-211,732,837),8924=>array(106,0,732,582),8925=>array(106,0,732,582),8926=>array(106,-177,732,684),8927=>array(106,-177,732,684),8928=>array(106,-197,732,808),8929=>array(106,-263,732,742),8930=>array(106,-191,732,817),8931=>array(106,-191,732,817),8932=>array(106,-146,732,636),8933=>array(106,-146,732,636),8934=>array(106,-168,732,582),8935=>array(106,-168,732,582),8936=>array(106,-216,732,684),8937=>array(106,-216,732,684),8938=>array(106,-138,732,808),8939=>array(106,-138,732,808),8940=>array(106,-224,732,894),8941=>array(106,-224,732,894),8942=>array(412,-40,588,735),8943=>array(79,253,921,442),8944=>array(79,-40,921,735),8945=>array(79,-40,921,735),8946=>array(72,-2,1085,730),8947=>array(73,-2,824,730),8948=>array(106,58,644,568),8949=>array(73,-2,824,984),8950=>array(73,-2,824,919),8951=>array(106,58,644,741),8952=>array(73,-207,824,730),8953=>array(73,-2,824,730),8954=>array(72,-2,1085,730),8955=>array(73,-2,824,730),8956=>array(106,58,644,568),8957=>array(72,-2,824,919),8958=>array(106,58,644,741),8959=>array(106,0,791,732),8960=>array(31,-22,572,519),8961=>array(56,152,540,453),8962=>array(64,0,651,596),8963=>array(193,470,646,732),8964=>array(193,0,646,263),8965=>array(193,-12,646,423),8966=>array(193,-12,646,552),8967=>array(139,-39,349,798),8968=>array(86,-132,389,760),8969=>array(68,-132,371,760),8970=>array(86,-132,389,760),8971=>array(68,-132,371,760),8972=>array(352,-77,759,331),8973=>array(49,-77,457,331),8974=>array(352,226,759,634),8975=>array(49,226,457,634),8976=>array(106,140,732,444),8977=>array(3,113,536,646),8984=>array(84,0,843,759),8985=>array(106,140,732,444),8988=>array(86,425,403,760),8989=>array(65,425,383,760),8990=>array(86,-126,403,208),8991=>array(65,-126,383,208),8992=>array(235,-250,586,926),8993=>array(22,-240,373,940),8996=>array(76,215,1076,575),8997=>array(76,0,1076,575),8998=>array(76,0,1414,760),8999=>array(76,0,1076,760),9000=>array(59,0,1385,729),9003=>array(0,0,1338,760),9004=>array(73,-91,800,748),9075=>array(78,-19,348,547),9076=>array(84,-208,671,562),9077=>array(43,-13,826,547),9082=>array(48,-13,645,559),9085=>array(13,-228,850,99),9095=>array(76,0,1100,743),9108=>array(17,0,856,727),9115=>array(63,-252,438,928),9116=>array(63,-252,205,940),9117=>array(63,-240,438,940),9118=>array(63,-252,438,928),9119=>array(295,-252,438,940),9120=>array(63,-240,438,940),9121=>array(63,-252,438,928),9122=>array(63,-252,205,940),9123=>array(63,-240,438,940),9124=>array(63,-252,438,928),9125=>array(295,-252,438,940),9126=>array(63,-240,438,940),9127=>array(306,-261,668,928),9128=>array(82,-247,444,934),9129=>array(306,-240,668,934),9130=>array(306,-256,444,934),9131=>array(82,-261,444,928),9132=>array(306,-247,668,934),9133=>array(82,-240,444,934),9134=>array(235,-250,373,940),9166=>array(27,46,781,729),9167=>array(91,0,854,596),9187=>array(73,-91,800,748),9189=>array(3,75,766,444),9192=>array(39,-129,665,294),9250=>array(-81,-14,671,760),9251=>array(64,-228,651,99),9312=>array(59,-15,788,715),9313=>array(59,-15,788,715),9314=>array(59,-15,788,715),9315=>array(59,-15,788,715),9316=>array(59,-15,788,715),9317=>array(59,-15,788,715),9318=>array(59,-15,788,715),9319=>array(59,-15,788,715),9320=>array(59,-15,788,715),9321=>array(59,-15,788,715),9600=>array(-10,260,779,770),9601=>array(-10,-250,779,-123),9602=>array(-10,-250,779,-5),9603=>array(-10,-250,779,132),9604=>array(-10,-250,779,260),9605=>array(-10,-250,779,387),9606=>array(-10,-250,779,515),9607=>array(-10,-250,779,642),9608=>array(-10,-250,779,770),9609=>array(-10,-250,680,770),9610=>array(-10,-250,582,770),9611=>array(-10,-250,483,770),9612=>array(-10,-250,384,770),9613=>array(-10,-250,286,770),9614=>array(-10,-250,187,770),9615=>array(-10,-250,88,770),9616=>array(384,-250,778,770),9617=>array(-10,-250,680,770),9618=>array(-10,-250,779,770),9619=>array(-10,-250,779,770),9620=>array(-10,642,779,770),9621=>array(680,-250,778,770),9622=>array(-10,-250,385,260),9623=>array(384,-250,779,260),9624=>array(-10,260,385,770),9625=>array(-10,-250,779,770),9626=>array(-10,-250,779,770),9627=>array(-10,-250,779,770),9628=>array(-10,-250,779,770),9629=>array(384,260,779,770),9630=>array(-10,-250,779,770),9631=>array(-10,-250,779,770),9632=>array(91,-124,854,643),9633=>array(91,-124,854,643),9634=>array(91,-124,854,643),9635=>array(91,-124,854,643),9636=>array(91,-124,854,643),9637=>array(91,-124,854,643),9638=>array(91,-124,854,643),9639=>array(91,-124,854,643),9640=>array(91,-124,854,643),9641=>array(91,-124,854,643),9642=>array(91,11,587,509),9643=>array(91,11,587,509),9644=>array(91,75,854,444),9645=>array(91,75,854,444),9646=>array(91,-122,459,642),9647=>array(91,-122,459,642),9648=>array(3,75,766,444),9649=>array(3,75,766,444),9650=>array(3,-124,766,643),9651=>array(3,-124,766,643),9652=>array(3,11,499,509),9653=>array(3,11,499,509),9654=>array(3,-124,766,643),9655=>array(3,-124,766,643),9656=>array(3,11,499,509),9657=>array(3,11,499,509),9658=>array(3,11,766,509),9659=>array(3,11,766,509),9660=>array(3,-124,766,643),9661=>array(3,-124,766,643),9662=>array(3,11,499,509),9663=>array(3,11,499,509),9664=>array(3,-124,766,643),9665=>array(3,-124,766,643),9666=>array(3,11,499,509),9667=>array(3,11,499,509),9668=>array(3,11,766,509),9669=>array(3,11,766,509),9670=>array(3,-124,766,643),9671=>array(3,-124,766,643),9672=>array(3,-124,766,643),9673=>array(55,-125,818,645),9674=>array(3,-233,491,807),9675=>array(55,-125,818,645),9676=>array(56,-125,817,644),9677=>array(55,-125,818,645),9678=>array(55,-125,818,645),9679=>array(55,-123,818,641),9680=>array(55,-123,818,641),9681=>array(55,-123,818,641),9682=>array(55,-123,818,641),9683=>array(55,-123,818,641),9684=>array(55,-123,818,641),9685=>array(55,-123,818,641),9686=>array(55,-125,436,645),9687=>array(91,-125,472,645),9688=>array(91,-10,750,770),9689=>array(91,-250,879,770),9690=>array(91,260,879,770),9691=>array(91,-250,879,260),9692=>array(3,260,385,645),9693=>array(3,260,384,645),9694=>array(3,-125,384,260),9695=>array(3,-125,385,260),9696=>array(3,260,766,645),9697=>array(3,-125,766,260),9698=>array(3,-124,766,643),9699=>array(3,-124,766,643),9700=>array(3,-124,766,643),9701=>array(3,-124,766,643),9702=>array(144,196,495,547),9703=>array(91,-124,854,643),9704=>array(91,-124,854,643),9705=>array(91,-124,854,643),9706=>array(91,-124,854,643),9707=>array(91,-124,854,643),9708=>array(3,-124,766,643),9709=>array(3,-124,766,643),9710=>array(3,-124,766,643),9711=>array(55,-250,1064,770),9712=>array(91,-124,854,643),9713=>array(91,-124,854,643),9714=>array(91,-124,854,643),9715=>array(91,-124,854,643),9716=>array(55,-123,818,641),9717=>array(55,-123,818,641),9718=>array(55,-123,818,641),9719=>array(55,-123,818,641),9720=>array(3,-124,766,643),9721=>array(3,-124,766,643),9722=>array(3,-124,766,643),9723=>array(91,-66,739,585),9724=>array(91,-66,739,585),9725=>array(91,-17,642,537),9726=>array(91,-17,642,537),9727=>array(3,-124,766,643),9728=>array(83,0,813,729),9729=>array(51,-2,949,360),9730=>array(49,0,848,729),9731=>array(83,-0,813,927),9732=>array(64,0,833,880),9733=>array(65,-4,832,723),9734=>array(65,-4,832,723),9735=>array(83,2,490,729),9736=>array(83,0,813,731),9737=>array(83,0,813,730),9738=>array(61,0,828,727),9739=>array(61,0,828,723),9740=>array(61,-1,610,722),9741=>array(61,0,952,723),9742=>array(68,0,1177,729),9743=>array(71,0,1180,729),9744=>array(90,0,807,729),9745=>array(89,0,808,729),9746=>array(89,0,808,729),9747=>array(75,78,457,656),9748=>array(49,0,870,933),9749=>array(74,0,822,731),9750=>array(84,0,813,731),9751=>array(84,0,813,727),9752=>array(78,0,819,729),9753=>array(83,140,813,574),9754=>array(84,113,813,569),9755=>array(84,113,813,569),9756=>array(87,104,810,569),9757=>array(72,0,537,724),9758=>array(86,103,810,569),9759=>array(72,-3,537,720),9760=>array(61,0,835,730),9761=>array(84,0,813,730),9762=>array(83,0,813,730),9763=>array(49,0,848,730),9764=>array(49,-2,620,727),9765=>array(83,0,663,731),9766=>array(83,-1,566,731),9767=>array(83,0,701,911),9768=>array(83,0,462,730),9769=>array(83,-1,813,729),9770=>array(87,0,810,730),9771=>array(83,0,814,731),9772=>array(83,0,627,731),9773=>array(83,0,813,730),9774=>array(83,0,813,730),9775=>array(83,0,813,730),9776=>array(83,0,813,729),9777=>array(83,0,814,729),9778=>array(83,0,813,729),9779=>array(83,0,813,729),9780=>array(83,0,813,729),9781=>array(83,0,813,729),9782=>array(83,0,813,729),9783=>array(83,0,813,729),9784=>array(80,3,817,721),9785=>array(83,-73,959,804),9786=>array(83,-73,959,804),9787=>array(83,-73,959,804),9788=>array(83,0,813,730),9789=>array(358,0,814,730),9790=>array(83,0,539,730),9791=>array(85,-102,528,732),9792=>array(85,-125,647,731),9793=>array(85,-14,647,843),9794=>array(79,-14,831,720),9795=>array(166,0,730,730),9796=>array(219,0,677,730),9797=>array(121,0,774,730),9798=>array(127,0,769,730),9799=>array(240,0,656,730),9800=>array(45,0,851,731),9801=>array(89,0,807,730),9802=>array(94,0,802,731),9803=>array(113,31,784,679),9804=>array(140,0,756,730),9805=>array(53,-180,843,730),9806=>array(83,52,813,653),9807=>array(34,-96,863,730),9808=>array(83,-0,813,730),9809=>array(94,0,802,730),9810=>array(86,153,810,579),9811=>array(157,0,739,730),9812=>array(98,0,798,730),9813=>array(110,0,786,730),9814=>array(167,-1,729,729),9815=>array(214,0,683,730),9816=>array(165,0,732,730),9817=>array(148,-0,748,730),9818=>array(98,0,798,730),9819=>array(110,0,786,730),9820=>array(167,-1,729,729),9821=>array(214,0,683,730),9822=>array(162,0,734,730),9823=>array(148,-0,748,730),9824=>array(158,0,738,729),9825=>array(90,0,806,727),9826=>array(168,0,728,729),9827=>array(111,0,785,729),9828=>array(157,0,739,729),9829=>array(89,0,808,729),9830=>array(168,0,728,729),9831=>array(111,0,785,732),9832=>array(105,-1,791,729),9833=>array(84,-5,339,729),9834=>array(84,-5,554,729),9835=>array(184,-102,712,729),9836=>array(92,-5,804,729),9837=>array(88,-3,392,731),9838=>array(84,0,273,731),9839=>array(84,0,400,731),9840=>array(84,0,664,731),9841=>array(64,0,701,731),9842=>array(84,0,813,709),9843=>array(76,16,820,731),9844=>array(76,16,820,731),9845=>array(76,16,820,731),9846=>array(76,16,820,731),9847=>array(76,16,820,731),9848=>array(76,16,820,731),9849=>array(76,16,820,731),9850=>array(76,16,820,731),9851=>array(84,0,812,704),9852=>array(83,0,814,731),9853=>array(83,0,814,731),9854=>array(83,0,814,731),9855=>array(149,1,747,731),9856=>array(73,0,797,725),9857=>array(73,0,797,725),9858=>array(73,0,797,725),9859=>array(73,0,797,725),9860=>array(73,0,797,725),9861=>array(73,0,797,725),9862=>array(83,0,813,731),9863=>array(83,0,813,731),9864=>array(83,0,813,731),9865=>array(83,0,813,731),9866=>array(83,0,813,98),9867=>array(83,0,813,98),9868=>array(83,0,813,413),9869=>array(83,0,813,413),9870=>array(83,0,813,413),9871=>array(83,0,813,413),9872=>array(168,3,728,731),9873=>array(168,3,728,731),9874=>array(52,0,844,731),9875=>array(97,-10,799,732),9876=>array(131,0,765,729),9877=>array(61,-10,479,732),9878=>array(59,-10,837,732),9879=>array(61,0,835,732),9880=>array(145,0,750,732),9881=>array(95,-17,802,727),9882=>array(128,-9,768,733),9883=>array(127,0,769,728),9884=>array(127,0,769,729),9888=>array(49,0,848,729),9889=>array(83,2,619,730),9890=>array(85,-125,919,731),9891=>array(79,-206,1023,720),9892=>array(85,-186,1109,856),9893=>array(85,-125,837,917),9894=>array(131,-14,727,869),9895=>array(101,-170,741,884),9896=>array(188,-14,650,869),9897=>array(4,133,829,596),9898=>array(188,133,650,597),9899=>array(188,133,650,597),9900=>array(249,194,589,536),9901=>array(175,194,663,536),9902=>array(41,169,797,560),9903=>array(5,194,833,536),9904=>array(103,237,757,540),9905=>array(211,42,626,698),9906=>array(85,-125,647,731),9907=>array(168,-125,646,731),9908=>array(86,-125,646,731),9909=>array(86,-125,646,731),9910=>array(59,-118,791,643),9911=>array(194,-104,595,710),9912=>array(158,-125,543,731),9920=>array(42,4,796,553),9921=>array(42,4,796,724),9922=>array(42,4,796,553),9923=>array(42,4,796,724),9954=>array(85,-14,647,843),9985=>array(11,190,803,635),9986=>array(42,141,784,588),9987=>array(11,94,803,539),9988=>array(36,119,824,613),9990=>array(42,-14,796,742),9991=>array(42,-14,796,742),9992=>array(59,21,782,708),9993=>array(64,107,773,622),9996=>array(212,0,561,742),9997=>array(21,83,802,678),9998=>array(89,75,724,710),9999=>array(26,198,819,530),10000=>array(89,75,724,710),10001=>array(43,185,757,544),10002=>array(67,209,757,520),10003=>array(150,97,667,630),10004=>array(116,87,721,631),10005=>array(126,72,711,657),10006=>array(85,31,752,698),10007=>array(118,-9,701,732),10008=>array(123,0,754,739),10009=>array(55,0,783,729),10010=>array(55,0,783,729),10011=>array(55,0,783,729),10012=>array(55,0,783,729),10013=>array(165,0,673,729),10014=>array(131,0,678,729),10015=>array(155,0,683,729),10016=>array(55,0,783,729),10017=>array(91,-13,747,744),10018=>array(41,-14,797,742),10019=>array(42,-12,796,742),10020=>array(41,-14,797,742),10021=>array(41,-13,797,743),10022=>array(42,-14,796,745),10023=>array(42,-14,796,745),10025=>array(23,-9,814,743),10026=>array(42,-14,796,742),10027=>array(23,-9,814,743),10028=>array(23,-9,814,743),10029=>array(23,-9,814,743),10030=>array(23,-9,814,743),10031=>array(23,-9,814,743),10032=>array(24,12,815,714),10033=>array(64,0,773,729),10034=>array(74,0,764,729),10035=>array(55,0,783,729),10036=>array(31,-14,787,742),10037=>array(41,-14,797,742),10038=>array(91,-14,747,742),10039=>array(41,-14,797,742),10040=>array(41,-14,797,742),10041=>array(41,-14,797,742),10042=>array(55,0,783,729),10043=>array(82,-14,756,742),10044=>array(82,-14,756,742),10045=>array(84,-14,753,742),10046=>array(79,-14,759,742),10047=>array(54,0,784,709),10048=>array(54,0,784,709),10049=>array(41,-14,797,742),10050=>array(42,-14,796,742),10051=>array(79,-14,759,742),10052=>array(89,0,749,729),10053=>array(76,0,762,729),10054=>array(63,2,773,729),10055=>array(79,-13,759,742),10056=>array(47,-13,791,730),10057=>array(47,-13,791,730),10058=>array(41,-13,797,743),10059=>array(41,-13,797,743),10061=>array(50,-10,847,738),10063=>array(60,-49,837,729),10064=>array(60,0,837,777),10065=>array(60,-49,837,729),10066=>array(60,0,837,777),10070=>array(83,-2,813,728),10072=>array(377,-240,460,760),10073=>array(336,-240,502,760),10074=>array(253,-240,585,760),10075=>array(85,395,288,729),10076=>array(59,395,262,729),10077=>array(85,395,528,729),10078=>array(59,395,502,729),10081=>array(155,-93,772,851),10082=>array(202,-17,636,742),10083=>array(163,-17,675,742),10084=>array(54,83,784,645),10085=>array(168,-1,729,729),10086=>array(62,21,724,702),10087=>array(78,169,759,564),10088=>array(196,-139,648,769),10089=>array(196,-139,648,769),10090=>array(264,-132,574,758),10091=>array(264,-132,574,758),10092=>array(215,-240,607,760),10093=>array(232,-240,623,760),10094=>array(142,-240,685,760),10095=>array(153,-240,696,760),10096=>array(167,-240,656,760),10097=>array(183,-240,672,760),10098=>array(346,-241,535,760),10099=>array(303,-241,492,760),10100=>array(175,-163,634,760),10101=>array(204,-163,663,760),10102=>array(59,-15,788,715),10103=>array(59,-15,788,715),10104=>array(59,-15,788,715),10105=>array(59,-15,788,715),10106=>array(59,-15,788,715),10107=>array(59,-15,788,715),10108=>array(59,-15,788,715),10109=>array(59,-15,788,715),10110=>array(59,-15,788,715),10111=>array(59,-15,788,715),10112=>array(4,-52,833,780),10113=>array(4,-52,833,780),10114=>array(4,-52,833,780),10115=>array(4,-52,833,780),10116=>array(4,-52,833,780),10117=>array(4,-52,833,780),10118=>array(4,-52,833,780),10119=>array(4,-52,833,780),10120=>array(4,-52,833,780),10121=>array(4,-52,833,780),10122=>array(4,-52,833,780),10123=>array(4,-52,833,780),10124=>array(4,-52,833,780),10125=>array(4,-52,833,780),10126=>array(4,-52,833,780),10127=>array(4,-52,833,780),10128=>array(4,-52,833,780),10129=>array(4,-52,833,780),10130=>array(4,-52,833,780),10131=>array(4,-52,833,780),10132=>array(57,75,789,552),10136=>array(123,55,682,614),10137=>array(57,100,789,527),10138=>array(123,13,682,572),10139=>array(57,129,789,498),10140=>array(57,57,764,570),10141=>array(57,100,789,527),10142=>array(57,100,789,527),10143=>array(57,100,789,527),10144=>array(57,100,789,527),10145=>array(57,46,811,581),10146=>array(111,94,789,533),10147=>array(111,94,789,533),10148=>array(111,-4,789,631),10149=>array(57,100,789,548),10150=>array(57,79,789,527),10151=>array(240,-7,606,634),10152=>array(57,100,789,527),10153=>array(57,75,765,552),10154=>array(57,75,765,552),10155=>array(21,12,794,586),10156=>array(21,12,794,586),10157=>array(135,0,774,574),10158=>array(135,0,774,574),10159=>array(62,49,799,574),10161=>array(62,49,799,574),10162=>array(154,-20,721,585),10163=>array(63,157,789,470),10164=>array(81,55,682,655),10165=>array(57,173,789,454),10166=>array(82,-29,682,572),10167=>array(82,55,682,655),10168=>array(57,172,789,455),10169=>array(82,-28,682,572),10170=>array(56,84,789,543),10171=>array(73,140,779,487),10172=>array(79,167,774,460),10173=>array(79,118,774,509),10174=>array(57,81,789,546),10181=>array(54,-163,405,769),10182=>array(52,-163,403,769),10208=>array(3,-233,491,807),10214=>array(86,-132,419,760),10215=>array(86,-132,419,760),10216=>array(104,-132,377,759),10217=>array(80,-132,353,759),10218=>array(104,-132,641,759),10219=>array(80,-132,616,759),10224=>array(41,0,797,732),10225=>array(42,-3,798,729),10226=>array(9,45,816,685),10227=>array(22,45,830,685),10228=>array(57,-14,1108,643),10229=>array(49,87,1376,540),10230=>array(57,87,1385,540),10231=>array(49,87,1385,540),10232=>array(49,87,1376,540),10233=>array(57,87,1385,540),10234=>array(49,87,1385,540),10235=>array(49,87,1376,540),10236=>array(57,87,1385,540),10237=>array(49,87,1376,540),10238=>array(57,87,1385,540),10239=>array(57,87,1385,540),10240=>array(146,586,342,781),10241=>array(146,586,342,781),10242=>array(146,325,342,521),10243=>array(146,325,342,781),10244=>array(146,65,342,261),10245=>array(146,65,342,781),10246=>array(146,65,342,521),10247=>array(146,65,342,781),10248=>array(439,586,635,781),10249=>array(146,586,635,781),10250=>array(146,325,635,781),10251=>array(146,325,635,781),10252=>array(146,65,635,781),10253=>array(146,65,635,781),10254=>array(146,65,635,781),10255=>array(146,65,635,781),10256=>array(439,325,635,521),10257=>array(146,325,635,781),10258=>array(146,325,635,521),10259=>array(146,325,635,781),10260=>array(146,65,635,521),10261=>array(146,65,635,781),10262=>array(146,65,635,521),10263=>array(146,65,635,781),10264=>array(439,325,635,781),10265=>array(146,325,635,781),10266=>array(146,325,635,781),10267=>array(146,325,635,781),10268=>array(146,65,635,781),10269=>array(146,65,635,781),10270=>array(146,65,635,781),10271=>array(146,65,635,781),10272=>array(439,65,635,261),10273=>array(146,65,635,781),10274=>array(146,65,635,521),10275=>array(146,65,635,781),10276=>array(146,65,635,261),10277=>array(146,65,635,781),10278=>array(146,65,635,521),10279=>array(146,65,635,781),10280=>array(439,65,635,781),10281=>array(146,65,635,781),10282=>array(146,65,635,781),10283=>array(146,65,635,781),10284=>array(146,65,635,781),10285=>array(146,65,635,781),10286=>array(146,65,635,781),10287=>array(146,65,635,781),10288=>array(439,65,635,521),10289=>array(146,65,635,781),10290=>array(146,65,635,521),10291=>array(146,65,635,781),10292=>array(146,65,635,521),10293=>array(146,65,635,781),10294=>array(146,65,635,521),10295=>array(146,65,635,781),10296=>array(439,65,635,781),10297=>array(146,65,635,781),10298=>array(146,65,635,781),10299=>array(146,65,635,781),10300=>array(146,65,635,781),10301=>array(146,65,635,781),10302=>array(146,65,635,781),10303=>array(146,65,635,781),10304=>array(146,-195,342,0),10305=>array(146,-195,342,781),10306=>array(146,-195,342,521),10307=>array(146,-195,342,781),10308=>array(146,-195,342,261),10309=>array(146,-195,342,781),10310=>array(146,-195,342,521),10311=>array(146,-195,342,781),10312=>array(146,-195,635,781),10313=>array(146,-195,635,781),10314=>array(146,-195,635,781),10315=>array(146,-195,635,781),10316=>array(146,-195,635,781),10317=>array(146,-195,635,781),10318=>array(146,-195,635,781),10319=>array(146,-195,635,781),10320=>array(146,-195,635,521),10321=>array(146,-195,635,781),10322=>array(146,-195,635,521),10323=>array(146,-195,635,781),10324=>array(146,-195,635,521),10325=>array(146,-195,635,781),10326=>array(146,-195,635,521),10327=>array(146,-195,635,781),10328=>array(146,-195,635,781),10329=>array(146,-195,635,781),10330=>array(146,-195,635,781),10331=>array(146,-195,635,781),10332=>array(146,-195,635,781),10333=>array(146,-195,635,781),10334=>array(146,-195,635,781),10335=>array(146,-195,635,781),10336=>array(146,-195,635,261),10337=>array(146,-195,635,781),10338=>array(146,-195,635,521),10339=>array(146,-195,635,781),10340=>array(146,-195,635,261),10341=>array(146,-195,635,781),10342=>array(146,-195,635,521),10343=>array(146,-195,635,781),10344=>array(146,-195,635,781),10345=>array(146,-195,635,781),10346=>array(146,-195,635,781),10347=>array(146,-195,635,781),10348=>array(146,-195,635,781),10349=>array(146,-195,635,781),10350=>array(146,-195,635,781),10351=>array(146,-195,635,781),10352=>array(146,-195,635,521),10353=>array(146,-195,635,781),10354=>array(146,-195,635,521),10355=>array(146,-195,635,781),10356=>array(146,-195,635,521),10357=>array(146,-195,635,781),10358=>array(146,-195,635,521),10359=>array(146,-195,635,781),10360=>array(146,-195,635,781),10361=>array(146,-195,635,781),10362=>array(146,-195,635,781),10363=>array(146,-195,635,781),10364=>array(146,-195,635,781),10365=>array(146,-195,635,781),10366=>array(146,-195,635,781),10367=>array(146,-195,635,781),10368=>array(439,-195,635,0),10369=>array(146,-195,635,781),10370=>array(146,-195,635,521),10371=>array(146,-195,635,781),10372=>array(146,-195,635,261),10373=>array(146,-195,635,781),10374=>array(146,-195,635,521),10375=>array(146,-195,635,781),10376=>array(439,-195,635,781),10377=>array(146,-195,635,781),10378=>array(146,-195,635,781),10379=>array(146,-195,635,781),10380=>array(146,-195,635,781),10381=>array(146,-195,635,781),10382=>array(146,-195,635,781),10383=>array(146,-195,635,781),10384=>array(439,-195,635,521),10385=>array(146,-195,635,781),10386=>array(146,-195,635,521),10387=>array(146,-195,635,781),10388=>array(146,-195,635,521),10389=>array(146,-195,635,781),10390=>array(146,-195,635,521),10391=>array(146,-195,635,781),10392=>array(439,-195,635,781),10393=>array(146,-195,635,781),10394=>array(146,-195,635,781),10395=>array(146,-195,635,781),10396=>array(146,-195,635,781),10397=>array(146,-195,635,781),10398=>array(146,-195,635,781),10399=>array(146,-195,635,781),10400=>array(439,-195,635,261),10401=>array(146,-195,635,781),10402=>array(146,-195,635,521),10403=>array(146,-195,635,781),10404=>array(146,-195,635,261),10405=>array(146,-195,635,781),10406=>array(146,-195,635,521),10407=>array(146,-195,635,781),10408=>array(439,-195,635,781),10409=>array(146,-195,635,781),10410=>array(146,-195,635,781),10411=>array(146,-195,635,781),10412=>array(146,-195,635,781),10413=>array(146,-195,635,781),10414=>array(146,-195,635,781),10415=>array(146,-195,635,781),10416=>array(439,-195,635,521),10417=>array(146,-195,635,781),10418=>array(146,-195,635,521),10419=>array(146,-195,635,781),10420=>array(146,-195,635,521),10421=>array(146,-195,635,781),10422=>array(146,-195,635,521),10423=>array(146,-195,635,781),10424=>array(439,-195,635,781),10425=>array(146,-195,635,781),10426=>array(146,-195,635,781),10427=>array(146,-195,635,781),10428=>array(146,-195,635,781),10429=>array(146,-195,635,781),10430=>array(146,-195,635,781),10431=>array(146,-195,635,781),10432=>array(146,-195,635,0),10433=>array(146,-195,635,781),10434=>array(146,-195,635,521),10435=>array(146,-195,635,781),10436=>array(146,-195,635,261),10437=>array(146,-195,635,781),10438=>array(146,-195,635,521),10439=>array(146,-195,635,781),10440=>array(146,-195,635,781),10441=>array(146,-195,635,781),10442=>array(146,-195,635,781),10443=>array(146,-195,635,781),10444=>array(146,-195,635,781),10445=>array(146,-195,635,781),10446=>array(146,-195,635,781),10447=>array(146,-195,635,781),10448=>array(146,-195,635,521),10449=>array(146,-195,635,781),10450=>array(146,-195,635,521),10451=>array(146,-195,635,781),10452=>array(146,-195,635,521),10453=>array(146,-195,635,781),10454=>array(146,-195,635,521),10455=>array(146,-195,635,781),10456=>array(146,-195,635,781),10457=>array(146,-195,635,781),10458=>array(146,-195,635,781),10459=>array(146,-195,635,781),10460=>array(146,-195,635,781),10461=>array(146,-195,635,781),10462=>array(146,-195,635,781),10463=>array(146,-195,635,781),10464=>array(146,-195,635,261),10465=>array(146,-195,635,781),10466=>array(146,-195,635,521),10467=>array(146,-195,635,781),10468=>array(146,-195,635,261),10469=>array(146,-195,635,781),10470=>array(146,-195,635,521),10471=>array(146,-195,635,781),10472=>array(146,-195,635,781),10473=>array(146,-195,635,781),10474=>array(146,-195,635,781),10475=>array(146,-195,635,781),10476=>array(146,-195,635,781),10477=>array(146,-195,635,781),10478=>array(146,-195,635,781),10479=>array(146,-195,635,781),10480=>array(146,-195,635,521),10481=>array(146,-195,635,781),10482=>array(146,-195,635,521),10483=>array(146,-195,635,781),10484=>array(146,-195,635,521),10485=>array(146,-195,635,781),10486=>array(146,-195,635,521),10487=>array(146,-195,635,781),10488=>array(146,-195,635,781),10489=>array(146,-195,635,781),10490=>array(146,-195,635,781),10491=>array(146,-195,635,781),10492=>array(146,-195,635,781),10493=>array(146,-195,635,781),10494=>array(146,-195,635,781),10495=>array(146,-195,635,781),10502=>array(49,87,781,540),10503=>array(57,87,789,540),10506=>array(132,0,707,732),10507=>array(132,0,707,732),10560=>array(86,45,726,853),10561=>array(86,45,726,853),10627=>array(125,-163,628,760),10628=>array(125,-163,628,760),10702=>array(106,-258,732,800),10703=>array(106,-1,940,628),10704=>array(106,-1,940,628),10705=>array(106,-48,894,674),10706=>array(106,-48,894,674),10707=>array(106,-48,894,674),10708=>array(106,-48,894,675),10709=>array(106,-48,894,675),10731=>array(3,-233,491,807),10746=>array(106,0,732,627),10747=>array(106,0,732,627),10752=>array(28,-211,972,734),10753=>array(28,-211,972,734),10754=>array(28,-211,972,734),10764=>array(15,-227,1646,754),10765=>array(14,-227,548,754),10766=>array(14,-227,548,754),10767=>array(14,-227,548,754),10768=>array(14,-227,548,754),10769=>array(14,-227,576,754),10770=>array(14,-227,548,754),10771=>array(14,-227,548,754),10772=>array(14,-228,651,754),10773=>array(14,-227,548,754),10774=>array(14,-227,548,754),10775=>array(-30,-227,556,754),10776=>array(14,-227,548,754),10777=>array(14,-227,548,754),10778=>array(14,-227,548,754),10779=>array(15,-227,548,898),10780=>array(15,-372,548,754),10799=>array(125,20,713,607),10858=>array(106,212,732,660),10859=>array(106,-34,732,660),10877=>array(106,-150,732,632),10878=>array(106,-150,732,632),10879=>array(106,-150,732,632),10880=>array(106,-150,732,632),10881=>array(106,-150,732,688),10882=>array(106,-150,732,688),10883=>array(106,-150,732,827),10884=>array(106,-150,732,827),10885=>array(106,-217,732,630),10886=>array(106,-217,732,630),10887=>array(106,-124,732,582),10888=>array(106,-124,732,582),10889=>array(106,-281,732,630),10890=>array(106,-281,732,630),10891=>array(106,-303,732,814),10892=>array(106,-303,732,814),10893=>array(106,-183,732,653),10894=>array(106,-183,732,653),10895=>array(106,-245,732,765),10896=>array(106,-245,732,765),10897=>array(106,-278,732,782),10898=>array(106,-278,732,782),10899=>array(106,-263,732,771),10900=>array(106,-263,732,771),10901=>array(106,-50,732,733),10902=>array(106,-50,732,733),10903=>array(106,-50,732,733),10904=>array(106,-50,732,733),10905=>array(106,-45,732,678),10906=>array(106,-45,732,678),10907=>array(106,-81,732,724),10908=>array(106,-81,732,724),10909=>array(106,13,732,680),10910=>array(106,13,732,680),10911=>array(106,-239,732,746),10912=>array(106,-239,732,746),10926=>array(106,22,732,656),10927=>array(106,-83,732,684),10928=>array(106,-83,732,684),10929=>array(106,-246,732,684),10930=>array(106,-246,732,684),10931=>array(106,-205,732,672),10932=>array(106,-205,732,672),10933=>array(106,-304,732,672),10934=>array(106,-304,732,672),10935=>array(106,-252,732,713),10936=>array(106,-252,732,713),10937=>array(106,-316,732,713),10938=>array(106,-316,732,713),11001=>array(106,-195,732,609),11002=>array(106,-195,732,609),11008=>array(123,-23,744,598),11009=>array(94,-23,715,598),11010=>array(123,-23,744,598),11011=>array(94,-23,715,598),11012=>array(27,46,789,581),11013=>array(27,46,781,581),11014=>array(151,0,687,754),11015=>array(151,-25,687,729),11016=>array(123,-23,744,598),11017=>array(94,-23,715,598),11018=>array(123,-23,744,598),11019=>array(94,-23,715,598),11020=>array(27,46,789,581),11021=>array(151,-25,687,754),11022=>array(57,-25,800,372),11023=>array(57,255,800,652),11024=>array(38,-25,781,372),11025=>array(38,255,781,652),11026=>array(91,-124,854,643),11027=>array(91,-124,854,643),11028=>array(91,-124,854,643),11029=>array(91,-124,854,643),11030=>array(3,-124,766,643),11031=>array(3,-124,766,643),11032=>array(3,-124,766,643),11033=>array(3,-124,766,643),11034=>array(91,-124,854,643),11039=>array(18,-26,852,767),11040=>array(18,-26,852,767),11041=>array(73,-91,800,748),11042=>array(73,-91,800,748),11043=>array(17,-35,856,692),11044=>array(55,-250,1064,770),11091=>array(38,-47,832,788),11092=>array(38,-47,832,788),11360=>array(5,0,610,729),11361=>array(5,0,355,760),11362=>array(-17,0,610,729),11363=>array(6,0,692,729),11364=>array(92,-200,750,729),11365=>array(32,-46,639,594),11366=>array(13,-93,455,822),11367=>array(92,-157,932,729),11368=>array(84,-138,809,760),11369=>array(92,-157,805,729),11370=>array(84,-138,684,760),11371=>array(45,-157,768,729),11372=>array(45,-138,622,547),11373=>array(48,-14,769,741),11374=>array(92,-200,903,729),11375=>array(5,0,769,729),11376=>array(48,-14,769,741),11377=>array(15,0,778,560),11378=>array(30,0,1221,742),11379=>array(35,0,1056,560),11380=>array(38,0,637,586),11381=>array(92,0,606,729),11382=>array(84,0,481,547),11383=>array(64,0,725,552),11385=>array(84,-13,490,760),11386=>array(43,-14,644,560),11387=>array(78,0,467,547),11388=>array(-21,-121,166,425),11389=>array(3,326,484,734),11390=>array(72,-240,670,742),11391=>array(45,-240,680,729),11520=>array(45,-64,609,547),11521=>array(16,-232,625,546),11522=>array(41,-232,629,547),11523=>array(42,-10,585,807),11524=>array(40,-228,613,546),11525=>array(41,-228,988,546),11526=>array(20,-8,668,816),11527=>array(42,-9,974,547),11528=>array(39,0,589,547),11529=>array(41,-227,614,816),11530=>array(39,-9,985,546),11531=>array(42,-8,649,816),11532=>array(39,0,627,816),11533=>array(41,-8,988,546),11534=>array(41,-8,629,546),11535=>array(41,-228,846,816),11536=>array(42,-9,976,816),11537=>array(41,-9,630,816),11538=>array(46,-232,610,546),11539=>array(41,-228,984,661),11540=>array(45,-228,958,546),11541=>array(39,-228,978,816),11542=>array(44,0,628,546),11543=>array(41,-228,630,547),11544=>array(41,-232,627,546),11545=>array(44,-228,628,816),11546=>array(42,-232,610,547),11547=>array(43,-9,658,816),11548=>array(44,-228,989,547),11549=>array(44,-232,619,546),11550=>array(46,-232,639,546),11551=>array(44,-228,615,567),11552=>array(44,-9,1004,546),11553=>array(44,-228,619,816),11554=>array(42,-9,601,626),11555=>array(44,-228,622,816),11556=>array(42,-228,684,546),11557=>array(45,-8,959,816),11568=>array(55,-14,636,380),11569=>array(50,-14,892,742),11570=>array(50,-14,892,742),11571=>array(51,0,674,729),11572=>array(51,0,674,729),11573=>array(56,0,669,729),11574=>array(48,0,627,729),11575=>array(5,0,769,729),11576=>array(5,0,769,729),11577=>array(92,0,610,729),11578=>array(92,0,610,729),11579=>array(73,-14,729,742),11580=>array(73,0,916,729),11581=>array(92,0,754,729),11582=>array(92,0,549,729),11583=>array(92,0,754,729),11584=>array(50,-14,892,742),11585=>array(50,-84,892,815),11586=>array(92,0,281,729),11587=>array(21,0,720,729),11588=>array(92,0,745,729),11589=>array(-30,0,944,729),11590=>array(92,0,598,729),11591=>array(92,0,709,729),11592=>array(73,256,607,445),11593=>array(92,0,610,729),11594=>array(73,0,529,729),11595=>array(64,-14,892,742),11596=>array(82,0,695,729),11597=>array(92,0,745,729),11598=>array(92,0,610,729),11599=>array(92,0,280,729),11600=>array(82,0,695,729),11601=>array(92,0,281,729),11602=>array(42,-14,684,729),11603=>array(55,-14,636,742),11604=>array(50,-14,892,742),11605=>array(50,-95,892,742),11606=>array(92,0,745,729),11607=>array(92,0,281,729),11608=>array(92,0,744,729),11609=>array(50,-14,892,742),11610=>array(50,-14,892,823),11611=>array(50,-14,718,742),11612=>array(79,0,797,729),11613=>array(19,0,751,729),11614=>array(50,-14,718,742),11615=>array(92,0,610,729),11616=>array(5,0,769,729),11617=>array(92,0,745,729),11618=>array(92,0,599,729),11619=>array(50,0,800,729),11620=>array(92,0,654,729),11621=>array(50,0,800,729),11631=>array(64,490,651,729),11800=>array(69,-14,515,728),11807=>array(106,-34,732,415),11810=>array(86,403,389,760),11811=>array(68,403,371,760),11812=>array(86,-132,389,225),11813=>array(68,-132,371,225),11822=>array(69,0,515,742),19904=>array(83,-158,813,729),19905=>array(83,-158,813,729),19906=>array(83,-158,813,729),19907=>array(83,-158,813,729),19908=>array(83,-158,813,729),19909=>array(83,-158,813,729),19910=>array(83,-158,813,729),19911=>array(83,-158,813,729),19912=>array(83,-158,813,729),19913=>array(83,-158,814,729),19914=>array(83,-158,813,729),19915=>array(83,-158,813,729),19916=>array(83,-158,813,729),19917=>array(83,-158,813,729),19918=>array(83,-158,813,729),19919=>array(83,-158,813,729),19920=>array(83,-158,814,729),19921=>array(83,-158,813,729),19922=>array(83,-158,814,729),19923=>array(83,-158,813,729),19924=>array(83,-158,813,729),19925=>array(83,-158,813,729),19926=>array(83,-158,813,729),19927=>array(83,-158,813,729),19928=>array(83,-158,813,729),19929=>array(83,-158,813,729),19930=>array(83,-158,813,729),19931=>array(83,-158,814,729),19932=>array(83,-158,813,729),19933=>array(83,-158,813,729),19934=>array(83,-158,814,729),19935=>array(83,-158,813,729),19936=>array(83,-158,813,729),19937=>array(83,-158,813,729),19938=>array(83,-158,813,729),19939=>array(83,-158,813,729),19940=>array(83,-158,813,729),19941=>array(83,-158,814,729),19942=>array(83,-158,813,729),19943=>array(83,-158,813,729),19944=>array(83,-158,814,729),19945=>array(83,-158,813,729),19946=>array(83,-158,814,729),19947=>array(83,-158,813,729),19948=>array(83,-158,814,729),19949=>array(83,-158,813,729),19950=>array(83,-158,814,729),19951=>array(83,-158,813,729),19952=>array(83,-158,814,729),19953=>array(83,-158,813,729),19954=>array(83,-158,813,729),19955=>array(83,-158,813,729),19956=>array(83,-158,813,729),19957=>array(83,-158,814,729),19958=>array(83,-158,813,729),19959=>array(83,-158,813,729),19960=>array(83,-158,813,729),19961=>array(83,-158,814,729),19962=>array(83,-158,813,729),19963=>array(83,-158,814,729),19964=>array(83,-158,814,729),19965=>array(83,-158,813,729),19966=>array(83,-158,813,729),19967=>array(83,-158,813,729),42192=>array(92,0,692,729),42193=>array(92,0,692,729),42194=>array(41,0,641,729),42195=>array(92,0,778,729),42196=>array(5,0,677,729),42197=>array(5,0,677,729),42198=>array(50,-14,747,742),42199=>array(92,0,805,729),42200=>array(-30,0,683,729),42201=>array(0,-14,439,729),42202=>array(50,-14,670,742),42203=>array(50,-14,670,742),42204=>array(45,0,680,729),42205=>array(92,0,599,729),42206=>array(92,0,599,729),42207=>array(92,0,903,729),42208=>array(92,0,745,729),42209=>array(92,0,610,729),42210=>array(72,-14,647,742),42211=>array(92,0,750,729),42212=>array(20,0,678,729),42213=>array(5,0,769,729),42214=>array(5,0,769,729),42215=>array(92,0,745,729),42216=>array(25,-14,723,742),42217=>array(91,0,530,743),42218=>array(30,0,1072,729),42219=>array(19,0,751,729),42220=>array(-10,0,734,729),42221=>array(70,0,670,729),42222=>array(5,0,769,729),42223=>array(5,0,769,729),42224=>array(92,0,610,729),42225=>array(73,0,591,729),42226=>array(92,0,280,729),42227=>array(50,-14,800,742),42228=>array(92,-14,720,729),42229=>array(92,0,720,743),42230=>array(9,0,527,729),42231=>array(52,0,738,729),42232=>array(73,0,249,189),42233=>array(24,-142,249,189),42234=>array(73,0,601,189),42235=>array(73,-142,601,189),42236=>array(24,-142,249,547),42237=>array(73,0,249,547),42238=>array(73,0,515,405),42239=>array(73,134,515,492),42564=>array(26,-14,601,742),42565=>array(15,-14,511,560),42566=>array(92,0,428,729),42567=>array(83,0,356,547),42572=>array(57,-14,1348,654),42573=>array(47,-13,1126,547),42576=>array(49,0,1142,729),42577=>array(20,0,946,547),42580=>array(55,-14,1082,742),42581=>array(44,-14,888,560),42582=>array(92,0,1088,729),42583=>array(84,-14,880,560),42594=>array(60,-157,1058,729),42595=>array(56,-138,900,547),42596=>array(46,0,1069,729),42597=>array(55,0,888,547),42598=>array(92,0,1233,729),42599=>array(84,0,973,547),42600=>array(50,-14,800,742),42601=>array(43,-14,644,560),42602=>array(50,-14,987,742),42603=>array(43,-14,825,560),42604=>array(50,-14,1356,742),42605=>array(43,-14,1063,560),42606=>array(28,-208,933,743),42634=>array(5,-200,883,729),42635=>array(4,-216,709,547),42636=>array(5,0,677,729),42637=>array(4,0,575,547),42644=>array(81,0,716,729),42645=>array(84,0,634,760),42760=>array(96,0,404,693),42761=>array(96,0,404,693),42762=>array(96,0,404,693),42763=>array(96,0,404,693),42764=>array(96,0,404,693),42765=>array(96,0,404,693),42766=>array(96,0,404,693),42767=>array(96,0,404,693),42768=>array(96,0,404,693),42769=>array(96,0,404,693),42770=>array(96,0,404,693),42771=>array(96,0,404,693),42772=>array(96,0,404,693),42773=>array(96,0,404,693),42774=>array(96,0,404,693),42779=>array(58,326,342,736),42780=>array(58,324,342,734),42781=>array(88,326,199,734),42782=>array(88,326,199,734),42783=>array(88,0,199,408),42786=>array(67,0,409,729),42787=>array(67,0,355,547),42788=>array(56,224,479,742),42789=>array(56,42,479,560),42790=>array(92,-200,745,729),42791=>array(84,-216,634,760),42792=>array(5,-216,986,729),42793=>array(13,-215,810,702),42794=>array(67,-14,616,742),42795=>array(54,-202,493,560),42800=>array(92,0,473,547),42801=>array(52,-14,548,560),42802=>array(5,0,1344,729),42803=>array(43,-14,973,560),42804=>array(5,-14,1234,742),42805=>array(43,-14,1021,560),42806=>array(5,-14,1124,729),42807=>array(43,-14,970,560),42808=>array(5,0,1074,729),42809=>array(43,-14,907,560),42810=>array(5,0,1074,729),42811=>array(43,-14,907,560),42812=>array(5,-216,1030,729),42813=>array(43,-216,907,560),42814=>array(33,-14,653,742),42815=>array(43,-14,526,560),42816=>array(5,0,812,729),42817=>array(6,0,708,760),42822=>array(92,0,822,729),42823=>array(84,0,458,760),42824=>array(41,0,655,729),42825=>array(59,0,473,760),42826=>array(16,-14,902,742),42827=>array(5,-14,809,560),42830=>array(50,-14,1356,742),42831=>array(43,-14,1063,560),42832=>array(16,0,692,729),42833=>array(5,-208,671,560),42834=>array(34,0,907,729),42835=>array(34,-208,892,560),42838=>array(50,-188,800,742),42839=>array(45,-208,711,559),42852=>array(16,0,692,729),42853=>array(5,-208,671,760),42854=>array(16,0,692,729),42855=>array(5,-208,671,760),42880=>array(27,0,545,729),42881=>array(84,-208,259,547),42882=>array(84,-208,730,742),42883=>array(84,-208,634,560),42889=>array(112,0,288,547),42890=>array(83,141,303,405),42891=>array(140,245,316,729),42892=>array(95,458,211,729),42893=>array(81,0,716,729),42894=>array(84,-216,680,760),42896=>array(92,-157,868,729),42897=>array(84,-138,725,560),42912=>array(-11,-14,832,742),42913=>array(-11,-216,727,559),42914=>array(-11,0,805,729),42915=>array(-11,0,684,760),42916=>array(-11,0,848,729),42917=>array(-11,0,723,560),42918=>array(-11,0,781,729),42919=>array(-11,0,504,560),42920=>array(-11,-14,731,742),42921=>array(-11,-14,606,560),42922=>array(-68,0,794,729),43002=>array(84,0,972,547),43003=>array(84,0,591,729),43004=>array(41,0,641,729),43005=>array(92,0,903,729),43006=>array(92,0,280,928),43007=>array(31,0,1294,729),61184=>array(91,602,317,693),61185=>array(48,451,338,693),61186=>array(26,301,363,693),61187=>array(17,150,373,693),61188=>array(13,0,378,693),61189=>array(48,451,338,693),61190=>array(91,451,317,543),61191=>array(48,301,338,543),61192=>array(26,150,363,543),61193=>array(17,0,373,543),61194=>array(26,301,363,693),61195=>array(48,301,338,543),61196=>array(91,301,317,393),61197=>array(48,150,338,393),61198=>array(26,0,363,393),61199=>array(17,150,373,693),61200=>array(26,149,363,542),61201=>array(48,150,338,393),61202=>array(91,150,317,242),61203=>array(48,0,338,242),61204=>array(13,0,378,693),61205=>array(17,0,373,543),61206=>array(26,0,363,393),61207=>array(48,0,338,242),61208=>array(91,0,317,92),61209=>array(96,0,188,693),62464=>array(49,-14,563,819),62465=>array(49,-15,563,823),62466=>array(49,-14,604,828),62467=>array(49,0,853,828),62468=>array(49,-15,563,828),62469=>array(49,-15,563,828),62470=>array(29,-15,612,828),62471=>array(49,-14,846,828),62472=>array(49,0,541,828),62473=>array(49,-14,563,820),62474=>array(49,-6,1114,828),62475=>array(49,-14,563,828),62476=>array(63,-15,578,820),62477=>array(54,0,839,828),62478=>array(49,-15,563,819),62479=>array(49,-15,563,840),62480=>array(49,0,875,828),62481=>array(63,-14,578,819),62482=>array(44,-14,699,828),62483=>array(34,-14,570,828),62484=>array(49,-14,837,828),62485=>array(49,-14,563,819),62486=>array(49,0,858,828),62487=>array(49,-14,563,820),62488=>array(44,-14,558,828),62489=>array(64,0,579,828),62490=>array(50,-15,628,820),62491=>array(49,-14,563,819),62492=>array(63,-14,577,828),62493=>array(49,-14,581,820),62494=>array(63,-14,578,819),62495=>array(24,-14,546,828),62496=>array(49,-15,563,828),62497=>array(63,-15,577,828),62498=>array(49,-73,563,828),62499=>array(49,-15,563,830),62500=>array(49,-15,569,828),62501=>array(49,-14,627,828),62502=>array(49,-14,914,828),62504=>array(45,-228,960,816),62505=>array(54,-223,791,843),62506=>array(54,-14,510,761),62507=>array(54,-14,510,773),62508=>array(54,-14,510,866),62509=>array(54,-14,510,812),62510=>array(54,-14,510,877),62511=>array(54,-14,510,803),62512=>array(54,-232,501,761),62513=>array(54,-232,501,793),62514=>array(54,-232,501,891),62515=>array(54,-232,501,803),62516=>array(54,0,520,761),62517=>array(54,0,520,793),62518=>array(54,0,520,803),62519=>array(54,-0,770,761),62520=>array(54,-0,770,773),62521=>array(54,-0,770,884),62522=>array(54,-0,770,793),62523=>array(54,-0,770,803),62524=>array(54,-232,557,761),62525=>array(54,-232,557,773),62526=>array(54,-232,557,894),62527=>array(54,-232,557,793),62528=>array(54,-232,557,803),62529=>array(54,-232,557,844),63173=>array(43,-14,644,760),64256=>array(19,0,819,760),64257=>array(21,0,657,760),64258=>array(19,0,657,760),64259=>array(19,0,1031,760),64260=>array(19,0,1032,760),64261=>array(19,0,785,760),64262=>array(52,-14,997,742),64275=>array(74,-14,1300,760),64276=>array(78,-14,1301,760),64277=>array(78,-208,1300,760),64278=>array(78,-208,1300,760),64279=>array(78,-208,1629,760),64285=>array(66,32,228,547),64286=>array(182,635,510,780),64287=>array(66,32,500,547),64288=>array(38,0,590,547),64289=>array(85,0,855,547),64290=>array(43,0,731,547),64291=>array(91,0,778,547),64292=>array(43,0,730,547),64293=>array(43,0,730,739),64294=>array(91,0,778,547),64295=>array(43,0,730,547),64296=>array(47,-4,730,547),64297=>array(106,256,732,627),64298=>array(20,0,750,710),64299=>array(20,0,750,723),64300=>array(20,0,750,710),64301=>array(20,0,750,710),64302=>array(84,-171,644,547),64303=>array(84,-217,644,547),64304=>array(84,-171,644,547),64305=>array(43,0,567,547),64306=>array(43,-9,418,547),64307=>array(43,0,545,547),64308=>array(91,0,596,547),64309=>array(43,0,346,547),64310=>array(43,0,442,547),64312=>array(90,-13,624,553),64313=>array(43,164,369,547),64314=>array(43,-240,487,547),64315=>array(43,0,511,547),64316=>array(43,0,527,711),64318=>array(43,0,633,554),64320=>array(43,0,362,547),64321=>array(90,-13,624,547),64323=>array(91,-240,584,547),64324=>array(91,0,603,547),64326=>array(33,0,564,547),64327=>array(91,-240,660,546),64328=>array(43,0,511,547),64329=>array(20,0,750,547),64330=>array(10,-4,592,547),64331=>array(91,0,252,710),64332=>array(43,0,567,710),64333=>array(43,0,511,710),64334=>array(91,0,603,710),64335=>array(43,0,652,729),64338=>array(63,-244,921,327),64339=>array(63,-244,1068,327),64340=>array(-10,-244,292,293),64341=>array(-10,-244,418,293),64342=>array(63,-244,921,327),64343=>array(63,-244,1068,327),64344=>array(-10,-244,302,293),64345=>array(-10,-244,418,293),64346=>array(63,-244,921,327),64347=>array(63,-244,1068,327),64348=>array(-10,-244,302,293),64349=>array(-10,-244,418,293),64350=>array(63,-5,921,566),64351=>array(63,-5,1068,566),64352=>array(-10,0,292,640),64353=>array(-10,0,418,640),64354=>array(63,-5,921,566),64355=>array(63,-5,1068,566),64356=>array(-10,0,302,640),64357=>array(-10,0,418,640),64358=>array(63,-5,921,599),64359=>array(63,-5,1068,599),64360=>array(-10,0,333,672),64361=>array(-10,0,418,672),64362=>array(63,-24,1082,786),64363=>array(63,-29,1201,786),64364=>array(-10,0,575,786),64365=>array(-10,0,729,786),64366=>array(63,-24,1082,786),64367=>array(63,-29,1201,786),64368=>array(-10,0,575,786),64369=>array(-10,0,729,786),64370=>array(77,-244,720,425),64371=>array(77,-244,730,425),64372=>array(-10,-244,628,405),64373=>array(-10,-244,730,405),64374=>array(77,-244,720,425),64375=>array(77,-244,730,425),64376=>array(-10,-117,628,405),64377=>array(-10,-117,730,405),64378=>array(77,-244,720,425),64379=>array(77,-244,730,425),64380=>array(-10,-244,628,405),64381=>array(-10,-244,730,405),64382=>array(77,-244,720,425),64383=>array(77,-244,730,425),64384=>array(-10,-244,628,405),64385=>array(-10,-244,730,405),64386=>array(61,-146,442,415),64387=>array(61,-146,587,415),64388=>array(61,-15,442,586),64389=>array(61,-15,587,586),64390=>array(61,-15,442,708),64391=>array(61,-15,587,708),64392=>array(61,-15,442,746),64393=>array(61,-15,587,746),64394=>array(-42,-244,508,615),64395=>array(-42,-244,632,615),64396=>array(-42,-244,520,648),64397=>array(-42,-244,632,648),64398=>array(63,-39,1024,760),64399=>array(63,-39,1034,760),64400=>array(-10,0,582,760),64401=>array(-10,0,591,760),64402=>array(63,-39,1024,910),64403=>array(63,-39,1034,910),64404=>array(-10,0,582,910),64405=>array(-10,0,591,910),64406=>array(63,-293,1024,910),64407=>array(63,-293,1034,910),64408=>array(-10,-269,582,910),64409=>array(-10,-269,591,910),64410=>array(63,-39,1024,910),64411=>array(63,-39,1034,910),64412=>array(-10,0,582,910),64413=>array(-10,0,591,910),64414=>array(62,-165,779,366),64415=>array(62,-244,910,287),64416=>array(62,-165,779,636),64417=>array(62,-244,910,514),64418=>array(-10,0,333,672),64419=>array(-10,0,418,672),64426=>array(70,-33,877,506),64427=>array(70,-244,890,369),64428=>array(-10,-33,633,506),64429=>array(-10,-244,670,369),64467=>array(70,-27,814,854),64468=>array(70,-27,941,854),64469=>array(-10,0,582,928),64470=>array(-10,0,591,928),64473=>array(-42,-244,547,556),64474=>array(-42,-244,637,556),64488=>array(-10,0,292,293),64489=>array(-10,0,418,293),64508=>array(63,-107,863,462),64509=>array(63,-126,1021,291),64510=>array(-10,-166,302,293),64511=>array(-10,-166,418,293),65024=>array(-419,735,0,880),65025=>array(-419,735,0,880),65026=>array(-419,735,0,880),65027=>array(-419,735,0,880),65028=>array(-419,735,0,880),65029=>array(-419,735,0,880),65030=>array(-419,735,0,880),65031=>array(-419,735,0,880),65032=>array(-419,735,0,880),65033=>array(-419,735,0,880),65034=>array(-419,735,0,880),65035=>array(-419,735,0,880),65036=>array(-419,735,0,880),65037=>array(-419,735,0,880),65038=>array(-419,735,0,880),65039=>array(-419,735,0,880),65056=>array(-419,735,0,880),65057=>array(0,735,419,880),65058=>array(-362,756,0,894),65059=>array(0,756,362,894),65136=>array(28,591,313,825),65137=>array(-10,0,352,825),65138=>array(28,591,313,881),65139=>array(51,0,356,177),65140=>array(28,-239,313,-5),65142=>array(28,591,313,723),65143=>array(-10,0,352,723),65144=>array(28,590,313,881),65145=>array(-10,0,352,881),65146=>array(28,-137,313,-5),65147=>array(-10,-137,352,125),65148=>array(9,599,333,869),65149=>array(-10,0,352,869),65150=>array(36,610,304,878),65151=>array(-10,0,352,878),65152=>array(73,20,437,493),65153=>array(-20,0,362,955),65154=>array(-20,0,385,955),65155=>array(75,0,259,993),65156=>array(75,0,385,993),65157=>array(-42,-244,547,603),65158=>array(-42,-244,637,603),65159=>array(76,-245,259,760),65160=>array(76,-245,385,760),65161=>array(63,-107,863,603),65162=>array(63,-126,1021,480),65163=>array(-10,0,292,627),65164=>array(-10,0,418,627),65165=>array(84,0,259,760),65166=>array(84,0,385,760),65167=>array(63,-149,921,327),65168=>array(63,-149,1068,327),65169=>array(-10,-173,292,293),65170=>array(-10,-173,418,293),65171=>array(48,-30,540,513),65172=>array(65,0,616,513),65173=>array(63,-5,921,415),65174=>array(63,-5,1068,415),65175=>array(-10,0,302,488),65176=>array(-10,0,418,488),65177=>array(63,-5,921,537),65178=>array(63,-5,1068,537),65179=>array(-10,0,302,610),65180=>array(-10,0,418,610),65181=>array(77,-244,720,425),65182=>array(77,-244,730,425),65183=>array(-10,-173,628,405),65184=>array(-10,-173,730,405),65185=>array(77,-244,720,425),65186=>array(77,-244,730,425),65187=>array(-10,0,628,405),65188=>array(-10,0,730,405),65189=>array(77,-244,720,579),65190=>array(77,-244,730,579),65191=>array(-10,0,628,530),65192=>array(-10,0,730,530),65193=>array(61,-15,442,415),65194=>array(61,-15,587,415),65195=>array(61,-15,442,579),65196=>array(61,-15,587,579),65197=>array(-42,-244,508,269),65198=>array(-42,-244,632,269),65199=>array(-42,-244,508,457),65200=>array(-42,-244,632,457),65201=>array(63,-244,1297,366),65202=>array(63,-244,1423,366),65203=>array(-10,-14,901,366),65204=>array(-10,-14,1027,366),65205=>array(63,-244,1297,586),65206=>array(63,-244,1423,586),65207=>array(-10,-14,901,586),65208=>array(-10,-14,1027,586),65209=>array(63,-244,1265,362),65210=>array(63,-244,1374,362),65211=>array(-10,0,886,362),65212=>array(-10,0,995,362),65213=>array(63,-244,1265,457),65214=>array(63,-244,1374,457),65215=>array(-10,0,886,481),65216=>array(-10,0,995,481),65217=>array(70,0,971,760),65218=>array(70,0,1081,760),65219=>array(-10,0,875,760),65220=>array(-10,0,984,760),65221=>array(70,0,971,760),65222=>array(70,0,1081,760),65223=>array(-10,0,875,760),65224=>array(-10,0,984,760),65225=>array(87,-244,720,521),65226=>array(57,-244,693,382),65227=>array(-10,0,583,521),65228=>array(-10,0,574,382),65229=>array(87,-244,720,652),65230=>array(57,-244,693,530),65231=>array(-10,0,583,652),65232=>array(-10,0,574,530),65233=>array(63,-24,1082,627),65234=>array(63,-29,1201,627),65235=>array(-10,0,575,627),65236=>array(-10,0,729,627),65237=>array(52,-215,825,635),65238=>array(52,-244,911,476),65239=>array(-10,0,575,635),65240=>array(-10,0,729,635),65241=>array(70,-27,814,760),65242=>array(70,-27,941,760),65243=>array(-10,0,582,760),65244=>array(-10,0,591,760),65245=>array(70,-142,778,760),65246=>array(70,-142,902,760),65247=>array(-10,0,292,760),65248=>array(-10,0,418,760),65249=>array(68,-244,660,369),65250=>array(68,-244,794,311),65251=>array(-10,-23,546,311),65252=>array(-10,-23,680,311),65253=>array(62,-165,779,457),65254=>array(62,-244,910,383),65255=>array(-10,0,292,481),65256=>array(-10,0,418,481),65257=>array(48,-30,540,358),65258=>array(65,0,616,366),65259=>array(-10,-33,633,506),65260=>array(-10,-244,670,369),65261=>array(-42,-244,547,322),65262=>array(-42,-244,637,322),65263=>array(63,-107,863,462),65264=>array(63,-126,1021,291),65265=>array(63,-244,863,462),65266=>array(63,-244,1021,291),65267=>array(-10,-166,302,293),65268=>array(-10,-166,418,293),65269=>array(-62,-15,643,882),65270=>array(-62,-15,769,882),65271=>array(33,-15,643,944),65272=>array(33,-15,769,944),65273=>array(41,-245,643,760),65274=>array(41,-245,769,760),65275=>array(41,-15,643,760),65276=>array(41,-15,769,760),65279=>array(24,-139,1089,926),65529=>array(24,-139,1089,926),65530=>array(24,-139,1089,926),65531=>array(24,-139,1089,926),65532=>array(24,-139,1089,926),65533=>array(24,-139,1089,926),65535=>array(50,-177,550,705));
|
15 |
-
$cw=array(0=>600,32=>348,33=>456,34=>521,35=>838,36=>696,37=>1002,38=>872,39=>306,40=>457,41=>457,42=>523,43=>838,44=>380,45=>415,46=>380,47=>365,48=>696,49=>696,50=>696,51=>696,52=>696,53=>696,54=>696,55=>696,56=>696,57=>696,58=>400,59=>400,60=>838,61=>838,62=>838,63=>580,64=>1000,65=>774,66=>762,67=>734,68=>830,69=>683,70=>683,71=>821,72=>837,73=>372,74=>372,75=>775,76=>637,77=>995,78=>837,79=>850,80=>733,81=>850,82=>770,83=>720,84=>682,85=>812,86=>774,87=>1103,88=>771,89=>724,90=>725,91=>457,92=>365,93=>457,94=>838,95=>500,96=>500,97=>675,98=>716,99=>593,100=>716,101=>678,102=>435,103=>716,104=>712,105=>343,106=>343,107=>665,108=>343,109=>1042,110=>712,111=>687,112=>716,113=>716,114=>493,115=>595,116=>478,117=>712,118=>652,119=>924,120=>645,121=>652,122=>582,123=>712,124=>365,125=>712,126=>838,160=>348,161=>456,162=>696,163=>696,164=>636,165=>696,166=>365,167=>500,168=>500,169=>1000,170=>564,171=>646,172=>838,173=>415,174=>1000,175=>500,176=>500,177=>838,178=>438,179=>438,180=>500,181=>736,182=>636,183=>380,184=>500,185=>438,186=>564,187=>646,188=>1035,189=>1035,190=>1035,191=>580,192=>774,193=>774,194=>774,195=>774,196=>774,197=>774,198=>1085,199=>734,200=>683,201=>683,202=>683,203=>683,204=>372,205=>372,206=>372,207=>372,208=>838,209=>837,210=>850,211=>850,212=>850,213=>850,214=>850,215=>838,216=>850,217=>812,218=>812,219=>812,220=>812,221=>724,222=>738,223=>719,224=>675,225=>675,226=>675,227=>675,228=>675,229=>675,230=>1048,231=>593,232=>678,233=>678,234=>678,235=>678,236=>343,237=>343,238=>343,239=>343,240=>687,241=>712,242=>687,243=>687,244=>687,245=>687,246=>687,247=>838,248=>687,249=>712,250=>712,251=>712,252=>712,253=>652,254=>716,255=>652,256=>774,257=>675,258=>774,259=>675,260=>774,261=>675,262=>734,263=>593,264=>734,265=>593,266=>734,267=>593,268=>734,269=>593,270=>830,271=>716,272=>838,273=>716,274=>683,275=>678,276=>683,277=>678,278=>683,279=>678,280=>683,281=>678,282=>683,283=>678,284=>821,285=>716,286=>821,287=>716,288=>821,289=>716,290=>821,291=>716,292=>837,293=>712,294=>974,295=>790,296=>372,297=>343,298=>372,299=>343,300=>372,301=>343,302=>372,303=>343,304=>372,305=>343,306=>744,307=>686,308=>372,309=>343,310=>775,311=>665,312=>665,313=>637,314=>343,315=>637,316=>343,317=>637,318=>479,319=>637,320=>557,321=>642,322=>371,323=>837,324=>712,325=>837,326=>712,327=>837,328=>712,329=>983,330=>837,331=>712,332=>850,333=>687,334=>850,335=>687,336=>850,337=>687,338=>1167,339=>1094,340=>770,341=>493,342=>770,343=>493,344=>770,345=>493,346=>720,347=>595,348=>720,349=>595,350=>720,351=>595,352=>720,353=>595,354=>682,355=>478,356=>682,357=>478,358=>682,359=>478,360=>812,361=>712,362=>812,363=>712,364=>812,365=>712,366=>812,367=>712,368=>812,369=>712,370=>812,371=>712,372=>1103,373=>924,374=>724,375=>652,376=>724,377=>725,378=>582,379=>725,380=>582,381=>725,382=>582,383=>435,384=>716,385=>811,386=>762,387=>716,388=>762,389=>716,390=>734,391=>734,392=>593,393=>838,394=>879,395=>757,396=>716,397=>688,398=>683,399=>849,400=>696,401=>683,402=>435,403=>821,404=>793,405=>1045,406=>436,407=>389,408=>775,409=>665,410=>360,411=>592,412=>1042,413=>837,414=>712,415=>850,416=>874,417=>687,418=>1083,419=>912,420=>782,421=>716,422=>770,423=>720,424=>595,425=>683,426=>552,427=>478,428=>707,429=>478,430=>682,431=>835,432=>712,433=>850,434=>813,435=>797,436=>778,437=>725,438=>582,439=>772,440=>772,441=>641,442=>582,443=>696,444=>772,445=>641,446=>573,447=>716,448=>372,449=>659,450=>544,451=>372,452=>1555,453=>1412,454=>1298,455=>1009,456=>980,457=>686,458=>1209,459=>1180,460=>1055,461=>774,462=>675,463=>372,464=>343,465=>850,466=>687,467=>812,468=>712,469=>812,470=>712,471=>812,472=>712,473=>812,474=>712,475=>812,476=>712,477=>678,478=>774,479=>675,480=>774,481=>675,482=>1085,483=>1048,484=>821,485=>716,486=>821,487=>716,488=>775,489=>665,490=>850,491=>687,492=>850,493=>687,494=>772,495=>582,496=>343,497=>1555,498=>1412,499=>1298,500=>821,501=>716,502=>1289,503=>787,504=>837,505=>712,506=>774,507=>675,508=>1085,509=>1048,510=>850,511=>687,512=>774,513=>675,514=>774,515=>675,516=>683,517=>678,518=>683,519=>678,520=>372,521=>343,522=>372,523=>343,524=>850,525=>687,526=>850,527=>687,528=>770,529=>493,530=>770,531=>493,532=>812,533=>712,534=>812,535=>712,536=>720,537=>595,538=>682,539=>478,540=>690,541=>607,542=>837,543=>712,544=>837,545=>865,546=>809,547=>659,548=>725,549=>582,550=>774,551=>675,552=>683,553=>678,554=>850,555=>687,556=>850,557=>687,558=>850,559=>687,560=>850,561=>687,562=>724,563=>652,564=>492,565=>867,566=>512,567=>343,568=>1088,569=>1088,570=>774,571=>734,572=>593,573=>637,574=>682,575=>595,576=>582,577=>782,578=>614,579=>762,580=>812,581=>774,582=>683,583=>678,584=>372,585=>343,586=>860,587=>791,588=>770,589=>493,590=>724,591=>652,592=>675,593=>716,594=>716,595=>716,596=>593,597=>593,598=>717,599=>792,600=>678,601=>678,602=>876,603=>557,604=>545,605=>815,606=>731,607=>343,608=>792,609=>716,610=>627,611=>644,612=>635,613=>712,614=>712,615=>712,616=>545,617=>440,618=>545,619=>559,620=>693,621=>343,622=>841,623=>1042,624=>1042,625=>1042,626=>712,627=>793,628=>707,629=>687,630=>909,631=>681,632=>796,633=>538,634=>538,635=>650,636=>493,637=>493,638=>596,639=>596,640=>642,641=>642,642=>595,643=>415,644=>435,645=>605,646=>552,647=>478,648=>478,649=>920,650=>772,651=>670,652=>652,653=>924,654=>652,655=>724,656=>694,657=>684,658=>641,659=>641,660=>573,661=>573,662=>573,663=>573,664=>850,665=>633,666=>731,667=>685,668=>691,669=>343,670=>732,671=>539,672=>792,673=>573,674=>573,675=>1156,676=>1214,677=>1155,678=>975,679=>769,680=>929,681=>1026,682=>862,683=>780,684=>591,685=>415,686=>677,687=>789,688=>456,689=>456,690=>219,691=>315,692=>315,693=>315,694=>411,695=>591,696=>417,697=>302,698=>521,699=>380,700=>380,701=>380,702=>366,703=>366,704=>326,705=>326,706=>500,707=>500,708=>500,709=>500,710=>500,711=>500,712=>306,713=>500,714=>500,715=>500,716=>306,717=>500,718=>500,719=>500,720=>337,721=>337,722=>366,723=>366,724=>500,725=>500,726=>416,727=>328,728=>500,729=>500,730=>500,731=>500,732=>500,733=>500,734=>351,735=>500,736=>412,737=>219,738=>381,739=>413,740=>326,741=>500,742=>500,743=>500,744=>500,745=>500,748=>500,749=>500,750=>657,755=>500,759=>500,768=>0,769=>0,770=>0,771=>0,772=>0,773=>0,774=>0,775=>0,776=>0,777=>0,778=>0,779=>0,780=>0,781=>0,782=>0,783=>0,784=>0,785=>0,786=>0,787=>0,788=>0,789=>0,790=>0,791=>0,792=>0,793=>0,794=>0,795=>0,796=>0,797=>0,798=>0,799=>0,800=>0,801=>0,802=>0,803=>0,804=>0,805=>0,806=>0,807=>0,808=>0,809=>0,810=>0,811=>0,812=>0,813=>0,814=>0,815=>0,816=>0,817=>0,818=>0,819=>0,820=>0,821=>0,822=>0,823=>0,824=>0,825=>0,826=>0,827=>0,828=>0,829=>0,830=>0,831=>0,832=>0,833=>0,834=>0,835=>0,836=>0,837=>0,838=>0,839=>0,840=>0,841=>0,842=>0,843=>0,844=>0,845=>0,846=>0,847=>0,849=>0,850=>0,851=>0,855=>0,856=>0,858=>0,860=>0,861=>0,862=>0,863=>0,864=>0,865=>0,866=>0,880=>698,881=>565,882=>1022,883=>836,884=>302,885=>302,886=>837,887=>701,890=>500,891=>593,892=>550,893=>549,894=>400,900=>441,901=>500,902=>797,903=>380,904=>846,905=>1009,906=>563,908=>891,910=>980,911=>894,912=>390,913=>774,914=>762,915=>637,916=>774,917=>683,918=>725,919=>837,920=>850,921=>372,922=>775,923=>774,924=>995,925=>837,926=>632,927=>850,928=>837,929=>733,931=>683,932=>682,933=>724,934=>850,935=>771,936=>850,937=>850,938=>372,939=>724,940=>687,941=>557,942=>712,943=>390,944=>675,945=>687,946=>716,947=>681,948=>687,949=>557,950=>591,951=>712,952=>687,953=>390,954=>710,955=>633,956=>736,957=>681,958=>591,959=>687,960=>791,961=>716,962=>593,963=>779,964=>638,965=>675,966=>782,967=>645,968=>794,969=>869,970=>390,971=>675,972=>687,973=>675,974=>869,975=>775,976=>651,977=>661,978=>746,979=>981,980=>746,981=>796,982=>869,983=>744,984=>850,985=>687,986=>734,987=>593,988=>683,989=>494,990=>702,991=>660,992=>919,993=>627,994=>1093,995=>837,996=>832,997=>716,998=>928,999=>744,1000=>733,1001=>650,1002=>789,1003=>671,1004=>752,1005=>716,1006=>682,1007=>590,1008=>744,1009=>716,1010=>593,1011=>343,1012=>850,1013=>645,1014=>644,1015=>738,1016=>716,1017=>734,1018=>995,1019=>732,1020=>716,1021=>698,1022=>734,1023=>698,1024=>683,1025=>683,1026=>878,1027=>637,1028=>734,1029=>720,1030=>372,1031=>372,1032=>372,1033=>1154,1034=>1130,1035=>878,1036=>817,1037=>837,1038=>771,1039=>837,1040=>774,1041=>762,1042=>762,1043=>637,1044=>891,1045=>683,1046=>1224,1047=>710,1048=>837,1049=>837,1050=>817,1051=>831,1052=>995,1053=>837,1054=>850,1055=>837,1056=>733,1057=>734,1058=>682,1059=>771,1060=>992,1061=>771,1062=>928,1063=>808,1064=>1235,1065=>1326,1066=>939,1067=>1036,1068=>762,1069=>734,1070=>1174,1071=>770,1072=>675,1073=>698,1074=>633,1075=>522,1076=>808,1077=>678,1078=>995,1079=>581,1080=>701,1081=>701,1082=>679,1083=>732,1084=>817,1085=>691,1086=>687,1087=>691,1088=>716,1089=>593,1090=>580,1091=>652,1092=>992,1093=>645,1094=>741,1095=>687,1096=>1062,1097=>1105,1098=>751,1099=>904,1100=>632,1101=>593,1102=>972,1103=>642,1104=>678,1105=>678,1106=>714,1107=>522,1108=>593,1109=>595,1110=>343,1111=>343,1112=>343,1113=>991,1114=>956,1115=>734,1116=>679,1117=>701,1118=>652,1119=>691,1120=>1093,1121=>869,1122=>840,1123=>736,1124=>1012,1125=>839,1126=>992,1127=>832,1128=>1358,1129=>1121,1130=>850,1131=>687,1132=>1236,1133=>1007,1134=>696,1135=>557,1136=>1075,1137=>1061,1138=>850,1139=>687,1140=>850,1141=>695,1142=>850,1143=>695,1144=>1148,1145=>1043,1146=>1074,1147=>863,1148=>1405,1149=>1173,1150=>1093,1151=>869,1152=>734,1153=>593,1154=>652,1155=>0,1156=>0,1157=>0,1158=>0,1159=>0,1160=>418,1161=>418,1162=>957,1163=>807,1164=>762,1165=>611,1166=>733,1167=>716,1168=>637,1169=>522,1170=>666,1171=>543,1172=>808,1173=>669,1174=>1224,1175=>995,1176=>710,1177=>581,1178=>775,1179=>679,1180=>817,1181=>679,1182=>817,1183=>679,1184=>1015,1185=>826,1186=>956,1187=>808,1188=>1103,1189=>874,1190=>1273,1191=>1017,1192=>952,1193=>858,1194=>734,1195=>593,1196=>682,1197=>580,1198=>724,1199=>652,1200=>724,1201=>652,1202=>771,1203=>645,1204=>1112,1205=>1000,1206=>808,1207=>687,1208=>808,1209=>687,1210=>808,1211=>712,1212=>1026,1213=>810,1214=>1026,1215=>810,1216=>372,1217=>1224,1218=>995,1219=>775,1220=>630,1221=>951,1222=>805,1223=>837,1224=>691,1225=>957,1226=>807,1227=>808,1228=>687,1229=>1115,1230=>933,1231=>343,1232=>774,1233=>675,1234=>774,1235=>675,1236=>1085,1237=>1048,1238=>683,1239=>678,1240=>849,1241=>678,1242=>849,1243=>678,1244=>1224,1245=>995,1246=>710,1247=>581,1248=>772,1249=>641,1250=>837,1251=>701,1252=>837,1253=>701,1254=>850,1255=>687,1256=>850,1257=>687,1258=>850,1259=>687,1260=>734,1261=>593,1262=>771,1263=>652,1264=>771,1265=>652,1266=>771,1267=>652,1268=>808,1269=>687,1270=>637,1271=>522,1272=>1036,1273=>904,1274=>666,1275=>543,1276=>771,1277=>645,1278=>771,1279=>645,1280=>762,1281=>608,1282=>1159,1283=>893,1284=>1119,1285=>920,1286=>828,1287=>693,1288=>1242,1289=>1017,1290=>1289,1291=>1013,1292=>839,1293=>638,1294=>938,1295=>803,1296=>696,1297=>557,1298=>831,1299=>732,1300=>1286,1301=>1068,1302=>1065,1303=>979,1304=>1082,1305=>1013,1306=>850,1307=>716,1308=>1103,1309=>924,1310=>817,1311=>679,1312=>1267,1313=>1059,1314=>1273,1315=>1017,1316=>957,1317=>807,1329=>813,1330=>729,1331=>728,1332=>731,1333=>729,1334=>733,1335=>652,1336=>720,1337=>903,1338=>728,1339=>666,1340=>558,1341=>961,1342=>788,1343=>713,1344=>651,1345=>730,1346=>715,1347=>704,1348=>780,1349=>689,1350=>715,1351=>708,1352=>731,1353=>677,1354=>867,1355=>711,1356=>780,1357=>731,1358=>715,1359=>693,1360=>666,1361=>698,1362=>576,1363=>833,1364=>698,1365=>763,1366=>855,1369=>330,1370=>342,1371=>308,1372=>374,1373=>313,1374=>461,1375=>468,1377=>938,1378=>642,1379=>704,1380=>708,1381=>642,1382=>644,1383=>565,1384=>642,1385=>756,1386=>704,1387=>643,1388=>310,1389=>984,1390=>638,1391=>643,1392=>643,1393=>603,1394=>643,1395=>642,1396=>643,1397=>309,1398=>643,1399=>486,1400=>643,1401=>366,1402=>938,1403=>573,1404=>666,1405=>643,1406=>643,1407=>934,1408=>643,1409=>643,1410=>479,1411=>934,1412=>648,1413=>620,1414=>813,1415=>812,1417=>360,1418=>374,1456=>0,1457=>0,1458=>0,1459=>0,1460=>0,1461=>0,1462=>0,1463=>0,1464=>0,1465=>0,1466=>0,1467=>0,1468=>0,1469=>0,1470=>415,1471=>0,1472=>372,1473=>0,1474=>0,1475=>372,1478=>497,1479=>0,1488=>728,1489=>610,1490=>447,1491=>588,1492=>687,1493=>343,1494=>400,1495=>687,1496=>679,1497=>294,1498=>578,1499=>566,1500=>605,1501=>696,1502=>724,1503=>343,1504=>453,1505=>680,1506=>666,1507=>675,1508=>658,1509=>661,1510=>653,1511=>736,1512=>602,1513=>758,1514=>683,1520=>664,1521=>567,1522=>519,1523=>444,1524=>710,1542=>667,1543=>667,1545=>884,1546=>1157,1548=>380,1557=>0,1563=>400,1567=>580,1569=>511,1570=>343,1571=>343,1572=>622,1573=>343,1574=>917,1575=>343,1576=>1005,1577=>590,1578=>1005,1579=>1005,1580=>721,1581=>721,1582=>721,1583=>513,1584=>513,1585=>576,1586=>576,1587=>1380,1588=>1380,1589=>1345,1590=>1345,1591=>1039,1592=>1039,1593=>683,1594=>683,1600=>342,1601=>1162,1602=>894,1603=>917,1604=>868,1605=>733,1606=>854,1607=>590,1608=>622,1609=>917,1610=>917,1611=>0,1612=>0,1613=>0,1614=>0,1615=>0,1616=>0,1617=>0,1618=>0,1619=>0,1620=>0,1621=>0,1623=>0,1626=>500,1632=>610,1633=>610,1634=>610,1635=>610,1636=>610,1637=>610,1638=>610,1639=>610,1640=>610,1641=>610,1642=>610,1643=>374,1644=>380,1645=>545,1646=>1005,1647=>894,1648=>0,1652=>292,1657=>1005,1658=>1005,1659=>1005,1660=>1005,1661=>1005,1662=>1005,1663=>1005,1664=>1005,1665=>721,1666=>721,1667=>721,1668=>721,1669=>721,1670=>721,1671=>721,1672=>445,1673=>445,1674=>445,1675=>445,1676=>445,1677=>445,1678=>445,1679=>445,1680=>445,1681=>576,1682=>576,1683=>576,1684=>576,1685=>681,1686=>576,1687=>576,1688=>576,1689=>576,1690=>1380,1691=>1380,1692=>1380,1693=>1345,1694=>1345,1695=>1039,1696=>683,1697=>1162,1698=>1162,1699=>1162,1700=>1162,1701=>1162,1702=>1162,1703=>894,1704=>894,1705=>1024,1706=>1271,1707=>1024,1708=>917,1709=>917,1710=>917,1711=>1024,1712=>1024,1713=>1024,1714=>1024,1715=>1024,1716=>1024,1717=>868,1718=>868,1719=>868,1720=>868,1721=>854,1722=>854,1723=>854,1724=>854,1725=>854,1726=>938,1727=>721,1734=>622,1740=>917,1742=>917,1749=>590,1776=>610,1777=>610,1778=>610,1779=>610,1780=>610,1781=>610,1782=>610,1783=>610,1784=>610,1785=>610,1984=>696,1985=>696,1986=>696,1987=>696,1988=>696,1989=>696,1990=>696,1991=>696,1992=>696,1993=>696,1994=>343,1995=>547,1996=>543,1997=>652,1998=>691,1999=>691,2000=>594,2001=>691,2002=>904,2003=>551,2004=>551,2005=>627,2006=>688,2007=>444,2008=>1022,2009=>506,2010=>826,2011=>691,2012=>652,2013=>912,2014=>627,2015=>707,2016=>506,2017=>652,2018=>574,2019=>627,2020=>627,2021=>627,2022=>574,2023=>574,2027=>0,2028=>0,2029=>0,2030=>0,2031=>0,2032=>0,2033=>0,2034=>0,2035=>0,2036=>380,2037=>380,2040=>691,2041=>691,2042=>415,3647=>696,3713=>790,3714=>748,3716=>749,3719=>569,3720=>742,3722=>744,3725=>761,3732=>706,3733=>704,3734=>747,3735=>819,3737=>730,3738=>727,3739=>727,3740=>922,3741=>827,3742=>866,3743=>866,3745=>836,3746=>761,3747=>770,3749=>769,3751=>713,3754=>827,3755=>1031,3757=>724,3758=>784,3759=>934,3760=>688,3761=>0,3762=>610,3763=>610,3764=>0,3765=>0,3766=>0,3767=>0,3768=>0,3769=>0,3771=>0,3772=>0,3773=>670,3776=>516,3777=>860,3778=>516,3779=>650,3780=>632,3782=>759,3784=>0,3785=>0,3786=>0,3787=>0,3788=>0,3789=>0,3792=>771,3793=>771,3794=>693,3795=>836,3796=>729,3797=>729,3798=>849,3799=>790,3800=>759,3801=>910,3804=>1363,3805=>1363,4256=>874,4257=>733,4258=>679,4259=>834,4260=>615,4261=>768,4262=>753,4263=>914,4264=>453,4265=>620,4266=>843,4267=>882,4268=>625,4269=>854,4270=>781,4271=>629,4272=>912,4273=>621,4274=>620,4275=>854,4276=>866,4277=>724,4278=>630,4279=>621,4280=>625,4281=>620,4282=>818,4283=>874,4284=>615,4285=>623,4286=>625,4287=>725,4288=>844,4289=>596,4290=>688,4291=>596,4292=>594,4293=>738,4304=>554,4305=>563,4306=>622,4307=>834,4308=>555,4309=>564,4310=>551,4311=>828,4312=>563,4313=>556,4314=>1074,4315=>568,4316=>568,4317=>814,4318=>554,4319=>563,4320=>823,4321=>568,4322=>700,4323=>591,4324=>852,4325=>560,4326=>814,4327=>563,4328=>553,4329=>568,4330=>622,4331=>568,4332=>553,4333=>566,4334=>568,4335=>540,4336=>554,4337=>559,4338=>553,4339=>554,4340=>553,4341=>587,4342=>853,4343=>604,4344=>563,4345=>622,4346=>554,4347=>448,4348=>324,5121=>774,5122=>774,5123=>774,5124=>774,5125=>905,5126=>905,5127=>905,5129=>905,5130=>905,5131=>905,5132=>1018,5133=>1009,5134=>1018,5135=>1009,5136=>1018,5137=>1009,5138=>1149,5139=>1140,5140=>1149,5141=>1140,5142=>905,5143=>1149,5144=>1142,5145=>1149,5146=>1142,5147=>905,5149=>310,5150=>529,5151=>425,5152=>425,5153=>395,5154=>395,5155=>395,5156=>395,5157=>564,5158=>470,5159=>310,5160=>395,5161=>395,5162=>395,5163=>1213,5164=>986,5165=>1216,5166=>1297,5167=>774,5168=>774,5169=>774,5170=>774,5171=>886,5172=>886,5173=>886,5175=>886,5176=>886,5177=>886,5178=>1018,5179=>1009,5180=>1018,5181=>1009,5182=>1018,5183=>1009,5184=>1149,5185=>1140,5186=>1149,5187=>1140,5188=>1149,5189=>1142,5190=>1149,5191=>1142,5192=>886,5193=>576,5194=>229,5196=>812,5197=>812,5198=>812,5199=>812,5200=>815,5201=>815,5202=>815,5204=>815,5205=>815,5206=>815,5207=>1056,5208=>1048,5209=>1056,5210=>1048,5211=>1056,5212=>1048,5213=>1060,5214=>1054,5215=>1060,5216=>1054,5217=>1060,5218=>1052,5219=>1060,5220=>1052,5221=>1060,5222=>483,5223=>1005,5224=>1005,5225=>1023,5226=>1017,5227=>743,5228=>743,5229=>743,5230=>743,5231=>743,5232=>743,5233=>743,5234=>743,5235=>743,5236=>1029,5237=>975,5238=>980,5239=>975,5240=>980,5241=>975,5242=>1029,5243=>975,5244=>1029,5245=>975,5246=>980,5247=>975,5248=>980,5249=>975,5250=>980,5251=>501,5252=>501,5253=>938,5254=>938,5255=>938,5256=>938,5257=>743,5258=>743,5259=>743,5260=>743,5261=>743,5262=>743,5263=>743,5264=>743,5265=>743,5266=>1029,5267=>975,5268=>1029,5269=>975,5270=>1029,5271=>975,5272=>1029,5273=>975,5274=>1029,5275=>975,5276=>1029,5277=>975,5278=>1029,5279=>975,5280=>1029,5281=>501,5282=>501,5283=>626,5284=>626,5285=>626,5286=>626,5287=>626,5288=>626,5289=>626,5290=>626,5291=>626,5292=>881,5293=>854,5294=>863,5295=>874,5296=>863,5297=>874,5298=>881,5299=>874,5300=>881,5301=>874,5302=>863,5303=>874,5304=>863,5305=>874,5306=>863,5307=>436,5308=>548,5309=>436,5312=>988,5313=>988,5314=>988,5315=>988,5316=>931,5317=>931,5318=>931,5319=>931,5320=>931,5321=>1238,5322=>1247,5323=>1200,5324=>1228,5325=>1200,5326=>1228,5327=>931,5328=>660,5329=>497,5330=>660,5331=>988,5332=>988,5333=>988,5334=>988,5335=>931,5336=>931,5337=>931,5338=>931,5339=>931,5340=>1231,5341=>1247,5342=>1283,5343=>1228,5344=>1283,5345=>1228,5346=>1228,5347=>1214,5348=>1228,5349=>1214,5350=>1283,5351=>1228,5352=>1283,5353=>1228,5354=>660,5356=>886,5357=>730,5358=>730,5359=>730,5360=>730,5361=>730,5362=>730,5363=>730,5364=>730,5365=>730,5366=>998,5367=>958,5368=>967,5369=>989,5370=>967,5371=>989,5372=>998,5373=>958,5374=>998,5375=>958,5376=>967,5377=>989,5378=>967,5379=>989,5380=>967,5381=>493,5382=>460,5383=>493,5392=>923,5393=>923,5394=>923,5395=>1136,5396=>1136,5397=>1136,5398=>1136,5399=>1209,5400=>1202,5401=>1209,5402=>1202,5403=>1209,5404=>1202,5405=>1431,5406=>1420,5407=>1431,5408=>1420,5409=>1431,5410=>1420,5411=>1431,5412=>1420,5413=>746,5414=>776,5415=>776,5416=>776,5417=>776,5418=>776,5419=>776,5420=>776,5421=>776,5422=>776,5423=>1003,5424=>1003,5425=>1013,5426=>996,5427=>1013,5428=>996,5429=>1003,5430=>1003,5431=>1003,5432=>1003,5433=>1013,5434=>996,5435=>1013,5436=>996,5437=>1013,5438=>495,5440=>395,5441=>510,5442=>1033,5443=>1033,5444=>976,5445=>976,5446=>976,5447=>976,5448=>733,5449=>733,5450=>733,5451=>733,5452=>733,5453=>733,5454=>1003,5455=>959,5456=>495,5458=>886,5459=>774,5460=>774,5461=>774,5462=>774,5463=>928,5464=>928,5465=>928,5466=>928,5467=>1172,5468=>1142,5469=>602,5470=>812,5471=>812,5472=>812,5473=>812,5474=>812,5475=>812,5476=>815,5477=>815,5478=>815,5479=>815,5480=>1060,5481=>1052,5482=>548,5492=>977,5493=>977,5494=>977,5495=>977,5496=>977,5497=>977,5498=>977,5499=>618,5500=>837,5501=>510,5502=>1238,5503=>1238,5504=>1238,5505=>1238,5506=>1238,5507=>1238,5508=>1238,5509=>989,5514=>977,5515=>977,5516=>977,5517=>977,5518=>1591,5519=>1591,5520=>1591,5521=>1295,5522=>1295,5523=>1591,5524=>1591,5525=>848,5526=>1273,5536=>988,5537=>988,5538=>931,5539=>931,5540=>931,5541=>931,5542=>660,5543=>776,5544=>776,5545=>776,5546=>776,5547=>776,5548=>776,5549=>776,5550=>495,5551=>743,5598=>830,5601=>830,5702=>496,5703=>496,5742=>413,5743=>1238,5744=>1591,5745=>2016,5746=>2016,5747=>1720,5748=>1678,5749=>2016,5750=>2016,5760=>543,5761=>637,5762=>945,5763=>1254,5764=>1563,5765=>1871,5766=>627,5767=>936,5768=>1254,5769=>1559,5770=>1871,5771=>569,5772=>877,5773=>1187,5774=>1497,5775=>1807,5776=>637,5777=>945,5778=>1240,5779=>1555,5780=>1871,5781=>569,5782=>569,5783=>789,5784=>1234,5785=>1559,5786=>740,5787=>638,5788=>638,7424=>652,7425=>833,7426=>1048,7427=>608,7428=>593,7429=>676,7430=>676,7431=>559,7432=>557,7433=>343,7434=>494,7435=>665,7436=>539,7437=>817,7438=>701,7439=>687,7440=>593,7441=>660,7442=>660,7443=>660,7444=>1094,7446=>687,7447=>687,7448=>556,7449=>642,7450=>642,7451=>580,7452=>634,7453=>737,7454=>948,7455=>695,7456=>652,7457=>924,7458=>582,7459=>646,7462=>539,7463=>652,7464=>691,7465=>556,7466=>781,7467=>732,7468=>487,7469=>683,7470=>480,7472=>523,7473=>430,7474=>430,7475=>517,7476=>527,7477=>234,7478=>234,7479=>488,7480=>401,7481=>626,7482=>527,7483=>527,7484=>535,7485=>509,7486=>461,7487=>485,7488=>430,7489=>511,7490=>695,7491=>458,7492=>458,7493=>479,7494=>712,7495=>479,7496=>479,7497=>479,7498=>479,7499=>386,7500=>386,7501=>479,7502=>219,7503=>487,7504=>664,7505=>456,7506=>488,7507=>414,7508=>488,7509=>488,7510=>479,7511=>388,7512=>456,7513=>462,7514=>664,7515=>501,7517=>451,7518=>429,7519=>433,7520=>493,7521=>406,7522=>219,7523=>315,7524=>456,7525=>501,7526=>451,7527=>429,7528=>451,7529=>493,7530=>406,7543=>716,7544=>527,7547=>545,7549=>747,7557=>514,7579=>479,7580=>414,7581=>414,7582=>488,7583=>386,7584=>377,7585=>348,7586=>479,7587=>456,7588=>347,7589=>281,7590=>347,7591=>347,7592=>431,7593=>326,7594=>330,7595=>370,7596=>664,7597=>664,7598=>562,7599=>562,7600=>448,7601=>488,7602=>542,7603=>422,7604=>396,7605=>388,7606=>583,7607=>494,7608=>399,7609=>451,7610=>501,7611=>417,7612=>523,7613=>470,7614=>455,7615=>425,7620=>0,7621=>0,7622=>0,7623=>0,7624=>0,7625=>0,7680=>774,7681=>675,7682=>762,7683=>716,7684=>762,7685=>716,7686=>762,7687=>716,7688=>734,7689=>593,7690=>830,7691=>716,7692=>830,7693=>716,7694=>830,7695=>716,7696=>830,7697=>716,7698=>830,7699=>716,7700=>683,7701=>678,7702=>683,7703=>678,7704=>683,7705=>678,7706=>683,7707=>678,7708=>683,7709=>678,7710=>683,7711=>435,7712=>821,7713=>716,7714=>837,7715=>712,7716=>837,7717=>712,7718=>837,7719=>712,7720=>837,7721=>712,7722=>837,7723=>712,7724=>372,7725=>343,7726=>372,7727=>343,7728=>775,7729=>665,7730=>775,7731=>665,7732=>775,7733=>665,7734=>637,7735=>343,7736=>637,7737=>343,7738=>637,7739=>343,7740=>637,7741=>343,7742=>995,7743=>1042,7744=>995,7745=>1042,7746=>995,7747=>1042,7748=>837,7749=>712,7750=>837,7751=>712,7752=>837,7753=>712,7754=>837,7755=>712,7756=>850,7757=>687,7758=>850,7759=>687,7760=>850,7761=>687,7762=>850,7763=>687,7764=>733,7765=>716,7766=>733,7767=>716,7768=>770,7769=>493,7770=>770,7771=>493,7772=>770,7773=>493,7774=>770,7775=>493,7776=>720,7777=>595,7778=>720,7779=>595,7780=>720,7781=>595,7782=>720,7783=>595,7784=>720,7785=>595,7786=>682,7787=>478,7788=>682,7789=>478,7790=>682,7791=>478,7792=>682,7793=>478,7794=>812,7795=>712,7796=>812,7797=>712,7798=>812,7799=>712,7800=>812,7801=>712,7802=>812,7803=>712,7804=>774,7805=>652,7806=>774,7807=>652,7808=>1103,7809=>924,7810=>1103,7811=>924,7812=>1103,7813=>924,7814=>1103,7815=>924,7816=>1103,7817=>924,7818=>771,7819=>645,7820=>771,7821=>645,7822=>724,7823=>652,7824=>725,7825=>582,7826=>725,7827=>582,7828=>725,7829=>582,7830=>712,7831=>478,7832=>924,7833=>652,7834=>675,7835=>435,7836=>435,7837=>435,7838=>896,7839=>687,7840=>774,7841=>675,7842=>774,7843=>675,7844=>774,7845=>675,7846=>774,7847=>675,7848=>774,7849=>675,7850=>774,7851=>675,7852=>774,7853=>675,7854=>774,7855=>675,7856=>774,7857=>675,7858=>774,7859=>675,7860=>774,7861=>675,7862=>774,7863=>675,7864=>683,7865=>678,7866=>683,7867=>678,7868=>683,7869=>678,7870=>683,7871=>678,7872=>683,7873=>678,7874=>683,7875=>678,7876=>683,7877=>678,7878=>683,7879=>678,7880=>372,7881=>343,7882=>372,7883=>343,7884=>850,7885=>687,7886=>850,7887=>687,7888=>850,7889=>687,7890=>850,7891=>687,7892=>850,7893=>687,7894=>850,7895=>687,7896=>850,7897=>687,7898=>874,7899=>687,7900=>874,7901=>687,7902=>874,7903=>687,7904=>874,7905=>687,7906=>874,7907=>687,7908=>812,7909=>712,7910=>812,7911=>712,7912=>835,7913=>712,7914=>835,7915=>712,7916=>835,7917=>712,7918=>835,7919=>712,7920=>835,7921=>712,7922=>724,7923=>652,7924=>724,7925=>652,7926=>724,7927=>652,7928=>724,7929=>652,7930=>953,7931=>644,7936=>687,7937=>687,7938=>687,7939=>687,7940=>687,7941=>687,7942=>687,7943=>687,7944=>774,7945=>774,7946=>1041,7947=>1043,7948=>935,7949=>963,7950=>835,7951=>859,7952=>557,7953=>557,7954=>557,7955=>557,7956=>557,7957=>557,7960=>792,7961=>794,7962=>1100,7963=>1096,7964=>1023,7965=>1052,7968=>712,7969=>712,7970=>712,7971=>712,7972=>712,7973=>712,7974=>712,7975=>712,7976=>945,7977=>951,7978=>1250,7979=>1250,7980=>1180,7981=>1206,7982=>1054,7983=>1063,7984=>390,7985=>390,7986=>390,7987=>390,7988=>390,7989=>390,7990=>390,7991=>390,7992=>483,7993=>489,7994=>777,7995=>785,7996=>712,7997=>738,7998=>604,7999=>604,8000=>687,8001=>687,8002=>687,8003=>687,8004=>687,8005=>687,8008=>892,8009=>933,8010=>1221,8011=>1224,8012=>1053,8013=>1082,8016=>675,8017=>675,8018=>675,8019=>675,8020=>675,8021=>675,8022=>675,8023=>675,8025=>930,8027=>1184,8029=>1199,8031=>1049,8032=>869,8033=>869,8034=>869,8035=>869,8036=>869,8037=>869,8038=>869,8039=>869,8040=>909,8041=>958,8042=>1246,8043=>1251,8044=>1076,8045=>1105,8046=>1028,8047=>1076,8048=>687,8049=>687,8050=>557,8051=>557,8052=>712,8053=>712,8054=>390,8055=>390,8056=>687,8057=>687,8058=>675,8059=>675,8060=>869,8061=>869,8064=>687,8065=>687,8066=>687,8067=>687,8068=>687,8069=>687,8070=>687,8071=>687,8072=>774,8073=>774,8074=>1041,8075=>1043,8076=>935,8077=>963,8078=>835,8079=>859,8080=>712,8081=>712,8082=>712,8083=>712,8084=>712,8085=>712,8086=>712,8087=>712,8088=>945,8089=>951,8090=>1250,8091=>1250,8092=>1180,8093=>1206,8094=>1054,8095=>1063,8096=>869,8097=>869,8098=>869,8099=>869,8100=>869,8101=>869,8102=>869,8103=>869,8104=>909,8105=>958,8106=>1246,8107=>1251,8108=>1076,8109=>1105,8110=>1028,8111=>1076,8112=>687,8113=>687,8114=>687,8115=>687,8116=>687,8118=>687,8119=>687,8120=>774,8121=>774,8122=>876,8123=>797,8124=>774,8125=>500,8126=>500,8127=>500,8128=>500,8129=>500,8130=>712,8131=>712,8132=>712,8134=>712,8135=>712,8136=>929,8137=>846,8138=>1080,8139=>1009,8140=>837,8141=>500,8142=>500,8143=>500,8144=>390,8145=>390,8146=>390,8147=>390,8150=>390,8151=>390,8152=>372,8153=>372,8154=>621,8155=>563,8157=>500,8158=>500,8159=>500,8160=>675,8161=>675,8162=>675,8163=>675,8164=>716,8165=>716,8166=>675,8167=>675,8168=>724,8169=>724,8170=>1020,8171=>980,8172=>838,8173=>500,8174=>500,8175=>500,8178=>869,8179=>869,8180=>869,8182=>869,8183=>869,8184=>1065,8185=>891,8186=>1084,8187=>894,8188=>850,8189=>500,8190=>500,8192=>500,8193=>1000,8194=>500,8195=>1000,8196=>330,8197=>250,8198=>167,8199=>696,8200=>380,8201=>200,8202=>100,8203=>0,8204=>0,8205=>0,8206=>0,8207=>0,8208=>415,8209=>415,8210=>696,8211=>500,8212=>1000,8213=>1000,8214=>500,8215=>500,8216=>380,8217=>380,8218=>380,8219=>380,8220=>657,8221=>657,8222=>657,8223=>657,8224=>500,8225=>500,8226=>639,8227=>639,8228=>333,8229=>667,8230=>1000,8231=>348,8232=>0,8233=>0,8234=>0,8235=>0,8236=>0,8237=>0,8238=>0,8239=>200,8240=>1440,8241=>1887,8242=>264,8243=>447,8244=>630,8245=>264,8246=>447,8247=>630,8248=>733,8249=>412,8250=>412,8251=>972,8252=>627,8253=>580,8254=>500,8255=>828,8256=>828,8257=>329,8258=>1023,8259=>500,8260=>167,8261=>457,8262=>457,8263=>1030,8264=>829,8265=>829,8266=>513,8267=>636,8268=>500,8269=>500,8270=>523,8271=>400,8272=>828,8273=>523,8274=>556,8275=>1000,8276=>828,8277=>838,8278=>684,8279=>813,8280=>838,8281=>838,8282=>380,8283=>872,8284=>838,8285=>380,8286=>380,8287=>222,8288=>0,8289=>0,8290=>0,8291=>0,8292=>0,8298=>0,8299=>0,8300=>0,8301=>0,8302=>0,8303=>0,8304=>438,8305=>219,8308=>438,8309=>438,8310=>438,8311=>438,8312=>438,8313=>438,8314=>528,8315=>528,8316=>528,8317=>288,8318=>288,8319=>456,8320=>438,8321=>438,8322=>438,8323=>438,8324=>438,8325=>438,8326=>438,8327=>438,8328=>438,8329=>438,8330=>528,8331=>528,8332=>528,8333=>288,8334=>288,8336=>458,8337=>479,8338=>488,8339=>413,8340=>479,8341=>456,8342=>487,8343=>219,8344=>664,8345=>456,8346=>479,8347=>381,8348=>388,8352=>929,8353=>696,8354=>696,8355=>696,8356=>696,8357=>1042,8358=>837,8359=>1518,8360=>1205,8361=>1103,8362=>904,8363=>696,8364=>696,8365=>696,8366=>696,8367=>1392,8368=>696,8369=>696,8370=>696,8371=>696,8372=>859,8373=>696,8376=>696,8377=>696,8378=>769,8400=>0,8401=>0,8406=>0,8407=>0,8411=>0,8412=>0,8417=>0,8448=>1120,8449=>1170,8450=>734,8451=>1211,8452=>896,8453=>1091,8454=>1144,8455=>614,8456=>698,8457=>1086,8459=>1073,8460=>913,8461=>888,8462=>712,8463=>712,8464=>597,8465=>697,8466=>856,8467=>472,8468=>974,8469=>837,8470=>1203,8471=>1000,8472=>697,8473=>750,8474=>850,8475=>938,8476=>814,8477=>801,8478=>896,8479=>710,8480=>1020,8481=>1281,8482=>1000,8483=>755,8484=>754,8485=>578,8486=>850,8487=>850,8488=>763,8489=>338,8490=>775,8491=>774,8492=>928,8493=>818,8494=>854,8495=>636,8496=>729,8497=>808,8498=>683,8499=>1184,8500=>465,8501=>794,8502=>731,8503=>494,8504=>684,8505=>380,8506=>945,8507=>1348,8508=>790,8509=>737,8510=>654,8511=>863,8512=>840,8513=>775,8514=>557,8515=>637,8516=>760,8517=>830,8518=>716,8519=>678,8520=>343,8521=>343,8523=>872,8526=>547,8528=>1035,8529=>1035,8530=>1483,8531=>1035,8532=>1035,8533=>1035,8534=>1035,8535=>1035,8536=>1035,8537=>1035,8538=>1035,8539=>1035,8540=>1035,8541=>1035,8542=>1035,8543=>615,8544=>372,8545=>659,8546=>945,8547=>1099,8548=>774,8549=>1099,8550=>1386,8551=>1672,8552=>1121,8553=>771,8554=>1120,8555=>1407,8556=>637,8557=>734,8558=>830,8559=>995,8560=>343,8561=>607,8562=>872,8563=>984,8564=>652,8565=>962,8566=>1227,8567=>1491,8568=>969,8569=>645,8570=>969,8571=>1233,8572=>343,8573=>593,8574=>716,8575=>1042,8576=>1289,8577=>830,8578=>1289,8579=>734,8580=>593,8581=>734,8585=>1035,8592=>838,8593=>838,8594=>838,8595=>838,8596=>838,8597=>838,8598=>838,8599=>838,8600=>838,8601=>838,8602=>838,8603=>838,8604=>838,8605=>838,8606=>838,8607=>838,8608=>838,8609=>838,8610=>838,8611=>838,8612=>838,8613=>838,8614=>838,8615=>838,8616=>838,8617=>838,8618=>838,8619=>838,8620=>838,8621=>838,8622=>838,8623=>838,8624=>838,8625=>838,8626=>838,8627=>838,8628=>838,8629=>838,8630=>838,8631=>838,8632=>838,8633=>838,8634=>838,8635=>838,8636=>838,8637=>838,8638=>838,8639=>838,8640=>838,8641=>838,8642=>838,8643=>838,8644=>838,8645=>838,8646=>838,8647=>838,8648=>838,8649=>838,8650=>838,8651=>838,8652=>838,8653=>838,8654=>838,8655=>838,8656=>838,8657=>838,8658=>838,8659=>838,8660=>838,8661=>838,8662=>838,8663=>838,8664=>838,8665=>838,8666=>838,8667=>838,8668=>838,8669=>838,8670=>838,8671=>838,8672=>838,8673=>838,8674=>838,8675=>838,8676=>838,8677=>838,8678=>838,8679=>838,8680=>838,8681=>838,8682=>838,8683=>838,8684=>838,8685=>838,8686=>838,8687=>838,8688=>838,8689=>838,8690=>838,8691=>838,8692=>838,8693=>838,8694=>838,8695=>838,8696=>838,8697=>838,8698=>838,8699=>838,8700=>838,8701=>838,8702=>838,8703=>838,8704=>774,8705=>696,8706=>544,8707=>683,8708=>683,8709=>856,8710=>697,8711=>697,8712=>896,8713=>896,8714=>750,8715=>896,8716=>896,8717=>750,8718=>636,8719=>787,8720=>787,8721=>718,8722=>838,8723=>838,8724=>696,8725=>365,8726=>696,8727=>838,8728=>626,8729=>380,8730=>667,8731=>667,8732=>667,8733=>712,8734=>833,8735=>838,8736=>896,8737=>896,8738=>838,8739=>500,8740=>500,8741=>500,8742=>500,8743=>812,8744=>812,8745=>812,8746=>812,8747=>610,8748=>929,8749=>1295,8750=>563,8751=>977,8752=>1313,8753=>563,8754=>563,8755=>563,8756=>696,8757=>696,8758=>294,8759=>696,8760=>838,8761=>838,8762=>838,8763=>838,8764=>838,8765=>838,8766=>838,8767=>838,8768=>375,8769=>838,8770=>838,8771=>838,8772=>838,8773=>838,8774=>838,8775=>838,8776=>838,8777=>838,8778=>838,8779=>838,8780=>838,8781=>838,8782=>838,8783=>838,8784=>838,8785=>838,8786=>838,8787=>838,8788=>1063,8789=>1063,8790=>838,8791=>838,8792=>838,8793=>838,8794=>838,8795=>838,8796=>838,8797=>838,8798=>838,8799=>838,8800=>838,8801=>838,8802=>838,8803=>838,8804=>838,8805=>838,8806=>838,8807=>838,8808=>841,8809=>841,8810=>1047,8811=>1047,8812=>500,8813=>838,8814=>838,8815=>838,8816=>838,8817=>838,8818=>838,8819=>838,8820=>838,8821=>838,8822=>838,8823=>838,8824=>838,8825=>838,8826=>838,8827=>838,8828=>838,8829=>838,8830=>838,8831=>838,8832=>838,8833=>838,8834=>838,8835=>838,8836=>838,8837=>838,8838=>838,8839=>838,8840=>838,8841=>838,8842=>838,8843=>838,8844=>812,8845=>812,8846=>812,8847=>838,8848=>838,8849=>838,8850=>838,8851=>796,8852=>796,8853=>838,8854=>838,8855=>838,8856=>838,8857=>838,8858=>838,8859=>838,8860=>838,8861=>838,8862=>838,8863=>838,8864=>838,8865=>838,8866=>914,8867=>914,8868=>914,8869=>914,8870=>542,8871=>542,8872=>914,8873=>914,8874=>914,8875=>914,8876=>914,8877=>914,8878=>914,8879=>914,8880=>838,8881=>838,8882=>838,8883=>838,8884=>838,8885=>838,8886=>1000,8887=>1000,8888=>838,8889=>838,8890=>542,8891=>812,8892=>812,8893=>812,8894=>838,8895=>838,8896=>843,8897=>843,8898=>843,8899=>843,8900=>494,8901=>380,8902=>626,8903=>838,8904=>1000,8905=>1000,8906=>1000,8907=>1000,8908=>1000,8909=>838,8910=>812,8911=>812,8912=>838,8913=>838,8914=>838,8915=>838,8916=>838,8917=>838,8918=>838,8919=>838,8920=>1422,8921=>1422,8922=>838,8923=>838,8924=>838,8925=>838,8926=>838,8927=>838,8928=>838,8929=>838,8930=>838,8931=>838,8932=>838,8933=>838,8934=>838,8935=>838,8936=>838,8937=>838,8938=>838,8939=>838,8940=>838,8941=>838,8942=>1000,8943=>1000,8944=>1000,8945=>1000,8946=>1158,8947=>896,8948=>750,8949=>896,8950=>896,8951=>750,8952=>896,8953=>896,8954=>1158,8955=>896,8956=>750,8957=>896,8958=>750,8959=>896,8960=>602,8961=>602,8962=>716,8963=>838,8964=>838,8965=>838,8966=>838,8967=>488,8968=>457,8969=>457,8970=>457,8971=>457,8972=>809,8973=>809,8974=>809,8975=>809,8976=>838,8977=>539,8984=>928,8985=>838,8988=>469,8989=>469,8990=>469,8991=>469,8992=>610,8993=>610,8996=>1152,8997=>1152,8998=>1414,8999=>1152,9000=>1443,9003=>1414,9004=>873,9075=>390,9076=>716,9077=>869,9082=>687,9085=>863,9095=>1152,9108=>873,9115=>500,9116=>500,9117=>500,9118=>500,9119=>500,9120=>500,9121=>500,9122=>500,9123=>500,9124=>500,9125=>500,9126=>500,9127=>750,9128=>750,9129=>750,9130=>750,9131=>750,9132=>750,9133=>750,9134=>610,9166=>838,9167=>945,9187=>873,9189=>769,9192=>696,9250=>716,9251=>716,9312=>847,9313=>847,9314=>847,9315=>847,9316=>847,9317=>847,9318=>847,9319=>847,9320=>847,9321=>847,9600=>769,9601=>769,9602=>769,9603=>769,9604=>769,9605=>769,9606=>769,9607=>769,9608=>769,9609=>769,9610=>769,9611=>769,9612=>769,9613=>769,9614=>769,9615=>769,9616=>769,9617=>769,9618=>769,9619=>769,9620=>769,9621=>769,9622=>769,9623=>769,9624=>769,9625=>769,9626=>769,9627=>769,9628=>769,9629=>769,9630=>769,9631=>769,9632=>945,9633=>945,9634=>945,9635=>945,9636=>945,9637=>945,9638=>945,9639=>945,9640=>945,9641=>945,9642=>678,9643=>678,9644=>945,9645=>945,9646=>550,9647=>550,9648=>769,9649=>769,9650=>769,9651=>769,9652=>502,9653=>502,9654=>769,9655=>769,9656=>502,9657=>502,9658=>769,9659=>769,9660=>769,9661=>769,9662=>502,9663=>502,9664=>769,9665=>769,9666=>502,9667=>502,9668=>769,9669=>769,9670=>769,9671=>769,9672=>769,9673=>873,9674=>494,9675=>873,9676=>873,9677=>873,9678=>873,9679=>873,9680=>873,9681=>873,9682=>873,9683=>873,9684=>873,9685=>873,9686=>527,9687=>527,9688=>840,9689=>970,9690=>970,9691=>970,9692=>387,9693=>387,9694=>387,9695=>387,9696=>769,9697=>769,9698=>769,9699=>769,9700=>769,9701=>769,9702=>639,9703=>945,9704=>945,9705=>945,9706=>945,9707=>945,9708=>769,9709=>769,9710=>769,9711=>1119,9712=>945,9713=>945,9714=>945,9715=>945,9716=>873,9717=>873,9718=>873,9719=>873,9720=>769,9721=>769,9722=>769,9723=>830,9724=>830,9725=>732,9726=>732,9727=>769,9728=>896,9729=>1000,9730=>896,9731=>896,9732=>896,9733=>896,9734=>896,9735=>573,9736=>896,9737=>896,9738=>888,9739=>888,9740=>671,9741=>1013,9742=>1246,9743=>1250,9744=>896,9745=>896,9746=>896,9747=>532,9748=>896,9749=>896,9750=>896,9751=>896,9752=>896,9753=>896,9754=>896,9755=>896,9756=>896,9757=>609,9758=>896,9759=>609,9760=>896,9761=>896,9762=>896,9763=>896,9764=>669,9765=>746,9766=>649,9767=>784,9768=>545,9769=>896,9770=>896,9771=>896,9772=>710,9773=>896,9774=>896,9775=>896,9776=>896,9777=>896,9778=>896,9779=>896,9780=>896,9781=>896,9782=>896,9783=>896,9784=>896,9785=>1042,9786=>1042,9787=>1042,9788=>896,9789=>896,9790=>896,9791=>614,9792=>732,9793=>732,9794=>896,9795=>896,9796=>896,9797=>896,9798=>896,9799=>896,9800=>896,9801=>896,9802=>896,9803=>896,9804=>896,9805=>896,9806=>896,9807=>896,9808=>896,9809=>896,9810=>896,9811=>896,9812=>896,9813=>896,9814=>896,9815=>896,9816=>896,9817=>896,9818=>896,9819=>896,9820=>896,9821=>896,9822=>896,9823=>896,9824=>896,9825=>896,9826=>896,9827=>896,9828=>896,9829=>896,9830=>896,9831=>896,9832=>896,9833=>472,9834=>638,9835=>896,9836=>896,9837=>472,9838=>357,9839=>484,9840=>748,9841=>766,9842=>896,9843=>896,9844=>896,9845=>896,9846=>896,9847=>896,9848=>896,9849=>896,9850=>896,9851=>896,9852=>896,9853=>896,9854=>896,9855=>896,9856=>869,9857=>869,9858=>869,9859=>869,9860=>869,9861=>869,9862=>896,9863=>896,9864=>896,9865=>896,9866=>896,9867=>896,9868=>896,9869=>896,9870=>896,9871=>896,9872=>896,9873=>896,9874=>896,9875=>896,9876=>896,9877=>541,9878=>896,9879=>896,9880=>896,9881=>896,9882=>896,9883=>896,9884=>896,9888=>896,9889=>702,9890=>1004,9891=>1089,9892=>1175,9893=>903,9894=>838,9895=>838,9896=>838,9897=>838,9898=>838,9899=>838,9900=>838,9901=>838,9902=>838,9903=>838,9904=>844,9905=>838,9906=>732,9907=>732,9908=>732,9909=>732,9910=>850,9911=>732,9912=>732,9920=>838,9921=>838,9922=>838,9923=>838,9954=>732,9985=>838,9986=>838,9987=>838,9988=>838,9990=>838,9991=>838,9992=>838,9993=>838,9996=>838,9997=>838,9998=>838,9999=>838,10000=>838,10001=>838,10002=>838,10003=>838,10004=>838,10005=>838,10006=>838,10007=>838,10008=>838,10009=>838,10010=>838,10011=>838,10012=>838,10013=>838,10014=>838,10015=>838,10016=>838,10017=>838,10018=>838,10019=>838,10020=>838,10021=>838,10022=>838,10023=>838,10025=>838,10026=>838,10027=>838,10028=>838,10029=>838,10030=>838,10031=>838,10032=>838,10033=>838,10034=>838,10035=>838,10036=>838,10037=>838,10038=>838,10039=>838,10040=>838,10041=>838,10042=>838,10043=>838,10044=>838,10045=>838,10046=>838,10047=>838,10048=>838,10049=>838,10050=>838,10051=>838,10052=>838,10053=>838,10054=>838,10055=>838,10056=>838,10057=>838,10058=>838,10059=>838,10061=>896,10063=>896,10064=>896,10065=>896,10066=>896,10070=>896,10072=>838,10073=>838,10074=>838,10075=>347,10076=>347,10077=>587,10078=>587,10081=>838,10082=>838,10083=>838,10084=>838,10085=>838,10086=>838,10087=>838,10088=>838,10089=>838,10090=>838,10091=>838,10092=>838,10093=>838,10094=>838,10095=>838,10096=>838,10097=>838,10098=>838,10099=>838,10100=>838,10101=>838,10102=>847,10103=>847,10104=>847,10105=>847,10106=>847,10107=>847,10108=>847,10109=>847,10110=>847,10111=>847,10112=>838,10113=>838,10114=>838,10115=>838,10116=>838,10117=>838,10118=>838,10119=>838,10120=>838,10121=>838,10122=>838,10123=>838,10124=>838,10125=>838,10126=>838,10127=>838,10128=>838,10129=>838,10130=>838,10131=>838,10132=>838,10136=>838,10137=>838,10138=>838,10139=>838,10140=>838,10141=>838,10142=>838,10143=>838,10144=>838,10145=>838,10146=>838,10147=>838,10148=>838,10149=>838,10150=>838,10151=>838,10152=>838,10153=>838,10154=>838,10155=>838,10156=>838,10157=>838,10158=>838,10159=>838,10161=>838,10162=>838,10163=>838,10164=>838,10165=>838,10166=>838,10167=>838,10168=>838,10169=>838,10170=>838,10171=>838,10172=>838,10173=>838,10174=>838,10181=>457,10182=>457,10208=>494,10214=>487,10215=>487,10216=>457,10217=>457,10218=>721,10219=>721,10224=>838,10225=>838,10226=>838,10227=>838,10228=>1157,10229=>1434,10230=>1434,10231=>1434,10232=>1434,10233=>1434,10234=>1434,10235=>1434,10236=>1434,10237=>1434,10238=>1434,10239=>1434,10240=>781,10241=>781,10242=>781,10243=>781,10244=>781,10245=>781,10246=>781,10247=>781,10248=>781,10249=>781,10250=>781,10251=>781,10252=>781,10253=>781,10254=>781,10255=>781,10256=>781,10257=>781,10258=>781,10259=>781,10260=>781,10261=>781,10262=>781,10263=>781,10264=>781,10265=>781,10266=>781,10267=>781,10268=>781,10269=>781,10270=>781,10271=>781,10272=>781,10273=>781,10274=>781,10275=>781,10276=>781,10277=>781,10278=>781,10279=>781,10280=>781,10281=>781,10282=>781,10283=>781,10284=>781,10285=>781,10286=>781,10287=>781,10288=>781,10289=>781,10290=>781,10291=>781,10292=>781,10293=>781,10294=>781,10295=>781,10296=>781,10297=>781,10298=>781,10299=>781,10300=>781,10301=>781,10302=>781,10303=>781,10304=>781,10305=>781,10306=>781,10307=>781,10308=>781,10309=>781,10310=>781,10311=>781,10312=>781,10313=>781,10314=>781,10315=>781,10316=>781,10317=>781,10318=>781,10319=>781,10320=>781,10321=>781,10322=>781,10323=>781,10324=>781,10325=>781,10326=>781,10327=>781,10328=>781,10329=>781,10330=>781,10331=>781,10332=>781,10333=>781,10334=>781,10335=>781,10336=>781,10337=>781,10338=>781,10339=>781,10340=>781,10341=>781,10342=>781,10343=>781,10344=>781,10345=>781,10346=>781,10347=>781,10348=>781,10349=>781,10350=>781,10351=>781,10352=>781,10353=>781,10354=>781,10355=>781,10356=>781,10357=>781,10358=>781,10359=>781,10360=>781,10361=>781,10362=>781,10363=>781,10364=>781,10365=>781,10366=>781,10367=>781,10368=>781,10369=>781,10370=>781,10371=>781,10372=>781,10373=>781,10374=>781,10375=>781,10376=>781,10377=>781,10378=>781,10379=>781,10380=>781,10381=>781,10382=>781,10383=>781,10384=>781,10385=>781,10386=>781,10387=>781,10388=>781,10389=>781,10390=>781,10391=>781,10392=>781,10393=>781,10394=>781,10395=>781,10396=>781,10397=>781,10398=>781,10399=>781,10400=>781,10401=>781,10402=>781,10403=>781,10404=>781,10405=>781,10406=>781,10407=>781,10408=>781,10409=>781,10410=>781,10411=>781,10412=>781,10413=>781,10414=>781,10415=>781,10416=>781,10417=>781,10418=>781,10419=>781,10420=>781,10421=>781,10422=>781,10423=>781,10424=>781,10425=>781,10426=>781,10427=>781,10428=>781,10429=>781,10430=>781,10431=>781,10432=>781,10433=>781,10434=>781,10435=>781,10436=>781,10437=>781,10438=>781,10439=>781,10440=>781,10441=>781,10442=>781,10443=>781,10444=>781,10445=>781,10446=>781,10447=>781,10448=>781,10449=>781,10450=>781,10451=>781,10452=>781,10453=>781,10454=>781,10455=>781,10456=>781,10457=>781,10458=>781,10459=>781,10460=>781,10461=>781,10462=>781,10463=>781,10464=>781,10465=>781,10466=>781,10467=>781,10468=>781,10469=>781,10470=>781,10471=>781,10472=>781,10473=>781,10474=>781,10475=>781,10476=>781,10477=>781,10478=>781,10479=>781,10480=>781,10481=>781,10482=>781,10483=>781,10484=>781,10485=>781,10486=>781,10487=>781,10488=>781,10489=>781,10490=>781,10491=>781,10492=>781,10493=>781,10494=>781,10495=>781,10502=>838,10503=>838,10506=>838,10507=>838,10560=>838,10561=>838,10627=>753,10628=>753,10702=>838,10703=>1046,10704=>1046,10705=>1000,10706=>1000,10707=>1000,10708=>1000,10709=>1000,10731=>494,10746=>838,10747=>838,10752=>1000,10753=>1000,10754=>1000,10764=>1661,10765=>563,10766=>563,10767=>563,10768=>563,10769=>563,10770=>563,10771=>563,10772=>563,10773=>563,10774=>563,10775=>563,10776=>563,10777=>563,10778=>563,10779=>563,10780=>563,10799=>838,10858=>838,10859=>838,10877=>838,10878=>838,10879=>838,10880=>838,10881=>838,10882=>838,10883=>838,10884=>838,10885=>838,10886=>838,10887=>838,10888=>838,10889=>838,10890=>838,10891=>838,10892=>838,10893=>838,10894=>838,10895=>838,10896=>838,10897=>838,10898=>838,10899=>838,10900=>838,10901=>838,10902=>838,10903=>838,10904=>838,10905=>838,10906=>838,10907=>838,10908=>838,10909=>838,10910=>838,10911=>838,10912=>838,10926=>838,10927=>838,10928=>838,10929=>838,10930=>838,10931=>838,10932=>838,10933=>838,10934=>838,10935=>838,10936=>838,10937=>838,10938=>838,11001=>838,11002=>838,11008=>838,11009=>838,11010=>838,11011=>838,11012=>838,11013=>838,11014=>838,11015=>838,11016=>838,11017=>838,11018=>838,11019=>838,11020=>838,11021=>838,11022=>838,11023=>838,11024=>838,11025=>838,11026=>945,11027=>945,11028=>945,11029=>945,11030=>769,11031=>769,11032=>769,11033=>769,11034=>945,11039=>869,11040=>869,11041=>873,11042=>873,11043=>873,11044=>1119,11091=>869,11092=>869,11360=>637,11361=>360,11362=>637,11363=>733,11364=>770,11365=>675,11366=>478,11367=>956,11368=>712,11369=>775,11370=>665,11371=>725,11372=>582,11373=>860,11374=>995,11375=>774,11376=>860,11377=>778,11378=>1221,11379=>1056,11380=>652,11381=>698,11382=>565,11383=>782,11385=>538,11386=>687,11387=>559,11388=>219,11389=>487,11390=>720,11391=>725,11520=>663,11521=>676,11522=>661,11523=>629,11524=>661,11525=>1032,11526=>718,11527=>1032,11528=>648,11529=>667,11530=>1032,11531=>673,11532=>677,11533=>1036,11534=>680,11535=>886,11536=>1032,11537=>683,11538=>674,11539=>1035,11540=>1033,11541=>1027,11542=>676,11543=>673,11544=>667,11545=>667,11546=>660,11547=>671,11548=>1039,11549=>673,11550=>692,11551=>659,11552=>1048,11553=>660,11554=>654,11555=>670,11556=>733,11557=>1017,11568=>691,11569=>941,11570=>941,11571=>725,11572=>725,11573=>725,11574=>676,11575=>774,11576=>774,11577=>683,11578=>683,11579=>802,11580=>989,11581=>761,11582=>623,11583=>761,11584=>941,11585=>941,11586=>373,11587=>740,11588=>837,11589=>914,11590=>672,11591=>737,11592=>680,11593=>683,11594=>602,11595=>1039,11596=>778,11597=>837,11598=>683,11599=>372,11600=>778,11601=>373,11602=>725,11603=>691,11604=>941,11605=>941,11606=>837,11607=>373,11608=>836,11609=>941,11610=>941,11611=>734,11612=>876,11613=>771,11614=>734,11615=>683,11616=>774,11617=>837,11618=>683,11619=>850,11620=>697,11621=>850,11631=>716,11800=>580,11807=>838,11810=>457,11811=>457,11812=>457,11813=>457,11822=>580,19904=>896,19905=>896,19906=>896,19907=>896,19908=>896,19909=>896,19910=>896,19911=>896,19912=>896,19913=>896,19914=>896,19915=>896,19916=>896,19917=>896,19918=>896,19919=>896,19920=>896,19921=>896,19922=>896,19923=>896,19924=>896,19925=>896,19926=>896,19927=>896,19928=>896,19929=>896,19930=>896,19931=>896,19932=>896,19933=>896,19934=>896,19935=>896,19936=>896,19937=>896,19938=>896,19939=>896,19940=>896,19941=>896,19942=>896,19943=>896,19944=>896,19945=>896,19946=>896,19947=>896,19948=>896,19949=>896,19950=>896,19951=>896,19952=>896,19953=>896,19954=>896,19955=>896,19956=>896,19957=>896,19958=>896,19959=>896,19960=>896,19961=>896,19962=>896,19963=>896,19964=>896,19965=>896,19966=>896,19967=>896,42192=>762,42193=>733,42194=>733,42195=>830,42196=>682,42197=>682,42198=>821,42199=>775,42200=>775,42201=>530,42202=>734,42203=>734,42204=>725,42205=>683,42206=>683,42207=>995,42208=>837,42209=>637,42210=>720,42211=>770,42212=>770,42213=>774,42214=>774,42215=>837,42216=>775,42217=>530,42218=>1103,42219=>771,42220=>724,42221=>762,42222=>774,42223=>774,42224=>683,42225=>683,42226=>372,42227=>850,42228=>812,42229=>812,42230=>557,42231=>830,42232=>322,42233=>322,42234=>674,42235=>674,42236=>322,42237=>322,42238=>588,42239=>588,42564=>720,42565=>595,42566=>436,42567=>440,42572=>1405,42573=>1173,42576=>1234,42577=>1027,42580=>1174,42581=>972,42582=>1093,42583=>958,42594=>1085,42595=>924,42596=>1096,42597=>912,42598=>1260,42599=>997,42600=>850,42601=>687,42602=>1037,42603=>868,42604=>1406,42605=>1106,42606=>961,42634=>963,42635=>787,42636=>682,42637=>580,42644=>808,42645=>712,42760=>500,42761=>500,42762=>500,42763=>500,42764=>500,42765=>500,42766=>500,42767=>500,42768=>500,42769=>500,42770=>500,42771=>500,42772=>500,42773=>500,42774=>500,42779=>400,42780=>400,42781=>287,42782=>287,42783=>287,42786=>444,42787=>390,42788=>540,42789=>540,42790=>837,42791=>712,42792=>1031,42793=>857,42794=>696,42795=>557,42800=>559,42801=>595,42802=>1349,42803=>1052,42804=>1284,42805=>1064,42806=>1216,42807=>1054,42808=>1079,42809=>922,42810=>1079,42811=>922,42812=>1035,42813=>922,42814=>698,42815=>549,42816=>656,42817=>688,42822=>850,42823=>542,42824=>683,42825=>531,42826=>918,42827=>814,42830=>1406,42831=>1106,42832=>733,42833=>716,42834=>948,42835=>937,42838=>850,42839=>716,42852=>738,42853=>716,42854=>738,42855=>716,42880=>637,42881=>343,42882=>837,42883=>712,42889=>400,42890=>386,42891=>456,42892=>306,42893=>808,42894=>693,42896=>928,42897=>768,42912=>821,42913=>716,42914=>775,42915=>665,42916=>837,42917=>712,42918=>770,42919=>493,42920=>720,42921=>595,42922=>886,43002=>1062,43003=>683,43004=>733,43005=>995,43006=>372,43007=>1325,61184=>216,61185=>242,61186=>267,61187=>277,61188=>282,61189=>242,61190=>216,61191=>242,61192=>267,61193=>277,61194=>267,61195=>242,61196=>216,61197=>242,61198=>267,61199=>277,61200=>267,61201=>242,61202=>216,61203=>242,61204=>282,61205=>277,61206=>267,61207=>242,61208=>216,61209=>282,62464=>612,62465=>612,62466=>653,62467=>902,62468=>622,62469=>622,62470=>661,62471=>895,62472=>589,62473=>622,62474=>1163,62475=>626,62476=>627,62477=>893,62478=>612,62479=>626,62480=>924,62481=>627,62482=>744,62483=>634,62484=>886,62485=>626,62486=>907,62487=>626,62488=>621,62489=>628,62490=>677,62491=>626,62492=>621,62493=>630,62494=>627,62495=>571,62496=>622,62497=>631,62498=>612,62499=>611,62500=>618,62501=>671,62502=>963,62504=>1023,62505=>844,62506=>563,62507=>563,62508=>563,62509=>563,62510=>563,62511=>563,62512=>555,62513=>555,62514=>555,62515=>555,62516=>573,62517=>573,62518=>573,62519=>824,62520=>824,62521=>824,62522=>824,62523=>824,62524=>611,62525=>611,62526=>611,62527=>611,62528=>611,62529=>611,63173=>687,64256=>810,64257=>741,64258=>741,64259=>1115,64260=>1116,64261=>808,64262=>1020,64275=>1388,64276=>1384,64277=>1378,64278=>1384,64279=>1713,64285=>294,64286=>0,64287=>519,64288=>665,64289=>939,64290=>788,64291=>920,64292=>786,64293=>857,64294=>869,64295=>821,64296=>890,64297=>838,64298=>758,64299=>758,64300=>758,64301=>758,64302=>728,64303=>728,64304=>728,64305=>610,64306=>447,64307=>588,64308=>687,64309=>437,64310=>485,64312=>679,64313=>435,64314=>578,64315=>566,64316=>605,64318=>724,64320=>453,64321=>680,64323=>675,64324=>658,64326=>653,64327=>736,64328=>602,64329=>758,64330=>683,64331=>343,64332=>610,64333=>566,64334=>658,64335=>710,64338=>1005,64339=>1059,64340=>375,64341=>408,64342=>1005,64343=>1059,64344=>375,64345=>408,64346=>1005,64347=>1059,64348=>375,64349=>408,64350=>1005,64351=>1059,64352=>375,64353=>408,64354=>1005,64355=>1059,64356=>375,64357=>408,64358=>1005,64359=>1059,64360=>375,64361=>408,64362=>1162,64363=>1191,64364=>655,64365=>720,64366=>1162,64367=>1191,64368=>655,64369=>720,64370=>721,64371=>721,64372=>721,64373=>721,64374=>721,64375=>721,64376=>721,64377=>721,64378=>721,64379=>721,64380=>721,64381=>721,64382=>721,64383=>721,64384=>721,64385=>721,64386=>513,64387=>578,64388=>513,64389=>578,64390=>513,64391=>578,64392=>513,64393=>578,64394=>576,64395=>622,64396=>576,64397=>622,64398=>1024,64399=>1024,64400=>582,64401=>582,64402=>1024,64403=>1024,64404=>582,64405=>582,64406=>1024,64407=>1024,64408=>582,64409=>582,64410=>1024,64411=>1024,64412=>582,64413=>582,64414=>854,64415=>900,64416=>854,64417=>900,64418=>375,64419=>408,64426=>938,64427=>880,64428=>693,64429=>660,64467=>824,64468=>843,64469=>476,64470=>552,64473=>622,64474=>627,64488=>375,64489=>408,64508=>917,64509=>1012,64510=>375,64511=>408,65024=>0,65025=>0,65026=>0,65027=>0,65028=>0,65029=>0,65030=>0,65031=>0,65032=>0,65033=>0,65034=>0,65035=>0,65036=>0,65037=>0,65038=>0,65039=>0,65056=>0,65057=>0,65058=>0,65059=>0,65136=>342,65137=>342,65138=>342,65139=>346,65140=>342,65142=>342,65143=>342,65144=>342,65145=>342,65146=>342,65147=>342,65148=>342,65149=>342,65150=>342,65151=>342,65152=>511,65153=>343,65154=>375,65155=>343,65156=>375,65157=>622,65158=>627,65159=>343,65160=>375,65161=>917,65162=>917,65163=>375,65164=>408,65165=>343,65166=>375,65167=>1005,65168=>1059,65169=>375,65170=>408,65171=>590,65172=>606,65173=>1005,65174=>1059,65175=>375,65176=>408,65177=>1005,65178=>1059,65179=>375,65180=>408,65181=>721,65182=>721,65183=>721,65184=>721,65185=>721,65186=>721,65187=>721,65188=>721,65189=>721,65190=>721,65191=>721,65192=>721,65193=>513,65194=>578,65195=>513,65196=>578,65197=>576,65198=>622,65199=>576,65200=>622,65201=>1380,65202=>1414,65203=>983,65204=>1018,65205=>1380,65206=>1414,65207=>983,65208=>1018,65209=>1345,65210=>1364,65211=>966,65212=>985,65213=>1345,65214=>1364,65215=>966,65216=>985,65217=>1039,65218=>1071,65219=>942,65220=>974,65221=>1039,65222=>1071,65223=>942,65224=>974,65225=>683,65226=>683,65227=>683,65228=>564,65229=>683,65230=>683,65231=>683,65232=>564,65233=>1162,65234=>1191,65235=>655,65236=>720,65237=>894,65238=>901,65239=>655,65240=>720,65241=>917,65242=>931,65243=>582,65244=>582,65245=>868,65246=>893,65247=>375,65248=>408,65249=>733,65250=>784,65251=>619,65252=>670,65253=>854,65254=>900,65255=>375,65256=>408,65257=>590,65258=>606,65259=>693,65260=>660,65261=>622,65262=>627,65263=>917,65264=>1012,65265=>917,65266=>1012,65267=>375,65268=>408,65269=>745,65270=>759,65271=>745,65272=>759,65273=>745,65274=>759,65275=>745,65276=>759,65279=>0,65529=>0,65530=>0,65531=>0,65532=>0,65533=>1113,65535=>600);
|
16 |
-
// --- EOF ---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/lib/tcpdf_min/fonts/dejavusansb.z
DELETED
Binary file
|
includes/lib/tcpdf_min/fonts/dejavusansbi.ctg.z
DELETED
Binary file
|
includes/lib/tcpdf_min/fonts/dejavusansbi.php
DELETED
@@ -1,16 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
// TCPDF FONT FILE DESCRIPTION
|
3 |
-
$type='TrueTypeUnicode';
|
4 |
-
$name='DejaVuSans-BoldOblique';
|
5 |
-
$up=-63;
|
6 |
-
$ut=44;
|
7 |
-
$dw=600;
|
8 |
-
$diff='';
|
9 |
-
$originalsize=632168;
|
10 |
-
$enc='';
|
11 |
-
$file='dejavusansbi.z';
|
12 |
-
$ctg='dejavusansbi.ctg.z';
|
13 |
-
$desc=array('Flags'=>96,'FontBBox'=>'[-1067 -385 1999 1121]','ItalicAngle'=>-11,'Ascent'=>928,'Descent'=>-236,'Leading'=>0,'CapHeight'=>729,'XHeight'=>547,'StemV'=>60,'StemH'=>26,'AvgWidth'=>573,'MaxWidth'=>2016,'MissingWidth'=>600);
|
14 |
-
$cbbox=array(0=>array(50,-177,550,705),32=>array(69,0,387,729),33=>array(69,0,387,729),34=>array(95,458,426,729),35=>array(65,0,780,718),36=>array(27,-147,630,760),37=>array(55,-14,947,742),38=>array(28,-14,813,742),39=>array(95,458,211,729),40=>array(77,-132,468,759),41=>array(-27,-132,364,759),42=>array(20,278,503,742),43=>array(106,0,732,627),44=>array(-34,-142,256,189),45=>array(25,217,360,359),46=>array(46,0,259,189),47=>array(-96,-93,434,729),48=>array(36,-14,660,742),49=>array(43,0,578,729),50=>array(8,0,640,742),51=>array(0,-14,637,742),52=>array(-1,0,635,729),53=>array(13,-14,644,729),54=>array(50,-15,660,741),55=>array(78,0,694,729),56=>array(22,-14,659,742),57=>array(41,-15,652,741),58=>array(41,0,323,547),59=>array(-35,-142,323,547),60=>array(106,30,732,597),61=>array(106,144,732,482),62=>array(106,30,732,597),63=>array(104,0,554,742),64=>array(45,-172,927,703),65=>array(-65,0,691,729),66=>array(21,0,699,729),67=>array(36,-14,724,742),68=>array(21,0,786,729),69=>array(21,0,670,729),70=>array(21,0,670,729),71=>array(36,-14,778,742),72=>array(21,0,816,729),73=>array(21,0,351,729),74=>array(-166,-200,351,729),75=>array(21,0,837,729),76=>array(21,0,566,729),77=>array(21,0,974,729),78=>array(21,0,816,729),79=>array(36,-14,814,742),80=>array(21,0,719,729),81=>array(36,-146,814,742),82=>array(21,0,685,729),83=>array(15,-14,665,742),84=>array(48,0,748,729),85=>array(68,-14,791,729),86=>array(76,0,840,729),87=>array(107,0,1143,729),88=>array(-51,0,812,729),89=>array(63,0,809,729),90=>array(-26,0,740,729),91=>array(-10,-132,466,760),92=>array(71,-93,276,729),93=>array(-28,-132,448,760),94=>array(101,457,737,729),95=>array(-10,-236,510,-143),96=>array(131,616,371,800),97=>array(17,-14,611,560),98=>array(31,-14,677,760),99=>array(37,-14,581,560),100=>array(36,-14,724,760),101=>array(36,-14,640,560),102=>array(50,0,540,760),103=>array(20,-216,682,559),104=>array(31,0,654,760),105=>array(31,0,354,760),106=>array(-128,-216,354,760),107=>array(31,0,716,760),108=>array(31,0,354,760),109=>array(31,0,984,560),110=>array(31,0,654,560),111=>array(36,-14,651,560),112=>array(-10,-208,677,560),113=>array(36,-208,682,560),114=>array(31,0,545,560),115=>array(10,-14,560,560),116=>array(43,0,509,702),117=>array(60,-14,681,547),118=>array(63,0,678,547),119=>array(87,0,927,547),120=>array(-41,0,671,547),121=>array(0,-216,687,547),122=>array(-9,0,586,547),123=>array(106,-163,669,760),124=>array(127,-236,238,764),125=>array(44,-163,606,760),126=>array(106,212,732,415),160=>array(69,0,387,729),161=>array(69,0,387,729),162=>array(67,-153,610,699),163=>array(7,0,691,742),164=>array(36,30,601,596),165=>array(6,0,755,729),166=>array(127,-171,238,699),167=>array(-33,-95,494,742),168=>array(152,654,484,774),169=>array(138,0,862,725),170=>array(43,182,527,742),171=>array(61,67,594,519),172=>array(106,140,732,444),173=>array(25,217,360,359),174=>array(138,0,862,725),175=>array(155,668,481,760),176=>array(87,424,412,749),177=>array(106,0,732,627),178=>array(45,326,431,742),179=>array(40,319,427,742),180=>array(227,616,539,800),181=>array(-27,-209,670,547),182=>array(74,-96,603,729),183=>array(84,253,297,442),184=>array(22,-196,259,0),185=>array(67,326,395,734),186=>array(46,182,545,742),187=>array(57,66,589,519),188=>array(56,-14,948,742),189=>array(56,-14,1036,742),190=>array(47,-14,948,742),191=>array(37,-13,488,729),192=>array(-65,0,691,927),193=>array(-65,0,691,927),194=>array(-65,0,691,927),195=>array(-65,0,691,928),196=>array(-65,0,691,927),197=>array(-65,0,691,928),198=>array(-78,0,1072,729),199=>array(36,-196,724,742),200=>array(21,0,670,927),201=>array(21,0,670,927),202=>array(21,0,670,927),203=>array(21,0,670,927),204=>array(21,0,351,927),205=>array(21,0,448,927),206=>array(21,0,440,927),207=>array(21,0,442,927),208=>array(-2,0,803,729),209=>array(21,0,816,928),210=>array(36,-14,814,927),211=>array(36,-14,814,927),212=>array(36,-14,814,927),213=>array(36,-14,814,928),214=>array(36,-14,814,927),215=>array(125,20,713,607),216=>array(-47,-38,896,771),217=>array(68,-14,791,927),218=>array(68,-14,791,927),219=>array(68,-14,791,927),220=>array(68,-14,791,927),221=>array(63,0,809,927),222=>array(21,0,695,729),223=>array(31,-14,666,760),224=>array(17,-14,611,800),225=>array(17,-14,627,800),226=>array(17,-14,611,800),227=>array(17,-14,611,778),228=>array(17,-14,611,774),229=>array(17,-14,611,883),230=>array(17,-14,1008,560),231=>array(37,-196,581,560),232=>array(36,-14,640,800),233=>array(36,-14,650,800),234=>array(36,-14,640,800),235=>array(36,-14,640,774),236=>array(31,0,313,800),237=>array(31,0,470,800),238=>array(31,0,414,800),239=>array(31,0,415,774),240=>array(36,-14,678,760),241=>array(31,0,654,778),242=>array(36,-14,651,800),243=>array(36,-14,651,800),244=>array(36,-14,651,800),245=>array(36,-14,651,778),246=>array(36,-14,651,774),247=>array(106,42,732,585),248=>array(-17,-50,700,597),249=>array(60,-14,681,800),250=>array(60,-14,681,800),251=>array(60,-14,681,800),252=>array(60,-14,681,774),253=>array(0,-216,687,800),254=>array(-10,-208,677,760),255=>array(0,-216,687,774),256=>array(-65,0,691,914),257=>array(17,-14,611,763),258=>array(-65,0,691,936),259=>array(17,-14,611,772),260=>array(-65,-196,691,729),261=>array(17,-196,611,560),262=>array(36,-14,724,927),263=>array(37,-14,645,800),264=>array(36,-14,724,927),265=>array(37,-14,589,800),266=>array(36,-14,724,927),267=>array(37,-14,581,759),268=>array(36,-14,732,927),269=>array(37,-14,634,800),270=>array(21,0,786,927),271=>array(36,-14,947,760),272=>array(-2,0,803,729),273=>array(36,-14,817,760),274=>array(21,0,670,914),275=>array(36,-14,640,763),276=>array(21,0,670,927),277=>array(36,-14,640,784),278=>array(21,0,670,927),279=>array(36,-14,640,759),280=>array(21,-196,670,729),281=>array(36,-196,640,560),282=>array(21,0,670,927),283=>array(36,-14,640,800),284=>array(36,-14,778,927),285=>array(20,-216,682,800),286=>array(36,-14,778,927),287=>array(20,-216,682,784),288=>array(36,-14,778,927),289=>array(20,-216,682,759),290=>array(36,-224,778,742),291=>array(20,-216,682,765),292=>array(21,0,816,927),293=>array(31,0,654,927),294=>array(89,0,935,729),295=>array(85,0,708,760),296=>array(21,0,456,928),297=>array(31,0,431,778),298=>array(21,0,417,914),299=>array(31,0,402,763),300=>array(21,0,453,927),301=>array(31,0,427,784),302=>array(21,-196,351,729),303=>array(31,-196,354,760),304=>array(21,0,355,927),305=>array(31,0,313,547),306=>array(21,-200,723,729),307=>array(31,-216,697,760),308=>array(-166,-200,453,927),309=>array(-128,-216,428,800),310=>array(21,-209,837,729),311=>array(31,-209,716,760),312=>array(31,0,716,547),313=>array(21,0,566,928),314=>array(31,0,478,928),315=>array(21,-209,566,729),316=>array(-23,-209,354,760),317=>array(21,0,623,729),318=>array(31,0,582,760),319=>array(21,0,624,729),320=>array(31,0,555,760),321=>array(-23,0,603,729),322=>array(-7,0,456,760),323=>array(21,0,816,928),324=>array(31,0,654,803),325=>array(21,-209,816,729),326=>array(31,-209,654,560),327=>array(21,0,816,927),328=>array(31,0,654,800),329=>array(61,0,911,729),330=>array(31,-200,775,742),331=>array(50,-216,673,560),332=>array(36,-14,814,914),333=>array(36,-14,651,763),334=>array(36,-14,814,927),335=>array(36,-14,651,784),336=>array(36,-14,814,927),337=>array(36,-14,657,800),338=>array(42,0,1154,729),339=>array(36,-14,1054,560),340=>array(21,0,685,928),341=>array(31,0,618,803),342=>array(21,-209,685,729),343=>array(-23,-209,545,560),344=>array(21,0,685,927),345=>array(31,0,602,800),346=>array(15,-14,665,928),347=>array(10,-14,618,803),348=>array(15,-14,665,927),349=>array(10,-14,560,800),350=>array(15,-196,665,742),351=>array(10,-196,560,560),352=>array(15,-14,665,927),353=>array(10,-14,576,800),354=>array(48,-196,748,729),355=>array(43,-196,509,702),356=>array(48,0,748,927),357=>array(43,0,615,800),358=>array(48,0,748,729),359=>array(-11,0,493,702),360=>array(68,-14,791,928),361=>array(60,-14,681,778),362=>array(68,-14,791,914),363=>array(60,-14,681,763),364=>array(68,-14,791,927),365=>array(60,-14,681,784),366=>array(68,-14,791,923),367=>array(60,-14,681,873),368=>array(68,-14,791,927),369=>array(60,-14,681,800),370=>array(68,-196,791,729),371=>array(60,-196,681,547),372=>array(107,0,1143,931),373=>array(87,0,927,800),374=>array(63,0,809,931),375=>array(0,-216,687,800),376=>array(63,0,809,927),377=>array(-26,0,740,928),378=>array(-9,0,618,803),379=>array(-26,0,740,918),380=>array(-9,0,586,759),381=>array(-26,0,740,927),382=>array(-9,0,586,800),383=>array(50,0,540,760),384=>array(12,-14,651,760),385=>array(-37,0,744,729),386=>array(21,0,714,729),387=>array(12,-14,662,760),388=>array(61,0,704,729),389=>array(37,-14,677,760),390=>array(-13,-14,675,742),391=>array(32,-14,909,924),392=>array(27,-14,715,724),393=>array(-2,0,803,729),394=>array(-37,0,830,729),395=>array(65,0,763,729),396=>array(25,-14,707,760),397=>array(57,-208,662,548),398=>array(21,0,681,729),399=>array(36,-14,819,742),400=>array(37,-14,652,742),401=>array(-146,-200,689,729),402=>array(-151,-208,538,760),403=>array(32,-14,959,924),404=>array(94,-210,882,729),405=>array(10,-1,980,760),406=>array(74,0,384,729),407=>array(-7,0,397,729),408=>array(20,0,827,742),409=>array(10,0,695,760),410=>array(-10,0,365,760),411=>array(-44,0,536,760),412=>array(55,-13,1035,729),413=>array(-146,-200,835,729),414=>array(50,-208,664,560),415=>array(36,-14,814,742),416=>array(39,-14,907,760),417=>array(40,-14,771,570),418=>array(50,-14,1056,742),419=>array(63,-216,891,560),420=>array(-37,0,765,729),421=>array(-10,-208,670,760),422=>array(35,-146,684,729),423=>array(-1,-14,631,742),424=>array(-7,-14,534,560),425=>array(21,0,670,729),426=>array(34,-217,539,759),427=>array(48,-216,514,702),428=>array(36,0,772,729),429=>array(21,0,512,760),430=>array(67,-200,767,729),431=>array(67,-14,938,761),432=>array(57,-14,795,570),433=>array(42,-14,813,723),434=>array(74,0,764,729),435=>array(60,0,841,742),436=>array(24,-216,822,560),437=>array(-26,0,740,729),438=>array(-8,0,587,547),439=>array(21,-33,743,729),440=>array(10,-33,771,729),441=>array(6,-215,647,547),442=>array(-11,-208,585,547),443=>array(7,0,634,742),444=>array(11,-33,696,729),445=>array(-30,-215,573,547),446=>array(-27,-15,508,702),447=>array(-12,-208,693,560),448=>array(0,-208,371,729),449=>array(0,-208,658,729),450=>array(-23,-208,574,729),451=>array(27,0,346,729),452=>array(21,0,1570,927),453=>array(21,0,1416,800),454=>array(36,-14,1302,800),455=>array(21,-200,988,729),456=>array(21,-216,991,760),457=>array(31,-216,697,760),458=>array(21,-200,1188,729),459=>array(21,-216,1191,760),460=>array(31,-216,1066,760),461=>array(-65,0,691,927),462=>array(17,-14,615,800),463=>array(21,0,473,927),464=>array(31,0,457,800),465=>array(36,-14,814,927),466=>array(36,-14,651,800),467=>array(68,-14,791,927),468=>array(60,-14,681,800),469=>array(68,-14,791,1040),470=>array(60,-14,681,914),471=>array(68,-14,791,1057),472=>array(60,-14,681,917),473=>array(68,-14,791,1058),474=>array(60,-14,681,917),475=>array(68,-14,791,1057),476=>array(60,-14,681,917),477=>array(42,-14,630,560),478=>array(-65,0,691,1040),479=>array(17,-14,611,914),480=>array(-65,0,691,1040),481=>array(17,-14,620,881),482=>array(-78,0,1072,914),483=>array(17,-14,1008,758),484=>array(36,-14,778,742),485=>array(20,-216,682,559),486=>array(36,-14,778,927),487=>array(20,-216,682,799),488=>array(21,0,837,926),489=>array(31,0,716,926),490=>array(36,-196,814,742),491=>array(36,-196,651,560),492=>array(36,-196,814,914),493=>array(36,-196,651,763),494=>array(21,-33,743,927),495=>array(-44,-215,588,793),496=>array(-128,-216,466,800),497=>array(21,0,1570,729),498=>array(21,0,1416,729),499=>array(36,-14,1302,760),500=>array(36,-14,778,928),501=>array(20,-216,682,798),502=>array(22,-14,1222,729),503=>array(-20,-208,775,742),504=>array(21,0,816,927),505=>array(31,0,654,798),506=>array(-65,0,867,986),507=>array(17,-14,814,931),508=>array(-78,0,1072,928),509=>array(17,-14,1008,799),510=>array(-47,-38,896,928),511=>array(-17,-50,700,800),512=>array(-65,0,691,930),513=>array(17,-14,611,800),514=>array(-65,0,691,947),515=>array(17,-14,611,784),516=>array(21,0,670,930),517=>array(36,-14,640,800),518=>array(21,0,670,947),519=>array(36,-14,640,784),520=>array(21,0,437,930),521=>array(31,0,409,799),522=>array(21,0,447,947),523=>array(31,0,417,784),524=>array(36,-14,814,930),525=>array(36,-14,651,800),526=>array(36,-14,814,947),527=>array(36,-14,651,784),528=>array(21,0,685,930),529=>array(31,0,545,800),530=>array(21,0,685,947),531=>array(31,0,545,784),532=>array(68,-14,791,930),533=>array(60,-14,681,800),534=>array(68,-14,791,947),535=>array(60,-14,681,784),536=>array(15,-236,665,742),537=>array(10,-236,560,560),538=>array(48,-236,748,729),539=>array(43,-236,509,702),540=>array(-45,-210,649,742),541=>array(-47,-211,564,560),542=>array(21,0,816,926),543=>array(31,0,654,926),544=>array(32,-208,764,742),545=>array(31,-75,786,760),546=>array(25,-14,769,742),547=>array(22,-14,656,646),548=>array(-5,-216,761,729),549=>array(13,-216,608,547),550=>array(-65,0,691,927),551=>array(17,-14,611,759),552=>array(21,-192,670,729),553=>array(36,-196,640,560),554=>array(36,-14,814,1040),555=>array(36,-14,651,914),556=>array(36,-14,814,1040),557=>array(36,-14,651,914),558=>array(36,-14,814,928),559=>array(36,-14,651,759),560=>array(36,-14,814,1040),561=>array(36,-14,651,914),562=>array(63,0,809,914),563=>array(0,-216,687,763),564=>array(32,-75,413,760),565=>array(37,-75,808,560),566=>array(34,-76,500,702),567=>array(-128,-216,313,547),568=>array(25,-14,1023,760),569=>array(64,-208,1062,560),570=>array(-81,-36,854,765),571=>array(-101,-36,834,765),572=>array(-61,-46,652,594),573=>array(-13,0,566,729),574=>array(-127,-36,809,765),575=>array(33,-240,583,560),576=>array(15,-240,611,547),577=>array(69,0,765,729),578=>array(56,0,582,560),579=>array(-35,0,695,729),580=>array(20,-14,804,729),581=>array(-66,0,698,729),582=>array(21,-93,681,822),583=>array(36,-93,638,640),584=>array(-166,-200,368,729),585=>array(-128,-216,368,760),586=>array(66,-200,863,741),587=>array(64,-216,747,560),588=>array(-12,0,685,729),589=>array(-33,0,543,560),590=>array(30,0,805,729),591=>array(10,-216,708,547),592=>array(66,-14,660,560),593=>array(45,-14,685,560),594=>array(-8,-14,632,560),595=>array(12,-14,651,760),596=>array(-7,-14,537,560),597=>array(48,-69,581,560),598=>array(45,-216,727,760),599=>array(25,-14,876,760),600=>array(22,-14,630,560),601=>array(42,-14,630,560),602=>array(38,-14,890,560),603=>array(27,-14,520,560),604=>array(-50,-11,509,560),605=>array(-50,-11,788,560),606=>array(54,-14,679,560),607=>array(-107,-216,388,547),608=>array(23,-216,896,760),609=>array(44,-216,706,547),610=>array(43,-14,573,546),611=>array(87,-211,692,547),612=>array(80,-21,674,547),613=>array(88,-214,703,546),614=>array(10,0,625,760),615=>array(31,-216,646,760),616=>array(52,0,448,760),617=>array(74,-1,326,547),618=>array(31,0,515,547),619=>array(70,0,488,760),620=>array(93,0,613,760),621=>array(32,-216,356,760),622=>array(31,-215,788,760),623=>array(69,-14,1013,546),624=>array(88,-209,1032,546),625=>array(49,-216,994,560),626=>array(-160,-216,665,560),627=>array(50,-216,749,560),628=>array(-32,0,613,547),629=>array(36,-14,651,560),630=>array(43,-1,871,547),631=>array(-9,0,580,574),632=>array(60,-208,729,760),633=>array(31,-13,544,547),634=>array(10,-13,565,760),635=>array(50,-216,607,547),636=>array(9,-208,563,560),637=>array(51,-216,564,560),638=>array(31,0,583,547),639=>array(99,0,499,547),640=>array(-32,0,509,547),641=>array(-32,0,613,547),642=>array(28,-216,581,560),643=>array(-126,-216,519,760),644=>array(-106,-216,539,760),645=>array(137,-216,486,560),646=>array(-97,-217,655,760),647=>array(-25,-155,441,547),648=>array(48,-216,514,702),649=>array(74,-14,845,547),650=>array(22,-51,690,547),651=>array(74,-1,626,547),652=>array(-38,0,584,547),653=>array(-18,0,836,547),654=>array(-62,0,620,763),655=>array(53,0,648,547),656=>array(13,-216,651,547),657=>array(-1,-69,599,547),658=>array(-23,-215,608,547),659=>array(25,-215,608,547),660=>array(59,0,546,759),661=>array(57,0,592,759),662=>array(-31,0,504,759),663=>array(-5,-208,612,759),664=>array(50,-14,800,742),665=>array(31,0,593,547),666=>array(31,-14,665,560),667=>array(22,0,768,760),668=>array(28,0,658,547),669=>array(-235,-217,354,760),670=>array(73,-213,758,547),671=>array(31,0,473,547),672=>array(44,-208,895,760),673=>array(-3,0,546,759),674=>array(57,0,592,759),675=>array(25,-14,1142,760),676=>array(45,-215,1161,760),677=>array(29,-55,1145,760),678=>array(27,0,926,702),679=>array(42,-216,872,760),680=>array(34,-69,923,702),681=>array(48,-216,990,760),682=>array(10,0,808,760),683=>array(10,0,764,760),684=>array(20,0,631,641),685=>array(-31,86,399,641),686=>array(-18,-214,682,760),687=>array(-16,-216,724,760),688=>array(12,326,401,751),689=>array(12,326,400,751),690=>array(-75,205,219,751),691=>array(23,326,344,640),692=>array(24,319,344,632),693=>array(35,205,392,632),694=>array(-16,326,388,632),695=>array(52,326,599,632),696=>array(22,205,447,632),697=>array(78,557,218,800),698=>array(78,557,437,800),699=>array(113,418,389,729),700=>array(73,418,348,729),701=>array(198,616,347,856),702=>array(168,481,334,760),703=>array(159,481,325,760),704=>array(43,326,348,751),705=>array(35,326,374,751),706=>array(184,517,463,843),707=>array(161,517,440,843),708=>array(125,561,452,800),709=>array(172,561,499,800),710=>array(106,616,483,800),711=>array(151,616,528,800),712=>array(81,488,226,759),713=>array(155,668,481,760),714=>array(227,616,539,800),715=>array(131,616,371,800),716=>array(81,-81,226,190),717=>array(-11,-185,315,-93),718=>array(131,-238,371,-54),719=>array(227,-238,539,-54),720=>array(-8,0,299,547),721=>array(63,361,264,547),722=>array(126,269,292,547),723=>array(118,269,284,547),724=>array(116,238,353,458),725=>array(145,238,382,458),726=>array(46,119,370,427),727=>array(46,229,282,317),728=>array(166,639,496,784),729=>array(239,654,397,774),730=>array(184,605,462,883),731=>array(73,-196,284,0),732=>array(133,638,500,778),733=>array(143,616,563,800),734=>array(-12,213,347,524),735=>array(163,616,474,800),736=>array(36,213,458,637),737=>array(12,326,207,751),738=>array(11,318,355,640),739=>array(-20,326,427,632),740=>array(35,326,374,751),741=>array(146,0,471,693),742=>array(117,0,471,693),743=>array(87,0,471,693),744=>array(58,0,471,693),745=>array(29,0,471,693),748=>array(14,-260,340,-21),749=>array(143,605,492,822),750=>array(73,418,612,729),755=>array(91,-240,369,38),759=>array(88,-221,455,-109),768=>array(-259,616,-19,800),769=>array(-160,616,152,800),770=>array(-287,616,90,800),771=>array(-257,638,110,778),772=>array(-235,668,91,760),773=>array(-346,663,174,755),774=>array(-221,639,109,784),775=>array(-184,617,18,760),776=>array(-238,654,94,774),777=>array(-363,616,-117,843),778=>array(-200,605,78,883),779=>array(-244,616,176,800),780=>array(-236,616,141,800),781=>array(-130,615,4,832),782=>array(-223,615,97,832),783=>array(-279,616,70,800),784=>array(-221,642,109,882),785=>array(-250,639,80,784),786=>array(-264,418,-34,563),787=>array(-313,595,-130,844),788=>array(-288,595,-130,844),789=>array(-102,616,102,800),790=>array(-474,-276,-233,-93),791=>array(-406,-276,-94,-93),792=>array(-388,-240,-188,-6),793=>array(-318,-240,-118,-6),794=>array(-216,658,73,929),795=>array(-132,361,83,570),796=>array(-331,-240,-193,-11),797=>array(-403,-240,-114,-59),798=>array(-389,-240,-100,-59),799=>array(-378,-240,-128,-6),800=>array(-296,-202,-7,-110),801=>array(-514,-216,-105,117),802=>array(-310,-216,13,117),803=>array(-412,-212,-253,-92),804=>array(-442,-212,-110,-92),805=>array(-366,-240,-136,-11),806=>array(-392,-236,-162,-91),807=>array(-478,-196,-241,0),808=>array(-427,-196,-216,0),809=>array(-363,-310,-228,-93),810=>array(-422,-237,-80,-54),811=>array(-477,-239,-75,-94),812=>array(-414,-240,-37,-57),813=>array(-458,-240,-82,-57),814=>array(-424,-239,-94,-94),815=>array(-491,-240,-161,-95),816=>array(-480,-234,-113,-94),817=>array(-440,-185,-114,-93),818=>array(-565,-236,-28,-143),819=>array(-568,-236,-4,-9),820=>array(-625,212,1,415),821=>array(-480,214,-84,309),822=>array(-847,214,-77,309),823=>array(-709,-46,4,594),824=>array(-893,-36,43,765),825=>array(-308,-240,-170,-11),826=>array(-422,-238,-80,-55),827=>array(-355,-241,-75,-6),828=>array(-501,-239,-100,-94),829=>array(-392,562,-110,819),830=>array(-292,595,-101,867),831=>array(-510,528,10,755),832=>array(-259,616,-19,800),833=>array(-160,616,152,800),834=>array(-257,638,110,778),835=>array(-313,595,-130,844),836=>array(-344,654,94,978),837=>array(-365,-208,-244,-45),838=>array(-418,639,-82,786),839=>array(-378,-226,-122,-35),840=>array(-398,-240,-102,-47),841=>array(-363,-240,-111,-21),842=>array(-434,616,-68,800),843=>array(-434,567,-66,850),844=>array(-438,573,-31,835),845=>array(-459,-230,-41,-30),846=>array(-371,-240,-141,-45),847=>array(-321,610,-152,888),849=>array(-321,610,-152,888),850=>array(-250,604,80,882),851=>array(-378,-240,-124,-9),855=>array(-348,610,-179,888),856=>array(0,654,159,774),858=>array(-445,-240,-58,-11),860=>array(-471,-237,419,-79),861=>array(-278,802,613,960),862=>array(-291,797,618,889),863=>array(-481,-185,427,-93),864=>array(-291,756,459,894),865=>array(-278,769,613,927),866=>array(-533,-230,376,-30),880=>array(21,0,623,729),881=>array(31,0,494,547),882=>array(88,0,1001,729),883=>array(88,0,815,729),884=>array(78,557,218,800),885=>array(54,-208,242,35),886=>array(21,0,816,729),887=>array(31,0,670,547),890=>array(132,-208,253,-45),891=>array(-7,-14,537,560),892=>array(37,-14,581,560),893=>array(-7,-14,537,560),894=>array(-35,-142,323,547),900=>array(216,616,528,800),901=>array(152,654,589,978),902=>array(-42,0,714,800),903=>array(84,253,297,442),904=>array(22,0,831,800),905=>array(28,0,986,800),906=>array(25,0,521,800),908=>array(28,-14,851,800),910=>array(20,0,1067,800),911=>array(-1,0,855,800),912=>array(50,-19,516,978),913=>array(-65,0,691,729),914=>array(21,0,699,729),915=>array(21,0,681,729),916=>array(-66,0,698,729),917=>array(21,0,670,729),918=>array(-26,0,740,729),919=>array(21,0,816,729),920=>array(40,-14,810,742),921=>array(21,0,351,729),922=>array(21,0,837,729),923=>array(-66,0,698,729),924=>array(21,0,974,729),925=>array(21,0,816,729),926=>array(27,0,619,729),927=>array(36,-14,814,742),928=>array(21,0,816,729),929=>array(21,0,719,729),931=>array(21,0,670,729),932=>array(48,0,748,729),933=>array(63,0,809,729),934=>array(43,0,806,729),935=>array(-51,0,812,729),936=>array(78,0,866,729),937=>array(-45,0,812,742),938=>array(21,0,450,927),939=>array(63,0,809,927),940=>array(38,-12,692,800),941=>array(27,-14,567,800),942=>array(50,-208,664,800),943=>array(42,-19,436,800),944=>array(54,-10,660,978),945=>array(38,-12,692,559),946=>array(-11,-208,660,773),947=>array(66,-208,740,547),948=>array(16,-14,634,768),949=>array(27,-14,520,560),950=>array(32,-208,627,760),951=>array(50,-208,664,560),952=>array(28,-11,659,768),953=>array(42,-19,313,547),954=>array(31,0,679,547),955=>array(-44,0,529,760),956=>array(-27,-209,670,547),957=>array(68,0,653,547),958=>array(26,-208,627,760),959=>array(36,-14,651,560),960=>array(73,-19,787,547),961=>array(9,-208,699,562),962=>array(55,-208,595,560),963=>array(37,-14,781,547),964=>array(52,-19,667,547),965=>array(54,-10,645,547),966=>array(76,-208,752,552),967=>array(-48,-208,693,547),968=>array(79,-208,797,547),969=>array(33,-13,834,547),970=>array(50,-19,407,774),971=>array(54,-10,645,774),972=>array(36,-14,651,800),973=>array(54,-10,645,800),974=>array(33,-13,834,800),975=>array(41,-208,860,729),976=>array(55,-11,601,768),977=>array(46,-11,612,768),978=>array(63,0,751,729),979=>array(22,0,989,800),980=>array(63,0,751,927),981=>array(60,-208,729,760),982=>array(33,-13,897,547),983=>array(38,-188,743,547),984=>array(68,-208,818,742),985=>array(62,-208,663,560),986=>array(70,-208,769,729),987=>array(63,-208,614,547),988=>array(21,0,670,729),989=>array(-146,-208,525,760),990=>array(21,2,682,729),991=>array(68,0,585,759),992=>array(102,-208,825,742),993=>array(-15,-180,500,559),994=>array(33,-213,1048,729),995=>array(81,-208,797,547),996=>array(37,-208,811,742),997=>array(34,-208,683,560),998=>array(21,-213,861,729),999=>array(-17,-14,736,575),1000=>array(-29,-208,721,745),1001=>array(-16,-208,626,560),1002=>array(-14,0,807,742),1003=>array(-7,0,674,560),1004=>array(26,-14,791,758),1005=>array(75,-14,739,758),1006=>array(23,-208,689,729),1007=>array(42,-208,614,726),1008=>array(19,-6,723,547),1009=>array(50,-216,690,560),1010=>array(37,-14,581,560),1011=>array(-128,-216,354,760),1012=>array(36,-14,814,742),1013=>array(67,-14,602,560),1014=>array(-26,-14,509,560),1015=>array(21,0,695,729),1016=>array(-10,-208,677,760),1017=>array(36,-14,724,742),1018=>array(21,0,974,729),1019=>array(0,-208,723,547),1020=>array(-31,-208,689,560),1021=>array(-13,-14,670,742),1022=>array(36,-14,724,742),1023=>array(-13,-14,670,742),1024=>array(21,0,670,927),1025=>array(21,0,670,927),1026=>array(67,-200,798,729),1027=>array(21,0,681,927),1028=>array(41,-14,733,742),1029=>array(15,-14,665,742),1030=>array(21,0,351,729),1031=>array(21,0,468,927),1032=>array(-166,-200,351,729),1033=>array(-25,0,1081,729),1034=>array(21,0,1039,729),1035=>array(48,0,778,729),1036=>array(21,0,857,927),1037=>array(21,0,816,927),1038=>array(77,0,812,927),1039=>array(36,-157,831,729),1040=>array(-65,0,691,729),1041=>array(21,0,714,729),1042=>array(21,0,699,729),1043=>array(21,0,681,729),1044=>array(-26,-157,813,729),1045=>array(21,0,670,729),1046=>array(-56,0,1249,729),1047=>array(-0,-14,668,742),1048=>array(21,0,816,729),1049=>array(21,0,816,927),1050=>array(21,0,857,729),1051=>array(-25,0,810,729),1052=>array(21,0,974,729),1053=>array(21,0,816,729),1054=>array(36,-14,814,742),1055=>array(21,0,816,729),1056=>array(21,0,719,729),1057=>array(36,-14,724,742),1058=>array(48,0,748,729),1059=>array(77,0,812,729),1060=>array(44,0,950,729),1061=>array(-51,0,812,729),1062=>array(36,-157,840,729),1063=>array(100,0,787,729),1064=>array(21,0,1214,729),1065=>array(36,-157,1238,729),1066=>array(92,0,869,729),1067=>array(21,0,1016,729),1068=>array(21,0,671,729),1069=>array(1,-14,693,742),1070=>array(21,-14,1129,742),1071=>array(-7,0,749,729),1072=>array(17,-14,611,560),1073=>array(24,-14,640,792),1074=>array(31,0,593,547),1075=>array(28,0,549,547),1076=>array(-10,-138,736,547),1077=>array(36,-14,640,560),1078=>array(-39,0,1015,547),1079=>array(-1,-14,535,560),1080=>array(31,0,670,547),1081=>array(31,0,670,765),1082=>array(31,0,698,547),1083=>array(2,0,702,547),1084=>array(28,0,784,547),1085=>array(28,0,658,547),1086=>array(36,-14,651,560),1087=>array(28,0,658,547),1088=>array(-10,-208,677,560),1089=>array(37,-14,581,560),1090=>array(34,0,626,547),1091=>array(0,-216,687,547),1092=>array(46,-208,945,760),1093=>array(-41,0,671,547),1094=>array(44,-138,682,547),1095=>array(80,0,626,547),1096=>array(31,0,1025,547),1097=>array(44,-138,1047,547),1098=>array(52,0,695,547),1099=>array(31,0,877,547),1100=>array(31,0,572,547),1101=>array(17,-14,557,560),1102=>array(31,-14,936,560),1103=>array(-22,0,613,547),1104=>array(36,-14,640,803),1105=>array(36,-14,640,774),1106=>array(52,-216,648,760),1107=>array(28,0,604,803),1108=>array(36,-14,576,560),1109=>array(10,-14,560,560),1110=>array(31,0,354,760),1111=>array(31,0,405,774),1112=>array(-128,-216,354,760),1113=>array(-9,0,926,547),1114=>array(31,0,896,547),1115=>array(31,0,622,760),1116=>array(31,0,698,803),1117=>array(31,0,670,803),1118=>array(0,-216,687,765),1119=>array(44,-138,673,547),1120=>array(33,-14,1048,729),1121=>array(33,-13,834,547),1122=>array(77,0,770,729),1123=>array(36,0,658,731),1124=>array(21,-14,1011,742),1125=>array(31,-14,810,560),1126=>array(-63,0,914,729),1127=>array(-28,0,754,547),1128=>array(21,0,1280,729),1129=>array(31,0,1044,547),1130=>array(-21,0,851,729),1131=>array(-13,0,683,547),1132=>array(21,0,1188,729),1133=>array(28,0,1003,547),1134=>array(-25,-208,640,938),1135=>array(-24,-193,525,756),1136=>array(74,0,1126,729),1137=>array(62,-208,1100,759),1138=>array(36,-14,814,742),1139=>array(36,-14,651,560),1140=>array(75,0,896,742),1141=>array(60,0,732,560),1142=>array(75,0,896,930),1143=>array(60,0,732,800),1144=>array(57,-216,1186,742),1145=>array(63,-216,1098,565),1146=>array(40,-14,1033,742),1147=>array(35,-14,823,560),1148=>array(37,-14,1348,928),1149=>array(31,-13,1129,828),1150=>array(33,-14,1048,910),1151=>array(33,-13,834,746),1152=>array(40,-208,732,742),1153=>array(33,-208,573,560),1154=>array(19,-33,530,488),1155=>array(-608,606,-79,822),1156=>array(-427,638,-12,784),1157=>array(-356,595,-213,785),1158=>array(-384,595,-213,785),1159=>array(-811,592,1,788),1160=>array(-1067,-179,388,928),1161=>array(-973,-280,323,1022),1162=>array(21,-208,890,927),1163=>array(28,-208,748,765),1164=>array(21,0,671,729),1165=>array(27,0,549,702),1166=>array(21,0,717,729),1167=>array(-10,-208,670,560),1168=>array(21,0,710,878),1169=>array(28,0,579,700),1170=>array(17,0,709,729),1171=>array(10,0,572,547),1172=>array(21,-200,708,729),1173=>array(28,-216,554,547),1174=>array(-41,-157,1264,729),1175=>array(-25,-138,1028,547),1176=>array(-0,-196,668,742),1177=>array(-1,-196,535,560),1178=>array(36,-157,873,729),1179=>array(44,-138,711,547),1180=>array(21,0,857,729),1181=>array(31,0,698,547),1182=>array(21,0,857,729),1183=>array(10,0,677,760),1184=>array(68,0,1055,729),1185=>array(52,0,846,547),1186=>array(36,-157,904,729),1187=>array(44,-138,765,547),1188=>array(21,0,1146,729),1189=>array(28,0,897,547),1190=>array(21,-200,1174,729),1191=>array(28,-216,902,547),1192=>array(40,-14,875,743),1193=>array(40,-14,798,560),1194=>array(36,-196,724,742),1195=>array(37,-196,581,560),1196=>array(63,-157,763,729),1197=>array(49,-138,642,547),1198=>array(63,0,809,729),1199=>array(66,-216,688,547),1200=>array(61,0,805,729),1201=>array(63,-216,708,547),1202=>array(-37,-157,827,729),1203=>array(-25,-138,687,547),1204=>array(63,-157,1060,729),1205=>array(49,-138,957,547),1206=>array(129,-157,876,729),1207=>array(103,-138,730,547),1208=>array(114,0,787,729),1209=>array(87,0,624,547),1210=>array(106,0,793,729),1211=>array(31,0,654,760),1212=>array(42,-14,984,742),1213=>array(30,-14,769,560),1214=>array(42,-184,984,742),1215=>array(30,-161,769,560),1216=>array(21,0,351,729),1217=>array(-56,0,1249,927),1218=>array(-39,0,1015,784),1219=>array(21,-200,840,729),1220=>array(31,-216,679,547),1221=>array(-46,-208,885,729),1222=>array(-38,-208,746,547),1223=>array(21,-200,816,729),1224=>array(28,-216,658,547),1225=>array(21,-208,889,729),1226=>array(28,-208,748,547),1227=>array(129,-157,803,729),1228=>array(103,-138,640,547),1229=>array(21,-208,1047,729),1230=>array(28,-208,874,547),1231=>array(31,0,354,760),1232=>array(-65,0,691,936),1233=>array(17,-14,611,772),1234=>array(-65,0,691,927),1235=>array(17,-14,611,774),1236=>array(-78,0,1072,729),1237=>array(17,-14,1008,560),1238=>array(21,0,670,927),1239=>array(36,-14,640,784),1240=>array(36,-14,819,742),1241=>array(42,-14,630,560),1242=>array(36,-14,819,927),1243=>array(42,-14,630,774),1244=>array(-56,0,1249,927),1245=>array(-39,0,1015,774),1246=>array(-0,-14,668,927),1247=>array(-1,-14,540,774),1248=>array(21,-33,743,729),1249=>array(-23,-215,608,547),1250=>array(21,0,816,914),1251=>array(31,0,670,763),1252=>array(21,0,816,927),1253=>array(31,0,670,774),1254=>array(36,-14,814,927),1255=>array(36,-14,651,774),1256=>array(36,-14,814,742),1257=>array(36,-14,651,560),1258=>array(36,-14,814,927),1259=>array(36,-14,651,774),1260=>array(1,-14,693,927),1261=>array(17,-14,557,774),1262=>array(77,0,812,914),1263=>array(0,-216,687,763),1264=>array(77,0,812,927),1265=>array(0,-216,687,774),1266=>array(77,0,812,927),1267=>array(0,-216,687,800),1268=>array(100,0,787,927),1269=>array(80,0,626,774),1270=>array(36,-157,696,729),1271=>array(44,-138,565,547),1272=>array(21,0,1016,927),1273=>array(31,0,877,774),1274=>array(38,-216,730,729),1275=>array(31,-217,593,547),1276=>array(-32,-200,832,729),1277=>array(-17,-216,694,547),1278=>array(-52,0,812,729),1279=>array(-38,0,673,547),1280=>array(37,0,741,729),1281=>array(17,0,575,547),1282=>array(35,-14,1116,729),1283=>array(16,-14,868,547),1284=>array(138,-14,1063,742),1285=>array(104,-14,854,560),1286=>array(138,-208,760,742),1287=>array(104,-208,634,560),1288=>array(-48,-14,1185,729),1289=>array(-38,-14,950,547),1290=>array(22,-14,1222,729),1291=>array(28,-14,957,547),1292=>array(41,-14,783,742),1293=>array(35,-14,573,546),1294=>array(47,-14,881,729),1295=>array(34,-14,727,547),1296=>array(37,-14,652,742),1297=>array(27,-14,520,560),1298=>array(-5,-200,829,729),1299=>array(23,-216,723,547),1300=>array(-25,0,1327,729),1301=>array(2,0,1096,547),1302=>array(21,0,1106,729),1303=>array(-10,-208,1008,560),1304=>array(-7,0,1068,729),1305=>array(-22,-14,965,560),1306=>array(36,-146,814,742),1307=>array(36,-208,682,560),1308=>array(107,0,1143,729),1309=>array(87,0,927,547),1310=>array(21,0,857,729),1311=>array(31,0,698,547),1312=>array(-25,-200,1167,729),1313=>array(2,-216,946,547),1314=>array(21,-200,1173,729),1315=>array(28,-216,902,547),1316=>array(36,-157,905,729),1317=>array(44,-138,764,547),1329=>array(75,-38,849,729),1330=>array(21,0,741,743),1331=>array(50,0,805,743),1332=>array(37,0,809,743),1333=>array(78,-14,763,729),1334=>array(18,0,753,743),1335=>array(21,0,730,729),1336=>array(21,0,741,743),1337=>array(21,-13,1020,742),1338=>array(11,-14,844,729),1339=>array(21,0,705,729),1340=>array(21,0,566,729),1341=>array(21,-14,1021,729),1342=>array(93,-12,864,741),1343=>array(97,0,746,729),1344=>array(-16,-46,694,729),1345=>array(33,-48,753,743),1346=>array(32,0,748,743),1347=>array(-22,0,733,735),1348=>array(78,-14,938,729),1349=>array(42,-14,709,743),1350=>array(46,-14,763,729),1351=>array(49,-14,762,729),1352=>array(21,0,734,743),1353=>array(51,-48,724,743),1354=>array(32,0,890,743),1355=>array(7,0,742,743),1356=>array(21,0,863,743),1357=>array(68,-14,791,729),1358=>array(35,0,748,729),1359=>array(37,-14,703,743),1360=>array(21,0,741,743),1361=>array(42,-14,709,743),1362=>array(21,0,666,729),1363=>array(24,0,901,729),1364=>array(-49,0,741,743),1365=>array(36,-14,813,742),1366=>array(30,-14,909,729),1369=>array(159,481,325,760),1370=>array(73,418,349,729),1371=>array(120,616,500,800),1372=>array(115,595,590,893),1373=>array(-1,616,315,849),1374=>array(117,586,652,878),1375=>array(164,618,622,893),1377=>array(74,-13,1018,547),1378=>array(-10,-208,654,560),1379=>array(43,-208,748,559),1380=>array(31,-208,752,560),1381=>array(59,-14,683,760),1382=>array(38,-208,708,559),1383=>array(31,0,644,760),1384=>array(-10,-208,653,560),1385=>array(-10,-208,843,560),1386=>array(43,-14,830,760),1387=>array(-10,-208,646,760),1388=>array(-10,-208,385,547),1389=>array(-10,-208,1063,760),1390=>array(40,-14,719,760),1391=>array(67,-208,683,760),1392=>array(31,0,646,760),1393=>array(10,-13,593,760),1394=>array(31,-208,711,560),1395=>array(52,-13,729,768),1396=>array(67,-13,871,760),1397=>array(-128,-216,313,547),1398=>array(2,-13,683,760),1399=>array(-60,-208,520,560),1400=>array(31,0,646,560),1401=>array(-67,-208,366,547),1402=>array(59,-208,1012,547),1403=>array(-26,-208,605,560),1404=>array(31,0,665,560),1405=>array(67,-13,683,547),1406=>array(67,-208,724,760),1407=>array(63,-13,975,560),1408=>array(-10,-208,646,560),1409=>array(19,-216,681,559),1410=>array(31,0,498,547),1411=>array(63,-208,975,760),1412=>array(-151,-208,671,560),1413=>array(37,-14,652,560),1414=>array(31,-190,865,760),1415=>array(67,-14,868,760),1417=>array(41,0,323,547),1418=>array(96,179,430,359),1456=>array(275,-229,416,-10),1457=>array(149,-229,523,-10),1458=>array(140,-229,513,-10),1459=>array(127,-229,513,-10),1460=>array(287,-171,404,-73),1461=>array(213,-171,477,-73),1462=>array(237,-229,477,-10),1463=>array(89,-171,451,0),1464=>array(109,-217,446,0),1465=>array(-34,625,83,723),1466=>array(-34,625,83,723),1467=>array(190,-239,525,-5),1468=>array(293,225,411,322),1469=>array(277,-217,413,-22),1470=>array(40,413,375,555),1471=>array(132,547,469,710),1472=>array(26,-98,345,645),1473=>array(816,613,934,710),1474=>array(204,613,321,710),1475=>array(45,0,326,547),1478=>array(25,0,490,547),1479=>array(188,-229,525,-10),1488=>array(104,0,730,547),1489=>array(43,0,590,547),1490=>array(44,-9,428,547),1491=>array(126,0,651,547),1492=>array(100,0,661,547),1493=>array(91,0,359,547),1494=>array(94,0,464,547),1495=>array(91,0,654,547),1496=>array(142,-13,676,553),1497=>array(98,164,334,547),1498=>array(126,-240,549,547),1499=>array(43,0,570,547),1500=>array(126,0,633,711),1501=>array(91,0,663,547),1502=>array(84,0,690,554),1503=>array(44,-240,359,547),1504=>array(43,0,430,547),1505=>array(144,-13,678,547),1506=>array(35,-101,682,547),1507=>array(158,-240,642,547),1508=>array(91,0,656,547),1509=>array(118,-240,649,548),1510=>array(54,0,670,547),1511=>array(51,-240,767,546),1512=>array(126,0,575,547),1513=>array(89,0,856,547),1514=>array(11,-4,650,547),1520=>array(91,0,680,547),1521=>array(98,0,680,547),1522=>array(98,164,655,547),1523=>array(66,361,378,547),1524=>array(66,361,644,547),3647=>array(2,-147,642,760),3713=>array(14,-14,752,560),3714=>array(12,-14,727,560),3716=>array(13,-14,699,558),3719=>array(2,-241,548,593),3720=>array(44,0,711,561),3722=>array(45,-269,747,584),3725=>array(14,-24,767,610),3732=>array(18,-14,671,593),3733=>array(17,-19,670,603),3734=>array(35,-240,729,593),3735=>array(-1,-14,784,560),3737=>array(-9,-33,735,593),3738=>array(13,-15,716,613),3739=>array(-1,-15,739,760),3740=>array(29,-12,952,665),3741=>array(24,-14,837,760),3742=>array(50,-14,825,604),3743=>array(35,-14,848,760),3745=>array(-7,-14,826,547),3746=>array(-0,-23,789,760),3747=>array(18,-10,768,615),3749=>array(9,-33,717,593),3751=>array(5,-33,668,593),3754=>array(8,-21,860,724),3755=>array(32,-21,961,620),3757=>array(27,-20,689,606),3758=>array(15,-14,880,698),3759=>array(79,-259,932,648),3760=>array(5,27,682,606),3761=>array(-649,610,-29,896),3762=>array(51,0,578,593),3763=>array(-479,0,578,875),3764=>array(-656,622,-63,950),3765=>array(-656,633,-1,962),3766=>array(-656,622,-63,950),3767=>array(-656,633,-1,962),3768=>array(-413,-385,-165,-55),3769=>array(-479,-316,-150,-28),3771=>array(-657,610,-33,896),3772=>array(-689,-311,17,-48),3773=>array(-25,-220,758,776),3776=>array(53,-13,469,561),3777=>array(53,-13,843,561),3778=>array(25,-14,486,936),3779=>array(67,-14,640,879),3780=>array(47,-35,552,809),3782=>array(33,-240,731,582),3784=>array(-431,659,-279,844),3785=>array(-636,622,-19,918),3786=>array(-672,621,37,965),3787=>array(-530,612,-178,917),3788=>array(-511,603,194,866),3789=>array(-479,668,-229,875),3792=>array(66,-29,723,563),3793=>array(55,-139,731,586),3794=>array(1,-80,612,711),3795=>array(-49,-14,953,981),3796=>array(31,-156,647,711),3797=>array(31,-156,647,711),3798=>array(5,-14,962,950),3799=>array(36,-240,748,560),3800=>array(86,-269,766,582),3801=>array(38,-14,875,564),3804=>array(32,-21,1356,620),3805=>array(32,-21,1361,620),4256=>array(111,-14,929,819),4257=>array(139,-0,736,819),4258=>array(150,-138,672,828),4259=>array(97,-15,902,819),4260=>array(133,0,665,828),4261=>array(136,0,832,828),4262=>array(144,-14,752,819),4263=>array(117,-14,993,828),4264=>array(127,0,562,862),4265=>array(108,0,653,819),4266=>array(95,-14,834,820),4267=>array(89,-14,942,819),4268=>array(24,0,689,819),4269=>array(106,-157,886,829),4270=>array(141,-14,886,822),4271=>array(141,0,741,823),4272=>array(76,-15,969,820),4273=>array(83,-15,626,820),4274=>array(23,-0,685,828),4275=>array(106,-170,886,828),4276=>array(127,0,918,825),4277=>array(101,0,794,820),4278=>array(24,0,685,828),4279=>array(127,0,731,820),4280=>array(66,-14,736,820),4281=>array(24,0,632,819),4282=>array(113,-14,880,827),4283=>array(89,-15,926,820),4284=>array(23,-0,698,819),4285=>array(75,-15,648,828),4286=>array(23,-0,741,819),4287=>array(27,0,880,819),4288=>array(110,-14,901,820),4289=>array(24,0,647,820),4290=>array(78,-15,692,828),4291=>array(95,0,707,820),4292=>array(131,0,715,820),4293=>array(43,-14,833,828),4304=>array(76,-14,531,599),4305=>array(86,-14,552,823),4306=>array(31,-232,565,561),4307=>array(41,-225,826,557),4308=>array(26,-232,551,557),4309=>array(25,-232,562,557),4310=>array(75,-14,537,828),4311=>array(84,-14,821,557),4312=>array(75,0,556,557),4313=>array(24,-232,554,542),4314=>array(96,-225,1077,562),4315=>array(87,-14,622,828),4316=>array(89,-14,629,819),4317=>array(92,-0,808,557),4318=>array(78,-14,589,818),4319=>array(25,-232,604,560),4320=>array(91,0,816,830),4321=>array(92,-14,560,818),4322=>array(62,-232,664,670),4323=>array(47,-232,591,604),4324=>array(94,-232,844,558),4325=>array(25,-232,650,818),4326=>array(88,-225,815,557),4327=>array(25,-232,602,549),4328=>array(63,-14,609,828),4329=>array(39,0,561,828),4330=>array(65,-232,612,548),4331=>array(86,-14,659,818),4332=>array(91,-15,685,828),4333=>array(35,-232,616,818),4334=>array(95,-14,553,818),4335=>array(-7,-232,542,580),4336=>array(73,-15,602,823),4337=>array(79,-14,609,823),4338=>array(17,-146,543,557),4339=>array(25,-232,604,558),4340=>array(26,-232,618,828),4341=>array(65,-14,656,828),4342=>array(87,-232,842,557),4343=>array(29,-232,551,557),4344=>array(25,-232,548,549),4345=>array(93,-232,627,561),4346=>array(68,-111,558,557),4347=>array(29,0,446,500),4348=>array(124,400,424,828),5121=>array(76,0,840,729),5122=>array(-66,0,698,1050),5123=>array(-66,0,698,729),5124=>array(-66,0,698,928),5125=>array(21,0,843,729),5126=>array(21,0,843,928),5127=>array(21,0,843,927),5129=>array(21,0,843,729),5130=>array(62,0,884,729),5131=>array(62,0,884,928),5132=>array(80,0,1084,729),5133=>array(76,0,937,729),5134=>array(80,0,942,729),5135=>array(-66,0,937,729),5136=>array(80,0,942,928),5137=>array(-66,0,937,928),5138=>array(80,0,1087,729),5139=>array(21,0,1067,729),5140=>array(80,0,1087,928),5141=>array(21,0,1067,928),5142=>array(21,0,843,928),5143=>array(80,0,1128,729),5144=>array(62,0,1070,729),5145=>array(80,0,1128,928),5146=>array(62,0,1070,928),5147=>array(62,0,884,928),5149=>array(80,607,237,728),5150=>array(20,326,434,734),5151=>array(8,338,402,722),5152=>array(54,338,356,722),5153=>array(53,392,370,711),5154=>array(29,352,345,670),5155=>array(33,392,341,670),5156=>array(57,392,341,670),5157=>array(-2,327,552,749),5158=>array(21,326,454,734),5159=>array(80,304,237,424),5160=>array(53,494,346,569),5161=>array(53,392,346,670),5162=>array(75,392,368,693),5163=>array(76,0,1145,729),5164=>array(-66,0,917,729),5165=>array(21,0,1147,729),5166=>array(62,0,1229,729),5167=>array(76,0,840,729),5168=>array(-66,0,698,1050),5169=>array(-66,0,698,729),5170=>array(-66,0,698,928),5171=>array(2,0,824,729),5172=>array(2,0,824,928),5173=>array(2,0,824,927),5175=>array(2,0,824,729),5176=>array(51,0,873,729),5177=>array(51,0,873,928),5178=>array(80,0,1084,729),5179=>array(76,0,937,729),5180=>array(80,0,942,729),5181=>array(-66,0,937,729),5182=>array(80,0,942,928),5183=>array(-66,0,937,928),5184=>array(80,0,1068,729),5185=>array(2,0,1067,729),5186=>array(80,0,1068,928),5187=>array(2,0,1067,928),5188=>array(80,0,1117,729),5189=>array(51,0,1070,729),5190=>array(80,0,1117,928),5191=>array(51,0,1070,928),5192=>array(51,0,873,927),5193=>array(48,326,559,727),5194=>array(20,326,212,734),5196=>array(79,-14,792,729),5197=>array(20,0,733,1050),5198=>array(20,0,733,743),5199=>array(20,0,733,928),5200=>array(2,0,763,729),5201=>array(2,0,763,928),5202=>array(2,0,763,927),5204=>array(2,0,763,729),5205=>array(52,0,813,729),5206=>array(52,0,813,928),5207=>array(80,-14,1037,729),5208=>array(79,-14,976,729),5209=>array(80,0,977,743),5210=>array(20,0,976,743),5211=>array(80,0,977,928),5212=>array(20,0,976,928),5213=>array(80,0,1007,729),5214=>array(2,0,982,729),5215=>array(80,0,1007,928),5216=>array(2,0,982,928),5217=>array(80,0,1057,729),5218=>array(52,0,979,729),5219=>array(80,0,1057,928),5220=>array(52,0,979,928),5221=>array(52,0,1057,729),5222=>array(59,326,466,733),5223=>array(79,-14,989,734),5224=>array(20,0,989,743),5225=>array(2,0,1007,734),5226=>array(52,0,1000,734),5227=>array(64,0,675,743),5228=>array(20,0,726,1050),5229=>array(20,0,726,743),5230=>array(20,0,726,928),5231=>array(18,-14,724,729),5232=>array(18,-14,731,928),5233=>array(18,-14,818,927),5234=>array(68,-14,679,729),5235=>array(68,-14,679,928),5236=>array(80,0,960,743),5237=>array(64,0,902,743),5238=>array(80,0,962,743),5239=>array(20,0,902,743),5240=>array(80,0,962,928),5241=>array(20,0,902,928),5242=>array(80,-14,1009,729),5243=>array(18,-14,902,729),5244=>array(80,-14,1017,928),5245=>array(18,-14,902,928),5246=>array(80,-14,916,729),5247=>array(68,-14,902,729),5248=>array(80,-14,916,928),5249=>array(68,-14,902,928),5250=>array(52,-14,916,729),5251=>array(47,319,432,734),5252=>array(43,319,485,734),5253=>array(64,0,921,743),5254=>array(20,0,921,743),5255=>array(18,-14,921,734),5256=>array(68,-14,921,734),5257=>array(64,0,675,743),5258=>array(20,0,726,1050),5259=>array(20,0,726,743),5260=>array(20,0,726,928),5261=>array(18,-14,724,729),5262=>array(18,-14,737,928),5263=>array(18,-14,824,927),5264=>array(68,-14,679,729),5265=>array(68,-14,679,928),5266=>array(80,0,960,743),5267=>array(64,0,902,743),5268=>array(80,0,1011,743),5269=>array(20,0,902,743),5270=>array(80,0,1011,928),5271=>array(20,0,902,928),5272=>array(80,-14,1009,729),5273=>array(18,-14,902,729),5274=>array(80,-14,1023,928),5275=>array(18,-14,902,928),5276=>array(80,-14,964,729),5277=>array(68,-14,902,729),5278=>array(80,-14,964,928),5279=>array(68,-14,902,928),5280=>array(52,-14,964,729),5281=>array(47,319,432,734),5282=>array(46,319,485,734),5283=>array(71,0,605,729),5284=>array(21,0,670,1050),5285=>array(21,0,670,729),5286=>array(21,0,670,928),5287=>array(-43,0,605,729),5288=>array(-43,0,621,928),5289=>array(-43,0,708,927),5290=>array(21,0,556,729),5291=>array(21,0,556,928),5292=>array(80,0,860,729),5293=>array(71,0,782,729),5294=>array(80,0,907,729),5295=>array(21,0,801,729),5296=>array(80,0,907,928),5297=>array(21,0,801,928),5298=>array(80,0,860,729),5299=>array(-43,0,801,729),5300=>array(80,0,875,928),5301=>array(-43,0,801,928),5302=>array(80,0,792,729),5303=>array(21,0,801,729),5304=>array(80,0,792,928),5305=>array(21,0,801,928),5306=>array(52,0,792,729),5307=>array(21,326,355,734),5308=>array(55,326,532,733),5309=>array(20,326,420,734),5312=>array(103,-14,946,468),5313=>array(41,-14,951,781),5314=>array(41,-14,951,468),5315=>array(41,-14,951,667),5316=>array(-20,0,891,482),5317=>array(-20,0,891,667),5318=>array(-20,0,891,667),5319=>array(42,0,885,482),5320=>array(42,0,885,667),5321=>array(80,-14,1196,468),5322=>array(103,-14,1175,468),5323=>array(80,0,1153,482),5324=>array(42,0,1156,482),5325=>array(80,0,1153,667),5326=>array(42,0,1156,667),5327=>array(42,0,885,667),5328=>array(61,477,593,742),5329=>array(43,319,481,734),5330=>array(34,477,607,742),5331=>array(102,0,945,468),5332=>array(39,0,949,781),5333=>array(39,0,949,468),5334=>array(39,0,949,667),5335=>array(-18,0,892,468),5336=>array(-18,0,892,667),5337=>array(-18,0,892,667),5338=>array(43,0,886,468),5339=>array(43,0,886,667),5340=>array(80,0,1188,468),5341=>array(102,0,1175,468),5342=>array(80,0,1245,468),5343=>array(39,0,1156,468),5344=>array(80,0,1245,667),5345=>array(39,0,1156,667),5346=>array(80,0,1189,468),5347=>array(-18,0,1142,468),5348=>array(80,0,1189,667),5349=>array(-18,0,1142,667),5350=>array(80,0,1181,468),5351=>array(43,0,1156,468),5352=>array(80,0,1181,667),5353=>array(43,0,1156,667),5354=>array(61,477,593,734),5356=>array(26,0,874,729),5357=>array(92,0,643,729),5358=>array(21,0,841,1050),5359=>array(21,0,760,729),5360=>array(21,0,773,928),5361=>array(-30,0,709,729),5362=>array(-30,0,717,928),5363=>array(-30,0,804,927),5364=>array(87,0,638,729),5365=>array(87,0,638,928),5366=>array(80,0,911,729),5367=>array(92,0,886,729),5368=>array(80,0,997,729),5369=>array(21,0,917,729),5370=>array(80,0,1010,928),5371=>array(21,0,917,928),5372=>array(80,0,977,729),5373=>array(-30,0,886,729),5374=>array(80,0,985,928),5375=>array(-30,0,886,928),5376=>array(80,0,875,729),5377=>array(87,0,917,729),5378=>array(80,0,875,928),5379=>array(87,0,917,928),5380=>array(52,0,875,729),5381=>array(57,326,406,734),5382=>array(28,319,413,742),5383=>array(20,326,477,734),5392=>array(65,-14,858,743),5393=>array(7,-14,917,743),5394=>array(7,-14,917,928),5395=>array(33,-14,1103,482),5396=>array(33,-14,1103,667),5397=>array(36,-14,1100,482),5398=>array(36,-14,1100,667),5399=>array(80,-14,1144,743),5400=>array(65,-14,1129,743),5401=>array(80,-14,1202,743),5402=>array(7,-14,1129,743),5403=>array(80,-14,1202,928),5404=>array(7,-14,1129,928),5405=>array(80,-14,1398,482),5406=>array(33,-14,1348,482),5407=>array(80,-14,1398,667),5408=>array(33,-14,1348,667),5409=>array(80,-14,1395,482),5410=>array(36,-14,1348,482),5411=>array(80,-14,1395,667),5412=>array(36,-14,1348,667),5413=>array(58,469,693,747),5414=>array(63,0,689,729),5415=>array(21,0,697,1050),5416=>array(21,0,697,729),5417=>array(21,0,697,928),5418=>array(79,0,755,729),5419=>array(79,0,772,928),5420=>array(79,0,859,927),5421=>array(87,0,713,729),5422=>array(87,0,713,928),5423=>array(80,0,916,729),5424=>array(63,0,931,729),5425=>array(80,0,934,729),5426=>array(21,0,923,729),5427=>array(80,0,934,928),5428=>array(21,0,923,928),5429=>array(80,0,982,729),5430=>array(79,0,931,729),5431=>array(80,0,1000,928),5432=>array(79,0,931,928),5433=>array(80,0,950,729),5434=>array(87,0,923,729),5435=>array(80,0,950,928),5436=>array(87,0,923,928),5437=>array(52,0,950,928),5438=>array(57,326,450,734),5440=>array(53,392,346,670),5441=>array(20,326,487,734),5442=>array(91,-14,996,468),5443=>array(103,-14,988,468),5444=>array(-20,0,885,482),5445=>array(45,0,930,781),5446=>array(45,0,930,482),5447=>array(45,0,930,667),5448=>array(21,0,716,729),5449=>array(21,0,716,928),5450=>array(21,0,667,729),5451=>array(65,0,712,729),5452=>array(65,0,712,928),5453=>array(17,0,712,729),5454=>array(80,0,982,928),5455=>array(65,0,887,928),5456=>array(74,326,478,727),5458=>array(2,0,849,729),5459=>array(99,0,838,743),5460=>array(2,-14,700,1050),5461=>array(2,-14,700,729),5462=>array(2,-14,700,928),5463=>array(51,0,873,663),5464=>array(51,0,873,928),5465=>array(69,0,896,663),5466=>array(69,0,896,928),5467=>array(80,0,1140,928),5468=>array(69,0,1070,928),5469=>array(52,311,568,675),5470=>array(68,-14,791,743),5471=>array(68,-14,772,743),5472=>array(40,-14,744,743),5473=>array(21,-14,744,743),5474=>array(40,-14,744,928),5475=>array(21,-14,744,928),5476=>array(2,0,769,729),5477=>array(2,0,769,928),5478=>array(47,0,811,729),5479=>array(47,0,811,928),5480=>array(80,0,1055,928),5481=>array(47,0,979,928),5482=>array(55,326,540,733),5492=>array(58,0,871,743),5493=>array(62,0,966,743),5494=>array(62,0,966,928),5495=>array(11,-14,915,729),5496=>array(11,-14,915,928),5497=>array(106,-14,919,729),5498=>array(106,-14,919,928),5499=>array(69,319,551,734),5500=>array(21,0,816,729),5501=>array(20,326,487,734),5502=>array(74,0,1220,1050),5503=>array(74,0,1220,743),5504=>array(74,0,1220,928),5505=>array(74,-14,1218,729),5506=>array(74,-14,1226,928),5507=>array(74,-14,1173,729),5508=>array(74,-14,1173,928),5509=>array(74,319,926,734),5514=>array(64,0,871,743),5515=>array(62,0,966,743),5516=>array(11,-14,916,729),5517=>array(106,-14,913,729),5518=>array(77,0,1573,1050),5519=>array(77,0,1573,743),5520=>array(77,0,1573,928),5521=>array(77,-14,1275,741),5522=>array(77,-14,1289,928),5523=>array(77,-14,1526,741),5524=>array(77,-14,1526,928),5525=>array(77,335,795,741),5526=>array(77,335,1220,741),5536=>array(16,0,939,709),5537=>array(16,0,939,709),5538=>array(-8,-242,916,468),5539=>array(-8,-242,916,667),5540=>array(66,-242,910,468),5541=>array(66,-242,910,667),5542=>array(74,344,606,734),5543=>array(62,0,739,729),5544=>array(-49,0,697,729),5545=>array(-49,0,697,928),5546=>array(79,0,825,729),5547=>array(79,0,825,928),5548=>array(37,0,714,729),5549=>array(37,0,714,928),5550=>array(36,326,450,734),5551=>array(22,-14,686,729),5598=>array(21,0,782,729),5601=>array(48,0,809,729),5702=>array(20,326,473,734),5703=>array(20,240,473,820),5742=>array(-20,0,427,306),5743=>array(74,0,1169,743),5744=>array(77,0,1522,743),5745=>array(77,0,1999,743),5746=>array(77,0,1999,928),5747=>array(77,-14,1701,741),5748=>array(77,-14,1672,928),5749=>array(77,-14,1952,741),5750=>array(77,-14,1952,928),7424=>array(-38,0,584,547),7425=>array(-53,0,800,547),7426=>array(42,-14,1021,560),7427=>array(-9,0,565,547),7428=>array(37,-14,581,560),7429=>array(31,-1,614,547),7430=>array(11,-1,611,547),7431=>array(39,0,526,547),7432=>array(27,-14,516,560),7433=>array(10,-213,333,547),7434=>array(-4,-14,471,547),7435=>array(31,0,716,547),7436=>array(-26,0,473,547),7437=>array(28,0,784,547),7438=>array(31,0,670,547),7439=>array(36,-14,651,560),7440=>array(-7,-14,537,560),7441=>array(42,-27,617,573),7442=>array(20,31,603,515),7443=>array(44,-28,619,579),7444=>array(42,-14,1046,560),7446=>array(15,273,616,560),7447=>array(72,-14,673,273),7448=>array(-2,0,533,547),7449=>array(-32,0,613,547),7450=>array(71,0,613,547),7451=>array(34,0,626,547),7452=>array(75,-14,662,547),7453=>array(32,10,685,560),7454=>array(39,11,896,561),7455=>array(-59,-238,715,560),7456=>array(63,0,678,547),7457=>array(87,0,927,547),7458=>array(-9,0,586,547),7459=>array(19,-14,588,547),7462=>array(31,0,552,547),7463=>array(-38,0,584,547),7464=>array(31,0,660,547),7465=>array(-2,0,533,547),7466=>array(98,0,751,547),7467=>array(2,0,702,547),7468=>array(-37,326,445,734),7469=>array(-40,326,670,734),7470=>array(18,326,436,734),7472=>array(18,326,490,734),7473=>array(18,326,417,734),7474=>array(18,326,424,734),7475=>array(31,318,489,742),7476=>array(18,326,509,734),7477=>array(18,326,216,734),7478=>array(-86,214,227,734),7479=>array(18,326,524,734),7480=>array(18,326,360,734),7481=>array(18,326,608,734),7482=>array(18,326,509,734),7483=>array(18,326,509,734),7484=>array(31,318,504,742),7485=>array(21,318,480,742),7486=>array(18,326,450,734),7487=>array(18,326,433,734),7488=>array(27,326,466,734),7489=>array(50,318,494,734),7490=>array(58,326,715,734),7491=>array(37,318,411,640),7492=>array(48,318,415,640),7493=>array(53,318,457,640),7494=>array(53,318,669,640),7495=>array(20,318,427,751),7496=>array(48,318,481,751),7497=>array(49,318,429,640),7498=>array(53,318,423,640),7499=>array(39,318,347,640),7500=>array(37,318,345,640),7501=>array(38,205,455,639),7502=>array(7,207,210,632),7503=>array(20,326,451,751),7504=>array(21,326,621,640),7505=>array(32,205,424,640),7506=>array(49,318,436,640),7507=>array(22,318,357,640),7508=>array(108,479,487,640),7509=>array(108,318,487,479),7510=>array(-6,209,427,640),7511=>array(72,326,365,719),7512=>array(42,318,433,632),7513=>array(55,332,466,640),7514=>array(47,318,642,632),7515=>array(83,326,471,632),7517=>array(-0,209,414,759),7518=>array(39,209,461,632),7519=>array(16,318,395,756),7520=>array(52,209,468,635),7521=>array(-25,209,432,632),7522=>array(12,0,205,425),7523=>array(23,0,344,313),7524=>array(42,-8,433,306),7525=>array(83,0,471,306),7526=>array(-0,-117,414,433),7527=>array(39,-117,461,306),7528=>array(-0,-117,427,314),7529=>array(52,-117,468,309),7530=>array(-25,-117,432,306),7543=>array(11,-216,673,559),7544=>array(18,326,509,734),7547=>array(31,0,515,547),7549=>array(-10,-208,753,560),7557=>array(84,-216,458,760),7579=>array(23,318,423,640),7580=>array(53,318,385,640),7581=>array(56,288,388,640),7582=>array(42,318,432,751),7583=>array(25,318,337,640),7584=>array(58,326,362,751),7585=>array(12,205,288,632),7586=>array(57,205,464,632),7587=>array(58,207,441,632),7588=>array(35,326,283,751),7589=>array(48,326,208,632),7590=>array(23,326,321,632),7591=>array(23,326,321,632),7592=>array(17,205,376,751),7593=>array(23,205,229,751),7594=>array(23,205,258,751),7595=>array(23,326,300,632),7596=>array(35,205,625,640),7597=>array(58,209,648,632),7598=>array(11,205,523,640),7599=>array(35,205,476,640),7600=>array(23,326,422,632),7601=>array(53,318,432,640),7602=>array(53,209,485,751),7603=>array(41,205,382,640),7604=>array(0,205,393,751),7605=>array(73,205,365,719),7606=>array(47,318,532,632),7607=>array(54,298,471,632),7608=>array(47,318,413,632),7609=>array(48,326,395,632),7610=>array(23,326,416,632),7611=>array(23,326,391,632),7612=>array(35,205,439,632),7613=>array(27,288,403,632),7614=>array(16,206,404,632),7615=>array(53,320,370,756),7620=>array(-483,616,-19,800),7621=>array(-451,616,-35,800),7622=>array(-467,616,-51,800),7623=>array(-483,616,-19,800),7624=>array(-495,616,-7,800),7625=>array(-531,616,29,800),7680=>array(-65,-240,691,729),7681=>array(17,-240,611,560),7682=>array(21,0,699,927),7683=>array(31,-14,677,941),7684=>array(21,-212,699,729),7685=>array(31,-212,677,760),7686=>array(21,-185,699,729),7687=>array(31,-185,677,760),7688=>array(36,-196,724,927),7689=>array(37,-196,581,800),7690=>array(21,0,786,927),7691=>array(36,-14,757,941),7692=>array(21,-212,786,729),7693=>array(36,-212,724,760),7694=>array(21,-185,786,729),7695=>array(36,-185,724,760),7696=>array(21,-194,786,729),7697=>array(34,-196,724,760),7698=>array(21,-240,786,729),7699=>array(36,-240,724,760),7700=>array(21,0,670,1057),7701=>array(36,-14,640,898),7702=>array(21,0,670,1057),7703=>array(36,-14,640,900),7704=>array(44,-203,693,729),7705=>array(36,-203,640,560),7706=>array(21,-221,670,729),7707=>array(36,-221,640,560),7708=>array(21,-196,670,927),7709=>array(36,-196,640,783),7710=>array(21,0,670,928),7711=>array(50,0,540,941),7712=>array(36,-14,778,899),7713=>array(20,-216,682,760),7714=>array(21,0,816,928),7715=>array(31,0,654,941),7716=>array(21,-212,816,729),7717=>array(31,-212,654,760),7718=>array(21,0,816,927),7719=>array(31,0,654,927),7720=>array(-61,-196,816,729),7721=>array(-43,-196,654,760),7722=>array(21,-239,816,729),7723=>array(31,-239,654,760),7724=>array(-108,-221,351,729),7725=>array(-108,-221,354,760),7726=>array(21,0,511,1057),7727=>array(31,0,477,903),7728=>array(21,0,837,927),7729=>array(31,0,716,982),7730=>array(21,-212,837,729),7731=>array(31,-212,716,760),7732=>array(21,-185,837,729),7733=>array(31,-185,716,760),7734=>array(21,-212,566,729),7735=>array(10,-212,354,760),7736=>array(21,-212,566,942),7737=>array(10,-212,450,914),7738=>array(21,-185,566,729),7739=>array(-68,-185,354,760),7740=>array(21,-240,566,729),7741=>array(-113,-240,354,760),7742=>array(21,0,974,927),7743=>array(31,0,984,800),7744=>array(21,0,974,928),7745=>array(31,0,984,759),7746=>array(21,-212,974,729),7747=>array(31,-212,984,560),7748=>array(21,0,816,927),7749=>array(31,0,654,759),7750=>array(21,-212,816,729),7751=>array(31,-212,654,560),7752=>array(21,-185,816,729),7753=>array(31,-185,654,560),7754=>array(21,-240,816,729),7755=>array(31,-240,654,560),7756=>array(36,-14,814,1057),7757=>array(36,-14,651,917),7758=>array(36,-14,814,1061),7759=>array(36,-14,651,900),7760=>array(36,-14,814,1057),7761=>array(36,-14,651,898),7762=>array(36,-14,814,1057),7763=>array(36,-14,651,900),7764=>array(21,0,719,927),7765=>array(-10,-208,677,800),7766=>array(21,0,719,928),7767=>array(-10,-208,677,759),7768=>array(21,0,685,928),7769=>array(31,0,545,759),7770=>array(21,-212,685,729),7771=>array(10,-212,545,560),7772=>array(21,-212,685,914),7773=>array(10,-212,545,759),7774=>array(21,-185,685,729),7775=>array(-69,-185,545,560),7776=>array(15,-14,665,928),7777=>array(10,-14,560,759),7778=>array(15,-212,665,742),7779=>array(10,-212,560,560),7780=>array(15,-14,719,928),7781=>array(10,-14,682,816),7782=>array(15,-14,690,1053),7783=>array(10,-14,605,875),7784=>array(15,-212,665,928),7785=>array(10,-212,560,762),7786=>array(48,0,748,928),7787=>array(43,0,509,941),7788=>array(48,-212,748,729),7789=>array(43,-212,509,702),7790=>array(48,-185,748,729),7791=>array(27,-185,509,702),7792=>array(38,-240,748,729),7793=>array(-20,-240,509,702),7794=>array(68,-212,791,729),7795=>array(60,-212,681,547),7796=>array(68,-221,791,729),7797=>array(60,-221,681,547),7798=>array(68,-203,791,729),7799=>array(60,-203,681,547),7800=>array(68,-14,791,1057),7801=>array(60,-14,681,917),7802=>array(68,-14,791,1043),7803=>array(60,-14,681,885),7804=>array(76,0,840,928),7805=>array(63,0,678,778),7806=>array(76,-212,840,729),7807=>array(63,-212,678,547),7808=>array(107,0,1143,931),7809=>array(87,0,927,803),7810=>array(107,0,1143,931),7811=>array(87,0,927,803),7812=>array(107,0,1143,927),7813=>array(87,0,927,774),7814=>array(107,0,1143,927),7815=>array(87,0,927,759),7816=>array(107,-212,1143,729),7817=>array(87,-212,927,547),7818=>array(-51,0,812,927),7819=>array(-41,0,671,759),7820=>array(-51,0,812,927),7821=>array(-41,0,671,774),7822=>array(63,0,809,928),7823=>array(0,-216,687,759),7824=>array(-26,0,740,927),7825=>array(-9,0,586,800),7826=>array(-26,-212,740,729),7827=>array(-9,-212,586,547),7828=>array(-26,-185,740,729),7829=>array(-9,-185,586,547),7830=>array(31,-185,654,760),7831=>array(43,0,509,927),7832=>array(87,0,927,883),7833=>array(0,-216,687,883),7834=>array(17,-14,825,760),7835=>array(50,0,540,941),7836=>array(-39,0,518,760),7837=>array(17,0,518,760),7838=>array(38,-14,808,743),7839=>array(16,-14,634,768),7840=>array(-65,-212,691,729),7841=>array(17,-212,611,560),7842=>array(-65,0,691,1025),7843=>array(17,-14,611,844),7844=>array(-65,0,853,1057),7845=>array(17,-14,795,876),7846=>array(-65,0,759,1057),7847=>array(17,-14,704,876),7848=>array(-65,0,840,1093),7849=>array(17,-14,773,913),7850=>array(-65,0,691,1068),7851=>array(17,-14,631,888),7852=>array(-65,-212,691,927),7853=>array(17,-212,611,800),7854=>array(-65,0,702,1057),7855=>array(17,-14,646,889),7856=>array(-65,0,691,1057),7857=>array(17,-14,611,889),7858=>array(-65,0,691,1121),7859=>array(17,-14,611,953),7860=>array(-65,0,693,1068),7861=>array(17,-14,630,900),7862=>array(-65,-212,691,936),7863=>array(17,-212,611,772),7864=>array(21,-212,670,729),7865=>array(36,-212,640,560),7866=>array(21,0,670,1025),7867=>array(36,-14,640,844),7868=>array(21,0,670,928),7869=>array(36,-14,640,778),7870=>array(21,0,805,1057),7871=>array(36,-14,814,876),7872=>array(21,0,772,1057),7873=>array(36,-14,721,876),7874=>array(21,0,799,1093),7875=>array(36,-14,797,913),7876=>array(21,0,670,1068),7877=>array(36,-14,648,888),7878=>array(21,-212,670,927),7879=>array(36,-212,640,800),7880=>array(21,0,417,1025),7881=>array(31,0,395,844),7882=>array(6,-212,351,729),7883=>array(10,-212,354,760),7884=>array(36,-212,814,742),7885=>array(36,-212,651,560),7886=>array(36,-14,814,1025),7887=>array(36,-14,651,844),7888=>array(36,-14,884,1057),7889=>array(36,-14,815,876),7890=>array(36,-14,814,1057),7891=>array(36,-14,724,876),7892=>array(36,-14,890,1093),7893=>array(36,-14,802,913),7894=>array(36,-14,814,1068),7895=>array(36,-14,655,888),7896=>array(36,-212,814,927),7897=>array(36,-212,651,800),7898=>array(39,-14,907,927),7899=>array(40,-14,771,800),7900=>array(39,-14,907,927),7901=>array(40,-14,771,798),7902=>array(39,-14,907,1025),7903=>array(40,-14,771,844),7904=>array(39,-14,907,928),7905=>array(40,-14,771,778),7906=>array(39,-212,907,760),7907=>array(40,-212,771,570),7908=>array(68,-212,791,729),7909=>array(60,-212,681,547),7910=>array(68,-14,791,1025),7911=>array(60,-14,681,844),7912=>array(67,-14,938,927),7913=>array(57,-14,795,799),7914=>array(67,-14,938,927),7915=>array(57,-14,795,800),7916=>array(67,-14,938,1025),7917=>array(57,-14,795,844),7918=>array(67,-14,938,928),7919=>array(57,-14,795,778),7920=>array(67,-212,938,761),7921=>array(57,-212,795,570),7922=>array(63,0,809,931),7923=>array(0,-216,687,803),7924=>array(63,-212,809,729),7925=>array(0,-216,687,547),7926=>array(63,0,809,1025),7927=>array(0,-216,687,844),7928=>array(63,0,809,928),7929=>array(0,-216,687,778),7930=>array(21,0,882,729),7931=>array(10,0,698,760),7936=>array(38,-12,692,785),7937=>array(38,-12,692,785),7938=>array(38,-12,692,800),7939=>array(38,-12,692,800),7940=>array(38,-12,692,800),7941=>array(38,-12,692,800),7942=>array(38,-12,692,928),7943=>array(38,-12,692,928),7944=>array(-65,0,691,785),7945=>array(-65,0,691,785),7946=>array(29,0,958,800),7947=>array(69,0,960,800),7948=>array(29,0,852,800),7949=>array(67,0,880,800),7950=>array(-3,0,752,928),7951=>array(20,0,776,928),7952=>array(27,-14,520,785),7953=>array(27,-14,520,785),7954=>array(27,-14,547,800),7955=>array(27,-14,541,800),7956=>array(27,-14,616,800),7957=>array(27,-14,601,800),7960=>array(31,0,778,785),7961=>array(69,0,781,785),7962=>array(29,0,1086,800),7963=>array(69,0,1083,800),7964=>array(29,0,1010,800),7965=>array(67,0,1039,800),7968=>array(50,-208,664,785),7969=>array(50,-208,664,785),7970=>array(50,-208,664,800),7971=>array(50,-208,664,800),7972=>array(50,-208,664,800),7973=>array(50,-208,684,800),7974=>array(50,-208,664,928),7975=>array(50,-208,664,928),7976=>array(31,0,924,785),7977=>array(69,0,930,785),7978=>array(29,0,1229,800),7979=>array(69,0,1229,800),7980=>array(29,0,1159,800),7981=>array(67,0,1185,800),7982=>array(98,0,1033,928),7983=>array(97,0,1042,928),7984=>array(42,-19,313,785),7985=>array(42,-19,313,785),7986=>array(0,-19,457,800),7987=>array(7,-19,426,800),7988=>array(42,-19,531,800),7989=>array(42,-19,523,800),7990=>array(42,-19,458,928),7991=>array(42,-19,455,928),7992=>array(31,0,462,785),7993=>array(69,0,468,785),7994=>array(29,0,756,800),7995=>array(69,0,764,800),7996=>array(29,0,691,800),7997=>array(67,0,717,800),7998=>array(98,0,583,928),7999=>array(97,0,583,928),8000=>array(36,-14,651,785),8001=>array(36,-14,651,785),8002=>array(36,-14,651,800),8003=>array(36,-14,651,800),8004=>array(36,-14,667,800),8005=>array(36,-14,680,800),8008=>array(31,-14,855,785),8009=>array(69,-14,897,785),8010=>array(29,-14,1185,800),8011=>array(69,-14,1188,800),8012=>array(29,-14,1017,800),8013=>array(67,-14,1046,800),8016=>array(54,-10,645,785),8017=>array(54,-10,645,785),8018=>array(54,-10,645,800),8019=>array(54,-10,645,800),8020=>array(54,-10,677,800),8021=>array(54,-10,683,800),8022=>array(54,-10,645,928),8023=>array(54,-10,645,928),8025=>array(69,0,1015,785),8027=>array(69,0,1269,800),8029=>array(67,0,1284,800),8031=>array(97,0,1134,928),8032=>array(33,-13,834,785),8033=>array(33,-13,834,785),8034=>array(33,-13,834,800),8035=>array(33,-13,834,800),8036=>array(33,-13,834,800),8037=>array(33,-13,834,800),8038=>array(33,-13,834,928),8039=>array(33,-13,834,928),8040=>array(13,0,870,785),8041=>array(63,0,920,785),8042=>array(29,0,1208,800),8043=>array(69,-3,1213,800),8044=>array(29,0,1037,800),8045=>array(67,0,1066,800),8046=>array(98,0,989,928),8047=>array(97,0,1037,928),8048=>array(38,-12,692,800),8049=>array(38,-12,692,800),8050=>array(27,-14,520,800),8051=>array(27,-14,567,800),8052=>array(50,-208,664,800),8053=>array(50,-208,664,800),8054=>array(42,-19,313,800),8055=>array(42,-19,436,800),8056=>array(36,-14,651,800),8057=>array(36,-14,651,800),8058=>array(54,-10,645,800),8059=>array(54,-10,645,800),8060=>array(33,-13,834,800),8061=>array(33,-13,834,800),8064=>array(38,-208,692,785),8065=>array(38,-208,692,785),8066=>array(38,-208,692,800),8067=>array(38,-208,692,800),8068=>array(38,-208,692,800),8069=>array(38,-208,692,800),8070=>array(38,-208,692,928),8071=>array(38,-208,692,928),8072=>array(-65,-208,691,785),8073=>array(-65,-208,691,785),8074=>array(29,-208,958,800),8075=>array(69,-208,960,800),8076=>array(29,-208,852,800),8077=>array(67,-208,880,800),8078=>array(-3,-208,752,928),8079=>array(20,-208,776,928),8080=>array(50,-208,664,785),8081=>array(50,-208,664,785),8082=>array(50,-208,664,800),8083=>array(50,-208,664,800),8084=>array(50,-208,664,800),8085=>array(50,-208,684,800),8086=>array(50,-208,664,928),8087=>array(50,-208,664,928),8088=>array(31,-208,924,785),8089=>array(69,-208,930,785),8090=>array(29,-208,1229,800),8091=>array(69,-208,1229,800),8092=>array(29,-208,1159,800),8093=>array(67,-208,1185,800),8094=>array(98,-208,1033,928),8095=>array(97,-208,1042,928),8096=>array(33,-208,834,785),8097=>array(33,-208,834,785),8098=>array(33,-208,834,800),8099=>array(33,-208,834,800),8100=>array(33,-208,834,800),8101=>array(33,-208,834,800),8102=>array(33,-208,834,928),8103=>array(33,-208,834,928),8104=>array(13,-208,870,785),8105=>array(63,-208,920,785),8106=>array(29,-208,1208,800),8107=>array(69,-208,1213,800),8108=>array(29,-208,1037,800),8109=>array(67,-208,1066,800),8110=>array(98,-208,989,928),8111=>array(97,-208,1037,928),8112=>array(38,-12,692,784),8113=>array(38,-12,692,760),8114=>array(38,-208,692,800),8115=>array(38,-208,692,559),8116=>array(38,-208,692,800),8118=>array(38,-12,692,778),8119=>array(38,-208,692,778),8120=>array(-65,0,691,927),8121=>array(-65,0,691,914),8122=>array(38,0,793,800),8123=>array(-42,0,714,800),8124=>array(-65,-208,691,729),8125=>array(210,595,381,785),8126=>array(132,-208,253,-45),8127=>array(210,595,381,785),8128=>array(133,638,500,778),8129=>array(152,654,540,928),8130=>array(50,-208,664,800),8131=>array(50,-208,664,560),8132=>array(50,-208,664,800),8134=>array(50,-208,664,778),8135=>array(50,-208,664,778),8136=>array(84,0,916,800),8137=>array(22,0,831,800),8138=>array(84,0,1059,800),8139=>array(28,0,986,800),8140=>array(21,-208,816,729),8141=>array(61,595,518,800),8142=>array(90,595,563,800),8143=>array(174,595,540,928),8144=>array(42,-19,413,784),8145=>array(42,-19,405,760),8146=>array(42,-19,402,978),8147=>array(50,-19,516,978),8150=>array(42,-19,424,778),8151=>array(42,-19,454,928),8152=>array(21,0,424,927),8153=>array(21,0,417,914),8154=>array(84,0,600,800),8155=>array(25,0,521,800),8157=>array(105,595,523,800),8158=>array(111,595,574,800),8159=>array(174,595,540,928),8160=>array(54,-10,645,784),8161=>array(54,-10,645,760),8162=>array(54,-10,645,978),8163=>array(54,-10,660,978),8164=>array(9,-208,699,785),8165=>array(9,-208,699,785),8166=>array(54,-10,645,778),8167=>array(54,-10,645,928),8168=>array(63,0,809,927),8169=>array(63,0,809,914),8170=>array(84,0,1105,800),8171=>array(20,0,1067,800),8172=>array(69,0,825,785),8173=>array(152,654,484,978),8174=>array(152,654,589,978),8175=>array(131,616,371,800),8178=>array(33,-208,834,800),8179=>array(33,-208,834,547),8180=>array(33,-208,834,800),8182=>array(33,-13,834,778),8183=>array(33,-208,834,778),8184=>array(84,-14,1029,800),8185=>array(28,-14,851,800),8186=>array(84,0,1046,800),8187=>array(-1,0,855,800),8188=>array(-45,-208,812,742),8189=>array(227,616,539,800),8190=>array(249,595,392,785),8192=>array(25,217,360,359),8193=>array(25,217,360,359),8194=>array(25,217,360,359),8195=>array(25,217,360,359),8196=>array(25,217,360,359),8197=>array(25,217,360,359),8198=>array(25,217,360,359),8199=>array(25,217,360,359),8200=>array(25,217,360,359),8201=>array(25,217,360,359),8202=>array(25,217,360,359),8203=>array(25,217,360,359),8204=>array(25,217,360,359),8205=>array(25,217,360,359),8206=>array(25,217,360,359),8207=>array(25,217,360,359),8208=>array(25,217,360,359),8209=>array(25,217,360,359),8210=>array(24,211,637,337),8211=>array(24,211,441,337),8212=>array(24,211,941,337),8213=>array(-30,211,995,337),8214=>array(127,-236,399,764),8215=>array(-10,-236,510,-9),8216=>array(113,418,389,729),8217=>array(73,418,349,729),8218=>array(-34,-122,242,189),8219=>array(107,418,302,729),8220=>array(113,418,652,729),8221=>array(73,418,612,729),8222=>array(-34,-122,505,189),8223=>array(95,418,535,729),8224=>array(38,-96,504,729),8225=>array(-28,-96,504,729),8226=>array(144,196,495,547),8227=>array(144,157,534,586),8228=>array(46,0,259,189),8229=>array(46,0,569,189),8230=>array(46,0,879,189),8231=>array(124,304,282,424),8232=>array(55,-14,1401,742),8233=>array(55,-14,1401,742),8234=>array(55,-14,1401,742),8235=>array(55,-14,1401,742),8236=>array(55,-14,1401,742),8237=>array(55,-14,1401,742),8238=>array(55,-14,1401,742),8239=>array(55,-14,1401,742),8240=>array(55,-14,1401,742),8241=>array(55,-14,1855,742),8242=>array(2,547,257,729),8243=>array(2,547,440,729),8244=>array(2,547,624,729),8245=>array(161,547,346,729),8246=>array(161,547,532,729),8247=>array(161,547,712,729),8248=>array(101,-238,632,29),8249=>array(61,67,355,519),8250=>array(38,66,331,519),8251=>array(72,0,900,829),8252=>array(-2,0,629,729),8253=>array(98,0,550,742),8254=>array(-10,663,510,755),8255=>array(-31,-237,859,-79),8256=>array(-31,769,859,927),8257=>array(-52,-235,296,231),8258=>array(20,-37,1003,832),8259=>array(102,188,428,325),8260=>array(-278,-14,445,742),8261=>array(-10,-132,466,760),8262=>array(-28,-132,448,760),8263=>array(69,0,1035,742),8264=>array(104,0,831,742),8265=>array(-2,0,799,742),8266=>array(87,-125,530,546),8267=>array(57,-96,666,729),8268=>array(75,189,425,541),8269=>array(75,189,425,541),8270=>array(20,-37,503,427),8271=>array(56,-142,327,547),8272=>array(-31,-237,859,927),8273=>array(68,-3,455,830),8274=>array(3,-93,548,729),8275=>array(49,212,951,415),8276=>array(-31,-351,859,-192),8277=>array(142,98,694,631),8278=>array(95,93,628,645),8279=>array(2,547,807,729),8280=>array(61,21,776,708),8281=>array(80,71,768,657),8282=>array(31,0,350,729),8283=>array(30,-170,839,898),8284=>array(43,0,794,729),8285=>array(31,0,339,683),8286=>array(31,0,339,683),8287=>array(29,319,398,742),8288=>array(29,319,398,742),8289=>array(29,319,398,742),8290=>array(29,319,398,742),8291=>array(29,319,398,742),8292=>array(29,319,398,742),8298=>array(29,319,398,742),8299=>array(29,319,398,742),8300=>array(29,319,398,742),8301=>array(29,319,398,742),8302=>array(29,319,398,742),8303=>array(29,319,398,742),8304=>array(29,319,398,742),8305=>array(12,326,205,751),8308=>array(3,326,388,734),8309=>array(12,319,393,734),8310=>array(37,319,403,742),8311=>array(51,326,418,734),8312=>array(20,319,400,742),8313=>array(23,319,389,742),8314=>array(67,326,461,677),8315=>array(67,469,461,534),8316=>array(67,407,461,596),8317=>array(48,252,282,751),8318=>array(-1,252,232,751),8319=>array(23,326,412,640),8320=>array(29,-7,398,416),8321=>array(67,0,395,408),8322=>array(45,0,431,416),8323=>array(40,-7,427,416),8324=>array(3,0,388,408),8325=>array(12,-7,393,408),8326=>array(37,-7,403,416),8327=>array(51,0,418,408),8328=>array(20,-7,400,416),8329=>array(23,-7,389,416),8330=>array(67,0,461,351),8331=>array(67,143,461,208),8332=>array(67,81,461,270),8333=>array(48,-74,282,425),8334=>array(-1,-74,232,425),8336=>array(37,-8,411,313),8337=>array(49,-8,429,313),8338=>array(49,-8,436,313),8339=>array(-20,0,427,306),8340=>array(53,-8,423,313),8341=>array(12,0,401,425),8342=>array(20,0,451,425),8343=>array(12,0,207,425),8344=>array(21,0,621,313),8345=>array(23,0,412,313),8346=>array(-6,-117,427,313),8347=>array(11,-8,355,313),8348=>array(72,0,365,393),8352=>array(53,0,919,729),8353=>array(36,-44,693,778),8354=>array(36,-14,697,742),8355=>array(3,0,690,729),8356=>array(7,0,691,742),8357=>array(30,-93,975,640),8358=>array(14,0,823,729),8359=>array(21,-14,1453,729),8360=>array(22,-14,1154,729),8361=>array(23,0,1143,729),8362=>array(-32,-14,870,729),8363=>array(36,-185,817,760),8364=>array(-41,-14,687,742),8365=>array(12,0,735,729),8366=>array(55,0,754,729),8367=>array(37,-223,1220,742),8368=>array(1,-14,660,742),8369=>array(21,0,697,729),8370=>array(38,-81,682,809),8371=>array(-66,0,685,729),8372=>array(16,-14,844,742),8373=>array(76,-147,688,760),8376=>array(18,0,754,729),8377=>array(61,0,718,729),8378=>array(-10,0,745,729),8400=>array(-510,628,-26,760),8401=>array(-483,628,-11,760),8406=>array(-470,560,-20,760),8407=>array(-477,560,-26,760),8411=>array(-335,654,190,774),8412=>array(-432,654,287,774),8417=>array(-470,560,-26,760),8448=>array(15,-23,1106,752),8449=>array(15,-23,1106,752),8450=>array(50,-14,670,742),8451=>array(87,-14,1201,749),8452=>array(64,0,832,729),8453=>array(25,-24,1097,752),8454=>array(25,-24,1169,752),8455=>array(37,-14,652,742),8456=>array(1,-146,693,611),8457=>array(87,0,999,749),8459=>array(36,-14,1063,746),8460=>array(6,-125,809,747),8461=>array(100,0,788,729),8462=>array(31,0,654,760),8463=>array(10,0,625,760),8464=>array(36,-14,533,742),8465=>array(52,-14,659,743),8466=>array(37,-14,787,742),8467=>array(-14,-14,401,742),8468=>array(12,-14,935,760),8469=>array(92,0,745,729),8470=>array(-37,0,1156,729),8471=>array(138,0,862,725),8472=>array(54,-221,658,495),8473=>array(92,0,709,729),8474=>array(50,-146,800,742),8475=>array(31,-14,904,768),8476=>array(41,-14,803,743),8477=>array(98,0,793,729),8478=>array(53,0,844,729),8479=>array(53,-112,666,887),8480=>array(126,443,770,730),8481=>array(40,0,1223,547),8482=>array(144,447,790,729),8483=>array(22,-113,877,885),8484=>array(45,0,709,729),8485=>array(-11,-230,648,777),8486=>array(-45,0,812,742),8487=>array(42,-14,813,723),8488=>array(-5,-159,670,729),8489=>array(36,0,306,566),8490=>array(21,0,837,729),8491=>array(-65,0,691,928),8492=>array(41,-1,853,772),8493=>array(63,-19,767,742),8494=>array(61,-12,793,647),8495=>array(41,-14,591,533),8496=>array(72,-14,668,742),8497=>array(37,-14,860,773),8498=>array(21,0,670,729),8499=>array(38,-18,1156,751),8500=>array(29,-12,436,420),8501=>array(50,-14,761,742),8502=>array(19,-14,687,742),8503=>array(31,-35,439,742),8504=>array(63,-41,633,742),8505=>array(34,0,355,760),8506=>array(44,-27,994,723),8507=>array(0,0,1384,547),8508=>array(34,-14,765,547),8509=>array(-40,-208,700,561),8510=>array(92,0,627,729),8511=>array(92,0,771,729),8512=>array(12,-192,820,719),8513=>array(5,-14,747,742),8514=>array(9,0,554,729),8515=>array(11,0,671,729),8516=>array(2,0,749,729),8517=>array(21,0,786,729),8518=>array(34,-14,752,760),8519=>array(33,-14,635,560),8520=>array(15,0,353,760),8521=>array(-143,-216,354,760),8523=>array(60,-14,838,742),8526=>array(1,0,523,547),8528=>array(56,-14,1023,742),8529=>array(56,-14,994,742),8530=>array(56,-14,1441,742),8531=>array(56,-14,1032,742),8532=>array(45,-14,1032,742),8533=>array(56,-14,998,742),8534=>array(45,-14,998,742),8535=>array(40,-14,998,742),8536=>array(3,-14,998,742),8537=>array(56,-14,1008,742),8538=>array(12,-14,1008,742),8539=>array(56,-14,1005,742),8540=>array(40,-14,1005,742),8541=>array(12,-14,1005,742),8542=>array(51,-14,1005,742),8543=>array(56,-14,893,742),8544=>array(21,0,351,729),8545=>array(21,0,638,729),8546=>array(21,0,924,729),8547=>array(21,0,1165,729),8548=>array(76,0,840,729),8549=>array(76,0,1078,729),8550=>array(76,0,1365,729),8551=>array(76,0,1651,729),8552=>array(21,0,1162,729),8553=>array(-51,0,812,729),8554=>array(-51,0,1099,729),8555=>array(-51,0,1386,729),8556=>array(21,0,566,729),8557=>array(36,-14,724,742),8558=>array(21,0,786,729),8559=>array(21,0,974,729),8560=>array(31,0,354,760),8561=>array(31,0,619,760),8562=>array(31,0,883,760),8563=>array(31,0,987,760),8564=>array(63,0,678,547),8565=>array(63,0,973,760),8566=>array(63,0,1238,760),8567=>array(63,0,1502,760),8568=>array(31,0,995,760),8569=>array(-41,0,671,547),8570=>array(-41,0,980,760),8571=>array(-41,0,1245,760),8572=>array(31,0,354,760),8573=>array(37,-14,581,560),8574=>array(36,-14,724,760),8575=>array(31,0,984,560),8576=>array(48,0,1240,729),8577=>array(21,0,782,729),8578=>array(48,0,1240,729),8579=>array(-13,-14,675,742),8580=>array(-7,-14,537,560),8581=>array(68,-208,752,742),8585=>array(29,-14,1032,742),8592=>array(49,87,781,540),8593=>array(193,0,646,732),8594=>array(57,87,789,540),8595=>array(193,-3,646,729),8596=>array(49,87,789,540),8597=>array(193,-3,646,732),8598=>array(136,66,720,650),8599=>array(136,66,720,650),8600=>array(136,66,720,650),8601=>array(136,66,720,650),8602=>array(49,87,781,540),8603=>array(57,87,789,540),8604=>array(13,84,833,431),8605=>array(5,84,825,431),8606=>array(49,87,781,540),8607=>array(189,0,641,732),8608=>array(57,87,789,540),8609=>array(194,-3,646,729),8610=>array(49,87,793,540),8611=>array(45,87,789,540),8612=>array(49,87,781,540),8613=>array(193,0,646,732),8614=>array(57,87,789,540),8615=>array(193,0,646,732),8616=>array(193,0,646,732),8617=>array(49,87,781,565),8618=>array(57,87,789,565),8619=>array(49,87,781,565),8620=>array(57,87,789,565),8621=>array(49,87,789,540),8622=>array(49,86,789,541),8623=>array(123,-4,714,733),8624=>array(169,0,646,755),8625=>array(192,0,669,755),8626=>array(169,-26,646,729),8627=>array(192,-26,669,729),8628=>array(233,-3,772,621),8629=>array(49,87,673,626),8630=>array(11,198,816,685),8631=>array(22,198,828,685),8632=>array(118,13,788,729),8633=>array(49,-108,789,735),8634=>array(86,45,767,691),8635=>array(71,45,751,691),8636=>array(49,255,781,540),8637=>array(49,87,781,372),8638=>array(361,0,646,732),8639=>array(193,0,478,732),8640=>array(57,255,789,540),8641=>array(57,87,789,372),8642=>array(361,0,646,732),8643=>array(193,0,478,732),8644=>array(49,-59,789,686),8645=>array(47,-3,792,732),8646=>array(49,-59,789,686),8647=>array(49,-59,781,686),8648=>array(46,0,792,732),8649=>array(57,-59,789,686),8650=>array(46,-3,792,729),8651=>array(49,-5,789,632),8652=>array(49,-5,789,632),8653=>array(49,87,781,540),8654=>array(49,87,789,540),8655=>array(57,87,789,540),8656=>array(49,87,781,540),8657=>array(193,0,645,732),8658=>array(57,87,789,540),8659=>array(193,-3,645,729),8660=>array(49,87,789,540),8661=>array(193,-8,645,732),8662=>array(132,-26,755,596),8663=>array(88,-26,711,597),8664=>array(88,16,711,639),8665=>array(132,16,755,639),8666=>array(49,87,781,540),8667=>array(57,87,789,540),8668=>array(44,87,776,540),8669=>array(57,87,789,540),8670=>array(193,0,646,732),8671=>array(193,-3,646,729),8672=>array(49,87,781,540),8673=>array(193,0,646,732),8674=>array(57,87,789,540),8675=>array(193,-3,646,729),8676=>array(49,87,781,540),8677=>array(57,87,789,540),8678=>array(27,46,781,581),8679=>array(151,0,687,754),8680=>array(35,46,789,581),8681=>array(151,-25,687,729),8682=>array(151,0,687,754),8683=>array(151,0,687,754),8684=>array(151,0,687,754),8685=>array(151,0,687,754),8686=>array(151,0,687,754),8687=>array(151,0,687,754),8688=>array(35,46,789,581),8689=>array(60,0,788,729),8690=>array(60,0,788,729),8691=>array(151,-25,687,754),8692=>array(57,87,789,540),8693=>array(47,-3,792,732),8694=>array(57,-223,789,850),8695=>array(49,87,781,540),8696=>array(57,87,789,540),8697=>array(49,87,789,540),8698=>array(49,87,781,540),8699=>array(57,87,789,540),8700=>array(49,87,789,540),8701=>array(27,96,781,531),8702=>array(57,96,811,531),8703=>array(27,96,811,531),8704=>array(5,0,769,729),8705=>array(48,-14,629,742),8706=>array(29,-14,515,674),8707=>array(92,0,610,729),8708=>array(92,-46,610,775),8709=>array(47,-15,810,715),8710=>array(0,0,697,719),8711=>array(0,0,697,719),8712=>array(73,-2,824,730),8713=>array(73,-46,824,775),8714=>array(106,58,644,568),8715=>array(73,-2,824,730),8716=>array(73,-46,824,775),8717=>array(106,58,644,568),8718=>array(98,0,539,553),8719=>array(73,-192,712,719),8720=>array(73,-193,712,718),8721=>array(20,-192,697,719),8722=>array(106,256,732,371),8723=>array(106,0,732,627),8724=>array(49,0,647,729),8725=>array(-96,-93,434,729),8726=>array(165,-49,530,772),8727=>array(118,0,720,626),8728=>array(150,151,475,477),8729=>array(102,253,278,442),8730=>array(37,-20,669,837),8731=>array(37,-20,669,933),8732=>array(36,-20,669,924),8733=>array(92,89,617,505),8734=>array(92,89,741,505),8735=>array(106,67,732,693),8736=>array(77,0,820,729),8737=>array(77,-44,820,729),8738=>array(116,-0,732,726),8739=>array(207,-207,322,773),8740=>array(48,-207,482,773),8741=>array(112,-207,417,773),8742=>array(48,-207,482,773),8743=>array(151,0,661,579),8744=>array(151,0,661,579),8745=>array(151,0,661,579),8746=>array(151,0,661,579),8747=>array(15,-227,548,754),8748=>array(15,-227,914,754),8749=>array(15,-227,1280,754),8750=>array(14,-227,548,754),8751=>array(38,-227,938,754),8752=>array(23,-227,1290,754),8753=>array(15,-227,616,754),8754=>array(14,-227,600,754),8755=>array(14,-227,588,754),8756=>array(60,78,637,647),8757=>array(60,78,637,647),8758=>array(59,79,235,647),8759=>array(60,78,637,647),8760=>array(106,256,732,631),8761=>array(106,45,800,584),8762=>array(106,-4,732,631),8763=>array(106,-34,732,660),8764=>array(106,212,732,415),8765=>array(106,212,732,415),8766=>array(65,131,772,497),8767=>array(106,42,732,584),8768=>array(85,0,289,626),8769=>array(106,76,732,551),8770=>array(106,110,732,482),8771=>array(106,144,732,517),8772=>array(106,0,732,637),8773=>array(106,37,732,628),8774=>array(106,-31,732,628),8775=>array(106,-86,732,726),8776=>array(106,110,732,517),8777=>array(106,8,732,614),8778=>array(106,37,732,628),8779=>array(106,-13,732,628),8780=>array(106,37,732,628),8781=>array(105,105,732,585),8782=>array(106,26,732,656),8783=>array(106,172,732,656),8784=>array(106,144,732,744),8785=>array(106,-117,732,743),8786=>array(105,-92,732,719),8787=>array(104,-92,731,719),8788=>array(98,102,965,520),8789=>array(96,102,966,520),8790=>array(106,144,732,482),8791=>array(106,144,732,839),8792=>array(106,144,732,704),8793=>array(106,144,732,840),8794=>array(106,144,732,840),8795=>array(106,144,732,959),8796=>array(106,144,732,952),8797=>array(106,144,732,762),8798=>array(106,144,732,786),8799=>array(106,144,732,903),8800=>array(106,-5,732,631),8801=>array(106,38,732,588),8802=>array(106,-69,732,695),8803=>array(106,-74,732,700),8804=>array(106,0,732,582),8805=>array(106,0,732,582),8806=>array(106,-106,732,617),8807=>array(106,-106,732,617),8808=>array(106,-185,732,617),8809=>array(106,-185,732,617),8810=>array(72,-34,974,660),8811=>array(72,-34,974,660),8812=>array(86,-132,414,759),8813=>array(105,-10,732,700),8814=>array(106,-4,732,690),8815=>array(106,-63,732,631),8816=>array(106,-112,732,645),8817=>array(106,-112,732,645),8818=>array(106,-84,732,582),8819=>array(106,-84,732,582),8820=>array(106,-112,732,645),8821=>array(106,-112,732,645),8822=>array(102,-119,732,678),8823=>array(102,-119,732,678),8824=>array(102,-221,732,779),8825=>array(102,-221,732,779),8826=>array(106,-55,732,681),8827=>array(106,-55,732,681),8828=>array(106,-177,732,684),8829=>array(106,-177,732,684),8830=>array(106,-132,732,684),8831=>array(106,-132,732,684),8832=>array(106,-89,732,781),8833=>array(106,-89,732,781),8834=>array(99,67,739,559),8835=>array(99,65,739,559),8836=>array(99,-96,739,726),8837=>array(99,-100,739,722),8838=>array(99,0,739,636),8839=>array(99,0,739,635),8840=>array(99,-124,739,759),8841=>array(99,-124,739,759),8842=>array(99,-97,739,636),8843=>array(99,-97,739,635),8844=>array(151,0,661,579),8845=>array(151,0,661,579),8846=>array(151,0,661,579),8847=>array(106,0,732,584),8848=>array(106,0,732,584),8849=>array(106,-115,732,667),8850=>array(106,-115,732,667),8851=>array(106,0,690,626),8852=>array(106,0,690,626),8853=>array(91,-14,747,643),8854=>array(91,-14,747,643),8855=>array(91,-14,747,643),8856=>array(91,-13,747,642),8857=>array(91,-14,747,643),8858=>array(91,-14,747,643),8859=>array(91,-14,747,643),8860=>array(91,-14,747,643),8861=>array(91,-14,747,643),8862=>array(77,-29,761,657),8863=>array(77,-29,761,657),8864=>array(77,-29,761,657),8865=>array(77,-29,761,657),8866=>array(85,0,829,705),8867=>array(85,0,829,705),8868=>array(85,0,829,705),8869=>array(85,0,829,705),8870=>array(85,0,457,705),8871=>array(85,0,457,705),8872=>array(85,0,829,705),8873=>array(85,0,829,705),8874=>array(85,0,829,705),8875=>array(85,0,829,705),8876=>array(85,-100,829,805),8877=>array(85,-100,829,805),8878=>array(85,-100,829,805),8879=>array(85,-100,829,805),8880=>array(106,-54,724,681),8881=>array(114,-54,732,681),8882=>array(106,-1,732,628),8883=>array(106,-1,732,628),8884=>array(106,-80,732,706),8885=>array(106,-80,732,706),8886=>array(60,151,940,477),8887=>array(60,151,940,477),8888=>array(60,151,778,477),8889=>array(43,-63,794,689),8890=>array(63,0,480,705),8891=>array(103,0,709,759),8892=>array(103,0,709,759),8893=>array(103,0,709,759),8894=>array(106,0,732,626),8895=>array(106,0,732,626),8896=>array(0,-192,843,719),8897=>array(0,-192,843,719),8898=>array(48,-192,794,719),8899=>array(48,-192,794,719),8900=>array(3,-233,491,807),8901=>array(102,253,278,442),8902=>array(83,112,543,549),8903=>array(106,-56,732,683),8904=>array(106,-48,894,674),8905=>array(106,-48,894,675),8906=>array(106,-48,894,675),8907=>array(106,-48,894,675),8908=>array(106,-48,894,675),8909=>array(106,144,732,517),8910=>array(49,0,763,579),8911=>array(49,0,763,579),8912=>array(93,-22,732,649),8913=>array(106,-22,745,649),8914=>array(83,0,755,639),8915=>array(83,-14,755,625),8916=>array(186,0,652,729),8917=>array(106,-100,732,729),8918=>array(106,30,732,597),8919=>array(106,30,732,597),8920=>array(72,-34,1350,660),8921=>array(72,-34,1350,660),8922=>array(106,-211,732,837),8923=>array(106,-211,732,837),8924=>array(106,0,732,582),8925=>array(106,0,732,582),8926=>array(106,-177,732,684),8927=>array(106,-177,732,684),8928=>array(106,-197,732,808),8929=>array(106,-263,732,742),8930=>array(106,-191,732,817),8931=>array(106,-191,732,817),8932=>array(106,-146,732,636),8933=>array(106,-146,732,636),8934=>array(106,-168,732,582),8935=>array(106,-168,732,582),8936=>array(106,-216,732,684),8937=>array(106,-216,732,684),8938=>array(106,-138,732,808),8939=>array(106,-138,732,808),8940=>array(106,-224,732,894),8941=>array(106,-224,732,894),8942=>array(412,-40,588,735),8943=>array(79,253,921,442),8944=>array(79,-40,921,735),8945=>array(79,-40,921,735),8946=>array(72,-2,1085,730),8947=>array(73,-2,824,730),8948=>array(106,58,644,568),8949=>array(73,-2,824,984),8950=>array(73,-2,824,919),8951=>array(106,58,644,741),8952=>array(73,-207,824,730),8953=>array(73,-2,824,730),8954=>array(72,-2,1085,730),8955=>array(73,-2,824,730),8956=>array(106,58,644,568),8957=>array(72,-2,824,919),8958=>array(106,58,644,741),8959=>array(106,0,791,732),8960=>array(31,-22,572,519),8961=>array(56,152,540,453),8962=>array(64,0,651,596),8963=>array(193,470,646,732),8964=>array(193,0,646,263),8965=>array(193,-12,646,423),8966=>array(193,-12,646,552),8967=>array(194,-42,443,802),8968=>array(-1,-132,476,760),8969=>array(118,-132,458,760),8970=>array(-1,-132,339,760),8971=>array(-19,-132,458,760),8972=>array(352,-77,759,331),8973=>array(49,-77,457,331),8974=>array(352,226,759,634),8975=>array(49,226,457,634),8976=>array(106,140,732,444),8977=>array(3,113,536,646),8984=>array(84,0,843,759),8985=>array(106,140,732,444),8988=>array(86,425,469,760),8989=>array(127,425,469,760),8990=>array(62,-126,403,208),8991=>array(41,-126,423,208),8992=>array(235,-250,586,926),8993=>array(22,-240,373,940),8996=>array(76,215,1076,575),8997=>array(76,0,1076,575),8998=>array(76,0,1414,760),8999=>array(76,0,1076,760),9000=>array(59,0,1385,729),9003=>array(0,0,1338,760),9004=>array(73,-91,800,748),9075=>array(78,-19,348,547),9076=>array(84,-208,671,562),9077=>array(43,-13,826,547),9082=>array(48,-13,645,559),9085=>array(1,-228,862,99),9095=>array(76,0,1100,743),9108=>array(17,0,856,727),9115=>array(63,-252,438,928),9116=>array(63,-252,205,940),9117=>array(63,-240,438,940),9118=>array(63,-252,438,928),9119=>array(295,-252,438,940),9120=>array(63,-240,438,940),9121=>array(63,-252,438,928),9122=>array(63,-252,205,940),9123=>array(63,-240,438,940),9124=>array(63,-252,438,928),9125=>array(295,-252,438,940),9126=>array(63,-240,438,940),9127=>array(306,-261,668,928),9128=>array(82,-247,444,934),9129=>array(306,-240,668,934),9130=>array(306,-256,444,934),9131=>array(82,-261,444,928),9132=>array(306,-247,668,934),9133=>array(82,-240,444,934),9134=>array(235,-250,373,940),9166=>array(27,46,781,729),9167=>array(91,0,854,596),9187=>array(73,-91,800,748),9189=>array(3,75,766,444),9192=>array(-5,-129,623,294),9250=>array(-34,-14,652,760),9251=>array(21,-228,672,99),9312=>array(59,-15,788,715),9313=>array(59,-15,788,715),9314=>array(59,-15,788,715),9315=>array(59,-15,788,715),9316=>array(59,-15,788,715),9317=>array(59,-15,788,715),9318=>array(59,-15,788,715),9319=>array(59,-15,788,715),9320=>array(59,-15,788,715),9321=>array(59,-15,788,715),9600=>array(-10,260,779,770),9601=>array(-10,-250,779,-123),9602=>array(-10,-250,779,-5),9603=>array(-10,-250,779,132),9604=>array(-10,-250,779,260),9605=>array(-10,-250,779,387),9606=>array(-10,-250,779,515),9607=>array(-10,-250,779,642),9608=>array(-10,-250,779,770),9609=>array(-10,-250,680,770),9610=>array(-10,-250,582,770),9611=>array(-10,-250,483,770),9612=>array(-10,-250,384,770),9613=>array(-10,-250,286,770),9614=>array(-10,-250,187,770),9615=>array(-10,-250,88,770),9616=>array(384,-250,778,770),9617=>array(-10,-250,680,770),9618=>array(-10,-250,779,770),9619=>array(-10,-250,779,770),9620=>array(-10,642,779,770),9621=>array(680,-250,778,770),9622=>array(-10,-250,385,260),9623=>array(384,-250,779,260),9624=>array(-10,260,385,770),9625=>array(-10,-250,779,770),9626=>array(-10,-250,779,770),9627=>array(-10,-250,779,770),9628=>array(-10,-250,779,770),9629=>array(384,260,779,770),9630=>array(-10,-250,779,770),9631=>array(-10,-250,779,770),9632=>array(91,-124,854,643),9633=>array(91,-124,854,643),9634=>array(91,-124,854,643),9635=>array(91,-124,854,643),9636=>array(91,-124,854,643),9637=>array(91,-124,854,643),9638=>array(91,-124,854,643),9639=>array(91,-124,854,643),9640=>array(91,-124,854,643),9641=>array(91,-124,854,643),9642=>array(91,11,587,509),9643=>array(91,11,587,509),9644=>array(91,75,854,444),9645=>array(91,75,854,444),9646=>array(91,-122,459,642),9647=>array(91,-122,459,642),9648=>array(3,75,766,444),9649=>array(3,75,766,444),9650=>array(3,-124,766,643),9651=>array(3,-124,766,643),9652=>array(3,11,499,509),9653=>array(3,11,499,509),9654=>array(3,-124,766,643),9655=>array(3,-124,766,643),9656=>array(3,11,499,509),9657=>array(3,11,499,509),9658=>array(3,11,766,509),9659=>array(3,11,766,509),9660=>array(3,-124,766,643),9661=>array(3,-124,766,643),9662=>array(3,11,499,509),9663=>array(3,11,499,509),9664=>array(3,-124,766,643),9665=>array(3,-124,766,643),9666=>array(3,11,499,509),9667=>array(3,11,499,509),9668=>array(3,11,766,509),9669=>array(3,11,766,509),9670=>array(3,-124,766,643),9671=>array(3,-124,766,643),9672=>array(3,-124,766,643),9673=>array(55,-125,818,645),9674=>array(3,-233,491,807),9675=>array(55,-125,818,645),9676=>array(56,-125,817,644),9677=>array(55,-125,818,645),9678=>array(55,-125,818,645),9679=>array(55,-123,818,641),9680=>array(55,-123,818,641),9681=>array(55,-123,818,641),9682=>array(55,-123,818,641),9683=>array(55,-123,818,641),9684=>array(55,-123,818,641),9685=>array(55,-123,818,641),9686=>array(55,-125,436,645),9687=>array(91,-125,472,645),9688=>array(91,-10,750,770),9689=>array(91,-250,879,770),9690=>array(91,260,879,770),9691=>array(91,-250,879,260),9692=>array(3,260,385,645),9693=>array(3,260,384,645),9694=>array(3,-125,384,260),9695=>array(3,-125,385,260),9696=>array(3,260,766,645),9697=>array(3,-125,766,260),9698=>array(3,-124,766,643),9699=>array(3,-124,766,643),9700=>array(3,-124,766,643),9701=>array(3,-124,766,643),9702=>array(144,196,495,547),9703=>array(91,-124,854,643),9704=>array(91,-124,854,643),9705=>array(91,-124,854,643),9706=>array(91,-124,854,643),9707=>array(91,-124,854,643),9708=>array(3,-124,766,643),9709=>array(3,-124,766,643),9710=>array(3,-124,766,643),9711=>array(55,-250,1064,770),9712=>array(91,-124,854,643),9713=>array(91,-124,854,643),9714=>array(91,-124,854,643),9715=>array(91,-124,854,643),9716=>array(55,-123,818,641),9717=>array(55,-123,818,641),9718=>array(55,-123,818,641),9719=>array(55,-123,818,641),9720=>array(3,-124,766,643),9721=>array(3,-124,766,643),9722=>array(3,-124,766,643),9723=>array(91,-66,739,585),9724=>array(91,-66,739,585),9725=>array(91,-17,642,537),9726=>array(91,-17,642,537),9727=>array(3,-124,766,643),9728=>array(83,0,813,729),9729=>array(51,-2,949,360),9730=>array(49,0,848,729),9731=>array(83,-0,813,927),9732=>array(64,0,833,880),9733=>array(65,-4,832,723),9734=>array(65,-4,832,723),9735=>array(83,2,490,729),9736=>array(83,0,813,731),9737=>array(83,0,813,730),9738=>array(61,0,828,727),9739=>array(61,0,828,723),9740=>array(61,-1,610,722),9741=>array(61,0,952,723),9742=>array(68,0,1177,729),9743=>array(71,0,1180,729),9744=>array(90,0,807,729),9745=>array(89,0,808,729),9746=>array(89,0,808,729),9747=>array(75,78,457,656),9748=>array(49,0,870,933),9749=>array(74,0,822,731),9750=>array(84,0,813,731),9751=>array(84,0,813,727),9752=>array(78,0,819,729),9753=>array(83,140,813,574),9754=>array(84,113,813,569),9755=>array(84,113,813,569),9756=>array(87,104,810,569),9757=>array(72,0,537,724),9758=>array(86,103,810,569),9759=>array(72,-3,537,720),9760=>array(61,0,835,730),9761=>array(84,0,813,730),9762=>array(83,0,813,730),9763=>array(49,0,848,730),9764=>array(49,-2,620,727),9765=>array(83,0,663,731),9766=>array(83,-1,566,731),9767=>array(83,0,701,911),9768=>array(83,0,462,730),9769=>array(83,-1,813,729),9770=>array(87,0,810,730),9771=>array(83,0,814,731),9772=>array(83,0,627,731),9773=>array(83,0,813,730),9774=>array(83,0,813,730),9775=>array(83,0,813,730),9776=>array(83,0,813,729),9777=>array(83,0,814,729),9778=>array(83,0,813,729),9779=>array(83,0,813,729),9780=>array(83,0,813,729),9781=>array(83,0,813,729),9782=>array(83,0,813,729),9783=>array(83,0,813,729),9784=>array(80,3,817,721),9785=>array(83,-73,959,804),9786=>array(83,-73,959,804),9787=>array(83,-73,959,804),9788=>array(83,0,813,730),9789=>array(358,0,814,730),9790=>array(83,0,539,730),9791=>array(85,-102,528,732),9792=>array(85,-125,647,731),9793=>array(85,-14,647,843),9794=>array(79,-14,831,720),9795=>array(166,0,730,730),9796=>array(219,0,677,730),9797=>array(121,0,774,730),9798=>array(127,0,769,730),9799=>array(240,0,656,730),9800=>array(45,0,851,731),9801=>array(89,0,807,730),9802=>array(94,0,802,731),9803=>array(113,31,784,679),9804=>array(140,0,756,730),9805=>array(53,-180,843,730),9806=>array(83,52,813,653),9807=>array(34,-96,863,730),9808=>array(83,-0,813,730),9809=>array(94,0,802,730),9810=>array(86,153,810,579),9811=>array(157,0,739,730),9812=>array(98,0,798,730),9813=>array(110,0,786,730),9814=>array(167,-1,729,729),9815=>array(214,0,683,730),9816=>array(165,0,732,730),9817=>array(148,-0,748,730),9818=>array(98,0,798,730),9819=>array(110,0,786,730),9820=>array(167,-1,729,729),9821=>array(214,0,683,730),9822=>array(162,0,734,730),9823=>array(148,-0,748,730),9824=>array(158,0,738,729),9825=>array(90,0,806,727),9826=>array(168,0,728,729),9827=>array(111,0,785,729),9828=>array(157,0,739,729),9829=>array(89,0,808,729),9830=>array(168,0,728,729),9831=>array(111,0,785,732),9832=>array(105,-1,791,729),9833=>array(84,-5,339,729),9834=>array(84,-5,554,729),9835=>array(184,-102,712,729),9836=>array(92,-5,804,729),9837=>array(88,-3,392,731),9838=>array(84,0,273,731),9839=>array(84,0,400,731),9840=>array(84,0,664,731),9841=>array(64,0,701,731),9842=>array(84,0,813,709),9843=>array(76,16,820,731),9844=>array(76,16,820,731),9845=>array(76,16,820,731),9846=>array(76,16,820,731),9847=>array(76,16,820,731),9848=>array(76,16,820,731),9849=>array(76,16,820,731),9850=>array(76,16,820,731),9851=>array(84,0,812,704),9852=>array(83,0,814,731),9853=>array(83,0,814,731),9854=>array(83,0,814,731),9855=>array(149,1,747,731),9856=>array(73,0,797,725),9857=>array(73,0,797,725),9858=>array(73,0,797,725),9859=>array(73,0,797,725),9860=>array(73,0,797,725),9861=>array(73,0,797,725),9862=>array(83,0,813,731),9863=>array(83,0,813,731),9864=>array(83,0,813,731),9865=>array(83,0,813,731),9866=>array(83,0,813,98),9867=>array(83,0,813,98),9868=>array(83,0,813,413),9869=>array(83,0,813,413),9870=>array(83,0,813,413),9871=>array(83,0,813,413),9872=>array(168,3,728,731),9873=>array(168,3,728,731),9874=>array(52,0,844,731),9875=>array(97,-10,799,732),9876=>array(131,0,765,729),9877=>array(61,-10,479,732),9878=>array(59,-10,837,732),9879=>array(61,0,835,732),9880=>array(145,0,750,732),9881=>array(95,-17,802,727),9882=>array(128,-9,768,733),9883=>array(127,0,769,728),9884=>array(127,0,769,729),9888=>array(49,0,848,729),9889=>array(83,2,619,730),9890=>array(85,-125,919,731),9891=>array(79,-206,1023,720),9892=>array(85,-186,1109,856),9893=>array(85,-125,837,917),9894=>array(131,-14,727,869),9895=>array(101,-170,741,884),9896=>array(188,-14,650,869),9897=>array(4,133,829,596),9898=>array(188,133,650,597),9899=>array(188,133,650,597),9900=>array(249,194,589,536),9901=>array(175,194,663,536),9902=>array(41,169,797,560),9903=>array(5,194,833,536),9904=>array(103,237,757,540),9905=>array(211,42,626,698),9906=>array(85,-125,647,731),9907=>array(168,-125,646,731),9908=>array(86,-125,646,731),9909=>array(86,-125,646,731),9910=>array(59,-118,791,643),9911=>array(194,-104,595,710),9912=>array(158,-125,543,731),9920=>array(42,4,796,553),9921=>array(42,4,796,724),9922=>array(42,4,796,553),9923=>array(42,4,796,724),9954=>array(85,-14,647,843),9985=>array(11,190,803,635),9986=>array(42,141,784,588),9987=>array(11,94,803,539),9988=>array(36,119,824,613),9990=>array(42,-14,796,742),9991=>array(42,-14,796,742),9992=>array(59,21,782,708),9993=>array(64,107,773,622),9996=>array(212,0,561,742),9997=>array(21,83,802,678),9998=>array(89,75,724,710),9999=>array(26,198,819,530),10000=>array(89,75,724,710),10001=>array(43,185,757,544),10002=>array(67,209,757,520),10003=>array(150,97,667,630),10004=>array(116,87,721,631),10005=>array(126,72,711,657),10006=>array(85,31,752,698),10007=>array(118,-9,701,732),10008=>array(123,0,754,739),10009=>array(55,0,783,729),10010=>array(55,0,783,729),10011=>array(55,0,783,729),10012=>array(55,0,783,729),10013=>array(165,0,673,729),10014=>array(131,0,678,729),10015=>array(155,0,683,729),10016=>array(55,0,783,729),10017=>array(91,-13,747,744),10018=>array(41,-14,797,742),10019=>array(42,-12,796,742),10020=>array(41,-14,797,742),10021=>array(41,-13,797,743),10022=>array(42,-14,796,745),10023=>array(42,-14,796,745),10025=>array(23,-9,814,743),10026=>array(42,-14,796,742),10027=>array(23,-9,814,743),10028=>array(23,-9,814,743),10029=>array(23,-9,814,743),10030=>array(23,-9,814,743),10031=>array(23,-9,814,743),10032=>array(24,12,815,714),10033=>array(64,0,773,729),10034=>array(74,0,764,729),10035=>array(55,0,783,729),10036=>array(31,-14,787,742),10037=>array(41,-14,797,742),10038=>array(91,-14,747,742),10039=>array(41,-14,797,742),10040=>array(41,-14,797,742),10041=>array(41,-14,797,742),10042=>array(55,0,783,729),10043=>array(82,-14,756,742),10044=>array(82,-14,756,742),10045=>array(84,-14,753,742),10046=>array(79,-14,759,742),10047=>array(54,0,784,709),10048=>array(54,0,784,709),10049=>array(41,-14,797,742),10050=>array(42,-14,796,742),10051=>array(79,-14,759,742),10052=>array(89,0,749,729),10053=>array(76,0,762,729),10054=>array(63,2,773,729),10055=>array(79,-13,759,742),10056=>array(47,-13,791,730),10057=>array(47,-13,791,730),10058=>array(41,-13,797,743),10059=>array(41,-13,797,743),10061=>array(50,-10,847,738),10063=>array(60,-49,837,729),10064=>array(60,0,837,777),10065=>array(60,-49,837,729),10066=>array(60,0,837,777),10070=>array(83,-2,813,728),10072=>array(377,-240,460,760),10073=>array(336,-240,502,760),10074=>array(253,-240,585,760),10075=>array(85,395,264,729),10076=>array(59,395,237,729),10077=>array(85,395,479,729),10078=>array(59,395,453,729),10081=>array(155,-93,772,851),10082=>array(202,-17,636,742),10083=>array(163,-17,675,742),10084=>array(54,83,784,645),10085=>array(168,-1,729,729),10086=>array(62,21,724,702),10087=>array(78,169,759,564),10088=>array(196,-139,648,769),10089=>array(196,-139,648,769),10090=>array(264,-132,574,758),10091=>array(264,-132,574,758),10092=>array(215,-240,607,760),10093=>array(232,-240,623,760),10094=>array(142,-240,685,760),10095=>array(153,-240,696,760),10096=>array(167,-240,656,760),10097=>array(183,-240,672,760),10098=>array(346,-241,535,760),10099=>array(303,-241,492,760),10100=>array(175,-163,634,760),10101=>array(204,-163,663,760),10102=>array(59,-15,788,715),10103=>array(59,-15,788,715),10104=>array(59,-15,788,715),10105=>array(59,-15,788,715),10106=>array(59,-15,788,715),10107=>array(59,-15,788,715),10108=>array(59,-15,788,715),10109=>array(59,-15,788,715),10110=>array(59,-15,788,715),10111=>array(59,-15,788,715),10112=>array(4,-52,833,780),10113=>array(4,-52,833,780),10114=>array(4,-52,833,780),10115=>array(4,-52,833,780),10116=>array(4,-52,833,780),10117=>array(4,-52,833,780),10118=>array(4,-52,833,780),10119=>array(4,-52,833,780),10120=>array(4,-52,833,780),10121=>array(4,-52,833,780),10122=>array(4,-52,833,780),10123=>array(4,-52,833,780),10124=>array(4,-52,833,780),10125=>array(4,-52,833,780),10126=>array(4,-52,833,780),10127=>array(4,-52,833,780),10128=>array(4,-52,833,780),10129=>array(4,-52,833,780),10130=>array(4,-52,833,780),10131=>array(4,-52,833,780),10132=>array(57,75,789,552),10136=>array(123,55,682,614),10137=>array(57,100,789,527),10138=>array(123,13,682,572),10139=>array(57,129,789,498),10140=>array(57,57,764,570),10141=>array(57,100,789,527),10142=>array(57,100,789,527),10143=>array(57,100,789,527),10144=>array(57,100,789,527),10145=>array(57,46,811,581),10146=>array(111,94,789,533),10147=>array(111,94,789,533),10148=>array(111,-4,789,631),10149=>array(57,100,789,548),10150=>array(57,79,789,527),10151=>array(240,-7,606,634),10152=>array(57,100,789,527),10153=>array(57,75,765,552),10154=>array(57,75,765,552),10155=>array(21,12,794,586),10156=>array(21,12,794,586),10157=>array(135,0,774,574),10158=>array(135,0,774,574),10159=>array(62,49,799,574),10161=>array(62,49,799,574),10162=>array(154,-20,721,585),10163=>array(63,157,789,470),10164=>array(81,55,682,655),10165=>array(57,173,789,454),10166=>array(82,-29,682,572),10167=>array(82,55,682,655),10168=>array(57,172,789,455),10169=>array(82,-28,682,572),10170=>array(56,84,789,543),10171=>array(73,140,779,487),10172=>array(79,167,774,460),10173=>array(79,118,774,509),10174=>array(57,81,789,546),10181=>array(0,-163,438,769),10182=>array(-39,-163,474,769),10208=>array(3,-233,491,807),10214=>array(7,-132,498,760),10215=>array(7,-132,498,760),10216=>array(104,-132,464,759),10217=>array(-7,-132,353,759),10218=>array(104,-132,728,759),10219=>array(-7,-132,616,759),10224=>array(41,0,797,732),10225=>array(42,-3,798,729),10226=>array(9,45,816,685),10227=>array(22,45,830,685),10228=>array(57,-14,1108,643),10229=>array(49,87,1376,540),10230=>array(57,87,1385,540),10231=>array(49,87,1385,540),10232=>array(49,87,1376,540),10233=>array(57,87,1385,540),10234=>array(49,87,1385,540),10235=>array(49,87,1376,540),10236=>array(57,87,1385,540),10237=>array(49,87,1376,540),10238=>array(57,87,1385,540),10239=>array(57,87,1385,540),10240=>array(146,586,342,781),10241=>array(146,586,342,781),10242=>array(146,325,342,521),10243=>array(146,325,342,781),10244=>array(146,65,342,261),10245=>array(146,65,342,781),10246=>array(146,65,342,521),10247=>array(146,65,342,781),10248=>array(439,586,635,781),10249=>array(146,586,635,781),10250=>array(146,325,635,781),10251=>array(146,325,635,781),10252=>array(146,65,635,781),10253=>array(146,65,635,781),10254=>array(146,65,635,781),10255=>array(146,65,635,781),10256=>array(439,325,635,521),10257=>array(146,325,635,781),10258=>array(146,325,635,521),10259=>array(146,325,635,781),10260=>array(146,65,635,521),10261=>array(146,65,635,781),10262=>array(146,65,635,521),10263=>array(146,65,635,781),10264=>array(439,325,635,781),10265=>array(146,325,635,781),10266=>array(146,325,635,781),10267=>array(146,325,635,781),10268=>array(146,65,635,781),10269=>array(146,65,635,781),10270=>array(146,65,635,781),10271=>array(146,65,635,781),10272=>array(439,65,635,261),10273=>array(146,65,635,781),10274=>array(146,65,635,521),10275=>array(146,65,635,781),10276=>array(146,65,635,261),10277=>array(146,65,635,781),10278=>array(146,65,635,521),10279=>array(146,65,635,781),10280=>array(439,65,635,781),10281=>array(146,65,635,781),10282=>array(146,65,635,781),10283=>array(146,65,635,781),10284=>array(146,65,635,781),10285=>array(146,65,635,781),10286=>array(146,65,635,781),10287=>array(146,65,635,781),10288=>array(439,65,635,521),10289=>array(146,65,635,781),10290=>array(146,65,635,521),10291=>array(146,65,635,781),10292=>array(146,65,635,521),10293=>array(146,65,635,781),10294=>array(146,65,635,521),10295=>array(146,65,635,781),10296=>array(439,65,635,781),10297=>array(146,65,635,781),10298=>array(146,65,635,781),10299=>array(146,65,635,781),10300=>array(146,65,635,781),10301=>array(146,65,635,781),10302=>array(146,65,635,781),10303=>array(146,65,635,781),10304=>array(146,-195,342,0),10305=>array(146,-195,342,781),10306=>array(146,-195,342,521),10307=>array(146,-195,342,781),10308=>array(146,-195,342,261),10309=>array(146,-195,342,781),10310=>array(146,-195,342,521),10311=>array(146,-195,342,781),10312=>array(146,-195,635,781),10313=>array(146,-195,635,781),10314=>array(146,-195,635,781),10315=>array(146,-195,635,781),10316=>array(146,-195,635,781),10317=>array(146,-195,635,781),10318=>array(146,-195,635,781),10319=>array(146,-195,635,781),10320=>array(146,-195,635,521),10321=>array(146,-195,635,781),10322=>array(146,-195,635,521),10323=>array(146,-195,635,781),10324=>array(146,-195,635,521),10325=>array(146,-195,635,781),10326=>array(146,-195,635,521),10327=>array(146,-195,635,781),10328=>array(146,-195,635,781),10329=>array(146,-195,635,781),10330=>array(146,-195,635,781),10331=>array(146,-195,635,781),10332=>array(146,-195,635,781),10333=>array(146,-195,635,781),10334=>array(146,-195,635,781),10335=>array(146,-195,635,781),10336=>array(146,-195,635,261),10337=>array(146,-195,635,781),10338=>array(146,-195,635,521),10339=>array(146,-195,635,781),10340=>array(146,-195,635,261),10341=>array(146,-195,635,781),10342=>array(146,-195,635,521),10343=>array(146,-195,635,781),10344=>array(146,-195,635,781),10345=>array(146,-195,635,781),10346=>array(146,-195,635,781),10347=>array(146,-195,635,781),10348=>array(146,-195,635,781),10349=>array(146,-195,635,781),10350=>array(146,-195,635,781),10351=>array(146,-195,635,781),10352=>array(146,-195,635,521),10353=>array(146,-195,635,781),10354=>array(146,-195,635,521),10355=>array(146,-195,635,781),10356=>array(146,-195,635,521),10357=>array(146,-195,635,781),10358=>array(146,-195,635,521),10359=>array(146,-195,635,781),10360=>array(146,-195,635,781),10361=>array(146,-195,635,781),10362=>array(146,-195,635,781),10363=>array(146,-195,635,781),10364=>array(146,-195,635,781),10365=>array(146,-195,635,781),10366=>array(146,-195,635,781),10367=>array(146,-195,635,781),10368=>array(439,-195,635,0),10369=>array(146,-195,635,781),10370=>array(146,-195,635,521),10371=>array(146,-195,635,781),10372=>array(146,-195,635,261),10373=>array(146,-195,635,781),10374=>array(146,-195,635,521),10375=>array(146,-195,635,781),10376=>array(439,-195,635,781),10377=>array(146,-195,635,781),10378=>array(146,-195,635,781),10379=>array(146,-195,635,781),10380=>array(146,-195,635,781),10381=>array(146,-195,635,781),10382=>array(146,-195,635,781),10383=>array(146,-195,635,781),10384=>array(439,-195,635,521),10385=>array(146,-195,635,781),10386=>array(146,-195,635,521),10387=>array(146,-195,635,781),10388=>array(146,-195,635,521),10389=>array(146,-195,635,781),10390=>array(146,-195,635,521),10391=>array(146,-195,635,781),10392=>array(439,-195,635,781),10393=>array(146,-195,635,781),10394=>array(146,-195,635,781),10395=>array(146,-195,635,781),10396=>array(146,-195,635,781),10397=>array(146,-195,635,781),10398=>array(146,-195,635,781),10399=>array(146,-195,635,781),10400=>array(439,-195,635,261),10401=>array(146,-195,635,781),10402=>array(146,-195,635,521),10403=>array(146,-195,635,781),10404=>array(146,-195,635,261),10405=>array(146,-195,635,781),10406=>array(146,-195,635,521),10407=>array(146,-195,635,781),10408=>array(439,-195,635,781),10409=>array(146,-195,635,781),10410=>array(146,-195,635,781),10411=>array(146,-195,635,781),10412=>array(146,-195,635,781),10413=>array(146,-195,635,781),10414=>array(146,-195,635,781),10415=>array(146,-195,635,781),10416=>array(439,-195,635,521),10417=>array(146,-195,635,781),10418=>array(146,-195,635,521),10419=>array(146,-195,635,781),10420=>array(146,-195,635,521),10421=>array(146,-195,635,781),10422=>array(146,-195,635,521),10423=>array(146,-195,635,781),10424=>array(439,-195,635,781),10425=>array(146,-195,635,781),10426=>array(146,-195,635,781),10427=>array(146,-195,635,781),10428=>array(146,-195,635,781),10429=>array(146,-195,635,781),10430=>array(146,-195,635,781),10431=>array(146,-195,635,781),10432=>array(146,-195,635,0),10433=>array(146,-195,635,781),10434=>array(146,-195,635,521),10435=>array(146,-195,635,781),10436=>array(146,-195,635,261),10437=>array(146,-195,635,781),10438=>array(146,-195,635,521),10439=>array(146,-195,635,781),10440=>array(146,-195,635,781),10441=>array(146,-195,635,781),10442=>array(146,-195,635,781),10443=>array(146,-195,635,781),10444=>array(146,-195,635,781),10445=>array(146,-195,635,781),10446=>array(146,-195,635,781),10447=>array(146,-195,635,781),10448=>array(146,-195,635,521),10449=>array(146,-195,635,781),10450=>array(146,-195,635,521),10451=>array(146,-195,635,781),10452=>array(146,-195,635,521),10453=>array(146,-195,635,781),10454=>array(146,-195,635,521),10455=>array(146,-195,635,781),10456=>array(146,-195,635,781),10457=>array(146,-195,635,781),10458=>array(146,-195,635,781),10459=>array(146,-195,635,781),10460=>array(146,-195,635,781),10461=>array(146,-195,635,781),10462=>array(146,-195,635,781),10463=>array(146,-195,635,781),10464=>array(146,-195,635,261),10465=>array(146,-195,635,781),10466=>array(146,-195,635,521),10467=>array(146,-195,635,781),10468=>array(146,-195,635,261),10469=>array(146,-195,635,781),10470=>array(146,-195,635,521),10471=>array(146,-195,635,781),10472=>array(146,-195,635,781),10473=>array(146,-195,635,781),10474=>array(146,-195,635,781),10475=>array(146,-195,635,781),10476=>array(146,-195,635,781),10477=>array(146,-195,635,781),10478=>array(146,-195,635,781),10479=>array(146,-195,635,781),10480=>array(146,-195,635,521),10481=>array(146,-195,635,781),10482=>array(146,-195,635,521),10483=>array(146,-195,635,781),10484=>array(146,-195,635,521),10485=>array(146,-195,635,781),10486=>array(146,-195,635,521),10487=>array(146,-195,635,781),10488=>array(146,-195,635,781),10489=>array(146,-195,635,781),10490=>array(146,-195,635,781),10491=>array(146,-195,635,781),10492=>array(146,-195,635,781),10493=>array(146,-195,635,781),10494=>array(146,-195,635,781),10495=>array(146,-195,635,781),10502=>array(49,87,781,540),10503=>array(57,87,789,540),10506=>array(132,0,707,732),10507=>array(132,0,707,732),10560=>array(86,45,726,853),10561=>array(86,45,726,853),10627=>array(117,-163,718,760),10628=>array(35,-163,636,760),10702=>array(106,-258,732,800),10703=>array(106,-1,940,628),10704=>array(106,-1,940,628),10705=>array(106,-48,894,674),10706=>array(106,-48,894,674),10707=>array(106,-48,894,674),10708=>array(106,-48,894,675),10709=>array(106,-48,894,675),10731=>array(3,-233,491,807),10746=>array(106,0,732,627),10747=>array(106,0,732,627),10752=>array(28,-211,972,734),10753=>array(28,-211,972,734),10754=>array(28,-211,972,734),10764=>array(15,-227,1646,754),10765=>array(14,-227,548,754),10766=>array(14,-227,548,754),10767=>array(14,-227,548,754),10768=>array(14,-227,548,754),10769=>array(14,-227,576,754),10770=>array(14,-227,548,754),10771=>array(14,-227,548,754),10772=>array(14,-228,651,754),10773=>array(14,-227,548,754),10774=>array(14,-227,548,754),10775=>array(-30,-227,556,754),10776=>array(14,-227,548,754),10777=>array(14,-227,548,754),10778=>array(14,-227,548,754),10779=>array(15,-227,548,898),10780=>array(15,-372,548,754),10799=>array(125,20,713,607),10858=>array(106,212,732,660),10859=>array(106,-34,732,660),10877=>array(106,-150,732,632),10878=>array(106,-150,732,632),10879=>array(106,-150,732,632),10880=>array(106,-150,732,632),10881=>array(106,-150,732,688),10882=>array(106,-150,732,688),10883=>array(106,-150,732,827),10884=>array(106,-150,732,827),10885=>array(106,-217,732,630),10886=>array(106,-217,732,630),10887=>array(106,-124,732,582),10888=>array(106,-124,732,582),10889=>array(106,-281,732,630),10890=>array(106,-281,732,630),10891=>array(106,-303,732,814),10892=>array(106,-303,732,814),10893=>array(106,-183,732,653),10894=>array(106,-183,732,653),10895=>array(106,-245,732,765),10896=>array(106,-245,732,765),10897=>array(106,-278,732,782),10898=>array(106,-278,732,782),10899=>array(106,-263,732,771),10900=>array(106,-263,732,771),10901=>array(106,-50,732,733),10902=>array(106,-50,732,733),10903=>array(106,-50,732,733),10904=>array(106,-50,732,733),10905=>array(106,-45,732,678),10906=>array(106,-45,732,678),10907=>array(106,-81,732,724),10908=>array(106,-81,732,724),10909=>array(106,13,732,680),10910=>array(106,13,732,680),10911=>array(106,-239,732,746),10912=>array(106,-239,732,746),10926=>array(106,22,732,656),10927=>array(106,-83,732,684),10928=>array(106,-83,732,684),10929=>array(106,-246,732,684),10930=>array(106,-246,732,684),10931=>array(106,-205,732,672),10932=>array(106,-205,732,672),10933=>array(106,-304,732,672),10934=>array(106,-304,732,672),10935=>array(106,-252,732,713),10936=>array(106,-252,732,713),10937=>array(106,-316,732,713),10938=>array(106,-316,732,713),11001=>array(106,-195,732,609),11002=>array(106,-195,732,609),11008=>array(123,-23,744,598),11009=>array(94,-23,715,598),11010=>array(123,-23,744,598),11011=>array(94,-23,715,598),11012=>array(27,46,789,581),11013=>array(27,46,781,581),11014=>array(151,0,687,754),11015=>array(151,-25,687,729),11016=>array(123,-23,744,598),11017=>array(94,-23,715,598),11018=>array(123,-23,744,598),11019=>array(94,-23,715,598),11020=>array(27,46,789,581),11021=>array(151,-25,687,754),11022=>array(57,-25,800,372),11023=>array(57,255,800,652),11024=>array(38,-25,781,372),11025=>array(38,255,781,652),11026=>array(91,-124,854,643),11027=>array(91,-124,854,643),11028=>array(91,-124,854,643),11029=>array(91,-124,854,643),11030=>array(3,-124,766,643),11031=>array(3,-124,766,643),11032=>array(3,-124,766,643),11033=>array(3,-124,766,643),11034=>array(91,-124,854,643),11039=>array(18,-26,852,767),11040=>array(18,-26,852,767),11041=>array(73,-91,800,748),11042=>array(73,-91,800,748),11043=>array(17,-35,856,692),11044=>array(55,-250,1064,770),11091=>array(38,-47,832,788),11092=>array(38,-47,832,788),11360=>array(-24,0,566,729),11361=>array(-35,0,390,760),11362=>array(-28,0,566,729),11363=>array(18,0,716,729),11364=>array(54,-200,708,729),11365=>array(-21,-46,692,594),11366=>array(-6,-93,531,822),11367=>array(36,-157,904,729),11368=>array(23,-138,770,760),11369=>array(36,-157,855,729),11370=>array(23,-138,709,760),11371=>array(-11,-157,755,729),11372=>array(5,-138,606,547),11373=>array(48,-14,840,741),11374=>array(41,-200,993,729),11375=>array(76,0,840,729),11376=>array(-23,-14,780,741),11377=>array(67,0,797,560),11378=>array(99,0,1263,742),11379=>array(87,0,1075,560),11380=>array(44,0,687,586),11381=>array(21,0,623,729),11382=>array(31,0,494,547),11383=>array(64,0,724,552),11385=>array(10,-13,529,760),11386=>array(43,-14,644,560),11387=>array(25,0,520,547),11388=>array(-75,-121,219,425),11389=>array(42,326,524,734),11390=>array(37,-240,688,742),11391=>array(-2,-240,763,729),11520=>array(41,-64,638,547),11521=>array(-12,-232,663,546),11522=>array(28,-232,635,547),11523=>array(42,-10,646,807),11524=>array(29,-228,642,546),11525=>array(21,-228,1017,546),11526=>array(74,-8,697,816),11527=>array(31,-9,1003,547),11528=>array(42,0,617,547),11529=>array(29,-227,643,816),11530=>array(20,-9,1014,546),11531=>array(35,-8,687,816),11532=>array(20,0,656,816),11533=>array(30,-8,1025,546),11534=>array(29,-8,667,546),11535=>array(55,-228,875,816),11536=>array(30,-9,1005,816),11537=>array(29,-9,668,816),11538=>array(26,-232,632,546),11539=>array(29,-228,1024,661),11540=>array(40,-228,980,546),11541=>array(26,-228,1009,816),11542=>array(24,0,657,546),11543=>array(29,-228,668,547),11544=>array(29,-232,665,546),11545=>array(27,-228,657,816),11546=>array(26,-232,632,547),11547=>array(41,-9,695,816),11548=>array(24,-228,1018,547),11549=>array(23,-232,641,546),11550=>array(31,-232,677,546),11551=>array(16,-228,653,567),11552=>array(24,-9,1042,546),11553=>array(31,-228,648,816),11554=>array(38,-9,625,626),11555=>array(40,-228,659,816),11556=>array(30,-228,721,546),11557=>array(40,-8,982,816),11800=>array(37,-13,494,729),11807=>array(106,-34,732,415),11810=>array(77,314,466,760),11811=>array(124,314,448,760),11812=>array(-10,-132,314,314),11813=>array(-28,-132,362,314),11822=>array(104,0,580,742),19904=>array(83,-158,813,729),19905=>array(83,-158,813,729),19906=>array(83,-158,813,729),19907=>array(83,-158,813,729),19908=>array(83,-158,813,729),19909=>array(83,-158,813,729),19910=>array(83,-158,813,729),19911=>array(83,-158,813,729),19912=>array(83,-158,813,729),19913=>array(83,-158,814,729),19914=>array(83,-158,813,729),19915=>array(83,-158,813,729),19916=>array(83,-158,813,729),19917=>array(83,-158,813,729),19918=>array(83,-158,813,729),19919=>array(83,-158,813,729),19920=>array(83,-158,814,729),19921=>array(83,-158,813,729),19922=>array(83,-158,814,729),19923=>array(83,-158,813,729),19924=>array(83,-158,813,729),19925=>array(83,-158,813,729),19926=>array(83,-158,813,729),19927=>array(83,-158,813,729),19928=>array(83,-158,813,729),19929=>array(83,-158,813,729),19930=>array(83,-158,813,729),19931=>array(83,-158,814,729),19932=>array(83,-158,813,729),19933=>array(83,-158,813,729),19934=>array(83,-158,814,729),19935=>array(83,-158,813,729),19936=>array(83,-158,813,729),19937=>array(83,-158,813,729),19938=>array(83,-158,813,729),19939=>array(83,-158,813,729),19940=>array(83,-158,813,729),19941=>array(83,-158,814,729),19942=>array(83,-158,813,729),19943=>array(83,-158,813,729),19944=>array(83,-158,814,729),19945=>array(83,-158,813,729),19946=>array(83,-158,814,729),19947=>array(83,-158,813,729),19948=>array(83,-158,814,729),19949=>array(83,-158,813,729),19950=>array(83,-158,814,729),19951=>array(83,-158,813,729),19952=>array(83,-158,814,729),19953=>array(83,-158,813,729),19954=>array(83,-158,813,729),19955=>array(83,-158,813,729),19956=>array(83,-158,813,729),19957=>array(83,-158,814,729),19958=>array(83,-158,813,729),19959=>array(83,-158,813,729),19960=>array(83,-158,813,729),19961=>array(83,-158,814,729),19962=>array(83,-158,813,729),19963=>array(83,-158,814,729),19964=>array(83,-158,814,729),19965=>array(83,-158,813,729),19966=>array(83,-158,813,729),19967=>array(83,-158,813,729),42192=>array(21,0,699,729),42193=>array(21,0,719,729),42194=>array(17,0,712,729),42195=>array(21,0,786,729),42196=>array(48,0,748,729),42197=>array(-65,0,634,729),42198=>array(36,-14,778,742),42199=>array(21,0,837,729),42200=>array(-65,0,754,729),42201=>array(7,-14,581,729),42202=>array(36,-14,724,742),42203=>array(-13,-14,675,742),42204=>array(-26,0,740,729),42205=>array(21,0,670,729),42206=>array(21,0,670,729),42207=>array(21,0,974,729),42208=>array(21,0,816,729),42209=>array(21,0,566,729),42210=>array(15,-14,665,742),42211=>array(21,0,685,729),42212=>array(81,0,749,729),42213=>array(-66,0,698,729),42214=>array(76,0,840,729),42215=>array(21,0,816,729),42216=>array(5,-14,747,742),42217=>array(19,0,592,743),42218=>array(107,0,1143,729),42219=>array(-51,0,812,729),42220=>array(63,0,809,729),42221=>array(67,0,741,729),42222=>array(-65,0,691,729),42223=>array(76,0,840,729),42224=>array(21,0,670,729),42225=>array(13,0,662,729),42226=>array(21,0,351,729),42227=>array(36,-14,814,742),42228=>array(68,-14,791,729),42229=>array(20,0,733,743),42230=>array(9,0,554,729),42231=>array(48,0,809,729),42232=>array(17,0,230,189),42233=>array(-63,-142,227,189),42234=>array(17,0,582,189),42235=>array(17,-142,579,189),42236=>array(-74,-142,284,547),42237=>array(2,0,284,547),42238=>array(88,0,554,405),42239=>array(39,134,549,492),42564=>array(-1,-14,631,742),42565=>array(-7,-14,534,560),42566=>array(74,0,384,729),42567=>array(74,-1,326,547),42572=>array(37,-14,1348,654),42573=>array(31,-13,1129,547),42576=>array(92,0,1213,729),42577=>array(52,0,1000,547),42580=>array(45,-14,1153,742),42581=>array(37,-14,941,560),42582=>array(21,0,1017,729),42583=>array(31,-14,905,560),42594=>array(-26,-157,1144,729),42595=>array(-10,-138,967,547),42596=>array(-25,0,1140,729),42597=>array(2,0,941,547),42598=>array(21,0,1304,729),42599=>array(28,0,1023,547),42600=>array(36,-14,814,742),42601=>array(36,-14,651,560),42602=>array(50,-14,987,742),42603=>array(43,-14,825,560),42604=>array(50,-14,1356,742),42605=>array(43,-14,1063,560),42606=>array(28,-208,933,743),42634=>array(48,-200,863,729),42635=>array(34,-216,672,547),42636=>array(48,0,748,729),42637=>array(34,0,626,547),42644=>array(106,0,793,729),42645=>array(10,0,625,760),42760=>array(146,0,471,693),42761=>array(117,0,471,693),42762=>array(87,0,471,693),42763=>array(58,0,471,693),42764=>array(29,0,471,693),42765=>array(29,0,471,693),42766=>array(29,0,442,693),42767=>array(29,0,413,693),42768=>array(29,0,383,693),42769=>array(29,0,354,693),42770=>array(29,0,471,693),42771=>array(29,0,442,693),42772=>array(29,0,413,693),42773=>array(29,0,383,693),42774=>array(29,0,354,693),42779=>array(180,326,464,736),42780=>array(142,324,426,734),42781=>array(152,326,342,734),42782=>array(152,326,342,734),42783=>array(88,0,278,408),42786=>array(30,0,432,729),42787=>array(38,0,369,547),42788=>array(55,224,530,742),42789=>array(55,42,530,560),42790=>array(41,-200,835,729),42791=>array(31,-216,646,760),42792=>array(69,-216,984,729),42793=>array(48,-215,810,702),42794=>array(37,-14,652,742),42795=>array(-2,-202,517,560),42800=>array(39,0,526,547),42801=>array(10,-14,560,560),42802=>array(-66,0,1273,729),42803=>array(22,-14,981,560),42804=>array(-65,-14,1249,742),42805=>array(17,-14,1029,560),42806=>array(-65,-14,1224,729),42807=>array(17,-14,1021,560),42808=>array(-66,0,1145,729),42809=>array(22,-14,960,560),42810=>array(-66,0,1145,729),42811=>array(22,-14,960,560),42812=>array(-45,-216,1122,729),42813=>array(42,-216,979,560),42814=>array(-13,-14,670,742),42815=>array(-7,-14,537,560),42816=>array(21,0,837,729),42817=>array(31,0,716,760),42822=>array(81,0,779,729),42823=>array(68,0,472,760),42824=>array(65,0,612,729),42825=>array(81,0,520,760),42826=>array(4,-14,915,742),42827=>array(-4,-14,821,560),42830=>array(50,-14,1356,742),42831=>array(43,-14,1063,560),42832=>array(-42,0,723,729),42833=>array(-81,-208,679,560),42834=>array(-1,0,938,729),42835=>array(0,-208,900,560),42838=>array(40,-188,811,742),42839=>array(34,-208,682,559),42852=>array(21,0,698,729),42853=>array(-11,-208,678,760),42854=>array(-50,0,698,729),42855=>array(-82,-208,678,760),42880=>array(71,0,616,729),42881=>array(11,-208,332,547),42882=>array(-8,-208,776,742),42883=>array(-10,-208,654,560),42889=>array(41,0,323,547),42890=>array(63,141,333,405),42891=>array(142,245,387,729),42892=>array(69,458,237,729),42893=>array(100,0,787,729),42894=>array(93,-216,613,760),42896=>array(21,-157,824,729),42897=>array(31,-138,695,560),42912=>array(-17,-14,837,742),42913=>array(-19,-216,735,559),42914=>array(-16,0,837,729),42915=>array(-18,0,716,760),42916=>array(-17,0,854,729),42917=>array(-19,0,731,560),42918=>array(-15,0,785,729),42919=>array(-15,0,545,560),42920=>array(-14,-14,734,742),42921=>array(-17,-14,612,560),42922=>array(-37,0,865,729),43002=>array(31,0,1025,547),43003=>array(92,0,662,729),43004=>array(65,0,712,729),43005=>array(21,0,974,729),43006=>array(1,0,370,928),43007=>array(-40,0,1365,729),61184=>array(141,602,384,693),61185=>array(83,451,406,693),61186=>array(29,301,430,693),61187=>array(-12,150,440,693),61188=>array(-47,0,446,693),61189=>array(100,451,376,693),61190=>array(112,451,355,543),61191=>array(54,301,376,543),61192=>array(0,150,401,543),61193=>array(-41,0,411,543),61194=>array(82,301,372,693),61195=>array(71,301,347,543),61196=>array(83,301,326,393),61197=>array(25,150,347,393),61198=>array(-29,0,372,393),61199=>array(75,150,353,693),61200=>array(53,149,342,542),61201=>array(42,150,318,393),61202=>array(53,150,296,242),61203=>array(-4,0,318,242),61204=>array(73,0,329,693),61205=>array(46,0,323,543),61206=>array(23,0,313,393),61207=>array(12,0,289,242),61208=>array(24,0,268,92),61209=>array(29,0,255,693),62464=>array(84,-14,614,819),62465=>array(90,-15,610,823),62466=>array(86,-14,652,828),62467=>array(124,0,954,828),62468=>array(80,-15,679,828),62469=>array(81,-15,657,828),62470=>array(129,-15,677,828),62471=>array(92,-14,949,828),62472=>array(98,0,644,828),62473=>array(80,-14,684,820),62474=>array(139,-6,1218,828),62475=>array(81,-14,674,828),62476=>array(88,-15,675,820),62477=>array(107,0,938,828),62478=>array(78,-15,654,819),62479=>array(87,-15,722,840),62480=>array(99,0,938,828),62481=>array(99,-14,618,819),62482=>array(97,-14,785,828),62483=>array(80,-14,680,828),62484=>array(136,-14,947,828),62485=>array(79,-14,717,819),62486=>array(113,0,963,828),62487=>array(74,-14,717,820),62488=>array(72,-14,672,828),62489=>array(40,0,626,828),62490=>array(100,-15,715,820),62491=>array(86,-14,717,819),62492=>array(90,-14,729,828),62493=>array(79,-14,719,820),62494=>array(94,-14,619,819),62495=>array(29,-14,623,828),62496=>array(81,-15,658,828),62497=>array(88,-15,677,828),62498=>array(14,-73,658,828),62499=>array(77,-15,719,830),62500=>array(78,-15,726,828),62501=>array(76,-14,732,828),62502=>array(126,-14,1016,828),62504=>array(40,-228,982,816),62505=>array(48,-223,821,843),62506=>array(81,-14,565,761),62507=>array(81,-14,567,773),62508=>array(81,-14,586,866),62509=>array(81,-14,623,812),62510=>array(81,-14,604,877),62511=>array(81,-14,577,803),62512=>array(31,-232,574,761),62513=>array(31,-232,631,793),62514=>array(31,-232,649,891),62515=>array(31,-232,601,803),62516=>array(80,0,589,761),62517=>array(80,0,637,793),62518=>array(80,0,601,803),62519=>array(97,-0,813,761),62520=>array(97,-0,813,773),62521=>array(97,-0,813,884),62522=>array(97,-0,813,793),62523=>array(97,-0,813,803),62524=>array(76,-232,621,761),62525=>array(76,-232,621,773),62526=>array(76,-232,630,894),62527=>array(76,-232,636,793),62528=>array(76,-232,621,803),62529=>array(76,-232,621,844),62917=>array(16,-14,648,760),64256=>array(50,0,916,760),64257=>array(50,0,798,760),64258=>array(50,0,798,760),64259=>array(50,0,1128,760),64260=>array(50,0,1129,760),64261=>array(45,0,836,760),64262=>array(8,-14,1047,742),64275=>array(47,-14,1334,760),64276=>array(47,-14,1335,760),64277=>array(65,-208,1311,760),64278=>array(65,-208,1353,760),64279=>array(65,-208,1682,760),64285=>array(98,38,334,547),64286=>array(194,635,524,780),64287=>array(98,36,655,547),64288=>array(38,0,697,547),64289=>array(120,0,926,547),64290=>array(126,0,838,547),64291=>array(100,0,840,547),64292=>array(43,0,791,547),64293=>array(126,0,837,739),64294=>array(91,0,842,547),64295=>array(126,0,794,547),64296=>array(48,-4,798,547),64297=>array(155,256,804,627),64298=>array(89,0,857,710),64299=>array(89,0,856,723),64300=>array(89,0,856,710),64301=>array(89,0,856,710),64302=>array(104,-171,730,547),64303=>array(104,-217,730,547),64304=>array(104,-171,730,547),64305=>array(43,0,590,547),64306=>array(44,-9,428,547),64307=>array(126,0,651,547),64308=>array(100,0,661,547),64309=>array(73,0,452,547),64310=>array(73,0,548,547),64311=>array(142,-13,676,553),64312=>array(142,-13,676,553),64313=>array(101,164,476,547),64314=>array(126,-240,549,547),64315=>array(43,0,570,547),64316=>array(126,0,633,711),64317=>array(84,0,690,554),64318=>array(84,0,690,554),64319=>array(43,0,430,547),64320=>array(43,0,430,547),64321=>array(144,-13,678,547),64322=>array(158,-240,642,547),64323=>array(158,-240,642,547),64324=>array(91,0,656,547),64325=>array(54,0,670,547),64326=>array(54,0,670,547),64327=>array(51,-240,767,546),64328=>array(126,0,575,547),64329=>array(89,0,856,547),64330=>array(11,-4,650,547),64331=>array(91,0,359,710),64332=>array(43,0,590,710),64333=>array(43,0,570,710),64334=>array(91,0,656,710),64335=>array(47,0,732,729),65024=>array(-276,735,171,880),65025=>array(-276,735,171,880),65026=>array(-276,735,171,880),65027=>array(-276,735,171,880),65028=>array(-276,735,171,880),65029=>array(-276,735,171,880),65030=>array(-276,735,171,880),65031=>array(-276,735,171,880),65032=>array(-276,735,171,880),65033=>array(-276,735,171,880),65034=>array(-276,735,171,880),65035=>array(-276,735,171,880),65036=>array(-276,735,171,880),65037=>array(-276,735,171,880),65038=>array(-276,735,171,880),65039=>array(-276,735,171,880),65056=>array(-276,735,171,880),65057=>array(157,735,564,880),65058=>array(-215,756,169,894),65059=>array(152,756,536,894),65529=>array(100,-139,1164,926),65530=>array(100,-139,1164,926),65531=>array(100,-139,1164,926),65532=>array(100,-139,1164,926),65533=>array(100,-139,1164,926),65535=>array(50,-177,550,705));
|
15 |
-
$cw=array(0=>600,32=>348,33=>456,34=>521,35=>696,36=>696,37=>1002,38=>872,39=>306,40=>457,41=>457,42=>523,43=>838,44=>380,45=>415,46=>380,47=>365,48=>696,49=>696,50=>696,51=>696,52=>696,53=>696,54=>696,55=>696,56=>696,57=>696,58=>400,59=>400,60=>838,61=>838,62=>838,63=>580,64=>1000,65=>774,66=>762,67=>734,68=>830,69=>683,70=>683,71=>821,72=>837,73=>372,74=>372,75=>775,76=>637,77=>995,78=>837,79=>850,80=>733,81=>850,82=>770,83=>720,84=>682,85=>812,86=>774,87=>1103,88=>771,89=>724,90=>725,91=>457,92=>365,93=>457,94=>838,95=>500,96=>500,97=>675,98=>716,99=>593,100=>716,101=>678,102=>435,103=>716,104=>712,105=>343,106=>343,107=>665,108=>343,109=>1042,110=>712,111=>687,112=>716,113=>716,114=>493,115=>595,116=>478,117=>712,118=>652,119=>924,120=>645,121=>652,122=>582,123=>712,124=>365,125=>712,126=>838,160=>348,161=>456,162=>696,163=>696,164=>636,165=>696,166=>365,167=>500,168=>500,169=>1000,170=>564,171=>650,172=>838,173=>415,174=>1000,175=>500,176=>500,177=>838,178=>438,179=>438,180=>500,181=>736,182=>636,183=>380,184=>500,185=>438,186=>564,187=>650,188=>1035,189=>1035,190=>1035,191=>580,192=>774,193=>774,194=>774,195=>774,196=>774,197=>774,198=>1085,199=>734,200=>683,201=>683,202=>683,203=>683,204=>372,205=>372,206=>372,207=>372,208=>845,209=>837,210=>850,211=>850,212=>850,213=>850,214=>850,215=>838,216=>850,217=>812,218=>812,219=>812,220=>812,221=>724,222=>742,223=>719,224=>675,225=>675,226=>675,227=>675,228=>675,229=>675,230=>1048,231=>593,232=>678,233=>678,234=>678,235=>678,236=>343,237=>343,238=>343,239=>343,240=>687,241=>712,242=>687,243=>687,244=>687,245=>687,246=>687,247=>838,248=>687,249=>712,250=>712,251=>712,252=>712,253=>652,254=>716,255=>652,256=>774,257=>675,258=>774,259=>675,260=>774,261=>675,262=>734,263=>593,264=>734,265=>593,266=>734,267=>593,268=>734,269=>593,270=>830,271=>716,272=>845,273=>716,274=>683,275=>678,276=>683,277=>678,278=>683,279=>678,280=>683,281=>678,282=>683,283=>678,284=>821,285=>716,286=>821,287=>716,288=>821,289=>716,290=>821,291=>716,292=>837,293=>712,294=>974,295=>790,296=>372,297=>343,298=>372,299=>343,300=>372,301=>343,302=>372,303=>343,304=>372,305=>343,306=>744,307=>686,308=>372,309=>343,310=>775,311=>665,312=>665,313=>637,314=>343,315=>637,316=>343,317=>637,318=>343,319=>637,320=>343,321=>660,322=>375,323=>837,324=>712,325=>837,326=>712,327=>837,328=>712,329=>983,330=>837,331=>712,332=>850,333=>687,334=>850,335=>687,336=>850,337=>687,338=>1167,339=>1094,340=>770,341=>493,342=>770,343=>493,344=>770,345=>493,346=>720,347=>595,348=>720,349=>595,350=>720,351=>595,352=>720,353=>595,354=>682,355=>478,356=>682,357=>478,358=>682,359=>478,360=>812,361=>712,362=>812,363=>712,364=>812,365=>712,366=>812,367=>712,368=>812,369=>712,370=>812,371=>712,372=>1103,373=>924,374=>724,375=>652,376=>724,377=>725,378=>582,379=>725,380=>582,381=>725,382=>582,383=>435,384=>716,385=>811,386=>762,387=>716,388=>762,389=>716,390=>734,391=>734,392=>593,393=>845,394=>879,395=>762,396=>716,397=>687,398=>683,399=>850,400=>696,401=>683,402=>435,403=>821,404=>793,405=>1045,406=>436,407=>389,408=>775,409=>665,410=>360,411=>592,412=>1042,413=>837,414=>712,415=>850,416=>850,417=>687,418=>1114,419=>962,420=>782,421=>716,422=>770,423=>720,424=>595,425=>683,426=>552,427=>478,428=>707,429=>478,430=>682,431=>812,432=>712,433=>769,434=>813,435=>797,436=>778,437=>725,438=>582,439=>772,440=>772,441=>641,442=>582,443=>696,444=>772,445=>641,446=>573,447=>716,448=>372,449=>659,450=>544,451=>372,452=>1548,453=>1450,454=>1307,455=>977,456=>979,457=>670,458=>1193,459=>1213,460=>1063,461=>774,462=>675,463=>372,464=>343,465=>850,466=>687,467=>812,468=>712,469=>812,470=>712,471=>812,472=>712,473=>812,474=>712,475=>812,476=>712,477=>678,478=>774,479=>675,480=>774,481=>675,482=>1085,483=>1048,484=>821,485=>716,486=>821,487=>716,488=>775,489=>665,490=>850,491=>687,492=>850,493=>687,494=>772,495=>582,496=>343,497=>1548,498=>1450,499=>1307,500=>821,501=>716,502=>1289,503=>787,504=>837,505=>712,506=>774,507=>675,508=>1085,509=>1048,510=>850,511=>687,512=>774,513=>675,514=>774,515=>675,516=>683,517=>678,518=>683,519=>678,520=>372,521=>343,522=>372,523=>343,524=>850,525=>687,526=>850,527=>687,528=>770,529=>493,530=>770,531=>493,532=>812,533=>712,534=>812,535=>712,536=>720,537=>595,538=>682,539=>478,540=>690,541=>607,542=>837,543=>712,544=>837,545=>865,546=>809,547=>659,548=>725,549=>582,550=>774,551=>675,552=>683,553=>678,554=>850,555=>687,556=>850,557=>687,558=>850,559=>687,560=>850,561=>687,562=>724,563=>652,564=>492,565=>867,566=>512,567=>343,568=>1088,569=>1088,570=>774,571=>734,572=>593,573=>637,574=>682,575=>595,576=>582,577=>782,578=>614,579=>762,580=>812,581=>774,582=>683,583=>678,584=>372,585=>343,586=>860,587=>791,588=>770,589=>493,590=>724,591=>652,592=>675,593=>716,594=>716,595=>716,596=>593,597=>593,598=>791,599=>792,600=>678,601=>678,602=>876,603=>557,604=>545,605=>774,606=>731,607=>343,608=>792,609=>716,610=>627,611=>735,612=>635,613=>712,614=>712,615=>712,616=>545,617=>440,618=>545,619=>559,620=>693,621=>343,622=>841,623=>1042,624=>1042,625=>1042,626=>712,627=>793,628=>642,629=>687,630=>909,631=>682,632=>796,633=>538,634=>538,635=>650,636=>493,637=>493,638=>596,639=>596,640=>642,641=>642,642=>595,643=>415,644=>435,645=>605,646=>552,647=>478,648=>478,649=>920,650=>769,651=>670,652=>652,653=>924,654=>652,655=>724,656=>694,657=>684,658=>641,659=>641,660=>573,661=>573,662=>573,663=>573,664=>850,665=>633,666=>731,667=>685,668=>691,669=>343,670=>732,671=>539,672=>792,673=>573,674=>573,675=>1156,676=>1214,677=>1155,678=>975,679=>769,680=>929,681=>1026,682=>862,683=>780,684=>591,685=>415,686=>677,687=>789,688=>456,689=>456,690=>219,691=>315,692=>315,693=>315,694=>411,695=>591,696=>417,697=>302,698=>521,699=>380,700=>380,701=>380,702=>366,703=>366,704=>326,705=>326,706=>500,707=>500,708=>500,709=>500,710=>500,711=>500,712=>306,713=>500,714=>500,715=>500,716=>306,717=>500,718=>500,719=>500,720=>337,721=>337,722=>366,723=>366,724=>500,725=>500,726=>416,727=>328,728=>500,729=>500,730=>500,731=>500,732=>500,733=>500,734=>351,735=>500,736=>412,737=>219,738=>381,739=>413,740=>326,741=>500,742=>500,743=>500,744=>500,745=>500,748=>500,749=>500,750=>644,755=>500,759=>500,768=>0,769=>0,770=>0,771=>0,772=>0,773=>0,774=>0,775=>0,776=>0,777=>0,778=>0,779=>0,780=>0,781=>0,782=>0,783=>0,784=>0,785=>0,786=>0,787=>0,788=>0,789=>0,790=>0,791=>0,792=>0,793=>0,794=>0,795=>0,796=>0,797=>0,798=>0,799=>0,800=>0,801=>0,802=>0,803=>0,804=>0,805=>0,806=>0,807=>0,808=>0,809=>0,810=>0,811=>0,812=>0,813=>0,814=>0,815=>0,816=>0,817=>0,818=>0,819=>0,820=>0,821=>0,822=>0,823=>0,824=>0,825=>0,826=>0,827=>0,828=>0,829=>0,830=>0,831=>0,832=>0,833=>0,834=>0,835=>0,836=>0,837=>0,838=>0,839=>0,840=>0,841=>0,842=>0,843=>0,844=>0,845=>0,846=>0,847=>0,849=>0,850=>0,851=>0,855=>0,856=>0,858=>0,860=>0,861=>0,862=>0,863=>0,864=>0,865=>0,866=>0,880=>698,881=>565,882=>1022,883=>836,884=>302,885=>302,886=>837,887=>701,890=>500,891=>593,892=>550,893=>549,894=>400,900=>441,901=>500,902=>797,903=>380,904=>846,905=>1009,906=>563,908=>891,910=>980,911=>894,912=>390,913=>774,914=>762,915=>637,916=>774,917=>683,918=>725,919=>837,920=>850,921=>372,922=>775,923=>774,924=>995,925=>837,926=>632,927=>850,928=>837,929=>733,931=>683,932=>682,933=>724,934=>850,935=>771,936=>850,937=>850,938=>372,939=>724,940=>687,941=>557,942=>712,943=>390,944=>675,945=>687,946=>716,947=>681,948=>687,949=>557,950=>591,951=>712,952=>687,953=>390,954=>710,955=>633,956=>736,957=>681,958=>591,959=>687,960=>791,961=>716,962=>593,963=>779,964=>638,965=>675,966=>782,967=>645,968=>794,969=>869,970=>390,971=>675,972=>687,973=>675,974=>869,975=>775,976=>651,977=>661,978=>746,979=>981,980=>746,981=>796,982=>869,983=>744,984=>850,985=>687,986=>734,987=>593,988=>683,989=>494,990=>702,991=>660,992=>919,993=>627,994=>1093,995=>837,996=>832,997=>716,998=>928,999=>744,1000=>733,1001=>650,1002=>789,1003=>671,1004=>752,1005=>716,1006=>682,1007=>590,1008=>744,1009=>716,1010=>593,1011=>343,1012=>850,1013=>645,1014=>645,1015=>742,1016=>716,1017=>734,1018=>995,1019=>732,1020=>716,1021=>734,1022=>734,1023=>698,1024=>683,1025=>683,1026=>878,1027=>637,1028=>734,1029=>720,1030=>372,1031=>372,1032=>372,1033=>1154,1034=>1130,1035=>878,1036=>817,1037=>837,1038=>771,1039=>837,1040=>774,1041=>762,1042=>762,1043=>637,1044=>891,1045=>683,1046=>1224,1047=>710,1048=>837,1049=>837,1050=>817,1051=>831,1052=>995,1053=>837,1054=>850,1055=>837,1056=>733,1057=>734,1058=>682,1059=>771,1060=>992,1061=>771,1062=>928,1063=>808,1064=>1235,1065=>1326,1066=>939,1067=>1036,1068=>762,1069=>734,1070=>1174,1071=>770,1072=>675,1073=>698,1074=>633,1075=>522,1076=>808,1077=>678,1078=>995,1079=>581,1080=>701,1081=>701,1082=>679,1083=>732,1084=>817,1085=>691,1086=>687,1087=>691,1088=>716,1089=>593,1090=>580,1091=>652,1092=>992,1093=>645,1094=>741,1095=>687,1096=>1062,1097=>1105,1098=>751,1099=>904,1100=>632,1101=>593,1102=>972,1103=>642,1104=>678,1105=>678,1106=>714,1107=>522,1108=>593,1109=>595,1110=>343,1111=>343,1112=>343,1113=>991,1114=>956,1115=>734,1116=>679,1117=>701,1118=>652,1119=>691,1120=>1093,1121=>869,1122=>840,1123=>736,1124=>1012,1125=>839,1126=>992,1127=>832,1128=>1358,1129=>1121,1130=>850,1131=>687,1132=>1236,1133=>1007,1134=>696,1135=>557,1136=>1075,1137=>1061,1138=>850,1139=>687,1140=>850,1141=>695,1142=>850,1143=>695,1144=>1148,1145=>1043,1146=>1074,1147=>863,1148=>1405,1149=>1173,1150=>1093,1151=>869,1152=>734,1153=>593,1154=>652,1155=>0,1156=>0,1157=>0,1158=>0,1159=>0,1160=>418,1161=>418,1162=>938,1163=>806,1164=>762,1165=>611,1166=>736,1167=>718,1168=>637,1169=>522,1170=>666,1171=>543,1172=>789,1173=>522,1174=>1224,1175=>995,1176=>710,1177=>581,1178=>775,1179=>679,1180=>817,1181=>679,1182=>817,1183=>679,1184=>1015,1185=>826,1186=>837,1187=>691,1188=>1103,1189=>871,1190=>1254,1191=>979,1192=>946,1193=>859,1194=>734,1195=>593,1196=>682,1197=>580,1198=>724,1199=>652,1200=>724,1201=>652,1202=>771,1203=>645,1204=>1104,1205=>1001,1206=>808,1207=>687,1208=>808,1209=>687,1210=>808,1211=>712,1212=>1026,1213=>810,1214=>1026,1215=>810,1216=>372,1217=>1224,1218=>995,1219=>778,1220=>629,1221=>933,1222=>804,1223=>837,1224=>691,1225=>938,1226=>806,1227=>808,1228=>687,1229=>1096,1230=>932,1231=>343,1232=>774,1233=>675,1234=>774,1235=>675,1236=>1085,1237=>1048,1238=>683,1239=>678,1240=>850,1241=>678,1242=>850,1243=>678,1244=>1224,1245=>995,1246=>710,1247=>581,1248=>772,1249=>641,1250=>837,1251=>701,1252=>837,1253=>701,1254=>850,1255=>687,1256=>850,1257=>687,1258=>850,1259=>687,1260=>734,1261=>593,1262=>771,1263=>652,1264=>771,1265=>652,1266=>771,1267=>652,1268=>808,1269=>687,1270=>637,1271=>522,1272=>1036,1273=>904,1274=>666,1275=>543,1276=>771,1277=>645,1278=>771,1279=>645,1280=>762,1281=>608,1282=>1159,1283=>893,1284=>1119,1285=>920,1286=>828,1287=>693,1288=>1242,1289=>1017,1290=>1289,1291=>1013,1292=>839,1293=>638,1294=>938,1295=>803,1296=>696,1297=>557,1298=>831,1299=>732,1300=>1286,1301=>1070,1302=>1065,1303=>982,1304=>1082,1305=>960,1306=>850,1307=>716,1308=>1103,1309=>924,1310=>817,1311=>679,1312=>1248,1313=>1022,1314=>1254,1315=>979,1316=>957,1317=>807,1329=>904,1330=>810,1331=>809,1332=>813,1333=>810,1334=>815,1335=>724,1336=>800,1337=>1004,1338=>809,1339=>740,1340=>620,1341=>1068,1342=>875,1343=>792,1344=>723,1345=>811,1346=>794,1347=>782,1348=>867,1349=>766,1350=>794,1351=>787,1352=>812,1353=>752,1354=>963,1355=>790,1356=>867,1357=>812,1358=>794,1359=>771,1360=>740,1361=>775,1362=>640,1363=>926,1364=>775,1365=>848,1366=>951,1369=>366,1370=>380,1371=>342,1372=>415,1373=>348,1374=>513,1375=>521,1377=>1043,1378=>713,1379=>782,1380=>786,1381=>713,1382=>715,1383=>628,1384=>713,1385=>840,1386=>782,1387=>714,1388=>344,1389=>1094,1390=>708,1391=>714,1392=>714,1393=>670,1394=>714,1395=>713,1396=>714,1397=>343,1398=>714,1399=>541,1400=>714,1401=>407,1402=>1043,1403=>636,1404=>740,1405=>714,1406=>714,1407=>1038,1408=>714,1409=>714,1410=>532,1411=>1038,1412=>720,1413=>689,1414=>904,1415=>902,1417=>400,1418=>415,1456=>0,1457=>0,1458=>0,1459=>0,1460=>0,1461=>0,1462=>0,1463=>0,1464=>0,1465=>0,1466=>0,1467=>0,1468=>0,1469=>0,1470=>415,1471=>0,1472=>372,1473=>0,1474=>0,1475=>372,1478=>497,1479=>0,1488=>728,1489=>610,1490=>447,1491=>588,1492=>687,1493=>343,1494=>400,1495=>687,1496=>679,1497=>294,1498=>578,1499=>566,1500=>605,1501=>696,1502=>724,1503=>343,1504=>453,1505=>680,1506=>666,1507=>675,1508=>658,1509=>661,1510=>653,1511=>736,1512=>602,1513=>749,1514=>683,1520=>664,1521=>664,1522=>663,1523=>444,1524=>710,3647=>696,3713=>815,3714=>748,3716=>749,3719=>569,3720=>742,3722=>744,3725=>761,3732=>706,3733=>704,3734=>747,3735=>819,3737=>730,3738=>727,3739=>727,3740=>922,3741=>827,3742=>866,3743=>866,3745=>836,3746=>761,3747=>770,3749=>769,3751=>713,3754=>827,3755=>1031,3757=>724,3758=>784,3759=>934,3760=>688,3761=>0,3762=>610,3763=>610,3764=>0,3765=>0,3766=>0,3767=>0,3768=>0,3769=>0,3771=>0,3772=>0,3773=>670,3776=>516,3777=>860,3778=>516,3779=>650,3780=>632,3782=>759,3784=>0,3785=>0,3786=>0,3787=>0,3788=>0,3789=>0,3792=>771,3793=>771,3794=>693,3795=>836,3796=>729,3797=>729,3798=>849,3799=>790,3800=>759,3801=>910,3804=>1363,3805=>1363,4256=>874,4257=>733,4258=>679,4259=>834,4260=>615,4261=>768,4262=>753,4263=>914,4264=>453,4265=>620,4266=>843,4267=>882,4268=>625,4269=>854,4270=>781,4271=>629,4272=>912,4273=>621,4274=>620,4275=>854,4276=>866,4277=>724,4278=>630,4279=>621,4280=>625,4281=>620,4282=>818,4283=>874,4284=>615,4285=>623,4286=>625,4287=>725,4288=>844,4289=>596,4290=>688,4291=>596,4292=>594,4293=>738,4304=>554,4305=>563,4306=>622,4307=>834,4308=>550,4309=>559,4310=>546,4311=>828,4312=>563,4313=>556,4314=>1074,4315=>563,4316=>563,4317=>814,4318=>554,4319=>559,4320=>823,4321=>563,4322=>700,4323=>582,4324=>847,4325=>555,4326=>814,4327=>559,4328=>543,4329=>563,4330=>622,4331=>563,4332=>543,4333=>566,4334=>563,4335=>530,4336=>554,4337=>554,4338=>553,4339=>554,4340=>553,4341=>583,4342=>853,4343=>604,4344=>559,4345=>632,4346=>554,4347=>448,4348=>324,5121=>774,5122=>774,5123=>774,5124=>774,5125=>905,5126=>905,5127=>905,5129=>905,5130=>905,5131=>905,5132=>1018,5133=>1009,5134=>1018,5135=>1009,5136=>1018,5137=>1009,5138=>1149,5139=>1140,5140=>1149,5141=>1140,5142=>905,5143=>1149,5144=>1142,5145=>1149,5146=>1142,5147=>905,5149=>310,5150=>529,5151=>425,5152=>425,5153=>395,5154=>395,5155=>395,5156=>395,5157=>564,5158=>470,5159=>310,5160=>395,5161=>395,5162=>395,5163=>1213,5164=>986,5165=>1216,5166=>1297,5167=>774,5168=>774,5169=>774,5170=>774,5171=>886,5172=>886,5173=>886,5175=>886,5176=>886,5177=>886,5178=>1018,5179=>1009,5180=>1018,5181=>1009,5182=>1018,5183=>1009,5184=>1149,5185=>1140,5186=>1149,5187=>1140,5188=>1149,5189=>1142,5190=>1149,5191=>1142,5192=>886,5193=>576,5194=>229,5196=>812,5197=>812,5198=>812,5199=>812,5200=>815,5201=>815,5202=>815,5204=>815,5205=>815,5206=>815,5207=>1056,5208=>1048,5209=>1056,5210=>1048,5211=>1056,5212=>1048,5213=>1060,5214=>1054,5215=>1060,5216=>1054,5217=>1060,5218=>1052,5219=>1060,5220=>1052,5221=>1060,5222=>483,5223=>1005,5224=>1005,5225=>1023,5226=>1017,5227=>743,5228=>743,5229=>743,5230=>743,5231=>743,5232=>743,5233=>743,5234=>743,5235=>743,5236=>1029,5237=>975,5238=>980,5239=>975,5240=>980,5241=>975,5242=>1029,5243=>975,5244=>1029,5245=>975,5246=>980,5247=>975,5248=>980,5249=>975,5250=>980,5251=>501,5252=>501,5253=>938,5254=>938,5255=>938,5256=>938,5257=>743,5258=>743,5259=>743,5260=>743,5261=>743,5262=>743,5263=>743,5264=>743,5265=>743,5266=>1029,5267=>975,5268=>1029,5269=>975,5270=>1029,5271=>975,5272=>1029,5273=>975,5274=>1029,5275=>975,5276=>1029,5277=>975,5278=>1029,5279=>975,5280=>1029,5281=>501,5282=>501,5283=>626,5284=>626,5285=>626,5286=>626,5287=>626,5288=>626,5289=>626,5290=>626,5291=>626,5292=>881,5293=>854,5294=>863,5295=>874,5296=>863,5297=>874,5298=>881,5299=>874,5300=>881,5301=>874,5302=>863,5303=>874,5304=>863,5305=>874,5306=>863,5307=>436,5308=>548,5309=>436,5312=>988,5313=>988,5314=>988,5315=>988,5316=>931,5317=>931,5318=>931,5319=>931,5320=>931,5321=>1238,5322=>1247,5323=>1200,5324=>1228,5325=>1200,5326=>1228,5327=>931,5328=>660,5329=>497,5330=>660,5331=>988,5332=>988,5333=>988,5334=>988,5335=>931,5336=>931,5337=>931,5338=>931,5339=>931,5340=>1231,5341=>1247,5342=>1283,5343=>1228,5344=>1283,5345=>1228,5346=>1228,5347=>1214,5348=>1228,5349=>1214,5350=>1283,5351=>1228,5352=>1283,5353=>1228,5354=>660,5356=>886,5357=>730,5358=>730,5359=>730,5360=>730,5361=>730,5362=>730,5363=>730,5364=>730,5365=>730,5366=>998,5367=>958,5368=>967,5369=>989,5370=>967,5371=>989,5372=>998,5373=>958,5374=>998,5375=>958,5376=>967,5377=>989,5378=>967,5379=>989,5380=>967,5381=>493,5382=>460,5383=>493,5392=>923,5393=>923,5394=>923,5395=>1136,5396=>1136,5397=>1136,5398=>1136,5399=>1209,5400=>1202,5401=>1209,5402=>1202,5403=>1209,5404=>1202,5405=>1431,5406=>1420,5407=>1431,5408=>1420,5409=>1431,5410=>1420,5411=>1431,5412=>1420,5413=>746,5414=>776,5415=>776,5416=>776,5417=>776,5418=>776,5419=>776,5420=>776,5421=>776,5422=>776,5423=>1003,5424=>1003,5425=>1013,5426=>996,5427=>1013,5428=>996,5429=>1003,5430=>1003,5431=>1003,5432=>1003,5433=>1013,5434=>996,5435=>1013,5436=>996,5437=>1013,5438=>495,5440=>395,5441=>510,5442=>1033,5443=>1033,5444=>976,5445=>976,5446=>976,5447=>976,5448=>733,5449=>733,5450=>733,5451=>733,5452=>733,5453=>733,5454=>1003,5455=>959,5456=>495,5458=>886,5459=>774,5460=>774,5461=>774,5462=>774,5463=>928,5464=>928,5465=>928,5466=>928,5467=>1172,5468=>1142,5469=>602,5470=>812,5471=>812,5472=>812,5473=>812,5474=>812,5475=>812,5476=>815,5477=>815,5478=>815,5479=>815,5480=>1060,5481=>1052,5482=>548,5492=>977,5493=>977,5494=>977,5495=>977,5496=>977,5497=>977,5498=>977,5499=>618,5500=>837,5501=>510,5502=>1238,5503=>1238,5504=>1238,5505=>1238,5506=>1238,5507=>1238,5508=>1238,5509=>989,5514=>977,5515=>977,5516=>977,5517=>977,5518=>1591,5519=>1591,5520=>1591,5521=>1295,5522=>1295,5523=>1591,5524=>1591,5525=>848,5526=>1273,5536=>988,5537=>988,5538=>931,5539=>931,5540=>931,5541=>931,5542=>660,5543=>776,5544=>776,5545=>776,5546=>776,5547=>776,5548=>776,5549=>776,5550=>495,5551=>743,5598=>830,5601=>830,5702=>496,5703=>496,5742=>413,5743=>1238,5744=>1591,5745=>2016,5746=>2016,5747=>1720,5748=>1678,5749=>2016,5750=>2016,7424=>652,7425=>833,7426=>1048,7427=>608,7428=>593,7429=>676,7430=>676,7431=>559,7432=>557,7433=>343,7434=>494,7435=>665,7436=>539,7437=>817,7438=>701,7439=>687,7440=>593,7441=>660,7442=>660,7443=>660,7444=>1094,7446=>687,7447=>687,7448=>556,7449=>642,7450=>642,7451=>580,7452=>634,7453=>737,7454=>948,7455=>695,7456=>652,7457=>924,7458=>582,7459=>646,7462=>539,7463=>652,7464=>691,7465=>556,7466=>781,7467=>732,7468=>487,7469=>683,7470=>480,7472=>523,7473=>430,7474=>430,7475=>517,7476=>527,7477=>234,7478=>234,7479=>488,7480=>401,7481=>626,7482=>527,7483=>527,7484=>535,7485=>509,7486=>461,7487=>485,7488=>430,7489=>511,7490=>695,7491=>458,7492=>458,7493=>479,7494=>712,7495=>479,7496=>479,7497=>479,7498=>479,7499=>386,7500=>386,7501=>479,7502=>219,7503=>487,7504=>664,7505=>456,7506=>488,7507=>414,7508=>488,7509=>488,7510=>479,7511=>388,7512=>456,7513=>462,7514=>664,7515=>501,7517=>451,7518=>429,7519=>433,7520=>493,7521=>406,7522=>219,7523=>315,7524=>456,7525=>501,7526=>451,7527=>429,7528=>451,7529=>493,7530=>406,7543=>716,7544=>527,7547=>545,7549=>747,7557=>514,7579=>479,7580=>414,7581=>414,7582=>488,7583=>386,7584=>377,7585=>348,7586=>479,7587=>456,7588=>347,7589=>281,7590=>347,7591=>347,7592=>431,7593=>326,7594=>330,7595=>370,7596=>664,7597=>664,7598=>562,7599=>562,7600=>448,7601=>488,7602=>542,7603=>422,7604=>396,7605=>388,7606=>583,7607=>494,7608=>399,7609=>451,7610=>501,7611=>417,7612=>523,7613=>470,7614=>455,7615=>425,7620=>0,7621=>0,7622=>0,7623=>0,7624=>0,7625=>0,7680=>774,7681=>675,7682=>762,7683=>716,7684=>762,7685=>716,7686=>762,7687=>716,7688=>734,7689=>593,7690=>830,7691=>716,7692=>830,7693=>716,7694=>830,7695=>716,7696=>830,7697=>716,7698=>830,7699=>716,7700=>683,7701=>678,7702=>683,7703=>678,7704=>683,7705=>678,7706=>683,7707=>678,7708=>683,7709=>678,7710=>683,7711=>435,7712=>821,7713=>716,7714=>837,7715=>712,7716=>837,7717=>712,7718=>837,7719=>712,7720=>837,7721=>712,7722=>837,7723=>712,7724=>372,7725=>343,7726=>372,7727=>343,7728=>775,7729=>665,7730=>775,7731=>665,7732=>775,7733=>665,7734=>637,7735=>343,7736=>637,7737=>343,7738=>637,7739=>343,7740=>637,7741=>343,7742=>995,7743=>1042,7744=>995,7745=>1042,7746=>995,7747=>1042,7748=>837,7749=>712,7750=>837,7751=>712,7752=>837,7753=>712,7754=>837,7755=>712,7756=>850,7757=>687,7758=>850,7759=>687,7760=>850,7761=>687,7762=>850,7763=>687,7764=>733,7765=>716,7766=>733,7767=>716,7768=>770,7769=>493,7770=>770,7771=>493,7772=>770,7773=>493,7774=>770,7775=>493,7776=>720,7777=>595,7778=>720,7779=>595,7780=>720,7781=>595,7782=>720,7783=>595,7784=>720,7785=>595,7786=>682,7787=>478,7788=>682,7789=>478,7790=>682,7791=>478,7792=>682,7793=>478,7794=>812,7795=>712,7796=>812,7797=>712,7798=>812,7799=>712,7800=>812,7801=>712,7802=>812,7803=>712,7804=>774,7805=>652,7806=>774,7807=>652,7808=>1103,7809=>924,7810=>1103,7811=>924,7812=>1103,7813=>924,7814=>1103,7815=>924,7816=>1103,7817=>924,7818=>771,7819=>645,7820=>771,7821=>645,7822=>724,7823=>652,7824=>725,7825=>582,7826=>725,7827=>582,7828=>725,7829=>582,7830=>712,7831=>478,7832=>924,7833=>652,7834=>675,7835=>435,7836=>435,7837=>435,7838=>896,7839=>687,7840=>774,7841=>675,7842=>774,7843=>675,7844=>774,7845=>675,7846=>774,7847=>675,7848=>774,7849=>675,7850=>774,7851=>675,7852=>774,7853=>675,7854=>774,7855=>675,7856=>774,7857=>675,7858=>774,7859=>675,7860=>774,7861=>675,7862=>774,7863=>675,7864=>683,7865=>678,7866=>683,7867=>678,7868=>683,7869=>678,7870=>683,7871=>678,7872=>683,7873=>678,7874=>683,7875=>678,7876=>683,7877=>678,7878=>683,7879=>678,7880=>372,7881=>343,7882=>372,7883=>343,7884=>850,7885=>687,7886=>850,7887=>687,7888=>850,7889=>687,7890=>850,7891=>687,7892=>850,7893=>687,7894=>850,7895=>687,7896=>850,7897=>687,7898=>850,7899=>687,7900=>850,7901=>687,7902=>850,7903=>687,7904=>850,7905=>687,7906=>850,7907=>687,7908=>812,7909=>712,7910=>812,7911=>712,7912=>812,7913=>712,7914=>812,7915=>712,7916=>812,7917=>712,7918=>812,7919=>712,7920=>812,7921=>712,7922=>724,7923=>652,7924=>724,7925=>652,7926=>724,7927=>652,7928=>724,7929=>652,7930=>953,7931=>644,7936=>687,7937=>687,7938=>687,7939=>687,7940=>687,7941=>687,7942=>687,7943=>687,7944=>774,7945=>774,7946=>1041,7947=>1043,7948=>935,7949=>963,7950=>835,7951=>859,7952=>557,7953=>557,7954=>557,7955=>557,7956=>557,7957=>557,7960=>792,7961=>794,7962=>1100,7963=>1096,7964=>1023,7965=>1052,7968=>712,7969=>712,7970=>712,7971=>712,7972=>712,7973=>712,7974=>712,7975=>712,7976=>945,7977=>951,7978=>1250,7979=>1250,7980=>1180,7981=>1206,7982=>1054,7983=>1063,7984=>390,7985=>390,7986=>390,7987=>390,7988=>390,7989=>390,7990=>390,7991=>390,7992=>483,7993=>489,7994=>777,7995=>785,7996=>712,7997=>738,7998=>604,7999=>604,8000=>687,8001=>687,8002=>687,8003=>687,8004=>687,8005=>687,8008=>892,8009=>933,8010=>1221,8011=>1224,8012=>1053,8013=>1082,8016=>675,8017=>675,8018=>675,8019=>675,8020=>675,8021=>675,8022=>675,8023=>675,8025=>930,8027=>1184,8029=>1199,8031=>1049,8032=>869,8033=>869,8034=>869,8035=>869,8036=>869,8037=>869,8038=>869,8039=>869,8040=>909,8041=>958,8042=>1246,8043=>1251,8044=>1076,8045=>1105,8046=>1028,8047=>1076,8048=>687,8049=>687,8050=>557,8051=>557,8052=>712,8053=>712,8054=>390,8055=>390,8056=>687,8057=>687,8058=>675,8059=>675,8060=>869,8061=>869,8064=>687,8065=>687,8066=>687,8067=>687,8068=>687,8069=>687,8070=>687,8071=>687,8072=>774,8073=>774,8074=>1041,8075=>1043,8076=>935,8077=>963,8078=>835,8079=>859,8080=>712,8081=>712,8082=>712,8083=>712,8084=>712,8085=>712,8086=>712,8087=>712,8088=>945,8089=>951,8090=>1250,8091=>1250,8092=>1180,8093=>1206,8094=>1054,8095=>1063,8096=>869,8097=>869,8098=>869,8099=>869,8100=>869,8101=>869,8102=>869,8103=>869,8104=>909,8105=>958,8106=>1246,8107=>1251,8108=>1076,8109=>1105,8110=>1028,8111=>1076,8112=>687,8113=>687,8114=>687,8115=>687,8116=>687,8118=>687,8119=>687,8120=>774,8121=>774,8122=>876,8123=>797,8124=>774,8125=>500,8126=>500,8127=>500,8128=>500,8129=>500,8130=>712,8131=>712,8132=>712,8134=>712,8135=>712,8136=>929,8137=>846,8138=>1080,8139=>1009,8140=>837,8141=>500,8142=>500,8143=>500,8144=>390,8145=>390,8146=>390,8147=>390,8150=>390,8151=>390,8152=>372,8153=>372,8154=>621,8155=>563,8157=>500,8158=>500,8159=>500,8160=>675,8161=>675,8162=>675,8163=>675,8164=>716,8165=>716,8166=>675,8167=>675,8168=>724,8169=>724,8170=>1020,8171=>980,8172=>838,8173=>500,8174=>500,8175=>500,8178=>869,8179=>869,8180=>869,8182=>869,8183=>869,8184=>1065,8185=>891,8186=>1084,8187=>894,8188=>850,8189=>500,8190=>500,8192=>500,8193=>1000,8194=>500,8195=>1000,8196=>330,8197=>250,8198=>167,8199=>696,8200=>380,8201=>200,8202=>100,8203=>0,8204=>0,8205=>0,8206=>0,8207=>0,8208=>415,8209=>415,8210=>696,8211=>500,8212=>1000,8213=>1000,8214=>500,8215=>500,8216=>380,8217=>380,8218=>380,8219=>380,8220=>644,8221=>644,8222=>644,8223=>657,8224=>500,8225=>500,8226=>639,8227=>639,8228=>380,8229=>685,8230=>1000,8231=>348,8232=>0,8233=>0,8234=>0,8235=>0,8236=>0,8237=>0,8238=>0,8239=>200,8240=>1454,8241=>1908,8242=>264,8243=>447,8244=>630,8245=>264,8246=>447,8247=>630,8248=>733,8249=>412,8250=>412,8251=>972,8252=>627,8253=>580,8254=>500,8255=>828,8256=>828,8257=>329,8258=>1023,8259=>500,8260=>167,8261=>457,8262=>457,8263=>1030,8264=>829,8265=>829,8266=>513,8267=>687,8268=>500,8269=>500,8270=>523,8271=>400,8272=>828,8273=>523,8274=>556,8275=>838,8276=>828,8277=>838,8278=>684,8279=>813,8280=>838,8281=>838,8282=>380,8283=>872,8284=>838,8285=>380,8286=>380,8287=>222,8288=>0,8289=>0,8290=>0,8291=>0,8292=>0,8298=>0,8299=>0,8300=>0,8301=>0,8302=>0,8303=>0,8304=>438,8305=>219,8308=>438,8309=>438,8310=>438,8311=>438,8312=>438,8313=>438,8314=>528,8315=>528,8316=>528,8317=>288,8318=>288,8319=>456,8320=>438,8321=>438,8322=>438,8323=>438,8324=>438,8325=>438,8326=>438,8327=>438,8328=>438,8329=>438,8330=>528,8331=>528,8332=>528,8333=>288,8334=>288,8336=>458,8337=>479,8338=>488,8339=>413,8340=>479,8341=>456,8342=>487,8343=>219,8344=>664,8345=>456,8346=>479,8347=>381,8348=>388,8352=>929,8353=>696,8354=>696,8355=>696,8356=>696,8357=>1042,8358=>837,8359=>1488,8360=>1205,8361=>1103,8362=>854,8363=>696,8364=>696,8365=>696,8366=>696,8367=>1392,8368=>696,8369=>696,8370=>696,8371=>696,8372=>859,8373=>696,8376=>696,8377=>696,8378=>769,8400=>0,8401=>0,8406=>0,8407=>0,8411=>0,8412=>0,8417=>0,8448=>1106,8449=>1106,8450=>734,8451=>1211,8452=>896,8453=>1114,8454=>1148,8455=>696,8456=>698,8457=>952,8459=>1073,8460=>913,8461=>888,8462=>712,8463=>712,8464=>597,8465=>697,8466=>856,8467=>472,8468=>974,8469=>837,8470=>1203,8471=>1000,8472=>697,8473=>750,8474=>850,8475=>938,8476=>814,8477=>801,8478=>896,8479=>710,8480=>1020,8481=>1239,8482=>1000,8483=>834,8484=>754,8485=>622,8486=>850,8487=>769,8488=>763,8489=>303,8490=>775,8491=>774,8492=>928,8493=>818,8494=>854,8495=>636,8496=>729,8497=>808,8498=>683,8499=>1184,8500=>465,8501=>794,8502=>731,8503=>494,8504=>684,8505=>380,8506=>945,8507=>1370,8508=>790,8509=>737,8510=>654,8511=>863,8512=>840,8513=>786,8514=>576,8515=>637,8516=>760,8517=>830,8518=>716,8519=>678,8520=>343,8521=>343,8523=>872,8526=>547,8528=>1035,8529=>1035,8530=>1483,8531=>1035,8532=>1035,8533=>1035,8534=>1035,8535=>1035,8536=>1035,8537=>1035,8538=>1035,8539=>1035,8540=>1035,8541=>1035,8542=>1035,8543=>615,8544=>372,8545=>659,8546=>945,8547=>1099,8548=>774,8549=>1099,8550=>1386,8551=>1672,8552=>1121,8553=>771,8554=>1120,8555=>1407,8556=>637,8557=>734,8558=>830,8559=>995,8560=>343,8561=>607,8562=>872,8563=>984,8564=>652,8565=>962,8566=>1227,8567=>1491,8568=>969,8569=>645,8570=>969,8571=>1233,8572=>343,8573=>593,8574=>716,8575=>1042,8576=>1289,8577=>830,8578=>1289,8579=>734,8580=>593,8581=>734,8585=>1035,8592=>838,8593=>838,8594=>838,8595=>838,8596=>838,8597=>838,8598=>838,8599=>838,8600=>838,8601=>838,8602=>838,8603=>838,8604=>838,8605=>838,8606=>838,8607=>838,8608=>838,8609=>838,8610=>838,8611=>838,8612=>838,8613=>838,8614=>838,8615=>838,8616=>838,8617=>838,8618=>838,8619=>838,8620=>838,8621=>838,8622=>838,8623=>838,8624=>838,8625=>838,8626=>838,8627=>838,8628=>838,8629=>838,8630=>838,8631=>838,8632=>838,8633=>838,8634=>838,8635=>838,8636=>838,8637=>838,8638=>838,8639=>838,8640=>838,8641=>838,8642=>838,8643=>838,8644=>838,8645=>838,8646=>838,8647=>838,8648=>838,8649=>838,8650=>838,8651=>838,8652=>838,8653=>838,8654=>838,8655=>838,8656=>838,8657=>838,8658=>838,8659=>838,8660=>838,8661=>838,8662=>838,8663=>838,8664=>838,8665=>838,8666=>838,8667=>838,8668=>838,8669=>838,8670=>838,8671=>838,8672=>838,8673=>838,8674=>838,8675=>838,8676=>838,8677=>838,8678=>838,8679=>838,8680=>838,8681=>838,8682=>838,8683=>838,8684=>838,8685=>838,8686=>838,8687=>838,8688=>838,8689=>838,8690=>838,8691=>838,8692=>838,8693=>838,8694=>838,8695=>838,8696=>838,8697=>838,8698=>838,8699=>838,8700=>838,8701=>838,8702=>838,8703=>838,8704=>774,8705=>696,8706=>544,8707=>683,8708=>683,8709=>856,8710=>697,8711=>697,8712=>896,8713=>896,8714=>750,8715=>896,8716=>896,8717=>750,8718=>636,8719=>787,8720=>787,8721=>718,8722=>838,8723=>838,8724=>696,8725=>365,8726=>696,8727=>838,8728=>626,8729=>380,8730=>667,8731=>667,8732=>667,8733=>712,8734=>833,8735=>838,8736=>896,8737=>896,8738=>838,8739=>500,8740=>500,8741=>500,8742=>500,8743=>812,8744=>812,8745=>812,8746=>812,8747=>610,8748=>929,8749=>1295,8750=>563,8751=>977,8752=>1313,8753=>563,8754=>563,8755=>563,8756=>696,8757=>696,8758=>294,8759=>696,8760=>838,8761=>838,8762=>838,8763=>838,8764=>838,8765=>838,8766=>838,8767=>838,8768=>375,8769=>838,8770=>838,8771=>838,8772=>838,8773=>838,8774=>838,8775=>838,8776=>838,8777=>838,8778=>838,8779=>838,8780=>838,8781=>838,8782=>838,8783=>838,8784=>838,8785=>838,8786=>838,8787=>838,8788=>1063,8789=>1063,8790=>838,8791=>838,8792=>838,8793=>838,8794=>838,8795=>838,8796=>838,8797=>838,8798=>838,8799=>838,8800=>838,8801=>838,8802=>838,8803=>838,8804=>838,8805=>838,8806=>838,8807=>838,8808=>841,8809=>841,8810=>1047,8811=>1047,8812=>500,8813=>838,8814=>838,8815=>838,8816=>838,8817=>838,8818=>838,8819=>838,8820=>838,8821=>838,8822=>838,8823=>838,8824=>838,8825=>838,8826=>838,8827=>838,8828=>838,8829=>838,8830=>838,8831=>838,8832=>838,8833=>838,8834=>838,8835=>838,8836=>838,8837=>838,8838=>838,8839=>838,8840=>838,8841=>838,8842=>838,8843=>838,8844=>812,8845=>812,8846=>812,8847=>838,8848=>838,8849=>838,8850=>838,8851=>796,8852=>796,8853=>838,8854=>838,8855=>838,8856=>838,8857=>838,8858=>838,8859=>838,8860=>838,8861=>838,8862=>838,8863=>838,8864=>838,8865=>838,8866=>914,8867=>914,8868=>914,8869=>914,8870=>542,8871=>542,8872=>914,8873=>914,8874=>914,8875=>914,8876=>914,8877=>914,8878=>914,8879=>914,8880=>838,8881=>838,8882=>838,8883=>838,8884=>838,8885=>838,8886=>1000,8887=>1000,8888=>838,8889=>838,8890=>542,8891=>812,8892=>812,8893=>812,8894=>838,8895=>838,8896=>843,8897=>843,8898=>843,8899=>843,8900=>494,8901=>380,8902=>626,8903=>838,8904=>1000,8905=>1000,8906=>1000,8907=>1000,8908=>1000,8909=>838,8910=>812,8911=>812,8912=>838,8913=>838,8914=>838,8915=>838,8916=>838,8917=>838,8918=>838,8919=>838,8920=>1422,8921=>1422,8922=>838,8923=>838,8924=>838,8925=>838,8926=>838,8927=>838,8928=>838,8929=>838,8930=>838,8931=>838,8932=>838,8933=>838,8934=>838,8935=>838,8936=>838,8937=>838,8938=>838,8939=>838,8940=>838,8941=>838,8942=>1000,8943=>1000,8944=>1000,8945=>1000,8946=>1158,8947=>896,8948=>750,8949=>896,8950=>896,8951=>750,8952=>896,8953=>896,8954=>1158,8955=>896,8956=>750,8957=>896,8958=>750,8959=>896,8960=>602,8961=>602,8962=>716,8963=>838,8964=>838,8965=>838,8966=>838,8967=>488,8968=>457,8969=>457,8970=>457,8971=>457,8972=>809,8973=>809,8974=>809,8975=>809,8976=>838,8977=>539,8984=>928,8985=>838,8988=>469,8989=>469,8990=>469,8991=>469,8992=>610,8993=>610,8996=>1152,8997=>1152,8998=>1414,8999=>1152,9000=>1443,9003=>1414,9004=>873,9075=>390,9076=>716,9077=>869,9082=>687,9085=>863,9095=>1152,9108=>873,9115=>500,9116=>500,9117=>500,9118=>500,9119=>500,9120=>500,9121=>500,9122=>500,9123=>500,9124=>500,9125=>500,9126=>500,9127=>750,9128=>750,9129=>750,9130=>750,9131=>750,9132=>750,9133=>750,9134=>610,9166=>838,9167=>945,9187=>873,9189=>769,9192=>696,9250=>716,9251=>716,9312=>847,9313=>847,9314=>847,9315=>847,9316=>847,9317=>847,9318=>847,9319=>847,9320=>847,9321=>847,9600=>769,9601=>769,9602=>769,9603=>769,9604=>769,9605=>769,9606=>769,9607=>769,9608=>769,9609=>769,9610=>769,9611=>769,9612=>769,9613=>769,9614=>769,9615=>769,9616=>769,9617=>769,9618=>769,9619=>769,9620=>769,9621=>769,9622=>769,9623=>769,9624=>769,9625=>769,9626=>769,9627=>769,9628=>769,9629=>769,9630=>769,9631=>769,9632=>945,9633=>945,9634=>945,9635=>945,9636=>945,9637=>945,9638=>945,9639=>945,9640=>945,9641=>945,9642=>678,9643=>678,9644=>945,9645=>945,9646=>550,9647=>550,9648=>769,9649=>769,9650=>769,9651=>769,9652=>502,9653=>502,9654=>769,9655=>769,9656=>502,9657=>502,9658=>769,9659=>769,9660=>769,9661=>769,9662=>502,9663=>502,9664=>769,9665=>769,9666=>502,9667=>502,9668=>769,9669=>769,9670=>769,9671=>769,9672=>769,9673=>873,9674=>494,9675=>873,9676=>873,9677=>873,9678=>873,9679=>873,9680=>873,9681=>873,9682=>873,9683=>873,9684=>873,9685=>873,9686=>527,9687=>527,9688=>840,9689=>970,9690=>970,9691=>970,9692=>387,9693=>387,9694=>387,9695=>387,9696=>769,9697=>769,9698=>769,9699=>769,9700=>769,9701=>769,9702=>639,9703=>945,9704=>945,9705=>945,9706=>945,9707=>945,9708=>769,9709=>769,9710=>769,9711=>1119,9712=>945,9713=>945,9714=>945,9715=>945,9716=>873,9717=>873,9718=>873,9719=>873,9720=>769,9721=>769,9722=>769,9723=>830,9724=>830,9725=>732,9726=>732,9727=>769,9728=>896,9729=>1000,9730=>896,9731=>896,9732=>896,9733=>896,9734=>896,9735=>573,9736=>896,9737=>896,9738=>888,9739=>888,9740=>671,9741=>1013,9742=>1246,9743=>1250,9744=>896,9745=>896,9746=>896,9747=>532,9748=>896,9749=>896,9750=>896,9751=>896,9752=>896,9753=>896,9754=>896,9755=>896,9756=>896,9757=>609,9758=>896,9759=>609,9760=>896,9761=>896,9762=>896,9763=>896,9764=>669,9765=>746,9766=>649,9767=>784,9768=>545,9769=>896,9770=>896,9771=>896,9772=>710,9773=>896,9774=>896,9775=>896,9776=>896,9777=>896,9778=>896,9779=>896,9780=>896,9781=>896,9782=>896,9783=>896,9784=>896,9785=>1042,9786=>1042,9787=>1042,9788=>896,9789=>896,9790=>896,9791=>614,9792=>732,9793=>732,9794=>896,9795=>896,9796=>896,9797=>896,9798=>896,9799=>896,9800=>896,9801=>896,9802=>896,9803=>896,9804=>896,9805=>896,9806=>896,9807=>896,9808=>896,9809=>896,9810=>896,9811=>896,9812=>896,9813=>896,9814=>896,9815=>896,9816=>896,9817=>896,9818=>896,9819=>896,9820=>896,9821=>896,9822=>896,9823=>896,9824=>896,9825=>896,9826=>896,9827=>896,9828=>896,9829=>896,9830=>896,9831=>896,9832=>896,9833=>472,9834=>638,9835=>896,9836=>896,9837=>472,9838=>357,9839=>484,9840=>748,9841=>766,9842=>896,9843=>896,9844=>896,9845=>896,9846=>896,9847=>896,9848=>896,9849=>896,9850=>896,9851=>896,9852=>896,9853=>896,9854=>896,9855=>896,9856=>869,9857=>869,9858=>869,9859=>869,9860=>869,9861=>869,9862=>896,9863=>896,9864=>896,9865=>896,9866=>896,9867=>896,9868=>896,9869=>896,9870=>896,9871=>896,9872=>896,9873=>896,9874=>896,9875=>896,9876=>896,9877=>541,9878=>896,9879=>896,9880=>896,9881=>896,9882=>896,9883=>896,9884=>896,9888=>896,9889=>702,9890=>1004,9891=>1089,9892=>1175,9893=>903,9894=>838,9895=>838,9896=>838,9897=>838,9898=>838,9899=>838,9900=>838,9901=>838,9902=>838,9903=>838,9904=>844,9905=>838,9906=>732,9907=>732,9908=>732,9909=>732,9910=>850,9911=>732,9912=>732,9920=>838,9921=>838,9922=>838,9923=>838,9954=>732,9985=>838,9986=>838,9987=>838,9988=>838,9990=>838,9991=>838,9992=>838,9993=>838,9996=>838,9997=>838,9998=>838,9999=>838,10000=>838,10001=>838,10002=>838,10003=>838,10004=>838,10005=>838,10006=>838,10007=>838,10008=>838,10009=>838,10010=>838,10011=>838,10012=>838,10013=>838,10014=>838,10015=>838,10016=>838,10017=>838,10018=>838,10019=>838,10020=>838,10021=>838,10022=>838,10023=>838,10025=>838,10026=>838,10027=>838,10028=>838,10029=>838,10030=>838,10031=>838,10032=>838,10033=>838,10034=>838,10035=>838,10036=>838,10037=>838,10038=>838,10039=>838,10040=>838,10041=>838,10042=>838,10043=>838,10044=>838,10045=>838,10046=>838,10047=>838,10048=>838,10049=>838,10050=>838,10051=>838,10052=>838,10053=>838,10054=>838,10055=>838,10056=>838,10057=>838,10058=>838,10059=>838,10061=>896,10063=>896,10064=>896,10065=>896,10066=>896,10070=>896,10072=>838,10073=>838,10074=>838,10075=>322,10076=>322,10077=>538,10078=>538,10081=>838,10082=>838,10083=>838,10084=>838,10085=>838,10086=>838,10087=>838,10088=>838,10089=>838,10090=>838,10091=>838,10092=>838,10093=>838,10094=>838,10095=>838,10096=>838,10097=>838,10098=>838,10099=>838,10100=>838,10101=>838,10102=>847,10103=>847,10104=>847,10105=>847,10106=>847,10107=>847,10108=>847,10109=>847,10110=>847,10111=>847,10112=>838,10113=>838,10114=>838,10115=>838,10116=>838,10117=>838,10118=>838,10119=>838,10120=>838,10121=>838,10122=>838,10123=>838,10124=>838,10125=>838,10126=>838,10127=>838,10128=>838,10129=>838,10130=>838,10131=>838,10132=>838,10136=>838,10137=>838,10138=>838,10139=>838,10140=>838,10141=>838,10142=>838,10143=>838,10144=>838,10145=>838,10146=>838,10147=>838,10148=>838,10149=>838,10150=>838,10151=>838,10152=>838,10153=>838,10154=>838,10155=>838,10156=>838,10157=>838,10158=>838,10159=>838,10161=>838,10162=>838,10163=>838,10164=>838,10165=>838,10166=>838,10167=>838,10168=>838,10169=>838,10170=>838,10171=>838,10172=>838,10173=>838,10174=>838,10181=>457,10182=>457,10208=>494,10214=>487,10215=>487,10216=>457,10217=>457,10218=>721,10219=>721,10224=>838,10225=>838,10226=>838,10227=>838,10228=>1157,10229=>1434,10230=>1434,10231=>1434,10232=>1434,10233=>1434,10234=>1434,10235=>1434,10236=>1434,10237=>1434,10238=>1434,10239=>1434,10240=>781,10241=>781,10242=>781,10243=>781,10244=>781,10245=>781,10246=>781,10247=>781,10248=>781,10249=>781,10250=>781,10251=>781,10252=>781,10253=>781,10254=>781,10255=>781,10256=>781,10257=>781,10258=>781,10259=>781,10260=>781,10261=>781,10262=>781,10263=>781,10264=>781,10265=>781,10266=>781,10267=>781,10268=>781,10269=>781,10270=>781,10271=>781,10272=>781,10273=>781,10274=>781,10275=>781,10276=>781,10277=>781,10278=>781,10279=>781,10280=>781,10281=>781,10282=>781,10283=>781,10284=>781,10285=>781,10286=>781,10287=>781,10288=>781,10289=>781,10290=>781,10291=>781,10292=>781,10293=>781,10294=>781,10295=>781,10296=>781,10297=>781,10298=>781,10299=>781,10300=>781,10301=>781,10302=>781,10303=>781,10304=>781,10305=>781,10306=>781,10307=>781,10308=>781,10309=>781,10310=>781,10311=>781,10312=>781,10313=>781,10314=>781,10315=>781,10316=>781,10317=>781,10318=>781,10319=>781,10320=>781,10321=>781,10322=>781,10323=>781,10324=>781,10325=>781,10326=>781,10327=>781,10328=>781,10329=>781,10330=>781,10331=>781,10332=>781,10333=>781,10334=>781,10335=>781,10336=>781,10337=>781,10338=>781,10339=>781,10340=>781,10341=>781,10342=>781,10343=>781,10344=>781,10345=>781,10346=>781,10347=>781,10348=>781,10349=>781,10350=>781,10351=>781,10352=>781,10353=>781,10354=>781,10355=>781,10356=>781,10357=>781,10358=>781,10359=>781,10360=>781,10361=>781,10362=>781,10363=>781,10364=>781,10365=>781,10366=>781,10367=>781,10368=>781,10369=>781,10370=>781,10371=>781,10372=>781,10373=>781,10374=>781,10375=>781,10376=>781,10377=>781,10378=>781,10379=>781,10380=>781,10381=>781,10382=>781,10383=>781,10384=>781,10385=>781,10386=>781,10387=>781,10388=>781,10389=>781,10390=>781,10391=>781,10392=>781,10393=>781,10394=>781,10395=>781,10396=>781,10397=>781,10398=>781,10399=>781,10400=>781,10401=>781,10402=>781,10403=>781,10404=>781,10405=>781,10406=>781,10407=>781,10408=>781,10409=>781,10410=>781,10411=>781,10412=>781,10413=>781,10414=>781,10415=>781,10416=>781,10417=>781,10418=>781,10419=>781,10420=>781,10421=>781,10422=>781,10423=>781,10424=>781,10425=>781,10426=>781,10427=>781,10428=>781,10429=>781,10430=>781,10431=>781,10432=>781,10433=>781,10434=>781,10435=>781,10436=>781,10437=>781,10438=>781,10439=>781,10440=>781,10441=>781,10442=>781,10443=>781,10444=>781,10445=>781,10446=>781,10447=>781,10448=>781,10449=>781,10450=>781,10451=>781,10452=>781,10453=>781,10454=>781,10455=>781,10456=>781,10457=>781,10458=>781,10459=>781,10460=>781,10461=>781,10462=>781,10463=>781,10464=>781,10465=>781,10466=>781,10467=>781,10468=>781,10469=>781,10470=>781,10471=>781,10472=>781,10473=>781,10474=>781,10475=>781,10476=>781,10477=>781,10478=>781,10479=>781,10480=>781,10481=>781,10482=>781,10483=>781,10484=>781,10485=>781,10486=>781,10487=>781,10488=>781,10489=>781,10490=>781,10491=>781,10492=>781,10493=>781,10494=>781,10495=>781,10502=>838,10503=>838,10506=>838,10507=>838,10560=>838,10561=>838,10627=>753,10628=>753,10702=>838,10703=>1046,10704=>1046,10705=>1000,10706=>1000,10707=>1000,10708=>1000,10709=>1000,10731=>494,10746=>838,10747=>838,10752=>1000,10753=>1000,10754=>1000,10764=>1661,10765=>563,10766=>563,10767=>563,10768=>563,10769=>563,10770=>563,10771=>563,10772=>563,10773=>563,10774=>563,10775=>563,10776=>563,10777=>563,10778=>563,10779=>563,10780=>563,10799=>838,10858=>838,10859=>838,10877=>838,10878=>838,10879=>838,10880=>838,10881=>838,10882=>838,10883=>838,10884=>838,10885=>838,10886=>838,10887=>838,10888=>838,10889=>838,10890=>838,10891=>838,10892=>838,10893=>838,10894=>838,10895=>838,10896=>838,10897=>838,10898=>838,10899=>838,10900=>838,10901=>838,10902=>838,10903=>838,10904=>838,10905=>838,10906=>838,10907=>838,10908=>838,10909=>838,10910=>838,10911=>838,10912=>838,10926=>838,10927=>838,10928=>838,10929=>838,10930=>838,10931=>838,10932=>838,10933=>838,10934=>838,10935=>838,10936=>838,10937=>838,10938=>838,11001=>838,11002=>838,11008=>838,11009=>838,11010=>838,11011=>838,11012=>838,11013=>838,11014=>838,11015=>838,11016=>838,11017=>838,11018=>838,11019=>838,11020=>838,11021=>838,11022=>838,11023=>838,11024=>838,11025=>838,11026=>945,11027=>945,11028=>945,11029=>945,11030=>769,11031=>769,11032=>769,11033=>769,11034=>945,11039=>869,11040=>869,11041=>873,11042=>873,11043=>873,11044=>1119,11091=>869,11092=>869,11360=>637,11361=>360,11362=>637,11363=>733,11364=>770,11365=>675,11366=>478,11367=>956,11368=>712,11369=>775,11370=>665,11371=>725,11372=>582,11373=>860,11374=>995,11375=>774,11376=>860,11377=>778,11378=>1221,11379=>1056,11380=>652,11381=>698,11382=>565,11383=>782,11385=>538,11386=>687,11387=>559,11388=>219,11389=>487,11390=>720,11391=>725,11520=>663,11521=>676,11522=>661,11523=>629,11524=>661,11525=>1032,11526=>718,11527=>1032,11528=>648,11529=>667,11530=>1032,11531=>673,11532=>677,11533=>1036,11534=>680,11535=>886,11536=>1032,11537=>683,11538=>674,11539=>1035,11540=>1033,11541=>1027,11542=>676,11543=>673,11544=>667,11545=>667,11546=>660,11547=>671,11548=>1039,11549=>673,11550=>692,11551=>659,11552=>1048,11553=>660,11554=>654,11555=>670,11556=>733,11557=>1017,11800=>586,11807=>838,11810=>457,11811=>457,11812=>457,11813=>457,11822=>580,19904=>896,19905=>896,19906=>896,19907=>896,19908=>896,19909=>896,19910=>896,19911=>896,19912=>896,19913=>896,19914=>896,19915=>896,19916=>896,19917=>896,19918=>896,19919=>896,19920=>896,19921=>896,19922=>896,19923=>896,19924=>896,19925=>896,19926=>896,19927=>896,19928=>896,19929=>896,19930=>896,19931=>896,19932=>896,19933=>896,19934=>896,19935=>896,19936=>896,19937=>896,19938=>896,19939=>896,19940=>896,19941=>896,19942=>896,19943=>896,19944=>896,19945=>896,19946=>896,19947=>896,19948=>896,19949=>896,19950=>896,19951=>896,19952=>896,19953=>896,19954=>896,19955=>896,19956=>896,19957=>896,19958=>896,19959=>896,19960=>896,19961=>896,19962=>896,19963=>896,19964=>896,19965=>896,19966=>896,19967=>896,42192=>762,42193=>733,42194=>733,42195=>830,42196=>682,42197=>682,42198=>821,42199=>775,42200=>775,42201=>530,42202=>734,42203=>734,42204=>725,42205=>683,42206=>683,42207=>995,42208=>837,42209=>637,42210=>720,42211=>770,42212=>770,42213=>774,42214=>774,42215=>837,42216=>786,42217=>530,42218=>1103,42219=>771,42220=>724,42221=>762,42222=>774,42223=>774,42224=>683,42225=>683,42226=>372,42227=>850,42228=>812,42229=>812,42230=>576,42231=>830,42232=>322,42233=>322,42234=>674,42235=>674,42236=>322,42237=>322,42238=>588,42239=>588,42564=>720,42565=>595,42566=>436,42567=>440,42572=>1405,42573=>1173,42576=>1234,42577=>1027,42580=>1174,42581=>972,42582=>1100,42583=>969,42594=>1100,42595=>940,42596=>1096,42597=>915,42598=>1260,42599=>997,42600=>850,42601=>687,42602=>1037,42603=>868,42604=>1406,42605=>1106,42606=>961,42634=>944,42635=>749,42636=>682,42637=>580,42644=>808,42645=>712,42760=>500,42761=>500,42762=>500,42763=>500,42764=>500,42765=>500,42766=>500,42767=>500,42768=>500,42769=>500,42770=>500,42771=>500,42772=>500,42773=>500,42774=>500,42779=>400,42780=>400,42781=>287,42782=>287,42783=>287,42786=>444,42787=>390,42788=>540,42789=>540,42790=>837,42791=>712,42792=>1031,42793=>857,42794=>696,42795=>557,42800=>559,42801=>595,42802=>1349,42803=>1052,42804=>1285,42805=>1065,42806=>1245,42807=>1052,42808=>1079,42809=>922,42810=>1079,42811=>922,42812=>1035,42813=>922,42814=>698,42815=>549,42816=>656,42817=>579,42822=>850,42823=>542,42824=>683,42825=>531,42826=>918,42827=>814,42830=>1406,42831=>1106,42832=>733,42833=>716,42834=>948,42835=>937,42838=>850,42839=>716,42852=>738,42853=>716,42854=>738,42855=>716,42880=>637,42881=>343,42882=>837,42883=>712,42889=>400,42890=>396,42891=>456,42892=>306,42893=>808,42894=>693,42896=>928,42897=>768,42912=>821,42913=>716,42914=>775,42915=>665,42916=>837,42917=>712,42918=>770,42919=>493,42920=>720,42921=>595,42922=>886,43002=>1062,43003=>683,43004=>733,43005=>995,43006=>372,43007=>1325,61184=>216,61185=>242,61186=>267,61187=>277,61188=>282,61189=>242,61190=>216,61191=>242,61192=>267,61193=>277,61194=>267,61195=>242,61196=>216,61197=>242,61198=>267,61199=>277,61200=>267,61201=>242,61202=>216,61203=>242,61204=>282,61205=>277,61206=>267,61207=>242,61208=>216,61209=>282,62464=>612,62465=>612,62466=>653,62467=>902,62468=>617,62469=>617,62470=>680,62471=>904,62472=>599,62473=>617,62474=>1163,62475=>621,62476=>622,62477=>893,62478=>612,62479=>622,62480=>924,62481=>622,62482=>754,62483=>624,62484=>886,62485=>622,62486=>907,62487=>621,62488=>611,62489=>624,62490=>677,62491=>621,62492=>611,62493=>630,62494=>622,62495=>561,62496=>612,62497=>626,62498=>612,62499=>611,62500=>618,62501=>667,62502=>963,62504=>1023,62505=>844,62506=>563,62507=>563,62508=>563,62509=>563,62510=>563,62511=>563,62512=>555,62513=>555,62514=>555,62515=>555,62516=>573,62517=>573,62518=>573,62519=>824,62520=>824,62521=>824,62522=>824,62523=>824,62524=>611,62525=>611,62526=>611,62527=>611,62528=>611,62529=>611,62917=>687,64256=>833,64257=>787,64258=>787,64259=>1138,64260=>1139,64261=>808,64262=>1020,64275=>1388,64276=>1384,64277=>1378,64278=>1384,64279=>1713,64285=>294,64286=>0,64287=>663,64288=>665,64289=>939,64290=>788,64291=>920,64292=>786,64293=>857,64294=>869,64295=>821,64296=>890,64297=>838,64298=>749,64299=>749,64300=>749,64301=>749,64302=>728,64303=>728,64304=>728,64305=>610,64306=>447,64307=>588,64308=>687,64309=>343,64310=>400,64311=>1000,64312=>679,64313=>436,64314=>578,64315=>566,64316=>605,64317=>1000,64318=>724,64319=>1000,64320=>453,64321=>680,64322=>1000,64323=>675,64324=>658,64325=>1000,64326=>653,64327=>736,64328=>602,64329=>749,64330=>683,64331=>343,64332=>610,64333=>566,64334=>658,64335=>710,65024=>0,65025=>0,65026=>0,65027=>0,65028=>0,65029=>0,65030=>0,65031=>0,65032=>0,65033=>0,65034=>0,65035=>0,65036=>0,65037=>0,65038=>0,65039=>0,65056=>0,65057=>0,65058=>0,65059=>0,65529=>0,65530=>0,65531=>0,65532=>0,65533=>1113,65535=>600);
|
16 |
-
// --- EOF ---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/lib/tcpdf_min/fonts/dejavusansbi.z
DELETED
Binary file
|
includes/lib/tcpdf_min/fonts/droidsansfallback.ctg.z
DELETED
Binary file
|
includes/lib/tcpdf_min/fonts/droidsansfallback.php
DELETED
@@ -1,15 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
// TCPDF FONT FILE DESCRIPTION
|
3 |
-
$type='TrueTypeUnicode';
|
4 |
-
$name='DroidSansFallback';
|
5 |
-
$up=-78;
|
6 |
-
$ut=51;
|
7 |
-
$dw=1000;
|
8 |
-
$diff='';
|
9 |
-
$originalsize=3189464;
|
10 |
-
$enc='';
|
11 |
-
$file='droidsansfallback.z';
|
12 |
-
$ctg='droidsansfallback.ctg.z';
|
13 |
-
$desc=array('Flags'=>32,'FontBBox'=>'[-90 -266 1121 1043]','ItalicAngle'=>0,'Ascent'=>1043,'Descent'=>-266,'Leading'=>0,'CapHeight'=>715,'XHeight'=>535,'StemV'=>274,'StemH'=>117,'AvgWidth'=>992,'MaxWidth'=>1168,'MissingWidth'=>1000);
|
14 |
-
$cw=array(0=>1000,32=>262,33=>270,34=>402,35=>645,36=>551,37=>824,38=>703,39=>227,40=>301,41=>301,42=>551,43=>551,44=>250,45=>320,46=>270,47=>375,48=>551,49=>551,50=>551,51=>551,52=>551,53=>551,54=>551,55=>551,56=>551,57=>551,58=>270,59=>270,60=>551,61=>551,62=>551,63=>426,64=>867,65=>609,66=>621,67=>602,68=>684,69=>527,70=>492,71=>691,72=>703,73=>340,74=>270,75=>578,76=>492,77=>871,78=>730,79=>742,80=>578,81=>742,82=>590,83=>520,84=>520,85=>699,86=>566,87=>883,88=>547,89=>527,90=>539,91=>305,92=>375,93=>305,94=>531,95=>410,96=>578,97=>531,98=>586,99=>465,100=>586,101=>535,102=>328,103=>520,104=>590,105=>258,106=>258,107=>496,108=>258,109=>895,110=>590,111=>578,112=>586,113=>586,114=>398,115=>453,116=>340,117=>590,118=>480,119=>746,120=>500,121=>488,122=>441,123=>355,124=>551,125=>355,126=>551,160=>262,161=>270,164=>551,167=>484,168=>578,170=>332,173=>320,174=>832,175=>410,176=>430,177=>551,178=>332,179=>332,180=>578,182=>656,183=>270,184=>207,185=>332,186=>352,188=>738,189=>738,190=>738,191=>426,198=>852,208=>684,215=>551,216=>742,222=>578,223=>602,224=>531,225=>531,230=>832,232=>535,233=>535,234=>535,236=>258,237=>258,240=>578,242=>578,243=>578,247=>551,248=>578,249=>590,250=>590,252=>590,254=>586,257=>531,273=>586,275=>535,283=>535,294=>703,295=>590,299=>258,305=>258,306=>609,307=>520,312=>496,319=>492,320=>301,321=>492,322=>258,329=>660,330=>730,331=>590,333=>578,338=>891,339=>910,358=>520,359=>340,363=>590,462=>531,464=>258,466=>578,468=>590,470=>590,472=>590,474=>590,476=>590,711=>578,713=>559,714=>578,715=>578,717=>559,720=>262,728=>578,729=>258,730=>578,731=>184,733=>578,913=>609,914=>621,915=>492,916=>566,917=>527,918=>539,919=>703,920=>742,921=>340,922=>578,923=>566,924=>871,925=>730,926=>531,927=>742,928=>691,929=>578,931=>531,932=>520,933=>527,934=>766,935=>547,936=>766,937=>742,945=>586,946=>602,947=>488,948=>578,949=>453,950=>453,951=>590,952=>566,953=>328,954=>496,955=>512,956=>594,957=>516,958=>445,959=>578,960=>629,961=>578,963=>590,964=>449,965=>590,966=>699,967=>523,968=>738,969=>754,1025=>527,1040=>609,1041=>574,1042=>621,1043=>492,1044=>648,1045=>527,1046=>816,1047=>547,1048=>730,1049=>730,1050=>578,1051=>668,1052=>871,1053=>703,1054=>742,1055=>691,1056=>578,1057=>602,1058=>520,1059=>586,1060=>766,1061=>547,1062=>699,1063=>660,1064=>996,1065=>996,1066=>656,1067=>824,1068=>574,1069=>594,1070=>1016,1071=>590,1072=>531,1073=>570,1074=>566,1075=>398,1076=>547,1077=>535,1078=>719,1079=>461,1080=>613,1081=>613,1082=>492,1083=>547,1084=>719,1085=>613,1086=>578,1087=>594,1088=>586,1089=>465,1090=>441,1091=>488,1092=>695,1093=>500,1094=>602,1095=>586,1096=>867,1097=>879,1098=>680,1099=>750,1100=>566,1101=>461,1102=>809,1103=>531,1105=>535,8208=>320,8211=>500,8212=>1000,8213=>1000,8214=>512,8216=>176,8217=>176,8220=>363,8221=>363,8224=>484,8225=>496,8229=>535,8230=>805,8231=>270,8240=>1168,8242=>227,8243=>402,8245=>227,8251=>699,8308=>332,8319=>367,8321=>332,8322=>332,8323=>332,8324=>332,8364=>551,8451=>1000,8453=>1000,8457=>1000,8467=>1000,8470=>1000,8481=>1000,8482=>1000,8486=>742,8491=>1000,8531=>738,8532=>738,8539=>738,8540=>738,8541=>738,8542=>738,8544=>1000,8545=>1000,8546=>1000,8547=>1000,8548=>1000,8549=>1000,8550=>1000,8551=>1000,8552=>1000,8553=>1000,8554=>1000,8555=>1000,8560=>1000,8561=>1000,8562=>1000,8563=>1000,8564=>1000,8565=>1000,8566=>1000,8567=>1000,8568=>1000,8569=>1000,8592=>1000,8593=>500,8594=>1000,8595=>500,8596=>1000,8597=>500,8598=>1000,8599=>1000,8600=>1000,8601=>1000,8658=>1000,8660=>1000,8704=>1000,8706=>1000,8707=>1000,8711=>1000,8712=>1000,8715=>1000,8719=>1000,8721=>1000,8725=>1000,8730=>1000,8733=>1000,8734=>1000,8735=>1000,8736=>1000,8739=>500,8741=>500,8743=>1000,8744=>1000,8745=>1000,8746=>1000,8747=>500,8748=>1000,8750=>500,8756=>1000,8757=>1000,8758=>1000,8759=>1000,8764=>1000,8765=>1000,8776=>1000,8780=>1000,8786=>1000,8800=>551,8801=>1000,8804=>1000,8805=>1000,8806=>1000,8807=>1000,8810=>1000,8811=>1000,8814=>1000,8815=>1000,8834=>1000,8835=>1000,8838=>1000,8839=>1000,8853=>1000,8857=>1000,8869=>1000,8895=>1000,8978=>1000,9312=>1000,9313=>1000,9314=>1000,9315=>1000,9316=>1000,9317=>1000,9318=>1000,9319=>1000,9320=>1000,9321=>1000,9322=>1000,9323=>1000,9324=>1000,9325=>1000,9326=>1000,9327=>1000,9328=>1000,9329=>1000,9330=>1000,9331=>1000,9332=>1000,9333=>1000,9334=>1000,9335=>1000,9336=>1000,9337=>1000,9338=>1000,9339=>1000,9340=>1000,9341=>1000,9342=>1000,9343=>1000,9344=>1000,9345=>1000,9346=>1000,9347=>1000,9348=>1000,9349=>1000,9350=>1000,9351=>1000,9352=>1000,9353=>1000,9354=>1000,9355=>1000,9356=>1000,9357=>1000,9358=>1000,9359=>1000,9360=>1000,9361=>1000,9362=>1000,9363=>1000,9364=>1000,9365=>1000,9366=>1000,9367=>1000,9368=>1000,9369=>1000,9370=>1000,9371=>1000,9372=>1000,9373=>1000,9374=>1000,9375=>1000,9376=>1000,9377=>1000,9378=>1000,9379=>1000,9380=>1000,9381=>1000,9382=>1000,9383=>1000,9384=>1000,9385=>1000,9386=>1000,9387=>1000,9388=>1000,9389=>1000,9390=>1000,9391=>1000,9392=>1000,9393=>1000,9394=>1000,9395=>1000,9396=>1000,9397=>1000,9424=>1000,9425=>1000,9426=>1000,9427=>1000,9428=>1000,9429=>1000,9430=>1000,9431=>1000,9432=>1000,9433=>1000,9434=>1000,9435=>1000,9436=>1000,9437=>1000,9438=>1000,9439=>1000,9440=>1000,9441=>1000,9442=>1000,9443=>1000,9444=>1000,9445=>1000,9446=>1000,9447=>1000,9448=>1000,9449=>1000,9472=>602,9473=>602,9474=>602,9475=>602,9476=>602,9477=>602,9478=>602,9479=>602,9480=>602,9481=>602,9482=>602,9483=>602,9484=>602,9485=>602,9486=>602,9487=>602,9488=>602,9489=>602,9490=>602,9491=>602,9492=>602,9493=>602,9494=>602,9495=>602,9496=>602,9497=>602,9498=>602,9499=>602,9500=>602,9501=>602,9502=>602,9503=>602,9504=>602,9505=>602,9506=>602,9507=>602,9508=>602,9509=>602,9510=>602,9511=>602,9512=>602,9513=>602,9514=>602,9515=>602,9516=>602,9517=>602,9518=>602,9519=>602,9520=>602,9521=>602,9522=>602,9523=>602,9524=>602,9525=>602,9526=>602,9527=>602,9528=>602,9529=>602,9530=>602,9531=>602,9532=>602,9533=>602,9534=>602,9535=>602,9536=>602,9537=>602,9538=>602,9539=>602,9540=>602,9541=>602,9542=>602,9543=>602,9544=>602,9545=>602,9546=>602,9547=>602,9552=>602,9553=>602,9554=>602,9555=>602,9556=>602,9557=>602,9558=>602,9559=>602,9560=>602,9561=>602,9562=>602,9563=>602,9564=>602,9565=>602,9566=>602,9567=>602,9568=>602,9569=>602,9570=>602,9571=>602,9572=>602,9573=>602,9574=>602,9575=>602,9576=>602,9577=>602,9578=>602,9579=>602,9580=>602,9581=>602,9582=>602,9583=>602,9584=>602,9585=>602,9586=>602,9587=>602,9588=>602,9601=>602,9602=>602,9603=>602,9604=>602,9605=>602,9606=>602,9607=>602,9608=>602,9609=>602,9610=>602,9611=>602,9612=>602,9613=>602,9614=>602,9615=>602,9618=>602,9619=>602,9620=>602,9621=>602,9632=>602,9633=>602,9635=>602,9636=>602,9637=>602,9638=>602,9639=>602,9640=>602,9641=>602,9650=>602,9651=>602,9654=>602,9655=>602,9660=>602,9661=>602,9664=>602,9665=>602,9670=>602,9671=>602,9672=>602,9675=>602,9678=>602,9679=>602,9680=>602,9681=>602,9698=>602,9699=>602,9700=>602,9701=>602,9711=>602,9733=>1000,9734=>1000,9742=>1000,9743=>1000,9756=>938,9758=>938,9792=>1000,9794=>1000,9824=>1000,9825=>1000,9827=>1000,9828=>1000,9829=>1000,9831=>1000,9832=>1000,9833=>1000,9834=>1000,9836=>1000,9837=>1000,9839=>1000,12288=>1000,12289=>1000,12290=>1000,12291=>1000,12293=>1000,12294=>1000,12295=>1000,12296=>1000,12297=>1000,12298=>1000,12299=>1000,12300=>1000,12301=>1000,12302=>1000,12303=>1000,12304=>1000,12305=>1000,12306=>1000,12307=>1000,12308=>1000,12309=>1000,12310=>1000,12311=>1000,12317=>1000,12318=>1000,12319=>1000,12321=>1000,12322=>1000,12323=>1000,12324=>1000,12325=>1000,12326=>1000,12327=>1000,12328=>1000,12329=>1000,12353=>1000,12354=>1000,12355=>1000,12356=>1000,12357=>1000,12358=>1000,12359=>1000,12360=>1000,12361=>1000,12362=>1000,12363=>1000,12364=>1000,12365=>1000,12366=>1000,12367=>1000,12368=>1000,12369=>1000,12370=>1000,12371=>1000,12372=>1000,12373=>1000,12374=>1000,12375=>1000,12376=>1000,12377=>1000,12378=>1000,12379=>1000,12380=>1000,12381=>1000,12382=>1000,12383=>1000,12384=>1000,12385=>1000,12386=>1000,12387=>1000,12388=>1000,12389=>1000,12390=>1000,12391=>1000,12392=>1000,12393=>1000,12394=>1000,12395=>1000,12396=>1000,12397=>1000,12398=>1000,12399=>1000,12400=>1000,12401=>1000,12402=>1000,12403=>1000,12404=>1000,12405=>1000,12406=>1000,12407=>1000,12408=>1000,12409=>1000,12410=>1000,12411=>1000,12412=>1000,12413=>1000,12414=>1000,12415=>1000,12416=>1000,12417=>1000,12418=>1000,12419=>1000,12420=>1000,12421=>1000,12422=>1000,12423=>1000,12424=>1000,12425=>1000,12426=>1000,12427=>1000,12428=>1000,12429=>1000,12430=>1000,12431=>1000,12432=>1000,12433=>1000,12434=>1000,12435=>1000,12443=>1000,12444=>1000,12445=>1000,12446=>1000,12449=>1000,12450=>1000,12451=>1000,12452=>1000,12453=>1000,12454=>1000,12455=>1000,12456=>1000,12457=>1000,12458=>1000,12459=>1000,12460=>1000,12461=>1000,12462=>1000,12463=>1000,12464=>1000,12465=>1000,12466=>1000,12467=>1000,12468=>1000,12469=>1000,12470=>1000,12471=>1000,12472=>1000,12473=>1000,12474=>1000,12475=>1000,12476=>1000,12477=>1000,12478=>1000,12479=>1000,12480=>1000,12481=>1000,12482=>1000,12483=>1000,12484=>1000,12485=>1000,12486=>1000,12487=>1000,12488=>1000,12489=>1000,12490=>1000,12491=>1000,12492=>1000,12493=>1000,12494=>1000,12495=>1000,12496=>1000,12497=>1000,12498=>1000,12499=>1000,12500=>1000,12501=>1000,12502=>1000,12503=>1000,12504=>1000,12505=>1000,12506=>1000,12507=>1000,12508=>1000,12509=>1000,12510=>1000,12511=>1000,12512=>1000,12513=>1000,12514=>1000,12515=>1000,12516=>1000,12517=>1000,12518=>1000,12519=>1000,12520=>1000,12521=>1000,12522=>1000,12523=>1000,12524=>1000,12525=>1000,12526=>1000,12527=>1000,12528=>1000,12529=>1000,12530=>1000,12531=>1000,12532=>1000,12533=>1000,12534=>1000,12539=>1000,12540=>1000,12541=>1000,12542=>1000,12549=>1000,12550=>1000,12551=>1000,12552=>1000,12553=>1000,12554=>1000,12555=>1000,12556=>1000,12557=>1000,12558=>1000,12559=>1000,12560=>1000,12561=>1000,12562=>1000,12563=>1000,12564=>1000,12565=>1000,12566=>1000,12567=>1000,12568=>1000,12569=>1000,12570=>1000,12571=>1000,12572=>1000,12573=>1000,12574=>1000,12575=>1000,12576=>1000,12577=>1000,12578=>1000,12579=>1000,12580=>1000,12581=>1000,12582=>1000,12583=>1000,12584=>1000,12585=>1000,12593=>1000,12594=>1000,12595=>1000,12596=>1000,12597=>1000,12598=>1000,12599=>1000,12600=>1000,12601=>1000,12602=>1000,12603=>1000,12604=>1000,12605=>1000,12606=>1000,12607=>1000,12608=>1000,12609=>1000,12610=>1000,12611=>1000,12612=>1000,12613=>1000,12614=>1000,12615=>1000,12616=>1000,12617=>1000,12618=>1000,12619=>1000,12620=>1000,12621=>1000,12622=>1000,12623=>1000,12624=>1000,12625=>1000,12626=>1000,12627=>1000,12628=>1000,12629=>1000,12630=>1000,12631=>1000,12632=>1000,12633=>1000,12634=>1000,12635=>1000,12636=>1000,12637=>1000,12638=>1000,12639=>1000,12640=>1000,12641=>1000,12642=>1000,12643=>1000,12644=>1000,12645=>1000,12646=>1000,12647=>1000,12648=>1000,12649=>1000,12650=>1000,12651=>1000,12652=>1000,12653=>1000,12654=>1000,12655=>1000,12656=>1000,12657=>1000,12658=>1000,12659=>1000,12660=>1000,12661=>1000,12662=>1000,12663=>1000,12664=>1000,12665=>1000,12666=>1000,12667=>1000,12668=>1000,12669=>1000,12670=>1000,12671=>1000,12672=>1000,12673=>1000,12674=>1000,12675=>1000,12676=>1000,12677=>1000,12678=>1000,12679=>1000,12680=>1000,12681=>1000,12682=>1000,12683=>1000,12684=>1000,12685=>1000,12686=>1000,12800=>1000,12801=>1000,12802=>1000,12803=>1000,12804=>1000,12805=>1000,12806=>1000,12807=>1000,12808=>1000,12809=>1000,12810=>1000,12811=>1000,12812=>1000,12813=>1000,12814=>1000,12815=>1000,12816=>1000,12817=>1000,12818=>1000,12819=>1000,12820=>1000,12821=>1000,12822=>1000,12823=>1000,12824=>1000,12825=>1000,12826=>1000,12827=>1000,12828=>1000,12832=>1000,12833=>1000,12834=>1000,12835=>1000,12836=>1000,12837=>1000,12838=>1000,12839=>1000,12840=>1000,12841=>1000,12849=>1000,12850=>1000,12857=>1000,12896=>1000,12897=>1000,12898=>1000,12899=>1000,12900=>1000,12901=>1000,12902=>1000,12903=>1000,12904=>1000,12905=>1000,12906=>1000,12907=>1000,12908=>1000,12909=>1000,12910=>1000,12911=>1000,12912=>1000,12913=>1000,12914=>1000,12915=>1000,12916=>1000,12917=>1000,12918=>1000,12919=>1000,12920=>1000,12921=>1000,12922=>1000,12923=>1000,12927=>1000,12963=>1000,12964=>1000,12965=>1000,12966=>1000,12967=>1000,12968=>1000,13059=>1000,13069=>1000,13076=>1000,13080=>1000,13090=>1000,13091=>1000,13094=>1000,13095=>1000,13099=>1000,13110=>1000,13115=>1000,13129=>1000,13130=>1000,13133=>1000,13137=>1000,13143=>1000,13179=>1000,13180=>1000,13181=>1000,13182=>1000,13184=>1000,13185=>1000,13186=>1000,13187=>1000,13188=>1000,13192=>1000,13193=>1000,13194=>1000,13195=>1000,13196=>1000,13197=>1000,13198=>1000,13199=>1000,13200=>1000,13201=>1000,13202=>1000,13203=>1000,13204=>1000,13205=>1000,13206=>1000,13207=>1000,13208=>1000,13209=>1000,13210=>1000,13211=>1000,13212=>1000,13213=>1000,13214=>1000,13215=>1000,13216=>1000,13217=>1000,13218=>1000,13219=>1000,13220=>1000,13221=>1000,13222=>1000,13223=>1000,13224=>1000,13225=>1000,13226=>1000,13227=>1000,13228=>1000,13229=>1000,13230=>1000,13231=>1000,13232=>1000,13233=>1000,13234=>1000,13235=>1000,13236=>1000,13237=>1000,13238=>1000,13239=>1000,13240=>1000,13241=>1000,13242=>1000,13243=>1000,13244=>1000,13245=>1000,13246=>1000,13247=>1000,13248=>1000,13249=>1000,13250=>1000,13251=>1000,13252=>1000,13253=>1000,13254=>1000,13255=>1000,13256=>1000,13257=>1000,13258=>1000,13261=>1000,13262=>1000,13263=>1000,13264=>1000,13265=>1000,13266=>1000,13267=>1000,13269=>1000,13270=>1000,13272=>1000,13275=>1000,13276=>1000,13277=>1000,19968=>1000,19969=>1000,19971=>1000,19975=>1000,19976=>1000,19977=>1000,19978=>1000,19979=>1000,19980=>1000,19981=>1000,19982=>1000,19983=>1000,19984=>1000,19985=>1000,19987=>1000,19988=>1000,19989=>1000,19990=>1000,19991=>1000,19992=>1000,19993=>1000,19994=>1000,19995=>1000,19996=>1000,19997=>1000,19998=>1000,19999=>1000,20001=>1000,20002=>1000,20004=>1000,20005=>1000,20006=>1000,20007=>1000,20008=>1000,20010=>1000,20011=>1000,20012=>1000,20013=>1000,20014=>1000,20016=>1000,20017=>1000,20018=>1000,20019=>1000,20020=>1000,20022=>1000,20024=>1000,20025=>1000,20026=>1000,20027=>1000,20028=>1000,20029=>1000,20030=>1000,20031=>1000,20034=>1000,20035=>1000,20037=>1000,20039=>1000,20040=>1000,20041=>1000,20043=>1000,20044=>1000,20045=>1000,20046=>1000,20047=>1000,20048=>1000,20050=>1000,20051=>1000,20052=>1000,20053=>1000,20054=>1000,20055=>1000,20056=>1000,20057=>1000,20060=>1000,20061=>1000,20062=>1000,20063=>1000,20064=>1000,20065=>1000,20066=>1000,20070=>1000,20073=>1000,20075=>1000,20077=>1000,20080=>1000,20081=>1000,20083=>1000,20086=>1000,20087=>1000,20094=>1000,20095=>1000,20096=>1000,20098=>1000,20099=>1000,20100=>1000,20101=>1000,20102=>1000,20104=>1000,20105=>1000,20106=>1000,20107=>1000,20108=>1000,20109=>1000,20110=>1000,20111=>1000,20112=>1000,20113=>1000,20114=>1000,20115=>1000,20116=>1000,20117=>1000,20120=>1000,20121=>1000,20122=>1000,20123=>1000,20124=>1000,20126=>1000,20127=>1000,20128=>1000,20129=>1000,20130=>1000,20132=>1000,20133=>1000,20134=>1000,20135=>1000,20136=>1000,20137=>1000,20139=>1000,20140=>1000,20141=>1000,20142=>1000,20144=>1000,20146=>1000,20147=>1000,20149=>1000,20150=>1000,20153=>1000,20154=>1000,20155=>1000,20159=>1000,20160=>1000,20161=>1000,20162=>1000,20163=>1000,20164=>1000,20165=>1000,20166=>1000,20167=>1000,20168=>1000,20169=>1000,20170=>1000,20171=>1000,20173=>1000,20174=>1000,20175=>1000,20177=>1000,20179=>1000,20180=>1000,20181=>1000,20182=>1000,20183=>1000,20184=>1000,20185=>1000,20186=>1000,20188=>1000,20189=>1000,20190=>1000,20191=>1000,20193=>1000,20195=>1000,20196=>1000,20197=>1000,20200=>1000,20201=>1000,20202=>1000,20203=>1000,20204=>1000,20205=>1000,20206=>1000,20208=>1000,20209=>1000,20210=>1000,20211=>1000,20212=>1000,20213=>1000,20214=>1000,20215=>1000,20219=>1000,20220=>1000,20221=>1000,20223=>1000,20224=>1000,20225=>1000,20226=>1000,20227=>1000,20228=>1000,20229=>1000,20232=>1000,20233=>1000,20234=>1000,20235=>1000,20237=>1000,20238=>1000,20239=>1000,20240=>1000,20241=>1000,20242=>1000,20243=>1000,20244=>1000,20245=>1000,20247=>1000,20248=>1000,20249=>1000,20250=>1000,20251=>1000,20252=>1000,20253=>1000,20254=>1000,20255=>1000,20256=>1000,20258=>1000,20260=>1000,20261=>1000,20262=>1000,20263=>1000,20266=>1000,20267=>1000,20268=>1000,20269=>1000,20271=>1000,20272=>1000,20274=>1000,20275=>1000,20276=>1000,20278=>1000,20280=>1000,20281=>1000,20282=>1000,20283=>1000,20284=>1000,20285=>1000,20286=>1000,20287=>1000,20289=>1000,20291=>1000,20294=>1000,20295=>1000,20296=>1000,20297=>1000,20300=>1000,20301=>1000,20302=>1000,20303=>1000,20304=>1000,20305=>1000,20306=>1000,20307=>1000,20308=>1000,20309=>1000,20310=>1000,20311=>1000,20312=>1000,20313=>1000,20314=>1000,20315=>1000,20316=>1000,20317=>1000,20318=>1000,20319=>1000,20320=>1000,20321=>1000,20322=>1000,20323=>1000,20324=>1000,20325=>1000,20327=>1000,20329=>1000,20330=>1000,20331=>1000,20332=>1000,20334=>1000,20335=>1000,20336=>1000,20339=>1000,20340=>1000,20341=>1000,20342=>1000,20343=>1000,20344=>1000,20345=>1000,20346=>1000,20347=>1000,20348=>1000,20349=>1000,20350=>1000,20351=>1000,20352=>1000,20353=>1000,20354=>1000,20355=>1000,20356=>1000,20357=>1000,20358=>1000,20359=>1000,20360=>1000,20361=>1000,20362=>1000,20363=>1000,20365=>1000,20367=>1000,20368=>1000,20369=>1000,20370=>1000,20372=>1000,20373=>1000,20374=>1000,20375=>1000,20376=>1000,20378=>1000,20379=>1000,20380=>1000,20381=>1000,20382=>1000,20384=>1000,20385=>1000,20387=>1000,20389=>1000,20390=>1000,20391=>1000,20392=>1000,20393=>1000,20394=>1000,20395=>1000,20396=>1000,20397=>1000,20398=>1000,20399=>1000,20402=>1000,20403=>1000,20405=>1000,20406=>1000,20407=>1000,20409=>1000,20410=>1000,20411=>1000,20415=>1000,20416=>1000,20417=>1000,20418=>1000,20419=>1000,20420=>1000,20421=>1000,20423=>1000,20425=>1000,20426=>1000,20427=>1000,20429=>1000,20430=>1000,20431=>1000,20432=>1000,20433=>1000,20435=>1000,20436=>1000,20438=>1000,20439=>1000,20440=>1000,20441=>1000,20442=>1000,20443=>1000,20444=>1000,20445=>1000,20446=>1000,20447=>1000,20448=>1000,20449=>1000,20451=>1000,20452=>1000,20453=>1000,20454=>1000,20456=>1000,20457=>1000,20458=>1000,20460=>1000,20461=>1000,20462=>1000,20463=>1000,20465=>1000,20467=>1000,20468=>1000,20469=>1000,20470=>1000,20471=>1000,20472=>1000,20474=>1000,20478=>1000,20479=>1000,20480=>1000,20482=>1000,20485=>1000,20486=>1000,20487=>1000,20489=>1000,20491=>1000,20492=>1000,20493=>1000,20494=>1000,20495=>1000,20497=>1000,20498=>1000,20499=>1000,20500=>1000,20501=>1000,20502=>1000,20503=>1000,20504=>1000,20505=>1000,20506=>1000,20507=>1000,20508=>1000,20510=>1000,20511=>1000,20512=>1000,20513=>1000,20514=>1000,20515=>1000,20516=>1000,20517=>1000,20518=>1000,20519=>1000,20520=>1000,20521=>1000,20522=>1000,20523=>1000,20524=>1000,20525=>1000,20526=>1000,20527=>1000,20528=>1000,20529=>1000,20531=>1000,20533=>1000,20534=>1000,20535=>1000,20537=>1000,20538=>1000,20539=>1000,20540=>1000,20542=>1000,20544=>1000,20545=>1000,20546=>1000,20547=>1000,20549=>1000,20550=>1000,20551=>1000,20552=>1000,20553=>1000,20554=>1000,20555=>1000,20556=>1000,20557=>1000,20558=>1000,20559=>1000,20560=>1000,20561=>1000,20563=>1000,20565=>1000,20566=>1000,20567=>1000,20570=>1000,20571=>1000,20572=>1000,20573=>1000,20574=>1000,20575=>1000,20576=>1000,20577=>1000,20578=>1000,20579=>1000,20580=>1000,20581=>1000,20584=>1000,20585=>1000,20586=>1000,20587=>1000,20588=>1000,20589=>1000,20590=>1000,20591=>1000,20592=>1000,20594=>1000,20595=>1000,20596=>1000,20597=>1000,20598=>1000,20599=>1000,20600=>1000,20602=>1000,20603=>1000,20605=>1000,20606=>1000,20607=>1000,20608=>1000,20610=>1000,20611=>1000,20613=>1000,20615=>1000,20616=>1000,20619=>1000,20620=>1000,20621=>1000,20622=>1000,20625=>1000,20626=>1000,20628=>1000,20629=>1000,20630=>1000,20632=>1000,20633=>1000,20634=>1000,20635=>1000,20636=>1000,20637=>1000,20638=>1000,20642=>1000,20643=>1000,20645=>1000,20647=>1000,20648=>1000,20649=>1000,20652=>1000,20653=>1000,20654=>1000,20655=>1000,20656=>1000,20657=>1000,20658=>1000,20659=>1000,20660=>1000,20661=>1000,20662=>1000,20663=>1000,20664=>1000,20666=>1000,20667=>1000,20669=>1000,20670=>1000,20671=>1000,20673=>1000,20674=>1000,20676=>1000,20677=>1000,20678=>1000,20679=>1000,20680=>1000,20681=>1000,20682=>1000,20683=>1000,20685=>1000,20686=>1000,20687=>1000,20689=>1000,20691=>1000,20692=>1000,20693=>1000,20694=>1000,20695=>1000,20696=>1000,20698=>1000,20699=>1000,20701=>1000,20702=>1000,20704=>1000,20707=>1000,20708=>1000,20709=>1000,20710=>1000,20711=>1000,20712=>1000,20713=>1000,20714=>1000,20716=>1000,20717=>1000,20718=>1000,20719=>1000,20720=>1000,20721=>1000,20723=>1000,20724=>1000,20725=>1000,20726=>1000,20728=>1000,20729=>1000,20731=>1000,20733=>1000,20734=>1000,20735=>1000,20736=>1000,20737=>1000,20738=>1000,20739=>1000,20740=>1000,20741=>1000,20742=>1000,20743=>1000,20744=>1000,20745=>1000,20746=>1000,20747=>1000,20748=>1000,20752=>1000,20753=>1000,20754=>1000,20755=>1000,20756=>1000,20757=>1000,20758=>1000,20759=>1000,20760=>1000,20762=>1000,20764=>1000,20767=>1000,20768=>1000,20769=>1000,20770=>1000,20772=>1000,20773=>1000,20774=>1000,20777=>1000,20778=>1000,20781=>1000,20782=>1000,20784=>1000,20785=>1000,20786=>1000,20787=>1000,20788=>1000,20789=>1000,20791=>1000,20792=>1000,20793=>1000,20794=>1000,20795=>1000,20796=>1000,20797=>1000,20799=>1000,20800=>1000,20801=>1000,20803=>1000,20804=>1000,20805=>1000,20806=>1000,20807=>1000,20808=>1000,20809=>1000,20810=>1000,20811=>1000,20812=>1000,20813=>1000,20814=>1000,20816=>1000,20817=>1000,20818=>1000,20820=>1000,20821=>1000,20822=>1000,20823=>1000,20825=>1000,20826=>1000,20827=>1000,20828=>1000,20829=>1000,20830=>1000,20831=>1000,20833=>1000,20834=>1000,20835=>1000,20836=>1000,20837=>1000,20839=>1000,20840=>1000,20841=>1000,20842=>1000,20843=>1000,20844=>1000,20845=>1000,20846=>1000,20848=>1000,20849=>1000,20851=>1000,20852=>1000,20853=>1000,20854=>1000,20855=>1000,20856=>1000,20857=>1000,20859=>1000,20860=>1000,20861=>1000,20864=>1000,20865=>1000,20866=>1000,20869=>1000,20870=>1000,20871=>1000,20872=>1000,20873=>1000,20874=>1000,20876=>1000,20877=>1000,20879=>1000,20880=>1000,20881=>1000,20882=>1000,20883=>1000,20884=>1000,20885=>1000,20886=>1000,20887=>1000,20888=>1000,20889=>1000,20891=>1000,20892=>1000,20893=>1000,20894=>1000,20896=>1000,20898=>1000,20900=>1000,20901=>1000,20902=>1000,20904=>1000,20905=>1000,20906=>1000,20907=>1000,20908=>1000,20911=>1000,20912=>1000,20913=>1000,20914=>1000,20915=>1000,20916=>1000,20917=>1000,20918=>1000,20919=>1000,20921=>1000,20923=>1000,20924=>1000,20925=>1000,20926=>1000,20928=>1000,20932=>1000,20933=>1000,20934=>1000,20935=>1000,20936=>1000,20937=>1000,20938=>1000,20939=>1000,20940=>1000,20941=>1000,20942=>1000,20943=>1000,20944=>1000,20945=>1000,20948=>1000,20950=>1000,20951=>1000,20952=>1000,20955=>1000,20956=>1000,20957=>1000,20958=>1000,20960=>1000,20961=>1000,20964=>1000,20966=>1000,20967=>1000,20969=>1000,20970=>1000,20971=>1000,20972=>1000,20973=>1000,20975=>1000,20976=>1000,20977=>1000,20979=>1000,20981=>1000,20982=>1000,20984=>1000,20985=>1000,20986=>1000,20987=>1000,20988=>1000,20989=>1000,20990=>1000,20991=>1000,20992=>1000,20993=>1000,20994=>1000,20995=>1000,20996=>1000,20998=>1000,20999=>1000,21000=>1000,21001=>1000,21002=>1000,21003=>1000,21004=>1000,21005=>1000,21006=>1000,21008=>1000,21009=>1000,21010=>1000,21011=>1000,21012=>1000,21013=>1000,21014=>1000,21015=>1000,21016=>1000,21017=>1000,21018=>1000,21019=>1000,21020=>1000,21021=>1000,21022=>1000,21024=>1000,21025=>1000,21028=>1000,21029=>1000,21031=>1000,21032=>1000,21033=>1000,21034=>1000,21035=>1000,21037=>1000,21038=>1000,21040=>1000,21041=>1000,21042=>1000,21043=>1000,21045=>1000,21046=>1000,21047=>1000,21048=>1000,21049=>1000,21050=>1000,21051=>1000,21053=>1000,21055=>1000,21056=>1000,21057=>1000,21058=>1000,21059=>1000,21060=>1000,21062=>1000,21063=>1000,21065=>1000,21066=>1000,21067=>1000,21068=>1000,21069=>1000,21070=>1000,21071=>1000,21072=>1000,21073=>1000,21074=>1000,21076=>1000,21077=>1000,21078=>1000,21082=>1000,21083=>1000,21084=>1000,21085=>1000,21086=>1000,21087=>1000,21089=>1000,21090=>1000,21091=>1000,21092=>1000,21093=>1000,21095=>1000,21097=>1000,21098=>1000,21099=>1000,21100=>1000,21101=>1000,21102=>1000,21103=>1000,21104=>1000,21105=>1000,21106=>1000,21107=>1000,21108=>1000,21109=>1000,21111=>1000,21112=>1000,21114=>1000,21115=>1000,21116=>1000,21117=>1000,21119=>1000,21120=>1000,21121=>1000,21122=>1000,21123=>1000,21124=>1000,21127=>1000,21128=>1000,21129=>1000,21130=>1000,21131=>1000,21132=>1000,21133=>1000,21136=>1000,21137=>1000,21138=>1000,21139=>1000,21140=>1000,21142=>1000,21143=>1000,21144=>1000,21145=>1000,21147=>1000,21148=>1000,21149=>1000,21150=>1000,21151=>1000,21152=>1000,21153=>1000,21154=>1000,21155=>1000,21156=>1000,21158=>1000,21160=>1000,21161=>1000,21162=>1000,21163=>1000,21164=>1000,21165=>1000,21166=>1000,21167=>1000,21169=>1000,21170=>1000,21171=>1000,21172=>1000,21173=>1000,21177=>1000,21179=>1000,21180=>1000,21182=>1000,21183=>1000,21184=>1000,21185=>1000,21186=>1000,21187=>1000,21189=>1000,21191=>1000,21193=>1000,21195=>1000,21197=>1000,21200=>1000,21202=>1000,21203=>1000,21205=>1000,21206=>1000,21207=>1000,21208=>1000,21209=>1000,21211=>1000,21213=>1000,21214=>1000,21215=>1000,21216=>1000,21218=>1000,21219=>1000,21220=>1000,21222=>1000,21223=>1000,21225=>1000,21227=>1000,21231=>1000,21232=>1000,21233=>1000,21234=>1000,21235=>1000,21236=>1000,21237=>1000,21239=>1000,21240=>1000,21241=>1000,21242=>1000,21243=>1000,21244=>1000,21246=>1000,21247=>1000,21248=>1000,21249=>1000,21250=>1000,21253=>1000,21254=>1000,21255=>1000,21256=>1000,21257=>1000,21258=>1000,21259=>1000,21261=>1000,21262=>1000,21263=>1000,21264=>1000,21265=>1000,21266=>1000,21269=>1000,21270=>1000,21271=>1000,21273=>1000,21274=>1000,21276=>1000,21277=>1000,21279=>1000,21280=>1000,21281=>1000,21282=>1000,21283=>1000,21284=>1000,21286=>1000,21290=>1000,21293=>1000,21294=>1000,21295=>1000,21296=>1000,21297=>1000,21299=>1000,21300=>1000,21303=>1000,21304=>1000,21305=>1000,21306=>1000,21307=>1000,21308=>1000,21309=>1000,21310=>1000,21311=>1000,21312=>1000,21313=>1000,21315=>1000,21316=>1000,21317=>1000,21318=>1000,21319=>1000,21320=>1000,21321=>1000,21322=>1000,21324=>1000,21325=>1000,21326=>1000,21327=>1000,21329=>1000,21330=>1000,21331=>1000,21332=>1000,21333=>1000,21334=>1000,21335=>1000,21336=>1000,21338=>1000,21340=>1000,21342=>1000,21343=>1000,21344=>1000,21345=>1000,21346=>1000,21347=>1000,21348=>1000,21350=>1000,21351=>1000,21352=>1000,21353=>1000,21355=>1000,21356=>1000,21358=>1000,21359=>1000,21360=>1000,21361=>1000,21362=>1000,21363=>1000,21364=>1000,21365=>1000,21367=>1000,21368=>1000,21369=>1000,21370=>1000,21371=>1000,21372=>1000,21373=>1000,21375=>1000,21378=>1000,21380=>1000,21381=>1000,21382=>1000,21385=>1000,21386=>1000,21387=>1000,21388=>1000,21389=>1000,21390=>1000,21391=>1000,21394=>1000,21395=>1000,21396=>1000,21397=>1000,21398=>1000,21399=>1000,21400=>1000,21401=>1000,21402=>1000,21404=>1000,21405=>1000,21406=>1000,21407=>1000,21408=>1000,21410=>1000,21411=>1000,21412=>1000,21413=>1000,21414=>1000,21415=>1000,21416=>1000,21417=>1000,21420=>1000,21421=>1000,21422=>1000,21424=>1000,21426=>1000,21427=>1000,21428=>1000,21430=>1000,21433=>1000,21435=>1000,21439=>1000,21441=>1000,21442=>1000,21443=>1000,21448=>1000,21449=>1000,21450=>1000,21451=>1000,21452=>1000,21453=>1000,21454=>1000,21457=>1000,21460=>1000,21462=>1000,21463=>1000,21464=>1000,21465=>1000,21467=>1000,21469=>1000,21471=>1000,21472=>1000,21473=>1000,21474=>1000,21475=>1000,21476=>1000,21477=>1000,21478=>1000,21480=>1000,21481=>1000,21482=>1000,21483=>1000,21484=>1000,21485=>1000,21486=>1000,21487=>1000,21488=>1000,21489=>1000,21490=>1000,21491=>1000,21493=>1000,21494=>1000,21495=>1000,21496=>1000,21497=>1000,21498=>1000,21499=>1000,21500=>1000,21501=>1000,21505=>1000,21507=>1000,21508=>1000,21510=>1000,21511=>1000,21512=>1000,21513=>1000,21514=>1000,21515=>1000,21516=>1000,21517=>1000,21518=>1000,21519=>1000,21520=>1000,21521=>1000,21522=>1000,21523=>1000,21525=>1000,21526=>1000,21527=>1000,21528=>1000,21529=>1000,21531=>1000,21532=>1000,21533=>1000,21534=>1000,21535=>1000,21536=>1000,21537=>1000,21539=>1000,21540=>1000,21541=>1000,21542=>1000,21543=>1000,21544=>1000,21545=>1000,21546=>1000,21547=>1000,21548=>1000,21549=>1000,21550=>1000,21551=>1000,21552=>1000,21553=>1000,21554=>1000,21555=>1000,21556=>1000,21557=>1000,21558=>1000,21559=>1000,21560=>1000,21561=>1000,21563=>1000,21564=>1000,21565=>1000,21566=>1000,21568=>1000,21569=>1000,21570=>1000,21571=>1000,21573=>1000,21574=>1000,21575=>1000,21576=>1000,21577=>1000,21578=>1000,21579=>1000,21582=>1000,21583=>1000,21584=>1000,21585=>1000,21586=>1000,21587=>1000,21588=>1000,21589=>1000,21590=>1000,21591=>1000,21592=>1000,21593=>1000,21595=>1000,21596=>1000,21599=>1000,21600=>1000,21601=>1000,21602=>1000,21603=>1000,21604=>1000,21605=>1000,21606=>1000,21607=>1000,21608=>1000,21610=>1000,21611=>1000,21612=>1000,21615=>1000,21616=>1000,21617=>1000,21618=>1000,21619=>1000,21620=>1000,21621=>1000,21622=>1000,21623=>1000,21624=>1000,21626=>1000,21627=>1000,21628=>1000,21629=>1000,21630=>1000,21631=>1000,21632=>1000,21633=>1000,21634=>1000,21636=>1000,21638=>1000,21639=>1000,21640=>1000,21642=>1000,21643=>1000,21644=>1000,21645=>1000,21646=>1000,21647=>1000,21648=>1000,21649=>1000,21650=>1000,21652=>1000,21653=>1000,21654=>1000,21656=>1000,21657=>1000,21658=>1000,21659=>1000,21660=>1000,21661=>1000,21664=>1000,21665=>1000,21666=>1000,21667=>1000,21668=>1000,21669=>1000,21670=>1000,21671=>1000,21672=>1000,21673=>1000,21674=>1000,21675=>1000,21676=>1000,21677=>1000,21678=>1000,21679=>1000,21680=>1000,21681=>1000,21682=>1000,21683=>1000,21684=>1000,21686=>1000,21687=>1000,21688=>1000,21690=>1000,21691=>1000,21692=>1000,21693=>1000,21694=>1000,21695=>1000,21696=>1000,21697=>1000,21698=>1000,21699=>1000,21700=>1000,21701=>1000,21702=>1000,21703=>1000,21704=>1000,21705=>1000,21708=>1000,21709=>1000,21710=>1000,21711=>1000,21712=>1000,21713=>1000,21714=>1000,21715=>1000,21716=>1000,21717=>1000,21718=>1000,21719=>1000,21720=>1000,21721=>1000,21722=>1000,21724=>1000,21725=>1000,21726=>1000,21727=>1000,21728=>1000,21729=>1000,21730=>1000,21732=>1000,21733=>1000,21734=>1000,21735=>1000,21736=>1000,21737=>1000,21738=>1000,21739=>1000,21741=>1000,21742=>1000,21745=>1000,21746=>1000,21747=>1000,21751=>1000,21752=>1000,21754=>1000,21755=>1000,21756=>1000,21757=>1000,21759=>1000,21761=>1000,21763=>1000,21764=>1000,21765=>1000,21766=>1000,21767=>1000,21768=>1000,21769=>1000,21770=>1000,21771=>1000,21772=>1000,21774=>1000,21775=>1000,21776=>1000,21777=>1000,21778=>1000,21780=>1000,21782=>1000,21783=>1000,21786=>1000,21787=>1000,21788=>1000,21792=>1000,21794=>1000,21795=>1000,21796=>1000,21798=>1000,21799=>1000,21802=>1000,21804=>1000,21805=>1000,21806=>1000,21807=>1000,21808=>1000,21809=>1000,21810=>1000,21811=>1000,21812=>1000,21813=>1000,21814=>1000,21815=>1000,21816=>1000,21817=>1000,21819=>1000,21820=>1000,21822=>1000,21823=>1000,21824=>1000,21825=>1000,21827=>1000,21828=>1000,21829=>1000,21830=>1000,21832=>1000,21833=>1000,21834=>1000,21835=>1000,21836=>1000,21837=>1000,21838=>1000,21839=>1000,21840=>1000,21841=>1000,21842=>1000,21843=>1000,21845=>1000,21846=>1000,21847=>1000,21852=>1000,21853=>1000,21854=>1000,21855=>1000,21857=>1000,21858=>1000,21859=>1000,21860=>1000,21861=>1000,21862=>1000,21863=>1000,21866=>1000,21868=>1000,21869=>1000,21870=>1000,21877=>1000,21878=>1000,21879=>1000,21880=>1000,21883=>1000,21884=>1000,21885=>1000,21886=>1000,21887=>1000,21888=>1000,21889=>1000,21890=>1000,21891=>1000,21892=>1000,21894=>1000,21895=>1000,21896=>1000,21897=>1000,21898=>1000,21899=>1000,21900=>1000,21901=>1000,21902=>1000,21903=>1000,21905=>1000,21906=>1000,21907=>1000,21908=>1000,21909=>1000,21912=>1000,21913=>1000,21914=>1000,21916=>1000,21917=>1000,21918=>1000,21919=>1000,21921=>1000,21922=>1000,21923=>1000,21924=>1000,21925=>1000,21926=>1000,21927=>1000,21928=>1000,21929=>1000,21930=>1000,21931=>1000,21932=>1000,21933=>1000,21934=>1000,21936=>1000,21937=>1000,21938=>1000,21939=>1000,21941=>1000,21942=>1000,21943=>1000,21945=>1000,21947=>1000,21949=>1000,21950=>1000,21951=>1000,21952=>1000,21954=>1000,21955=>1000,21956=>1000,21957=>1000,21958=>1000,21959=>1000,21960=>1000,21961=>1000,21962=>1000,21963=>1000,21964=>1000,21965=>1000,21966=>1000,21967=>1000,21968=>1000,21969=>1000,21970=>1000,21971=>1000,21972=>1000,21973=>1000,21974=>1000,21977=>1000,21978=>1000,21979=>1000,21980=>1000,21981=>1000,21983=>1000,21985=>1000,21986=>1000,21987=>1000,21988=>1000,21989=>1000,21990=>1000,21991=>1000,21992=>1000,21993=>1000,21994=>1000,21995=>1000,21996=>1000,21999=>1000,22002=>1000,22003=>1000,22005=>1000,22006=>1000,22007=>1000,22009=>1000,22010=>1000,22012=>1000,22013=>1000,22014=>1000,22015=>1000,22016=>1000,22017=>1000,22018=>1000,22020=>1000,22022=>1000,22024=>1000,22025=>1000,22028=>1000,22029=>1000,22030=>1000,22031=>1000,22032=>1000,22034=>1000,22035=>1000,22036=>1000,22037=>1000,22038=>1000,22039=>1000,22040=>1000,22043=>1000,22044=>1000,22045=>1000,22046=>1000,22047=>1000,22051=>1000,22052=>1000,22055=>1000,22057=>1000,22058=>1000,22060=>1000,22061=>1000,22062=>1000,22063=>1000,22064=>1000,22065=>1000,22066=>1000,22067=>1000,22068=>1000,22069=>1000,22070=>1000,22072=>1000,22073=>1000,22074=>1000,22075=>1000,22077=>1000,22078=>1000,22079=>1000,22080=>1000,22081=>1000,22082=>1000,22085=>1000,22086=>1000,22088=>1000,22089=>1000,22090=>1000,22092=>1000,22093=>1000,22094=>1000,22096=>1000,22099=>1000,22100=>1000,22103=>1000,22104=>1000,22105=>1000,22106=>1000,22107=>1000,22108=>1000,22110=>1000,22112=>1000,22114=>1000,22115=>1000,22116=>1000,22117=>1000,22118=>1000,22120=>1000,22121=>1000,22122=>1000,22123=>1000,22124=>1000,22125=>1000,22126=>1000,22127=>1000,22128=>1000,22129=>1000,22130=>1000,22131=>1000,22132=>1000,22134=>1000,22135=>1000,22136=>1000,22137=>1000,22138=>1000,22139=>1000,22140=>1000,22142=>1000,22143=>1000,22144=>1000,22145=>1000,22146=>1000,22147=>1000,22148=>1000,22149=>1000,22150=>1000,22151=>1000,22154=>1000,22156=>1000,22157=>1000,22158=>1000,22159=>1000,22160=>1000,22163=>1000,22164=>1000,22165=>1000,22167=>1000,22168=>1000,22169=>1000,22170=>1000,22172=>1000,22173=>1000,22176=>1000,22178=>1000,22179=>1000,22181=>1000,22182=>1000,22183=>1000,22184=>1000,22186=>1000,22187=>1000,22188=>1000,22189=>1000,22190=>1000,22191=>1000,22194=>1000,22195=>1000,22196=>1000,22197=>1000,22198=>1000,22199=>1000,22204=>1000,22205=>1000,22206=>1000,22208=>1000,22209=>1000,22210=>1000,22211=>1000,22213=>1000,22214=>1000,22216=>1000,22217=>1000,22218=>1000,22219=>1000,22220=>1000,22221=>1000,22222=>1000,22225=>1000,22227=>1000,22228=>1000,22231=>1000,22232=>1000,22234=>1000,22235=>1000,22237=>1000,22238=>1000,22239=>1000,22240=>1000,22241=>1000,22242=>1000,22243=>1000,22244=>1000,22245=>1000,22247=>1000,22250=>1000,22251=>1000,22253=>1000,22254=>1000,22256=>1000,22257=>1000,22258=>1000,22259=>1000,22260=>1000,22261=>1000,22263=>1000,22265=>1000,22266=>1000,22269=>1000,22270=>1000,22271=>1000,22272=>1000,22273=>1000,22274=>1000,22275=>1000,22276=>1000,22278=>1000,22279=>1000,22280=>1000,22281=>1000,22282=>1000,22283=>1000,22284=>1000,22285=>1000,22287=>1000,22290=>1000,22291=>1000,22292=>1000,22294=>1000,22296=>1000,22298=>1000,22299=>1000,22300=>1000,22302=>1000,22303=>1000,22304=>1000,22306=>1000,22307=>1000,22310=>1000,22311=>1000,22312=>1000,22313=>1000,22314=>1000,22316=>1000,22317=>1000,22318=>1000,22319=>1000,22320=>1000,22323=>1000,22324=>1000,22327=>1000,22328=>1000,22329=>1000,22330=>1000,22331=>1000,22334=>1000,22336=>1000,22337=>1000,22338=>1000,22341=>1000,22343=>1000,22345=>1000,22346=>1000,22347=>1000,22348=>1000,22349=>1000,22350=>1000,22351=>1000,22352=>1000,22353=>1000,22354=>1000,22359=>1000,22361=>1000,22362=>1000,22363=>1000,22364=>1000,22365=>1000,22366=>1000,22367=>1000,22368=>1000,22369=>1000,22370=>1000,22372=>1000,22373=>1000,22374=>1000,22376=>1000,22377=>1000,22378=>1000,22379=>1000,22381=>1000,22382=>1000,22383=>1000,22384=>1000,22385=>1000,22386=>1000,22387=>1000,22388=>1000,22389=>1000,22390=>1000,22391=>1000,22395=>1000,22396=>1000,22397=>1000,22399=>1000,22400=>1000,22402=>1000,22403=>1000,22404=>1000,22405=>1000,22406=>1000,22408=>1000,22409=>1000,22411=>1000,22412=>1000,22415=>1000,22418=>1000,22419=>1000,22420=>1000,22421=>1000,22423=>1000,22424=>1000,22425=>1000,22426=>1000,22427=>1000,22429=>1000,22430=>1000,22431=>1000,22432=>1000,22433=>1000,22434=>1000,22435=>1000,22436=>1000,22437=>1000,22438=>1000,22439=>1000,22441=>1000,22442=>1000,22443=>1000,22444=>1000,22445=>1000,22446=>1000,22448=>1000,22450=>1000,22451=>1000,22452=>1000,22453=>1000,22454=>1000,22456=>1000,22457=>1000,22458=>1000,22460=>1000,22461=>1000,22463=>1000,22464=>1000,22465=>1000,22466=>1000,22467=>1000,22470=>1000,22471=>1000,22472=>1000,22475=>1000,22476=>1000,22478=>1000,22479=>1000,22480=>1000,22482=>1000,22483=>1000,22484=>1000,22485=>1000,22486=>1000,22488=>1000,22489=>1000,22490=>1000,22492=>1000,22493=>1000,22495=>1000,22496=>1000,22497=>1000,22498=>1000,22499=>1000,22500=>1000,22501=>1000,22503=>1000,22505=>1000,22508=>1000,22509=>1000,22510=>1000,22511=>1000,22512=>1000,22513=>1000,22514=>1000,22515=>1000,22516=>1000,22517=>1000,22518=>1000,22519=>1000,22520=>1000,22521=>1000,22522=>1000,22523=>1000,22524=>1000,22525=>1000,22528=>1000,22529=>1000,22530=>1000,22532=>1000,22533=>1000,22534=>1000,22535=>1000,22536=>1000,22537=>1000,22538=>1000,22539=>1000,22540=>1000,22541=>1000,22542=>1000,22544=>1000,22545=>1000,22548=>1000,22549=>1000,22553=>1000,22555=>1000,22556=>1000,22557=>1000,22558=>1000,22560=>1000,22561=>1000,22563=>1000,22564=>1000,22565=>1000,22567=>1000,22568=>1000,22569=>1000,22570=>1000,22572=>1000,22573=>1000,22574=>1000,22575=>1000,22576=>1000,22577=>1000,22578=>1000,22579=>1000,22580=>1000,22581=>1000,22582=>1000,22583=>1000,22584=>1000,22585=>1000,22586=>1000,22587=>1000,22589=>1000,22591=>1000,22592=>1000,22593=>1000,22596=>1000,22600=>1000,22601=>1000,22602=>1000,22603=>1000,22604=>1000,22605=>1000,22606=>1000,22607=>1000,22609=>1000,22610=>1000,22611=>1000,22612=>1000,22613=>1000,22615=>1000,22616=>1000,22617=>1000,22618=>1000,22619=>1000,22621=>1000,22622=>1000,22625=>1000,22626=>1000,22627=>1000,22628=>1000,22629=>1000,22632=>1000,22633=>1000,22635=>1000,22636=>1000,22637=>1000,22639=>1000,22640=>1000,22641=>1000,22642=>1000,22644=>1000,22645=>1000,22646=>1000,22649=>1000,22650=>1000,22651=>1000,22652=>1000,22653=>1000,22654=>1000,22655=>1000,22656=>1000,22657=>1000,22658=>1000,22659=>1000,22661=>1000,22662=>1000,22663=>1000,22664=>1000,22665=>1000,22666=>1000,22667=>1000,22670=>1000,22671=>1000,22672=>1000,22673=>1000,22674=>1000,22675=>1000,22676=>1000,22679=>1000,22680=>1000,22681=>1000,22682=>1000,22684=>1000,22685=>1000,22686=>1000,22687=>1000,22688=>1000,22689=>1000,22691=>1000,22693=>1000,22694=>1000,22696=>1000,22697=>1000,22699=>1000,22700=>1000,22702=>1000,22703=>1000,22705=>1000,22706=>1000,22707=>1000,22712=>1000,22713=>1000,22714=>1000,22715=>1000,22716=>1000,22717=>1000,22718=>1000,22719=>1000,22721=>1000,22722=>1000,22725=>1000,22726=>1000,22727=>1000,22728=>1000,22729=>1000,22730=>1000,22732=>1000,22734=>1000,22735=>1000,22737=>1000,22738=>1000,22739=>1000,22740=>1000,22741=>1000,22742=>1000,22743=>1000,22744=>1000,22745=>1000,22746=>1000,22747=>1000,22748=>1000,22749=>1000,22750=>1000,22751=>1000,22754=>1000,22755=>1000,22756=>1000,22757=>1000,22759=>1000,22760=>1000,22761=>1000,22763=>1000,22764=>1000,22766=>1000,22767=>1000,22768=>1000,22769=>1000,22770=>1000,22771=>1000,22772=>1000,22774=>1000,22775=>1000,22777=>1000,22778=>1000,22779=>1000,22780=>1000,22781=>1000,22782=>1000,22783=>1000,22786=>1000,22787=>1000,22788=>1000,22790=>1000,22791=>1000,22793=>1000,22794=>1000,22795=>1000,22796=>1000,22797=>1000,22798=>1000,22799=>1000,22800=>1000,22802=>1000,22804=>1000,22805=>1000,22806=>1000,22807=>1000,22808=>1000,22809=>1000,22810=>1000,22811=>1000,22812=>1000,22815=>1000,22816=>1000,22818=>1000,22820=>1000,22821=>1000,22823=>1000,22825=>1000,22826=>1000,22827=>1000,22828=>1000,22829=>1000,22830=>1000,22831=>1000,22833=>1000,22834=>1000,22836=>1000,22839=>1000,22840=>1000,22841=>1000,22842=>1000,22844=>1000,22846=>1000,22848=>1000,22849=>1000,22850=>1000,22852=>1000,22853=>1000,22855=>1000,22856=>1000,22857=>1000,22858=>1000,22859=>1000,22862=>1000,22863=>1000,22864=>1000,22865=>1000,22867=>1000,22868=>1000,22869=>1000,22870=>1000,22871=>1000,22872=>1000,22874=>1000,22875=>1000,22876=>1000,22877=>1000,22880=>1000,22881=>1000,22882=>1000,22883=>1000,22885=>1000,22887=>1000,22888=>1000,22889=>1000,22890=>1000,22891=>1000,22892=>1000,22893=>1000,22894=>1000,22896=>1000,22897=>1000,22898=>1000,22899=>1000,22900=>1000,22902=>1000,22903=>1000,22904=>1000,22905=>1000,22907=>1000,22908=>1000,22909=>1000,22910=>1000,22911=>1000,22912=>1000,22913=>1000,22914=>1000,22915=>1000,22916=>1000,22917=>1000,22918=>1000,22919=>1000,22920=>1000,22922=>1000,22925=>1000,22926=>1000,22927=>1000,22928=>1000,22930=>1000,22931=>1000,22934=>1000,22935=>1000,22936=>1000,22937=>1000,22939=>1000,22941=>1000,22942=>1000,22944=>1000,22945=>1000,22946=>1000,22947=>1000,22948=>1000,22949=>1000,22950=>1000,22951=>1000,22952=>1000,22953=>1000,22954=>1000,22955=>1000,22956=>1000,22958=>1000,22959=>1000,22961=>1000,22962=>1000,22963=>1000,22964=>1000,22965=>1000,22966=>1000,22969=>1000,22970=>1000,22971=>1000,22972=>1000,22973=>1000,22974=>1000,22976=>1000,22977=>1000,22979=>1000,22981=>1000,22982=>1000,22983=>1000,22984=>1000,22985=>1000,22986=>1000,22987=>1000,22988=>1000,22989=>1000,22990=>1000,22991=>1000,22992=>1000,22993=>1000,22994=>1000,22995=>1000,22996=>1000,22998=>1000,22999=>1000,23000=>1000,23001=>1000,23002=>1000,23003=>1000,23004=>1000,23005=>1000,23006=>1000,23008=>1000,23009=>1000,23011=>1000,23012=>1000,23013=>1000,23014=>1000,23016=>1000,23017=>1000,23018=>1000,23019=>1000,23020=>1000,23021=>1000,23022=>1000,23025=>1000,23026=>1000,23027=>1000,23028=>1000,23029=>1000,23030=>1000,23031=>1000,23032=>1000,23033=>1000,23034=>1000,23035=>1000,23036=>1000,23037=>1000,23038=>1000,23039=>1000,23040=>1000,23041=>1000,23043=>1000,23044=>1000,23045=>1000,23046=>1000,23047=>1000,23048=>1000,23049=>1000,23050=>1000,23052=>1000,23055=>1000,23057=>1000,23059=>1000,23061=>1000,23062=>1000,23063=>1000,23064=>1000,23065=>1000,23066=>1000,23067=>1000,23068=>1000,23070=>1000,23071=>1000,23072=>1000,23075=>1000,23077=>1000,23081=>1000,23085=>1000,23086=>1000,23087=>1000,23089=>1000,23090=>1000,23091=>1000,23092=>1000,23093=>1000,23094=>1000,23095=>1000,23096=>1000,23097=>1000,23100=>1000,23102=>1000,23104=>1000,23105=>1000,23106=>1000,23107=>1000,23108=>1000,23110=>1000,23111=>1000,23112=>1000,23113=>1000,23114=>1000,23116=>1000,23117=>1000,23120=>1000,23121=>1000,23122=>1000,23123=>1000,23125=>1000,23126=>1000,23127=>1000,23128=>1000,23130=>1000,23131=>1000,23132=>1000,23133=>1000,23134=>1000,23135=>1000,23136=>1000,23138=>1000,23140=>1000,23141=>1000,23142=>1000,23143=>1000,23145=>1000,23146=>1000,23148=>1000,23149=>1000,23152=>1000,23156=>1000,23157=>1000,23158=>1000,23159=>1000,23160=>1000,23162=>1000,23163=>1000,23164=>1000,23165=>1000,23167=>1000,23171=>1000,23172=>1000,23178=>1000,23179=>1000,23180=>1000,23182=>1000,23183=>1000,23184=>1000,23186=>1000,23187=>1000,23188=>1000,23189=>1000,23191=>1000,23194=>1000,23195=>1000,23196=>1000,23197=>1000,23198=>1000,23199=>1000,23202=>1000,23204=>1000,23205=>1000,23206=>1000,23207=>1000,23209=>1000,23210=>1000,23212=>1000,23214=>1000,23215=>1000,23216=>1000,23217=>1000,23218=>1000,23219=>1000,23220=>1000,23221=>1000,23222=>1000,23223=>1000,23224=>1000,23225=>1000,23226=>1000,23227=>1000,23228=>1000,23229=>1000,23230=>1000,23231=>1000,23232=>1000,23233=>1000,23234=>1000,23236=>1000,23238=>1000,23239=>1000,23240=>1000,23241=>1000,23242=>1000,23243=>1000,23244=>1000,23245=>1000,23248=>1000,23250=>1000,23252=>1000,23253=>1000,23254=>1000,23255=>1000,23256=>1000,23257=>1000,23258=>1000,23259=>1000,23260=>1000,23261=>1000,23262=>1000,23263=>1000,23264=>1000,23265=>1000,23266=>1000,23267=>1000,23269=>1000,23270=>1000,23272=>1000,23273=>1000,23274=>1000,23275=>1000,23276=>1000,23277=>1000,23278=>1000,23281=>1000,23283=>1000,23284=>1000,23285=>1000,23286=>1000,23287=>1000,23288=>1000,23289=>1000,23290=>1000,23291=>1000,23293=>1000,23295=>1000,23297=>1000,23298=>1000,23299=>1000,23301=>1000,23303=>1000,23304=>1000,23305=>1000,23307=>1000,23308=>1000,23311=>1000,23312=>1000,23315=>1000,23316=>1000,23318=>1000,23319=>1000,23321=>1000,23322=>1000,23323=>1000,23325=>1000,23326=>1000,23328=>1000,23329=>1000,23330=>1000,23331=>1000,23332=>1000,23333=>1000,23334=>1000,23335=>1000,23336=>1000,23338=>1000,23340=>1000,23341=>1000,23342=>1000,23343=>1000,23344=>1000,23346=>1000,23348=>1000,23350=>1000,23351=>1000,23352=>1000,23356=>1000,23357=>1000,23358=>1000,23359=>1000,23360=>1000,23363=>1000,23365=>1000,23367=>1000,23368=>1000,23371=>1000,23372=>1000,23373=>1000,23374=>1000,23376=>1000,23377=>1000,23379=>1000,23380=>1000,23381=>1000,23382=>1000,23383=>1000,23384=>1000,23385=>1000,23386=>1000,23387=>1000,23388=>1000,23389=>1000,23391=>1000,23394=>1000,23395=>1000,23396=>1000,23397=>1000,23398=>1000,23401=>1000,23402=>1000,23403=>1000,23404=>1000,23406=>1000,23408=>1000,23409=>1000,23410=>1000,23411=>1000,23413=>1000,23415=>1000,23416=>1000,23418=>1000,23419=>1000,23420=>1000,23421=>1000,23423=>1000,23424=>1000,23425=>1000,23427=>1000,23428=>1000,23429=>1000,23431=>1000,23432=>1000,23433=>1000,23435=>1000,23436=>1000,23437=>1000,23438=>1000,23439=>1000,23442=>1000,23443=>1000,23445=>1000,23446=>1000,23447=>1000,23448=>1000,23449=>1000,23450=>1000,23451=>1000,23452=>1000,23453=>1000,23454=>1000,23455=>1000,23456=>1000,23457=>1000,23458=>1000,23459=>1000,23460=>1000,23461=>1000,23462=>1000,23463=>1000,23464=>1000,23466=>1000,23467=>1000,23468=>1000,23469=>1000,23470=>1000,23472=>1000,23475=>1000,23476=>1000,23477=>1000,23478=>1000,23480=>1000,23481=>1000,23485=>1000,23486=>1000,23487=>1000,23488=>1000,23489=>1000,23490=>1000,23491=>1000,23492=>1000,23493=>1000,23494=>1000,23495=>1000,23497=>1000,23498=>1000,23499=>1000,23500=>1000,23501=>1000,23502=>1000,23504=>1000,23505=>1000,23506=>1000,23507=>1000,23508=>1000,23510=>1000,23511=>1000,23512=>1000,23513=>1000,23515=>1000,23517=>1000,23518=>1000,23519=>1000,23520=>1000,23521=>1000,23522=>1000,23523=>1000,23524=>1000,23525=>1000,23526=>1000,23527=>1000,23528=>1000,23529=>1000,23530=>1000,23531=>1000,23532=>1000,23534=>1000,23535=>1000,23536=>1000,23537=>1000,23538=>1000,23539=>1000,23541=>1000,23542=>1000,23544=>1000,23545=>1000,23546=>1000,23547=>1000,23548=>1000,23550=>1000,23551=>1000,23553=>1000,23554=>1000,23555=>1000,23556=>1000,23557=>1000,23558=>1000,23559=>1000,23560=>1000,23561=>1000,23562=>1000,23563=>1000,23564=>1000,23565=>1000,23566=>1000,23567=>1000,23568=>1000,23569=>1000,23570=>1000,23571=>1000,23572=>1000,23573=>1000,23574=>1000,23576=>1000,23577=>1000,23578=>1000,23580=>1000,23581=>1000,23582=>1000,23583=>1000,23584=>1000,23586=>1000,23588=>1000,23589=>1000,23591=>1000,23592=>1000,23594=>1000,23596=>1000,23597=>1000,23600=>1000,23601=>1000,23603=>1000,23604=>1000,23607=>1000,23608=>1000,23609=>1000,23610=>1000,23611=>1000,23612=>1000,23613=>1000,23614=>1000,23615=>1000,23616=>1000,23617=>1000,23618=>1000,23620=>1000,23621=>1000,23622=>1000,23623=>1000,23624=>1000,23625=>1000,23626=>1000,23627=>1000,23628=>1000,23629=>1000,23630=>1000,23631=>1000,23632=>1000,23633=>1000,23635=>1000,23636=>1000,23637=>1000,23638=>1000,23640=>1000,23641=>1000,23643=>1000,23644=>1000,23645=>1000,23646=>1000,23648=>1000,23649=>1000,23650=>1000,23651=>1000,23652=>1000,23653=>1000,23654=>1000,23655=>1000,23656=>1000,23657=>1000,23658=>1000,23660=>1000,23661=>1000,23662=>1000,23663=>1000,23665=>1000,23667=>1000,23668=>1000,23670=>1000,23673=>1000,23674=>1000,23675=>1000,23676=>1000,23678=>1000,23679=>1000,23681=>1000,23682=>1000,23686=>1000,23688=>1000,23689=>1000,23690=>1000,23691=>1000,23692=>1000,23693=>1000,23695=>1000,23696=>1000,23697=>1000,23698=>1000,23699=>1000,23700=>1000,23701=>1000,23702=>1000,23703=>1000,23704=>1000,23705=>1000,23706=>1000,23707=>1000,23708=>1000,23709=>1000,23711=>1000,23712=>1000,23713=>1000,23714=>1000,23715=>1000,23716=>1000,23717=>1000,23718=>1000,23719=>1000,23720=>1000,23721=>1000,23722=>1000,23723=>1000,23724=>1000,23725=>1000,23726=>1000,23727=>1000,23728=>1000,23729=>1000,23731=>1000,23733=>1000,23734=>1000,23735=>1000,23736=>1000,23738=>1000,23739=>1000,23740=>1000,23741=>1000,23742=>1000,23743=>1000,23744=>1000,23745=>1000,23748=>1000,23749=>1000,23750=>1000,23751=>1000,23752=>1000,23753=>1000,23754=>1000,23755=>1000,23756=>1000,23758=>1000,23759=>1000,23760=>1000,23762=>1000,23763=>1000,23764=>1000,23766=>1000,23767=>1000,23768=>1000,23769=>1000,23770=>1000,23771=>1000,23774=>1000,23775=>1000,23776=>1000,23777=>1000,23780=>1000,23781=>1000,23782=>1000,23784=>1000,23785=>1000,23786=>1000,23788=>1000,23789=>1000,23790=>1000,23791=>1000,23792=>1000,23793=>1000,23796=>1000,23797=>1000,23798=>1000,23799=>1000,23800=>1000,23801=>1000,23802=>1000,23803=>1000,23805=>1000,23807=>1000,23808=>1000,23809=>1000,23810=>1000,23811=>1000,23814=>1000,23815=>1000,23819=>1000,23820=>1000,23821=>1000,23822=>1000,23823=>1000,23825=>1000,23826=>1000,23828=>1000,23829=>1000,23830=>1000,23831=>1000,23832=>1000,23833=>1000,23834=>1000,23835=>1000,23837=>1000,23838=>1000,23839=>1000,23840=>1000,23842=>1000,23843=>1000,23844=>1000,23845=>1000,23846=>1000,23847=>1000,23848=>1000,23849=>1000,23853=>1000,23854=>1000,23856=>1000,23857=>1000,23858=>1000,23859=>1000,23860=>1000,23861=>1000,23862=>1000,23863=>1000,23864=>1000,23865=>1000,23866=>1000,23868=>1000,23869=>1000,23870=>1000,23871=>1000,23872=>1000,23873=>1000,23874=>1000,23875=>1000,23877=>1000,23879=>1000,23881=>1000,23882=>1000,23883=>1000,23884=>1000,23886=>1000,23888=>1000,23889=>1000,23890=>1000,23891=>1000,23893=>1000,23896=>1000,23897=>1000,23899=>1000,23900=>1000,23901=>1000,23902=>1000,23906=>1000,23907=>1000,23909=>1000,23911=>1000,23912=>1000,23913=>1000,23915=>1000,23916=>1000,23917=>1000,23919=>1000,23921=>1000,23922=>1000,23923=>1000,23924=>1000,23926=>1000,23927=>1000,23929=>1000,23930=>1000,23932=>1000,23933=>1000,23934=>1000,23935=>1000,23936=>1000,23937=>1000,23938=>1000,23940=>1000,23942=>1000,23943=>1000,23944=>1000,23945=>1000,23946=>1000,23947=>1000,23948=>1000,23949=>1000,23952=>1000,23954=>1000,23955=>1000,23956=>1000,23957=>1000,23959=>1000,23961=>1000,23962=>1000,23964=>1000,23965=>1000,23966=>1000,23967=>1000,23968=>1000,23969=>1000,23970=>1000,23975=>1000,23976=>1000,23977=>1000,23978=>1000,23980=>1000,23981=>1000,23982=>1000,23983=>1000,23984=>1000,23985=>1000,23986=>1000,23988=>1000,23989=>1000,23991=>1000,23992=>1000,23993=>1000,23994=>1000,23996=>1000,23997=>1000,24000=>1000,24002=>1000,24003=>1000,24005=>1000,24006=>1000,24007=>1000,24009=>1000,24011=>1000,24012=>1000,24013=>1000,24015=>1000,24016=>1000,24017=>1000,24018=>1000,24019=>1000,24020=>1000,24021=>1000,24022=>1000,24024=>1000,24027=>1000,24029=>1000,24030=>1000,24031=>1000,24032=>1000,24033=>1000,24034=>1000,24035=>1000,24037=>1000,24038=>1000,24039=>1000,24040=>1000,24041=>1000,24043=>1000,24046=>1000,24047=>1000,24048=>1000,24049=>1000,24050=>1000,24051=>1000,24052=>1000,24053=>1000,24055=>1000,24057=>1000,24059=>1000,24061=>1000,24062=>1000,24063=>1000,24065=>1000,24066=>1000,24067=>1000,24068=>1000,24069=>1000,24070=>1000,24072=>1000,24074=>1000,24075=>1000,24076=>1000,24078=>1000,24079=>1000,24080=>1000,24081=>1000,24084=>1000,24085=>1000,24086=>1000,24087=>1000,24088=>1000,24089=>1000,24090=>1000,24091=>1000,24092=>1000,24093=>1000,24095=>1000,24096=>1000,24097=>1000,24098=>1000,24099=>1000,24100=>1000,24101=>1000,24102=>1000,24103=>1000,24104=>1000,24105=>1000,24107=>1000,24109=>1000,24110=>1000,24111=>1000,24112=>1000,24113=>1000,24115=>1000,24116=>1000,24118=>1000,24119=>1000,24120=>1000,24123=>1000,24124=>1000,24125=>1000,24126=>1000,24127=>1000,24128=>1000,24129=>1000,24130=>1000,24131=>1000,24132=>1000,24133=>1000,24135=>1000,24138=>1000,24139=>1000,24140=>1000,24141=>1000,24142=>1000,24143=>1000,24147=>1000,24148=>1000,24149=>1000,24151=>1000,24152=>1000,24153=>1000,24155=>1000,24156=>1000,24157=>1000,24158=>1000,24159=>1000,24160=>1000,24161=>1000,24162=>1000,24163=>1000,24164=>1000,24166=>1000,24167=>1000,24168=>1000,24169=>1000,24170=>1000,24171=>1000,24172=>1000,24173=>1000,24174=>1000,24175=>1000,24176=>1000,24178=>1000,24179=>1000,24180=>1000,24181=>1000,24182=>1000,24183=>1000,24184=>1000,24185=>1000,24186=>1000,24187=>1000,24188=>1000,24189=>1000,24190=>1000,24191=>1000,24192=>1000,24193=>1000,24194=>1000,24195=>1000,24196=>1000,24198=>1000,24199=>1000,24200=>1000,24201=>1000,24202=>1000,24203=>1000,24204=>1000,24205=>1000,24207=>1000,24208=>1000,24209=>1000,24211=>1000,24212=>1000,24213=>1000,24214=>1000,24215=>1000,24217=>1000,24218=>1000,24219=>1000,24220=>1000,24222=>1000,24223=>1000,24224=>1000,24226=>1000,24227=>1000,24228=>1000,24229=>1000,24230=>1000,24231=>1000,24232=>1000,24234=>1000,24235=>1000,24236=>1000,24237=>1000,24238=>1000,24240=>1000,24241=>1000,24242=>1000,24243=>1000,24244=>1000,24245=>1000,24246=>1000,24247=>1000,24248=>1000,24249=>1000,24254=>1000,24257=>1000,24258=>1000,24259=>1000,24260=>1000,24261=>1000,24262=>1000,24263=>1000,24264=>1000,24265=>1000,24266=>1000,24267=>1000,24268=>1000,24270=>1000,24271=>1000,24272=>1000,24273=>1000,24274=>1000,24275=>1000,24276=>1000,24277=>1000,24278=>1000,24279=>1000,24280=>1000,24281=>1000,24282=>1000,24283=>1000,24284=>1000,24285=>1000,24286=>1000,24287=>1000,24288=>1000,24289=>1000,24290=>1000,24291=>1000,24293=>1000,24294=>1000,24295=>1000,24296=>1000,24297=>1000,24298=>1000,24300=>1000,24302=>1000,24303=>1000,24304=>1000,24305=>1000,24306=>1000,24307=>1000,24308=>1000,24310=>1000,24311=>1000,24312=>1000,24314=>1000,24315=>1000,24316=>1000,24318=>1000,24319=>1000,24320=>1000,24321=>1000,24322=>1000,24323=>1000,24324=>1000,24325=>1000,24327=>1000,24328=>1000,24329=>1000,24330=>1000,24331=>1000,24332=>1000,24333=>1000,24335=>1000,24336=>1000,24337=>1000,24338=>1000,24339=>1000,24340=>1000,24341=>1000,24342=>1000,24343=>1000,24344=>1000,24346=>1000,24347=>1000,24349=>1000,24351=>1000,24352=>1000,24353=>1000,24354=>1000,24355=>1000,24356=>1000,24357=>1000,24358=>1000,24359=>1000,24360=>1000,24361=>1000,24362=>1000,24365=>1000,24366=>1000,24367=>1000,24368=>1000,24369=>1000,24371=>1000,24372=>1000,24373=>1000,24374=>1000,24375=>1000,24376=>1000,24377=>1000,24378=>1000,24380=>1000,24382=>1000,24384=>1000,24385=>1000,24387=>1000,24388=>1000,24389=>1000,24390=>1000,24392=>1000,24393=>1000,24394=>1000,24395=>1000,24396=>1000,24398=>1000,24399=>1000,24400=>1000,24401=>1000,24402=>1000,24403=>1000,24404=>1000,24405=>1000,24406=>1000,24407=>1000,24408=>1000,24409=>1000,24411=>1000,24412=>1000,24413=>1000,24417=>1000,24418=>1000,24420=>1000,24421=>1000,24422=>1000,24423=>1000,24425=>1000,24426=>1000,24427=>1000,24428=>1000,24429=>1000,24431=>1000,24432=>1000,24433=>1000,24435=>1000,24436=>1000,24438=>1000,24439=>1000,24440=>1000,24441=>1000,24443=>1000,24444=>1000,24445=>1000,24446=>1000,24447=>1000,24448=>1000,24449=>1000,24450=>1000,24451=>1000,24452=>1000,24453=>1000,24454=>1000,24455=>1000,24456=>1000,24457=>1000,24458=>1000,24459=>1000,24460=>1000,24464=>1000,24465=>1000,24466=>1000,24467=>1000,24469=>1000,24470=>1000,24471=>1000,24472=>1000,24473=>1000,24475=>1000,24476=>1000,24478=>1000,24479=>1000,24480=>1000,24481=>1000,24485=>1000,24486=>1000,24488=>1000,24489=>1000,24490=>1000,24491=>1000,24492=>1000,24493=>1000,24494=>1000,24495=>1000,24498=>1000,24499=>1000,24500=>1000,24501=>1000,24502=>1000,24503=>1000,24505=>1000,24507=>1000,24508=>1000,24509=>1000,24510=>1000,24511=>1000,24512=>1000,24513=>1000,24515=>1000,24516=>1000,24517=>1000,24518=>1000,24521=>1000,24524=>1000,24525=>1000,24527=>1000,24528=>1000,24529=>1000,24530=>1000,24532=>1000,24533=>1000,24534=>1000,24535=>1000,24536=>1000,24537=>1000,24540=>1000,24541=>1000,24542=>1000,24544=>1000,24545=>1000,24547=>1000,24548=>1000,24549=>1000,24551=>1000,24552=>1000,24554=>1000,24555=>1000,24557=>1000,24558=>1000,24559=>1000,24560=>1000,24561=>1000,24563=>1000,24564=>1000,24565=>1000,24567=>1000,24568=>1000,24570=>1000,24571=>1000,24573=>1000,24574=>1000,24575=>1000,24576=>1000,24577=>1000,24578=>1000,24579=>1000,24580=>1000,24581=>1000,24582=>1000,24585=>1000,24586=>1000,24587=>1000,24588=>1000,24589=>1000,24590=>1000,24591=>1000,24592=>1000,24593=>1000,24594=>1000,24595=>1000,24596=>1000,24597=>1000,24598=>1000,24599=>1000,24601=>1000,24602=>1000,24603=>1000,24604=>1000,24605=>1000,24606=>1000,24608=>1000,24609=>1000,24610=>1000,24612=>1000,24613=>1000,24614=>1000,24615=>1000,24616=>1000,24617=>1000,24618=>1000,24619=>1000,24620=>1000,24621=>1000,24622=>1000,24623=>1000,24625=>1000,24626=>1000,24627=>1000,24628=>1000,24629=>1000,24631=>1000,24633=>1000,24634=>1000,24635=>1000,24636=>1000,24639=>1000,24640=>1000,24641=>1000,24642=>1000,24643=>1000,24644=>1000,24645=>1000,24646=>1000,24647=>1000,24649=>1000,24650=>1000,24651=>1000,24652=>1000,24653=>1000,24656=>1000,24658=>1000,24659=>1000,24660=>1000,24661=>1000,24664=>1000,24665=>1000,24666=>1000,24667=>1000,24669=>1000,24670=>1000,24671=>1000,24672=>1000,24674=>1000,24675=>1000,24676=>1000,24677=>1000,24678=>1000,24679=>1000,24680=>1000,24681=>1000,24682=>1000,24683=>1000,24684=>1000,24685=>1000,24686=>1000,24687=>1000,24688=>1000,24690=>1000,24691=>1000,24693=>1000,24694=>1000,24695=>1000,24696=>1000,24697=>1000,24698=>1000,24699=>1000,24700=>1000,24701=>1000,24703=>1000,24704=>1000,24705=>1000,24707=>1000,24708=>1000,24709=>1000,24710=>1000,24711=>1000,24712=>1000,24713=>1000,24714=>1000,24715=>1000,24716=>1000,24717=>1000,24718=>1000,24720=>1000,24722=>1000,24724=>1000,24725=>1000,24726=>1000,24727=>1000,24730=>1000,24731=>1000,24732=>1000,24733=>1000,24735=>1000,24736=>1000,24738=>1000,24739=>1000,24740=>1000,24742=>1000,24743=>1000,24744=>1000,24745=>1000,24746=>1000,24747=>1000,24748=>1000,24749=>1000,24751=>1000,24752=>1000,24753=>1000,24754=>1000,24755=>1000,24756=>1000,24757=>1000,24758=>1000,24759=>1000,24760=>1000,24761=>1000,24762=>1000,24763=>1000,24764=>1000,24765=>1000,24766=>1000,24767=>1000,24768=>1000,24769=>1000,24771=>1000,24772=>1000,24773=>1000,24774=>1000,24775=>1000,24776=>1000,24777=>1000,24778=>1000,24779=>1000,24780=>1000,24781=>1000,24782=>1000,24783=>1000,24785=>1000,24787=>1000,24788=>1000,24789=>1000,24792=>1000,24793=>1000,24794=>1000,24795=>1000,24796=>1000,24797=>1000,24798=>1000,24799=>1000,24800=>1000,24801=>1000,24802=>1000,24803=>1000,24804=>1000,24806=>1000,24807=>1000,24808=>1000,24809=>1000,24811=>1000,24812=>1000,24813=>1000,24814=>1000,24815=>1000,24816=>1000,24817=>1000,24818=>1000,24819=>1000,24820=>1000,24821=>1000,24822=>1000,24823=>1000,24824=>1000,24825=>1000,24826=>1000,24827=>1000,24828=>1000,24830=>1000,24831=>1000,24832=>1000,24833=>1000,24835=>1000,24836=>1000,24837=>1000,24838=>1000,24840=>1000,24841=>1000,24842=>1000,24843=>1000,24845=>1000,24846=>1000,24847=>1000,24848=>1000,24849=>1000,24850=>1000,24851=>1000,24852=>1000,24853=>1000,24854=>1000,24856=>1000,24858=>1000,24859=>1000,24860=>1000,24861=>1000,24863=>1000,24864=>1000,24865=>1000,24867=>1000,24868=>1000,24870=>1000,24871=>1000,24872=>1000,24873=>1000,24875=>1000,24876=>1000,24878=>1000,24879=>1000,24880=>1000,24882=>1000,24884=>1000,24886=>1000,24887=>1000,24891=>1000,24892=>1000,24893=>1000,24894=>1000,24895=>1000,24896=>1000,24897=>1000,24898=>1000,24900=>1000,24901=>1000,24902=>1000,24903=>1000,24904=>1000,24905=>1000,24906=>1000,24907=>1000,24908=>1000,24909=>1000,24910=>1000,24911=>1000,24913=>1000,24914=>1000,24915=>1000,24916=>1000,24917=>1000,24918=>1000,24920=>1000,24921=>1000,24922=>1000,24923=>1000,24925=>1000,24926=>1000,24927=>1000,24929=>1000,24930=>1000,24931=>1000,24932=>1000,24933=>1000,24934=>1000,24935=>1000,24936=>1000,24938=>1000,24939=>1000,24940=>1000,24942=>1000,24943=>1000,24944=>1000,24945=>1000,24946=>1000,24947=>1000,24948=>1000,24949=>1000,24950=>1000,24951=>1000,24953=>1000,24954=>1000,24956=>1000,24957=>1000,24958=>1000,24960=>1000,24961=>1000,24962=>1000,24963=>1000,24967=>1000,24969=>1000,24970=>1000,24971=>1000,24972=>1000,24973=>1000,24974=>1000,24976=>1000,24977=>1000,24978=>1000,24979=>1000,24980=>1000,24982=>1000,24984=>1000,24985=>1000,24986=>1000,24987=>1000,24989=>1000,24991=>1000,24993=>1000,24994=>1000,24996=>1000,24999=>1000,25000=>1000,25001=>1000,25002=>1000,25003=>1000,25004=>1000,25005=>1000,25006=>1000,25007=>1000,25008=>1000,25009=>1000,25010=>1000,25011=>1000,25012=>1000,25013=>1000,25014=>1000,25015=>1000,25016=>1000,25018=>1000,25020=>1000,25022=>1000,25023=>1000,25025=>1000,25026=>1000,25027=>1000,25029=>1000,25030=>1000,25031=>1000,25032=>1000,25033=>1000,25034=>1000,25035=>1000,25036=>1000,25037=>1000,25040=>1000,25041=>1000,25042=>1000,25044=>1000,25046=>1000,25048=>1000,25054=>1000,25055=>1000,25056=>1000,25059=>1000,25060=>1000,25061=>1000,25062=>1000,25063=>1000,25064=>1000,25065=>1000,25066=>1000,25067=>1000,25069=>1000,25070=>1000,25072=>1000,25073=>1000,25074=>1000,25076=>1000,25077=>1000,25078=>1000,25079=>1000,25080=>1000,25081=>1000,25082=>1000,25083=>1000,25084=>1000,25085=>1000,25086=>1000,25087=>1000,25088=>1000,25089=>1000,25091=>1000,25092=>1000,25094=>1000,25095=>1000,25096=>1000,25097=>1000,25098=>1000,25099=>1000,25100=>1000,25101=>1000,25102=>1000,25103=>1000,25104=>1000,25105=>1000,25106=>1000,25107=>1000,25108=>1000,25109=>1000,25110=>1000,25111=>1000,25112=>1000,25113=>1000,25114=>1000,25115=>1000,25117=>1000,25118=>1000,25119=>1000,25120=>1000,25121=>1000,25122=>1000,25123=>1000,25124=>1000,25125=>1000,25126=>1000,25127=>1000,25129=>1000,25130=>1000,25131=>1000,25132=>1000,25133=>1000,25134=>1000,25135=>1000,25136=>1000,25137=>1000,25138=>1000,25139=>1000,25140=>1000,25142=>1000,25143=>1000,25144=>1000,25146=>1000,25147=>1000,25149=>1000,25150=>1000,25151=>1000,25152=>1000,25153=>1000,25154=>1000,25155=>1000,25158=>1000,25159=>1000,25160=>1000,25161=>1000,25162=>1000,25163=>1000,25164=>1000,25165=>1000,25166=>1000,25168=>1000,25169=>1000,25170=>1000,25171=>1000,25172=>1000,25173=>1000,25176=>1000,25177=>1000,25178=>1000,25179=>1000,25180=>1000,25182=>1000,25184=>1000,25185=>1000,25186=>1000,25187=>1000,25188=>1000,25189=>1000,25190=>1000,25191=>1000,25192=>1000,25193=>1000,25194=>1000,25195=>1000,25196=>1000,25197=>1000,25198=>1000,25199=>1000,25200=>1000,25201=>1000,25202=>1000,25203=>1000,25204=>1000,25206=>1000,25207=>1000,25209=>1000,25210=>1000,25211=>1000,25212=>1000,25213=>1000,25214=>1000,25215=>1000,25216=>1000,25217=>1000,25218=>1000,25219=>1000,25220=>1000,25222=>1000,25223=>1000,25224=>1000,25225=>1000,25226=>1000,25228=>1000,25230=>1000,25231=>1000,25233=>1000,25234=>1000,25235=>1000,25236=>1000,25237=>1000,25238=>1000,25239=>1000,25240=>1000,25242=>1000,25243=>1000,25244=>1000,25246=>1000,25247=>1000,25248=>1000,25249=>1000,25250=>1000,25252=>1000,25253=>1000,25254=>1000,25256=>1000,25257=>1000,25258=>1000,25259=>1000,25260=>1000,25261=>1000,25262=>1000,25263=>1000,25264=>1000,25265=>1000,25267=>1000,25268=>1000,25269=>1000,25270=>1000,25272=>1000,25273=>1000,25275=>1000,25276=>1000,25277=>1000,25278=>1000,25279=>1000,25282=>1000,25284=>1000,25285=>1000,25286=>1000,25287=>1000,25288=>1000,25289=>1000,25290=>1000,25291=>1000,25292=>1000,25293=>1000,25294=>1000,25295=>1000,25296=>1000,25297=>1000,25298=>1000,25299=>1000,25300=>1000,25302=>1000,25303=>1000,25304=>1000,25305=>1000,25306=>1000,25307=>1000,25308=>1000,25309=>1000,25311=>1000,25312=>1000,25313=>1000,25314=>1000,25315=>1000,25317=>1000,25318=>1000,25319=>1000,25320=>1000,25321=>1000,25323=>1000,25324=>1000,25325=>1000,25326=>1000,25327=>1000,25328=>1000,25329=>1000,25330=>1000,25331=>1000,25332=>1000,25333=>1000,25334=>1000,25335=>1000,25336=>1000,25337=>1000,25338=>1000,25339=>1000,25340=>1000,25341=>1000,25342=>1000,25343=>1000,25344=>1000,25345=>1000,25346=>1000,25347=>1000,25351=>1000,25352=>1000,25353=>1000,25355=>1000,25356=>1000,25357=>1000,25358=>1000,25359=>1000,25360=>1000,25361=>1000,25363=>1000,25364=>1000,25365=>1000,25366=>1000,25369=>1000,25370=>1000,25371=>1000,25373=>1000,25374=>1000,25375=>1000,25376=>1000,25377=>1000,25378=>1000,25379=>1000,25380=>1000,25381=>1000,25383=>1000,25384=>1000,25385=>1000,25386=>1000,25387=>1000,25388=>1000,25389=>1000,25391=>1000,25394=>1000,25395=>1000,25396=>1000,25398=>1000,25400=>1000,25401=>1000,25402=>1000,25403=>1000,25404=>1000,25405=>1000,25406=>1000,25407=>1000,25408=>1000,25409=>1000,25410=>1000,25411=>1000,25412=>1000,25413=>1000,25414=>1000,25415=>1000,25416=>1000,25417=>1000,25418=>1000,25419=>1000,25420=>1000,25421=>1000,25422=>1000,25423=>1000,25424=>1000,25425=>1000,25428=>1000,25429=>1000,25430=>1000,25431=>1000,25432=>1000,25433=>1000,25434=>1000,25436=>1000,25438=>1000,25439=>1000,25441=>1000,25442=>1000,25443=>1000,25445=>1000,25447=>1000,25448=>1000,25449=>1000,25451=>1000,25453=>1000,25454=>1000,25455=>1000,25456=>1000,25457=>1000,25458=>1000,25461=>1000,25462=>1000,25463=>1000,25464=>1000,25466=>1000,25467=>1000,25468=>1000,25469=>1000,25471=>1000,25472=>1000,25473=>1000,25474=>1000,25475=>1000,25476=>1000,25477=>1000,25479=>1000,25480=>1000,25481=>1000,25482=>1000,25484=>1000,25485=>1000,25486=>1000,25487=>1000,25488=>1000,25489=>1000,25490=>1000,25492=>1000,25494=>1000,25495=>1000,25496=>1000,25497=>1000,25499=>1000,25500=>1000,25501=>1000,25502=>1000,25503=>1000,25504=>1000,25505=>1000,25506=>1000,25507=>1000,25508=>1000,25509=>1000,25511=>1000,25512=>1000,25513=>1000,25514=>1000,25515=>1000,25516=>1000,25517=>1000,25518=>1000,25519=>1000,25520=>1000,25521=>1000,25522=>1000,25523=>1000,25524=>1000,25525=>1000,25527=>1000,25528=>1000,25530=>1000,25531=>1000,25532=>1000,25533=>1000,25534=>1000,25536=>1000,25538=>1000,25539=>1000,25540=>1000,25541=>1000,25542=>1000,25543=>1000,25544=>1000,25545=>1000,25546=>1000,25547=>1000,25548=>1000,25549=>1000,25550=>1000,25551=>1000,25552=>1000,25554=>1000,25555=>1000,25557=>1000,25558=>1000,25559=>1000,25560=>1000,25561=>1000,25562=>1000,25563=>1000,25564=>1000,25565=>1000,25566=>1000,25567=>1000,25568=>1000,25569=>1000,25571=>1000,25572=>1000,25573=>1000,25575=>1000,25576=>1000,25577=>1000,25578=>1000,25579=>1000,25581=>1000,25582=>1000,25583=>1000,25584=>1000,25585=>1000,25586=>1000,25587=>1000,25588=>1000,25589=>1000,25590=>1000,25591=>1000,25592=>1000,25593=>1000,25594=>1000,25597=>1000,25599=>1000,25600=>1000,25601=>1000,25602=>1000,25605=>1000,25606=>1000,25609=>1000,25610=>1000,25611=>1000,25612=>1000,25613=>1000,25614=>1000,25615=>1000,25616=>1000,25618=>1000,25619=>1000,25620=>1000,25621=>1000,25622=>1000,25623=>1000,25624=>1000,25626=>1000,25627=>1000,25628=>1000,25630=>1000,25631=>1000,25632=>1000,25633=>1000,25634=>1000,25635=>1000,25636=>1000,25637=>1000,25638=>1000,25639=>1000,25640=>1000,25642=>1000,25643=>1000,25644=>1000,25645=>1000,25646=>1000,25647=>1000,25648=>1000,25651=>1000,25652=>1000,25653=>1000,25654=>1000,25655=>1000,25657=>1000,25658=>1000,25661=>1000,25662=>1000,25663=>1000,25664=>1000,25665=>1000,25666=>1000,25667=>1000,25668=>1000,25669=>1000,25670=>1000,25671=>1000,25672=>1000,25674=>1000,25675=>1000,25677=>1000,25678=>1000,25680=>1000,25681=>1000,25682=>1000,25683=>1000,25684=>1000,25688=>1000,25689=>1000,25691=>1000,25692=>1000,25693=>1000,25694=>1000,25695=>1000,25696=>1000,25697=>1000,25701=>1000,25702=>1000,25703=>1000,25704=>1000,25705=>1000,25707=>1000,25708=>1000,25709=>1000,25710=>1000,25711=>1000,25712=>1000,25714=>1000,25715=>1000,25716=>1000,25717=>1000,25718=>1000,25719=>1000,25720=>1000,25721=>1000,25722=>1000,25723=>1000,25725=>1000,25727=>1000,25730=>1000,25731=>1000,25732=>1000,25733=>1000,25735=>1000,25736=>1000,25737=>1000,25738=>1000,25739=>1000,25740=>1000,25743=>1000,25744=>1000,25745=>1000,25746=>1000,25747=>1000,25749=>1000,25750=>1000,25751=>1000,25752=>1000,25753=>1000,25754=>1000,25756=>1000,25757=>1000,25758=>1000,25759=>1000,25760=>1000,25762=>1000,25763=>1000,25764=>1000,25765=>1000,25766=>1000,25769=>1000,25771=>1000,25772=>1000,25773=>1000,25774=>1000,25776=>1000,25777=>1000,25778=>1000,25779=>1000,25781=>1000,25783=>1000,25784=>1000,25785=>1000,25786=>1000,25787=>1000,25788=>1000,25789=>1000,25790=>1000,25791=>1000,25792=>1000,25793=>1000,25794=>1000,25795=>1000,25796=>1000,25797=>1000,25799=>1000,25801=>1000,25802=>1000,25803=>1000,25805=>1000,25806=>1000,25807=>1000,25808=>1000,25810=>1000,25812=>1000,25814=>1000,25815=>1000,25816=>1000,25817=>1000,25818=>1000,25819=>1000,25822=>1000,25824=>1000,25825=>1000,25826=>1000,25827=>1000,25828=>1000,25829=>1000,25830=>1000,25831=>1000,25832=>1000,25833=>1000,25835=>1000,25836=>1000,25837=>1000,25839=>1000,25840=>1000,25841=>1000,25842=>1000,25843=>1000,25844=>1000,25846=>1000,25847=>1000,25848=>1000,25850=>1000,25851=>1000,25852=>1000,25853=>1000,25854=>1000,25855=>1000,25856=>1000,25857=>1000,25859=>1000,25860=>1000,25861=>1000,25862=>1000,25863=>1000,25865=>1000,25868=>1000,25869=>1000,25870=>1000,25871=>1000,25872=>1000,25874=>1000,25875=>1000,25876=>1000,25877=>1000,25878=>1000,25879=>1000,25880=>1000,25881=>1000,25883=>1000,25884=>1000,25885=>1000,25888=>1000,25889=>1000,25890=>1000,25891=>1000,25892=>1000,25893=>1000,25894=>1000,25897=>1000,25898=>1000,25899=>1000,25900=>1000,25901=>1000,25902=>1000,25903=>1000,25906=>1000,25907=>1000,25908=>1000,25909=>1000,25910=>1000,25911=>1000,25912=>1000,25913=>1000,25915=>1000,25917=>1000,25918=>1000,25919=>1000,25921=>1000,25923=>1000,25925=>1000,25926=>1000,25928=>1000,25929=>1000,25930=>1000,25932=>1000,25933=>1000,25934=>1000,25935=>1000,25937=>1000,25939=>1000,25940=>1000,25941=>1000,25942=>1000,25943=>1000,25944=>1000,25945=>1000,25947=>1000,25948=>1000,25949=>1000,25950=>1000,25954=>1000,25955=>1000,25956=>1000,25957=>1000,25958=>1000,25959=>1000,25960=>1000,25962=>1000,25963=>1000,25964=>1000,25965=>1000,25967=>1000,25968=>1000,25970=>1000,25971=>1000,25972=>1000,25973=>1000,25974=>1000,25975=>1000,25976=>1000,25977=>1000,25978=>1000,25979=>1000,25980=>1000,25982=>1000,25983=>1000,25984=>1000,25985=>1000,25986=>1000,25987=>1000,25988=>1000,25989=>1000,25991=>1000,25992=>1000,25993=>1000,25995=>1000,25996=>1000,25998=>1000,26000=>1000,26001=>1000,26002=>1000,26003=>1000,26004=>1000,26005=>1000,26006=>1000,26007=>1000,26009=>1000,26011=>1000,26012=>1000,26013=>1000,26014=>1000,26015=>1000,26016=>1000,26017=>1000,26018=>1000,26020=>1000,26021=>1000,26023=>1000,26024=>1000,26025=>1000,26026=>1000,26027=>1000,26028=>1000,26029=>1000,26030=>1000,26031=>1000,26032=>1000,26034=>1000,26035=>1000,26038=>1000,26039=>1000,26040=>1000,26041=>1000,26043=>1000,26044=>1000,26045=>1000,26047=>1000,26049=>1000,26050=>1000,26051=>1000,26052=>1000,26053=>1000,26054=>1000,26059=>1000,26060=>1000,26061=>1000,26062=>1000,26063=>1000,26064=>1000,26066=>1000,26067=>1000,26070=>1000,26071=>1000,26073=>1000,26074=>1000,26075=>1000,26077=>1000,26078=>1000,26079=>1000,26080=>1000,26081=>1000,26082=>1000,26083=>1000,26085=>1000,26086=>1000,26087=>1000,26088=>1000,26089=>1000,26092=>1000,26093=>1000,26094=>1000,26095=>1000,26096=>1000,26097=>1000,26098=>1000,26099=>1000,26100=>1000,26101=>1000,26102=>1000,26103=>1000,26106=>1000,26107=>1000,26108=>1000,26109=>1000,26111=>1000,26112=>1000,26114=>1000,26115=>1000,26116=>1000,26117=>1000,26118=>1000,26119=>1000,26120=>1000,26121=>1000,26122=>1000,26123=>1000,26124=>1000,26125=>1000,26126=>1000,26127=>1000,26128=>1000,26129=>1000,26130=>1000,26131=>1000,26132=>1000,26133=>1000,26137=>1000,26140=>1000,26141=>1000,26142=>1000,26143=>1000,26144=>1000,26145=>1000,26146=>1000,26148=>1000,26149=>1000,26150=>1000,26151=>1000,26152=>1000,26155=>1000,26157=>1000,26158=>1000,26159=>1000,26160=>1000,26161=>1000,26162=>1000,26163=>1000,26164=>1000,26165=>1000,26166=>1000,26169=>1000,26170=>1000,26171=>1000,26172=>1000,26174=>1000,26175=>1000,26177=>1000,26178=>1000,26179=>1000,26180=>1000,26181=>1000,26183=>1000,26185=>1000,26186=>1000,26187=>1000,26188=>1000,26191=>1000,26193=>1000,26194=>1000,26195=>1000,26196=>1000,26197=>1000,26198=>1000,26199=>1000,26201=>1000,26202=>1000,26203=>1000,26204=>1000,26205=>1000,26206=>1000,26207=>1000,26209=>1000,26210=>1000,26212=>1000,26213=>1000,26214=>1000,26215=>1000,26216=>1000,26217=>1000,26218=>1000,26219=>1000,26220=>1000,26222=>1000,26223=>1000,26224=>1000,26225=>1000,26226=>1000,26227=>1000,26228=>1000,26230=>1000,26231=>1000,26232=>1000,26233=>1000,26234=>1000,26235=>1000,26236=>1000,26238=>1000,26240=>1000,26241=>1000,26242=>1000,26243=>1000,26244=>1000,26246=>1000,26247=>1000,26248=>1000,26249=>1000,26250=>1000,26251=>1000,26252=>1000,26253=>1000,26254=>1000,26256=>1000,26257=>1000,26260=>1000,26261=>1000,26262=>1000,26263=>1000,26264=>1000,26265=>1000,26269=>1000,26271=>1000,26272=>1000,26273=>1000,26274=>1000,26278=>1000,26279=>1000,26280=>1000,26281=>1000,26282=>1000,26283=>1000,26286=>1000,26287=>1000,26288=>1000,26289=>1000,26290=>1000,26291=>1000,26292=>1000,26293=>1000,26295=>1000,26296=>1000,26297=>1000,26298=>1000,26299=>1000,26300=>1000,26301=>1000,26302=>1000,26303=>1000,26304=>1000,26305=>1000,26308=>1000,26310=>1000,26311=>1000,26312=>1000,26313=>1000,26314=>1000,26315=>1000,26316=>1000,26319=>1000,26322=>1000,26326=>1000,26328=>1000,26329=>1000,26330=>1000,26331=>1000,26332=>1000,26333=>1000,26334=>1000,26336=>1000,26339=>1000,26340=>1000,26342=>1000,26344=>1000,26345=>1000,26347=>1000,26348=>1000,26349=>1000,26350=>1000,26352=>1000,26354=>1000,26355=>1000,26356=>1000,26357=>1000,26358=>1000,26359=>1000,26360=>1000,26361=>1000,26362=>1000,26363=>1000,26364=>1000,26365=>1000,26366=>1000,26367=>1000,26368=>1000,26369=>1000,26371=>1000,26372=>1000,26373=>1000,26376=>1000,26377=>1000,26378=>1000,26379=>1000,26381=>1000,26382=>1000,26383=>1000,26384=>1000,26386=>1000,26387=>1000,26388=>1000,26389=>1000,26390=>1000,26391=>1000,26392=>1000,26395=>1000,26397=>1000,26398=>1000,26399=>1000,26400=>1000,26401=>1000,26402=>1000,26403=>1000,26406=>1000,26407=>1000,26408=>1000,26410=>1000,26411=>1000,26412=>1000,26413=>1000,26414=>1000,26415=>1000,26417=>1000,26419=>1000,26420=>1000,26421=>1000,26422=>1000,26423=>1000,26424=>1000,26425=>1000,26426=>1000,26427=>1000,26428=>1000,26429=>1000,26430=>1000,26431=>1000,26432=>1000,26433=>1000,26434=>1000,26435=>1000,26437=>1000,26438=>1000,26439=>1000,26440=>1000,26441=>1000,26443=>1000,26444=>1000,26445=>1000,26446=>1000,26447=>1000,26448=>1000,26449=>1000,26451=>1000,26453=>1000,26454=>1000,26455=>1000,26457=>1000,26458=>1000,26460=>1000,26461=>1000,26462=>1000,26463=>1000,26464=>1000,26465=>1000,26466=>1000,26467=>1000,26468=>1000,26469=>1000,26470=>1000,26472=>1000,26473=>1000,26474=>1000,26476=>1000,26477=>1000,26479=>1000,26480=>1000,26481=>1000,26482=>1000,26483=>1000,26484=>1000,26485=>1000,26486=>1000,26487=>1000,26488=>1000,26489=>1000,26490=>1000,26491=>1000,26492=>1000,26493=>1000,26494=>1000,26495=>1000,26497=>1000,26499=>1000,26500=>1000,26501=>1000,26502=>1000,26503=>1000,26505=>1000,26507=>1000,26508=>1000,26509=>1000,26510=>1000,26511=>1000,26512=>1000,26513=>1000,26514=>1000,26515=>1000,26516=>1000,26517=>1000,26519=>1000,26520=>1000,26521=>1000,26522=>1000,26524=>1000,26525=>1000,26526=>1000,26527=>1000,26528=>1000,26529=>1000,26530=>1000,26531=>1000,26533=>1000,26534=>1000,26535=>1000,26536=>1000,26537=>1000,26538=>1000,26539=>1000,26541=>1000,26542=>1000,26543=>1000,26544=>1000,26546=>1000,26547=>1000,26548=>1000,26549=>1000,26550=>1000,26551=>1000,26552=>1000,26553=>1000,26554=>1000,26555=>1000,26558=>1000,26560=>1000,26561=>1000,26562=>1000,26563=>1000,26564=>1000,26565=>1000,26566=>1000,26568=>1000,26569=>1000,26570=>1000,26571=>1000,26572=>1000,26573=>1000,26574=>1000,26575=>1000,26576=>1000,26577=>1000,26578=>1000,26579=>1000,26580=>1000,26584=>1000,26585=>1000,26586=>1000,26587=>1000,26588=>1000,26589=>1000,26590=>1000,26591=>1000,26592=>1000,26594=>1000,26595=>1000,26596=>1000,26597=>1000,26598=>1000,26599=>1000,26601=>1000,26602=>1000,26603=>1000,26604=>1000,26605=>1000,26606=>1000,26607=>1000,26608=>1000,26609=>1000,26610=>1000,26611=>1000,26612=>1000,26613=>1000,26614=>1000,26615=>1000,26616=>1000,26618=>1000,26619=>1000,26620=>1000,26621=>1000,26622=>1000,26623=>1000,26624=>1000,26625=>1000,26626=>1000,26627=>1000,26628=>1000,26629=>1000,26631=>1000,26632=>1000,26633=>1000,26634=>1000,26635=>1000,26636=>1000,26638=>1000,26639=>1000,26641=>1000,26642=>1000,26643=>1000,26644=>1000,26646=>1000,26647=>1000,26648=>1000,26650=>1000,26652=>1000,26653=>1000,26654=>1000,26655=>1000,26656=>1000,26657=>1000,26658=>1000,26661=>1000,26662=>1000,26664=>1000,26665=>1000,26666=>1000,26667=>1000,26669=>1000,26670=>1000,26671=>1000,26673=>1000,26674=>1000,26675=>1000,26676=>1000,26677=>1000,26679=>1000,26680=>1000,26681=>1000,26682=>1000,26683=>1000,26684=>1000,26685=>1000,26686=>1000,26688=>1000,26689=>1000,26690=>1000,26691=>1000,26692=>1000,26693=>1000,26694=>1000,26696=>1000,26697=>1000,26698=>1000,26699=>1000,26700=>1000,26701=>1000,26702=>1000,26703=>1000,26704=>1000,26705=>1000,26706=>1000,26707=>1000,26708=>1000,26709=>1000,26713=>1000,26716=>1000,26717=>1000,26719=>1000,26720=>1000,26721=>1000,26722=>1000,26723=>1000,26724=>1000,26725=>1000,26726=>1000,26727=>1000,26728=>1000,26729=>1000,26731=>1000,26733=>1000,26734=>1000,26735=>1000,26737=>1000,26738=>1000,26740=>1000,26741=>1000,26742=>1000,26743=>1000,26744=>1000,26745=>1000,26747=>1000,26748=>1000,26749=>1000,26750=>1000,26751=>1000,26752=>1000,26753=>1000,26754=>1000,26755=>1000,26757=>1000,26758=>1000,26759=>1000,26761=>1000,26762=>1000,26763=>1000,26764=>1000,26765=>1000,26767=>1000,26768=>1000,26769=>1000,26770=>1000,26771=>1000,26772=>1000,26774=>1000,26775=>1000,26779=>1000,26780=>1000,26781=>1000,26783=>1000,26784=>1000,26785=>1000,26786=>1000,26787=>1000,26788=>1000,26790=>1000,26791=>1000,26792=>1000,26793=>1000,26794=>1000,26795=>1000,26796=>1000,26797=>1000,26798=>1000,26799=>1000,26800=>1000,26801=>1000,26802=>1000,26803=>1000,26804=>1000,26805=>1000,26806=>1000,26809=>1000,26810=>1000,26812=>1000,26816=>1000,26818=>1000,26820=>1000,26821=>1000,26822=>1000,26823=>1000,26824=>1000,26825=>1000,26826=>1000,26827=>1000,26828=>1000,26829=>1000,26830=>1000,26831=>1000,26832=>1000,26833=>1000,26834=>1000,26835=>1000,26836=>1000,26837=>1000,26838=>1000,26839=>1000,26840=>1000,26842=>1000,26844=>1000,26845=>1000,26846=>1000,26847=>1000,26848=>1000,26849=>1000,26851=>1000,26852=>1000,26854=>1000,26855=>1000,26856=>1000,26857=>1000,26858=>1000,26859=>1000,26860=>1000,26862=>1000,26863=>1000,26864=>1000,26865=>1000,26866=>1000,26867=>1000,26868=>1000,26869=>1000,26870=>1000,26871=>1000,26872=>1000,26873=>1000,26874=>1000,26875=>1000,26876=>1000,26877=>1000,26880=>1000,26881=>1000,26884=>1000,26885=>1000,26886=>1000,26887=>1000,26888=>1000,26890=>1000,26891=>1000,26892=>1000,26893=>1000,26894=>1000,26895=>1000,26896=>1000,26897=>1000,26898=>1000,26899=>1000,26900=>1000,26901=>1000,26903=>1000,26905=>1000,26906=>1000,26907=>1000,26908=>1000,26911=>1000,26912=>1000,26913=>1000,26914=>1000,26915=>1000,26916=>1000,26917=>1000,26918=>1000,26919=>1000,26920=>1000,26922=>1000,26925=>1000,26927=>1000,26928=>1000,26930=>1000,26931=>1000,26932=>1000,26933=>1000,26934=>1000,26935=>1000,26936=>1000,26937=>1000,26939=>1000,26940=>1000,26941=>1000,26943=>1000,26944=>1000,26945=>1000,26946=>1000,26948=>1000,26949=>1000,26952=>1000,26953=>1000,26954=>1000,26955=>1000,26956=>1000,26958=>1000,26959=>1000,26961=>1000,26962=>1000,26963=>1000,26964=>1000,26965=>1000,26966=>1000,26967=>1000,26968=>1000,26969=>1000,26970=>1000,26971=>1000,26972=>1000,26973=>1000,26974=>1000,26975=>1000,26976=>1000,26977=>1000,26978=>1000,26979=>1000,26981=>1000,26982=>1000,26984=>1000,26985=>1000,26986=>1000,26987=>1000,26988=>1000,26989=>1000,26990=>1000,26991=>1000,26992=>1000,26993=>1000,26995=>1000,26996=>1000,26997=>1000,26998=>1000,26999=>1000,27000=>1000,27001=>1000,27002=>1000,27003=>1000,27004=>1000,27005=>1000,27006=>1000,27008=>1000,27009=>1000,27010=>1000,27011=>1000,27012=>1000,27014=>1000,27015=>1000,27016=>1000,27017=>1000,27018=>1000,27021=>1000,27022=>1000,27024=>1000,27025=>1000,27027=>1000,27028=>1000,27029=>1000,27030=>1000,27031=>1000,27032=>1000,27033=>1000,27034=>1000,27035=>1000,27036=>1000,27038=>1000,27040=>1000,27041=>1000,27043=>1000,27044=>1000,27045=>1000,27046=>1000,27047=>1000,27048=>1000,27049=>1000,27050=>1000,27051=>1000,27052=>1000,27053=>1000,27054=>1000,27055=>1000,27056=>1000,27057=>1000,27058=>1000,27059=>1000,27060=>1000,27061=>1000,27062=>1000,27063=>1000,27065=>1000,27067=>1000,27068=>1000,27069=>1000,27070=>1000,27071=>1000,27073=>1000,27074=>1000,27075=>1000,27076=>1000,27078=>1000,27079=>1000,27081=>1000,27082=>1000,27083=>1000,27084=>1000,27085=>1000,27086=>1000,27087=>1000,27088=>1000,27091=>1000,27092=>1000,27096=>1000,27097=>1000,27099=>1000,27101=>1000,27102=>1000,27103=>1000,27104=>1000,27106=>1000,27108=>1000,27109=>1000,27110=>1000,27111=>1000,27112=>1000,27114=>1000,27115=>1000,27116=>1000,27117=>1000,27118=>1000,27121=>1000,27122=>1000,27123=>1000,27124=>1000,27126=>1000,27127=>1000,27128=>1000,27129=>1000,27131=>1000,27132=>1000,27133=>1000,27134=>1000,27135=>1000,27136=>1000,27137=>1000,27138=>1000,27140=>1000,27141=>1000,27142=>1000,27143=>1000,27144=>1000,27145=>1000,27146=>1000,27147=>1000,27148=>1000,27149=>1000,27151=>1000,27153=>1000,27154=>1000,27155=>1000,27156=>1000,27157=>1000,27158=>1000,27159=>1000,27160=>1000,27161=>1000,27163=>1000,27165=>1000,27166=>1000,27167=>1000,27168=>1000,27169=>1000,27170=>1000,27171=>1000,27173=>1000,27174=>1000,27175=>1000,27176=>1000,27177=>1000,27178=>1000,27179=>1000,27182=>1000,27183=>1000,27184=>1000,27185=>1000,27186=>1000,27188=>1000,27189=>1000,27190=>1000,27192=>1000,27193=>1000,27194=>1000,27195=>1000,27196=>1000,27197=>1000,27198=>1000,27199=>1000,27200=>1000,27201=>1000,27204=>1000,27206=>1000,27207=>1000,27208=>1000,27209=>1000,27211=>1000,27213=>1000,27214=>1000,27215=>1000,27216=>1000,27217=>1000,27218=>1000,27219=>1000,27220=>1000,27221=>1000,27222=>1000,27224=>1000,27225=>1000,27226=>1000,27227=>1000,27229=>1000,27230=>1000,27231=>1000,27232=>1000,27233=>1000,27234=>1000,27236=>1000,27237=>1000,27238=>1000,27239=>1000,27240=>1000,27241=>1000,27242=>1000,27243=>1000,27245=>1000,27247=>1000,27249=>1000,27250=>1000,27251=>1000,27254=>1000,27256=>1000,27257=>1000,27260=>1000,27262=>1000,27263=>1000,27264=>1000,27265=>1000,27267=>1000,27268=>1000,27269=>1000,27271=>1000,27273=>1000,27276=>1000,27277=>1000,27278=>1000,27280=>1000,27281=>1000,27282=>1000,27283=>1000,27284=>1000,27285=>1000,27286=>1000,27287=>1000,27290=>1000,27291=>1000,27292=>1000,27294=>1000,27295=>1000,27296=>1000,27297=>1000,27298=>1000,27299=>1000,27300=>1000,27301=>1000,27302=>1000,27304=>1000,27305=>1000,27306=>1000,27307=>1000,27308=>1000,27309=>1000,27310=>1000,27311=>1000,27315=>1000,27316=>1000,27318=>1000,27319=>1000,27320=>1000,27321=>1000,27322=>1000,27323=>1000,27325=>1000,27329=>1000,27330=>1000,27331=>1000,27333=>1000,27334=>1000,27335=>1000,27339=>1000,27340=>1000,27341=>1000,27343=>1000,27344=>1000,27345=>1000,27347=>1000,27353=>1000,27354=>1000,27355=>1000,27356=>1000,27357=>1000,27358=>1000,27359=>1000,27360=>1000,27361=>1000,27362=>1000,27364=>1000,27365=>1000,27367=>1000,27368=>1000,27370=>1000,27371=>1000,27372=>1000,27374=>1000,27375=>1000,27376=>1000,27377=>1000,27379=>1000,27382=>1000,27384=>1000,27385=>1000,27386=>1000,27387=>1000,27388=>1000,27392=>1000,27394=>1000,27395=>1000,27396=>1000,27397=>1000,27400=>1000,27401=>1000,27402=>1000,27403=>1000,27404=>1000,27407=>1000,27408=>1000,27409=>1000,27410=>1000,27411=>1000,27414=>1000,27415=>1000,27416=>1000,27417=>1000,27418=>1000,27421=>1000,27422=>1000,27423=>1000,27424=>1000,27425=>1000,27426=>1000,27427=>1000,27428=>1000,27429=>1000,27431=>1000,27432=>1000,27436=>1000,27437=>1000,27439=>1000,27441=>1000,27442=>1000,27443=>1000,27444=>1000,27446=>1000,27447=>1000,27448=>1000,27449=>1000,27450=>1000,27451=>1000,27452=>1000,27453=>1000,27454=>1000,27455=>1000,27457=>1000,27458=>1000,27459=>1000,27461=>1000,27462=>1000,27463=>1000,27464=>1000,27465=>1000,27466=>1000,27467=>1000,27468=>1000,27469=>1000,27470=>1000,27472=>1000,27473=>1000,27475=>1000,27476=>1000,27477=>1000,27478=>1000,27481=>1000,27483=>1000,27484=>1000,27486=>1000,27487=>1000,27488=>1000,27489=>1000,27490=>1000,27491=>1000,27492=>1000,27493=>1000,27494=>1000,27495=>1000,27497=>1000,27498=>1000,27501=>1000,27503=>1000,27506=>1000,27507=>1000,27508=>1000,27510=>1000,27511=>1000,27512=>1000,27513=>1000,27515=>1000,27516=>1000,27518=>1000,27519=>1000,27520=>1000,27521=>1000,27522=>1000,27523=>1000,27524=>1000,27526=>1000,27527=>1000,27528=>1000,27529=>1000,27530=>1000,27531=>1000,27532=>1000,27533=>1000,27534=>1000,27535=>1000,27537=>1000,27538=>1000,27539=>1000,27540=>1000,27541=>1000,27542=>1000,27543=>1000,27544=>1000,27545=>1000,27546=>1000,27547=>1000,27550=>1000,27551=>1000,27552=>1000,27553=>1000,27554=>1000,27555=>1000,27556=>1000,27557=>1000,27558=>1000,27559=>1000,27562=>1000,27563=>1000,27565=>1000,27566=>1000,27567=>1000,27568=>1000,27569=>1000,27570=>1000,27571=>1000,27572=>1000,27573=>1000,27574=>1000,27575=>1000,27578=>1000,27579=>1000,27580=>1000,27581=>1000,27583=>1000,27584=>1000,27585=>1000,27586=>1000,27587=>1000,27588=>1000,27589=>1000,27590=>1000,27591=>1000,27592=>1000,27593=>1000,27594=>1000,27595=>1000,27596=>1000,27597=>1000,27598=>1000,27599=>1000,27600=>1000,27602=>1000,27603=>1000,27604=>1000,27605=>1000,27606=>1000,27607=>1000,27608=>1000,27609=>1000,27610=>1000,27611=>1000,27614=>1000,27615=>1000,27616=>1000,27617=>1000,27618=>1000,27619=>1000,27620=>1000,27622=>1000,27623=>1000,27624=>1000,27626=>1000,27627=>1000,27628=>1000,27631=>1000,27632=>1000,27634=>1000,27635=>1000,27637=>1000,27639=>1000,27640=>1000,27641=>1000,27643=>1000,27644=>1000,27645=>1000,27646=>1000,27647=>1000,27648=>1000,27649=>1000,27650=>1000,27651=>1000,27652=>1000,27653=>1000,27654=>1000,27655=>1000,27656=>1000,27657=>1000,27659=>1000,27660=>1000,27661=>1000,27663=>1000,27664=>1000,27665=>1000,27667=>1000,27668=>1000,27669=>1000,27670=>1000,27671=>1000,27672=>1000,27673=>1000,27674=>1000,27675=>1000,27677=>1000,27679=>1000,27680=>1000,27681=>1000,27682=>1000,27683=>1000,27684=>1000,27685=>1000,27686=>1000,27687=>1000,27688=>1000,27689=>1000,27690=>1000,27691=>1000,27692=>1000,27694=>1000,27695=>1000,27696=>1000,27698=>1000,27699=>1000,27700=>1000,27701=>1000,27702=>1000,27703=>1000,27704=>1000,27707=>1000,27709=>1000,27710=>1000,27711=>1000,27712=>1000,27713=>1000,27714=>1000,27715=>1000,27718=>1000,27719=>1000,27721=>1000,27722=>1000,27723=>1000,27724=>1000,27725=>1000,27726=>1000,27727=>1000,27728=>1000,27730=>1000,27732=>1000,27733=>1000,27735=>1000,27737=>1000,27738=>1000,27739=>1000,27740=>1000,27741=>1000,27742=>1000,27743=>1000,27744=>1000,27745=>1000,27746=>1000,27748=>1000,27749=>1000,27750=>1000,27751=>1000,27752=>1000,27753=>1000,27754=>1000,27755=>1000,27757=>1000,27759=>1000,27760=>1000,27761=>1000,27762=>1000,27763=>1000,27764=>1000,27766=>1000,27768=>1000,27769=>1000,27770=>1000,27771=>1000,27773=>1000,27774=>1000,27776=>1000,27777=>1000,27778=>1000,27779=>1000,27780=>1000,27781=>1000,27782=>1000,27783=>1000,27784=>1000,27785=>1000,27786=>1000,27787=>1000,27788=>1000,27789=>1000,27790=>1000,27791=>1000,27792=>1000,27794=>1000,27795=>1000,27796=>1000,27797=>1000,27798=>1000,27800=>1000,27801=>1000,27802=>1000,27803=>1000,27804=>1000,27805=>1000,27807=>1000,27809=>1000,27810=>1000,27811=>1000,27812=>1000,27813=>1000,27814=>1000,27815=>1000,27817=>1000,27818=>1000,27819=>1000,27820=>1000,27821=>1000,27822=>1000,27824=>1000,27825=>1000,27826=>1000,27827=>1000,27828=>1000,27830=>1000,27831=>1000,27832=>1000,27833=>1000,27834=>1000,27835=>1000,27836=>1000,27837=>1000,27838=>1000,27839=>1000,27840=>1000,27841=>1000,27842=>1000,27843=>1000,27844=>1000,27845=>1000,27846=>1000,27847=>1000,27849=>1000,27850=>1000,27852=>1000,27853=>1000,27855=>1000,27856=>1000,27857=>1000,27858=>1000,27859=>1000,27860=>1000,27861=>1000,27862=>1000,27863=>1000,27865=>1000,27866=>1000,27867=>1000,27868=>1000,27869=>1000,27870=>1000,27872=>1000,27873=>1000,27874=>1000,27875=>1000,27877=>1000,27879=>1000,27880=>1000,27881=>1000,27882=>1000,27883=>1000,27884=>1000,27885=>1000,27886=>1000,27887=>1000,27888=>1000,27889=>1000,27890=>1000,27891=>1000,27893=>1000,27894=>1000,27895=>1000,27896=>1000,27897=>1000,27898=>1000,27899=>1000,27900=>1000,27901=>1000,27902=>1000,27904=>1000,27905=>1000,27907=>1000,27908=>1000,27911=>1000,27912=>1000,27913=>1000,27914=>1000,27915=>1000,27916=>1000,27917=>1000,27918=>1000,27919=>1000,27920=>1000,27921=>1000,27922=>1000,27926=>1000,27927=>1000,27928=>1000,27929=>1000,27930=>1000,27931=>1000,27933=>1000,27934=>1000,27935=>1000,27936=>1000,27938=>1000,27941=>1000,27943=>1000,27944=>1000,27945=>1000,27946=>1000,27947=>1000,27948=>1000,27949=>1000,27950=>1000,27951=>1000,27952=>1000,27953=>1000,27954=>1000,27955=>1000,27956=>1000,27957=>1000,27958=>1000,27959=>1000,27960=>1000,27961=>1000,27962=>1000,27963=>1000,27964=>1000,27965=>1000,27966=>1000,27967=>1000,27968=>1000,27969=>1000,27970=>1000,27971=>1000,27972=>1000,27973=>1000,27974=>1000,27975=>1000,27976=>1000,27978=>1000,27979=>1000,27981=>1000,27982=>1000,27983=>1000,27985=>1000,27986=>1000,27987=>1000,27988=>1000,27992=>1000,27993=>1000,27994=>1000,27996=>1000,27998=>1000,27999=>1000,28000=>1000,28001=>1000,28002=>1000,28003=>1000,28004=>1000,28005=>1000,28006=>1000,28007=>1000,28008=>1000,28009=>1000,28010=>1000,28012=>1000,28013=>1000,28014=>1000,28015=>1000,28016=>1000,28020=>1000,28021=>1000,28022=>1000,28023=>1000,28024=>1000,28025=>1000,28026=>1000,28027=>1000,28028=>1000,28029=>1000,28030=>1000,28031=>1000,28032=>1000,28034=>1000,28035=>1000,28036=>1000,28037=>1000,28038=>1000,28039=>1000,28040=>1000,28041=>1000,28042=>1000,28043=>1000,28044=>1000,28045=>1000,28046=>1000,28048=>1000,28049=>1000,28050=>1000,28051=>1000,28052=>1000,28053=>1000,28054=>1000,28055=>1000,28056=>1000,28057=>1000,28059=>1000,28060=>1000,28061=>1000,28062=>1000,28063=>1000,28064=>1000,28065=>1000,28067=>1000,28068=>1000,28070=>1000,28071=>1000,28072=>1000,28073=>1000,28074=>1000,28075=>1000,28076=>1000,28078=>1000,28079=>1000,28082=>1000,28083=>1000,28084=>1000,28085=>1000,28087=>1000,28088=>1000,28090=>1000,28091=>1000,28092=>1000,28093=>1000,28094=>1000,28095=>1000,28096=>1000,28098=>1000,28099=>1000,28100=>1000,28101=>1000,28102=>1000,28103=>1000,28104=>1000,28105=>1000,28106=>1000,28107=>1000,28108=>1000,28109=>1000,28111=>1000,28112=>1000,28113=>1000,28114=>1000,28115=>1000,28116=>1000,28117=>1000,28118=>1000,28119=>1000,28120=>1000,28121=>1000,28122=>1000,28123=>1000,28124=>1000,28125=>1000,28126=>1000,28127=>1000,28128=>1000,28129=>1000,28130=>1000,28131=>1000,28132=>1000,28133=>1000,28134=>1000,28136=>1000,28137=>1000,28138=>1000,28139=>1000,28140=>1000,28141=>1000,28142=>1000,28143=>1000,28144=>1000,28145=>1000,28146=>1000,28147=>1000,28148=>1000,28149=>1000,28150=>1000,28151=>1000,28152=>1000,28153=>1000,28154=>1000,28155=>1000,28156=>1000,28157=>1000,28160=>1000,28163=>1000,28165=>1000,28167=>1000,28168=>1000,28169=>1000,28170=>1000,28171=>1000,28172=>1000,28173=>1000,28174=>1000,28176=>1000,28177=>1000,28179=>1000,28180=>1000,28181=>1000,28182=>1000,28183=>1000,28185=>1000,28186=>1000,28187=>1000,28188=>1000,28189=>1000,28191=>1000,28192=>1000,28193=>1000,28194=>1000,28195=>1000,28196=>1000,28197=>1000,28198=>1000,28199=>1000,28200=>1000,28201=>1000,28203=>1000,28204=>1000,28205=>1000,28206=>1000,28207=>1000,28208=>1000,28209=>1000,28210=>1000,28211=>1000,28212=>1000,28213=>1000,28214=>1000,28216=>1000,28217=>1000,28218=>1000,28219=>1000,28220=>1000,28221=>1000,28222=>1000,28223=>1000,28224=>1000,28225=>1000,28227=>1000,28228=>1000,28229=>1000,28230=>1000,28231=>1000,28233=>1000,28234=>1000,28235=>1000,28237=>1000,28238=>1000,28241=>1000,28242=>1000,28243=>1000,28244=>1000,28245=>1000,28246=>1000,28248=>1000,28250=>1000,28251=>1000,28252=>1000,28253=>1000,28254=>1000,28255=>1000,28256=>1000,28257=>1000,28258=>1000,28259=>1000,28260=>1000,28261=>1000,28262=>1000,28263=>1000,28264=>1000,28265=>1000,28267=>1000,28270=>1000,28271=>1000,28273=>1000,28274=>1000,28275=>1000,28276=>1000,28278=>1000,28279=>1000,28280=>1000,28281=>1000,28282=>1000,28286=>1000,28287=>1000,28288=>1000,28290=>1000,28291=>1000,28293=>1000,28294=>1000,28296=>1000,28297=>1000,28300=>1000,28301=>1000,28302=>1000,28303=>1000,28304=>1000,28306=>1000,28307=>1000,28308=>1000,28310=>1000,28311=>1000,28312=>1000,28313=>1000,28315=>1000,28316=>1000,28317=>1000,28318=>1000,28319=>1000,28320=>1000,28321=>1000,28322=>1000,28323=>1000,28324=>1000,28325=>1000,28326=>1000,28327=>1000,28330=>1000,28331=>1000,28334=>1000,28335=>1000,28336=>1000,28337=>1000,28338=>1000,28339=>1000,28340=>1000,28342=>1000,28343=>1000,28345=>1000,28346=>1000,28347=>1000,28348=>1000,28349=>1000,28350=>1000,28351=>1000,28352=>1000,28353=>1000,28354=>1000,28355=>1000,28356=>1000,28357=>1000,28358=>1000,28359=>1000,28360=>1000,28361=>1000,28362=>1000,28363=>1000,28364=>1000,28365=>1000,28366=>1000,28367=>1000,28368=>1000,28369=>1000,28370=>1000,28371=>1000,28372=>1000,28373=>1000,28374=>1000,28375=>1000,28376=>1000,28378=>1000,28380=>1000,28381=>1000,28382=>1000,28383=>1000,28384=>1000,28385=>1000,28386=>1000,28388=>1000,28389=>1000,28390=>1000,28392=>1000,28393=>1000,28395=>1000,28396=>1000,28397=>1000,28398=>1000,28399=>1000,28401=>1000,28402=>1000,28404=>1000,28405=>1000,28406=>1000,28407=>1000,28408=>1000,28409=>1000,28411=>1000,28412=>1000,28413=>1000,28414=>1000,28415=>1000,28416=>1000,28417=>1000,28418=>1000,28419=>1000,28421=>1000,28422=>1000,28423=>1000,28424=>1000,28425=>1000,28426=>1000,28429=>1000,28430=>1000,28431=>1000,28433=>1000,28434=>1000,28435=>1000,28436=>1000,28437=>1000,28440=>1000,28441=>1000,28442=>1000,28444=>1000,28446=>1000,28447=>1000,28448=>1000,28449=>1000,28450=>1000,28451=>1000,28452=>1000,28453=>1000,28454=>1000,28455=>1000,28457=>1000,28458=>1000,28459=>1000,28460=>1000,28461=>1000,28462=>1000,28463=>1000,28464=>1000,28465=>1000,28466=>1000,28467=>1000,28469=>1000,28470=>1000,28471=>1000,28472=>1000,28473=>1000,28474=>1000,28475=>1000,28476=>1000,28478=>1000,28479=>1000,28480=>1000,28481=>1000,28483=>1000,28485=>1000,28486=>1000,28487=>1000,28491=>1000,28493=>1000,28494=>1000,28495=>1000,28496=>1000,28497=>1000,28498=>1000,28499=>1000,28500=>1000,28501=>1000,28503=>1000,28504=>1000,28506=>1000,28507=>1000,28508=>1000,28509=>1000,28510=>1000,28511=>1000,28512=>1000,28513=>1000,28514=>1000,28515=>1000,28516=>1000,28518=>1000,28519=>1000,28521=>1000,28522=>1000,28523=>1000,28524=>1000,28525=>1000,28526=>1000,28527=>1000,28528=>1000,28530=>1000,28531=>1000,28532=>1000,28534=>1000,28535=>1000,28536=>1000,28538=>1000,28539=>1000,28540=>1000,28541=>1000,28542=>1000,28543=>1000,28544=>1000,28545=>1000,28546=>1000,28548=>1000,28549=>1000,28550=>1000,28551=>1000,28552=>1000,28553=>1000,28555=>1000,28556=>1000,28557=>1000,28558=>1000,28560=>1000,28561=>1000,28562=>1000,28563=>1000,28564=>1000,28565=>1000,28566=>1000,28567=>1000,28572=>1000,28574=>1000,28576=>1000,28577=>1000,28578=>1000,28579=>1000,28580=>1000,28581=>1000,28582=>1000,28583=>1000,28584=>1000,28585=>1000,28586=>1000,28587=>1000,28588=>1000,28589=>1000,28590=>1000,28591=>1000,28592=>1000,28593=>1000,28594=>1000,28595=>1000,28596=>1000,28597=>1000,28598=>1000,28600=>1000,28601=>1000,28602=>1000,28604=>1000,28605=>1000,28606=>1000,28607=>1000,28608=>1000,28609=>1000,28610=>1000,28611=>1000,28612=>1000,28614=>1000,28615=>1000,28616=>1000,28617=>1000,28618=>1000,28619=>1000,28620=>1000,28621=>1000,28622=>1000,28623=>1000,28625=>1000,28626=>1000,28628=>1000,28629=>1000,28632=>1000,28634=>1000,28635=>1000,28636=>1000,28637=>1000,28638=>1000,28639=>1000,28640=>1000,28641=>1000,28642=>1000,28643=>1000,28644=>1000,28646=>1000,28647=>1000,28648=>1000,28649=>1000,28651=>1000,28652=>1000,28653=>1000,28654=>1000,28655=>1000,28656=>1000,28657=>1000,28658=>1000,28659=>1000,28660=>1000,28661=>1000,28662=>1000,28663=>1000,28666=>1000,28667=>1000,28668=>1000,28670=>1000,28671=>1000,28672=>1000,28673=>1000,28676=>1000,28677=>1000,28678=>1000,28679=>1000,28681=>1000,28682=>1000,28683=>1000,28684=>1000,28685=>1000,28686=>1000,28687=>1000,28689=>1000,28692=>1000,28693=>1000,28694=>1000,28695=>1000,28696=>1000,28697=>1000,28698=>1000,28699=>1000,28700=>1000,28701=>1000,28702=>1000,28703=>1000,28704=>1000,28705=>1000,28706=>1000,28707=>1000,28708=>1000,28710=>1000,28711=>1000,28712=>1000,28713=>1000,28714=>1000,28715=>1000,28716=>1000,28719=>1000,28720=>1000,28721=>1000,28722=>1000,28723=>1000,28724=>1000,28725=>1000,28727=>1000,28728=>1000,28729=>1000,28730=>1000,28731=>1000,28732=>1000,28734=>1000,28735=>1000,28736=>1000,28737=>1000,28738=>1000,28739=>1000,28740=>1000,28741=>1000,28742=>1000,28744=>1000,28745=>1000,28746=>1000,28748=>1000,28751=>1000,28752=>1000,28753=>1000,28754=>1000,28757=>1000,28758=>1000,28759=>1000,28760=>1000,28762=>1000,28763=>1000,28765=>1000,28766=>1000,28767=>1000,28768=>1000,28769=>1000,28770=>1000,28771=>1000,28772=>1000,28773=>1000,28774=>1000,28776=>1000,28777=>1000,28778=>1000,28779=>1000,28780=>1000,28781=>1000,28783=>1000,28784=>1000,28785=>1000,28788=>1000,28789=>1000,28790=>1000,28792=>1000,28794=>1000,28796=>1000,28797=>1000,28798=>1000,28799=>1000,28800=>1000,28802=>1000,28803=>1000,28804=>1000,28805=>1000,28806=>1000,28809=>1000,28810=>1000,28814=>1000,28817=>1000,28818=>1000,28819=>1000,28820=>1000,28821=>1000,28822=>1000,28824=>1000,28825=>1000,28826=>1000,28828=>1000,28829=>1000,28831=>1000,28833=>1000,28836=>1000,28841=>1000,28843=>1000,28844=>1000,28845=>1000,28846=>1000,28847=>1000,28848=>1000,28849=>1000,28851=>1000,28852=>1000,28853=>1000,28855=>1000,28856=>1000,28857=>1000,28858=>1000,28859=>1000,28860=>1000,28861=>1000,28862=>1000,28864=>1000,28865=>1000,28866=>1000,28867=>1000,28869=>1000,28870=>1000,28871=>1000,28872=>1000,28874=>1000,28875=>1000,28877=>1000,28878=>1000,28879=>1000,28881=>1000,28882=>1000,28883=>1000,28884=>1000,28887=>1000,28888=>1000,28889=>1000,28890=>1000,28891=>1000,28892=>1000,28893=>1000,28894=>1000,28895=>1000,28896=>1000,28897=>1000,28898=>1000,28900=>1000,28902=>1000,28903=>1000,28904=>1000,28905=>1000,28907=>1000,28908=>1000,28909=>1000,28911=>1000,28912=>1000,28913=>1000,28915=>1000,28916=>1000,28918=>1000,28919=>1000,28920=>1000,28921=>1000,28922=>1000,28923=>1000,28924=>1000,28925=>1000,28927=>1000,28928=>1000,28930=>1000,28932=>1000,28934=>1000,28937=>1000,28938=>1000,28939=>1000,28940=>1000,28941=>1000,28942=>1000,28943=>1000,28944=>1000,28947=>1000,28948=>1000,28949=>1000,28950=>1000,28951=>1000,28952=>1000,28953=>1000,28954=>1000,28955=>1000,28956=>1000,28958=>1000,28959=>1000,28960=>1000,28961=>1000,28962=>1000,28963=>1000,28965=>1000,28966=>1000,28968=>1000,28974=>1000,28975=>1000,28976=>1000,28977=>1000,28978=>1000,28982=>1000,28986=>1000,28988=>1000,28993=>1000,28994=>1000,28995=>1000,28996=>1000,28997=>1000,28998=>1000,28999=>1000,29001=>1000,29002=>1000,29003=>1000,29004=>1000,29005=>1000,29006=>1000,29008=>1000,29010=>1000,29011=>1000,29012=>1000,29013=>1000,29014=>1000,29016=>1000,29017=>1000,29018=>1000,29020=>1000,29021=>1000,29022=>1000,29023=>1000,29024=>1000,29025=>1000,29026=>1000,29027=>1000,29028=>1000,29029=>1000,29030=>1000,29031=>1000,29032=>1000,29033=>1000,29034=>1000,29036=>1000,29038=>1000,29040=>1000,29042=>1000,29043=>1000,29048=>1000,29050=>1000,29051=>1000,29053=>1000,29056=>1000,29057=>1000,29058=>1000,29060=>1000,29061=>1000,29062=>1000,29063=>1000,29064=>1000,29065=>1000,29066=>1000,29071=>1000,29072=>1000,29074=>1000,29076=>1000,29077=>1000,29079=>1000,29080=>1000,29081=>1000,29082=>1000,29083=>1000,29084=>1000,29085=>1000,29086=>1000,29087=>1000,29088=>1000,29089=>1000,29090=>1000,29092=>1000,29093=>1000,29095=>1000,29096=>1000,29097=>1000,29098=>1000,29100=>1000,29103=>1000,29104=>1000,29105=>1000,29106=>1000,29107=>1000,29109=>1000,29112=>1000,29113=>1000,29114=>1000,29116=>1000,29117=>1000,29118=>1000,29119=>1000,29120=>1000,29121=>1000,29122=>1000,29123=>1000,29124=>1000,29125=>1000,29126=>1000,29127=>1000,29128=>1000,29129=>1000,29130=>1000,29131=>1000,29134=>1000,29135=>1000,29136=>1000,29138=>1000,29140=>1000,29141=>1000,29142=>1000,29143=>1000,29144=>1000,29145=>1000,29146=>1000,29147=>1000,29148=>1000,29151=>1000,29152=>1000,29153=>1000,29154=>1000,29156=>1000,29157=>1000,29158=>1000,29159=>1000,29160=>1000,29164=>1000,29165=>1000,29166=>1000,29168=>1000,29169=>1000,29170=>1000,29172=>1000,29173=>1000,29176=>1000,29177=>1000,29179=>1000,29180=>1000,29181=>1000,29182=>1000,29183=>1000,29184=>1000,29185=>1000,29186=>1000,29187=>1000,29189=>1000,29190=>1000,29191=>1000,29194=>1000,29196=>1000,29197=>1000,29200=>1000,29203=>1000,29204=>1000,29209=>1000,29210=>1000,29211=>1000,29213=>1000,29214=>1000,29215=>1000,29218=>1000,29219=>1000,29222=>1000,29223=>1000,29224=>1000,29225=>1000,29226=>1000,29228=>1000,29229=>1000,29232=>1000,29233=>1000,29234=>1000,29237=>1000,29238=>1000,29239=>1000,29240=>1000,29241=>1000,29242=>1000,29243=>1000,29244=>1000,29245=>1000,29246=>1000,29247=>1000,29248=>1000,29249=>1000,29250=>1000,29252=>1000,29254=>1000,29255=>1000,29256=>1000,29257=>1000,29258=>1000,29259=>1000,29260=>1000,29261=>1000,29263=>1000,29266=>1000,29267=>1000,29270=>1000,29272=>1000,29273=>1000,29274=>1000,29275=>1000,29277=>1000,29278=>1000,29279=>1000,29280=>1000,29281=>1000,29282=>1000,29283=>1000,29286=>1000,29287=>1000,29289=>1000,29290=>1000,29292=>1000,29294=>1000,29295=>1000,29296=>1000,29298=>1000,29299=>1000,29300=>1000,29301=>1000,29302=>1000,29303=>1000,29304=>1000,29305=>1000,29306=>1000,29307=>1000,29308=>1000,29309=>1000,29310=>1000,29311=>1000,29312=>1000,29313=>1000,29314=>1000,29316=>1000,29317=>1000,29318=>1000,29319=>1000,29320=>1000,29321=>1000,29322=>1000,29323=>1000,29324=>1000,29325=>1000,29326=>1000,29327=>1000,29328=>1000,29329=>1000,29330=>1000,29331=>1000,29333=>1000,29334=>1000,29335=>1000,29336=>1000,29338=>1000,29339=>1000,29341=>1000,29342=>1000,29343=>1000,29344=>1000,29345=>1000,29346=>1000,29347=>1000,29348=>1000,29349=>1000,29350=>1000,29351=>1000,29352=>1000,29353=>1000,29354=>1000,29356=>1000,29357=>1000,29358=>1000,29359=>1000,29360=>1000,29361=>1000,29362=>1000,29364=>1000,29365=>1000,29366=>1000,29367=>1000,29368=>1000,29369=>1000,29370=>1000,29373=>1000,29374=>1000,29375=>1000,29376=>1000,29377=>1000,29378=>1000,29379=>1000,29380=>1000,29381=>1000,29382=>1000,29384=>1000,29385=>1000,29386=>1000,29387=>1000,29388=>1000,29389=>1000,29390=>1000,29392=>1000,29393=>1000,29394=>1000,29396=>1000,29398=>1000,29399=>1000,29400=>1000,29401=>1000,29402=>1000,29403=>1000,29404=>1000,29406=>1000,29407=>1000,29408=>1000,29409=>1000,29410=>1000,29411=>1000,29412=>1000,29414=>1000,29416=>1000,29417=>1000,29418=>1000,29419=>1000,29420=>1000,29421=>1000,29422=>1000,29423=>1000,29424=>1000,29425=>1000,29426=>1000,29427=>1000,29428=>1000,29430=>1000,29431=>1000,29432=>1000,29433=>1000,29434=>1000,29435=>1000,29436=>1000,29437=>1000,29438=>1000,29439=>1000,29440=>1000,29441=>1000,29443=>1000,29447=>1000,29448=>1000,29450=>1000,29451=>1000,29452=>1000,29454=>1000,29455=>1000,29457=>1000,29458=>1000,29459=>1000,29461=>1000,29462=>1000,29463=>1000,29464=>1000,29465=>1000,29467=>1000,29468=>1000,29469=>1000,29470=>1000,29471=>1000,29473=>1000,29474=>1000,29475=>1000,29476=>1000,29477=>1000,29478=>1000,29479=>1000,29481=>1000,29482=>1000,29483=>1000,29484=>1000,29485=>1000,29486=>1000,29487=>1000,29488=>1000,29489=>1000,29490=>1000,29491=>1000,29492=>1000,29493=>1000,29494=>1000,29495=>1000,29496=>1000,29497=>1000,29498=>1000,29499=>1000,29500=>1000,29502=>1000,29503=>1000,29504=>1000,29506=>1000,29507=>1000,29508=>1000,29509=>1000,29513=>1000,29514=>1000,29516=>1000,29517=>1000,29518=>1000,29519=>1000,29520=>1000,29521=>1000,29522=>1000,29527=>1000,29528=>1000,29529=>1000,29530=>1000,29531=>1000,29533=>1000,29534=>1000,29535=>1000,29536=>1000,29537=>1000,29538=>1000,29539=>1000,29541=>1000,29542=>1000,29543=>1000,29544=>1000,29545=>1000,29546=>1000,29547=>1000,29548=>1000,29549=>1000,29550=>1000,29551=>1000,29552=>1000,29554=>1000,29555=>1000,29557=>1000,29558=>1000,29559=>1000,29560=>1000,29562=>1000,29563=>1000,29564=>1000,29565=>1000,29566=>1000,29567=>1000,29568=>1000,29569=>1000,29570=>1000,29571=>1000,29572=>1000,29573=>1000,29574=>1000,29575=>1000,29576=>1000,29577=>1000,29578=>1000,29579=>1000,29582=>1000,29585=>1000,29586=>1000,29587=>1000,29588=>1000,29589=>1000,29590=>1000,29591=>1000,29592=>1000,29595=>1000,29597=>1000,29599=>1000,29600=>1000,29601=>1000,29602=>1000,29604=>1000,29605=>1000,29606=>1000,29607=>1000,29608=>1000,29609=>1000,29611=>1000,29612=>1000,29613=>1000,29614=>1000,29615=>1000,29616=>1000,29618=>1000,29619=>1000,29620=>1000,29621=>1000,29622=>1000,29623=>1000,29624=>1000,29625=>1000,29626=>1000,29627=>1000,29628=>1000,29629=>1000,29630=>1000,29631=>1000,29632=>1000,29634=>1000,29635=>1000,29637=>1000,29638=>1000,29639=>1000,29640=>1000,29641=>1000,29642=>1000,29643=>1000,29644=>1000,29645=>1000,29646=>1000,29647=>1000,29648=>1000,29649=>1000,29650=>1000,29651=>1000,29652=>1000,29654=>1000,29655=>1000,29656=>1000,29657=>1000,29658=>1000,29659=>1000,29660=>1000,29661=>1000,29662=>1000,29664=>1000,29667=>1000,29668=>1000,29669=>1000,29670=>1000,29671=>1000,29672=>1000,29673=>1000,29674=>1000,29675=>1000,29677=>1000,29678=>1000,29681=>1000,29682=>1000,29684=>1000,29685=>1000,29686=>1000,29687=>1000,29688=>1000,29689=>1000,29690=>1000,29692=>1000,29693=>1000,29694=>1000,29695=>1000,29696=>1000,29697=>1000,29699=>1000,29700=>1000,29701=>1000,29702=>1000,29703=>1000,29704=>1000,29705=>1000,29706=>1000,29707=>1000,29708=>1000,29709=>1000,29711=>1000,29712=>1000,29715=>1000,29718=>1000,29722=>1000,29723=>1000,29725=>1000,29728=>1000,29729=>1000,29730=>1000,29731=>1000,29732=>1000,29733=>1000,29734=>1000,29736=>1000,29737=>1000,29738=>1000,29739=>1000,29740=>1000,29741=>1000,29742=>1000,29743=>1000,29744=>1000,29745=>1000,29746=>1000,29747=>1000,29748=>1000,29749=>1000,29750=>1000,29752=>1000,29754=>1000,29756=>1000,29759=>1000,29760=>1000,29761=>1000,29762=>1000,29763=>1000,29764=>1000,29766=>1000,29770=>1000,29771=>1000,29773=>1000,29774=>1000,29775=>1000,29776=>1000,29777=>1000,29778=>1000,29780=>1000,29781=>1000,29783=>1000,29785=>1000,29786=>1000,29787=>1000,29788=>1000,29790=>1000,29791=>1000,29792=>1000,29794=>1000,29795=>1000,29796=>1000,29797=>1000,29799=>1000,29800=>1000,29801=>1000,29802=>1000,29805=>1000,29806=>1000,29807=>1000,29808=>1000,29809=>1000,29810=>1000,29811=>1000,29813=>1000,29814=>1000,29815=>1000,29817=>1000,29820=>1000,29821=>1000,29822=>1000,29823=>1000,29824=>1000,29825=>1000,29826=>1000,29827=>1000,29829=>1000,29830=>1000,29831=>1000,29832=>1000,29833=>1000,29834=>1000,29835=>1000,29838=>1000,29840=>1000,29842=>1000,29844=>1000,29845=>1000,29847=>1000,29848=>1000,29850=>1000,29852=>1000,29854=>1000,29855=>1000,29856=>1000,29857=>1000,29858=>1000,29859=>1000,29861=>1000,29862=>1000,29863=>1000,29864=>1000,29865=>1000,29866=>1000,29867=>1000,29869=>1000,29871=>1000,29872=>1000,29873=>1000,29874=>1000,29877=>1000,29878=>1000,29879=>1000,29880=>1000,29881=>1000,29882=>1000,29883=>1000,29885=>1000,29886=>1000,29887=>1000,29888=>1000,29889=>1000,29890=>1000,29891=>1000,29893=>1000,29894=>1000,29898=>1000,29899=>1000,29903=>1000,29906=>1000,29908=>1000,29909=>1000,29910=>1000,29911=>1000,29912=>1000,29913=>1000,29914=>1000,29915=>1000,29916=>1000,29917=>1000,29918=>1000,29919=>1000,29920=>1000,29921=>1000,29922=>1000,29923=>1000,29924=>1000,29925=>1000,29926=>1000,29927=>1000,29928=>1000,29929=>1000,29932=>1000,29934=>1000,29935=>1000,29936=>1000,29937=>1000,29938=>1000,29940=>1000,29941=>1000,29942=>1000,29943=>1000,29944=>1000,29947=>1000,29949=>1000,29950=>1000,29951=>1000,29952=>1000,29953=>1000,29954=>1000,29955=>1000,29956=>1000,29957=>1000,29959=>1000,29960=>1000,29963=>1000,29964=>1000,29965=>1000,29966=>1000,29967=>1000,29968=>1000,29969=>1000,29970=>1000,29971=>1000,29972=>1000,29973=>1000,29974=>1000,29975=>1000,29976=>1000,29977=>1000,29978=>1000,29979=>1000,29980=>1000,29981=>1000,29982=>1000,29983=>1000,29985=>1000,29986=>1000,29987=>1000,29989=>1000,29990=>1000,29992=>1000,29993=>1000,29994=>1000,29995=>1000,29996=>1000,29997=>1000,29998=>1000,29999=>1000,30000=>1000,30001=>1000,30002=>1000,30003=>1000,30005=>1000,30007=>1000,30008=>1000,30009=>1000,30010=>1000,30011=>1000,30012=>1000,30013=>1000,30014=>1000,30015=>1000,30016=>1000,30020=>1000,30021=>1000,30022=>1000,30023=>1000,30024=>1000,30025=>1000,30026=>1000,30027=>1000,30028=>1000,30029=>1000,30030=>1000,30031=>1000,30033=>1000,30035=>1000,30036=>1000,30041=>1000,30042=>1000,30043=>1000,30044=>1000,30045=>1000,30047=>1000,30048=>1000,30050=>1000,30051=>1000,30052=>1000,30053=>1000,30054=>1000,30055=>1000,30057=>1000,30058=>1000,30059=>1000,30060=>1000,30061=>1000,30063=>1000,30064=>1000,30066=>1000,30067=>1000,30068=>1000,30069=>1000,30070=>1000,30071=>1000,30072=>1000,30073=>1000,30074=>1000,30077=>1000,30078=>1000,30079=>1000,30080=>1000,30082=>1000,30083=>1000,30084=>1000,30086=>1000,30087=>1000,30089=>1000,30090=>1000,30091=>1000,30092=>1000,30094=>1000,30095=>1000,30096=>1000,30097=>1000,30098=>1000,30100=>1000,30101=>1000,30102=>1000,30103=>1000,30104=>1000,30105=>1000,30106=>1000,30109=>1000,30111=>1000,30112=>1000,30113=>1000,30114=>1000,30115=>1000,30116=>1000,30117=>1000,30119=>1000,30122=>1000,30123=>1000,30124=>1000,30126=>1000,30127=>1000,30128=>1000,30129=>1000,30130=>1000,30131=>1000,30132=>1000,30133=>1000,30134=>1000,30136=>1000,30137=>1000,30138=>1000,30139=>1000,30140=>1000,30141=>1000,30142=>1000,30143=>1000,30144=>1000,30145=>1000,30146=>1000,30147=>1000,30148=>1000,30149=>1000,30151=>1000,30152=>1000,30153=>1000,30154=>1000,30155=>1000,30156=>1000,30157=>1000,30158=>1000,30159=>1000,30160=>1000,30161=>1000,30162=>1000,30164=>1000,30165=>1000,30166=>1000,30167=>1000,30168=>1000,30169=>1000,30170=>1000,30171=>1000,30173=>1000,30174=>1000,30175=>1000,30176=>1000,30177=>1000,30178=>1000,30179=>1000,30180=>1000,30182=>1000,30183=>1000,30184=>1000,30185=>1000,30186=>1000,30187=>1000,30189=>1000,30191=>1000,30192=>1000,30193=>1000,30194=>1000,30195=>1000,30196=>1000,30197=>1000,30198=>1000,30199=>1000,30200=>1000,30201=>1000,30202=>1000,30203=>1000,30204=>1000,30205=>1000,30206=>1000,30207=>1000,30208=>1000,30209=>1000,30211=>1000,30213=>1000,30216=>1000,30217=>1000,30218=>1000,30219=>1000,30220=>1000,30221=>1000,30223=>1000,30224=>1000,30225=>1000,30227=>1000,30228=>1000,30229=>1000,30230=>1000,30231=>1000,30232=>1000,30233=>1000,30234=>1000,30235=>1000,30236=>1000,30237=>1000,30238=>1000,30239=>1000,30240=>1000,30241=>1000,30242=>1000,30243=>1000,30244=>1000,30245=>1000,30246=>1000,30247=>1000,30248=>1000,30249=>1000,30250=>1000,30251=>1000,30253=>1000,30255=>1000,30256=>1000,30257=>1000,30258=>1000,30259=>1000,30260=>1000,30261=>1000,30264=>1000,30266=>1000,30267=>1000,30268=>1000,30269=>1000,30270=>1000,30271=>1000,30272=>1000,30274=>1000,30275=>1000,30278=>1000,30279=>1000,30280=>1000,30281=>1000,30284=>1000,30285=>1000,30286=>1000,30288=>1000,30290=>1000,30291=>1000,30292=>1000,30294=>1000,30295=>1000,30296=>1000,30297=>1000,30298=>1000,30300=>1000,30302=>1000,30303=>1000,30304=>1000,30305=>1000,30306=>1000,30307=>1000,30308=>1000,30309=>1000,30311=>1000,30312=>1000,30313=>1000,30314=>1000,30315=>1000,30316=>1000,30317=>1000,30318=>1000,30319=>1000,30320=>1000,30321=>1000,30322=>1000,30325=>1000,30326=>1000,30328=>1000,30329=>1000,30330=>1000,30331=>1000,30332=>1000,30333=>1000,30334=>1000,30335=>1000,30336=>1000,30337=>1000,30338=>1000,30339=>1000,30340=>1000,30342=>1000,30343=>1000,30344=>1000,30345=>1000,30346=>1000,30347=>1000,30350=>1000,30351=>1000,30352=>1000,30353=>1000,30354=>1000,30355=>1000,30357=>1000,30358=>1000,30361=>1000,30362=>1000,30363=>1000,30364=>1000,30365=>1000,30366=>1000,30372=>1000,30374=>1000,30378=>1000,30379=>1000,30381=>1000,30382=>1000,30383=>1000,30384=>1000,30385=>1000,30386=>1000,30388=>1000,30389=>1000,30391=>1000,30392=>1000,30393=>1000,30394=>1000,30395=>1000,30397=>1000,30398=>1000,30399=>1000,30402=>1000,30403=>1000,30404=>1000,30405=>1000,30406=>1000,30408=>1000,30409=>1000,30410=>1000,30413=>1000,30414=>1000,30415=>1000,30416=>1000,30417=>1000,30418=>1000,30419=>1000,30420=>1000,30422=>1000,30423=>1000,30424=>1000,30426=>1000,30427=>1000,30428=>1000,30429=>1000,30430=>1000,30431=>1000,30433=>1000,30435=>1000,30436=>1000,30437=>1000,30438=>1000,30439=>1000,30441=>1000,30442=>1000,30444=>1000,30445=>1000,30446=>1000,30447=>1000,30448=>1000,30449=>1000,30450=>1000,30451=>1000,30452=>1000,30453=>1000,30455=>1000,30456=>1000,30457=>1000,30458=>1000,30459=>1000,30460=>1000,30462=>1000,30465=>1000,30467=>1000,30468=>1000,30469=>1000,30471=>1000,30472=>1000,30473=>1000,30474=>1000,30475=>1000,30476=>1000,30477=>1000,30480=>1000,30481=>1000,30482=>1000,30483=>1000,30485=>1000,30489=>1000,30490=>1000,30491=>1000,30493=>1000,30494=>1000,30495=>1000,30496=>1000,30498=>1000,30499=>1000,30500=>1000,30501=>1000,30502=>1000,30503=>1000,30504=>1000,30505=>1000,30509=>1000,30511=>1000,30513=>1000,30514=>1000,30515=>1000,30516=>1000,30517=>1000,30518=>1000,30519=>1000,30520=>1000,30521=>1000,30522=>1000,30523=>1000,30524=>1000,30525=>1000,30526=>1000,30528=>1000,30529=>1000,30531=>1000,30532=>1000,30533=>1000,30534=>1000,30535=>1000,30538=>1000,30539=>1000,30540=>1000,30541=>1000,30542=>1000,30543=>1000,30544=>1000,30545=>1000,30546=>1000,30548=>1000,30549=>1000,30550=>1000,30553=>1000,30554=>1000,30555=>1000,30556=>1000,30558=>1000,30559=>1000,30560=>1000,30561=>1000,30562=>1000,30563=>1000,30565=>1000,30566=>1000,30567=>1000,30568=>1000,30569=>1000,30570=>1000,30571=>1000,30572=>1000,30573=>1000,30574=>1000,30575=>1000,30585=>1000,30588=>1000,30589=>1000,30590=>1000,30591=>1000,30592=>1000,30593=>1000,30594=>1000,30595=>1000,30596=>1000,30597=>1000,30599=>1000,30600=>1000,30601=>1000,30603=>1000,30604=>1000,30605=>1000,30606=>1000,30607=>1000,30609=>1000,30610=>1000,30613=>1000,30615=>1000,30617=>1000,30618=>1000,30619=>1000,30620=>1000,30621=>1000,30622=>1000,30623=>1000,30624=>1000,30625=>1000,30626=>1000,30627=>1000,30629=>1000,30631=>1000,30632=>1000,30633=>1000,30634=>1000,30635=>1000,30636=>1000,30637=>1000,30640=>1000,30641=>1000,30642=>1000,30643=>1000,30644=>1000,30645=>1000,30646=>1000,30647=>1000,30649=>1000,30650=>1000,30651=>1000,30652=>1000,30653=>1000,30655=>1000,30658=>1000,30660=>1000,30663=>1000,30665=>1000,30666=>1000,30668=>1000,30669=>1000,30670=>1000,30671=>1000,30672=>1000,30675=>1000,30676=>1000,30677=>1000,30679=>1000,30680=>1000,30681=>1000,30682=>1000,30683=>1000,30684=>1000,30686=>1000,30688=>1000,30690=>1000,30691=>1000,30693=>1000,30695=>1000,30696=>1000,30697=>1000,30699=>1000,30700=>1000,30701=>1000,30702=>1000,30703=>1000,30704=>1000,30705=>1000,30706=>1000,30707=>1000,30710=>1000,30711=>1000,30712=>1000,30713=>1000,30714=>1000,30715=>1000,30716=>1000,30717=>1000,30718=>1000,30719=>1000,30720=>1000,30721=>1000,30722=>1000,30723=>1000,30725=>1000,30726=>1000,30729=>1000,30732=>1000,30733=>1000,30734=>1000,30735=>1000,30736=>1000,30737=>1000,30738=>1000,30739=>1000,30740=>1000,30741=>1000,30742=>1000,30743=>1000,30744=>1000,30746=>1000,30748=>1000,30749=>1000,30751=>1000,30752=>1000,30753=>1000,30754=>1000,30755=>1000,30757=>1000,30758=>1000,30759=>1000,30760=>1000,30761=>1000,30762=>1000,30763=>1000,30764=>1000,30765=>1000,30766=>1000,30767=>1000,30768=>1000,30769=>1000,30770=>1000,30771=>1000,30772=>1000,30773=>1000,30775=>1000,30776=>1000,30777=>1000,30778=>1000,30779=>1000,30780=>1000,30782=>1000,30783=>1000,30784=>1000,30787=>1000,30789=>1000,30791=>1000,30792=>1000,30793=>1000,30794=>1000,30796=>1000,30797=>1000,30798=>1000,30799=>1000,30800=>1000,30802=>1000,30805=>1000,30806=>1000,30807=>1000,30812=>1000,30813=>1000,30814=>1000,30816=>1000,30818=>1000,30820=>1000,30821=>1000,30824=>1000,30825=>1000,30826=>1000,30827=>1000,30828=>1000,30829=>1000,30830=>1000,30831=>1000,30832=>1000,30833=>1000,30834=>1000,30836=>1000,30839=>1000,30841=>1000,30842=>1000,30843=>1000,30844=>1000,30846=>1000,30847=>1000,30848=>1000,30849=>1000,30851=>1000,30852=>1000,30853=>1000,30854=>1000,30855=>1000,30857=>1000,30860=>1000,30861=>1000,30862=>1000,30863=>1000,30865=>1000,30867=>1000,30868=>1000,30869=>1000,30870=>1000,30871=>1000,30872=>1000,30873=>1000,30874=>1000,30875=>1000,30876=>1000,30878=>1000,30879=>1000,30880=>1000,30881=>1000,30882=>1000,30883=>1000,30884=>1000,30885=>1000,30887=>1000,30888=>1000,30889=>1000,30890=>1000,30891=>1000,30892=>1000,30893=>1000,30895=>1000,30896=>1000,30897=>1000,30898=>1000,30899=>1000,30900=>1000,30901=>1000,30905=>1000,30906=>1000,30907=>1000,30908=>1000,30910=>1000,30913=>1000,30915=>1000,30916=>1000,30917=>1000,30918=>1000,30920=>1000,30921=>1000,30922=>1000,30923=>1000,30924=>1000,30925=>1000,30926=>1000,30927=>1000,30928=>1000,30929=>1000,30932=>1000,30933=>1000,30937=>1000,30938=>1000,30939=>1000,30941=>1000,30942=>1000,30943=>1000,30944=>1000,30945=>1000,30946=>1000,30947=>1000,30949=>1000,30951=>1000,30952=>1000,30953=>1000,30954=>1000,30956=>1000,30957=>1000,30959=>1000,30962=>1000,30963=>1000,30964=>1000,30965=>1000,30967=>1000,30969=>1000,30970=>1000,30971=>1000,30972=>1000,30973=>1000,30974=>1000,30975=>1000,30977=>1000,30978=>1000,30980=>1000,30981=>1000,30983=>1000,30985=>1000,30988=>1000,30990=>1000,30992=>1000,30993=>1000,30994=>1000,30995=>1000,30996=>1000,30998=>1000,30999=>1000,31001=>1000,31003=>1000,31004=>1000,31005=>1000,31006=>1000,31009=>1000,31011=>1000,31012=>1000,31013=>1000,31014=>1000,31015=>1000,31016=>1000,31017=>1000,31018=>1000,31019=>1000,31020=>1000,31021=>1000,31023=>1000,31024=>1000,31025=>1000,31028=>1000,31029=>1000,31032=>1000,31033=>1000,31034=>1000,31035=>1000,31036=>1000,31037=>1000,31038=>1000,31039=>1000,31040=>1000,31041=>1000,31042=>1000,31044=>1000,31045=>1000,31046=>1000,31047=>1000,31048=>1000,31049=>1000,31050=>1000,31051=>1000,31052=>1000,31055=>1000,31056=>1000,31057=>1000,31058=>1000,31059=>1000,31060=>1000,31061=>1000,31062=>1000,31063=>1000,31066=>1000,31067=>1000,31068=>1000,31069=>1000,31070=>1000,31071=>1000,31072=>1000,31073=>1000,31074=>1000,31075=>1000,31076=>1000,31077=>1000,31079=>1000,31080=>1000,31081=>1000,31082=>1000,31083=>1000,31085=>1000,31087=>1000,31088=>1000,31090=>1000,31091=>1000,31092=>1000,31095=>1000,31096=>1000,31097=>1000,31098=>1000,31100=>1000,31101=>1000,31103=>1000,31104=>1000,31105=>1000,31106=>1000,31108=>1000,31109=>1000,31112=>1000,31114=>1000,31115=>1000,31117=>1000,31118=>1000,31119=>1000,31120=>1000,31121=>1000,31122=>1000,31123=>1000,31124=>1000,31125=>1000,31126=>1000,31127=>1000,31128=>1000,31130=>1000,31131=>1000,31132=>1000,31133=>1000,31136=>1000,31137=>1000,31138=>1000,31140=>1000,31142=>1000,31143=>1000,31144=>1000,31146=>1000,31147=>1000,31148=>1000,31149=>1000,31150=>1000,31152=>1000,31153=>1000,31154=>1000,31155=>1000,31156=>1000,31158=>1000,31159=>1000,31160=>1000,31161=>1000,31162=>1000,31163=>1000,31165=>1000,31166=>1000,31167=>1000,31168=>1000,31169=>1000,31171=>1000,31173=>1000,31174=>1000,31176=>1000,31177=>1000,31178=>1000,31179=>1000,31181=>1000,31182=>1000,31183=>1000,31185=>1000,31186=>1000,31189=>1000,31190=>1000,31192=>1000,31196=>1000,31197=>1000,31198=>1000,31199=>1000,31200=>1000,31201=>1000,31203=>1000,31204=>1000,31206=>1000,31207=>1000,31209=>1000,31210=>1000,31211=>1000,31212=>1000,31213=>1000,31214=>1000,31215=>1000,31216=>1000,31222=>1000,31223=>1000,31224=>1000,31226=>1000,31227=>1000,31229=>1000,31232=>1000,31234=>1000,31235=>1000,31236=>1000,31237=>1000,31238=>1000,31240=>1000,31242=>1000,31243=>1000,31244=>1000,31245=>1000,31246=>1000,31248=>1000,31249=>1000,31250=>1000,31251=>1000,31252=>1000,31253=>1000,31255=>1000,31256=>1000,31257=>1000,31258=>1000,31259=>1000,31260=>1000,31262=>1000,31263=>1000,31264=>1000,31266=>1000,31267=>1000,31270=>1000,31272=>1000,31275=>1000,31278=>1000,31279=>1000,31280=>1000,31281=>1000,31282=>1000,31283=>1000,31286=>1000,31287=>1000,31289=>1000,31291=>1000,31292=>1000,31293=>1000,31294=>1000,31295=>1000,31296=>1000,31298=>1000,31299=>1000,31300=>1000,31302=>1000,31303=>1000,31304=>1000,31305=>1000,31306=>1000,31307=>1000,31308=>1000,31309=>1000,31310=>1000,31311=>1000,31312=>1000,31313=>1000,31316=>1000,31318=>1000,31319=>1000,31320=>1000,31322=>1000,31323=>1000,31324=>1000,31327=>1000,31328=>1000,31329=>1000,31330=>1000,31331=>1000,31335=>1000,31336=>1000,31337=>1000,31339=>1000,31340=>1000,31341=>1000,31342=>1000,31344=>1000,31345=>1000,31348=>1000,31349=>1000,31350=>1000,31351=>1000,31352=>1000,31353=>1000,31354=>1000,31355=>1000,31357=>1000,31358=>1000,31359=>1000,31360=>1000,31361=>1000,31363=>1000,31364=>1000,31365=>1000,31366=>1000,31367=>1000,31368=>1000,31369=>1000,31370=>1000,31371=>1000,31372=>1000,31373=>1000,31375=>1000,31376=>1000,31377=>1000,31378=>1000,31379=>1000,31380=>1000,31381=>1000,31382=>1000,31383=>1000,31384=>1000,31385=>1000,31388=>1000,31389=>1000,31390=>1000,31391=>1000,31392=>1000,31394=>1000,31395=>1000,31397=>1000,31398=>1000,31400=>1000,31401=>1000,31402=>1000,31403=>1000,31404=>1000,31405=>1000,31406=>1000,31407=>1000,31408=>1000,31409=>1000,31410=>1000,31411=>1000,31412=>1000,31413=>1000,31414=>1000,31415=>1000,31416=>1000,31418=>1000,31422=>1000,31423=>1000,31424=>1000,31425=>1000,31427=>1000,31428=>1000,31429=>1000,31431=>1000,31432=>1000,31434=>1000,31435=>1000,31437=>1000,31439=>1000,31441=>1000,31442=>1000,31443=>1000,31445=>1000,31446=>1000,31447=>1000,31448=>1000,31449=>1000,31450=>1000,31452=>1000,31453=>1000,31454=>1000,31455=>1000,31456=>1000,31457=>1000,31458=>1000,31459=>1000,31460=>1000,31461=>1000,31462=>1000,31463=>1000,31466=>1000,31467=>1000,31469=>1000,31470=>1000,31471=>1000,31472=>1000,31478=>1000,31479=>1000,31480=>1000,31481=>1000,31482=>1000,31483=>1000,31485=>1000,31487=>1000,31488=>1000,31489=>1000,31490=>1000,31491=>1000,31492=>1000,31493=>1000,31494=>1000,31496=>1000,31497=>1000,31498=>1000,31499=>1000,31502=>1000,31503=>1000,31504=>1000,31505=>1000,31506=>1000,31507=>1000,31508=>1000,31509=>1000,31512=>1000,31513=>1000,31514=>1000,31515=>1000,31517=>1000,31518=>1000,31520=>1000,31522=>1000,31523=>1000,31524=>1000,31525=>1000,31526=>1000,31528=>1000,31530=>1000,31531=>1000,31532=>1000,31533=>1000,31534=>1000,31535=>1000,31536=>1000,31537=>1000,31538=>1000,31539=>1000,31540=>1000,31541=>1000,31542=>1000,31544=>1000,31545=>1000,31546=>1000,31547=>1000,31548=>1000,31550=>1000,31552=>1000,31556=>1000,31557=>1000,31558=>1000,31559=>1000,31560=>1000,31561=>1000,31562=>1000,31563=>1000,31564=>1000,31565=>1000,31566=>1000,31567=>1000,31568=>1000,31569=>1000,31570=>1000,31572=>1000,31574=>1000,31576=>1000,31578=>1000,31579=>1000,31581=>1000,31584=>1000,31585=>1000,31586=>1000,31587=>1000,31588=>1000,31589=>1000,31590=>1000,31591=>1000,31593=>1000,31596=>1000,31597=>1000,31598=>1000,31600=>1000,31601=>1000,31602=>1000,31603=>1000,31604=>1000,31605=>1000,31606=>1000,31607=>1000,31608=>1000,31609=>1000,31610=>1000,31611=>1000,31613=>1000,31614=>1000,31616=>1000,31618=>1000,31620=>1000,31621=>1000,31622=>1000,31623=>1000,31624=>1000,31626=>1000,31627=>1000,31628=>1000,31629=>1000,31630=>1000,31631=>1000,31632=>1000,31633=>1000,31634=>1000,31636=>1000,31637=>1000,31638=>1000,31639=>1000,31640=>1000,31641=>1000,31642=>1000,31643=>1000,31644=>1000,31645=>1000,31646=>1000,31647=>1000,31648=>1000,31649=>1000,31650=>1000,31652=>1000,31654=>1000,31655=>1000,31656=>1000,31657=>1000,31658=>1000,31659=>1000,31660=>1000,31661=>1000,31663=>1000,31665=>1000,31668=>1000,31669=>1000,31671=>1000,31672=>1000,31673=>1000,31678=>1000,31680=>1000,31681=>1000,31684=>1000,31686=>1000,31687=>1000,31689=>1000,31690=>1000,31691=>1000,31692=>1000,31694=>1000,31695=>1000,31697=>1000,31698=>1000,31699=>1000,31700=>1000,31701=>1000,31704=>1000,31705=>1000,31706=>1000,31707=>1000,31708=>1000,31709=>1000,31710=>1000,31711=>1000,31712=>1000,31713=>1000,31714=>1000,31715=>1000,31716=>1000,31717=>1000,31718=>1000,31719=>1000,31720=>1000,31721=>1000,31722=>1000,31723=>1000,31725=>1000,31726=>1000,31728=>1000,31729=>1000,31730=>1000,31731=>1000,31732=>1000,31734=>1000,31735=>1000,31736=>1000,31737=>1000,31739=>1000,31740=>1000,31741=>1000,31742=>1000,31743=>1000,31744=>1000,31745=>1000,31746=>1000,31747=>1000,31749=>1000,31750=>1000,31751=>1000,31753=>1000,31754=>1000,31755=>1000,31756=>1000,31757=>1000,31758=>1000,31759=>1000,31760=>1000,31761=>1000,31762=>1000,31763=>1000,31764=>1000,31766=>1000,31767=>1000,31769=>1000,31772=>1000,31773=>1000,31774=>1000,31775=>1000,31776=>1000,31777=>1000,31778=>1000,31779=>1000,31781=>1000,31782=>1000,31783=>1000,31784=>1000,31785=>1000,31786=>1000,31787=>1000,31788=>1000,31789=>1000,31792=>1000,31795=>1000,31799=>1000,31800=>1000,31801=>1000,31803=>1000,31804=>1000,31805=>1000,31806=>1000,31807=>1000,31808=>1000,31809=>1000,31811=>1000,31813=>1000,31815=>1000,31816=>1000,31817=>1000,31818=>1000,31820=>1000,31821=>1000,31823=>1000,31824=>1000,31827=>1000,31828=>1000,31830=>1000,31831=>1000,31832=>1000,31833=>1000,31834=>1000,31835=>1000,31836=>1000,31839=>1000,31840=>1000,31843=>1000,31844=>1000,31845=>1000,31846=>1000,31847=>1000,31849=>1000,31850=>1000,31851=>1000,31852=>1000,31854=>1000,31855=>1000,31858=>1000,31859=>1000,31860=>1000,31861=>1000,31864=>1000,31865=>1000,31866=>1000,31867=>1000,31868=>1000,31869=>1000,31870=>1000,31871=>1000,31872=>1000,31873=>1000,31874=>1000,31875=>1000,31876=>1000,31877=>1000,31880=>1000,31881=>1000,31882=>1000,31883=>1000,31884=>1000,31885=>1000,31888=>1000,31889=>1000,31890=>1000,31892=>1000,31893=>1000,31894=>1000,31895=>1000,31896=>1000,31899=>1000,31900=>1000,31901=>1000,31902=>1000,31903=>1000,31905=>1000,31906=>1000,31907=>1000,31908=>1000,31909=>1000,31911=>1000,31912=>1000,31914=>1000,31915=>1000,31917=>1000,31918=>1000,31919=>1000,31921=>1000,31922=>1000,31923=>1000,31924=>1000,31925=>1000,31929=>1000,31930=>1000,31931=>1000,31932=>1000,31933=>1000,31934=>1000,31935=>1000,31936=>1000,31937=>1000,31938=>1000,31941=>1000,31943=>1000,31944=>1000,31946=>1000,31947=>1000,31948=>1000,31949=>1000,31950=>1000,31952=>1000,31953=>1000,31954=>1000,31956=>1000,31957=>1000,31958=>1000,31959=>1000,31960=>1000,31961=>1000,31964=>1000,31965=>1000,31966=>1000,31967=>1000,31968=>1000,31970=>1000,31975=>1000,31976=>1000,31978=>1000,31980=>1000,31982=>1000,31983=>1000,31984=>1000,31985=>1000,31986=>1000,31988=>1000,31990=>1000,31991=>1000,31992=>1000,31994=>1000,31995=>1000,31997=>1000,31998=>1000,32000=>1000,32001=>1000,32002=>1000,32003=>1000,32004=>1000,32005=>1000,32006=>1000,32007=>1000,32008=>1000,32009=>1000,32010=>1000,32011=>1000,32012=>1000,32013=>1000,32014=>1000,32015=>1000,32016=>1000,32017=>1000,32018=>1000,32019=>1000,32020=>1000,32021=>1000,32022=>1000,32023=>1000,32024=>1000,32025=>1000,32026=>1000,32027=>1000,32028=>1000,32029=>1000,32030=>1000,32031=>1000,32032=>1000,32033=>1000,32034=>1000,32039=>1000,32040=>1000,32041=>1000,32043=>1000,32044=>1000,32046=>1000,32047=>1000,32048=>1000,32049=>1000,32050=>1000,32051=>1000,32053=>1000,32054=>1000,32056=>1000,32057=>1000,32058=>1000,32059=>1000,32060=>1000,32061=>1000,32062=>1000,32063=>1000,32064=>1000,32065=>1000,32066=>1000,32067=>1000,32068=>1000,32069=>1000,32070=>1000,32071=>1000,32072=>1000,32074=>1000,32075=>1000,32076=>1000,32078=>1000,32079=>1000,32080=>1000,32081=>1000,32082=>1000,32083=>1000,32084=>1000,32085=>1000,32086=>1000,32088=>1000,32091=>1000,32092=>1000,32094=>1000,32095=>1000,32097=>1000,32098=>1000,32099=>1000,32102=>1000,32103=>1000,32104=>1000,32105=>1000,32106=>1000,32107=>1000,32109=>1000,32110=>1000,32111=>1000,32112=>1000,32113=>1000,32114=>1000,32115=>1000,32117=>1000,32118=>1000,32119=>1000,32121=>1000,32122=>1000,32123=>1000,32124=>1000,32125=>1000,32127=>1000,32128=>1000,32129=>1000,32131=>1000,32132=>1000,32133=>1000,32134=>1000,32136=>1000,32137=>1000,32140=>1000,32141=>1000,32142=>1000,32143=>1000,32145=>1000,32146=>1000,32147=>1000,32148=>1000,32150=>1000,32153=>1000,32154=>1000,32155=>1000,32156=>1000,32157=>1000,32158=>1000,32159=>1000,32160=>1000,32161=>1000,32162=>1000,32163=>1000,32166=>1000,32167=>1000,32169=>1000,32170=>1000,32171=>1000,32172=>1000,32173=>1000,32174=>1000,32175=>1000,32176=>1000,32177=>1000,32178=>1000,32180=>1000,32181=>1000,32183=>1000,32184=>1000,32185=>1000,32186=>1000,32187=>1000,32188=>1000,32189=>1000,32190=>1000,32191=>1000,32192=>1000,32193=>1000,32194=>1000,32196=>1000,32197=>1000,32198=>1000,32199=>1000,32201=>1000,32202=>1000,32203=>1000,32204=>1000,32206=>1000,32207=>1000,32209=>1000,32210=>1000,32213=>1000,32214=>1000,32215=>1000,32216=>1000,32217=>1000,32218=>1000,32219=>1000,32220=>1000,32221=>1000,32222=>1000,32223=>1000,32224=>1000,32225=>1000,32227=>1000,32228=>1000,32230=>1000,32231=>1000,32232=>1000,32233=>1000,32234=>1000,32236=>1000,32238=>1000,32239=>1000,32240=>1000,32241=>1000,32242=>1000,32243=>1000,32244=>1000,32246=>1000,32247=>1000,32249=>1000,32250=>1000,32251=>1000,32257=>1000,32259=>1000,32260=>1000,32261=>1000,32264=>1000,32265=>1000,32266=>1000,32267=>1000,32268=>1000,32269=>1000,32270=>1000,32271=>1000,32272=>1000,32273=>1000,32274=>1000,32275=>1000,32276=>1000,32277=>1000,32278=>1000,32279=>1000,32282=>1000,32283=>1000,32284=>1000,32285=>1000,32286=>1000,32287=>1000,32288=>1000,32289=>1000,32290=>1000,32291=>1000,32292=>1000,32293=>1000,32294=>1000,32297=>1000,32298=>1000,32299=>1000,32301=>1000,32302=>1000,32303=>1000,32304=>1000,32305=>1000,32306=>1000,32307=>1000,32308=>1000,32309=>1000,32310=>1000,32311=>1000,32312=>1000,32313=>1000,32314=>1000,32315=>1000,32316=>1000,32317=>1000,32318=>1000,32319=>1000,32320=>1000,32321=>1000,32322=>1000,32323=>1000,32324=>1000,32325=>1000,32326=>1000,32327=>1000,32328=>1000,32329=>1000,32330=>1000,32331=>1000,32332=>1000,32333=>1000,32336=>1000,32337=>1000,32338=>1000,32339=>1000,32340=>1000,32341=>1000,32342=>1000,32343=>1000,32344=>1000,32345=>1000,32346=>1000,32348=>1000,32349=>1000,32350=>1000,32351=>1000,32352=>1000,32353=>1000,32354=>1000,32355=>1000,32358=>1000,32359=>1000,32360=>1000,32361=>1000,32362=>1000,32363=>1000,32365=>1000,32367=>1000,32368=>1000,32370=>1000,32371=>1000,32372=>1000,32373=>1000,32374=>1000,32375=>1000,32376=>1000,32377=>1000,32378=>1000,32379=>1000,32380=>1000,32381=>1000,32382=>1000,32383=>1000,32384=>1000,32385=>1000,32386=>1000,32387=>1000,32390=>1000,32391=>1000,32392=>1000,32393=>1000,32394=>1000,32395=>1000,32396=>1000,32397=>1000,32398=>1000,32399=>1000,32400=>1000,32401=>1000,32402=>1000,32403=>1000,32404=>1000,32405=>1000,32406=>1000,32407=>1000,32408=>1000,32409=>1000,32410=>1000,32411=>1000,32412=>1000,32415=>1000,32416=>1000,32417=>1000,32418=>1000,32419=>1000,32420=>1000,32421=>1000,32422=>1000,32423=>1000,32424=>1000,32425=>1000,32426=>1000,32427=>1000,32428=>1000,32429=>1000,32431=>1000,32432=>1000,32433=>1000,32434=>1000,32435=>1000,32437=>1000,32438=>1000,32439=>1000,32440=>1000,32441=>1000,32442=>1000,32445=>1000,32446=>1000,32447=>1000,32448=>1000,32449=>1000,32450=>1000,32451=>1000,32452=>1000,32453=>1000,32454=>1000,32455=>1000,32456=>1000,32457=>1000,32458=>1000,32459=>1000,32460=>1000,32461=>1000,32462=>1000,32463=>1000,32464=>1000,32465=>1000,32466=>1000,32467=>1000,32468=>1000,32469=>1000,32471=>1000,32472=>1000,32473=>1000,32474=>1000,32475=>1000,32476=>1000,32477=>1000,32478=>1000,32479=>1000,32480=>1000,32481=>1000,32482=>1000,32483=>1000,32485=>1000,32486=>1000,32487=>1000,32488=>1000,32489=>1000,32490=>1000,32491=>1000,32493=>1000,32494=>1000,32495=>1000,32496=>1000,32497=>1000,32498=>1000,32499=>1000,32500=>1000,32501=>1000,32502=>1000,32503=>1000,32504=>1000,32506=>1000,32507=>1000,32508=>1000,32509=>1000,32510=>1000,32511=>1000,32512=>1000,32513=>1000,32514=>1000,32515=>1000,32516=>1000,32517=>1000,32518=>1000,32519=>1000,32520=>1000,32521=>1000,32523=>1000,32524=>1000,32525=>1000,32526=>1000,32527=>1000,32529=>1000,32530=>1000,32531=>1000,32532=>1000,32533=>1000,32534=>1000,32535=>1000,32536=>1000,32537=>1000,32538=>1000,32539=>1000,32540=>1000,32541=>1000,32543=>1000,32544=>1000,32545=>1000,32546=>1000,32547=>1000,32548=>1000,32549=>1000,32550=>1000,32551=>1000,32552=>1000,32553=>1000,32554=>1000,32555=>1000,32556=>1000,32557=>1000,32558=>1000,32559=>1000,32560=>1000,32561=>1000,32562=>1000,32563=>1000,32564=>1000,32565=>1000,32566=>1000,32568=>1000,32569=>1000,32570=>1000,32573=>1000,32574=>1000,32575=>1000,32578=>1000,32579=>1000,32580=>1000,32581=>1000,32583=>1000,32584=>1000,32586=>1000,32587=>1000,32588=>1000,32589=>1000,32590=>1000,32591=>1000,32592=>1000,32593=>1000,32596=>1000,32597=>1000,32599=>1000,32600=>1000,32602=>1000,32603=>1000,32604=>1000,32605=>1000,32606=>1000,32607=>1000,32608=>1000,32609=>1000,32610=>1000,32611=>1000,32613=>1000,32614=>1000,32615=>1000,32616=>1000,32617=>1000,32618=>1000,32619=>1000,32620=>1000,32621=>1000,32622=>1000,32624=>1000,32625=>1000,32626=>1000,32627=>1000,32628=>1000,32629=>1000,32630=>1000,32631=>1000,32632=>1000,32633=>1000,32634=>1000,32635=>1000,32636=>1000,32637=>1000,32638=>1000,32639=>1000,32641=>1000,32642=>1000,32643=>1000,32645=>1000,32646=>1000,32647=>1000,32648=>1000,32649=>1000,32650=>1000,32651=>1000,32652=>1000,32653=>1000,32654=>1000,32657=>1000,32658=>1000,32660=>1000,32661=>1000,32662=>1000,32666=>1000,32667=>1000,32668=>1000,32669=>1000,32670=>1000,32671=>1000,32672=>1000,32673=>1000,32674=>1000,32675=>1000,32676=>1000,32677=>1000,32678=>1000,32679=>1000,32680=>1000,32681=>1000,32684=>1000,32685=>1000,32686=>1000,32687=>1000,32688=>1000,32689=>1000,32690=>1000,32691=>1000,32693=>1000,32694=>1000,32695=>1000,32696=>1000,32697=>1000,32698=>1000,32699=>1000,32700=>1000,32701=>1000,32702=>1000,32703=>1000,32704=>1000,32705=>1000,32706=>1000,32707=>1000,32709=>1000,32710=>1000,32711=>1000,32713=>1000,32714=>1000,32715=>1000,32716=>1000,32717=>1000,32718=>1000,32719=>1000,32720=>1000,32721=>1000,32722=>1000,32724=>1000,32725=>1000,32727=>1000,32728=>1000,32731=>1000,32732=>1000,32734=>1000,32735=>1000,32736=>1000,32737=>1000,32738=>1000,32739=>1000,32741=>1000,32742=>1000,32744=>1000,32745=>1000,32746=>1000,32747=>1000,32748=>1000,32749=>1000,32750=>1000,32751=>1000,32752=>1000,32753=>1000,32754=>1000,32755=>1000,32756=>1000,32757=>1000,32759=>1000,32760=>1000,32761=>1000,32763=>1000,32764=>1000,32765=>1000,32766=>1000,32767=>1000,32768=>1000,32769=>1000,32771=>1000,32772=>1000,32773=>1000,32774=>1000,32775=>1000,32777=>1000,32779=>1000,32780=>1000,32781=>1000,32782=>1000,32783=>1000,32784=>1000,32785=>1000,32786=>1000,32788=>1000,32789=>1000,32790=>1000,32791=>1000,32792=>1000,32793=>1000,32795=>1000,32796=>1000,32798=>1000,32799=>1000,32800=>1000,32801=>1000,32802=>1000,32804=>1000,32805=>1000,32806=>1000,32807=>1000,32808=>1000,32809=>1000,32810=>1000,32812=>1000,32813=>1000,32816=>1000,32817=>1000,32819=>1000,32820=>1000,32821=>1000,32822=>1000,32823=>1000,32824=>1000,32825=>1000,32827=>1000,32829=>1000,32830=>1000,32831=>1000,32834=>1000,32835=>1000,32838=>1000,32839=>1000,32840=>1000,32842=>1000,32843=>1000,32844=>1000,32845=>1000,32847=>1000,32848=>1000,32849=>1000,32850=>1000,32852=>1000,32854=>1000,32856=>1000,32858=>1000,32860=>1000,32861=>1000,32862=>1000,32863=>1000,32865=>1000,32866=>1000,32868=>1000,32871=>1000,32872=>1000,32873=>1000,32874=>1000,32876=>1000,32879=>1000,32880=>1000,32881=>1000,32882=>1000,32883=>1000,32884=>1000,32885=>1000,32886=>1000,32887=>1000,32888=>1000,32889=>1000,32893=>1000,32894=>1000,32895=>1000,32896=>1000,32898=>1000,32899=>1000,32900=>1000,32901=>1000,32902=>1000,32903=>1000,32905=>1000,32906=>1000,32907=>1000,32908=>1000,32911=>1000,32912=>1000,32914=>1000,32915=>1000,32917=>1000,32918=>1000,32920=>1000,32921=>1000,32922=>1000,32923=>1000,32924=>1000,32925=>1000,32927=>1000,32928=>1000,32929=>1000,32930=>1000,32931=>1000,32932=>1000,32933=>1000,32937=>1000,32938=>1000,32939=>1000,32940=>1000,32941=>1000,32942=>1000,32943=>1000,32945=>1000,32946=>1000,32948=>1000,32949=>1000,32951=>1000,32952=>1000,32954=>1000,32956=>1000,32957=>1000,32958=>1000,32959=>1000,32960=>1000,32961=>1000,32962=>1000,32963=>1000,32964=>1000,32965=>1000,32966=>1000,32967=>1000,32968=>1000,32969=>1000,32970=>1000,32972=>1000,32973=>1000,32974=>1000,32975=>1000,32976=>1000,32977=>1000,32980=>1000,32981=>1000,32982=>1000,32983=>1000,32984=>1000,32985=>1000,32986=>1000,32987=>1000,32988=>1000,32989=>1000,32990=>1000,32992=>1000,32993=>1000,32995=>1000,32996=>1000,32997=>1000,32998=>1000,32999=>1000,33000=>1000,33001=>1000,33002=>1000,33003=>1000,33004=>1000,33005=>1000,33007=>1000,33008=>1000,33009=>1000,33010=>1000,33011=>1000,33012=>1000,33013=>1000,33014=>1000,33016=>1000,33017=>1000,33018=>1000,33019=>1000,33020=>1000,33021=>1000,33022=>1000,33024=>1000,33025=>1000,33026=>1000,33029=>1000,33030=>1000,33031=>1000,33032=>1000,33033=>1000,33034=>1000,33037=>1000,33038=>1000,33039=>1000,33040=>1000,33041=>1000,33042=>1000,33043=>1000,33044=>1000,33045=>1000,33046=>1000,33048=>1000,33049=>1000,33050=>1000,33051=>1000,33053=>1000,33054=>1000,33055=>1000,33057=>1000,33058=>1000,33059=>1000,33060=>1000,33061=>1000,33063=>1000,33065=>1000,33067=>1000,33068=>1000,33069=>1000,33071=>1000,33072=>1000,33073=>1000,33074=>1000,33075=>1000,33078=>1000,33080=>1000,33081=>1000,33082=>1000,33085=>1000,33086=>1000,33091=>1000,33092=>1000,33094=>1000,33095=>1000,33096=>1000,33098=>1000,33099=>1000,33100=>1000,33101=>1000,33102=>1000,33103=>1000,33104=>1000,33105=>1000,33106=>1000,33107=>1000,33108=>1000,33109=>1000,33113=>1000,33114=>1000,33115=>1000,33116=>1000,33118=>1000,33119=>1000,33120=>1000,33121=>1000,33122=>1000,33124=>1000,33125=>1000,33126=>1000,33127=>1000,33129=>1000,33131=>1000,33133=>1000,33134=>1000,33135=>1000,33136=>1000,33137=>1000,33138=>1000,33139=>1000,33140=>1000,33142=>1000,33143=>1000,33144=>1000,33145=>1000,33146=>1000,33147=>1000,33148=>1000,33149=>1000,33150=>1000,33151=>1000,33152=>1000,33154=>1000,33155=>1000,33158=>1000,33159=>1000,33160=>1000,33161=>1000,33162=>1000,33163=>1000,33164=>1000,33165=>1000,33167=>1000,33169=>1000,33171=>1000,33173=>1000,33175=>1000,33176=>1000,33177=>1000,33178=>1000,33179=>1000,33180=>1000,33181=>1000,33182=>1000,33183=>1000,33184=>1000,33186=>1000,33187=>1000,33188=>1000,33190=>1000,33191=>1000,33192=>1000,33193=>1000,33194=>1000,33195=>1000,33196=>1000,33198=>1000,33200=>1000,33201=>1000,33202=>1000,33203=>1000,33204=>1000,33205=>1000,33207=>1000,33208=>1000,33209=>1000,33210=>1000,33211=>1000,33212=>1000,33213=>1000,33214=>1000,33215=>1000,33216=>1000,33217=>1000,33218=>1000,33219=>1000,33220=>1000,33221=>1000,33222=>1000,33223=>1000,33224=>1000,33225=>1000,33226=>1000,33228=>1000,33229=>1000,33231=>1000,33232=>1000,33233=>1000,33234=>1000,33235=>1000,33237=>1000,33239=>1000,33240=>1000,33241=>1000,33242=>1000,33243=>1000,33245=>1000,33246=>1000,33247=>1000,33248=>1000,33249=>1000,33250=>1000,33251=>1000,33253=>1000,33254=>1000,33255=>1000,33256=>1000,33257=>1000,33258=>1000,33260=>1000,33261=>1000,33262=>1000,33266=>1000,33267=>1000,33268=>1000,33271=>1000,33272=>1000,33273=>1000,33274=>1000,33275=>1000,33276=>1000,33278=>1000,33279=>1000,33280=>1000,33281=>1000,33282=>1000,33284=>1000,33285=>1000,33286=>1000,33287=>1000,33288=>1000,33289=>1000,33290=>1000,33291=>1000,33292=>1000,33293=>1000,33294=>1000,33296=>1000,33297=>1000,33298=>1000,33300=>1000,33301=>1000,33302=>1000,33303=>1000,33304=>1000,33307=>1000,33308=>1000,33309=>1000,33310=>1000,33311=>1000,33312=>1000,33313=>1000,33314=>1000,33315=>1000,33317=>1000,33320=>1000,33321=>1000,33322=>1000,33323=>1000,33324=>1000,33325=>1000,33326=>1000,33327=>1000,33328=>1000,33329=>1000,33330=>1000,33331=>1000,33332=>1000,33333=>1000,33334=>1000,33335=>1000,33336=>1000,33337=>1000,33338=>1000,33339=>1000,33340=>1000,33341=>1000,33342=>1000,33343=>1000,33344=>1000,33346=>1000,33348=>1000,33349=>1000,33351=>1000,33353=>1000,33355=>1000,33358=>1000,33359=>1000,33360=>1000,33361=>1000,33362=>1000,33363=>1000,33365=>1000,33366=>1000,33367=>1000,33368=>1000,33369=>1000,33370=>1000,33371=>1000,33372=>1000,33373=>1000,33374=>1000,33375=>1000,33377=>1000,33378=>1000,33379=>1000,33380=>1000,33382=>1000,33384=>1000,33385=>1000,33386=>1000,33387=>1000,33388=>1000,33389=>1000,33390=>1000,33391=>1000,33392=>1000,33393=>1000,33394=>1000,33395=>1000,33396=>1000,33397=>1000,33398=>1000,33399=>1000,33400=>1000,33401=>1000,33402=>1000,33404=>1000,33405=>1000,33406=>1000,33407=>1000,33408=>1000,33410=>1000,33411=>1000,33412=>1000,33413=>1000,33416=>1000,33418=>1000,33419=>1000,33421=>1000,33422=>1000,33423=>1000,33424=>1000,33425=>1000,33426=>1000,33427=>1000,33428=>1000,33431=>1000,33432=>1000,33433=>1000,33434=>1000,33435=>1000,33436=>1000,33437=>1000,33438=>1000,33439=>1000,33440=>1000,33441=>1000,33442=>1000,33443=>1000,33444=>1000,33445=>1000,33446=>1000,33447=>1000,33448=>1000,33449=>1000,33450=>1000,33451=>1000,33452=>1000,33453=>1000,33454=>1000,33455=>1000,33456=>1000,33457=>1000,33459=>1000,33460=>1000,33461=>1000,33462=>1000,33463=>1000,33464=>1000,33465=>1000,33466=>1000,33467=>1000,33468=>1000,33469=>1000,33470=>1000,33471=>1000,33472=>1000,33473=>1000,33474=>1000,33475=>1000,33476=>1000,33477=>1000,33479=>1000,33480=>1000,33482=>1000,33483=>1000,33484=>1000,33485=>1000,33486=>1000,33487=>1000,33489=>1000,33490=>1000,33491=>1000,33492=>1000,33493=>1000,33494=>1000,33495=>1000,33496=>1000,33497=>1000,33499=>1000,33500=>1000,33502=>1000,33503=>1000,33504=>1000,33505=>1000,33507=>1000,33508=>1000,33509=>1000,33510=>1000,33511=>1000,33512=>1000,33514=>1000,33515=>1000,33516=>1000,33517=>1000,33519=>1000,33520=>1000,33521=>1000,33522=>1000,33523=>1000,33524=>1000,33525=>1000,33526=>1000,33527=>1000,33529=>1000,33530=>1000,33531=>1000,33533=>1000,33534=>1000,33536=>1000,33537=>1000,33538=>1000,33539=>1000,33540=>1000,33541=>1000,33542=>1000,33543=>1000,33544=>1000,33545=>1000,33548=>1000,33549=>1000,33550=>1000,33551=>1000,33553=>1000,33556=>1000,33557=>1000,33558=>1000,33559=>1000,33560=>1000,33561=>1000,33562=>1000,33563=>1000,33564=>1000,33566=>1000,33568=>1000,33570=>1000,33571=>1000,33572=>1000,33573=>1000,33574=>1000,33575=>1000,33576=>1000,33577=>1000,33578=>1000,33579=>1000,33580=>1000,33581=>1000,33583=>1000,33585=>1000,33586=>1000,33587=>1000,33588=>1000,33589=>1000,33590=>1000,33591=>1000,33592=>1000,33593=>1000,33594=>1000,33595=>1000,33596=>1000,33599=>1000,33600=>1000,33601=>1000,33602=>1000,33603=>1000,33604=>1000,33605=>1000,33606=>1000,33607=>1000,33608=>1000,33609=>1000,33610=>1000,33611=>1000,33612=>1000,33613=>1000,33614=>1000,33615=>1000,33616=>1000,33617=>1000,33618=>1000,33619=>1000,33620=>1000,33622=>1000,33624=>1000,33626=>1000,33627=>1000,33628=>1000,33630=>1000,33631=>1000,33632=>1000,33633=>1000,33634=>1000,33635=>1000,33636=>1000,33637=>1000,33638=>1000,33639=>1000,33640=>1000,33641=>1000,33642=>1000,33643=>1000,33644=>1000,33645=>1000,33646=>1000,33647=>1000,33651=>1000,33652=>1000,33653=>1000,33654=>1000,33655=>1000,33656=>1000,33658=>1000,33659=>1000,33660=>1000,33661=>1000,33662=>1000,33663=>1000,33665=>1000,33667=>1000,33669=>1000,33
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|