Severity: 8192
Message: Function create_function() is deprecated
Filename: geshi/geshi.php
Line Number: 4698
Backtrace:
File: /home/httpd/vhosts/scratchbook.ch/geopaste.scratchbook.ch/application/libraries/geshi/geshi.php
Line: 4698
Function: _error_handler
File: /home/httpd/vhosts/scratchbook.ch/geopaste.scratchbook.ch/application/libraries/geshi/geshi.php
Line: 4646
Function: _optimize_regexp_list_tokens_to_string
File: /home/httpd/vhosts/scratchbook.ch/geopaste.scratchbook.ch/application/libraries/geshi/geshi.php
Line: 1655
Function: optimize_regexp_list
File: /home/httpd/vhosts/scratchbook.ch/geopaste.scratchbook.ch/application/libraries/geshi/geshi.php
Line: 2029
Function: optimize_keyword_group
File: /home/httpd/vhosts/scratchbook.ch/geopaste.scratchbook.ch/application/libraries/geshi/geshi.php
Line: 2168
Function: build_parse_cache
File: /home/httpd/vhosts/scratchbook.ch/geopaste.scratchbook.ch/application/libraries/Process.php
Line: 45
Function: parse_code
File: /home/httpd/vhosts/scratchbook.ch/geopaste.scratchbook.ch/application/models/Pastes.php
Line: 517
Function: syntax
File: /home/httpd/vhosts/scratchbook.ch/geopaste.scratchbook.ch/application/controllers/Main.php
Line: 693
Function: getPaste
File: /home/httpd/vhosts/scratchbook.ch/geopaste.scratchbook.ch/index.php
Line: 315
Function: require_once
diff --git a/app/code/community/Shopgo/GTM/Block/Gtm.php b/app/code/community/Shopgo/GTM/Block/Gtm.php index 0d4b14b..e52683a 100644 --- a/app/code/community/Shopgo/GTM/Block/Gtm.php +++ b/app/code/community/Shopgo/GTM/Block/Gtm.php @@ -216,14 +216,6 @@ class Shopgo_GTM_Block_Gtm extends Mage_Core_Block_Template // visitorLoginState $this->data['visitorLoginState'] = ($customer->isLoggedIn()) ? 'Logged in' : 'Logged out'; - $utm_source = $this->getRequest()->getParam('utm_source'); - if(!empty($utm_source)) { - setcookie('utm_source', $this->getRequest()->getParam('utm_source')); - $this->data['utm_source'] = $utm_source; - } elseif(isset($_COOKIE['utm_source']) && !empty($_COOKIE['utm_source'])) { - $this->data['utm_source'] = $_COOKIE['utm_source']; - } - // visitorType /*$this->data['visitorType'] = (string)Mage::getModel('customer/group')->load($customer->getCustomerGroupId())->getCode(); @@ -555,12 +547,4 @@ class Shopgo_GTM_Block_Gtm extends Mage_Core_Block_Template { return parent::_toHtml(); } - - public function getAjaxCartPageData() { - $this->_getCartPageData(); - $this->_getVisitorData(); - return "<script>setLayerData('AjaxCart', 'Cart Page', 'Cart Page', 'Cart Page'); dataLayer.push(" . json_encode($this->data) . ");</script>\n\n"; - } - - } diff --git a/app/code/community/TM/SuggestPage/etc/config.xml b/app/code/community/TM/SuggestPage/etc/config.xml index 22e6041..93d5590 100644 --- a/app/code/community/TM/SuggestPage/etc/config.xml +++ b/app/code/community/TM/SuggestPage/etc/config.xml @@ -35,6 +35,15 @@ </updates> </layout> <events> + <checkout_cart_add_product_complete> + <observers> + <suggestpage> + <type>model</type> + <class>suggestpage/observer</class> + <method>addToCartComplete</method> + </suggestpage> + </observers> + </checkout_cart_add_product_complete> <ajaxpro_load_layout_before> <observers> <suggestpage> diff --git a/app/code/local/Biztech/Trackorder/Block/Trackorder.php b/app/code/local/Biztech/Trackorder/Block/Trackorder.php index 7bba549..b3bb4e0 100644 --- a/app/code/local/Biztech/Trackorder/Block/Trackorder.php +++ b/app/code/local/Biztech/Trackorder/Block/Trackorder.php @@ -1,35 +1,34 @@ <?php class Biztech_Trackorder_Block_Trackorder extends Mage_Core_Block_Template { - public function _prepareLayout() + public function _prepareLayout() { - return parent::_prepareLayout(); + return parent::_prepareLayout(); } - public function getTrackorder() - { + public function getTrackorder() + { if (!$this->hasData('trackorder')) { $this->setData('trackorder', Mage::registry('current_order')); } return $this->getData('trackorder'); + } - public function getTrackInfo($order) { $shipTrack = array(); if ($order) { $shipments = $order->getShipmentsCollection(); - - foreach ($shipments as $shipment) { + foreach ($shipments as $shipment){ $increment_id = $shipment->getIncrementId(); - $tracks = $shipment->getTracksCollection()->getData(); - $shipTrack[$increment_id] = $tracks; + $tracks = $shipment->getTracksCollection(); - foreach($shipment->getAllItems() as $products) { - $shipTrack[$increment_id]['products'][] = $products->getData(); + $trackingInfos=array(); + foreach ($tracks as $track){ + $trackingInfos[] = $track->getNumberDetail(); } + $shipTrack[$increment_id] = $trackingInfos; } - } return $shipTrack; } diff --git a/app/code/local/Biztech/Trackorder/Helper/Data.php b/app/code/local/Biztech/Trackorder/Helper/Data.php index 1a1bce1..ee9d35e 100644 --- a/app/code/local/Biztech/Trackorder/Helper/Data.php +++ b/app/code/local/Biztech/Trackorder/Helper/Data.php @@ -1,74 +1,9 @@ <?php -class Biztech_Trackorder_Helper_Data extends Mage_Core_Helper_Abstract -{ - private $courierUrls = array(); - - public function getLoggedInUserEmail() { - $customer = Mage::getSingleton('customer/session'); - - if($customer->isLoggedIn()) { - return $customer->getCustomer()->getEmail(); - } - } - - public function getTrackorderUrl() - { - return $this->_getUrl('trackorder/index'); - } - - public function getViewOrderUrl($orderId = 0) + class Biztech_Trackorder_Helper_Data extends Mage_Core_Helper_Abstract { - return $this->_getUrl('sales/order/view/', array('order_id'=>$orderId)); - } - - public function getTrackUrl($courierKey=null, $trackNumber = '') { - $courierKey = preg_replace('/\s+/', '_', trim(strtolower($courierKey))); - $this->courierUrls = array( - 'delhivery' => "http://track.delhivery.com/p/TRACK_NUMBER", - 'delhivery.com' => "http://track.delhivery.com/p/TRACK_NUMBER", - 'ecom_express' => "http://billing.ecomexpress.in/track_me/multipleawb_open/?order=&news_go=track+now&awb=TRACK_NUMBER", - 'dhl' => "http://www.dhl.co.in/en/express/tracking.html?brand=DHL&AWB=TRACK_NUMBER", - 'gojavas' => "http://gojavas.com/docket_details.php?pop=docno&docno=TRACK_NUMBER", - 'federal_express' => "https://www.fedex.com/apps/fedextrack/?cntry_code=in&tracknumbers=TRACK_NUMBER", - 'fedex_so' => "https://www.fedex.com/apps/fedextrack/?cntry_code=in&tracknumbers=TRACK_NUMBER", - 'fedex_po' => "https://www.fedex.com/apps/fedextrack/?cntry_code=in&tracknumbers=TRACK_NUMBER", - 'fedex_eco' => "https://www.fedex.com/apps/fedextrack/?cntry_code=in&tracknumbers=TRACK_NUMBER", - 'fedex' => "https://www.fedex.com/apps/fedextrack/?cntry_code=in&tracknumbers=TRACK_NUMBER", - 'xpressbees' => "http://www.xpressbees.com/ShipmentStatus.aspx", - 'blue_dart' => "http://www.bluedart.com/maintracking.html", - 'bluedart_surface' => "https://www.bluedart.com/dartsurfaceline.html", - 'first_flight' => "http://firstflight.net/", - 'bmp' => "http://www.bookmypacket.com/staticpages/tracking", - 'bmp_surface' => "http://www.bookmypacket.com/staticpages/tracking", - 'gati' => "http://www.gatikwe.com/track-your-shipment", - 'dtdc' => "http://dtdc.com/tracking/tracking.asp", - 'safeexpress' => "http://www.safexpress.com/faces/TrackShipment.jspx", - 'united_states_postal_service' => "https://www.usps.com/", - 'swastik_couriers' => "http://swastiklogistics.in/track-status.html", - 'eflit' => "http://eflitlogistics.com/", - ); - - if(in_array($courierKey, array_keys($this->courierUrls))) { - return str_replace("TRACK_NUMBER", $trackNumber, $this->courierUrls[$courierKey]); - } - - return false; - } - - public function orderStatus($status = null) { - $arrStatus = array( - 'pending' => 'Order Placed', - 'processing' => 'Order Confirmed', - 'canceled' => 'Order is Cancelled', - 'complete' => 'Order is Completed', - 'confirm' => 'Order is Confirmed', - 'fulfillable' => 'Order Confirmed by Seller', - 'partially_fulfillable' => 'Few Items Confirmed by Seller', - 'dispatched' => 'Order Shipped', - 'delivered' => 'Order Delivered' - ); - - return isset($arrStatus[$status])?$arrStatus[$status]:''; - } + public function getTrackorderUrl() + { + return $this->_getUrl('trackorder/index'); + } } \ No newline at end of file diff --git a/app/code/local/Biztech/Trackorder/controllers/IndexController.php b/app/code/local/Biztech/Trackorder/controllers/IndexController.php index a12b415..5201b0e 100755 --- a/app/code/local/Biztech/Trackorder/controllers/IndexController.php +++ b/app/code/local/Biztech/Trackorder/controllers/IndexController.php @@ -4,28 +4,25 @@ class Biztech_Trackorder_IndexController extends Mage_Core_Controller_Front_Acti public function indexAction() { $this->loadLayout(); - $this->getLayout()->getBlock('head')->setTitle($this->__('Track Your Order')); - $this->_initLayoutMessages('core/session'); - - $customer = Mage::getSingleton('customer/session'); - if($customer->isLoggedIn()) { - $this->_redirect('sales/order/history/'); - } + $this->getLayout()->getBlock('head')->setTitle($this->__('Track Your Order')); $this->renderLayout(); } public function validate(){ } - public function initOrder($data = null) { - $orderId = $data["order_id"]; - $email = $data["email"]; - $order = Mage::getModel('sales/order')->loadByIncrementId($orderId); - $cEmail = $order->getCustomerEmail(); - if($cEmail == trim($email)) { - Mage::register('current_order', $order); - } else { - Mage::register('current_order', Mage::getModel("sales/order")); - } + public function initOrder(){ + if ($data = $this->getRequest()->getPost()) { + $orderId = $data["order_id"]; + $email = $data["email"]; + $order = Mage::getModel('sales/order')->loadByIncrementId($orderId); + $cEmail = $order->getCustomerEmail(); + if($cEmail == trim($email)){ + Mage::register('current_order',$order); + } else { + Mage::register('current_order',Mage::getModel("sales/order")); + } + + } } public function trackAction() { @@ -47,7 +44,6 @@ class Biztech_Trackorder_IndexController extends Mage_Core_Controller_Front_Acti } $this->initOrder($post); $order = Mage::registry('current_order'); - if($order->getId()){ $this->getResponse()->setBody($this->getLayout()->getMessagesBlock()->getGroupedHtml().$this->_getGridHtml()); @@ -63,7 +59,7 @@ class Biztech_Trackorder_IndexController extends Mage_Core_Controller_Front_Acti ); Mage::log($info,null,'var2.log'); - return; + return; /*$this->loadLayout(); $this->renderLayout(); */ } else { @@ -84,7 +80,7 @@ class Biztech_Trackorder_IndexController extends Mage_Core_Controller_Front_Acti } } - protected function _getGridHtml() + protected function _getGridHtml() { $layout = $this->getLayout(); $update = $layout->getUpdate(); @@ -93,108 +89,91 @@ class Biztech_Trackorder_IndexController extends Mage_Core_Controller_Front_Acti $layout->generateBlocks(); $output = $layout->getOutput(); return $output; - } + } public function detailAction() { - $post = array(); - - $customer = Mage::getSingleton('customer/session'); - - $orderIdParam = $this->getRequest()->getParam('orderId'); - $emailParam = $this->getRequest()->getParam('email'); - - if($customer->isLoggedIn() || (!empty($orderIdParam) && !empty($emailParam))) { - $post['order_id'] = $orderIdParam; - if(!empty($emailParam)) { - $post['email'] = $emailParam; - } else { - $post['email'] = $customer->getCustomer()->getEmail(); - } - } else { - $post = $this->getRequest()->getPost(); - } - - if ( $post ) { + $post = $this->getRequest()->getPost(); + if ( $post ) { try { if (!Zend_Validate::is(trim($post['order_id']) , 'NotEmpty')) { $error = true; - $msg = "Please enter Order Id."; } if (!Zend_Validate::is(trim($post['email']), 'NotEmpty')) { $error = true; - $msg = "Please enter email address."; } if (!Zend_Validate::is(trim($post['email']), 'EmailAddress')) { $error = true; - $msg = "Please enter valid email address."; } if ($error) { - throw new Exception($msg); + throw new Exception(); } - $this->initOrder($post); $order = Mage::registry('current_order'); + if($order->getId()){ + $this->loadLayout(); + $this->getLayout()->getBlock('head')->setTitle($this->__('Track Your Order')); + $this->renderLayout(); + } else { + //Mage::getSingleton('core/session')->addError(Mage::helper('contacts')->__('Order Not Found.Please try again later')); + //$this->getResponse()->setBody($this->getLayout()->getMessagesBlock()->getGroupedHtml()); + //$this->getResponse()->setBody($this->getLayout()->getBlock('root')->setTemplate('1column.phtml')); + //$this->getLayout()->getBlock('head')->setTitle($this->__('Track Order Not Found')); + //return; + $this->loadLayout(); + $this->getLayout()->getBlock('head')->setTitle($this->__('Track Order Not Found')); + $this->renderLayout(); + return; + } - if($order->getId()) { - $this->loadLayout(); - $this->getLayout()->getBlock('head')->setTitle(Mage::helper('trackorder')->__('Track Your Order')); - $this->renderLayout(); - } else { - Mage::getSingleton('core/session')->addError(Mage::helper('trackorder')->__('Sorry, either Order Id or email you have entered is incorrect!')); - $this->_redirect('*/*/'); - } - } catch (Exception $e) { - Mage::getSingleton('core/session')->addError($e->getMessage()); - $this->_redirect('*/*/'); + }catch (Exception $e) { + Mage::getSingleton('core/session')->addError(Mage::helper('trackorder')->__('Please Enter Order Detail.')); + $this->getResponse()->setBody($this->getLayout()->getMessagesBlock()->getGroupedHtml()); + return; + } } else { $this->_redirect('*/*/'); } - } - - //////// otp validation ////////// - /* - * Send OTP on order success page - */ - public function otpAction() { - $orderId = rtrim($this->getRequest()->getPost('od'),"."); - $otp = $this->getRequest()->getPost('otp'); - $number = $this->getRequest()->getPost('number'); - $otpSession = Mage::getSingleton("core/session", array("name" => "frontend"))->getData("codCode"); - $order = Mage::getModel('sales/order')->loadByIncrementId($orderId); - if ($order->getStatus() == 'pending_cod') { - if ($otp == $otpSession && ($otpSession != '') && isset($otpSession)) { - //define comment - $comment = "Customer confirmed COD through OTP"; - //set state and status - //$order->setStatus('processing'); - //$order->setState('processing')->save(); - - // for event observer on otps. - //Mage::dispatchEvent('sales_order_status_change', array('order' => $order, 'state' => $order->getState(), 'status' => $order->getStatus())); - //Get current status and comment with notification flag 'false' - //$order->addStatusToHistory($order->getStatus(), $comment, true)->save(); - $order->addStatusToHistory('processing', $comment, true)->save(); - - echo 'success'; - return; - } else { - echo 'wrong code'; - return; - } - } - echo 'order status is not pending'; - return; } - function sendotpAction(){ - $otpSession = Mage::getSingleton("core/session", array("name" => "frontend"))->getData("codCode"); - $url = $this->getRequest()->getParam('url'); - $url = str_replace('xxxxxx', $otpSession, $url); - $out = file_get_contents($url); - echo $out; - } + //////// otp validation ////////// + public function otpAction() { + $orderId = rtrim($this->getRequest()->getPost('od'),"."); + $otp = $this->getRequest()->getPost('otp'); + $number = $this->getRequest()->getPost('number'); + $otpSession = Mage::getSingleton("core/session", array("name" => "frontend"))->getData("codCode"); + $order = Mage::getModel('sales/order')->loadByIncrementId($orderId); + if ($order->getStatus() == 'pending_cod') { + if ($otp == $otpSession && ($otpSession != '') && isset($otpSession)) { + //define comment + $comment = "Customer confirmed COD through OTP"; + //set state and status + $order->setStatus('processing'); + $order->setState('processing')->save(); + // for event observer on otps. + //Mage::dispatchEvent('sales_order_status_change', array('order' => $order, 'state' => $order->getState(), 'status' => $order->getStatus())); + //Get current status and comment with notification flag 'false' + //$order->addStatusToHistory($order->getStatus(), $comment, true)->save(); + + echo 'success'; + return; + } else { + echo 'wrong code'; + return; + } + } + echo 'order status is not pending'; + return; + } + + function sendotpAction(){ + $otpSession = Mage::getSingleton("core/session", array("name" => "frontend"))->getData("codCode"); + $url = $this->getRequest()->getParam('url'); + $url = str_replace('xxxxxx', $otpSession, $url); + $out = file_get_contents($url); + echo $out; + } } diff --git a/app/code/local/Biztech/Trackorder/etc/config.xml b/app/code/local/Biztech/Trackorder/etc/config.xml index e1f8535..aa63ddf 100644 --- a/app/code/local/Biztech/Trackorder/etc/config.xml +++ b/app/code/local/Biztech/Trackorder/etc/config.xml @@ -33,27 +33,27 @@ </frontend> <admin> <routers> - <trackorder> - <use>admin</use> - <args> - <module>Biztech_Trackorder</module> - <frontName>trackorder</frontName> - </args> - </trackorder> + <trackorder> + <use>admin</use> + <args> + <module>Biztech_Trackorder</module> + <frontName>trackorder</frontName> + </args> + </trackorder> </routers> </admin> <adminhtml> - <acl> - <resources> - <all> - <title>Allow Everything</title> - </all> - <admin> - <children> - <Biztech_Trackorder> - <title>Trackorder Module</title> - <sort_order>10</sort_order> - </Biztech_Trackorder> + <acl> + <resources> + <all> + <title>Allow Everything</title> + </all> + <admin> + <children> + <Biztech_Trackorder> + <title>Trackorder Module</title> + <sort_order>10</sort_order> + </Biztech_Trackorder> <system> <children> <config> @@ -65,17 +65,17 @@ </config> </children> </system> - </children> - </admin> - </resources> - </acl> - <layout> - <updates> - <trackorder> - <file>trackorder.xml</file> - </trackorder> - </updates> - </layout> + </children> + </admin> + </resources> + </acl> + <layout> + <updates> + <trackorder> + <file>trackorder.xml</file> + </trackorder> + </updates> + </layout> </adminhtml> <global> <models> diff --git a/app/code/local/Mage/Adminhtml/Block/Sales/Order/Grid.php b/app/code/local/Mage/Adminhtml/Block/Sales/Order/Grid.php index 21deb33..388f53b 100755 --- a/app/code/local/Mage/Adminhtml/Block/Sales/Order/Grid.php +++ b/app/code/local/Mage/Adminhtml/Block/Sales/Order/Grid.php @@ -67,8 +67,7 @@ class Mage_Adminhtml_Block_Sales_Order_Grid extends Mage_Adminhtml_Block_Widget_ 'telephone' => 'soas.telephone', 'email' => 'email', 'postcode' => 'postcode', - 'region' => 'region', - 'order_tags'=>'main_table.order_tags' + 'region' => 'region' ), null, 'left'); $this->setCollection($collection); @@ -180,12 +179,6 @@ class Mage_Adminhtml_Block_Sales_Order_Grid extends Mage_Adminhtml_Block_Widget_ 'width' => '70px', 'options' => Mage::getSingleton('sales/order_config')->getStatuses() )); - - $this->addColumn('order_tags', array( - 'header' => Mage::helper('sales')->__('Order Tag'), - 'index' => 'order_tags', - 'width' => '50px', - )); $this->addcolumn('wmsStatus', array( 'header' => Mage::helper('sales')->__('WMS Status'), diff --git a/app/code/local/Mage/Adminhtml/controllers/Catalog/ProductController.php b/app/code/local/Mage/Adminhtml/controllers/Catalog/ProductController.php index 141ed33..1d470f5 100755 --- a/app/code/local/Mage/Adminhtml/controllers/Catalog/ProductController.php +++ b/app/code/local/Mage/Adminhtml/controllers/Catalog/ProductController.php @@ -717,6 +717,7 @@ class Mage_Adminhtml_Catalog_ProductController extends Mage_Adminhtml_Controller $redirectBack = $this->getRequest()->getParam('back', false); $productId = $this->getRequest()->getParam('id'); $isEdit = (int)($this->getRequest()->getParam('id') != null); + $write = Mage::getSingleton('core/resource')->getConnection('core_write'); $data = $this->getRequest()->getPost(); if ($data) { @@ -728,6 +729,41 @@ class Mage_Adminhtml_Catalog_ProductController extends Mage_Adminhtml_Controller $product->save(); $productId = $product->getId(); + $result=$write->query("SELECT * FROM catalog_product_entity_tier_price WHERE entity_id=".$productId); + $row = $result->fetch(); + + #Mage::log($productId." ".count($row),null,"tier.log"); + + if(count($row) == 1) + { + foreach($data['product']['tier_price'] as $tier_price) + { + if(strcmp($tier_price['cust_group'],'32000') == 0) + { + $tier_price['cust_group'] = 1; + $all_groups = 1; + } + else + { + $all_groups = 0; + } + if($tier_price['delete'] != 1) + { + $write->insert( + "catalog_product_entity_tier_price", + array('entity_id'=>$productId, + 'customer_group_id' => $tier_price['cust_group'], + 'all_groups' => $all_groups, + //'customer_group_id' => '0', + 'qty' => $tier_price['price_qty'], + 'value' => $tier_price['price'], + 'website_id' => '0' + ) + ); + } + } + } + if (isset($data['copy_to_stores'])) { $this->_copyAttributesBetweenStores($data['copy_to_stores'], $product); } diff --git a/app/code/local/Mage/Catalog/Block/Category/View.php b/app/code/local/Mage/Catalog/Block/Category/View.php deleted file mode 100644 index fed5d44..0000000 --- a/app/code/local/Mage/Catalog/Block/Category/View.php +++ /dev/null @@ -1,178 +0,0 @@ -<?php -/** - * Magento - * - * NOTICE OF LICENSE - * - * This source file is subject to the Open Software License (OSL 3.0) - * that is bundled with this package in the file LICENSE.txt. - * It is also available through the world-wide-web at this URL: - * http://opensource.org/licenses/osl-3.0.php - * If you did not receive a copy of the license and are unable to - * obtain it through the world-wide-web, please send an email - * to license@magentocommerce.com so we can send you a copy immediately. - * - * DISCLAIMER - * - * Do not edit or add to this file if you wish to upgrade Magento to newer - * versions in the future. If you wish to customize Magento for your - * needs please refer to http://www.magentocommerce.com for more information. - * - * @category Mage - * @package Mage_Catalog - * @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com) - * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) - */ - -/** - * Category View block - * - * @category Mage - * @package Mage_Catalog - * @author Magento Core Team <core@magentocommerce.com> - */ -class Mage_Catalog_Block_Category_View extends Mage_Core_Block_Template -{ - protected function _prepareLayout() - { - parent::_prepareLayout(); - $this->getLayout()->createBlock('catalog/breadcrumbs'); - - if ($headBlock = $this->getLayout()->getBlock('head')) { - $category = $this->getCurrentCategory(); - $catagoryName = $category->getName(); - $newTitle ='Buy '.$catagoryName.' Online at Best Price in India - Tolexo.com'; - $newDescription ='Buy '.$catagoryName.' online at Tolexo.com. Shop online from multiple categories and various products. ‚úì Cash on Delivery ‚úì Easy Return ‚úì Free Shipping ‚úì Best Price. '; - - /* Default meta title and meta description in catalog page */ - if ($title = $category->getMetaTitle()) { - $headBlock->setTitle($title); - } - else{ - $headBlock->setTitle($newTitle); - } - - if ($description = $category->getMetaDescription()) { - $headBlock->setDescription($description); - } - else{ - $headBlock->setDescription($newDescription); - } - - if ($keywords = $category->getMetaKeywords()) { - $headBlock->setKeywords($keywords); - } - if ($this->helper('catalog/category')->canUseCanonicalTag()) { - $headBlock->addLinkRel('canonical', $category->getUrl()); - } - /* - want to show rss feed in the url - */ - if ($this->IsRssCatalogEnable() && $this->IsTopCategory()) { - $title = $this->helper('rss')->__('%s RSS Feed',$this->getCurrentCategory()->getName()); - $headBlock->addItem('rss', $this->getRssLink(), 'title="'.$title.'"'); - } - } - - return $this; - } - - public function IsRssCatalogEnable() - { - return Mage::getStoreConfig('rss/catalog/category'); - } - - public function IsTopCategory() - { - return $this->getCurrentCategory()->getLevel()==2; - } - - public function getRssLink() - { - return Mage::getUrl('rss/catalog/category', - array( - 'cid' => $this->getCurrentCategory()->getId(), - 'store_id' => Mage::app()->getStore()->getId() - ) - ); - } - - public function getProductListHtml() - { - return $this->getChildHtml('product_list'); - } - - /** - * Retrieve current category model object - * - * @return Mage_Catalog_Model_Category - */ - public function getCurrentCategory() - { - if (!$this->hasData('current_category')) { - $this->setData('current_category', Mage::registry('current_category')); - } - return $this->getData('current_category'); - } - - public function getCmsBlockHtml() - { - if (!$this->getData('cms_block_html')) { - $html = $this->getLayout()->createBlock('cms/block') - ->setBlockId($this->getCurrentCategory()->getLandingPage()) - ->toHtml(); - $this->setData('cms_block_html', $html); - } - return $this->getData('cms_block_html'); - } - - /** - * Check if category display mode is "Products Only" - * @return bool - */ - public function isProductMode() - { - return $this->getCurrentCategory()->getDisplayMode()==Mage_Catalog_Model_Category::DM_PRODUCT; - } - - /** - * Check if category display mode is "Static Block and Products" - * @return bool - */ - public function isMixedMode() - { - return $this->getCurrentCategory()->getDisplayMode()==Mage_Catalog_Model_Category::DM_MIXED; - } - - /** - * Check if category display mode is "Static Block Only" - * For anchor category with applied filter Static Block Only mode not allowed - * - * @return bool - */ - public function isContentMode() - { - $category = $this->getCurrentCategory(); - $res = false; - if ($category->getDisplayMode()==Mage_Catalog_Model_Category::DM_PAGE) { - $res = true; - if ($category->getIsAnchor()) { - $state = Mage::getSingleton('catalog/layer')->getState(); - if ($state && $state->getFilters()) { - $res = false; - } - } - } - return $res; - } - - /** - * Retrieve block cache tags based on category - * - * @return array - */ - public function getCacheTags() - { - return array_merge(parent::getCacheTags(), $this->getCurrentCategory()->getCacheIdTags()); - } -} diff --git a/app/code/local/Mage/Catalog/Model/Product.php b/app/code/local/Mage/Catalog/Model/Product.php deleted file mode 100644 index 5849af9..0000000 --- a/app/code/local/Mage/Catalog/Model/Product.php +++ /dev/null @@ -1,2065 +0,0 @@ -<?php -/** - * Magento - * - * NOTICE OF LICENSE - * - * This source file is subject to the Open Software License (OSL 3.0) - * that is bundled with this package in the file LICENSE.txt. - * It is also available through the world-wide-web at this URL: - * http://opensource.org/licenses/osl-3.0.php - * If you did not receive a copy of the license and are unable to - * obtain it through the world-wide-web, please send an email - * to license@magentocommerce.com so we can send you a copy immediately. - * - * DISCLAIMER - * - * Do not edit or add to this file if you wish to upgrade Magento to newer - * versions in the future. If you wish to customize Magento for your - * needs please refer to http://www.magentocommerce.com for more information. - * - * @category Mage - * @package Mage_Catalog - * @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com) - * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) - */ - -/** - * Catalog product model - * - * @method Mage_Catalog_Model_Resource_Product getResource() - * @method Mage_Catalog_Model_Product setHasError(bool $value) - * @method null|bool getHasError() - * - * @category Mage - * @package Mage_Catalog - * @author Magento Core Team <core@magentocommerce.com> - */ -class Mage_Catalog_Model_Product extends Mage_Catalog_Model_Abstract -{ - /** - * Entity code. - * Can be used as part of method name for entity processing - */ - const ENTITY = 'catalog_product'; - - const CACHE_TAG = 'catalog_product'; - protected $_cacheTag = 'catalog_product'; - protected $_eventPrefix = 'catalog_product'; - protected $_eventObject = 'product'; - protected $_canAffectOptions = false; - - /** - * Product type instance - * - * @var Mage_Catalog_Model_Product_Type_Abstract - */ - protected $_typeInstance = null; - - /** - * Product type instance as singleton - */ - protected $_typeInstanceSingleton = null; - - /** - * Product link instance - * - * @var Mage_Catalog_Model_Product_Link - */ - protected $_linkInstance; - - /** - * Product object customization (not stored in DB) - * - * @var array - */ - protected $_customOptions = array(); - - /** - * Product Url Instance - * - * @var Mage_Catalog_Model_Product_Url - */ - protected $_urlModel = null; - - protected static $_url; - protected static $_urlRewrite; - - protected $_errors = array(); - - protected $_optionInstance; - - protected $_options = array(); - - /** - * Product reserved attribute codes - */ - protected $_reservedAttributes; - - /** - * Flag for available duplicate function - * - * @var boolean - */ - protected $_isDuplicable = true; - - /** - * Flag for get Price function - * - * @var boolean - */ - protected $_calculatePrice = true; - - /** - * Initialize resources - */ - protected function _construct() - { - $this->_init('catalog/product'); - } - - /** - * Init mapping array of short fields to - * its full names - * - * @return Varien_Object - */ - protected function _initOldFieldsMap() - { - $this->_oldFieldsMap = Mage::helper('catalog')->getOldFieldMap(); - return $this; - } - - /** - * Retrieve Store Id - * - * @return int - */ - public function getStoreId() - { - if ($this->hasData('store_id')) { - return $this->getData('store_id'); - } - return Mage::app()->getStore()->getId(); - } - - /** - * Get collection instance - * - * @return object - */ - public function getResourceCollection() - { - if (empty($this->_resourceCollectionName)) { - Mage::throwException(Mage::helper('catalog')->__('The model collection resource name is not defined.')); - } - $collection = Mage::getResourceModel($this->_resourceCollectionName); - $collection->setStoreId($this->getStoreId()); - return $collection; - } - - /** - * Get product url model - * - * @return Mage_Catalog_Model_Product_Url - */ - public function getUrlModel() - { - if ($this->_urlModel === null) { - $this->_urlModel = Mage::getSingleton('catalog/factory')->getProductUrlInstance(); - } - return $this->_urlModel; - } - - /** - * Validate Product Data - * - * @todo implement full validation process with errors returning which are ignoring now - * - * @return Mage_Catalog_Model_Product - */ - public function validate() - { -// $this->getAttributes(); -// Mage::dispatchEvent($this->_eventPrefix.'_validate_before', array($this->_eventObject=>$this)); -// $result = $this->_getResource()->validate($this); -// Mage::dispatchEvent($this->_eventPrefix.'_validate_after', array($this->_eventObject=>$this)); -// return $result; - Mage::dispatchEvent($this->_eventPrefix.'_validate_before', array($this->_eventObject=>$this)); - $this->_getResource()->validate($this); - Mage::dispatchEvent($this->_eventPrefix.'_validate_after', array($this->_eventObject=>$this)); - return $this; - } - - /** - * Get product name - * - * @return string - */ - public function getName() - { - return $this->_getData('name'); - } - - /** - * Get product price throught type instance - * - * @return unknown - */ - public function getPrice() - { - if ($this->_calculatePrice || !$this->getData('price')) { - return $this->getPriceModel()->getPrice($this); - } else { - return $this->getData('price'); - } - } - - /** - * Set Price calculation flag - * - * @param bool $calculate - * @return void - */ - public function setPriceCalculation($calculate = true) - { - $this->_calculatePrice = $calculate; - } - - /** - * Get product type identifier - * - * @return string - */ - public function getTypeId() - { - return $this->_getData('type_id'); - } - - /** - * Get product status - * - * @return int - */ - public function getStatus() - { - if (is_null($this->_getData('status'))) { - $this->setData('status', Mage_Catalog_Model_Product_Status::STATUS_ENABLED); - } - return $this->_getData('status'); - } - - /** - * Retrieve type instance - * - * Type instance implement type depended logic - * - * @param bool $singleton - * @return Mage_Catalog_Model_Product_Type_Abstract - */ - public function getTypeInstance($singleton = false) - { - if ($singleton === true) { - if (is_null($this->_typeInstanceSingleton)) { - $this->_typeInstanceSingleton = Mage::getSingleton('catalog/product_type') - ->factory($this, true); - } - return $this->_typeInstanceSingleton; - } - - if ($this->_typeInstance === null) { - $this->_typeInstance = Mage::getSingleton('catalog/product_type') - ->factory($this); - } - return $this->_typeInstance; - } - - /** - * Set type instance for external - * - * @param Mage_Catalog_Model_Product_Type_Abstract $instance Product type instance - * @param bool $singleton Whether instance is singleton - * @return Mage_Catalog_Model_Product - */ - public function setTypeInstance($instance, $singleton = false) - { - if ($singleton === true) { - $this->_typeInstanceSingleton = $instance; - } else { - $this->_typeInstance = $instance; - } - return $this; - } - - /** - * Retrieve link instance - * - * @return Mage_Catalog_Model_Product_Link - */ - public function getLinkInstance() - { - if (!$this->_linkInstance) { - $this->_linkInstance = Mage::getSingleton('catalog/product_link'); - } - return $this->_linkInstance; - } - - /** - * Retrive product id by sku - * - * @param string $sku - * @return integer - */ - public function getIdBySku($sku) - { - return $this->_getResource()->getIdBySku($sku); - } - - /** - * Retrieve product category id - * - * @return int - */ - public function getCategoryId() - { - if ($category = Mage::registry('current_category')) { - return $category->getId(); - } - return false; - } - - /** - * Retrieve product category - * - * @return Mage_Catalog_Model_Category - */ - public function getCategory() - { - $category = $this->getData('category'); - if (is_null($category) && $this->getCategoryId()) { - $category = Mage::getModel('catalog/category')->load($this->getCategoryId()); - $this->setCategory($category); - } - return $category; - } - - /** - * Set assigned category IDs array to product - * - * @param array|string $ids - * @return Mage_Catalog_Model_Product - */ - public function setCategoryIds($ids) - { - if (is_string($ids)) { - $ids = explode(',', $ids); - } elseif (!is_array($ids)) { - Mage::throwException(Mage::helper('catalog')->__('Invalid category IDs.')); - } - foreach ($ids as $i => $v) { - if (empty($v)) { - unset($ids[$i]); - } - } - - $this->setData('category_ids', $ids); - return $this; - } - - /** - * Retrieve assigned category Ids - * - * @return array - */ - public function getCategoryIds() - { - if (! $this->hasData('category_ids')) { - $wasLocked = false; - if ($this->isLockedAttribute('category_ids')) { - $wasLocked = true; - $this->unlockAttribute('category_ids'); - } - $ids = $this->_getResource()->getCategoryIds($this); - $this->setData('category_ids', $ids); - if ($wasLocked) { - $this->lockAttribute('category_ids'); - } - } - - return (array) $this->_getData('category_ids'); - } - - /** - * Retrieve product categories - * - * @return Varien_Data_Collection - */ - public function getCategoryCollection() - { - return $this->_getResource()->getCategoryCollection($this); - } - - /** - * Retrieve product websites identifiers - * - * @return array - */ - public function getWebsiteIds() - { - if (!$this->hasWebsiteIds()) { - $ids = $this->_getResource()->getWebsiteIds($this); - $this->setWebsiteIds($ids); - } - return $this->getData('website_ids'); - } - - /** - * Get all sore ids where product is presented - * - * @return array - */ - public function getStoreIds() - { - if (!$this->hasStoreIds()) { - $storeIds = array(); - if ($websiteIds = $this->getWebsiteIds()) { - foreach ($websiteIds as $websiteId) { - $websiteStores = Mage::app()->getWebsite($websiteId)->getStoreIds(); - $storeIds = array_merge($storeIds, $websiteStores); - } - } - $this->setStoreIds($storeIds); - } - return $this->getData('store_ids'); - } - - /** - * Retrieve product attributes - * if $groupId is null - retrieve all product attributes - * - * @param int $groupId Retrieve attributes of the specified group - * @param bool $skipSuper Not used - * @return array - */ - public function getAttributes($groupId = null, $skipSuper = false) - { - $productAttributes = $this->getTypeInstance(true)->getEditableAttributes($this); - if ($groupId) { - $attributes = array(); - foreach ($productAttributes as $attribute) { - if ($attribute->isInGroup($this->getAttributeSetId(), $groupId)) { - $attributes[] = $attribute; - } - } - } else { - $attributes = $productAttributes; - } - - return $attributes; - } - - /** - * Check product options and type options and save them, too - */ - protected function _beforeSave() - { - $this->getTierPrice(); - $this->cleanCache(); - $this->setTypeHasOptions(false); - $this->setTypeHasRequiredOptions(false); - - $this->getTypeInstance(true)->beforeSave($this); - - $hasOptions = false; - $hasRequiredOptions = false; - - /** - * $this->_canAffectOptions - set by type instance only - * $this->getCanSaveCustomOptions() - set either in controller when "Custom Options" ajax tab is loaded, - * or in type instance as well - */ - $this->canAffectOptions($this->_canAffectOptions && $this->getCanSaveCustomOptions()); - if ($this->getCanSaveCustomOptions()) { - $options = $this->getProductOptions(); - if (is_array($options)) { - $this->setIsCustomOptionChanged(true); - foreach ($this->getProductOptions() as $option) { - $this->getOptionInstance()->addOption($option); - if ((!isset($option['is_delete'])) || $option['is_delete'] != '1') { - $hasOptions = true; - } - } - foreach ($this->getOptionInstance()->getOptions() as $option) { - if ($option['is_require'] == '1') { - $hasRequiredOptions = true; - break; - } - } - } - } - - /** - * Set true, if any - * Set false, ONLY if options have been affected by Options tab and Type instance tab - */ - if ($hasOptions || (bool)$this->getTypeHasOptions()) { - $this->setHasOptions(true); - if ($hasRequiredOptions || (bool)$this->getTypeHasRequiredOptions()) { - $this->setRequiredOptions(true); - } elseif ($this->canAffectOptions()) { - $this->setRequiredOptions(false); - } - } elseif ($this->canAffectOptions()) { - $this->setHasOptions(false); - $this->setRequiredOptions(false); - } - parent::_beforeSave(); - } - - /** - * Check/set if options can be affected when saving product - * If value specified, it will be set. - * - * @param bool $value - * @return bool - */ - public function canAffectOptions($value = null) - { - if (null !== $value) { - $this->_canAffectOptions = (bool)$value; - } - return $this->_canAffectOptions; - } - - /** - * Saving product type related data and init index - * - * @return Mage_Catalog_Model_Product - */ - protected function _afterSave() - { - $this->getLinkInstance()->saveProductRelations($this); - $this->getTypeInstance(true)->save($this); - - /** - * Product Options - */ - $this->getOptionInstance()->setProduct($this) - ->saveOptions(); - - $result = parent::_afterSave(); - - Mage::getSingleton('index/indexer')->processEntityAction( - $this, self::ENTITY, Mage_Index_Model_Event::TYPE_SAVE - ); - return $result; - } - - /** - * Clear chache related with product and protect delete from not admin - * Register indexing event before delete product - * - * @return Mage_Catalog_Model_Product - */ - protected function _beforeDelete() - { - $this->_protectFromNonAdmin(); - $this->cleanCache(); - Mage::getSingleton('index/indexer')->logEvent( - $this, self::ENTITY, Mage_Index_Model_Event::TYPE_DELETE - ); - return parent::_beforeDelete(); - } - - /** - * Init indexing process after product delete commit - * - * @return Mage_Catalog_Model_Product - */ - protected function _afterDeleteCommit() - { - parent::_afterDeleteCommit(); - Mage::getSingleton('index/indexer')->indexEvents( - self::ENTITY, Mage_Index_Model_Event::TYPE_DELETE - ); - } - - /** - * Load product options if they exists - * - * @return Mage_Catalog_Model_Product - */ - protected function _afterLoad() - { - parent::_afterLoad(); - /** - * Load product options - */ - if ($this->getHasOptions()) { - foreach ($this->getProductOptionsCollection() as $option) { - $option->setProduct($this); - $this->addOption($option); - } - } - return $this; - } - - /** - * Retrieve resource instance wrapper - * - * @return Mage_Catalog_Model_Resource_Eav_Mysql4_Product - */ - protected function _getResource() - { - return parent::_getResource(); - } - - /** - * Clear cache related with product id - * - * @return Mage_Catalog_Model_Product - */ - public function cleanCache() - { - Mage::app()->cleanCache('catalog_product_'.$this->getId()); - return $this; - } - - /** - * Get product price model - * - * @return Mage_Catalog_Model_Product_Type_Price - */ - public function getPriceModel() - { - return Mage::getSingleton('catalog/product_type')->priceFactory($this->getTypeId()); - } - - /** - * Get product group price - * - * @return float - */ - public function getGroupPrice() - { - return $this->getPriceModel()->getGroupPrice($this); - } - - /** - * Get product tier price by qty - * - * @param double $qty - * @return double - */ - public function getTierPrice($qty=null) - { - return $this->getPriceModel()->getTierPrice($qty, $this); - } - - /** - * Count how many tier prices we have for the product - * - * @return int - */ - public function getTierPriceCount() - { - return $this->getPriceModel()->getTierPriceCount($this); - } - - /** - * Get formated by currency tier price - * - * @param double $qty - * @return array || double - */ - public function getFormatedTierPrice($qty=null) - { - return $this->getPriceModel()->getFormatedTierPrice($qty, $this); - } - - /** - * Get formated by currency product price - * - * @return array || double - */ - public function getFormatedPrice() - { - return $this->getPriceModel()->getFormatedPrice($this); - } - - /** - * Sets final price of product - * - * This func is equal to magic 'setFinalPrice()', but added as a separate func, because in cart with bundle - * products it's called very often in Item->getProduct(). So removing chain of magic with more cpu consuming - * algorithms gives nice optimization boost. - * - * @param float $price Price amount - * @return Mage_Catalog_Model_Product - */ - public function setFinalPrice($price) - { - $this->_data['final_price'] = $price; - return $this; - } - - /** - * Get product final price - * - * @param double $qty - * @return double - */ - public function getFinalPrice($qty=null) - { - $price = $this->_getData('final_price'); - if ($price !== null) { - return $price; - } - return $this->getPriceModel()->getFinalPrice($qty, $this); - } - - /** - * Returns calculated final price - * - * @return float - */ - public function getCalculatedFinalPrice() - { - return $this->_getData('calculated_final_price'); - } - - /** - * Returns minimal price - * - * @return float - */ - public function getMinimalPrice() - { - return max($this->_getData('minimal_price'), 0); - } - - /** - * Returns special price - * - * @return float - */ - public function getSpecialPrice() - { - return $this->_getData('special_price'); - } - - /** - * Returns starting date of the special price - * - * @return mixed - */ - public function getSpecialFromDate() - { - return $this->_getData('special_from_date'); - } - - /** - * Returns end date of the special price - * - * @return mixed - */ - public function getSpecialToDate() - { - return $this->_getData('special_to_date'); - } - - -/******************************************************************************* - ** Linked products API - */ - /** - * Retrieve array of related roducts - * - * @return array - */ - public function getRelatedProducts() - { - if (!$this->hasRelatedProducts()) { - $products = array(); - $collection = $this->getRelatedProductCollection(); - foreach ($collection as $product) { - $products[] = $product; - } - $this->setRelatedProducts($products); - } - return $this->getData('related_products'); - } - - /** - * Retrieve related products identifiers - * - * @return array - */ - public function getRelatedProductIds() - { - if (!$this->hasRelatedProductIds()) { - $ids = array(); - foreach ($this->getRelatedProducts() as $product) { - $ids[] = $product->getId(); - } - $this->setRelatedProductIds($ids); - } - return $this->getData('related_product_ids'); - } - - /** - * Retrieve collection related product - * - * @return Mage_Catalog_Model_Resource_Product_Link_Product_Collection - */ - public function getRelatedProductCollection() - { - $collection = $this->getLinkInstance()->useRelatedLinks() - ->getProductCollection() - ->setIsStrongMode(); - $collection->setProduct($this); - return $collection; - } - - /** - * Retrieve collection related link - * - * @return Mage_Catalog_Model_Resource_Product_Link_Collection - */ - public function getRelatedLinkCollection() - { - $collection = $this->getLinkInstance()->useRelatedLinks() - ->getLinkCollection(); - $collection->setProduct($this); - $collection->addLinkTypeIdFilter(); - $collection->addProductIdFilter(); - $collection->joinAttributes(); - return $collection; - } - - /** - * Retrieve array of up sell products - * - * @return array - */ - public function getUpSellProducts() - { - if (!$this->hasUpSellProducts()) { - $products = array(); - foreach ($this->getUpSellProductCollection() as $product) { - $products[] = $product; - } - $this->setUpSellProducts($products); - } - return $this->getData('up_sell_products'); - } - - /** - * Retrieve up sell products identifiers - * - * @return array - */ - public function getUpSellProductIds() - { - if (!$this->hasUpSellProductIds()) { - $ids = array(); - foreach ($this->getUpSellProducts() as $product) { - $ids[] = $product->getId(); - } - $this->setUpSellProductIds($ids); - } - return $this->getData('up_sell_product_ids'); - } - - /** - * Retrieve collection up sell product - * - * @return Mage_Catalog_Model_Resource_Product_Link_Product_Collection - */ - public function getUpSellProductCollection() - { - $collection = $this->getLinkInstance()->useUpSellLinks() - ->getProductCollection() - ->setIsStrongMode(); - $collection->setProduct($this); - return $collection; - } - - /** - * Retrieve collection up sell link - * - * @return Mage_Catalog_Model_Resource_Product_Link_Collection - */ - public function getUpSellLinkCollection() - { - $collection = $this->getLinkInstance()->useUpSellLinks() - ->getLinkCollection(); - $collection->setProduct($this); - $collection->addLinkTypeIdFilter(); - $collection->addProductIdFilter(); - $collection->joinAttributes(); - return $collection; - } - - /** - * Retrieve array of cross sell products - * - * @return array - */ - public function getCrossSellProducts() - { - if (!$this->hasCrossSellProducts()) { - $products = array(); - foreach ($this->getCrossSellProductCollection() as $product) { - $products[] = $product; - } - $this->setCrossSellProducts($products); - } - return $this->getData('cross_sell_products'); - } - - /** - * Retrieve cross sell products identifiers - * - * @return array - */ - public function getCrossSellProductIds() - { - if (!$this->hasCrossSellProductIds()) { - $ids = array(); - foreach ($this->getCrossSellProducts() as $product) { - $ids[] = $product->getId(); - } - $this->setCrossSellProductIds($ids); - } - return $this->getData('cross_sell_product_ids'); - } - - /** - * Retrieve collection cross sell product - * - * @return Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Link_Product_Collection - */ - public function getCrossSellProductCollection() - { - $collection = $this->getLinkInstance()->useCrossSellLinks() - ->getProductCollection() - ->setIsStrongMode(); - $collection->setProduct($this); - return $collection; - } - - /** - * Retrieve collection cross sell link - * - * @return Mage_Catalog_Model_Resource_Product_Link_Collection - */ - public function getCrossSellLinkCollection() - { - $collection = $this->getLinkInstance()->useCrossSellLinks() - ->getLinkCollection(); - $collection->setProduct($this); - $collection->addLinkTypeIdFilter(); - $collection->addProductIdFilter(); - $collection->joinAttributes(); - return $collection; - } - - /** - * Retrieve collection grouped link - * - * @return Mage_Catalog_Model_Resource_Product_Link_Collection - */ - public function getGroupedLinkCollection() - { - $collection = $this->getLinkInstance()->useGroupedLinks() - ->getLinkCollection(); - $collection->setProduct($this); - $collection->addLinkTypeIdFilter(); - $collection->addProductIdFilter(); - $collection->joinAttributes(); - return $collection; - } - -/******************************************************************************* - ** Media API - */ - /** - * Retrive attributes for media gallery - * - * @return array - */ - public function getMediaAttributes() - { - if (!$this->hasMediaAttributes()) { - $mediaAttributes = array(); - foreach ($this->getAttributes() as $attribute) { - if($attribute->getFrontend()->getInputType() == 'media_image') { - $mediaAttributes[$attribute->getAttributeCode()] = $attribute; - } - } - $this->setMediaAttributes($mediaAttributes); - } - return $this->getData('media_attributes'); - } - - /** - * Retrive media gallery images - * - * @return Varien_Data_Collection - */ - public function getMediaGalleryImages() - { - if(!$this->hasData('media_gallery_images') && is_array($this->getMediaGallery('images'))) { - $images = new Varien_Data_Collection(); - foreach ($this->getMediaGallery('images') as $image) { - if ($image['disabled']) { - continue; - } - $image['url'] = $this->getMediaConfig()->getMediaUrl($image['file']); - $image['id'] = isset($image['value_id']) ? $image['value_id'] : null; - $image['path'] = $this->getMediaConfig()->getMediaPath($image['file']); - $images->addItem(new Varien_Object($image)); - } - $this->setData('media_gallery_images', $images); - } - - return $this->getData('media_gallery_images'); - } - - /** - * Add image to media gallery - * - * @param string $file file path of image in file system - * @param string|array $mediaAttribute code of attribute with type 'media_image', - * leave blank if image should be only in gallery - * @param boolean $move if true, it will move source file - * @param boolean $exclude mark image as disabled in product page view - * @return Mage_Catalog_Model_Product - */ - public function addImageToMediaGallery($file, $mediaAttribute=null, $move=false, $exclude=true) - { - $attributes = $this->getTypeInstance(true)->getSetAttributes($this); - if (!isset($attributes['media_gallery'])) { - return $this; - } - $mediaGalleryAttribute = $attributes['media_gallery']; - /* @var $mediaGalleryAttribute Mage_Catalog_Model_Resource_Eav_Attribute */ - $mediaGalleryAttribute->getBackend()->addImage($this, $file, $mediaAttribute, $move, $exclude); - return $this; - } - - /** - * Retrive product media config - * - * @return Mage_Catalog_Model_Product_Media_Config - */ - public function getMediaConfig() - { - return Mage::getSingleton('catalog/product_media_config'); - } - - /** - * Create duplicate - * - * @return Mage_Catalog_Model_Product - */ - public function duplicate() - { - $this->getWebsiteIds(); - $this->getCategoryIds(); - - /* @var $newProduct Mage_Catalog_Model_Product */ - $newProduct = Mage::getModel('catalog/product')->setData($this->getData()) - ->setIsDuplicate(true) - ->setOriginalId($this->getId()) - ->setSku(null) - ->setStatus(Mage_Catalog_Model_Product_Status::STATUS_DISABLED) - ->setCreatedAt(null) - ->setUpdatedAt(null) - ->setId(null) - ->setStoreId(Mage::app()->getStore()->getId()); - - Mage::dispatchEvent( - 'catalog_model_product_duplicate', - array('current_product' => $this, 'new_product' => $newProduct) - ); - - /* Prepare Related*/ - $data = array(); - $this->getLinkInstance()->useRelatedLinks(); - $attributes = array(); - foreach ($this->getLinkInstance()->getAttributes() as $_attribute) { - if (isset($_attribute['code'])) { - $attributes[] = $_attribute['code']; - } - } - foreach ($this->getRelatedLinkCollection() as $_link) { - $data[$_link->getLinkedProductId()] = $_link->toArray($attributes); - } - $newProduct->setRelatedLinkData($data); - - /* Prepare UpSell*/ - $data = array(); - $this->getLinkInstance()->useUpSellLinks(); - $attributes = array(); - foreach ($this->getLinkInstance()->getAttributes() as $_attribute) { - if (isset($_attribute['code'])) { - $attributes[] = $_attribute['code']; - } - } - foreach ($this->getUpSellLinkCollection() as $_link) { - $data[$_link->getLinkedProductId()] = $_link->toArray($attributes); - } - $newProduct->setUpSellLinkData($data); - - /* Prepare Cross Sell */ - $data = array(); - $this->getLinkInstance()->useCrossSellLinks(); - $attributes = array(); - foreach ($this->getLinkInstance()->getAttributes() as $_attribute) { - if (isset($_attribute['code'])) { - $attributes[] = $_attribute['code']; - } - } - foreach ($this->getCrossSellLinkCollection() as $_link) { - $data[$_link->getLinkedProductId()] = $_link->toArray($attributes); - } - $newProduct->setCrossSellLinkData($data); - - /* Prepare Grouped */ - $data = array(); - $this->getLinkInstance()->useGroupedLinks(); - $attributes = array(); - foreach ($this->getLinkInstance()->getAttributes() as $_attribute) { - if (isset($_attribute['code'])) { - $attributes[] = $_attribute['code']; - } - } - foreach ($this->getGroupedLinkCollection() as $_link) { - $data[$_link->getLinkedProductId()] = $_link->toArray($attributes); - } - $newProduct->setGroupedLinkData($data); - - $newProduct->save(); - - $this->getOptionInstance()->duplicate($this->getId(), $newProduct->getId()); - $this->getResource()->duplicate($this->getId(), $newProduct->getId()); - - // TODO - duplicate product on all stores of the websites it is associated with - /*if ($storeIds = $this->getWebsiteIds()) { - foreach ($storeIds as $storeId) { - $this->setStoreId($storeId) - ->load($this->getId()); - - $newProduct->setData($this->getData()) - ->setSku(null) - ->setStatus(Mage_Catalog_Model_Product_Status::STATUS_DISABLED) - ->setId($newId) - ->save(); - } - }*/ - return $newProduct; - } - - /** - * Is product grouped - * - * @return bool - */ - public function isSuperGroup() - { - return $this->getTypeId() == Mage_Catalog_Model_Product_Type::TYPE_GROUPED; - } - - /** - * Alias for isConfigurable() - * - * @return bool - */ - public function isSuperConfig() - { - return $this->isConfigurable(); - } - /** - * Check is product grouped - * - * @return bool - */ - public function isGrouped() - { - return $this->getTypeId() == Mage_Catalog_Model_Product_Type::TYPE_GROUPED; - } - - /** - * Check is product configurable - * - * @return bool - */ - public function isConfigurable() - { - return $this->getTypeId() == Mage_Catalog_Model_Product_Type::TYPE_CONFIGURABLE; - } - - /** - * Whether product configurable or grouped - * - * @return bool - */ - public function isSuper() - { - return $this->isConfigurable() || $this->isGrouped(); - } - - /** - * Returns visible status IDs in catalog - * - * @return array - */ - public function getVisibleInCatalogStatuses() - { - return Mage::getSingleton('catalog/product_status')->getVisibleStatusIds(); - } - - /** - * Retrieve visible statuses - * - * @return array - */ - public function getVisibleStatuses() - { - return Mage::getSingleton('catalog/product_status')->getVisibleStatusIds(); - } - - /** - * Check Product visilbe in catalog - * - * @return bool - */ - public function isVisibleInCatalog() - { - return in_array($this->getStatus(), $this->getVisibleInCatalogStatuses()); - } - - /** - * Retrieve visible in site visibilities - * - * @return array - */ - public function getVisibleInSiteVisibilities() - { - return Mage::getSingleton('catalog/product_visibility')->getVisibleInSiteIds(); - } - - /** - * Check Product visible in site - * - * @return bool - */ - public function isVisibleInSiteVisibility() - { - return in_array($this->getVisibility(), $this->getVisibleInSiteVisibilities()); - } - - /** - * Checks product can be duplicated - * - * @return boolean - */ - public function isDuplicable() - { - return $this->_isDuplicable; - } - - /** - * Set is duplicable flag - * - * @param boolean $value - * @return Mage_Catalog_Model_Product - */ - public function setIsDuplicable($value) - { - $this->_isDuplicable = (boolean) $value; - return $this; - } - - - /** - * Check is product available for sale - * - * @return bool - */ - public function isSalable() - { - Mage::dispatchEvent('catalog_product_is_salable_before', array( - 'product' => $this - )); - - $salable = $this->isAvailable(); - - $object = new Varien_Object(array( - 'product' => $this, - 'is_salable' => $salable - )); - Mage::dispatchEvent('catalog_product_is_salable_after', array( - 'product' => $this, - 'salable' => $object - )); - return $object->getIsSalable(); - } - - /** - * Check whether the product type or stock allows to purchase the product - * - * @return bool - */ - public function isAvailable() - { - return $this->getTypeInstance(true)->isSalable($this) - || Mage::helper('catalog/product')->getSkipSaleableCheck(); - } - - /** - * Is product salable detecting by product type - * - * @return bool - */ - public function getIsSalable() - { - $productType = $this->getTypeInstance(true); - if (method_exists($productType, 'getIsSalable')) { - return $productType->getIsSalable($this); - } - if ($this->hasData('is_salable')) { - return $this->getData('is_salable'); - } - - return $this->isSalable(); - } - - /** - * Check is a virtual product - * Data helper wrapper - * - * @return bool - */ - public function isVirtual() - { - return $this->getIsVirtual(); - } - - /** - * Whether the product is a recurring payment - * - * @return bool - */ - public function isRecurring() - { - return $this->getIsRecurring() == '1'; - } - - /** - * Alias for isSalable() - * - * @return bool - */ - public function isSaleable() - { - return $this->isSalable(); - } - - /** - * Whether product available in stock - * - * @return bool - */ - public function isInStock() - { - return $this->getStatus() == Mage_Catalog_Model_Product_Status::STATUS_ENABLED; - } - - /** - * Get attribute text by its code - * - * @param $attributeCode Code of the attribute - * @return string - */ - public function getAttributeText($attributeCode) - { - return $this->getResource() - ->getAttribute($attributeCode) - ->getSource() - ->getOptionText($this->getData($attributeCode)); - } - - /** - * Returns array with dates for custom design - * - * @return array - */ - public function getCustomDesignDate() - { - $result = array(); - $result['from'] = $this->getData('custom_design_from'); - $result['to'] = $this->getData('custom_design_to'); - - return $result; - } - - /** - * Retrieve Product URL - * - * @param bool $useSid - * @return string - */ - public function getProductUrl($useSid = null) - { - return $this->getUrlModel()->getProductUrl($this, $useSid); - } - - /** - * Retrieve URL in current store - * - * @param array $params the route params - * @return string - */ - public function getUrlInStore($params = array()) - { - return $this->getUrlModel()->getUrlInStore($this, $params); - } - - /** - * Formats URL key - * - * @param $str URL - * @return string - */ - public function formatUrlKey($str) - { - return $this->getUrlModel()->formatUrlKey($str); - } - - /** - * Retrieve Product Url Path (include category) - * - * @param Mage_Catalog_Model_Category $category - * @return string - */ - public function getUrlPath($category=null) - { - return $this->getUrlModel()->getUrlPath($this, $category); - } - - /** - * Save current attribute with code $code and assign new value - * - * @param string $code Attribute code - * @param mixed $value New attribute value - * @param int $store Store ID - * @return void - */ - public function addAttributeUpdate($code, $value, $store) - { - $oldValue = $this->getData($code); - $oldStore = $this->getStoreId(); - - $this->setData($code, $value); - $this->setStoreId($store); - $this->getResource()->saveAttribute($this, $code); - - $this->setData($code, $oldValue); - $this->setStoreId($oldStore); - } - - /** - * Renders the object to array - * - * @param array $arrAttributes Attribute array - * @return array - */ - public function toArray(array $arrAttributes=array()) - { - $data = parent::toArray($arrAttributes); - if ($stock = $this->getStockItem()) { - $data['stock_item'] = $stock->toArray(); - } - unset($data['stock_item']['product']); - return $data; - } - - /** - * Same as setData(), but also initiates the stock item (if it is there) - * - * @param array $data Array to form the object from - * @return Mage_Catalog_Model_Product - */ - public function fromArray($data) - { - if (isset($data['stock_item'])) { - if (Mage::helper('catalog')->isModuleEnabled('Mage_CatalogInventory')) { - $stockItem = Mage::getModel('cataloginventory/stock_item') - ->setData($data['stock_item']) - ->setProduct($this); - $this->setStockItem($stockItem); - } - unset($data['stock_item']); - } - $this->setData($data); - return $this; - } - - /** - * @deprecated after 1.4.2.0 - * @return Mage_Catalog_Model_Product - */ - public function loadParentProductIds() - { - return $this->setParentProductIds(array()); - } - - /** - * Delete product - * - * @return Mage_Catalog_Model_Product - */ - public function delete() - { - parent::delete(); - Mage::dispatchEvent($this->_eventPrefix.'_delete_after_done', array($this->_eventObject=>$this)); - return $this; - } - - /** - * Returns request path - * - * @return string - */ - public function getRequestPath() - { - if (!$this->_getData('request_path')) { - $this->getProductUrl(); - } - return $this->_getData('request_path'); - } - - /** - * Custom function for other modules - * @return string - */ - - public function getGiftMessageAvailable() - { - return $this->_getData('gift_message_available'); - } - - /** - * Returns rating summary - * - * @return mixed - */ - public function getRatingSummary() - { - return $this->_getData('rating_summary'); - } - - /** - * Check is product composite - * - * @return bool - */ - public function isComposite() - { - return $this->getTypeInstance(true)->isComposite($this); - } - - /** - * Check if product can be configured - * - * @return bool - */ - public function canConfigure() - { - $options = $this->getOptions(); - return !empty($options) || $this->getTypeInstance(true)->canConfigure($this); - } - - /** - * Retrieve sku through type instance - * - * @return string - */ - public function getSku() - { - return $this->getTypeInstance(true)->getSku($this); - } - - /** - * Retrieve weight throught type instance - * - * @return unknown - */ - public function getWeight() - { - return $this->getTypeInstance(true)->getWeight($this); - } - - /** - * Retrieve option instance - * - * @return Mage_Catalog_Model_Product_Option - */ - public function getOptionInstance() - { - if (!$this->_optionInstance) { - $this->_optionInstance = Mage::getSingleton('catalog/product_option'); - } - return $this->_optionInstance; - } - - /** - * Retrieve options collection of product - * - * @return Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Option_Collection - */ - public function getProductOptionsCollection() - { - $collection = $this->getOptionInstance() - ->getProductOptionCollection($this); - - return $collection; - } - - /** - * Add option to array of product options - * - * @param Mage_Catalog_Model_Product_Option $option - * @return Mage_Catalog_Model_Product - */ - public function addOption(Mage_Catalog_Model_Product_Option $option) - { - $this->_options[$option->getId()] = $option; - return $this; - } - - /** - * Get option from options array of product by given option id - * - * @param int $optionId - * @return Mage_Catalog_Model_Product_Option | null - */ - public function getOptionById($optionId) - { - if (isset($this->_options[$optionId])) { - return $this->_options[$optionId]; - } - - return null; - } - - /** - * Get all options of product - * - * @return array - */ - public function getOptions() - { - return $this->_options; - } - - /** - * Retrieve is a virtual product - * - * @return bool - */ - public function getIsVirtual() - { - return $this->getTypeInstance(true)->isVirtual($this); - } - - /** - * Add custom option information to product - * - * @param string $code Option code - * @param mixed $value Value of the option - * @param int $product Product ID - * @return Mage_Catalog_Model_Product - */ - public function addCustomOption($code, $value, $product=null) - { - $product = $product ? $product : $this; - $option = Mage::getModel('catalog/product_configuration_item_option') - ->addData(array( - 'product_id'=> $product->getId(), - 'product' => $product, - 'code' => $code, - 'value' => $value, - )); - $this->_customOptions[$code] = $option; - return $this; - } - - /** - * Sets custom options for the product - * - * @param array $options Array of options - * @return void - */ - public function setCustomOptions(array $options) - { - $this->_customOptions = $options; - } - - /** - * Get all custom options of the product - * - * @return array - */ - public function getCustomOptions() - { - return $this->_customOptions; - } - - /** - * Get product custom option info - * - * @param string $code - * @return array - */ - public function getCustomOption($code) - { - if (isset($this->_customOptions[$code])) { - return $this->_customOptions[$code]; - } - return null; - } - - /** - * Checks if there custom option for this product - * - * @return bool - */ - public function hasCustomOptions() - { - if (count($this->_customOptions)) { - return true; - } else { - return false; - } - } - - /** - * Check availability display product in category - * - * @param int $categoryId - * @return bool - */ - public function canBeShowInCategory($categoryId) - { - return $this->_getResource()->canBeShowInCategory($this, $categoryId); - } - - /** - * Retrieve category ids where product is available - * - * @return array - */ - public function getAvailableInCategories() - { - return $this->_getResource()->getAvailableInCategories($this); - } - - /** - * Retrieve default attribute set id - * - * @return int - */ - public function getDefaultAttributeSetId() - { - return $this->getResource()->getEntityType()->getDefaultAttributeSetId(); - } - - /** - * Return Catalog Product Image helper instance - * - * @return Mage_Catalog_Helper_Image - */ - protected function _getImageHelper() - { - return Mage::helper('catalog/image'); - } - - /** - * Return re-sized image URL - * - * @deprecated since 1.1.5 - * @return string - */ - public function getImageUrl() - { - return (string)$this->_getImageHelper()->init($this, 'image')->resize(265); - } - - /** - * Return re-sized small image URL - * - * @deprecated since 1.1.5 - * @param int $width - * @param int $height - * @return string - */ - public function getSmallImageUrl($width = 88, $height = 77) - { - return (string)$this->_getImageHelper()->init($this, 'small_image')->resize($width, $height); - } - - /** - * Return re-sized thumbnail image URL - * - * @deprecated since 1.1.5 - * @param int $width - * @param int $height - * @return string - */ - public function getThumbnailUrl($width = 75, $height = 75) - { - return (string)$this->_getImageHelper()->init($this, 'thumbnail')->resize($width, $height); - } - - /** - * Returns system reserved attribute codes - * - * @return array Reserved attribute names - */ - public function getReservedAttributes() - { - if ($this->_reservedAttributes === null) { - $_reserved = array('position'); - $methods = get_class_methods(__CLASS__); - foreach ($methods as $method) { - if (preg_match('/^get([A-Z]{1}.+)/', $method, $matches)) { - $method = $matches[1]; - $tmp = strtolower(preg_replace('/(.)([A-Z])/', "$1_$2", $method)); - $_reserved[] = $tmp; - } - } - $_allowed = array( - 'type_id','calculated_final_price','request_path','rating_summary' - ); - $this->_reservedAttributes = array_diff($_reserved, $_allowed); - } - return $this->_reservedAttributes; - } - - /** - * Check whether attribute reserved or not - * - * @param Mage_Catalog_Model_Entity_Attribute $attribute Attribute model object - * @return boolean - */ - public function isReservedAttribute ($attribute) - { - return $attribute->getIsUserDefined() - && in_array($attribute->getAttributeCode(), $this->getReservedAttributes()); - } - - /** - * Set original loaded data if needed - * - * @param string $key - * @param mixed $data - * @return Varien_Object - */ - public function setOrigData($key=null, $data=null) - { - if (Mage::app()->getStore()->isAdmin()) { - return parent::setOrigData($key, $data); - } - - return $this; - } - - /** - * Reset all model data - * - * @return Mage_Catalog_Model_Product - */ - public function reset() - { - $this->unlockAttributes(); - $this->_clearData(); - return $this; - } - - /** - * Get cahce tags associated with object id - * - * @return array - */ - public function getCacheIdTags() - { - $tags = parent::getCacheIdTags(); - $affectedCategoryIds = $this->getAffectedCategoryIds(); - if (!$affectedCategoryIds) { - $affectedCategoryIds = $this->getCategoryIds(); - } - foreach ($affectedCategoryIds as $categoryId) { - $tags[] = Mage_Catalog_Model_Category::CACHE_TAG.'_'.$categoryId; - } - return $tags; - } - - /** - * Check for empty SKU on each product - * - * @param array $productIds - * @return boolean|null - */ - public function isProductsHasSku(array $productIds) - { - $products = $this->_getResource()->getProductsSku($productIds); - if (count($products)) { - foreach ($products as $product) { - if (!strlen($product['sku'])) { - return false; - } - } - return true; - } - return null; - } - - /** - * Parse buyRequest into options values used by product - * - * @param Varien_Object $buyRequest - * @return Varien_Object - */ - public function processBuyRequest(Varien_Object $buyRequest) - { - $options = new Varien_Object(); - - /* add product custom options data */ - $customOptions = $buyRequest->getOptions(); - if (is_array($customOptions)) { - $options->setOptions(array_diff($buyRequest->getOptions(), array(''))); - } - - /* add product type selected options data */ - $type = $this->getTypeInstance(true); - $typeSpecificOptions = $type->processBuyRequest($this, $buyRequest); - $options->addData($typeSpecificOptions); - - /* check correctness of product's options */ - $options->setErrors($type->checkProductConfiguration($this, $buyRequest)); - - return $options; - } - - /** - * Get preconfigured values from product - * - * @return Varien_Object - */ - public function getPreconfiguredValues() - { - $preconfiguredValues = $this->getData('preconfigured_values'); - if (!$preconfiguredValues) { - $preconfiguredValues = new Varien_Object(); - } - - return $preconfiguredValues; - } - - /** - * Prepare product custom options. - * To be sure that all product custom options does not has ID and has product instance - * - * @return Mage_Catalog_Model_Product - */ - public function prepareCustomOptions() - { - foreach ($this->getCustomOptions() as $option) { - if (!is_object($option->getProduct()) || $option->getId()) { - $this->addCustomOption($option->getCode(), $option->getValue()); - } - } - - return $this; - } - - /** - * Clearing references on product - * - * @return Mage_Catalog_Model_Product - */ - protected function _clearReferences() - { - $this->_clearOptionReferences(); - return $this; - } - - /** - * Clearing product's data - * - * @return Mage_Catalog_Model_Product - */ - protected function _clearData() - { - foreach ($this->_data as $data){ - if (is_object($data) && method_exists($data, 'reset')){ - $data->reset(); - } - } - - $this->setData(array()); - $this->setOrigData(); - $this->_customOptions = array(); - $this->_optionInstance = null; - $this->_options = array(); - $this->_canAffectOptions = false; - $this->_errors = array(); - - return $this; - } - - /** - * Clearing references to product from product's options - * - * @return Mage_Catalog_Model_Product - */ - protected function _clearOptionReferences() - { - /** - * unload product options - */ - if (!empty($this->_options)) { - foreach ($this->_options as $key => $option) { - $option->setProduct(); - $option->clearInstance(); - } - } - - return $this; - } - - /** - * Retrieve product entities info as array - * - * @param string|array $columns One or several columns - * @return array - */ - public function getProductEntitiesInfo($columns = null) - { - return $this->_getResource()->getProductEntitiesInfo($columns); - } - - /** - * Checks whether product has disabled status - * - * @return bool - */ - public function isDisabled() - { - return $this->getStatus() == Mage_Catalog_Model_Product_Status::STATUS_DISABLED; - } -} diff --git a/app/code/local/Mage/Checkout/Model/Cart.php b/app/code/local/Mage/Checkout/Model/Cart.php deleted file mode 100644 index fe53507..0000000 --- a/app/code/local/Mage/Checkout/Model/Cart.php +++ /dev/null @@ -1,606 +0,0 @@ -<?php -/** - * Magento - * - * NOTICE OF LICENSE - * - * This source file is subject to the Open Software License (OSL 3.0) - * that is bundled with this package in the file LICENSE.txt. - * It is also available through the world-wide-web at this URL: - * http://opensource.org/licenses/osl-3.0.php - * If you did not receive a copy of the license and are unable to - * obtain it through the world-wide-web, please send an email - * to license@magentocommerce.com so we can send you a copy immediately. - * - * DISCLAIMER - * - * Do not edit or add to this file if you wish to upgrade Magento to newer - * versions in the future. If you wish to customize Magento for your - * needs please refer to http://www.magentocommerce.com for more information. - * - * @category Mage - * @package Mage_Checkout - * @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com) - * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) - */ - -/** - * Shopping cart model - * - * @category Mage - * @package Mage_Checkout - * @author Magento Core Team <core@magentocommerce.com> - */ -class Mage_Checkout_Model_Cart extends Varien_Object implements Mage_Checkout_Model_Cart_Interface -{ - /** - * Shopping cart items summary quantity(s) - * - * @var int|null - */ - protected $_summaryQty; - - /** - * List of product ids in shopping cart - * - * @var array|null - */ - protected $_productIds; - - /** - * Get shopping cart resource model - * - * @return Mage_Checkout_Model_Resource_Cart - */ - protected function _getResource() - { - return Mage::getResourceSingleton('checkout/cart'); - } - - /** - * Retrieve checkout session model - * - * @return Mage_Checkout_Model_Session - */ - public function getCheckoutSession() - { - return Mage::getSingleton('checkout/session'); - } - - /** - * Retrieve customer session model - * - * @return Mage_Customer_Model_Customer - */ - public function getCustomerSession() - { - return Mage::getSingleton('customer/session'); - } - - /** - * List of shopping cart items - * - * @return Mage_Eav_Model_Entity_Collection_Abstract|array - */ - public function getItems() - { - if (!$this->getQuote()->getId()) { - return array(); - } - return $this->getQuote()->getItemsCollection(); - } - - /** - * Retrieve array of cart product ids - * - * @return array - */ - public function getQuoteProductIds() - { - $products = $this->getData('product_ids'); - if (is_null($products)) { - $products = array(); - foreach ($this->getQuote()->getAllItems() as $item) { - $products[$item->getProductId()] = $item->getProductId(); - } - $this->setData('product_ids', $products); - } - return $products; - } - - /** - * Get quote object associated with cart. By default it is current customer session quote - * - * @return Mage_Sales_Model_Quote - */ - public function getQuote() - { - if (!$this->hasData('quote')) { - $this->setData('quote', $this->getCheckoutSession()->getQuote()); - } - return $this->_getData('quote'); - } - - /** - * Set quote object associated with the cart - * - * @param Mage_Sales_Model_Quote $quote - * @return Mage_Checkout_Model_Cart - */ - public function setQuote(Mage_Sales_Model_Quote $quote) - { - $this->setData('quote', $quote); - return $this; - } - - /** - * Initialize cart quote state to be able use it on cart page - * - * @return Mage_Checkout_Model_Cart - */ - public function init() - { - $quote = $this->getQuote()->setCheckoutMethod(''); - - if ($this->getCheckoutSession()->getCheckoutState() !== Mage_Checkout_Model_Session::CHECKOUT_STATE_BEGIN) { - $quote->removeAllAddresses()->removePayment(); - $this->getCheckoutSession()->resetCheckout(); - } - - if (!$quote->hasItems()) { - $quote->getShippingAddress()->setCollectShippingRates(false) - ->removeAllShippingRates(); - } - - return $this; - } - - /** - * Convert order item to quote item - * - * @param Mage_Sales_Model_Order_Item $orderItem - * @param mixed $qtyFlag if is null set product qty like in order - * @return Mage_Checkout_Model_Cart - */ - public function addOrderItem($orderItem, $qtyFlag=null) - { - /* @var $orderItem Mage_Sales_Model_Order_Item */ - if (is_null($orderItem->getParentItem())) { - $product = Mage::getModel('catalog/product') - ->setStoreId(Mage::app()->getStore()->getId()) - ->load($orderItem->getProductId()); - if (!$product->getId()) { - return $this; - } - - $info = $orderItem->getProductOptionByCode('info_buyRequest'); - $info = new Varien_Object($info); - if (is_null($qtyFlag)) { - $info->setQty($orderItem->getQtyOrdered()); - } else { - $info->setQty(1); - } - - $this->addProduct($product, $info); - } - return $this; - } - - /** - * Get product object based on requested product information - * - * @param mixed $productInfo - * @return Mage_Catalog_Model_Product - */ - protected function _getProduct($productInfo) - { - $product = null; - if ($productInfo instanceof Mage_Catalog_Model_Product) { - $product = $productInfo; - } elseif (is_int($productInfo) || is_string($productInfo)) { - $product = Mage::getModel('catalog/product') - ->setStoreId(Mage::app()->getStore()->getId()) - ->load($productInfo); - } - $currentWebsiteId = Mage::app()->getStore()->getWebsiteId(); - if (!$product - || !$product->getId() - || !is_array($product->getWebsiteIds()) - || !in_array($currentWebsiteId, $product->getWebsiteIds()) - ) { - Mage::throwException(Mage::helper('checkout')->__('The product could not be found.')); - } - return $product; - } - - /** - * Get request for product add to cart procedure - * - * @param mixed $requestInfo - * @return Varien_Object - */ - protected function _getProductRequest($requestInfo) - { - if ($requestInfo instanceof Varien_Object) { - $request = $requestInfo; - } elseif (is_numeric($requestInfo)) { - $request = new Varien_Object(array('qty' => $requestInfo)); - } else { - $request = new Varien_Object($requestInfo); - } - - if (!$request->hasQty()) { - $request->setQty(1); - } - - return $request; - } - - /** - * Add product to shopping cart (quote) - * - * @param int|Mage_Catalog_Model_Product $productInfo - * @param mixed $requestInfo - * @return Mage_Checkout_Model_Cart - */ - public function addProduct($productInfo, $requestInfo=null) - { - $product = $this->_getProduct($productInfo); - $request = $this->_getProductRequest($requestInfo); - - $productId = $product->getId(); - - if ($product->getStockItem()) { - $minimumQty = $product->getStockItem()->getMinSaleQty(); - //If product was not found in cart and there is set minimal qty for it - if ($minimumQty && $minimumQty > 0 && $request->getQty() < $minimumQty - && !$this->getQuote()->hasProductId($productId) - ){ - $request->setQty($minimumQty); - } - } - - if ($productId) { - try { - $result = $this->getQuote()->addProduct($product, $request); - } catch (Mage_Core_Exception $e) { - $this->getCheckoutSession()->setUseNotice(false); - $result = $e->getMessage(); - } - /** - * String we can get if prepare process has error - */ - if (is_string($result)) { - // $redirectUrl = ($product->hasOptionsValidationFail()) - // ? $product->getUrlModel()->getUrl( - // $product, - // array('_query' => array('startcustomization' => 1)) - // ) - // : $product->getProductUrl(); - // $this->getCheckoutSession()->setRedirectUrl($redirectUrl); - // if ($this->getCheckoutSession()->getUseNotice() === null) { - // $this->getCheckoutSession()->setUseNotice(true); - // } - // Mage::throwException($result); - } - } else { - Mage::throwException(Mage::helper('checkout')->__('The product does not exist.')); - } - - Mage::dispatchEvent('checkout_cart_product_add_after', array('quote_item' => $result, 'product' => $product)); - $this->getCheckoutSession()->setLastAddedProductId($productId); - return $this; - } - - /** - * Adding products to cart by ids - * - * @param array $productIds - * @return Mage_Checkout_Model_Cart - */ - public function addProductsByIds($productIds) - { - $allAvailable = true; - $allAdded = true; - - if (!empty($productIds)) { - foreach ($productIds as $productId) { - $productId = (int) $productId; - if (!$productId) { - continue; - } - $product = $this->_getProduct($productId); - if ($product->getId() && $product->isVisibleInCatalog()) { - try { - $this->getQuote()->addProduct($product); - } catch (Exception $e){ - $allAdded = false; - } - } else { - $allAvailable = false; - } - } - - if (!$allAvailable) { - $this->getCheckoutSession()->addError( - Mage::helper('checkout')->__('Some of the requested products are unavailable.') - ); - } - if (!$allAdded) { - $this->getCheckoutSession()->addError( - Mage::helper('checkout')->__('Some of the requested products are not available in the desired quantity.') - ); - } - } - return $this; - } - - /** - * Returns suggested quantities for items. - * Can be used to automatically fix user entered quantities before updating cart - * so that cart contains valid qty values - * - * $data is an array of ($quoteItemId => (item info array with 'qty' key), ...) - * - * @param array $data - * @return array - */ - public function suggestItemsQty($data) - { - foreach ($data as $itemId => $itemInfo) { - if (!isset($itemInfo['qty'])) { - continue; - } - $qty = (float) $itemInfo['qty']; - if ($qty <= 0) { - continue; - } - - $quoteItem = $this->getQuote()->getItemById($itemId); - if (!$quoteItem) { - continue; - } - - $product = $quoteItem->getProduct(); - if (!$product) { - continue; - } - - /* @var $stockItem Mage_CatalogInventory_Model_Stock_Item */ - $stockItem = $product->getStockItem(); - if (!$stockItem) { - continue; - } - - $data[$itemId]['before_suggest_qty'] = $qty; - $data[$itemId]['qty'] = $stockItem->suggestQty($qty); - } - - return $data; - } - - /** - * Update cart items information - * - * @param array $data - * @return Mage_Checkout_Model_Cart - */ - public function updateItems($data) - { - Mage::dispatchEvent('checkout_cart_update_items_before', array('cart'=>$this, 'info'=>$data)); - - /* @var $messageFactory Mage_Core_Model_Message */ - $messageFactory = Mage::getSingleton('core/message'); - $session = $this->getCheckoutSession(); - $qtyRecalculatedFlag = false; - foreach ($data as $itemId => $itemInfo) { - $item = $this->getQuote()->getItemById($itemId); - if (!$item) { - continue; - } - - if (!empty($itemInfo['remove']) || (isset($itemInfo['qty']) && $itemInfo['qty']=='0')) { - $this->removeItem($itemId); - continue; - } - - $qty = isset($itemInfo['qty']) ? (float) $itemInfo['qty'] : false; - if ($qty > 0) { - $item->setQty($qty); - - $itemInQuote = $this->getQuote()->getItemById($item->getId()); - - if (!$itemInQuote && $item->getHasError()) { - Mage::throwException($item->getMessage()); - } - - if (isset($itemInfo['before_suggest_qty']) && ($itemInfo['before_suggest_qty'] != $qty)) { - $qtyRecalculatedFlag = true; - $message = $messageFactory->notice(Mage::helper('checkout')->__('Quantity was recalculated from %d to %d', $itemInfo['before_suggest_qty'], $qty)); - $session->addQuoteItemMessage($item->getId(), $message); - } - } - } - - if ($qtyRecalculatedFlag) { - $session->addNotice( - Mage::helper('checkout')->__('Some products quantities were recalculated because of quantity increment mismatch') - ); - } - - Mage::dispatchEvent('checkout_cart_update_items_after', array('cart'=>$this, 'info'=>$data)); - return $this; - } - - /** - * Remove item from cart - * - * @param int $itemId - * @return Mage_Checkout_Model_Cart - */ - public function removeItem($itemId) - { - $this->getQuote()->removeItem($itemId); - return $this; - } - - /** - * Save cart - * - * @return Mage_Checkout_Model_Cart - */ - public function save() - { - Mage::dispatchEvent('checkout_cart_save_before', array('cart'=>$this)); - - $this->getQuote()->getBillingAddress(); - $this->getQuote()->getShippingAddress()->setCollectShippingRates(true); - $this->getQuote()->collectTotals(); - $this->getQuote()->save(); - $this->getCheckoutSession()->setQuoteId($this->getQuote()->getId()); - /** - * Cart save usually called after changes with cart items. - */ - Mage::dispatchEvent('checkout_cart_save_after', array('cart'=>$this)); - return $this; - } - - /** - * Save cart (implement interface method) - */ - public function saveQuote() - { - $this->save(); - } - - /** - * Mark all quote items as deleted (empty shopping cart) - * - * @return Mage_Checkout_Model_Cart - */ - public function truncate() - { - $this->getQuote()->removeAllItems(); - return $this; - } - - public function getProductIds() - { - $quoteId = Mage::getSingleton('checkout/session')->getQuoteId(); - if (null === $this->_productIds) { - $this->_productIds = array(); - if ($this->getSummaryQty()>0) { - foreach ($this->getQuote()->getAllItems() as $item) { - $this->_productIds[] = $item->getProductId(); - } - } - $this->_productIds = array_unique($this->_productIds); - } - return $this->_productIds; - } - - /** - * Get shopping cart items summary (includes config settings) - * - * @return int|float - */ - public function getSummaryQty() - { - $quoteId = Mage::getSingleton('checkout/session')->getQuoteId(); - - //If there is no quote id in session trying to load quote - //and get new quote id. This is done for cases when quote was created - //not by customer (from backend for example). - if (!$quoteId && Mage::getSingleton('customer/session')->isLoggedIn()) { - $quote = Mage::getSingleton('checkout/session')->getQuote(); - $quoteId = Mage::getSingleton('checkout/session')->getQuoteId(); - } - - if ($quoteId && $this->_summaryQty === null) { - if (Mage::getStoreConfig('checkout/cart_link/use_qty')) { - $this->_summaryQty = $this->getItemsQty(); - } else { - $this->_summaryQty = $this->getItemsCount(); - } - } - return $this->_summaryQty; - } - - /** - * Get shopping cart items count - * - * @return int - */ - public function getItemsCount() - { - return $this->getQuote()->getItemsCount()*1; - } - - /** - * Get shopping cart summary qty - * - * @return int|float - */ - public function getItemsQty() - { - return $this->getQuote()->getItemsQty()*1; - } - - /** - * Update item in shopping cart (quote) - * $requestInfo - either qty (int) or buyRequest in form of array or Varien_Object - * $updatingParams - information on how to perform update, passed to Quote->updateItem() method - * - * @param int $itemId - * @param int|array|Varien_Object $requestInfo - * @param null|array|Varien_Object $updatingParams - * @return Mage_Sales_Model_Quote_Item|string - * - * @see Mage_Sales_Model_Quote::updateItem() - */ - public function updateItem($itemId, $requestInfo = null, $updatingParams = null) - { - try { - $item = $this->getQuote()->getItemById($itemId); - if (!$item) { - Mage::throwException(Mage::helper('checkout')->__('Quote item does not exist.')); - } - $productId = $item->getProduct()->getId(); - $product = $this->_getProduct($productId); - $request = $this->_getProductRequest($requestInfo); - - if ($product->getStockItem()) { - $minimumQty = $product->getStockItem()->getMinSaleQty(); - // If product was not found in cart and there is set minimal qty for it - if ($minimumQty && ($minimumQty > 0) - && ($request->getQty() < $minimumQty) - && !$this->getQuote()->hasProductId($productId) - ) { - $request->setQty($minimumQty); - } - } - - $result = $this->getQuote()->updateItem($itemId, $request, $updatingParams); - } catch (Mage_Core_Exception $e) { - $this->getCheckoutSession()->setUseNotice(false); - $result = $e->getMessage(); - } - - /** - * We can get string if updating process had some errors - */ - if (is_string($result)) { - if ($this->getCheckoutSession()->getUseNotice() === null) { - $this->getCheckoutSession()->setUseNotice(true); - } - Mage::throwException($result); - } - - Mage::dispatchEvent('checkout_cart_product_update_after', array( - 'quote_item' => $result, - 'product' => $product - )); - $this->getCheckoutSession()->setLastAddedProductId($productId); - return $result; - } -} diff --git a/app/code/local/Mage/Sales/Model/Order.php b/app/code/local/Mage/Sales/Model/Order.php index 54445c5..030c55f 100755 --- a/app/code/local/Mage/Sales/Model/Order.php +++ b/app/code/local/Mage/Sales/Model/Order.php @@ -1400,212 +1400,197 @@ class Mage_Sales_Model_Order extends Mage_Sales_Model_Abstract * @param string $comment * @return Mage_Sales_Model_Order */ - public function sendOrderUpdateEmail($notifyCustomer = true, $comment = '') { - $smsApiObject = new J2t_Smsgateway_Model_Smsgateway(); - $customer_country_code = "IN"; - $orderId = $this->getIncrementId(); - $entityId = $this->getId(); - $parentId = $this->getRelationParentId(); - $emailSent = $this->getEmailSent(); - $orderStatus = $this->getStatus(); - - $write = Mage::getSingleton('core/resource')->getConnection('core_write'); - $sql = "SELECT so.entity_id parentId, so.email_sent, so.increment_id parentIncrId, sochild.increment_id childIncrId, sochild.email_sent child_email_sent, sochild.entity_id childId - FROM sales_flat_order so - LEFT JOIN sales_flat_order sochild on sochild.relation_parent_id= so.entity_id - WHERE so.entity_id= $entityId"; // AND sochild.entity_id > 0; - $resultSet = $write->query($sql); - $numRec = 0; - $childOrders = array(); - while($result = $resultSet->fetch()) { - $emailSent = $result['email_sent']; - $childEmailSent = $result['child_email_sent']; - if(!empty($result['childId'])) - $childOrders[] = $result['childId']; - $numRec ++; - } - - if ($numRec && $orderStatus == 'processing' && (($emailSent < 2 && $childEmailSent < 1) || ($emailSent < 1 && empty($childEmailSent)) )) { - Mage::log("Email Sent from " . __FILE__ . ", status : $orderStatus, parent:$parentId, email: $emailSent, orderId: $entityId " . print_r($result, true), null, 'SplitModule.log'); - $order = Mage::getModel('sales/order')->loadByIncrementId($orderId); - - $smsContent = ""; - $thankMsgContent = ''; - - $alldata = $order->getData(); - $grndTotal = money_format('%!.2i', $alldata['grand_total']); - - $method = $order->getPayment()->getMethod(); - - if ($method == 'cashondelivery') { - $paymentMode = 'Placed through COD'; - } elseif ($method == 'banktransfer') { - $paymentMode = 'Placed through NEFT'; - } elseif ($method == 'payucheckout_shared') { - $paymentMode = 'Paid through PAYU'; - } elseif ($method == 'paytm_cc') { - $paymentMode = 'Paid through PAYTM'; - } - - $thankMsgContent = 'Thank you for confirming your Order # ' . $orderId . ' .'; - $thankMsgContent1 = 'Your order has been successfully placed and is being processed.'; - - $smsContent = "Dear Customer, Thank you for confirming your order # " . $orderId . " on Tolexo.com. Please check your email or Tolexo Account for further information."; - - $subject = "Your Order # " . $orderId . " on Tolexo.com has been successfully placed!"; - - $content = $this->getSplitOrderContent($orderId, $entityId); - - $shipping = $order->getShippingAddress(); - $billing = $order->getBillingAddress(); - $username = $order->getCustomerFirstname() . " " . $order->getCustomerLastname(); - - $finalDetail = '<table width="100%" cellpadding="0" cellspacing="0"> - <tr> - <td> - <div style="border-bottom:1px dashed #ccc;margin-bottom:20px;font-weight:bold;text-align:right;"> - <div style="font-size:13px;padding:2px 10px 2px 0;"> - <span style="color:#777777;width:150px;display:inline-block;">Sub Total :</span> - <span style="color:#222222;width:100px;display:inline-block;">Rs. ' . money_format('%!.2i', $alldata['base_subtotal']) . '</span> - </div>'; - if (!empty($alldata['coupon_code'])) { - $finalDetail .= '<div style="border-bottom:1px dashed #ccc;margin-bottom:20px;font-weight:bold;text-align:right;"> - <div style="font-size:13px;padding:2px 10px 2px 0;"> - <span style="color:#777777;width:150px;display:inline-block;">Discount (' . $alldata['coupon_code'] . ') :</span> - <span style="color:#222222;width:100px;display:inline-block;">Rs. ' . money_format('%!.2i', $alldata['discount_amount']) . '</span> - </div>'; - } - if ($alldata['shipping_amount'] == 0) { - $shipAmount = "Free Shipping"; - } else { - $shipAmount = "Rs. " . money_format('%!.2i', $alldata['shipping_amount']); - } - $finalDetail .= '<div style="font-size:13px;padding:2px 10px 2px 0;"> + public function sendOrderUpdateEmail($notifyCustomer = true, $comment = '') + { + $smsApiObject = new J2t_Smsgateway_Model_Smsgateway(); + $customer_country_code = "IN"; + + $orderId=$this->getIncrementId(); + $entityId = $this->getId(); + + $write = Mage::getSingleton('core/resource')->getConnection('core_write'); + $sql= "SELECT entity_id,increment_id " + . "FROM sales_flat_order " + . "WHERE relation_parent_id='".$entityId."'"; + $resultset= $write->query($sql); + $result=$resultset->fetchAll(); + if(count($result)==0) + { + + $order = Mage::getModel('sales/order')->loadByIncrementId($orderId); + $smsContent = ""; + $thankMsgContent = ''; + + $alldata = $order->getData(); + $grndTotal = money_format('%!.2i', $alldata['grand_total']); + + $method = $order->getPayment()->getMethod(); + + if($method == 'cashondelivery') { + $paymentMode = 'Placed through COD'; + } elseif($method == 'banktransfer') { + $paymentMode = 'Placed through NEFT'; + } elseif($method == 'payucheckout_shared') { + $paymentMode = 'Paid through PAYU'; + } elseif($method == 'paytm_cc'){ + $paymentMode = 'Paid through PAYTM'; + } + + $thankMsgContent = 'Thank you for confirming your Order # '.$orderId.' .'; + $thankMsgContent1 = 'Your order has been successfully placed and is being processed.'; + + $smsContent = "Dear Customer, Thank you for confirming your order # ". $orderId. " on Tolexo.com. Please check your email or Tolexo Account for further information."; + + $subject = "Your Order # ".$orderId." on Tolexo.com has been successfully placed!"; + + $content = $this->getSplitOrderContent($orderId,$entityId); + + $shipping = $order->getShippingAddress(); + $billing = $order->getBillingAddress(); + $username = $order->getCustomerFirstname()." ".$order->getCustomerLastname(); + + $finalDetail = '<table width="100%" cellpadding="0" cellspacing="0"> + <tr> + <td> + <div style="border-bottom:1px dashed #ccc;margin-bottom:20px;font-weight:bold;text-align:right;"> + <div style="font-size:13px;padding:2px 10px 2px 0;"> + <span style="color:#777777;width:150px;display:inline-block;">Sub Total :</span> + <span style="color:#222222;width:100px;display:inline-block;">Rs. '.money_format('%!.2i', $alldata['base_subtotal']).'</span> + </div>'; + if(!empty($alldata['coupon_code'])){ + $finalDetail .= '<div style="border-bottom:1px dashed #ccc;margin-bottom:20px;font-weight:bold;text-align:right;"> + <div style="font-size:13px;padding:2px 10px 2px 0;"> + <span style="color:#777777;width:150px;display:inline-block;">Discount ('.$alldata['coupon_code'].') :</span> + <span style="color:#222222;width:100px;display:inline-block;">Rs. '.money_format('%!.2i', $alldata['discount_amount']).'</span> + </div>'; + } + if($alldata['shipping_amount']==0){ + $shipAmount = "Free Shipping"; + } + else{ + $shipAmount = "Rs. ".money_format('%!.2i', $alldata['shipping_amount']); + } + $finalDetail .= '<div style="font-size:13px;padding:2px 10px 2px 0;"> <span style="color:#777777;width:150px;display:inline-block;">Shipping & Handling :</span> - <span style="color:#222222;width:100px;display:inline-block;">' . $shipAmount . '</span> + <span style="color:#222222;width:100px;display:inline-block;">'.$shipAmount.'</span> </div> <div style="font-size:13px;padding:2px 10px 2px 0;"> <span style="color:#777777;width:150px;display:inline-block;">Tax :</span> - <span style="color:#222222;width:100px;display:inline-block;">Rs. ' . money_format('%!.2i', $alldata['tax_amount']) . '</span> + <span style="color:#222222;width:100px;display:inline-block;">Rs. '.money_format('%!.2i', $alldata['tax_amount']).'</span> </div> <div style="font-size:16px;background-color:#f5f5f5;display:block;margin:10px 0;padding:7px 10px 7px 0;"> <span style="color:#777777;width:150px;display:inline-block;">Grand Total :</span> - <span style="color:#222222;width:100px;display:inline-block;">Rs. ' . money_format('%!.2i', $alldata['grand_total']) . '</span> + <span style="color:#222222;width:100px;display:inline-block;">Rs. '.money_format('%!.2i', $alldata['grand_total']).'</span> </div> </div> </td> </tr> </table>'; + + $mobileNo = $shipping->getTelephone(); + $smsApiObject->sendSms($mobileNo, $smsContent, $customer_country_code); + + $billAdd = $billing->getStreet(); + $shipAdd = $shipping->getStreet(); + $billAdds = ''; + $shipAdds = ''; + foreach($billAdd as $val){ + $billAdds .= $val." "; + } + foreach($shipAdd as $val){ + $shipAdds .= $val." "; + } + $order_bill = $billing->getFirstname()." ".$billing->getMiddlename()." ".$billing->getLastname()." <br/>".$billing->getCompany()."<br/>".$billing->getTelephone()."<br/>". $billAdds." ".$billing->getCity()." ".$billing->getRegion()." ".$billing->getPostcode(); + $order_ship = $shipping->getFirstname()." ".$shipping->getMiddlename()." ".$shipping->getLastname()." <br/>".$shipping->getCompany()."<br/>".$shipping->getTelephone()."<br/>". $shipAdds." ".$shipping->getCity()." ".$shipping->getRegion()." ".$shipping->getPostcode(); + $email = array($order->getCustomerEmail()); + $emailName = array($username); + $order_created = $order->getCreatedAtFormated('medium'); + $templateId = 27; + $bccEmail = array('orders@tolexo.com'); + $sender = array('name' => 'Sales', 'email' => 'support@tolexo.com'); + $vars = array('order_increment_id' => $orderId, 'item_content' => $content, 'username' => $username, 'order_bill' => $order_bill,'order_ship' => $order_ship,'order_created'=>$order_created,'smsContent'=>$smsContent,'thankMsgContent'=>$thankMsgContent, + 'subject'=>$subject,'paymentMode'=>$paymentMode,'thankMsgContent1'=>$thankMsgContent1,'grndTotal'=>$grndTotal,'finalDetail'=>$finalDetail); + $storeId = Mage::app()->getStore()->getId(); + $translate = Mage::getSingleton('core/translate'); + Mage::getModel('core/email_template')->addBCC($bccEmail)->sendTransactional($templateId, $sender, $email, $emailName, $vars, $storeId); + $translate->setTranslateInline(true); + + $sql1 = "UPDATE sales_flat_order sfo " + . "SET sfo.email_sent = sfo.email_sent + 1 " + . "WHERE sfo.entity_id = '".$entityId."'"; + $resultset= $write->query($sql1); + + } + else{ + + $storeId = $this->getStore()->getId(); - $mobileNo = $shipping->getTelephone(); - $smsApiObject->sendSms($mobileNo, $smsContent, $customer_country_code); - - $items = $order->getAllItems(); - if(count($items) == 0) return $this; - - $billAdd = $billing->getStreet(); - $shipAdd = $shipping->getStreet(); - $billAdds = ''; - $shipAdds = ''; - foreach ($billAdd as $val) { - $billAdds .= $val . " "; - } - foreach ($shipAdd as $val) { - $shipAdds .= $val . " "; - } - $order_bill = $billing->getFirstname() . " " . $billing->getMiddlename() . " " . $billing->getLastname() . " <br/>" . $billing->getCompany() . "<br/>" . $billing->getTelephone() . "<br/>" . $billAdds . " " . $billing->getCity() . " " . $billing->getRegion() . " " . $billing->getPostcode(); - $order_ship = $shipping->getFirstname() . " " . $shipping->getMiddlename() . " " . $shipping->getLastname() . " <br/>" . $shipping->getCompany() . "<br/>" . $shipping->getTelephone() . "<br/>" . $shipAdds . " " . $shipping->getCity() . " " . $shipping->getRegion() . " " . $shipping->getPostcode(); - $email = array($order->getCustomerEmail()); - $emailName = array($username); - $order_created = $order->getCreatedAtFormated('medium'); - $templateId = 27; - $bccEmail = array('orders@tolexo.com'); - $sender = array('name' => 'Sales', 'email' => 'support@tolexo.com'); - $vars = array('order_increment_id' => $orderId, 'item_content' => $content, 'username' => $username, 'order_bill' => $order_bill, 'order_ship' => $order_ship, 'order_created' => $order_created, 'smsContent' => $smsContent, 'thankMsgContent' => $thankMsgContent, - 'subject' => $subject, 'paymentMode' => $paymentMode, 'thankMsgContent1' => $thankMsgContent1, 'grndTotal' => $grndTotal, 'finalDetail' => $finalDetail); - $storeId = Mage::app()->getStore()->getId(); - $translate = Mage::getSingleton('core/translate'); - Mage::getModel('core/email_template')->addBCC($bccEmail)->sendTransactional($templateId, $sender, $email, $emailName, $vars, $storeId); - $translate->setTranslateInline(true); - - if($emailSent < 1 && empty($childEmailSent)) { - $sql1 = "UPDATE sales_flat_order sfo " - . "SET sfo.email_sent = sfo.email_sent + 1 " - . "WHERE sfo.entity_id = $entityId"; - $write->query($sql1); - } else if(!empty($childOrders)) { - $childOrders[] = $entityId; - $sql1 = "UPDATE sales_flat_order sfo " - . "SET sfo.email_sent = sfo.email_sent + 1 " - . "WHERE sfo.entity_id IN (" . implode(',',$childOrders) . ")"; - $write->query($sql1); - } - } else { - - $storeId = $this->getStore()->getId(); - - if (!Mage::helper('sales')->canSendOrderCommentEmail($storeId)) { - return $this; - } - // Get the destination email addresses to send copies to - $copyTo = $this->_getEmails(self::XML_PATH_UPDATE_EMAIL_COPY_TO); - $copyMethod = Mage::getStoreConfig(self::XML_PATH_UPDATE_EMAIL_COPY_METHOD, $storeId); - // Check if at least one recepient is found - if (!$notifyCustomer && !$copyTo) { - return $this; - } + if (!Mage::helper('sales')->canSendOrderCommentEmail($storeId)) { + return $this; + } + // Get the destination email addresses to send copies to + $copyTo = $this->_getEmails(self::XML_PATH_UPDATE_EMAIL_COPY_TO); + $copyMethod = Mage::getStoreConfig(self::XML_PATH_UPDATE_EMAIL_COPY_METHOD, $storeId); + // Check if at least one recepient is found + if (!$notifyCustomer && !$copyTo) { + return $this; + } - // Retrieve corresponding email template id and customer name - if ($this->getCustomerIsGuest()) { - $templateId = Mage::getStoreConfig(self::XML_PATH_UPDATE_EMAIL_GUEST_TEMPLATE, $storeId); - $customerName = $this->getBillingAddress()->getName(); - } else { - $templateId = Mage::getStoreConfig(self::XML_PATH_UPDATE_EMAIL_TEMPLATE, $storeId); - $customerName = $this->getCustomerName(); - } - - $mailer = Mage::getModel('core/email_template_mailer'); - if ($notifyCustomer) { - $emailInfo = Mage::getModel('core/email_info'); - $emailInfo->addTo($this->getCustomerEmail(), $customerName); - if ($copyTo && $copyMethod == 'bcc') { - // Add bcc to customer email - foreach ($copyTo as $email) { - $emailInfo->addBcc($email); - } - } - $mailer->addEmailInfo($emailInfo); - } + // Retrieve corresponding email template id and customer name + if ($this->getCustomerIsGuest()) { + $templateId = Mage::getStoreConfig(self::XML_PATH_UPDATE_EMAIL_GUEST_TEMPLATE, $storeId); + $customerName = $this->getBillingAddress()->getName(); + } else { + $templateId = Mage::getStoreConfig(self::XML_PATH_UPDATE_EMAIL_TEMPLATE, $storeId); + $customerName = $this->getCustomerName(); + } - // Email copies are sent as separated emails if their copy method is - // 'copy' or a customer should not be notified - if ($copyTo && ($copyMethod == 'copy' || !$notifyCustomer)) { - foreach ($copyTo as $email) { - $emailInfo = Mage::getModel('core/email_info'); - $emailInfo->addTo($email); - $mailer->addEmailInfo($emailInfo); + $mailer = Mage::getModel('core/email_template_mailer'); + if ($notifyCustomer) { + $emailInfo = Mage::getModel('core/email_info'); + $emailInfo->addTo($this->getCustomerEmail(), $customerName); + if ($copyTo && $copyMethod == 'bcc') { + // Add bcc to customer email + foreach ($copyTo as $email) { + $emailInfo->addBcc($email); + } + } + $mailer->addEmailInfo($emailInfo); + } + + // Email copies are sent as separated emails if their copy method is + // 'copy' or a customer should not be notified + if ($copyTo && ($copyMethod == 'copy' || !$notifyCustomer)) { + foreach ($copyTo as $email) { + $emailInfo = Mage::getModel('core/email_info'); + $emailInfo->addTo($email); + $mailer->addEmailInfo($emailInfo); + } + } + + // Set all required params and send emails + $mailer->setSender(Mage::getStoreConfig(self::XML_PATH_UPDATE_EMAIL_IDENTITY, $storeId)); + $mailer->setStoreId($storeId); + $mailer->setTemplateId($templateId); + $mailer->setTemplateParams(array( + 'order' => $this, + 'comment' => $comment, + 'billing' => $this->getBillingAddress() + ) + ); + //$mailer->send(); + } - } - - // Set all required params and send emails - $mailer->setSender(Mage::getStoreConfig(self::XML_PATH_UPDATE_EMAIL_IDENTITY, $storeId)); - $mailer->setStoreId($storeId); - $mailer->setTemplateId($templateId); - $mailer->setTemplateParams(array( - 'order' => $this, - 'comment' => $comment, - 'billing' => $this->getBillingAddress() - ) - ); - //$mailer->send(); - } + - return $this; - } + return $this; + } /** * Send email with order information on COD */ + + public function getSplitOrderContent($orderId,$entityId) { @@ -1632,11 +1617,11 @@ class Mage_Sales_Model_Order extends Mage_Sales_Model_Abstract if(count($result)==0) { $content .= '<div style="font-size:12px;margin-bottom:5px;line-height: 18px;"> - <span style="min-width:190px;display:inline-block;padding-left: 5px;box-sizing: border-box;"><strong>Order ID: </strong>'.$orderId.'</span> - <span style="min-width:260px;max-width:260px;vertical-align:top;display:inline-block;padding-left: 5px;box-sizing: border-box;"><strong>Seller: </strong>'.$vendor_name.'</span> - <!--a href="" style="font-weight:bold;color:#ffffff;background-color:#0074a1;border-radius:2px;border:1px solid #0074a1;padding:6px 13px;text-decoration:none;margin-left: 5px;display:inline-block;">Track Your Order</a--> - </div> - <div style="border:1px solid #dddddd;font-size:12px;margin-bottom:15px;margin: 0 5px 15px;overflow:auto;" align="center">'; + <span style="min-width:190px;display:inline-block;padding-left: 5px;box-sizing: border-box;"><strong>Order ID: </strong>'.$orderId.'</span> + <span style="min-width:260px;max-width:260px;vertical-align:top;display:inline-block;padding-left: 5px;box-sizing: border-box;"><strong>Seller: </strong>'.$vendor_name.'</span> + <!--a href="" style="font-weight:bold;color:#ffffff;background-color:#0074a1;border-radius:2px;border:1px solid #0074a1;padding:6px 13px;text-decoration:none;margin-left: 5px;display:inline-block;">Track Your Order</a--> + </div> + <div style="border:1px solid #dddddd;font-size:12px;margin-bottom:15px;margin: 0 5px 15px;overflow:auto;" align="center">'; $iCnt=1; foreach ($order->getAllItems() as $item) @@ -1672,7 +1657,7 @@ class Mage_Sales_Model_Order extends Mage_Sales_Model_Abstract $dispatch = $row['value']; } - $orderDate2= $item['created_at']; + $orderDate2= $orderItem['created_at']; if (is_numeric($dispatch)) { diff --git a/app/code/local/Smartwave/Megamenu/Helper/Data.php b/app/code/local/Smartwave/Megamenu/Helper/Data.php index 75b7c69..7b437aa 100644 --- a/app/code/local/Smartwave/Megamenu/Helper/Data.php +++ b/app/code/local/Smartwave/Megamenu/Helper/Data.php @@ -183,21 +183,4 @@ HTML; return true; return false; } - - //added by Jasleen Kaur to get only the main categories - - public function getMenuCategories() - { - $menuData = Mage::helper('megamenu')->getMenuData(); - extract($menuData); - // --- Menu Content --- - $menuContent = ''; - $menuContentArray = array(); - foreach ($_categories as $_category) { - if ($_category->getIsActive()) { - $menuContentArray[$_category->getName()] = $_category->getRequestPath(); - } - } - return $menuContentArray; - } } \ No newline at end of file diff --git a/app/code/local/Tolexo/Categoryreorder/Block/Categoryblock.php b/app/code/local/Tolexo/Categoryreorder/Block/Categoryblock.php deleted file mode 100644 index 3eeef2d..0000000 --- a/app/code/local/Tolexo/Categoryreorder/Block/Categoryblock.php +++ /dev/null @@ -1,14 +0,0 @@ -<?php - -class Tolexo_Categoryreorder_Block_Categoryblock extends Mage_Core_Block_Template -{ - /** - * prepare block's layout - * - * @return Tutorialmagento_Helloworld_Block_Helloworld - */ - public function _prepareLayout() - { - return parent::_prepareLayout(); - } -} diff --git a/app/code/local/Tolexo/Categoryreorder/Helper/Data.php b/app/code/local/Tolexo/Categoryreorder/Helper/Data.php deleted file mode 100644 index 29dd714..0000000 --- a/app/code/local/Tolexo/Categoryreorder/Helper/Data.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php -class Tolexo_Categoryreorder_Helper_Data extends Mage_Core_Helper_Abstract -{ - -} diff --git a/app/code/local/Tolexo/Categoryreorder/controllers/IndexController.php b/app/code/local/Tolexo/Categoryreorder/controllers/IndexController.php deleted file mode 100644 index 8cdd530..0000000 --- a/app/code/local/Tolexo/Categoryreorder/controllers/IndexController.php +++ /dev/null @@ -1,81 +0,0 @@ -<?php - -class Tolexo_Categoryreorder_IndexController extends Mage_Adminhtml_Controller_Action -{ - - public function categoryl1Action() - { - $paramArr = Mage::app()->getRequest()->getParams(); - $this->loadLayout(); - if(isset($paramArr['update_catlist'])) { - $updatedCatArr = json_decode($paramArr['update_catlist'],true); - $this->updateCategory($updatedCatArr); - } - - $this->renderLayout(); - } - - protected function updateCategory($categoryListArr) - { - $updatedflag = false; - foreach($categoryListArr as $key => $catList) { - $id = $catList['id']; - $position = $catList['position']; - $data = array('position' => $position); - $model = Mage::getModel('catalog/category')->load($id)->addData($data); - try { - $model->setId($id)->save(); - $connObj = Mage::getSingleton('core/resource')->getConnection('core_write'); - $result = $connObj->query("update catalog_category_flat_store_1 set position = $position where entity_id = $id"); - $updatedflag = 1; - } catch (Exception $e){ - $updatedflag = $e->getMessage(); - break; - } - } - - $block = Mage::app()->getLayout()->getBlock('categoryblock'); - $block->assign(array('updatedFlag'=>$updatedflag)); - } - public function categoryl2Action() - { - $paramArr = Mage::app()->getRequest()->getParams(); - $this->loadLayout(); - if(isset($paramArr['l1catlist'])) { - $block = Mage::app()->getLayout()->getBlock('categoryblock'); - $block->assign(array('parentId'=>$paramArr['l1catlist'])); - } - if(isset($paramArr['update_catlist'])) { - $updatedCatl2Arr = json_decode($paramArr['update_catlist'],true); - $this->updateCategory($updatedCatl2Arr); - $block = Mage::app()->getLayout()->getBlock('categoryblock'); - $block->assign(array('parentId'=>$paramArr['parentCatId'])); - } - - $this->renderLayout(); - } - public function categoryl3Action() - { - $paramArr = Mage::app()->getRequest()->getParams(); - $this->loadLayout(); - if(isset($paramArr['l1catlist'])) { - $block = Mage::app()->getLayout()->getBlock('categoryblock'); - $block->assign(array('parentIdl2'=>$paramArr['l1catlist'])); - } - if(isset($paramArr['l2catlist'])) { - $block = Mage::app()->getLayout()->getBlock('categoryblock'); - $block->assign(array('parentIdl2'=>$paramArr['parentCatIdl2'])); - $block->assign(array('parentIdl3'=>$paramArr['l2catlist'])); - } - if(isset($paramArr['update_catlist'])) { - $updatedCatl3Arr = json_decode($paramArr['update_catlist'],true); - $this->updateCategory($updatedCatl3Arr); - $block = Mage::app()->getLayout()->getBlock('categoryblock'); - $block->assign(array('parentIdl2'=>$paramArr['parentCatIdl2'])); - $block->assign(array('parentIdl3'=>$paramArr['parentCatIdl3'])); - } - - $this->renderLayout(); - } - -} diff --git a/app/code/local/Tolexo/Categoryreorder/etc/config.xml b/app/code/local/Tolexo/Categoryreorder/etc/config.xml deleted file mode 100644 index 93451d4..0000000 --- a/app/code/local/Tolexo/Categoryreorder/etc/config.xml +++ /dev/null @@ -1,89 +0,0 @@ -<?xml version="1.0"?> - -<config> - <modules> - <Tolexo_Categoryreorder> - <version>0.1.0</version> - </Tolexo_Categoryreorder> - </modules> - - -<global> - <helpers> - <Categoryreorder> - <class>Tolexo_Categoryreorder_Helper</class> - </Categoryreorder> - </helpers> - <blocks> - <categoryreorder> - <class>Tolexo_Categoryreorder_Block</class> - </categoryreorder> - </blocks> -</global> - - <admin> - <routers> - <categoryreorder> - <use>admin</use> - <args> - <module>Tolexo_Categoryreorder</module> - <frontName>categoryreorder</frontName> - </args> - </categoryreorder> - </routers> - </admin> - - <adminhtml> - <menu> - <category translate="title" module="Categoryreorder"> - <title>Category Reorder</title> - <sort_order>9999</sort_order> - <children> - <categoryL1 module="Categoryreorder"> - <title>L1 Category</title> - <action>categoryreorder/index/categoryl1</action> - </categoryL1> - <categoryL2 module="Categoryreorder"> - <title>L2 Category</title> - <action>categoryreorder/index/categoryl2</action> - </categoryL2> - <categoryL3 module="Categoryreorder"> - <title>L3 Category</title> - <action>categoryreorder/index/categoryl3</action> - </categoryL3> - </children> - </category> - </menu> - <acl> - <resources> - <admin> - <children> - <category translate="title" module="Categoryreorder"> - <title>category reorder</title> - <sort_order>9999</sort_order> - <children> - <categoryL1> - <title>categoryL1</title> - </categoryL1> - <categoryL2> - <title>categoryL2</title> - </categoryL2> - <categoryL3> - <title>categoryL3</title> - </categoryL3> - </children> - </category> - </children> - </admin> - </resources> - </acl> - <layout> - <updates> - <categoryreorder> - <file>categoryreorder.xml</file> - </categoryreorder> - </updates> - </layout> - </adminhtml> - -</config> diff --git a/app/code/local/Tolexo/Checkout/controllers/CartController.php b/app/code/local/Tolexo/Checkout/controllers/CartController.php index ba80901..284670c 100755 --- a/app/code/local/Tolexo/Checkout/controllers/CartController.php +++ b/app/code/local/Tolexo/Checkout/controllers/CartController.php @@ -1,9 +1,5 @@ <?php - require_once 'Mage/Checkout/controllers/CartController.php'; -$INTERNAL_FUNCTION_CALL = true; -require_once MAGENTO_ROOT.'/mobileapi/api_cart.php'; - /** * Magento * @@ -126,59 +122,48 @@ class Tolexo_Checkout_CartController extends Mage_Core_Controller_Front_Action */ public function indexAction() { - $params = $this->getRequest()->getParams(); $cart = $this->_getCart(); - $cart->init(); - $cartQty = $cart->getQuote()->getItemsCount(); - if(!empty($params['ajaxCart']) && $cartQty > 0) { - $customerId = $cart->getCustomerSession()->getCustomer()->getId(); - $session = $this->_getSession(); - $quoteId = $session->getQuoteId(); - $cartApiArr = CartSKUnfo($customerId, $quoteId); - include_once 'cartLayout.php'; - exit(); - } else { - if ($cartQty) { - $cart->save(); + if ($cart->getQuote()->getItemsCount()) { + $cart->init(); + $cart->save(); - if (!$this->_getQuote()->validateMinimumAmount()) { - $minimumAmount = Mage::app()->getLocale()->currency(Mage::app()->getStore()->getCurrentCurrencyCode()) - ->toCurrency(Mage::getStoreConfig('sales/minimum_order/amount')); + if (!$this->_getQuote()->validateMinimumAmount()) { + $minimumAmount = Mage::app()->getLocale()->currency(Mage::app()->getStore()->getCurrentCurrencyCode()) + ->toCurrency(Mage::getStoreConfig('sales/minimum_order/amount')); - $warning = Mage::getStoreConfig('sales/minimum_order/description') - ? Mage::getStoreConfig('sales/minimum_order/description') - : Mage::helper('checkout')->__('Minimum order amount is %s', $minimumAmount); + $warning = Mage::getStoreConfig('sales/minimum_order/description') + ? Mage::getStoreConfig('sales/minimum_order/description') + : Mage::helper('checkout')->__('Minimum order amount is %s', $minimumAmount); - $cart->getCheckoutSession()->addNotice($warning); - } + $cart->getCheckoutSession()->addNotice($warning); } + } - // Compose array of messages to add - $messages = array(); - foreach ($cart->getQuote()->getMessages() as $message) { - if ($message) { - // Escape HTML entities in quote message to prevent XSS - $message->setCode(Mage::helper('core')->escapeHtml($message->getCode())); - $messages[] = $message; - } + // Compose array of messages to add + $messages = array(); + foreach ($cart->getQuote()->getMessages() as $message) { + if ($message) { + // Escape HTML entities in quote message to prevent XSS + $message->setCode(Mage::helper('core')->escapeHtml($message->getCode())); + $messages[] = $message; } - $cart->getCheckoutSession()->addUniqueMessages($messages); + } + $cart->getCheckoutSession()->addUniqueMessages($messages); - /** - * if customer enteres shopping cart we should mark quote - * as modified bc he can has checkout page in another window. - */ - $this->_getSession()->setCartWasUpdated(true); + /** + * if customer enteres shopping cart we should mark quote + * as modified bc he can has checkout page in another window. + */ + $this->_getSession()->setCartWasUpdated(true); - Varien_Profiler::start(__METHOD__ . 'cart_display'); - $this + Varien_Profiler::start(__METHOD__ . 'cart_display'); + $this ->loadLayout() ->_initLayoutMessages('checkout/session') ->_initLayoutMessages('catalog/session') ->getLayout()->getBlock('head')->setTitle($this->__('Shopping Cart')); - $this->renderLayout(); - Varien_Profiler::stop(__METHOD__ . 'cart_display'); - } + $this->renderLayout(); + Varien_Profiler::stop(__METHOD__ . 'cart_display'); } /** @@ -189,10 +174,10 @@ class Tolexo_Checkout_CartController extends Mage_Core_Controller_Front_Action */ public function addAction() { - // if (!$this->_validateFormKey()) { - // $this->_goBack(); - // return; - // } + if (!$this->_validateFormKey()) { + $this->_goBack(); + return; + } $cart = $this->_getCart(); $params = $this->getRequest()->getParams(); try { @@ -205,23 +190,12 @@ class Tolexo_Checkout_CartController extends Mage_Core_Controller_Front_Action $product = $this->_initProduct(); $related = $this->getRequest()->getParam('related_product'); - $cartQty = $cart->getQuote()->getItemsCount(); + /** * Check product availability */ if (!$product) { - $this->_getSession()->addError($this->__('Product not available.')); - if(!empty($params['ajaxCart']) && $cartQty > 0) { - $cart = $this->_getCart(); - $customerId = $cart->getCustomerSession()->getCustomer()->getId(); - $session = $this->_getSession(); - $quoteId = $session->getQuoteId(); - $cartApiArr = CartSKUnfo($customerId, $quoteId); - include_once 'cartLayout.php'; - exit(); - } else { - $this->_goBack(); - } + $this->_goBack(); return; } @@ -242,24 +216,12 @@ class Tolexo_Checkout_CartController extends Mage_Core_Controller_Front_Action ); if (!$this->_getSession()->getNoCartRedirect(true)) { - //if (!$cart->getQuote()->getHasError()) { + if (!$cart->getQuote()->getHasError()) { $message = $this->__('%s was added to your shopping cart.', Mage::helper('core')->escapeHtml($product->getName())); $this->_getSession()->addSuccess($message); - //} - if(!empty($params['ajaxCart']) && $cartQty > 0) { - $cart = $this->_getCart(); - $customerId = $cart->getCustomerSession()->getCustomer()->getId(); - $session = $this->_getSession(); - $quoteId = $session->getQuoteId(); - $cartApiArr = CartSKUnfo($customerId, $quoteId); - - include_once 'cartLayout.php'; - exit(); - } else { - $this->_goBack(); } + $this->_goBack(); } - } catch (Mage_Core_Exception $e) { if ($this->_getSession()->getUseNotice(true)) { $this->_getSession()->addNotice(Mage::helper('core')->escapeHtml($e->getMessage())); @@ -436,11 +398,11 @@ class Tolexo_Checkout_CartController extends Mage_Core_Controller_Front_Action */ public function updatePostAction() { - // if (!$this->_validateFormKey()) { - // $this->_redirect('*/*/'); - // return; - // } - $params = $this->getRequest()->getParams(); + if (!$this->_validateFormKey()) { + $this->_redirect('*/*/'); + return; + } + $updateAction = (string)$this->getRequest()->getParam('update_cart_action'); switch ($updateAction) { @@ -454,20 +416,7 @@ class Tolexo_Checkout_CartController extends Mage_Core_Controller_Front_Action $this->_updateShoppingCart(); } - $cartQty = Mage::helper('checkout/cart')->getSummaryCount(); - if((!empty($params['ajaxCart'])) && $cartQty > 0) { - $cart = $this->_getCart(); - $customerId = $cart->getCustomerSession()->getCustomer()->getId(); - $session = $this->_getSession(); - $quoteId = $session->getQuoteId(); - $cartApiArr = CartSKUnfo($customerId, $quoteId); - - include_once 'cartLayout.php'; - exit(); - } else { - $this->_goBack(); - } - + $this->_goBack(); } /** @@ -492,7 +441,8 @@ class Tolexo_Checkout_CartController extends Mage_Core_Controller_Front_Action } $cartData = $cart->suggestItemsQty($cartData); - $cart->updateItems($cartData)->save(); + $cart->updateItems($cartData) + ->save(); } $this->_getSession()->setCartWasUpdated(true); } catch (Mage_Core_Exception $e) { @@ -523,36 +473,17 @@ class Tolexo_Checkout_CartController extends Mage_Core_Controller_Front_Action */ public function deleteAction() { - $params = $this->getRequest()->getParams(); $id = (int) $this->getRequest()->getParam('id'); if ($id) { try { $this->_getCart()->removeItem($id) ->save(); - $cartQty = Mage::helper('checkout/cart')->getSummaryCount(); - if($cartQty > 0) { - $this->_getSession()->addSuccess( - $this->__('1 Item removed successfully')); - } - } catch (Exception $e) { $this->_getSession()->addError($this->__('Cannot remove the item.')); Mage::logException($e); } } - if(!empty($params['ajaxCart']) && $cartQty > 0) { - $cart = $this->_getCart(); - $customerId = $cart->getCustomerSession()->getCustomer()->getId(); - $session = $this->_getSession(); - $quoteId = $session->getQuoteId(); - $cartApiArr = CartSKUnfo($customerId, $quoteId); - - include_once 'cartLayout.php'; - exit(); - } else { - $this->_goBack(); - } - //$this->_redirectReferer(Mage::getUrl('*/*')); + $this->_redirectReferer(Mage::getUrl('*/*')); } /** @@ -649,20 +580,7 @@ class Tolexo_Checkout_CartController extends Mage_Core_Controller_Front_Action Mage::logException($e); } - $params = $this->getRequest()->getParams(); - - if(!empty($params['ajaxCart'])) { - $cart = $this->_getCart(); - $customerId = $cart->getCustomerSession()->getCustomer()->getId(); - $session = $this->_getSession(); - $quoteId = $session->getQuoteId(); - $cartApiArr = CartSKUnfo($customerId, $quoteId); - - include_once 'cartLayout.php'; - exit(); - } else { - $this->_goBack(); - } + $this->_goBack(); } /** diff --git a/app/code/local/Tolexo/Checkout/controllers/cartLayout.php b/app/code/local/Tolexo/Checkout/controllers/cartLayout.php deleted file mode 100644 index 1ee6b2b..0000000 --- a/app/code/local/Tolexo/Checkout/controllers/cartLayout.php +++ /dev/null @@ -1,343 +0,0 @@ - -<?php -echo Mage::app()->getLayout()->createBlock('gtm/gtm')->getAjaxCartPageData(); -$cartArr = $cartApiArr['data']; -?> -<div class="cart main-cart"> - <div class="page-title title-buttons"> - <h1>Shopping Cart - <span class="cart-item"> - <?php $cartQty = count($cartArr['cart_details']); - echo "(".$cartQty; - echo ($cartQty <=1)? " Item)" : " Items)"; - ?> - </span> - <input type = "hidden" id="cart-count" value="<?php echo $cartQty ?>" /> - </h1> - </div> - - <div class="row"> - <div class="col-sm-12"> - <div class="cart-table-wrap"> - <div class="scroll-tb"> - - </div> - - <form action="<?php echo Mage::getBaseUrl().'/checkout/cart/updatePost/' ?>" method="post"> - <fieldset class="cart-popup-scroll"> - <?php - if(Mage::getStoreConfig('carriers/tolexo_multistepcheckout/include_tax')) { - $total_amount = $cartArr['sub_total'] + round($cartArr['tax']); - } else { - $total_amount = $cartArr['sub_total']; - } - $minimum_order_amount = Mage::getStoreConfig('carriers/tolexo_multistepcheckout/minimum_order_amount'); - $value = $minimum_order_amount - $total_amount; - if($value > 0) { - ?> - <div class="shipping-offer"> - <?php echo "Free Shipping! if total cart value amount is Rs. ".$minimum_order_amount." or above. You can buy products worth Rs. ".$value." or more to avail this discount." ?> - </div> - <?php } ?> - - <?php - $mgshtml = Mage::app()->getLayout()->getMessagesBlock()->getGroupedHtml(); - if(!empty($mgshtml)) { - echo $mgshtml; - } - ?> - - <script> - jQuery(".success-msg").delay(5000).slideUp(400); - </script> - <table id="shopping-cart-table" class="data-table cart-table"> - - <thead> - <tr> - <th class="frst-wd"> <div class="ajaxpro-spinner" style="display: none;"></div></th> - <th class="wid35 pro-name"><span class="nobr">Item</span></th> - <th class="wid10">Qty</th> - <th class="wid10"><span class="nobr">Unit Price</span></th> - <th class="last wid10">Subtotal</th> - </tr> - </thead> - <tfoot> - - </tfoot> - <tbody> - <?php - $itemArrayRev = array_reverse($cartArr['cart_details'],true); - foreach($itemArrayRev as $itemIndex=>$itemData) { - $errQty = false; - ?> - <tr class="gry-bg"> - <td class="pr-img-td"><a href="<?php echo $itemData['product_details']['url'] ?>" title="<?php echo $itemData['name'] ?>" class="product-image"><img src="<?php echo $itemData['product_details']['image'] ?>" width="38" height="50" alt="<?php echo $itemData['name'] ?>" /></a> - <a href="<?php echo Mage::getBaseUrl().'checkout/cart/delete/id/'.$itemData['item_id'].'?ajaxCart=true' ?>" data-pid="<?php echo $itemData['item_id'] ?>" onclick="delCartProductsOption('<?php echo $itemData['item_id'] ?>')" title="Remove item" class="cart-remove">Remove</a> - </td> - <td class="product-name-td"> - <h2 class="product-name"> - <a href="<?php echo $itemData['product_details']['url'] ?>"><?php echo substr($itemData['name'],0,60)."..."; ?></a> - <div class="pack"> <?php echo ($itemData['product_details']['specification']['Number of Items in Pack'] > 1) ? "Pack of ". $itemData['product_details']['specification']['Number of Items in Pack'] : '' ;?> </div> - </h2> - <?php - if ((!empty($itemData['min_qty'])) && $itemData['quantity'] < $itemData['min_qty']) { - $errQty = true; - $errFlag = true; - ?> - <p class="item-msg error">* The minimun quantity allowed for purchase is <?php echo $itemData['min_qty'] ?>.</p> - <?php }elseif ((!empty($itemData['max_qty'])) && $itemData['quantity'] > $itemData['max_qty']) { - $errQty = true; - $errFlag = true; - ?> - <p class="item-msg error">* The maximum quantity allowed for purchase is <?php echo $itemData['max_qty'] ?>.</p> - <?php } elseif ($itemData['in_stock'] == 0){ - $errQty = true; - $errFlag = true; - ?> - <p class="item-msg error">* This product is currently out of stock.</p> - <?php } elseif($itemData['manage_stock'] == 1) { - if((!empty($itemData['stock_qty'])) && $itemData['stock_qty'] > 0 && $itemData['quantity'] > $itemData['stock_qty']){ - $errQty = true; - $errFlag = true; - - ?> - <p class="item-msg error">* The requested quantity for "<?php echo substr($itemData['name'],0,60); ?>" is not available.</p> - <?php } - } - ?> - </td> - - <td> - <div class="qty-holder"> - <a href="javascript:void(0)" class="table_qty_dec">-</a><input name="cart[<?php echo $itemData['item_id'] ?>][qty]" value="<?php echo $itemData['quantity'] ?>" size="4" title="Qty" class="input-text qty <?php if($errQty) echo 'err-qty' ; ?>" maxlength="12" /><a href="javascript:void(0)" class="table_qty_inc">+</a> - <a class="edit-qty" href="<?php echo Mage::getBaseUrl().'checkout/cart/configure/id/'.$itemData['item_id'].'/' ?>" title="Edit item parameters"><i class="icon-pencil"></i></a> - </div> - <button type="submit" name="update_cart_action" value="update_qty" title="Update" class="button btn-update" onclick="setLayerData('CartPage', 'Cart Page', 'Update', 'Update');"> - <span><span>Update</span></span> - </button> - - </td> - <td> - <span class="cart-price"> - <span class="price">Rs. <?php echo number_format($itemData['Price']) ?></span> - </span> - - - </td> - - <td class="td-total"> - <span class="cart-price"> - <span class="price">Rs. <?php echo number_format($itemData['Price'] * $itemData['quantity']) ?></span> - </span> - </td> -</tr> - - <?php } ?> - </tbody> - </table> - <script type="text/javascript"> - //<![CDATA[ - decorateTable('shopping-cart-table'); - jQuery(function($){ - $(".cart .discount h2,.cart .shipping h2").click(function(){ - if ($(this).hasClass('opened')) { - $(this).removeClass('opened'); - $(this).next().slideUp(); - } else { - $(this).addClass('opened'); - $(this).next().slideDown(); - } - }); - }) - //]]> - </script> - </fieldset> -</form> -<div class="cart-collaterals"> - <form id="discount-coupon-form" action="<?php echo Mage::getBaseUrl().'checkout/cart/couponPost/' ?>" method="post"> - <div class="discount"> - <input type="hidden" name="remove" id="remove-coupone" value="0" /> - <div class="input-box"> - <span class="feature-icn"></span> - <input class="input-text place-icn common-sprite" id="coupon_code" name="coupon_code" value="<?php echo !empty($cartArr['coupon_code']) ? $cartArr['coupon_code']:'' ; ?>" placeholder="Apply Discount coupon" /> - <div class="buttons-set"> - <button type="button" title="Apply Coupon" class="button" onclick="discountForm.submit(false)" value="Apply Coupon"><span><span>Apply</span></span></button> - </div> - <?php if (!empty($cartArr['discount_amount'])) { ?> - <button type="button" title="Remove Coupon" class="button rmv-cupn" onclick="discountForm.submit(true)" value="Remove Coupon"><span><span>Remove Coupon</span></span></button> - <?php - } - ?> - </div> - <!-- <div class="login-msg">*Applicable only for logged-in users. <a href="http://tolexo.rep/index.php/customer/account/login/">Login here</a></div> --> - </div> - </form> -<script type="text/javascript"> -//<![CDATA[ -var discountForm = new VarienForm('discount-coupon-form'); -discountForm.submit = function (isRemove) { - if (isRemove) { - $('coupon_code').removeClassName('required-entry'); - $('remove-coupone').value = "1"; - } else { - $('coupon_code').addClassName('required-entry'); - $('remove-coupone').value = "0"; - } - return VarienForm.prototype.submit.bind(discountForm)(); -} -//]]> -</script> - <div class="shipping"> - <h2>Estimate Shipping and Tax</h2> - <div class="shipping-form"> - <form action="<?php echo Mage::getBaseUrl().'checkout/cart/estimatePost/' ?>" method="post" id="shipping-zip-form"> - <p>Enter your destination to get a shipping estimate.</p> - <ul class="form-list"> - <li> - <label for="country" class="required"><em>*</em>Country</label> - <div class="input-box"> - <select name="country_id" id="country" class="validate-select" title="Country" > - <option value="" > </option> - <option value="IN" selected="selected" >India</option> - </select> - </div> - </li> - <li> - <label for="region_id">State/Province</label> - <div class="input-box"> - <select id="region_id" name="region_id" title="State/Province" style="display:none;"> - <option value="">Please select state</option> - </select> - <script type="text/javascript"> - //<![CDATA[ - $('region_id').setAttribute('defaultValue', ""); - //]]> - </script> - <input type="text" id="region" name="region" value="" title="State/Province" class="input-text" style="display:none;" /> - </div> - </li> - <li> - <label for="postcode">Zip/Postal Code</label> - <div class="input-box"> - <input class="input-text validate-postcode" type="text" id="postcode" name="estimate_postcode" value="" /> - </div> - </li> - </ul> - <div class="buttons-set"> - <button type="button" title="Get a Quote" onclick="coShippingMethodForm.submit()" class="button"><span><span>Get a Quote</span></span></button> - </div> - </form> - <script type="text/javascript"> - //<![CDATA[ - new RegionUpdater('country', 'region', 'region_id', {"config":{"show_all_regions":true,"regions_required":["IN"]},"IN":{"485":{"code":"Andaman and Nicobar","name":"Andaman and Nicobar"},"486":{"code":"Andhra Pradesh","name":"Andhra Pradesh"},"487":{"code":"Arunachal Pradesh","name":"Arunachal Pradesh"},"488":{"code":"Assam","name":"Assam"},"489":{"code":"Bihar","name":"Bihar"},"490":{"code":"Chandigarh","name":"Chandigarh"},"491":{"code":"Chhattisgarh","name":"Chhattisgarh"},"492":{"code":"Dadra and Nagar Haveli","name":"Dadra and Nagar Haveli"},"493":{"code":"Daman and Diu","name":"Daman and Diu"},"494":{"code":"Delhi","name":"Delhi"},"495":{"code":"Goa","name":"Goa"},"496":{"code":"Gujarat","name":"Gujarat"},"497":{"code":"Haryana","name":"Haryana"},"498":{"code":"Himachal Pradesh","name":"Himachal Pradesh"},"499":{"code":"Jammu and Kashmir","name":"Jammu and Kashmir"},"500":{"code":"Jharkhand","name":"Jharkhand"},"501":{"code":"Karnataka","name":"Karnataka"},"502":{"code":"Kerala","name":"Kerala"},"503":{"code":"Lakshadweep","name":"Lakshadweep"},"504":{"code":"Madhya Pradesh","name":"Madhya Pradesh"},"505":{"code":"Maharashtra","name":"Maharashtra"},"506":{"code":"Manipur","name":"Manipur"},"507":{"code":"Meghalaya","name":"Meghalaya"},"508":{"code":"Mizoram","name":"Mizoram"},"509":{"code":"Nagaland","name":"Nagaland"},"510":{"code":"Orissa","name":"Orissa"},"511":{"code":"Pondicherry","name":"Pondicherry"},"512":{"code":"Punjab","name":"Punjab"},"513":{"code":"Rajasthan","name":"Rajasthan"},"514":{"code":"Sikkim","name":"Sikkim"},"515":{"code":"Tamil Nadu","name":"Tamil Nadu"},"516":{"code":"Tripura","name":"Tripura"},"517":{"code":"Uttar Pradesh","name":"Uttar Pradesh"},"518":{"code":"Uttarakhand","name":"Uttarakhand"},"519":{"code":"West Bengal","name":"West Bengal"}}}); - //]]> - //<![CDATA[ - var coShippingMethodForm = new VarienForm('shipping-zip-form'); - var countriesWithOptionalZip = ["HK","IE","MO","PA"]; - - coShippingMethodForm.submit = function () { - var country = $F('country'); - var optionalZip = false; - - for (i=0; i < countriesWithOptionalZip.length; i++) { - if (countriesWithOptionalZip[i] == country) { - optionalZip = true; - } - } - if (optionalZip) { - $('postcode').removeClassName('required-entry'); - } - else { - $('postcode').addClassName('required-entry'); - } - return VarienForm.prototype.submit.bind(coShippingMethodForm)(); - } - //]]> - </script> - </div> -</div> -<div class="totals"> -<!-- <h2>Cart Totals</h2> --> - <div class="total-inner"> - <table id="shopping-cart-totals-table"> - <col /> - <col width="1" /> - <tfoot> - <tr> - <td style="" class="a-right"> - <strong>Grand Total</strong> - </td> - <td style="" class="a-right"> - <strong><span class="price">Rs. <?php echo number_format($cartArr['grand_total']) ?></span></strong> - </td> - </tr> - </tfoot> - <tbody> - <tr> - <td style="" class="a-right"> - Subtotal - </td> - <td style="" class="a-right"> - <span class="price">Rs. <?php echo number_format($cartArr['sub_total']) ?></span> - </td> - </tr> - <?php if (!empty($cartArr['discount_amount'])) { ?> - <tr> - <td style="" class="a-right"> - Discount (<?php echo $cartArr['coupon_code'] ?>) - </td> - <td style="" class="a-right"> - <span class="price">-Rs. <?php echo number_format($cartArr['discount_amount']) ?></span> - </td> - </tr> - <?php } ?> - - <?php - if (!empty($cartArr['shipping'])) { ?> - <tr> - <td style="" class="a-right"> - Shipping & Handling - </td> - <td style="" class="a-right"> - <span class="price">Rs. <?php echo number_format($cartArr['shipping']) ?></span> - </td> - </tr> - <?php } ?> - - <tr > - <td style="" class="a-right"> - Tax - </td> - <td style="" class="a-right"><span class="price">Rs. <?php echo number_format($cartArr['tax']) ?></span></td> - </tr> - </tbody> - </table> - </div> -</div> -<div class="checkout-continue-btn"> - <ul class="checkout-types"> - <li> - <?php if ($errFlag) { ?> - <button type="button" title="Proceed to Checkout" class="button btn-proceed-checkout btn-checkout no-checkout" disabled="disabled"> - <?php - }else{ ?> - <button type="button" title="Proceed to Checkout" class="button btn-proceed-checkout btn-checkout" onclick="window.location='<?php echo Mage::getBaseUrl()."checkout/onepage/" ?>'; setLayerData('CartPage', 'Cart Page', 'Proceed To Checkout', 'Proceed To Checkout'); onCheckoutOption(1, 'Proceed To Checkout');"> - <?php - } - ?> - - <span><span class="proceed-txt">Proceed to Checkout</span><i class="checkout-loader"></i></span></button> - </li> - </ul> - <button type="button" title="Continue Shopping" class="button continue-btn" onclick="setLayerData('CartPage', 'Cart Page', 'Continue Shopping', 'Continue Shopping');"> - <span><span>Continue Shopping</span></span></button> -</div> -</div> -</div> -</div> -</div> -</div> -<script> -jQuery('ul.messages .error-msg').find('li').prepend('<span class="error-icn common-sprite"></span>'); -jQuery('ul.messages .success-msg').find('li').prepend('<span class="success-icn common-sprite"></span>'); -</script> \ No newline at end of file diff --git a/app/code/local/Tolexo/OrderTags/Helper/Data.php b/app/code/local/Tolexo/OrderTags/Helper/Data.php deleted file mode 100644 index 6181db2..0000000 --- a/app/code/local/Tolexo/OrderTags/Helper/Data.php +++ /dev/null @@ -1,12 +0,0 @@ -<?php - -/** - * Default Helper - * - * @category Tolexo - * @package Tolexo_OrderTags - * @copyright Copyright (c) 2014 tolexo.com - */ - -class Tolexo_OrderTags_Helper_Data extends Mage_Core_Helper_Abstract -{} diff --git a/app/code/local/Tolexo/OrderTags/Model/Mysql4/Tagmaster.php b/app/code/local/Tolexo/OrderTags/Model/Mysql4/Tagmaster.php deleted file mode 100644 index 2f9704e..0000000 --- a/app/code/local/Tolexo/OrderTags/Model/Mysql4/Tagmaster.php +++ /dev/null @@ -1,8 +0,0 @@ -<?php -class Tolexo_Ordertag_Model_Mysql4_Tagmaster extends Mage_Core_Model_Mysql4_Abstract -{ - protected function _construct() - { - $this->_init("ordertag/tagmaster", "tag_id"); - } -} \ No newline at end of file diff --git a/app/code/local/Tolexo/OrderTags/Model/Observer.php b/app/code/local/Tolexo/OrderTags/Model/Observer.php deleted file mode 100644 index d4e10ef..0000000 --- a/app/code/local/Tolexo/OrderTags/Model/Observer.php +++ /dev/null @@ -1,26 +0,0 @@ -<?php - -/** - * @category Tolexo - * @package Tolexo_OrderTags - * @copyright Copyright (c) 2014 tolexo.com - * - */ -class Tolexo_OrderTags_Model_Observer extends Varien_Event_Observer -{ - - public function updateQuoteOnReorder($observer) - { - $oldOrderId = Mage::app()->getRequest()->getParam('order_id'); - $quote = $observer->getEvent()->getQuote(); - $quoteId = $quote->getId(); - - if (! empty($oldOrderId)) { - $resource = Mage::getSingleton('core/resource'); - // get connection objects to execute direct queries - $writeConn = $resource->getConnection('core_write'); - $q = "UPDATE sales_flat_quote SET orig_order_id=$oldOrderId WHERE entity_id=$quoteId"; - $data = $writeConn->query($q); - } - } -} \ No newline at end of file diff --git a/app/code/local/Tolexo/OrderTags/etc/adminhtml.xml b/app/code/local/Tolexo/OrderTags/etc/adminhtml.xml deleted file mode 100644 index d8c94f9..0000000 --- a/app/code/local/Tolexo/OrderTags/etc/adminhtml.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0"?> -<config> - <acl> - <resources> - <admin> - <children> - <system> - <children> - <config> - <children> - <ordertag translate="title" module="ordertag"> - <title>Order Tag</title> - </ordertag> - </children> - </config> - </children> - </system> - </children> - </admin> - </resources> - </acl> -</config> diff --git a/app/code/local/Tolexo/OrderTags/etc/config.xml b/app/code/local/Tolexo/OrderTags/etc/config.xml deleted file mode 100644 index 5ab08bb..0000000 --- a/app/code/local/Tolexo/OrderTags/etc/config.xml +++ /dev/null @@ -1,54 +0,0 @@ -<?xml version="1.0"?> -<config> - <modules> - <Tolexo_OrderTags> - <version>0.0.1</version> - </Tolexo_OrderTags> - </modules> - <adminhtml> - <events> - <sales_quote_save_after> - <observers> - <OrderTags_Observer> - <type>singleton</type> - <class>Tolexo_OrderTags_Model_Observer</class> - <method>updateQuoteOnReorder</method> - </OrderTags_Observer> - </observers> - </sales_quote_save_after> - </events> - </adminhtml> - <global> - <models> - <ordertag> - <class>Tolexo_Ordertag_Model</class> - <resourceModel>ordertag_mysql4</resourceModel> - </ordertag> - <ordertag_mysql4> - <class>Tolexo_Ordertag_Model_Mysql4</class> - <entities> - <tagmaster> - <table>sales_flat_order_tag_master</table> - </tagmaster> - </entities> - </ordertag_mysql4> - </models> - - <helpers> - <ordertag> - <class>Tolexo_OrderTags_Helper</class> - </ordertag> - </helpers> - - <resources> - <ordertag_setup> - <setup> - <module>Tolexo_OrderTags</module> - </setup> - <connection> - <use>core_setup</use> - </connection> - </ordertag_setup> - </resources> - </global> -</config> \ No newline at end of file diff --git a/app/code/local/Tolexo/OrderTags/etc/system.xml b/app/code/local/Tolexo/OrderTags/etc/system.xml deleted file mode 100644 index 08afcfb..0000000 --- a/app/code/local/Tolexo/OrderTags/etc/system.xml +++ /dev/null @@ -1,45 +0,0 @@ -<?xml version="1.0"?> -<config> - <sections> - <ordertag translate="label" module="ordertag"> - <class>separator-top</class> - <label>Order Tag</label> - <tab>sales</tab> - <frontend_type>text</frontend_type> - <sort_order>40</sort_order> - <show_in_default>1</show_in_default> - <show_in_website>0</show_in_website> - <show_in_store>0</show_in_store> - <groups> - <general> - <label>General</label> - <frontend_type>text</frontend_type> - <sort_order>10</sort_order> - <show_in_default>1</show_in_default> - <show_in_website>0</show_in_website> - <show_in_store>0</show_in_store> - <fields> - <corporate_users translate="label"> - <label>Corporate admin users</label> - <frontend_type>text</frontend_type> - <sort_order>191</sort_order> - <show_in_default>1</show_in_default> - <show_in_website>0</show_in_website> - <show_in_store>0</show_in_store> - <comment>Please provide comma separated id's of the corporate admin users</comment> - </corporate_users> - <telesales_users translate="label"> - <label>Telesales users</label> - <frontend_type>text</frontend_type> - <sort_order>192</sort_order> - <show_in_default>1</show_in_default> - <show_in_website>0</show_in_website> - <show_in_store>0</show_in_store> - <comment>Please provide comma separated id's of the tele sales users</comment> - </telesales_users> - </fields> - </general> - </groups> - </ordertag> - </sections> -</config> \ No newline at end of file diff --git a/app/code/local/Tolexo/OrderTags/sql/ordertag_setup/mysql4-install-0.0.1.php b/app/code/local/Tolexo/OrderTags/sql/ordertag_setup/mysql4-install-0.0.1.php deleted file mode 100644 index 4eb9f4a..0000000 --- a/app/code/local/Tolexo/OrderTags/sql/ordertag_setup/mysql4-install-0.0.1.php +++ /dev/null @@ -1,64 +0,0 @@ -<?php -$installer = $this; -$installer->startSetup(); - -$installer->run(" - DROP TABLE IF EXISTS `{$this->getTable('ordertag/tagmaster')}`; - CREATE TABLE `{$installer->getTable('ordertag/tagmaster')}` ( - `tag_id` INT(10) NOT NULL AUTO_INCREMENT, - `tag_name` VARCHAR(50) NOT NULL COMMENT 'Backend, Web, App, Edited, Corporate, Alternate, Customer, First, Repeat, Repeat-A (One order delivered), Reorder, Fresh', - `description` VARCHAR(255) NULL, - PRIMARY KEY (`tag_id`)) ENGINE = InnoDB; - - INSERT INTO `sales_flat_order_tag_master` - ( `tag_name`, `description`) VALUES - ('Backend', 'Backend'), - ('Web', 'Web'), - ('App', 'App'), - ('Edited', 'Edited'), - ('Corporate', 'Corporate'), - ('Alternate', 'Alternate'), - ('Repeat', 'Repeat'), - ('Repeat-A', 'Repeat-A(One order delivered)'), - ('Reorder', 'Reorder'), - ('Telesales', 'Telesales'); - - Alter table `sales_flat_order_info` - ADD `placed_from` INT(10) NULL COMMENT 'Backend \nApp\nWeb' AFTER `utm_source`, - ADD `created_by` INT(10) NULL COMMENT 'Edited - Order created by Customer Care\nCorporate - Order created by a specific Admin\nAlternate - Order created by backend script\nCusomer - Order created by normal customer' AFTER `placed_from`, - ADD `repeat_sequence` INT(10) NULL COMMENT 'First - First Order of that customer\nRepeat - One order already placed by that customer\nRepat-A - One order already delivered to that customer' AFTER `created_by`, - ADD `fresh_or_reorder` INT(10) NULL COMMENT 'Reorder - By clicking on Reorder button from Admin\nFresh - Without clicking Reorder button by Admin / Customer' AFTER `repeat_sequence`, - ADD `purchase_admin_id` INT(10) NULL COMMENT 'Store NULL or admin_id that are designated as Corporate Admin (defined in core_config_data table)' AFTER `fresh_or_reorder`, - ADD `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP AFTER `created_at`, - ADD INDEX `fk_placed_from_1_idx` (`placed_from` ASC), - ADD INDEX `fk_created_by_1_idx` (`created_by` ASC), - ADD INDEX `fk_repeat_sequence_1_idx` (`repeat_sequence` ASC), - ADD INDEX `fk_fresh_or_reorder_1_idx` (`fresh_or_reorder` ASC), - ADD CONSTRAINT `fk_placed_from_1` - FOREIGN KEY (`placed_from`) - REFERENCES `sales_flat_order_tag_master` (`tag_id`) - ON DELETE NO ACTION - ON UPDATE NO ACTION, - ADD CONSTRAINT `fk_created_by_1` - FOREIGN KEY (`created_by`) - REFERENCES `sales_flat_order_tag_master` (`tag_id`) - ON DELETE NO ACTION - ON UPDATE NO ACTION, - ADD CONSTRAINT `fk_repeat_sequence_1` - FOREIGN KEY (`repeat_sequence`) - REFERENCES `sales_flat_order_tag_master` (`tag_id`) - ON DELETE NO ACTION - ON UPDATE NO ACTION, - ADD CONSTRAINT `fk_fresh_or_reorder_1` - FOREIGN KEY (`fresh_or_reorder`) - REFERENCES `sales_flat_order_tag_master` (`tag_id`) - ON DELETE NO ACTION - ON UPDATE NO ACTION; - - Alter table {$this->getTable('sales/order')} ADD `purchase_admin_id` int(10) unsigned DEFAULT NULL After purchase_from; - - Alter table {$this->getTable('sales/order_grid')} ADD `order_tags` varchar(255) DEFAULT NULL After billing_name; -"); - -$installer->endSetup(); -?> \ No newline at end of file diff --git a/app/code/local/Tolexo/Splitorder/Model/Observer.php b/app/code/local/Tolexo/Splitorder/Model/Observer.php index ec6eada..4bd7fc1 100644 --- a/app/code/local/Tolexo/Splitorder/Model/Observer.php +++ b/app/code/local/Tolexo/Splitorder/Model/Observer.php @@ -317,31 +317,28 @@ class Tolexo_Splitorder_Model_Observer extends Varien_Event_Observer { } } } catch (Exception $e) { - $error = $e->getMessage(); - Mage::log("Split Order Code for $oldOrderId, $product, $oldStatus \n $error", null, 'SplitOrder.log', true); + echo $e->getMessage(); } return $newOrderId; } function canceledOldOrder($orderId, $entityId) { try { + $sql1 = "UPDATE sales_flat_order sfo,sales_flat_order_grid sfog " . "SET sfo.state = 'canceled', sfo.status = 'cancel_split_order', sfog.status = 'cancel_split_order' " . "WHERE sfo.entity_id = sfog.entity_id " . "AND sfo.entity_id = '" . $entityId . "'"; $this->writeConnection->query($sql1); - $sql1 = "UPDATE sales_flat_order_item SET qty_canceled = (qty_ordered - qty_invoiced) WHERE order_id = $entityId;"; - $this->writeConnection->query($sql1); - $currentTime = date('Y-m-d H:i:s'); $sql = "INSERT INTO `sales_flat_order_status_history` " . "(`parent_id`,`is_customer_notified`,`status`,`comment`,`created_at`,`entity_name`,`username`) " . "values( " . $entityId . ",0,'cancel_split_order' ,'Cancel Split Order','" . $currentTime . "','order','System Generated')"; $this->writeConnection->query($sql); } catch (Exception $e) { - $error = $e->getMessage(); - Mage::log("Split Order Code Error $orderId\n $error", null, 'SplitOrder.log', true); + Mage::logException($e); + echo $e->getMessage(); } } @@ -349,29 +346,18 @@ class Tolexo_Splitorder_Model_Observer extends Varien_Event_Observer { $smsContent = ""; $thankMsgContent = ''; $finalDetail = ''; - $order = Mage::getModel('sales/order')->loadByIncrementId($orderId); - $order_created = $order->getCreatedAtFormated('medium'); - $sql = "SELECT entity_id,increment_id " . "FROM sales_flat_order " . "WHERE relation_parent_id='" . $entityId . "'"; $resSet = $this->readConnection->query($sql); $result = $resSet->fetchAll(); if (count($result) != 0) { - $thankMsgContent = 'Thank you for confirming your order.'; + $thankMsgContent = 'Thank you for confirming your Transaction # ' . $orderId . ' .'; $thankMsgContent1 = 'Your order has been successfully placed and is being processed. We have grouped your Order items seller-wise and listed under separate order IDs.'; - $boldOrderNumber = ''; - } else { - $boldOrderNumber = '<tr> - <td style="background-color:#f5f5f5;padding:12px 0;text-align:center;color:#222222;"> - <span style="font-weight:bold;font-size:18px;display:inline-block;">Your Transaction # '.$orderId.' </span> - <span style="font-size:16px;display:inline-block;">(placed on '.$order_created.')</span> - </td> - </tr>'; } $content = $this->getSplitOrderContent($orderId, $entityId); - + $order = Mage::getModel('sales/order')->loadByIncrementId($orderId); $shipping = $order->getShippingAddress(); $billing = $order->getBillingAddress(); $username = $order->getCustomerFirstname() . " " . $order->getCustomerLastname(); @@ -394,13 +380,25 @@ class Tolexo_Splitorder_Model_Observer extends Varien_Event_Observer { $paymentMode = 'Paid through PAYTM'; } - if ($noI > 1) { - $itm = $itemName . "... and " . ($noI - 1) . " other item(s)"; + + if ($method == 'banktransfer') { + $smsContent = 'Dear Customer, Thank you for confirming your order # ' . $orderId . ' on Tolexo.com. Please check your email or Tolexo Account for further information.'; + $subject = 'Your Order # ' . $orderId . ' on Tolexo.com has been successfully placed!'; } else { - $itm = $itemName . "... "; + if (Mage::getDesign()->getArea() == 'adminhtml') { + $smsContent = 'Dear Customer, Thank you for confirming your order # ' . $orderId . ' on Tolexo.com. Please check your email or Tolexo Account for further information.'; + $subject = 'Your Order # ' . $orderId . ' on Tolexo.com has been successfully placed!'; + } else { + if ($noI > 1) { + $itm = $itemName . "... and " . ($noI - 1) . " other item(s)"; + } else { + $itm = $itemName . "... "; + } + $smsContent = "Dear Customer, Thank you for placing order for " . $itm . " on Tolexo.com. We will get in touch with you for further communication very soon."; + $subject = 'Your New Order on Tolexo.com has been successfully placed!'; + } + } - $smsContent = "Dear Customer, Thank you for placing order for " . $itm . " on Tolexo.com. We will get in touch with you for further communication very soon."; - $subject = 'Your New Order on Tolexo.com has been successfully placed!'; $finalDetail = '<table width="100%" cellpadding="0" cellspacing="0"> <tr> @@ -457,21 +455,24 @@ class Tolexo_Splitorder_Model_Observer extends Varien_Event_Observer { $order_ship = $shipping->getFirstname() . " " . $shipping->getMiddlename() . " " . $shipping->getLastname() . " <br/>" . $shipping->getCompany() . "<br/>" . $shipping->getTelephone() . "<br/>" . $shipAdds . " " . $shipping->getCity() . " " . $shipping->getRegion() . " " . $shipping->getPostcode(); $email = array($order->getCustomerEmail()); $emailName = array($username); - + $order_created = $order->getCreatedAtFormated('medium'); $templateId = 25; $bccEmail = array('orders@tolexo.com'); $sender = array('name' => 'Sales', 'email' => 'support@tolexo.com'); $vars = array('order_increment_id' => $orderId, 'item_content' => $content, 'username' => $username, 'order_bill' => $order_bill, 'order_ship' => $order_ship, 'order_created' => $order_created, 'smsContent' => $smsContent, 'thankMsgContent' => $thankMsgContent, - 'subject' => $subject, 'paymentMode' => $paymentMode, 'thankMsgContent1' => $thankMsgContent1, 'grndTotal' => $grndTotal, 'finalDetail' => $finalDetail, 'highlight_OrderId'=>$boldOrderNumber); + 'subject' => $subject, 'paymentMode' => $paymentMode, 'thankMsgContent1' => $thankMsgContent1, 'grndTotal' => $grndTotal, 'finalDetail' => $finalDetail); $storeId = Mage::app()->getStore()->getId(); $translate = Mage::getSingleton('core/translate'); Mage::getModel('core/email_template')->addBCC($bccEmail)->sendTransactional($templateId, $sender, $email, $emailName, $vars, $storeId); $translate->setTranslateInline(true); - $sql1 = "UPDATE sales_flat_order sfo SET sfo.email_sent = 2 WHERE sfo.entity_id = '" . $entityId . "'"; + $sql1 = "UPDATE sales_flat_order sfo " + . "SET sfo.email_sent = sfo.email_sent + 1 " + . "WHERE sfo.entity_id = '" . $entityId . "'"; $this->writeConnection->query($sql1); + } function getSplitOrderContent($orderId, $entityId) { @@ -584,35 +585,4 @@ class Tolexo_Splitorder_Model_Observer extends Varien_Event_Observer { } return $content; } - - // Add Order Data in queue Table - public function pushOrderToQueue($observer) - { - $order = $observer->getEvent()->getOrder(); - $orderId = $order->getId(); - $orderData = $order->getData(); - $orderData['purchase_admin_id'] = NULL; - $adminSession = Mage::getSingleton('admin/session'); - - $quoteId = $order->getQuoteId(); - $childId = $order->getRelationChildId(); - $parentId = $order->getRelationParentId(); - if (! empty($childId) || ! empty($parentId)) { - $sql = "UPDATE sales_flat_quote SET orig_order_id = '0' WHERE entity_id=$quoteId"; - $this->writeConnection->query($sql); - } - - $sql = "SELECT COUNT(entity_id) AS count FROM sales_flat_order_status_history WHERE parent_id = '" . $orderId . "';"; - $result = $this->readConnection->query($sql)->fetch(); - $count = intval($result['count']); - - if ($adminSession->isLoggedIn() && $count <= 1) { - $orderData['purchase_admin_id'] = $adminSession->getUser()->getUserId(); - } - - $orderData['store_name'] = implode(",", explode("\n", $orderData['store_name'])); - $json_order = json_encode($orderData); - $query = "INSERT INTO `sales_order_queue` (`order_id`,`order_data`) VALUES ($orderId,'" . $json_order . "') "; - $this->writeConnection->query($query); - } } \ No newline at end of file diff --git a/app/code/local/Tolexo/Splitorder/etc/config.xml b/app/code/local/Tolexo/Splitorder/etc/config.xml index c4c28f5..e12b2ce 100644 --- a/app/code/local/Tolexo/Splitorder/etc/config.xml +++ b/app/code/local/Tolexo/Splitorder/etc/config.xml @@ -14,11 +14,6 @@ <class>Tolexo_Splitorder_Model_Observer</class> <method>splitMethod</method> </tolexo_splitorder_model_observer> - <tolexo_sales_order_queue_observer> - <type>singleton</type> - <class>Tolexo_Splitorder_Model_Observer</class> - <method>pushOrderToQueue</method> - </tolexo_sales_order_queue_observer> </observers> </sales_order_save_commit_after> </events> diff --git a/app/code/local/Unbxd/Autosuggest/Block/Index.php b/app/code/local/Unbxd/Autosuggest/Block/Index.php old mode 100755 new mode 100644 diff --git a/app/code/local/Unbxd/Autosuggest/Helper/Data.php b/app/code/local/Unbxd/Autosuggest/Helper/Data.php old mode 100755 new mode 100644 diff --git a/app/code/local/Unbxd/Autosuggest/controllers/IndexController.php b/app/code/local/Unbxd/Autosuggest/controllers/IndexController.php old mode 100755 new mode 100644 diff --git a/app/code/local/Unbxd/Autosuggest/etc/config.xml b/app/code/local/Unbxd/Autosuggest/etc/config.xml old mode 100755 new mode 100644 diff --git a/app/code/local/Unbxd/Search/Block/Catalog/Layer/Filter/Attribute.php b/app/code/local/Unbxd/Search/Block/Catalog/Layer/Filter/Attribute.php old mode 100755 new mode 100644 diff --git a/app/code/local/Unbxd/Search/Block/Catalog/Layer/Filter/Boolean.php b/app/code/local/Unbxd/Search/Block/Catalog/Layer/Filter/Boolean.php old mode 100755 new mode 100644 diff --git a/app/code/local/Unbxd/Search/Block/Catalog/Layer/Filter/Category.php b/app/code/local/Unbxd/Search/Block/Catalog/Layer/Filter/Category.php old mode 100755 new mode 100644 diff --git a/app/code/local/Unbxd/Search/Block/Catalog/Layer/Filter/Decimal.php b/app/code/local/Unbxd/Search/Block/Catalog/Layer/Filter/Decimal.php old mode 100755 new mode 100644 diff --git a/app/code/local/Unbxd/Search/Block/Catalog/Layer/Filter/Price.php b/app/code/local/Unbxd/Search/Block/Catalog/Layer/Filter/Price.php old mode 100755 new mode 100644 diff --git a/app/code/local/Unbxd/Search/Block/Catalog/Layer/View.php b/app/code/local/Unbxd/Search/Block/Catalog/Layer/View.php old mode 100755 new mode 100644 diff --git a/app/code/local/Unbxd/Search/Helper/AnalyticsHelper.php b/app/code/local/Unbxd/Search/Helper/AnalyticsHelper.php old mode 100755 new mode 100644 diff --git a/app/code/local/Unbxd/Search/Helper/Catalogsearch.php b/app/code/local/Unbxd/Search/Helper/Catalogsearch.php old mode 100755 new mode 100644 diff --git a/app/code/local/Unbxd/Search/Helper/Data.php b/app/code/local/Unbxd/Search/Helper/Data.php old mode 100755 new mode 100644 diff --git a/app/code/local/Unbxd/Search/Helper/Unbxdsearch.php b/app/code/local/Unbxd/Search/Helper/Unbxdsearch.php old mode 100755 new mode 100644 diff --git a/app/code/local/Unbxd/Search/Model/Adminhtml/System/Config/Backend/Engine.php b/app/code/local/Unbxd/Search/Model/Adminhtml/System/Config/Backend/Engine.php old mode 100755 new mode 100644 diff --git a/app/code/local/Unbxd/Search/Model/Adminhtml/System/Config/Source/Engine.php b/app/code/local/Unbxd/Search/Model/Adminhtml/System/Config/Source/Engine.php old mode 100755 new mode 100644 diff --git a/app/code/local/Unbxd/Search/Model/Adminhtml/System/Config/Source/Power.php b/app/code/local/Unbxd/Search/Model/Adminhtml/System/Config/Source/Power.php old mode 100755 new mode 100644 diff --git a/app/code/local/Unbxd/Search/Model/Catalog/Layer.php b/app/code/local/Unbxd/Search/Model/Catalog/Layer.php old mode 100755 new mode 100644 diff --git a/app/code/local/Unbxd/Search/Model/Catalog/Layer/Filter/Attribute.php b/app/code/local/Unbxd/Search/Model/Catalog/Layer/Filter/Attribute.php old mode 100755 new mode 100644 diff --git a/app/code/local/Unbxd/Search/Model/Catalog/Layer/Filter/Boolean.php b/app/code/local/Unbxd/Search/Model/Catalog/Layer/Filter/Boolean.php old mode 100755 new mode 100644 diff --git a/app/code/local/Unbxd/Search/Model/Catalog/Layer/Filter/Category.php b/app/code/local/Unbxd/Search/Model/Catalog/Layer/Filter/Category.php old mode 100755 new mode 100644 diff --git a/app/code/local/Unbxd/Search/Model/Catalog/Layer/Filter/Decimal.php b/app/code/local/Unbxd/Search/Model/Catalog/Layer/Filter/Decimal.php old mode 100755 new mode 100644 diff --git a/app/code/local/Unbxd/Search/Model/Catalog/Layer/Filter/Price.php b/app/code/local/Unbxd/Search/Model/Catalog/Layer/Filter/Price.php old mode 100755 new mode 100644 diff --git a/app/code/local/Unbxd/Search/Model/Catalogsearch/Layer.php b/app/code/local/Unbxd/Search/Model/Catalogsearch/Layer.php old mode 100755 new mode 100644 diff --git a/app/code/local/Unbxd/Search/Model/Catalogsearch/Layer/Filter/Attribute.php b/app/code/local/Unbxd/Search/Model/Catalogsearch/Layer/Filter/Attribute.php old mode 100755 new mode 100644 diff --git a/app/code/local/Unbxd/Search/Model/Resource/Catalog/Product/Collection.php b/app/code/local/Unbxd/Search/Model/Resource/Catalog/Product/Collection.php old mode 100755 new mode 100644 diff --git a/app/code/local/Unbxd/Search/Model/Resource/Engine/Abstract.php b/app/code/local/Unbxd/Search/Model/Resource/Engine/Abstract.php old mode 100755 new mode 100644 diff --git a/app/code/local/Unbxd/Search/Model/Resource/Engine/Unbxdsearch/Client.php b/app/code/local/Unbxd/Search/Model/Resource/Engine/Unbxdsearch/Client.php old mode 100755 new mode 100644 diff --git a/app/code/local/Unbxd/Searchcore/Model/Feed/Feedconfig.php b/app/code/local/Unbxd/Searchcore/Model/Feed/Feedconfig.php deleted file mode 100644 index 92bd286..0000000 --- a/app/code/local/Unbxd/Searchcore/Model/Feed/Feedconfig.php +++ /dev/null @@ -1,110 +0,0 @@ -<?php -/** - * Created by IntelliJ IDEA. - * User: antz - * Date: 21/07/15 - * Time: 12:48 AM - */ - -class Unbxd_Searchcore_Model_Feed_Feedconfig { - var $page = 0; - var $limit = -1; - var $_includeSchema = true; - var $_includeProduct = true; - var $_includeTaxonomyNodes = false; - var $_includeTaxonomyMapping = false; - var $taxonomyLimit = -1; - var $taxonomyStart = 0; - - - - - public function setSchemaInclusion($status = true) { - $this->_includeSchema = $status; - } - - public function isSchemaToBeIncluded() { - if (array_key_exists("schema", $_GET)){ - $this->_includeSchema = ($_GET["schema"] == "true")?true:false; - } - return $this->_includeSchema; - } - - public function setProductInclusion($status=true) { - $this->_includeProduct = $status; - } - - public function isProductToBeIncluded() { - if (array_key_exists("product", $_GET)){ - $this->_includeProduct = ($_GET["product"] == "true")?true:false; - } - return $this->_includeProduct; - } - - public function isCatalogIncluded() { - return $this->isSchemaToBeIncluded() || $this->isProductToBeIncluded(); - } - - public function setTaxonomyNodeInclusion($status=true) { - $this->_includeTaxonomyNodes = $status; - } - - public function isTaxonomyNodeToBeIncluded() { - if (array_key_exists("taxonomy-node", $_GET)){ - $this->_includeTaxonomyNodes = ($_GET["taxonomy-node"] == "true")?true:false; - } - - return $this->_includeTaxonomyNodes; - } - - - public function setTaxonomyMappingInclusion($status=true) { - $this->_includeTaxonomyMapping = $status; - } - - public function isTaxonomyMappingToBeIncluded() { - if (array_key_exists("taxonomy-mapping", $_GET)){ - $this->_includeTaxonomyMapping= ($_GET["taxonomy-mapping"] == "true")?true:false; - } - - return $this->_includeTaxonomyMapping; - } - - public function isTaxonomyIncluded() { - return $this->isTaxonomyNodeToBeIncluded() || $this->isTaxonomyMappingToBeIncluded(); - } - - - public function setPage($page = 0) { - $this->page = (int)$page; - return $this; - } - - public function setLimit($limit = 500) { - $this->limit = (int)$limit; - if($limit < $this->pageSize) { - $this->pageSize = (int)$limit; - } - return $this; - } - - - public function setTaxonomyPage($taxPage) { - $this->taxonomyStart = $taxPage; - return $this; - } - - public function getTaxonomyPage() { - return $this->taxonomyStart; - } - - public function setTaxonomyLimit($taxLimit) { - $this->taxonomyLimit = $taxLimit; - return $this; - } - - public function getTaxonomyLimit() { - return $this->taxonomyLimit; - } - -} diff --git a/app/code/local/Unbxd/Searchcore/Model/Feed/Feedcreator.php b/app/code/local/Unbxd/Searchcore/Model/Feed/Feedcreator.php old mode 100644 new mode 100755 index 71551f7..c5020e7 --- a/app/code/local/Unbxd/Searchcore/Model/Feed/Feedcreator.php +++ b/app/code/local/Unbxd/Searchcore/Model/Feed/Feedcreator.php @@ -1,6 +1,6 @@ <?php -class Unbxd_Searchcore_Model_Feed_Feedcreator extends Unbxd_Searchcore_Model_Feed_Feedconfig { +class Unbxd_Searchcore_Model_Feed_Feedcreator { var $fileName; var $fields; @@ -8,6 +8,8 @@ class Unbxd_Searchcore_Model_Feed_Feedcreator extends Unbxd_Searchcore_Model_Fee var $pageSize = 500; var $_fullupload; var $_copyFields = array(); + var $page = 0; + var $limit = -1; public function __construct() { @@ -20,6 +22,19 @@ class Unbxd_Searchcore_Model_Feed_Feedcreator extends Unbxd_Searchcore_Model_Fee $this->fileName = $fileName; } + public function setPage($page = 0) { + $this->page = (int)$page; + return $this; + } + + public function setLimit($limit = 500) { + $this->limit = (int)$limit; + if($limit < $this->pageSize) { + $this->pageSize = (int)$limit; + } + return $this; + } + /** * Method to set the full upload * @param bool $value @@ -70,26 +85,17 @@ class Unbxd_Searchcore_Model_Feed_Feedcreator extends Unbxd_Searchcore_Model_Fee * @return bool */ protected function _writeFeedContent(Mage_Core_Model_Website $website, $currentDate) { - if(!$this->_appendTofile('{"feed":{')) { + if(!$this->_appendTofile('{"feed":')) { $this->log("Error writing feed tag"); return false; } - if($this->isCatalogIncluded()) { - if(!$this->_writeCatalogContent($website, $currentDate)) { - $this->log("Error writing catalog tag"); - return false; - } - } - - if($this->isTaxonomyIncluded()) { - if (!$this->_writeTaxonomyContents($website)) { - return false; - } - } - - if(!$this->_appendTofile("}}")) { + if(!$this->_writeCatalogContent($website, $currentDate)) { + $this->log("Error writing catalog tag"); + return false; + } + if(!$this->_appendTofile("}")) { $this->log("Error writing closing feed tag"); return false; } @@ -105,38 +111,31 @@ class Unbxd_Searchcore_Model_Feed_Feedcreator extends Unbxd_Searchcore_Model_Fee * @return bool */ protected function _writeCatalogContent(Mage_Core_Model_Website $website, $currentDate) { - if (!$this->_appendTofile('"catalog":{')) { + if(!$this->_appendTofile('{"catalog":{')) { $this->log("Error writing closing catalog tag"); return false; } - if($this->isSchemaToBeIncluded()) { - if(!$this->_writeSchemaContent()) { - return false; - } - } + if(!$this->_writeSchemaContent()) { + return false; + } + + if(!$this->_appendTofile(",")) { + $this->log("Error while adding comma in catalog"); + return false; + } - if($this->isSchemaToBeIncluded() && $this->isProductToBeIncluded()) { - if (!$this->_appendTofile(",")) { - $this->log("Error while adding comma in catalog"); - return false; - } - } $fromDate = Mage::getResourceSingleton('unbxd_searchcore/config') ->getValue($website->getWebsiteId(), Unbxd_Searchcore_Model_Config::LAST_UPLOAD_TIME); if(is_null($fromDate)) { $fromDate = "1970-01-01 00:00:00"; } - -if($this->isProductToBeIncluded()) { - // If both of them are unsuccessful, then tag it as unsuccessful - if (!($this->_writeAddProductsContent($website, $fromDate, $currentDate) - || $this->_writeDeleteProductsContent($website, $fromDate, $currentDate)) - ) { - return false; - } - Mage::getModel('unbxd_searchcore/sync')->markItSynced($website->getWebsiteId(), $currentDate); - } - + // If both of them are unsuccessful, then tag it as unsuccessful + if(!($this->_writeAddProductsContent($website, $fromDate, $currentDate) + || $this->_writeDeleteProductsContent($website, $fromDate, $currentDate))) { + return false; + } + + Mage::getModel('unbxd_searchcore/sync')->markItSynced($website->getWebsiteId(), $currentDate); if(!$this->_appendTofile("}")) { @@ -148,6 +147,10 @@ if($this->isProductToBeIncluded()) { return false; }*/ + if(!$this->_appendTofile("}")) { + $this->log("Error writing closing feed tag"); + return false; + } return true; } @@ -164,12 +167,7 @@ if($this->isProductToBeIncluded()) { public function getSize(Mage_Core_Model_Website $website, $fromDate, $currentDate) { $collection = $this->_getCatalogCollectionToAdd($website, $fromDate, $currentDate); return $collection->getSize(); - } - public function getTaxonomySize(Mage_Core_Model_Website $website) { - $collection = $this->getTaxonomyMappingCollection(); - #return sizeof($collection); - return $collection->getSize(); } /** @@ -329,7 +327,7 @@ if($this->isProductToBeIncluded()) { return true; } - protected function _writeTaxonomyContents(Mage_Core_Model_Website $website){ + protected function _writeTaxonomyContents($site){ $collection=$this->getTaxonomyMappingCollection(); // get total size @@ -339,72 +337,44 @@ if($this->isProductToBeIncluded()) { $pageNum = 0; $this->log('started writing taxonomy tree'); - if (!$this->_appendTofile($this->isCatalogIncluded()?',':'')) { + if(!$this->_appendTofile(',"'. 'taxonomy' . '":{ "tree":[')) { $this->log("Error while adding tree tag"); return false; } - if(!$this->_appendTofile('"'. 'taxonomy' . '":{')) { - $this->log("Error while adding tree tag"); - return false; - } - if($this->isTaxonomyNodeToBeIncluded()) { - if (!$this->_appendTofile('"tree":[')) { - $this->log("Error while adding tree tag"); - return false; - } - $content = Mage::getSingleton('unbxd_searchcore/feed_jsonbuilder_taxonomybuilder') - ->createTaxonomyFeed($website->getName()); - $status = $this->_appendTofile($content); + $content=Mage::getSingleton('unbxd_searchcore/feed_jsonbuilder_taxonomybuilder') + ->createTaxonomyFeed($site); + $status=$this->_appendTofile($content); - if (!$status) { - $this->log("Error while addings taxonomy"); - return false; - } - - if (!$this->_appendTofile("]")) { - $this->log("Error writing closing tree tag"); - return false; - } + if(!$status){ + $this->log("Error while addings taxonomy"); + return false; } - if($this->isTaxonomyNodeToBeIncluded() && $this->isTaxonomyMappingToBeIncluded()) { - if (!$this->_appendTofile(',')) { - $this->log("Error while adding tree tag"); - return false; - } - } + if(!$this->_appendTofile("]")) { + $this->log("Error writing closing tree tag"); + return false; + } - if($this->isTaxonomyMappingToBeIncluded()) { - if (!$this->_appendTofile('"mapping":[')) { - $this->log("Error writing opening mapping tag"); - return false; - } - $collection=$this->getTaxonomyMappingCollection(); - if(is_null($this->getTaxonomyPage()) || $this->getTaxonomyPage() < 0) { - $collection->load(); - } else { - $collection->load($this->getTaxonomyPage(), $this->getTaxonomyLimit()); - } - $content = Mage::getSingleton('unbxd_searchcore/feed_jsonbuilder_taxonomybuilder')->createMappingFeed($collection); - $status = $this->_appendTofile($content); - - if (!$status) { - $this->log("Error while addings taxonomy"); - return false; - } + if(!$this->_appendTofile(',"mapping":[')) { + $this->log("Error writing opening mapping tag"); + return false; + } - if (!$this->_appendTofile(']')) { - $this->log("Error writing closing mapping tag"); - return false; - } - } - if(!$this->_appendTofile('}')) { - $this->log("Error writing closing mapping tag"); + $content=Mage::getSingleton('unbxd_searchcore/feed_jsonbuilder_taxonomybuilder')->createMappingFeed($collection); + $status=$this->_appendTofile($content); + + if(!$status){ + $this->log("Error while addings taxonomy"); return false; } + + if(!$this->appendTofile(']}')) { + $this->log("Error writing closing mapping tag"); + return false; + } $this->log('Added all categories'); - return true; + return true; } protected function _setCopyFields(Mage_Core_Model_Website $website) { @@ -572,13 +542,7 @@ $this->fields["tsin"]= Mage::getModel('unbxd_searchcore/field')->getField('sku', $this->fields["tsinAssociated"]= Mage::getModel('unbxd_searchcore/field')->getField('sku', "true", "false"); $this->fields["msrp"]= Mage::getModel('unbxd_searchcore/field')->getField('decimal', "true", "false"); $this->fields["sizeAssociated"]= Mage::getModel('unbxd_searchcore/field')->getField('text', "true", "false"); -$this->fields["small_image"]= Mage::getModel('unbxd_searchcore/field')->getField('text', "false", "false"); - //mostviewed - $this->fields["most_viewed"]= Mage::getModel('unbxd_searchcore/field')->getField('number', "false", "false"); - $this->fields["bestsellers"]= Mage::getModel('unbxd_searchcore/field')->getField('number', "false", "false"); - $this->fields["saving"]= Mage::getModel('unbxd_searchcore/field')->getField('decimal', "false", "false"); - $this->fields["psku"]= Mage::getModel('unbxd_searchcore/field')->getField('text', "true", "false"); - $this->fields["imageLink"]= Mage::getModel('unbxd_searchcore/field')->getField('link', "true", "false"); +$this->fields["small_image"]= Mage::getModel('unbxd_searchcore/field')->getField('link', "false", "false"); $this->_setImageConf($website); } @@ -608,7 +572,17 @@ $this->fields["small_image"]= Mage::getModel('unbxd_searchcore/field')->getField } public function getTaxonomyMappingCollection() { - return Mage::getResourceModel('unbxd_searchcore/taxonomy_collection'); + try{ + $adapter = Mage::getSingleton('core/resource')->getConnection('core_read'); + return $adapter->query("select catalog_category_product_index.product_id as entity_id,GROUP_CONCAT(catalog_category_product_index.category_id SEPARATOR ',') as category_id FROM catalog_category_product_index + join catalog_product_entity where catalog_category_product_index.product_id = catalog_product_entity.entity_id + group by catalog_category_product_index.product_id"); + } catch(Exception $e) { + $this->log($e->getMessage()); + } + + } + } ?> diff --git a/app/code/local/Unbxd/Searchcore/Model/Feed/Feedmanager.php b/app/code/local/Unbxd/Searchcore/Model/Feed/Feedmanager.php index 9ab51c4..c459fc2 100755 --- a/app/code/local/Unbxd/Searchcore/Model/Feed/Feedmanager.php +++ b/app/code/local/Unbxd/Searchcore/Model/Feed/Feedmanager.php @@ -208,7 +208,7 @@ class Unbxd_Searchcore_Model_Feed_Feedmanager { } } - public function getProducts(Mage_Core_Model_Website $website, $page = 0, $limit = 500, $taxonomyPageNumber = 0, $taxonomyPageLimit = -1) { + public function getProducts(Mage_Core_Model_Website $website, $page = 0, $limit = 500) { $response = $this->init($website, true); if (is_array($response)) { return $response; @@ -217,21 +217,19 @@ class Unbxd_Searchcore_Model_Feed_Feedmanager { $this->_triggerSearchComplete($website); Mage::getSingleton('unbxd_searchcore/feed_filemanager')->setNoFile(true); - //try { + try { // create the feed $status = Mage::getSingleton('unbxd_searchcore/feed_feedcreator') ->setFullUpload(true) ->setPage($page) - ->setTaxonomyPage($taxonomyPageNumber) - ->setTaxonomyLimit($taxonomyPageLimit) ->setLimit($limit) ->createFeed($this->fileName, $website, $currentDate); $this->log('unbxd Datafeeder finished creating file'); - /*} catch (Exception $e) { + } catch (Exception $e) { $this->log('Caught exception: ' . $e->getMessage()); $status = false; $errorMsg = $e->getMessage(); - } */ + } if($status) { return Mage::getSingleton('unbxd_searchcore/feed_filemanager')->getContent($this->fileName); } else { @@ -250,11 +248,6 @@ class Unbxd_Searchcore_Model_Feed_Feedmanager { } - public function getTaxonomySize(Mage_Core_Model_Website $website) { - return Mage::getSingleton('unbxd_searchcore/feed_feedcreator') - ->getTaxonomySize($website); - } - public function log($message) { Mage::helper('unbxd_searchcore')->log(Zend_Log::DEBUG, $message); } diff --git a/app/code/local/Unbxd/Searchcore/Model/Feed/Jsonbuilder/Productbuilder.php b/app/code/local/Unbxd/Searchcore/Model/Feed/Jsonbuilder/Productbuilder.php old mode 100644 new mode 100755 index d95a06f..4c6422c --- a/app/code/local/Unbxd/Searchcore/Model/Feed/Jsonbuilder/Productbuilder.php +++ b/app/code/local/Unbxd/Searchcore/Model/Feed/Jsonbuilder/Productbuilder.php @@ -56,7 +56,6 @@ class Unbxd_Searchcore_Model_Feed_Jsonbuilder_Productbuilder extends */ public function skipProduct(Mage_Core_Model_Website $website, $product) { $filters = $this->_getFeedHelper()->getFilters($website); - foreach($filters as $key=>$filter) { if($this->_getFeedHelper()->isMultiSelect($key)) { $values = $this->_getMultiSelectAttribute($key, $product); @@ -84,18 +83,6 @@ class Unbxd_Searchcore_Model_Feed_Jsonbuilder_Productbuilder extends } } } - - if($product->getData('type_id') == "simple"){ - /* if($product->getData('psku')){ - return true; - }*/ - $parentIds = Mage::getModel('catalog/product_type_configurable')->getParentIdsByChild($product->getData("entity_id")); - if(sizeof($parentIds) > 0) { - return true; - } - } - - return false; } @@ -140,7 +127,7 @@ class Unbxd_Searchcore_Model_Feed_Jsonbuilder_Productbuilder extends public function getProduct(Mage_Core_Model_Website $website, $product, $fields, $copyFields, $childProduct = false) { $productArray =array(); - + foreach($product->getData('') as $columnHeader=>$columndata){ // if($childProduct){ @@ -158,14 +145,14 @@ class Unbxd_Searchcore_Model_Feed_Jsonbuilder_Productbuilder extends } } - + if(!$childProduct) { // if($this->_getFeedHelper() // ->isConfigTrue($website, Unbxd_Searchcore_Helper_Constants::INCLUDE_CHILD_PRODUCT)) { - - $productArray = $this->addChildrens($website, $product, $fields, $copyFields, $productArray); + + $productArray = $this->addChildrens($website, $product, $fields, $copyFields, $productArray); // } $category = $this->_getCategoryAttribute($product); @@ -179,14 +166,8 @@ class Unbxd_Searchcore_Model_Feed_Jsonbuilder_Productbuilder extends if(!is_null($tsinValue)) { $productArray["tsin"] = $tsinValue; - } - - if(array_key_exists('small_image', $productArray)) { - $productArray["imageLink"]="http://img.tolexokit.com//media/catalog/product" . $productArray["small_image"] . "?resize=1&q=95&w=135&h=135&zc=2"; - - } - - + } + if(array_key_exists('final_price', $fields)) { $productArray['final_price'] = $product->getFinalPrice(); } @@ -197,24 +178,19 @@ class Unbxd_Searchcore_Model_Feed_Jsonbuilder_Productbuilder extends $productArray["final_price"]=$product->getFinalPrice(); $productArray["price"]=$product->getPrice(); $productArray["url_path"]=$product->getProductUrl(); - if ($product->getData('msrp') != 0){ - $productArray["saving"] = (($product->getData('msrp') - $product->getFinalPrice())*100/$product->getData('msrp')); - } + $msrp_value = $product->getData("msrp"); - if($product->getData("visibility") != 4) { - $productArray[Unbxd_Searchcore_Model_Resource_Field::AVAILABILITY] ="false"; - } - if(!is_null($msrp_value)) { + if(!is_null($msrp_value)) { $productArray["msrp"] = $msrp_value; } } else { - // echo $product->getData("tsin"); - if($product->getData("tsin")) { - $productArray["tsinAssociated"]=$product->getData("tsin"); - } + // echo $product->getData("tsin"); + if($product->getData("tsin")) { + $productArray["tsinAssociated"]=$product->getData("tsin"); + } } return $productArray; @@ -338,10 +314,10 @@ class Unbxd_Searchcore_Model_Feed_Jsonbuilder_Productbuilder extends */ public function addChildrens(Mage_Core_Model_Website $website, $product, $fields, $copyFields, $productArray) { - + $type = $product->getData('type_id'); if ($type == "configurable" || $type == "grouped" ) { - + $associatedProducts = array(); $conf = Mage::getModel('catalog/product_type_configurable')->setProduct($product); $childrens = $conf->getUsedProductCollection() @@ -350,20 +326,20 @@ class Unbxd_Searchcore_Model_Feed_Jsonbuilder_Productbuilder extends ->joinField("qtyAssociated", "cataloginventory_stock_item", 'qty', 'product_id=entity_id', null, 'left'); foreach ($childrens as $children) { - $childProduct = $this->getProduct($website, $children, $fields, $copyFields, true); + $childProduct = $this->getProduct($website, $children, $fields, $copyFields, true); if(isset($childProduct) && sizeof($childProduct) > 0 ) { - + $childProduct = $this->postProcessProduct($childProduct, $fields, true); $associatedProducts[] = $childProduct; } } if( sizeof($associatedProducts) > 0) { - + $productArray["associatedProducts"] = $associatedProducts; } return $productArray; } else { - + return $productArray; } } diff --git a/app/code/local/Unbxd/Searchcore/Model/Feed/Jsonbuilder/Taxonomybuilder.php b/app/code/local/Unbxd/Searchcore/Model/Feed/Jsonbuilder/Taxonomybuilder.php index aeeb92e..44cf933 100755 --- a/app/code/local/Unbxd/Searchcore/Model/Feed/Jsonbuilder/Taxonomybuilder.php +++ b/app/code/local/Unbxd/Searchcore/Model/Feed/Jsonbuilder/Taxonomybuilder.php @@ -1,68 +1,65 @@ <?php -class Unbxd_Searchcore_Model_Feed_Jsonbuilder_Taxonomybuilder { - +class Unbxd_Searchcore_Model_Feed_Jsonbuilder_Taxonomybuilder extends Unbxd_Searchcore_Model_Feed_Jsonbuilder_Jsonbuilder { + var $file='unbxdTaxonomy.xml'; - + public function __construct(){ //$this->file = Mage::getBaseDir('tmp').DS.'unbxdTaxonomy.xml'; - } - - /** - * Function to appened the contents to the file - */ - private function appendTofile($content){ - - try{ - - file_put_contents($this->file, $content, FILE_APPEND); - return true; - }catch(Exception $Ex){ - error_log("UNBXD_MODULE:Error while appending the contents to file"); - error_log($Ex->getMessage()); - return false; - } - } - - private function log($message){ - Mage::helper('unbxd_searchcore')->log(Zend_Log::DEBUG, $message); - } - - /** - * Function to delete the file - */ - private function deleteFile(){ - unlink($this->file); - } - - + } + + /** + * Function to appened the contents to the file + */ + private function appendTofile($content){ + + try{ + + file_put_contents($this->file, $content, FILE_APPEND); + return true; + }catch(Exception $Ex){ + error_log("UNBXD_MODULE:Error while appending the contents to file"); + error_log($Ex->getMessage()); + return false; + } + } + + private function log($content){ + try{ + file_put_contents($this->logFile, date('Y-m-d H:i:s').$content."\n", FILE_APPEND); + return true; + }catch(Exception $Ex){ + error_log("UNBXD_MODULE:Error while appending the contents to file"); + Mage::throwException($Ex->getMessage()); + return false; + } + } + + /** + * Function to delete the file + */ + private function deleteFile(){ + unlink($this->file); + } + + private function writeJSONProductsContents($site){ $stores= $this->getStores($site); - $content=''; - $categoryIds = array(); foreach( $stores as $store){ - $categories=$this->getStoreCategories($store); + $categories=$this->getStoreCategories($store); + $content=''; + $count=0; foreach($categories as $category){ - $category_obj = Mage::getModel('catalog/category')->load($category->getId()); - if(!is_null($category_obj) && $category_obj->getName()== "" ){ + if( $category->getName()== "" ){ continue; } - if(!array_key_exists($category->getId(), $categoryIds)) { - $content =$content.$this->getCategoryContent($category_obj); - $categoryIds[] = $category->getId(); - } + $content =$content.$this->getCategoryContent($category); + $category_obj = Mage::getModel('catalog/category')->load($category->getId()); $childrens = $category_obj->getAllChildren(true); - $childrenCategories = Mage::getResourceSingleton('catalog/category_collection') - ->addIdFilter($childrens) - ->addAttributeToSelect('*') - ->load(); - + $childrenCategories = Mage::getModel('catalog/category')->getCollection()->addIdFilter($childrens)->addAttributeToSelect('*')->load(); + foreach($childrenCategories as $childCategory){ - $childCategory = Mage::getModel('catalog/category')->load($childCategory->getId()); - if(!array_key_exists($childCategory->getId(), $categoryIds)) { - $content=$content.$this->getCategoryContent($childCategory); - $categoryIds[] = $childCategory->getId(); - } + $content=$content.$this->getCategoryContent($childCategory); } } } @@ -71,118 +68,142 @@ class Unbxd_Searchcore_Model_Feed_Jsonbuilder_Taxonomybuilder { private function getCategoryContent($category){ $content=array(); - $content["nodeName"]= $category->getName(); - $content["parentNodeId"] = array((string)$category->getParentId()); - $content["nodeId"] =(string)$category->getId(); - return json_encode($content).','; + $content["nodeName"]= $category->getName(); + $content["parentNodeId"] = array((string)$category->getParentId()); + $content["nodeId"] =(string)$category->getId(); + return json_encode($content).','; } - + + + + private function getAllCategories($site){ + $collection = Mage::getModel('catalog/category')->getCollection() + ->setStoreId($this->getStores($site)) + ->addAttributeToSelect('name') + ->addAttributeToSelect('id'); + + return $collection->load(); + + } + private function getStores($site){ - $sites=Mage::app()->getWebsites(); - foreach( $sites as $eachSite){ - if(strcasecmp ( $eachSite->getName(), $site ) == 0 ){ - return $eachSite->getStores(); - } - } + $sites=Mage::app()->getWebsites(); + foreach( $sites as $eachSite){ + if(strcasecmp ( $eachSite->getName(), $site ) == 0 ){ + return $eachSite->getStores(); + } + } } + + + + private function getAttributesInJSON($columnHeader,$columndata){ + + return '"'.$columnHeader.'"'.':'.'"'.$content.'"'; + } + + private function _escapeXMLHeader($columnHeader){ + + return str_replace(' ','_',$columnHeader); + } + + + + public function createTaxonomyFeed($site){ - public function createTaxonomyFeed($site){ - - $content=$this->writeJSONProductsContents($site); - - if(!$content){ - return false; - } - $this->log('writing content'); - - return rtrim($content, ",");; - } + $content=$this->writeJSONProductsContents($site); + + if(!$content){ + return false; + } + $this->log('writing content'); - public function createMappingFeed($collection){ + return rtrim($content, ",");; + } - $content=$this->writeJSONMappingContents($collection); + public function createMappingFeed($collection){ - if(!$content){ + $content=$this->writeJSONMappingContents($collection); + + if(!$content){ - return false; - } + return false; + } - $this->log('writing content'); + $this->log('writing content'); - return rtrim($content, ","); + return rtrim($content, ","); - } + } - private function writeJSONMappingContents($collection) - { - $content=''; - foreach($collection as $mapping) { + private function writeJSONMappingContents($collection) + { + $content=''; + foreach($collection as $mapping) { - $content =$content.$this->getMappingContent( $mapping); - } - return $content; + $content =$content.$this->getMappingContent( $mapping); + } + return $content; - } + } - private function getMappingContent($mapping){ + private function getMappingContent($mapping){ $content=array(); - $content["uniqueId"]= (string)$mapping['entity_id']; - $content["nodeId"] = explode(",", $mapping['category_id']); - return json_encode($content).','; - } - - public function validateSite($site){ - $sites=Mage::app()->getWebsites(); - if( !isset($site) || $site == "") { - return false; - } - foreach( $sites as $eachSite){ - if(strcasecmp ( $eachSite->getName(), $site ) == 0 ){ - return $eachSite->getWebsiteId(); - } - } - return -1; + $content["uniqueId"]= (string)$mapping['entity_id']; + $content["nodeId"] = explode(",", $mapping['category_id']); + return json_encode($content).','; } - - public function getStoreCategories($store, $sorted=false, $asCollection=false, $toLoad=true) - { - $parent = $store->getRootCategoryId(); - - /** - * Check if parent node of the store still exists - */ - $category = Mage::getModel('catalog/category'); - /* @var $category Mage_Catalog_Model_Category */ - if (!$category->checkId($parent)) { - if ($asCollection) { - return new Varien_Data_Collection(); - } - return array(); - } - - $recursionLevel = max(0, (int) Mage::app()->getStore()->getConfig('catalog/navigation/max_depth')); + + public function validateSite($site){ + $sites=Mage::app()->getWebsites(); + if( !isset($site) || $site == "") { + return false; + } + foreach( $sites as $eachSite){ + if(strcasecmp ( $eachSite->getName(), $site ) == 0 ){ + return $eachSite->getWebsiteId(); + } + } + return -1; + } + + public function getStoreCategories($store, $sorted=false, $asCollection=false, $toLoad=true) + { + $parent = $store->getRootCategoryId(); + + /** + * Check if parent node of the store still exists + */ + $category = Mage::getModel('catalog/category'); + /* @var $category Mage_Catalog_Model_Category */ + if (!$category->checkId($parent)) { + if ($asCollection) { + return new Varien_Data_Collection(); + } + return array(); + } + + $recursionLevel = max(0, (int) Mage::app()->getStore()->getConfig('catalog/navigation/max_depth')); $tree = Mage::getResourceModel('catalog/category_tree'); - /* @var $tree Mage_Catalog_Model_Resource_Category_Tree */ - $nodes = $tree->loadNode($parent) - ->loadChildren($recursionLevel) - ->getChildren(); - //added to fetch non flat data all the time - $emptyResourceModel = Mage::getResourceSingleton('catalog/category_collection'); - $tree->addCollectionData($emptyResourceModel, $sorted, $parent, $toLoad, false); - if ($asCollection) { - return $tree->getCollection(); - } - return $nodes; - } - - - + /* @var $tree Mage_Catalog_Model_Resource_Category_Tree */ + $nodes = $tree->loadNode($parent) + ->loadChildren($recursionLevel) + ->getChildren(); + + $tree->addCollectionData(null, $sorted, $parent, $toLoad, false); + if ($asCollection) { + return $tree->getCollection(); + } + return $nodes; + } + + + public function updateAction($action,$value){ - Mage::getResourceSingleton("datafeeder/conf")->updateAction($action, $value); - } + Mage::getResourceSingleton("datafeeder/conf")->updateAction($action, $value); + } } ?> - diff --git a/app/code/local/Unbxd/Searchcore/Model/Resource/Product/Collection.php b/app/code/local/Unbxd/Searchcore/Model/Resource/Product/Collection.php index 1faba41..82b997b 100755 --- a/app/code/local/Unbxd/Searchcore/Model/Resource/Product/Collection.php +++ b/app/code/local/Unbxd/Searchcore/Model/Resource/Product/Collection.php @@ -81,29 +81,25 @@ class Unbxd_Searchcore_Model_Resource_Product_Collection extends { $adapter = Mage::getSingleton("core/resource"); $visiblityCondition = array('in' => array(2,3,4)); - $storeId = $website->getDefaultStore()->getId(); $_catalogInventoryTable = method_exists($adapter, 'getTableName') ? $adapter->getTableName('cataloginventory_stock_item') : 'catalog_category_product_index'; - $adapter = $this->getConnection(); $this ->addWebsiteFilter($website->getWebsiteId()) ->joinField("qty", $_catalogInventoryTable, 'qty', 'product_id=entity_id', null, 'left') - ->joinField("bestsellers", $this->getTable('amsorting/bestsellers'),"bestsellers", - 'id=entity_id'/* AND mostviewed.store_id=?',$storeId */ - , null, 'left') - -> joinField('most_viewed', $this->getTable('amsorting/most_viewed'), "most_viewed", 'id=entity_id'/* AND store_id=' . $storeId*/, null, 'left') ->addAttributeToSelect('*') - //->addAttributeToFilter('status',1) + ->addAttributeToFilter('status',1) + ->addAttributeToFilter('visibility',4) ->addCategoryIds() + ->addAttributeToFilter('visibility',$visiblityCondition) ->addPriceData(Mage_Customer_Model_Group::NOT_LOGGED_IN_ID, $website->getWebsiteId()); - /*if (!Mage::helper('unbxd_searchcore') + if (!Mage::helper('unbxd_searchcore') ->isConfigTrue($website, Unbxd_Searchcore_Helper_Constants::INCLUDE_OUT_OF_STOCK)) { Mage::getSingleton('cataloginventory/stock')->addInStockFilterToCollection($this); - }*/ + } - //Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($this); + Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($this); #Mage::getSingleton('catalog/product_visibility')->addVisibleInSiteFilterToCollection($this); return $this; } diff --git a/app/code/local/Unbxd/Searchcore/Model/Resource/Taxonomy/Collection.php b/app/code/local/Unbxd/Searchcore/Model/Resource/Taxonomy/Collection.php deleted file mode 100755 index e8d8e13..0000000 --- a/app/code/local/Unbxd/Searchcore/Model/Resource/Taxonomy/Collection.php +++ /dev/null @@ -1,97 +0,0 @@ -<?php -/** - * Custom catalog product collection model. - * - * @package Unbxd_Search - * @subpackage Unbxd_Search_Model - * @author Antz - */ -class Unbxd_Searchcore_Model_Resource_Taxonomy_Collection extends Mage_Catalog_Model_Resource_Category_Collection -{ - var $rows = array("entity_id","category_id"); - public function getData($select=null) - { - if ($this->_data === null) { - $this->_renderFilters() - ->_renderOrders() - ->_renderLimit(); - if(!is_null($select)){ - $this->_select = $select; - } - $this->_data = $this->_fetchAll($this->_select); - $this->_afterLoadData(); - } - return $this->_data; - } - - public function getTaxonomyQuery($start, $limit) { - return "select catalog_category_product_index.product_id as entity_id,GROUP_CONCAT(catalog_category_product_index.category_id SEPARATOR ',') as category_id FROM catalog_category_product_index - join catalog_product_entity on catalog_category_product_index.product_id = catalog_product_entity.entity_id - group by catalog_category_product_index.product_id ". ((!is_null($limit))?(" LIMIT ".$limit):"")." OFFSET " .$start ; - } - - public function load($start = 0, $limit = null,$select=null, $printQuery = false, $logQuery = false){ - if ($this->isLoaded()) { - return $this; - } - $this->_idFieldName = "entity_id"; - if($select == null) { - $select = $this->getTaxonomyQuery($start, $limit); - } - $this->_beforeLoad(); - - /* $this->_renderFilters() - ->_renderOrders() - ->_renderLimit();*/ - - $this->printLogQuery($printQuery, $logQuery); - - $data = $this->getData($select); - $this->resetData(); - - if (is_array($data)) { - foreach ($data as $row) { - $item = $this->getNewEmptyItem(); - $item->setIdFieldName("entity_id"); - $item->addData($row); - $this->addItem($item); - } - } - - $this->_setIsLoaded(); - $this->_afterLoad(); - return $this; - } - - /** - * Get SQL for get record count - * - * @return Varien_Db_Select - */ - public function getSelectCountSql() - { - return "select count(distinct catalog_category_product_index.product_id) FROM catalog_category_product_index - join catalog_product_entity on catalog_category_product_index.product_id = catalog_product_entity.entity_id"; - } - - /** - * Adding item to item array - * - * @param Varien_Object $item - * @return Varien_Data_Collection - */ - public function addItem(Varien_Object $item) - { - $itemId = $this->_getItemId($item); - - if (!is_null($itemId)) { - if (isset($this->_items[$itemId])) { - throw new Exception('Item ('.get_class($item).') with the same id "'.$item->getId().'" already exist'); - } - $this->_items[$itemId] = $item; - } else { - $this->_addItem($item); - } - return $this; - } -} diff --git a/app/code/local/Unbxd/Searchcore/controllers/CatalogController.php b/app/code/local/Unbxd/Searchcore/controllers/CatalogController.php index 17dbdfc..6e2b662 100755 --- a/app/code/local/Unbxd/Searchcore/controllers/CatalogController.php +++ b/app/code/local/Unbxd/Searchcore/controllers/CatalogController.php @@ -95,15 +95,13 @@ class Unbxd_Searchcore_CatalogController extends Mage_Core_Controller_Front_Acti set_time_limit(0); $page = $this->getRequest()->getParam('start', 0); $limit = $this->getRequest()->getParam('limit', 500); - $taxonomyStart =$this->getRequest()->getParam('tax-start', 0); - $taxonomyLimit = $this->getRequest()->getParam('tax-limit', -1); $isFullUpload = true; $feedMgr = Mage::getSingleton('unbxd_searchcore/feed_feedmanager'); if(array_key_exists('incremental', $_REQUEST)) { $isFullUpload = false; } - $response = $feedMgr->getProducts($website, $page, $limit, $taxonomyStart, $taxonomyLimit); + $response = $feedMgr->getProducts($website, $page, $limit); $this->getResponse()->setBody($response); return; } @@ -116,12 +114,7 @@ class Unbxd_Searchcore_CatalogController extends Mage_Core_Controller_Front_Acti } $feedMgr = Mage::getSingleton('unbxd_searchcore/feed_feedmanager'); $size = $feedMgr->getSize($website); - $responseArray = array('size'=> $size); - if(array_key_exists("taxonomy", $_GET) && $_GET["taxonomy"] == true) { - $taxonomySize = $feedMgr->getTaxonomySize($website); - $responseArray["taxonomySize"] = $taxonomySize; - } - $response = json_encode($responseArray); + $response = json_encode(array('size'=> $size)); $this->getResponse()->setBody($response); return; } diff --git a/app/code/local/nodeapp/home.php b/app/code/local/nodeapp/home.php index 091a1ef..cc298d4 100644 --- a/app/code/local/nodeapp/home.php +++ b/app/code/local/nodeapp/home.php @@ -1,10 +1,9 @@ <?php -//In case you want to serve everything from magento, make this flag false +//In case you want to serve everything from magento make this flag false $dowithNode = true; //$dowithNode = false; -//In case you want to serve only the product pages from Magento, make this flag false $doProductWithNode = true; //$doProductWithNode = false; diff --git a/app/design/adminhtml/default/default/layout/categoryreorder.xml b/app/design/adminhtml/default/default/layout/categoryreorder.xml deleted file mode 100644 index a0d8aa5..0000000 --- a/app/design/adminhtml/default/default/layout/categoryreorder.xml +++ /dev/null @@ -1,33 +0,0 @@ -<?xml version="1.0"?> -<layout version="0.1.0"> - <categoryreorder_index_categoryl1> - <reference name="head"> - <action method = "addJs"> - <script>categoryreorder/js/catreorder-common.js</script> - </action> - </reference> - <reference name="content"> - <block type="categoryreorder/categoryblock" name="categoryblock" template="categoryreorder/categoryL1.phtml" /> - </reference> - </categoryreorder_index_categoryl1> - <categoryreorder_index_categoryl2> - <reference name="head"> - <action method = "addJs"> - <script>categoryreorder/js/catreorder-common.js</script> - </action> - </reference> - <reference name="content"> - <block type="categoryreorder/categoryblock" name="categoryblock" template="categoryreorder/categoryL2.phtml" /> - </reference> - </categoryreorder_index_categoryl2> - <categoryreorder_index_categoryl3> - <reference name="head"> - <action method = "addJs"> - <script>categoryreorder/js/catreorder-common.js</script> - </action> - </reference> - <reference name="content"> - <block type="categoryreorder/categoryblock" name="categoryblock" template="categoryreorder/categoryL3.phtml" /> - </reference> - </categoryreorder_index_categoryl3> -</layout> diff --git a/app/design/adminhtml/default/default/layout/main.xml b/app/design/adminhtml/default/default/layout/main.xml index 1689181..5b4f9f0 100644 --- a/app/design/adminhtml/default/default/layout/main.xml +++ b/app/design/adminhtml/default/default/layout/main.xml @@ -55,8 +55,6 @@ Default layout, loads most of the pages <block type="adminhtml/page" name="root" output="toHtml" template="page.phtml"> <block type="adminhtml/page_head" name="head" as="head" template="page/head.phtml"> <action method="setTitle" translate="title"><title>Magento Admin</title></action> - <action method="addJs"><script>smartwave/jquery/jquery-1.10.2.min.js</script></action> - <action method="addJs"><script>smartwave/jquery/jquery-ui-1.11.4.min.js</script></action> <action method="addJs"><script>prototype/prototype.js</script></action> <action method="addItem"><type>js</type><name>extjs/fix-defer-before.js</name><params/><if/><condition>can_load_ext_js</condition></action> <action method="addJs"><script>prototype/window.js</script></action> @@ -80,9 +78,7 @@ Default layout, loads most of the pages <action method="addJs"><script>mage/adminhtml/tools.js</script></action> <action method="addJs"><script>mage/adminhtml/uploader.js</script></action> <action method="addJs"><script>mage/adminhtml/product.js</script></action> - <action method="addCss"> - <stylesheet>../../../../js/categoryreorder/css/style.css</stylesheet> - </action> + <action method="addCss"><name>reset.css</name></action> <action method="addCss"><name>boxes.css</name></action> <action method="addCss"><name>custom.css</name></action> diff --git a/app/design/adminhtml/default/default/template/categoryreorder/categoryL1.phtml b/app/design/adminhtml/default/default/template/categoryreorder/categoryL1.phtml deleted file mode 100644 index 8f8e361..0000000 --- a/app/design/adminhtml/default/default/template/categoryreorder/categoryL1.phtml +++ /dev/null @@ -1,46 +0,0 @@ -<div class="catgry-heading">Re-order L1 Category</div> - -<?php -if(!empty($updatedFlag)) { - if($updatedFlag == 1) { - $divid = 'update_msg_success'; - $updateMsg = "SUCCESSFULLY UPDATED!!!!!!!"; - } else { - $divid = 'update_msg_error'; - $updateMsg = "UPDATION FAILED!!!!!!!"."<br/>".$updatedFlag; - } - ?> - <div id="<?php echo $divid ?>"> - <?php echo $updateMsg; ?> - </div> -<?php -} - -$model_category = Mage::getModel('catalog/category') - ->getCollection() - ->addAttributeToSelect('*') - ->addAttributeToFilter('is_active',array('eq' => 1)) - ->addAttributeToFilter('level',array('eq' => 2)) - ->addOrderField('position'); -?> - -<form id='category_list' action='#' method='POST'> -<input type="hidden" name="form_key" value="<?php echo Mage::getSingleton('core/session')->getFormKey(); ?>" /> -<lable class="blnk-spc"></lable> -<ul id="sortable"> -<?php -foreach ($model_category as $category) { - if($category->getName() != "View All Categories" && $category->getName() != "Root Catalog") { -?> -<li id = "<?php echo $category->getEntityId(); ?>" class="ui-state-default"><?php echo $category->getName(); ?></li> -<?php - } -} -?> - -</ul> -<div class="update-btn"> - <a href="javascript:void(0)" onclick="prepareCatArr();" >Update</a> -</div> -<input type="hidden" id='update_catlist' name='update_catlist' /> -</form> diff --git a/app/design/adminhtml/default/default/template/categoryreorder/categoryL2.phtml b/app/design/adminhtml/default/default/template/categoryreorder/categoryL2.phtml deleted file mode 100644 index 0de2028..0000000 --- a/app/design/adminhtml/default/default/template/categoryreorder/categoryL2.phtml +++ /dev/null @@ -1,92 +0,0 @@ -<script> -jQuery(function() { - jQuery("#l1catlist").change(function () { - if(jQuery('#l1catlist').val != '') { - jQuery('#category_listl1').submit(); - } - }); -}); -</script> - -<div class="catgry-heading">Re-order L2 Category</div> - -<?php -if(!empty($updatedFlag)) { - if($updatedFlag == 1) { - $divid = 'update_msg_success'; - $updateMsg = "SUCCESSFULLY UPDATED!!!!!!!"; - } else { - $divid = 'update_msg_error'; - $updateMsg = "UPDATION FAILED!!!!!!!"."<br/>".$updatedFlag; - } - ?> - <div id="<?php echo $divid ?>"> - <?php echo $updateMsg; ?> - </div> -<?php -} - -$model_category = Mage::getModel('catalog/category') - ->getCollection() - ->addAttributeToSelect('*') - ->addAttributeToFilter('is_active',array('eq' => 1)) - ->addAttributeToFilter('level',array('eq' => 2)) - ->addOrderField('position'); -?> -<form id='category_listl1' action='#' method='POST'> - <input type="hidden" name="form_key" value="<?php echo Mage::getSingleton('core/session')->getFormKey(); ?>" /> - <lable>Category L1</lable> - <select id='l1catlist' name='l1catlist'> - <option value=''>---Select L1 Category---</option> - <?php - foreach ($model_category as $category) { - if($category->getName() != "View All Categories" && $category->getName() != "Root Catalog") { - $entityId = $category->getEntityId(); - $entityName = $category->getName(); - - - ?> - <option value="<?php echo $entityId; ?>" <?php echo (!empty($parentId) && ($parentId == $entityId)) ? 'selected' : '' ;?> ><?php echo $entityName; ?></option> - <?php - } - } - ?> - </select> -</form> -<?php if(!empty($parentId)) { ?> - <div id='l2catlist'> - - <?php - $model_category = Mage::getModel('catalog/category') - ->getCollection() - ->addAttributeToSelect('*') - ->addAttributeToFilter('is_active',array('eq' => 1)) - ->addAttributeToFilter('level',array('eq' => 3)) - ->addAttributeToFilter('parent_id',array('eq' => $parentId)) - ->addOrderField('position'); - ?> - <form id='category_list' action='#' method='POST'> - <input type="hidden" name="form_key" value="<?php echo Mage::getSingleton('core/session')->getFormKey(); ?>" /> - <lable class="blnk-spc"></lable> - <ul id="sortable"> - <?php - foreach ($model_category as $category) { - ?> - <li id = "<?php echo $category->getEntityId(); ?>" class="ui-state-default"><?php echo $category->getName(); ?></li> - <?php - } - ?> - - </ul> - <div class="update-btn"> - <a href="javascript:void(0)" onclick="prepareCatArr();">Update</a> - </div> - <input type="hidden" id='update_catlist' name='update_catlist' /> - <input type="hidden" id='parentCatId' name='parentCatId' value="<?php echo $parentId ?>" /> - </form> - - </div> -<?php -} -?> - diff --git a/app/design/adminhtml/default/default/template/categoryreorder/categoryL3.phtml b/app/design/adminhtml/default/default/template/categoryreorder/categoryL3.phtml deleted file mode 100644 index f2c40dd..0000000 --- a/app/design/adminhtml/default/default/template/categoryreorder/categoryL3.phtml +++ /dev/null @@ -1,148 +0,0 @@ -<script> -jQuery(function() { - jQuery("#l1catlist").change(function () { - if(jQuery('#l1catlist').val != '') { - jQuery('#category_listl1').submit(); - } - }); - jQuery("#l2catlist").change(function () { - if(jQuery('#l2catlist').val != '') { - jQuery('#category_listl2').submit(); - } - }); -}); - -</script> - -<div class="catgry-heading">Re-order L3 Category</div> - -<?php -if(!empty($updatedFlag)) { - if($updatedFlag == 1) { - $divid = 'update_msg_success'; - $updateMsg = "SUCCESSFULLY UPDATED!!!!!!!"; - } else { - $divid = 'update_msg_error'; - $updateMsg = "UPDATION FAILED!!!!!!!"."<br/>".$updatedFlag; - } - ?> - <div id="<?php echo $divid ?>"> - <?php echo $updateMsg; ?> - </div> -<?php -} - -$model_category = Mage::getModel('catalog/category') - ->getCollection() - ->addAttributeToSelect('*') - ->addAttributeToFilter('is_active',array('eq' => 1)) - ->addAttributeToFilter('level',array('eq' => 2)) - ->addOrderField('position'); -?> - -<div id='l1catlist' class="categary-list"> - <form id='category_listl1' action='#' method='POST'> - <input type="hidden" name="form_key" value="<?php echo Mage::getSingleton('core/session')->getFormKey(); ?>" /> - <lable>Category L1</lable> - <select id='l1catlist' name='l1catlist'> - <option value=''>---Select L1 Category---</option> - <?php - foreach ($model_category as $category) { - if($category->getName() != "View All Categories" && $category->getName() != "Root Catalog") { - $entityId = $category->getEntityId(); - $entityName = $category->getName(); - - - ?> - <option value="<?php echo $entityId; ?>" <?php echo (!empty($parentIdl2) && ($parentIdl2 == $entityId)) ? 'selected' : '' ;?> ><?php echo $entityName; ?></option> - <?php - } - } - ?> - </select> - </form> -</div> -<?php - if(!empty($parentIdl2)) { ?> - <div id='l2catlist'> - - <?php - $model_category = Mage::getModel('catalog/category') - ->getCollection() - ->addAttributeToSelect('*') - ->addAttributeToFilter('is_active',array('eq' => 1)) - ->addAttributeToFilter('level',array('eq' => 3)) - ->addAttributeToFilter('parent_id',array('eq' => $parentIdl2)) - ->addOrderField('position'); - ?> - <form id='category_listl2' action='#' method='POST'> - <input type="hidden" name="form_key" value="<?php echo Mage::getSingleton('core/session')->getFormKey(); ?>" /> - <lable>Category L2</lable> - <select id='l2catlist' name='l2catlist'> - <option value=''>---Select L2 Category---</option> - <?php - foreach ($model_category as $category) { - if($category->getName() != "View All Categories" && $category->getName() != "Root Catalog") { - $entityId = $category->getEntityId(); - $entityName = $category->getName(); - ?> - <option value="<?php echo $entityId; ?>" <?php echo (!empty($parentIdl3) && ($parentIdl3 == $entityId)) ? 'selected' : '' ;?> ><?php echo $entityName; ?></option> - <?php - } - } - ?> - </select> - <input type="hidden" id='parentCatIdl2' name='parentCatIdl2' value="<?php echo $parentIdl2 ?>" /> - </form> - </div> -<?php - } -?> -<?php if(!empty($parentIdl3)) { ?> - <div id='l3catlist'> - - <?php - $model_category = Mage::getModel('catalog/category') - ->getCollection() - ->addAttributeToSelect('*') - ->addAttributeToFilter('is_active',array('eq' => 1)) - ->addAttributeToFilter('level',array('eq' => 4)) - ->addAttributeToFilter('parent_id',array('eq' => $parentIdl3)) - ->addOrderField('position'); - ?> - <form id='category_list' action='#' method='POST'> - <input type="hidden" name="form_key" value="<?php echo Mage::getSingleton('core/session')->getFormKey(); ?>" /> - <lable class="blnk-spc"></lable> - <ul id="sortable"> - <?php - $count = 0; - foreach ($model_category as $category) { - ?> - <li id = "<?php echo $category->getEntityId(); ?>" class="ui-state-default"><?php echo $category->getName(); ?></li> - <?php - $count++; - } - ?> - </ul> - <?php - if($count > 0) { - ?> - <div class="update-btn"> - <a href="javascript:void(0)" onclick="prepareCatArr();">Update</a> - </div> - <input type="hidden" id='update_catlist' name='update_catlist' /> - <input type="hidden" id='parentCatIdl2' name='parentCatIdl2' value="<?php echo $parentIdl2 ?>" /> - <input type="hidden" id='parentCatIdl3' name='parentCatIdl3' value="<?php echo $parentIdl3 ?>" /> - <?php - } else { ?> - <p><?php echo "No records found";?></p> - <?php - } - ?> - - </form> - </div> -<?php -} -?> - diff --git a/app/design/adminhtml/default/default/template/sales/items/column/name.phtml b/app/design/adminhtml/default/default/template/sales/items/column/name.phtml index ce7ac31..61bb88b 100644 --- a/app/design/adminhtml/default/default/template/sales/items/column/name.phtml +++ b/app/design/adminhtml/default/default/template/sales/items/column/name.phtml @@ -34,8 +34,7 @@ <h5 class="title"><span id="order_item_<?php echo $_item->getId() ?>_title"><?php echo $this->escapeHtml($_item->getName()) ?></span></h5> <div><strong><?php echo $this->helper('sales')->__('SKU') ?>:</strong> <?php echo implode('<br />', Mage::helper('catalog')->splitSku($this->escapeHtml($this->getSku()))).'<br/>'; ?> <?php -//$prdt= Mage::getModel('catalog/product')->loadByAttribute('sku',$this->getSku()); -$prdt= Mage::getModel('catalog/product')->load($_item->getProductId()); +$prdt= Mage::getModel('catalog/product')->loadByAttribute('sku',$this->getSku()); $delivery_details = $prdt->getDeliveryDetails(); $ds= Mage::getModel('catalog/product')->getResource()->getAttribute("delivery_details"); $basePrice = $_item->getTolexoBasePrice(); diff --git a/app/design/adminhtml/default/default/template/sales/order/view/info.phtml b/app/design/adminhtml/default/default/template/sales/order/view/info.phtml index 2040ddb..e53af3d 100644 --- a/app/design/adminhtml/default/default/template/sales/order/view/info.phtml +++ b/app/design/adminhtml/default/default/template/sales/order/view/info.phtml @@ -65,10 +65,6 @@ $orderStoreDate = $this->formatDate($_order->getCreatedAtStoreDate(), 'medium', <td class="label"><label><?php echo Mage::helper('sales')->__('Purchased From') ?></label></td> <td class="value"><strong><?php echo $this->getOrderStoreName() ?></strong></td> </tr> - <tr> - <td class="label"><label><?php echo Mage::helper('sales')->__('Order Tags') ?></label></td> - <td class="value"><strong><?php echo $this->getOrderTags() ?></strong></td> - </tr> <?php if($_order->getRelationChildId()): ?> <tr> <td class="label"><label><?php echo Mage::helper('sales')->__('Link to the New Order') ?></label></td> diff --git a/app/design/adminhtml/default/mageworks/template/export/export.phtml b/app/design/adminhtml/default/mageworks/template/export/export.phtml index db37244..a518b6f 100644 --- a/app/design/adminhtml/default/mageworks/template/export/export.phtml +++ b/app/design/adminhtml/default/mageworks/template/export/export.phtml @@ -21,7 +21,11 @@ $downLoadCommentCsv = $parts[0] . '/' . $parts[1] . '/' . $parts[2] .'/download. $downLoadFullCancel = $parts[0] . '/' . $parts[1] . '/' . $parts[2] .'/download.php?q=sampleFullCancel'; $cancelPartialOrderurl = $parts[0] . '/' . $parts[1] . '/' . $parts[2] .'/cancelPartialOrder.php'; $downLoadPartialCancel = $parts[0] . '/' . $parts[1] . '/' . $parts[2] .'/download.php?q=samplePartialCancel'; - +//$key1 = 'http://localhost/magento/miniOrderReport.php'; +//$reorderurl = 'http://localhost/magento/creatOrder.php'; +//$cancelFullOrderurl = 'http://localhost/magento/cancelBulkOrder.php'; +//$bulkCommentOrderurl = 'http://localhost/magento/bulkOrderComment.php'; +//$partialReorderurl = 'http://localhost/magento/createPartialOrder.php'; ?> <script type="text/javascript"> // jQuery.noConflict(); @@ -161,6 +165,7 @@ function Test1() <button name="submit" onclick="Test()" value="submit" class="scalable add"> Export Orders </button> + <!-- <input type="button" name="submit" onclick="Test()" value="submit" class="scalable add">--> <a href='<?php echo $down?>' style="visibility:hidden;" id="abc">Download</a> </li> <li><p style="margin-top: 5px;">Click <a href="<?php echo $down2?>">here</a> to download last one month report directly.</p></li> @@ -215,6 +220,7 @@ function Test1() <input type="hidden" name="MAX_FILE_SIZE" value="30000" /> <input type="file" name="fileToUpload" id="fileToUpload" /> <input type="submit" value="Upload & Reorder" /> + <!--<button name="uploadReorderCSV" id="uploadReorderCSV" value="" class="scalable add">Upload & Reorder</button>--> </form> </li><br/> <span>4.3 <?php echo $this->__('Upload & Partial Reorder In Case Of Vendor Change'); ?></span> @@ -223,28 +229,9 @@ function Test1() <input type="hidden" name="MAX_FILE_SIZE" value="30000" /> <input type="file" name="fileToUploadPartial" id="fileToUploadPartial" /> <input type="submit" value="Upload & Partial Reorder" /> + <!--<button name="uploadReorderCSV" id="uploadReorderCSV" value="" class="scalable add">Upload & Reorder</button>--> </form> </li><br/> - - <span>4.4 <?php echo $this->__('Upload & Reorder In Case Of Multi Vendor Change'); ?></span> - <li> - <form method="post" id="uploadFormMultiSeller" action="<?php echo $reorderurl;?>" enctype="multipart/form-data"> - <input type="hidden" name="MAX_FILE_SIZE" value="30000" /> - <input type="hidden" name="multi_seller" value="1" /> - <input type="file" name="fileToUpload" id="fileToUpload" /> - <input type="submit" value="Upload & Reorder" /> - </form> - </li><br/> - <span>4.5 <?php echo $this->__('Upload & Partial Reorder In Case Of Multi Vendor Change'); ?></span> - <li> - <form method="post" id="uploadFormPartialMultiSeller" action="<?php echo $partialReorderurl;?>" enctype="multipart/form-data"> - <input type="hidden" name="MAX_FILE_SIZE" value="30000" /> - <input type="hidden" name="multi_seller" value="1" /> - <input type="file" name="fileToUploadPartial" id="fileToUploadPartial" /> - <input type="submit" value="Upload & Partial Reorder" /> - </form> - </li><br/> - <li> <b>Steps and checks for order update:</b><br> diff --git a/app/design/frontend/base/default/template/catalog/msrp/popup.phtml b/app/design/frontend/base/default/template/catalog/msrp/popup.phtml index 8cd7a52..e09fffe 100644 --- a/app/design/frontend/base/default/template/catalog/msrp/popup.phtml +++ b/app/design/frontend/base/default/template/catalog/msrp/popup.phtml @@ -49,10 +49,7 @@ <div class="map-popup-price" id="map-popup-price-box"><strong><?php echo $this->__('Actual Price'); ?>:</strong> <span id="map-popup-price"></span></div> <script type="text/javascript"> //<![CDATA[ - if(typeof(Catalog) != "undefined" && Catalog !== null) { - document.observe("dom:loaded", Catalog.Map.bindProductForm); - } - + document.observe("dom:loaded", Catalog.Map.bindProductForm); //]]> </script> </div> diff --git a/app/design/frontend/base/default/template/checkout/cart/coupon.phtml b/app/design/frontend/base/default/template/checkout/cart/coupon.phtml index a3be465..12399ee 100644 --- a/app/design/frontend/base/default/template/checkout/cart/coupon.phtml +++ b/app/design/frontend/base/default/template/checkout/cart/coupon.phtml @@ -26,27 +26,8 @@ ?> <form id="discount-coupon-form" action="<?php echo $this->getUrl('checkout/cart/couponPost') ?>" method="post"> <div class="discount"> - <!-- <h2><?php echo $this->__('Coupon Code') ?></h2> --> - - - <input type="hidden" name="remove" id="remove-coupone" value="0" /> - <div class="input-box"> - <span class="feature-icn"></span> - <input class="input-text place-icn common-sprite" id="coupon_code" name="coupon_code" value="<?php echo $this->escapeHtml($this->getCouponCode()) ?>" placeholder="Apply Discount coupon" /> - <div class="buttons-set"> - <button type="button" title="<?php echo $this->__('Apply Coupon') ?>" class="button" onclick="discountForm.submit(false)" value="<?php echo $this->__('Apply Coupon') ?>"><span><span><?php echo $this->__('Apply') ?></span></span></button> - - </div> - <?php if(strlen($this->getCouponCode())): ?> - <button type="button" title="<?php echo $this->__('Remove Coupon') ?>" class="button rmv-cupn" onclick="discountForm.submit(true)" value="<?php echo $this->__('Remove Coupon') ?>"><span><span><?php echo $this->__('Remove Coupon') ?></span></span></button> - <?php endif;?> - </div> - <!-- <div class="rmv-cupn"><a href="javascript:void(0);">Remove Coupon</a></div> --> - - <!-- <label for="coupon_code"><?php echo $this->__('Enter your coupon code here') ?></label> --> - <!-- <div class="login-msg">*Applicable only for logged-in users. <a href="<?php echo $this->getUrl('customer/account/login'); ?>">Login here</a></div> --> - - <!-- <div class="discount-form" style="display:block"> + <h2><?php echo $this->__('Coupon Code') ?></h2> + <div class="discount-form" style="display:block"> <label for="coupon_code"><?php echo $this->__('Enter your coupon code here') ?></label> <span style="margin-top: 5px;display: inline-block;font-size: 12px;">(Applicable only for logged-in users)</span> <input type="hidden" name="remove" id="remove-coupone" value="0" /> @@ -59,9 +40,7 @@ <button type="button" title="<?php echo $this->__('Cancel Coupon') ?>" class="button" onclick="discountForm.submit(true)" value="<?php echo $this->__('Cancel Coupon') ?>"><span><span><?php echo $this->__('Cancel Coupon') ?></span></span></button> <?php endif;?> </div> - - - </div> --> + </div> </div> </form> <script type="text/javascript"> diff --git a/app/design/frontend/base/default/template/checkout/multishipping/overview.phtml b/app/design/frontend/base/default/template/checkout/multishipping/overview.phtml index 1695c74..be11aff 100644 --- a/app/design/frontend/base/default/template/checkout/multishipping/overview.phtml +++ b/app/design/frontend/base/default/template/checkout/multishipping/overview.phtml @@ -195,13 +195,12 @@ <div class="place-order"> <div class="grand-total"> <div class="inner"> - <big><?php echo $this->__('Grand Total:') ?> <?php echo $this->helper('checkout')->formatPrice($this->getTotal()) ?></big> - - </div> - </div> - <div id="review-buttons-container"> + <big><?php echo $this->__('Grand Total:') ?> <?php echo $this->helper('checkout')->formatPrice($this->getTotal()) ?></big> + <div id="review-buttons-container"> <button type="submit" title="<?php echo $this->__('Place Order') ?>" class="button btn-checkout" id="review-button"><span><span><?php echo $this->__('Place Order') ?></span></span></button> </div> + </div> + </div> <span class="please-wait" id="review-please-wait" style="display:none;"> <img src="<?php echo $this->getSkinUrl('images/opc-ajax-loader.gif') ?>" alt="<?php echo $this->__('Submitting order information...') ?>" title="<?php echo $this->__('Submitting order information...') ?>" class="v-middle" /> <?php echo $this->__('Submitting order information...') ?> </span> diff --git a/app/design/frontend/base/default/template/checkout/onepage/link.phtml b/app/design/frontend/base/default/template/checkout/onepage/link.phtml index cca3429..fc6beb6 100644 --- a/app/design/frontend/base/default/template/checkout/onepage/link.phtml +++ b/app/design/frontend/base/default/template/checkout/onepage/link.phtml @@ -24,15 +24,6 @@ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) */ ?> -<script> -jQuery(document).ready(function(){ - jQuery('.btn-proceed-checkout').click(function() { - jQuery('.proceed-txt').hide(); - jQuery('.checkout-loader').css('display', 'block'); - }); -}); -</script> <?php if ($this->isPossibleOnepageCheckout()):?> - <button type="button" title="<?php echo $this->__('Proceed to Checkout') ?>" class="button btn-proceed-checkout btn-checkout<?php if ($this->isDisabled()):?> no-checkout<?php endif; ?>"<?php if ($this->isDisabled()):?> disabled="disabled"<?php endif; ?> onclick="window.location='<?php echo $this->getCheckoutUrl() ?>'; setLayerData('CartPage', 'Cart Page', 'Proceed To Checkout', 'Proceed To Checkout'); onCheckoutOption(1, 'Proceed To Checkout');"><span><span class="proceed-txt"><?php echo $this->__('Proceed to Checkout') ?></span> <i class="checkout-loader"></i></span></button> + <button type="button" title="<?php echo $this->__('Proceed to Checkout') ?>" class="button btn-proceed-checkout btn-checkout<?php if ($this->isDisabled()):?> no-checkout<?php endif; ?>"<?php if ($this->isDisabled()):?> disabled="disabled"<?php endif; ?> onclick="window.location='<?php echo $this->getCheckoutUrl() ?>'; setLayerData('CartPage', 'Cart Page', 'Proceed To Checkout', 'Proceed To Checkout'); onCheckoutOption(1, 'Proceed To Checkout');"><span><span><?php echo $this->__('Proceed to Checkout') ?></span></span></button> <?php endif?> - diff --git a/app/design/frontend/base/default/template/sales/order/history.phtml b/app/design/frontend/base/default/template/sales/order/history.phtml index 0d3f921..da28770 100755 --- a/app/design/frontend/base/default/template/sales/order/history.phtml +++ b/app/design/frontend/base/default/template/sales/order/history.phtml @@ -61,7 +61,7 @@ <td><em><?php echo $_order->getStatusLabel() ?></em></td> <td class="a-center"> <span class="nobr"><a href="<?php echo $this->getViewUrl($_order) ?>"><?php echo $this->__('View Order') ?></a> - <span class="separator">| </span> <a href="<?php echo Mage::getUrl('trackorder/index/detail/').'orderId/'.$_order->getRealOrderId(); ?>"><?php echo $this->__('Track Order') ?></a> + <?php /*<span class="separator">|</span><a href="<?php echo $this->getTrackUrl($_order) ?>"><?php echo $this->__('Track Order') ?></a> */ ?> <?php if ($this->helper('sales/reorder')->canReorder($_order)) : ?> <span class="separator">|</span> <a href="<?php echo $this->getReorderUrl($_order) ?>" class="link-reorder"><?php echo $this->__('Reorder') ?></a> <?php endif ?> @@ -79,7 +79,7 @@ <td><em><?php echo $_order->getStatusLabel() ?></em></td> <td class="a-center"> <span class="nobr"><a href="<?php echo $this->getViewUrl($_order) ?>"><?php echo $this->__('View Order') ?></a> - <span class="separator">| </span> <a href="<?php echo Mage::getUrl('trackorder/index/detail/').'orderId/'.$_order->getRealOrderId(); ?>"><?php echo $this->__('Track Order') ?></a> + <?php /*<span class="separator">|</span><a href="<?php echo $this->getTrackUrl($_order) ?>"><?php echo $this->__('Track Order') ?></a> */ ?> <?php if ($this->helper('sales/reorder')->canReorder($_order)) : ?> <span class="separator">|</span> <a href="<?php echo $this->getReorderUrl($_order) ?>" class="link-reorder"><?php echo $this->__('Reorder') ?></a> <?php endif ?> diff --git a/app/design/frontend/base/default/template/sales/order/recent.phtml b/app/design/frontend/base/default/template/sales/order/recent.phtml index 4134ed2..015f43b 100755 --- a/app/design/frontend/base/default/template/sales/order/recent.phtml +++ b/app/design/frontend/base/default/template/sales/order/recent.phtml @@ -61,7 +61,6 @@ <td class="a-center"> <span class="nobr"> <a href="<?php echo $this->getViewUrl($_order) ?>"><?php echo $this->__('View Order') ?></a> - <span class="separator">| </span> <a href="<?php echo Mage::getUrl('trackorder/index/detail/').'orderId/'.$_order->getRealOrderId(); ?>"><?php echo $this->__('Track Order') ?></a> <?php if ($this->helper('sales/reorder')->canReorder($_order)) : ?> <span class="separator">|</span> <a href="<?php echo $this->getReorderUrl($_order) ?>" class="link-reorder"><?php echo $this->__('Reorder') ?></a> <?php endif ?> @@ -80,7 +79,6 @@ <td class="a-center"> <span class="nobr"> <a href="<?php echo $this->getViewUrl($_order) ?>"><?php echo $this->__('View Order') ?></a> - <span class="separator">| </span> <a href="<?php echo Mage::getUrl('trackorder/index/detail/').'orderId/'.$_order->getRealOrderId(); ?>"><?php echo $this->__('Track Order') ?></a> <?php if ($this->helper('sales/reorder')->canReorder($_order)) : ?> <span class="separator">|</span> <a href="<?php echo $this->getReorderUrl($_order) ?>" class="link-reorder"><?php echo $this->__('Reorder') ?></a> <?php endif ?> diff --git a/app/design/frontend/smartwave/default/template/smartwave/megamenu/html/mobilemenu.phtml b/app/design/frontend/smartwave/default/template/smartwave/megamenu/html/mobilemenu.phtml index c2b2b72..21d3b66 100644 --- a/app/design/frontend/smartwave/default/template/smartwave/megamenu/html/mobilemenu.phtml +++ b/app/design/frontend/smartwave/default/template/smartwave/megamenu/html/mobilemenu.phtml @@ -1,4 +1,5 @@ <?php + /* <?php $menuHelper = Mage::helper('megamenu'); ?> <div class="mobile-nav side-block container"> @@ -10,4 +11,4 @@ </div> </div> */ -?> +?> \ No newline at end of file diff --git a/app/design/frontend/smartwave/default/template/smartwave/megamenu/html/topmenu.phtml b/app/design/frontend/smartwave/default/template/smartwave/megamenu/html/topmenu.phtml index 2e4f37f..059b467 100644 --- a/app/design/frontend/smartwave/default/template/smartwave/megamenu/html/topmenu.phtml +++ b/app/design/frontend/smartwave/default/template/smartwave/megamenu/html/topmenu.phtml @@ -1,4 +1,5 @@ <?php + if( $_SERVER['SERVER_NAME'] == "localhost" || $_SERVER['SERVER_NAME'] == "tolexo.cb.local" ){ $navigationUrl = "http://localhost:1337/v2/sails-navigation"; // For localhost $navigationFileLocation = ""; // For localhost @@ -11,6 +12,7 @@ if( $_SERVER['SERVER_NAME'] == "localhost" || $_SERVER['SERVER_NAME'] == "tolexo } $navigationFileName = $navigationFileLocation."navigation.txt"; $cacheLife = '21600'; //caching time, in seconds + $nav_ch = curl_init(); curl_setopt($nav_ch, CURLOPT_URL, $navigationUrl); curl_setopt($nav_ch, CURLOPT_RETURNTRANSFER, 1); @@ -18,6 +20,7 @@ curl_setopt($nav_ch, CURLOPT_CONNECTTIMEOUT_MS ,80); curl_setopt($nav_ch, CURLOPT_TIMEOUT_MS, 100); $naviagtionBlock = curl_exec($nav_ch); $code = curl_getinfo($nav_ch, CURLINFO_HTTP_CODE); + if($code == 200 && !curl_errno($nav_ch)) { $filemtime = @filemtime($navigationFileName); @@ -29,4 +32,6 @@ if($code == 200 && !curl_errno($nav_ch)) } curl_close($nav_ch); echo $naviagtionBlock; + + ?> diff --git a/app/design/frontend/smartwave/porto/layout/trackorder.xml b/app/design/frontend/smartwave/porto/layout/trackorder.xml index 34d51f5..06b61f9 100644 --- a/app/design/frontend/smartwave/porto/layout/trackorder.xml +++ b/app/design/frontend/smartwave/porto/layout/trackorder.xml @@ -6,20 +6,32 @@ </reference> </default> <trackorder_index_index> + <reference name="head"> + <action method="addCss" ><stylesheet>trackorder/css/trackorder.css</stylesheet></action> + </reference> <reference name="root"> + <!--<action method="setTemplate"><template>page/2columns-left.phtml</template></action>--> <action method="setTemplate"><template>page/1column.phtml</template></action> <action method="setHeaderTitle" translate="title" module="trackorder"><title>Track Your Order</title></action> </reference> <reference name="content"> <block type="trackorder/trackorder" name="trackorder" template="trackorder/trackorder.phtml" /> + <!--<block type="trackorder/trackorder" name="customer_login" template="trackorder/login.phtml"/>--> </reference> </trackorder_index_index> - <trackorder_index_detail> - <reference name="root"> - <action method="setTemplate"><template>page/1column.phtml</template></action> - </reference> + <!--<trackorder_index_track> <reference name="content"> - <block type="trackorder/trackorder" name="trackdetail" template="trackorder/trackdetail.phtml"/> + <block type="trackorder/trackorder" name="root" output="toHtml" template="trackorder/trackdetail.phtml"> + + </block> </reference> + </trackorder_index_track>--> + <trackorder_index_detail> + <reference name="root"> + <action method="setTemplate"><template>page/1column.phtml</template></action> + </reference> + <reference name="content"> + <block type="trackorder/trackorder" name="trackdetail" template="trackorder/trackdetail.phtml"/> + </reference> </trackorder_index_detail> </layout> diff --git a/app/design/frontend/smartwave/porto/template/catalog/product/list/toolbar.phtml b/app/design/frontend/smartwave/porto/template/catalog/product/list/toolbar.phtml index b64caf4..b3643f4 100644 --- a/app/design/frontend/smartwave/porto/template/catalog/product/list/toolbar.phtml +++ b/app/design/frontend/smartwave/porto/template/catalog/product/list/toolbar.phtml @@ -39,7 +39,7 @@ <?php echo $this->getPagerHtml() ?> </div> <div class="limiter"> - <label><?php echo $this-> getTotalNum().''. $this->__(' Items | Show') ?>:</label> + <label><?php echo $this->__('Show') ?>:</label> <select onchange="setLayerData('CategoryPage', 'Category Page', this, 'No of Products Displayed'); setLocation(this.value)"> <?php foreach ($this->getAvailableLimit() as $_key=>$_limit): ?> <option value="<?php echo $this->getLimitUrl($_key) ?>"<?php if($this->isLimitCurrent($_key)): ?> selected="selected"<?php endif ?>> diff --git a/app/design/frontend/smartwave/porto/template/catalog/product/view.phtml b/app/design/frontend/smartwave/porto/template/catalog/product/view.phtml index 086081b..79d7f71 100644 --- a/app/design/frontend/smartwave/porto/template/catalog/product/view.phtml +++ b/app/design/frontend/smartwave/porto/template/catalog/product/view.phtml @@ -501,24 +501,10 @@ </td> <td> <?php if($product->isInStock()): ?> - <script> - if(mobileDevice) { - document.write("<form action='<?php echo $this->getAddToCartUrl($product); ?>' method='post'>"); - } else { - document.write("<form action='javascript:void(0)' method='post'>"); - } - </script> - - <input type="text" value="1" name="qty" id="add_qty_<?php echo $_product->getId();?>" /> - - <script> - if(mobileDevice) { - document.write("<button class='button btn-cart' onclick=\"return buyProduct('<?php echo $_product->getSku(); ?>', 'CSKU_BUY', 'add_qty_<?php echo $_product->getId();?>'); \" ><span><span><?php echo $this->__('BUY')?></span></span></button>"); - } else { - document.write("<input type = 'button' id = 'simple_prod_buy' class='button btn-cart' value=\"<?php echo $this->__('BUY');?>\" onclick=\"return ajaxCartAdd('<?php echo $_product->getSku(); ?>', 'CSKU_BUY', 'add_qty_<?php echo $_product->getId();?>','<?php echo $this->getAddToCartUrl($product); ?>',this); \" />"); - } - </script> - + + <form action="<?php echo $this->getAddToCartUrl($product); ?>" method="post"> + <input type="text" value="1" name="qty" id="add_qty"/> + <button class="button btn-cart" onclick="return buyProduct('<?php echo $_product->getSku(); ?>', 'CSKU_BUY', 'add_qty');" ><span><span><?php echo $this->__('BUY')?></span></span></button> <span class="button btn-loader"> <img src="<?php echo $this->getSkinUrl('images/loader.gif') ?>" data-src="<?php echo $this->getSkinUrl('images/loader.gif') ?>" alt="<?php echo $this->__('Please wait...') ?>" title="<?php echo $this->__('Please wait...') ?>" class="v-middle" /> </span> diff --git a/app/design/frontend/smartwave/porto/template/catalog/product/view/type/options/configurable.phtml b/app/design/frontend/smartwave/porto/template/catalog/product/view/type/options/configurable.phtml index c624ffc..13d79bf 100644 --- a/app/design/frontend/smartwave/porto/template/catalog/product/view/type/options/configurable.phtml +++ b/app/design/frontend/smartwave/porto/template/catalog/product/view/type/options/configurable.phtml @@ -158,23 +158,11 @@ $c = 0; </div> <?php if(round($_allowed_product->getStockItem()->getQty())>0 && $_allowed_product->isSaleable()){?> <div class="left qty-buy"> - <script> - if(mobileDevice) { - document.write("<form action='<?php echo $this->getAddToCartUrl($_allowed_product); ?>' method='post'>"); - } else { - document.write("<form action='javascript:void(0)' method='post'>"); - } - </script> - - <input type="text" value="1" name="qty" id="add_to_qty_<?php echo $_allowed_product->getId();?>" /> - - <script> - if(mobileDevice) { - document.write("<button class='button btn-cart' target='vizury_iframe' onclick=\"return buyProduct('<?php echo $_allowed_product->getResource()->getAttribute('tsin')->getFrontend()->getValue($_allowed_product); ?>', 'PSKU_BUY', 'add_to_qty_<?php echo $_allowed_product->getId();?>'); \" ><span><span><?php echo $this->__('BUY')?></span></span></button>"); - } else { - document.write("<input type = 'button' class='button btn-cart' target='vizury_iframe' value=\"<?php echo $this->__('BUY');?>\" onclick=\"return ajaxCartAdd('<?php echo $_allowed_product->getResource()->getAttribute('tsin')->getFrontend()->getValue($_allowed_product); ?>', 'PSKU_BUY', 'add_to_qty_<?php echo $_allowed_product->getId();?>','<?php echo $this->getAddToCartUrl($_allowed_product); ?>',this); \" />"); - } - </script> + <form action="<?php echo $this->getAddToCartUrl($_allowed_product); ?>" method="post"> + <input type="text" value="1" name="qty" id="add_to_qty" /> + <button class="button btn-cart" target="vizury_iframe" onclick="return buyProduct('<?php echo $_allowed_product->getResource()->getAttribute('tsin')->getFrontend()->getValue($_allowed_product); ?>', 'PSKU_BUY', 'add_to_qty');"> + <span><span><?php echo $this->__('BUY')?></span></span> + </button> <span class="button btn-loader"> <img src="<?php echo $this->getSkinUrl('images/loader.gif') ?>" data-src="<?php echo $this->getSkinUrl('images/loader.gif') ?>" alt="<?php echo $this->__('Please wait...') ?>" title="<?php echo $this->__('Please wait...') ?>" class="v-middle" /> </span> @@ -227,6 +215,7 @@ $c = 0; var spConfig = new Product.Config(<?php echo $this->getJsonConfig() ?>); </script> <?php endif;?> + <script type="text/javascript"> var google_tag_params = { ecomm_prodid: '<?php echo $_product->getSku(); ?>', @@ -266,7 +255,6 @@ function buyProduct(skutsin, ptype, elem) { return false; } gtmBuyProduct(skutsin, ptype, myqty); - return true; } </script> diff --git a/app/design/frontend/smartwave/porto/template/checkout/cart.phtml b/app/design/frontend/smartwave/porto/template/checkout/cart.phtml index 94a96f9..0970f7d 100644 --- a/app/design/frontend/smartwave/porto/template/checkout/cart.phtml +++ b/app/design/frontend/smartwave/porto/template/checkout/cart.phtml @@ -5,21 +5,11 @@ * @see Mage_Checkout_Block_Cart */ ?> -<div class="cart main-cart"> +<div class="cart"> <div class="page-title title-buttons"> - <?php $cart = Mage::getSingleton('checkout/cart'); - ?> - <h1><?php echo $this->__('Shopping Cart') ?> - - <span class="cart-item"> - <?php $cartCount = $cart->getQuote()->getItemsCount(); - echo "(".$cartCount; - echo ($cartCount <=1)? " Item)" : " Items)";?> - </span> - <input type = "hidden" id="cart-count" value="<?php echo $cartCount; ?>" /> - </h1> + <h1><?php echo $this->__('Shopping Cart') ?></h1> <?php if(!$this->hasError()): ?> - <ul class="checkout-types close-check"> + <ul class="checkout-types"> <?php foreach ($this->getMethods('top_methods') as $method): ?> <?php if ($methodHtml = $this->getMethodHtml($method)): ?> <li><?php echo $methodHtml; ?></li> @@ -28,58 +18,50 @@ </ul> <?php endif; ?> </div> - + <?php echo $this->getMessagesBlock()->getGroupedHtml() ?> <div class="row"> - <div class="col-sm-12"> + <div class="col-sm-12 col-md-8 col-lg-9"> <div class="cart-table-wrap"> - <div class="scroll-tb"> <?php echo $this->getChildHtml('form_before') ?> - - <?php - $totals = $this->getQuote()->getTotals(); - #Mage::log($totals["subtotal"]->getValue().' '.$totals["tax"]->getValue(),null,'tax.log'); - if(Mage::getStoreConfig('carriers/tolexo_multistepcheckout/include_tax')) - { - #$total_amount = $this->getQuote()->getSubtotalInclTax(); - $total_amount = $totals["subtotal"]->getValue() + round($totals["tax"]->getValue()); - } - else - { - #$total_amount = $this->getQuote()->getSubtotal(); - $total_amount = $totals["subtotal"]->getValue(); - } - $minimum_order_amount = Mage::getStoreConfig('carriers/tolexo_multistepcheckout/minimum_order_amount'); - $value = $minimum_order_amount - $total_amount; - ?> - </div> - + + <?php + $totals = $this->getQuote()->getTotals(); + #Mage::log($totals["subtotal"]->getValue().' '.$totals["tax"]->getValue(),null,'tax.log'); + if(Mage::getStoreConfig('carriers/tolexo_multistepcheckout/include_tax')) + { + #$total_amount = $this->getQuote()->getSubtotalInclTax(); + $total_amount = $totals["subtotal"]->getValue() + round($totals["tax"]->getValue()); + } + else + { + #$total_amount = $this->getQuote()->getSubtotal(); + $total_amount = $totals["subtotal"]->getValue(); + } + $minimum_order_amount = Mage::getStoreConfig('carriers/tolexo_multistepcheckout/minimum_order_amount'); + $value = $minimum_order_amount - $total_amount; + ?> + <?php if($value > 0): ?> + <div class="shipping-offer"> + <?php echo "Free Shipping! if total cart value amount is Rs. ".$minimum_order_amount." or above. You can buy products worth Rs. ".$value." or more to avail this discount." ?> + </div> + <?php endif; ?> - <form action="<?php echo $this->getUrl('checkout/cart/updatePost') ?>" method="post"> + <form action="<?php echo $this->getUrl('checkout/cart/updatePost') ?>" method="post"> <?php echo $this->getBlockHtml('formkey'); ?> - <fieldset class="cart-popup-scroll"> - <?php if($value > 0): ?> - <div class="shipping-offer"> - <?php echo "Free Shipping! if total cart value amount is Rs. ".$minimum_order_amount." or above. You can buy products worth Rs. ".$value." or more to avail this discount." ?> - </div> - <?php endif; ?> - <?php echo $this->getMessagesBlock()->getGroupedHtml() ?> - <script> - jQuery(".success-msg").delay(5000).slideUp(400); - </script> + <fieldset> <table id="shopping-cart-table" class="data-table cart-table"> - <?php $mergedCells = ($this->helper('tax')->displayCartBothPrices() ? 2 : 1); ?> <thead> <tr> - <!-- <th rowspan="<?php echo $mergedCells; ?>"> </th> --> - <th rowspan="<?php echo $mergedCells; ?>" class="frst-wd"> <div class="ajaxpro-spinner" style="display: none;"></div></th> - <th rowspan="<?php echo $mergedCells; ?> " class="wid35 pro-name"><span class="nobr"><?php echo $this->__('Item') ?></span></th> + <th rowspan="<?php echo $mergedCells; ?>"> </th> + <th rowspan="<?php echo $mergedCells; ?>"> </th> + <th rowspan="<?php echo $mergedCells; ?>"><span class="nobr"><?php echo $this->__('Product Name') ?></span></th> <?php if ($this->helper('wishlist')->isAllowInCart()) : ?> - <th rowspan="<?php echo $mergedCells; ?>" class="wid10"><span class="nobr"><?php echo $this->__('Move to Wishlist') ?></span></th> + <th rowspan="<?php echo $mergedCells; ?>"><span class="nobr"><?php echo $this->__('Move to Wishlist') ?></span></th> <?php endif ?> - <th rowspan="<?php echo $mergedCells; ?>" class="wid10"><?php echo $this->__('Qty') ?></th> - <th colspan="<?php echo $mergedCells; ?>" class="wid10"><span class="nobr"><?php echo $this->__('Unit Price') ?></span></th> - <th class="last wid10" colspan="<?php echo $mergedCells; ?>"><?php echo $this->__('Subtotal') ?></th> + <th colspan="<?php echo $mergedCells; ?>"><span class="nobr"><?php echo $this->__('Unit Price') ?></span></th> + <th rowspan="<?php echo $mergedCells; ?>"><?php echo $this->__('Qty') ?></th> + <th class="last" colspan="<?php echo $mergedCells; ?>"><?php echo $this->__('Subtotal') ?></th> </tr> <?php if ($this->helper('tax')->displayCartBothPrices()): ?> <tr> @@ -91,13 +73,40 @@ <?php endif; ?> </thead> <tfoot> - + <tr> + <td colspan="50" class="a-right"> + <?php if($this->getContinueShoppingUrl()): ?> + <button type="button" title="<?php echo $this->__('Continue Shopping') ?>" class="button btn-continue" onclick="setLayerData('CartPage', 'Cart Page', 'Continue Shopping', 'Continue Shopping'); setLocation('<?php echo $this->getUrl('') ?>');"><span><span><?php echo $this->__('Continue Shopping') ?></span></span></button> + <?php endif; ?> + <button type="submit" name="update_cart_action" value="update_qty" title="<?php echo $this->__('Update Shopping Cart'); ?>" class="button btn-update" onclick="setLayerData('CartPage', 'Cart Page', 'Update Shopping Cart', 'Update Shopping Cart');"><span><span><?php echo $this->__('Update Shopping Cart'); ?></span></span></button> + <button type="submit" name="update_cart_action" value="empty_cart" title="<?php echo $this->__('Clear Shopping Cart'); ?>" class="button btn-empty" id="empty_cart_button"><span><span><?php echo $this->__('Clear Shopping Cart'); ?></span></span></button> + <!--[if lt IE 8]> + <input type="hidden" id="update_cart_action_container" /> + <script type="text/javascript"> + //<![CDATA[ + Event.observe(window, 'load', function() + { + // Internet Explorer (lt 8) does not support value attribute in button elements + $emptyCartButton = $('empty_cart_button'); + $cartActionContainer = $('update_cart_action_container'); + if ($emptyCartButton && $cartActionContainer) { + Event.observe($emptyCartButton, 'click', function() + { + $emptyCartButton.setAttribute('name', 'update_cart_action_temp'); + $cartActionContainer.setAttribute('name', 'update_cart_action'); + $cartActionContainer.setValue('empty_cart'); + }); + } + + }); + //]]> + </script> + <![endif]--> + </td> + </tr> </tfoot> <tbody> - <?php - $itemArray = $this->getItems(); - $itemArrayRev = array_reverse($itemArray,true); - foreach($itemArrayRev as $_item): ?> + <?php foreach($this->getItems() as $_item): ?> <?php echo $this->getItemHtml($_item) ?> <?php endforeach ?> </tbody> @@ -120,45 +129,31 @@ </script> </fieldset> </form> - <div class="cart-collaterals"> - <?php /* Extensions placeholder */ ?> - <?php echo $this->getChildHtml('checkout.cart.extra') ?> - <?php echo $this->getChildHtml('coupon') ?> - <?php if (!$this->getIsVirtual()): echo $this->getChildHtml('shipping'); endif; ?> - <div class="totals"> - <!-- <h2><?php echo $this->__('Cart Totals') ?></h2> --> - <div class="total-inner"> - <?php echo $this->getChildHtml('totals'); ?> - - </div> + </div> + </div> + <div class="col-sm-12 col-md-4 col-lg-3"> + <div class="cart-collaterals"> + <?php /* Extensions placeholder */ ?> + <?php echo $this->getChildHtml('checkout.cart.extra') ?> + <?php echo $this->getChildHtml('coupon') ?> + <?php if (!$this->getIsVirtual()): echo $this->getChildHtml('shipping'); endif; ?> + <div class="totals"> + <h2><?php echo $this->__('Cart Totals') ?></h2> + <div> + <?php echo $this->getChildHtml('totals'); ?> + <?php if(!$this->hasError()): ?> + <ul class="checkout-types"> + <?php foreach ($this->getMethods('methods') as $method): ?> + <?php if ($methodHtml = $this->getMethodHtml($method)): ?> + <li><?php echo $methodHtml; ?></li> + <?php endif; ?> + <?php endforeach; ?> + </ul> + <?php endif; ?> </div> - <div class="checkout-continue-btn"> - <ul class="checkout-types"> - <?php if(!$this->hasError()) { ?> - <?php foreach ($this->getMethods('methods') as $method): ?> - <?php if ($methodHtml = $this->getMethodHtml($method)): ?> - <li><?php echo $methodHtml; ?></li> - <?php endif; ?> - <?php endforeach; ?> - <?php } else { ?> - <button type="button" title="<?php echo $this->__('Proceed to Checkout') ?>" class="button btn-proceed-checkout btn-checkout no-checkout" disabled="disabled"><span><span><?php echo $this->__('Proceed to Checkout') ?></span> - </span> - </button> - <?php } ?> - </ul> - <?php if($this->getContinueShoppingUrl()): ?> - <button type="button" title="<?php echo $this->__('Continue Shopping') ?>" class="button continue-btn" onclick="setLayerData('CartPage', 'Cart Page', 'Continue Shopping', 'Continue Shopping'); setLocation('<?php echo $this->getUrl('') ?>');"><span><span><?php echo $this->__('Continue Shopping') ?></span></span></button> - <?php endif; ?> - - </div> </div> - </div> </div> </div> <?php echo $this->getChildHtml('crosssell') ?> </div> -<script> -jQuery('ul.messages .error-msg').find('li').prepend('<span class="error-icn common-sprite"></span>'); -jQuery('ul.messages .success-msg').find('li').prepend('<span class="success-icn common-sprite"></span>'); -</script> \ No newline at end of file diff --git a/app/design/frontend/smartwave/porto/template/checkout/cart/item/default.phtml b/app/design/frontend/smartwave/porto/template/checkout/cart/item/default.phtml index 57b99a0..c6d9dda 100644 --- a/app/design/frontend/smartwave/porto/template/checkout/cart/item/default.phtml +++ b/app/design/frontend/smartwave/porto/template/checkout/cart/item/default.phtml @@ -26,7 +26,6 @@ ?> <?php $_item = $this->getItem(); -$item_id = $_item->getId(); $isVisibleProduct = $_item->getProduct()->isVisibleInSiteVisibility(); $canApplyMsrp = Mage::helper('catalog')->canApplyMsrp($_item->getProduct(), Mage_Catalog_Model_Product_Attribute_Source_Msrp_Type::TYPE_BEFORE_ORDER_CONFIRM); @@ -35,42 +34,16 @@ $code = $store->getCode(); $aspect_ratio = Mage::getStoreConfig("porto_settings/category/aspect_ratio",$code); $ratio = ($aspect_ratio || (!$aspect_ratio && Mage::getStoreConfig("porto_settings/category/ratio_width",$code) == 0))?1:(Mage::getStoreConfig("porto_settings/category/ratio_height",$code)/Mage::getStoreConfig("porto_settings/category/ratio_width",$code)); ?> -<tr class="gry-bg"> - <td class="pr-img-td"><?php if ($this->hasProductUrl()):?><a href="<?php echo $this->getProductUrl() ?>" title="<?php echo $this->htmlEscape($this->getProductName()) ?>" class="product-image"><?php endif;?><img src="//img.tolexokit.com/media/catalog/product<?php echo $_item->getProduct()->getSmallImage(); ?>?resize=1&q=95&w=38&h=50&zc=2" width="38" height="50" alt="<?php echo $this->htmlEscape($this->getProductName()) ?>" /><?php if ($this->hasProductUrl()):?></a><?php endif;?> - <a href="<?php echo $this->getDeleteUrl()?>" data-pid="<?php echo $_item->getId(); ?>" onclick="delCartProductsOption('<?php echo $_item->getId(); ?>')" title="<?php echo $this->__('Remove item')?>" class="cart-remove">Remove</a> - </td> +<tr> + <td class="action-td"><a href="<?php echo $this->getDeleteUrl()?>" data-pid="<?php echo $_item->getId(); ?>" onclick="delCartProductsOption('<?php echo $_item->getId(); ?>')" title="<?php echo $this->__('Remove item')?>" class="btn-remove btn-remove2"></a></td> + <td class="pr-img-td"><?php if ($this->hasProductUrl()):?><a href="<?php echo $this->getProductUrl() ?>" title="<?php echo $this->htmlEscape($this->getProductName()) ?>" class="product-image"><?php endif;?><img src="//img.tolexokit.com/media/catalog/product<?php echo $_item->getProduct()->getSmallImage(); ?>?resize=1&q=95&w=38&h=50&zc=2" width="38" height="50" alt="<?php echo $this->htmlEscape($this->getProductName()) ?>" /><?php if ($this->hasProductUrl()):?></a><?php endif;?></td> <td class="product-name-td"> <h2 class="product-name"> - <?php - $pro = $this->getProduct(); - $p = Mage::getModel('catalog/product')->load($pro->getId()); - /** - * @added by Jasleen Kaur - * @Desc: Display vendor name - **/ - $vendor_id = $p->getData('vendor_id'); - $vendor = Mage::getModel('vendor_vendordirectory/vendors')->load($vendor_id); - - if($p->getTypeId()=='simple' && $p->getData('number_of_items') && $p->getAttributeText('number_of_items') > 1): - $attr_details = Mage::getModel('eav/entity_attribute')->loadByCode(Mage_Catalog_Model_Product::ENTITY, 'number_of_items'); - if ($this->hasProductUrl()):?> - <a href="<?php echo $this->getProductUrl() ?>"><?php echo $this->htmlEscape(substr($this->getProductName(),0,100))."...".' </a> - <div class="pack"> Pack of '.$attr_details->getSource()->getOptionText($p->getData('number_of_items')).' </div>' ?> - <?php else: - echo $this->htmlEscape(substr($this->getProductName(),0,100))."...".'<div class="pack"> Pack of '.$attr_details->getSource()->getOptionText($_product->getData('number_of_items')).'</div>'; - endif; - else: - if ($this->hasProductUrl()):?> - <a href="<?php echo $this->getProductUrl() ?>"><?php echo $this->htmlEscape(substr($this->getProductName(),0,100))."..." ?></a> - <?php else: - echo $this->htmlEscape(substr($this->getProductName(),0,100))."..."; - endif; - endif; ?> - <?php - $vendorName = $vendor->getDisplayName(); - if(!empty($vendorName)) { ?> - <div class="sold">Sold by: <strong><?php echo $vendorName; ?> </strong></div> - <?php } ?> + <?php if ($this->hasProductUrl()):?> + <a href="<?php echo $this->getProductUrl() ?>"><?php echo $this->htmlEscape($this->getProductName()) ?></a> + <?php else: ?> + <?php echo $this->htmlEscape($this->getProductName()) ?> + <?php endif; ?> </h2> <?php if ($_options = $this->getOptionList()):?> <dl class="item-options"> @@ -91,14 +64,9 @@ $ratio = ($aspect_ratio || (!$aspect_ratio && Mage::getStoreConfig("porto_settin </dl> <?php endif;?> <?php if ($messages = $this->getMessages()): ?> - <?php foreach ($messages as $message) { - if($message['type'] == "error") { - $error_qty[$item_id] = true; - } - ?> + <?php foreach ($messages as $message): ?> <p class="item-msg <?php echo $message['type'] ?>">* <?php echo $this->escapeHtml($message['text']) ?></p> - - <?php } ?> + <?php endforeach; ?> <?php endif; ?> <?php $addInfoBlock = $this->getProductAdditionalInformationBlock(); ?> <?php if ($addInfoBlock): ?> @@ -114,8 +82,8 @@ $ratio = ($aspect_ratio || (!$aspect_ratio && Mage::getStoreConfig("porto_settin <?php endif ?> <?php if ($canApplyMsrp): ?> - <td <?php if ($this->helper('tax')->displayCartBothPrices()): ?> colspan="2"<?php endif; ?>> - <span class="cart-price dark-gry-bg"> + <td<?php if ($this->helper('tax')->displayCartBothPrices()): ?> colspan="2"<?php endif; ?>> + <span class="cart-price"> <span class="cart-msrp-unit"><?php echo $this->__('See price before order confirmation.'); ?></span> <?php $helpLinkId = 'cart-msrp-help-' . $_item->getId(); ?> <a id="<?php echo $helpLinkId ?>" href="#" class="map-help-link"><?php echo $this->__("What's this?"); ?></a> @@ -127,19 +95,6 @@ $ratio = ($aspect_ratio || (!$aspect_ratio && Mage::getStoreConfig("porto_settin <?php else: ?> <?php if ($this->helper('tax')->displayCartPriceExclTax() || $this->helper('tax')->displayCartBothPrices()): ?> - - <td> - <div class="qty-holder"> - <a href="javascript:void(0)" class="table_qty_dec">-</a><input name="cart[<?php echo $_item->getId() ?>][qty]" value="<?php echo $this->getQty() ?>" size="4" title="<?php echo $this->__('Qty') ?>" class="input-text qty <?php echo !empty($error_qty[$item_id]) ? 'err-qty' : ''; ?>" maxlength="12" /><a href="javascript:void(0)" class="table_qty_inc">+</a> - <?php if ($isVisibleProduct): ?> - <a class="edit-qty" href="<?php echo $this->getConfigureUrl() ?>" title="<?php echo $this->__('Edit item parameters') ?>"><i class="icon-pencil"></i></a> - <?php endif ?> - </div> - <button type="submit" name="update_cart_action" value="update_qty" title="<?php echo $this->__('Update'); ?>" class="button btn-update" onclick="setLayerData('CartPage', 'Cart Page', 'Update', 'Update');"><span><span><?php echo $this->__('Update'); ?> - </span></span> - </button> - - </td> <td> <?php if (Mage::helper('weee')->typeOfDisplay($_item, array(1, 4), 'sales') && $_item->getWeeeTaxAppliedAmount()): ?> <span class="cart-tax-total" onclick="taxToggle('eunit-item-tax-details<?php echo $_item->getId(); ?>', this, 'cart-tax-total-expanded');"> @@ -224,14 +179,14 @@ $ratio = ($aspect_ratio || (!$aspect_ratio && Mage::getStoreConfig("porto_settin </td> <?php endif; ?> <?php endif; ?> - <!-- <td> + <td> <div class="qty-holder"> <a href="javascript:void(0)" class="table_qty_dec">-</a><input name="cart[<?php echo $_item->getId() ?>][qty]" value="<?php echo $this->getQty() ?>" size="4" title="<?php echo $this->__('Qty') ?>" class="input-text qty" maxlength="12" /><a href="javascript:void(0)" class="table_qty_inc">+</a> <?php if ($isVisibleProduct): ?> <a class="edit-qty" href="<?php echo $this->getConfigureUrl() ?>" title="<?php echo $this->__('Edit item parameters') ?>"><i class="icon-pencil"></i></a> <?php endif ?> </div> - </td>--> + </td> <?php if (($this->helper('tax')->displayCartPriceExclTax() || $this->helper('tax')->displayCartBothPrices()) && !$_item->getNoSubtotal()): ?> <td class="td-total"> <?php if (Mage::helper('weee')->typeOfDisplay($_item, array(1, 4), 'sales') && $_item->getWeeeTaxAppliedAmount()): ?> diff --git a/app/design/frontend/smartwave/porto/template/checkout/cart/minicart.phtml b/app/design/frontend/smartwave/porto/template/checkout/cart/minicart.phtml index f230324..22e6651 100644 --- a/app/design/frontend/smartwave/porto/template/checkout/cart/minicart.phtml +++ b/app/design/frontend/smartwave/porto/template/checkout/cart/minicart.phtml @@ -1,10 +1,3 @@ -<div class="cart-overlay"></div> - <div class="cart-popUp"> - <div id="cart-popup" class="cart-popup-ui"></div> - <small class="cart-close-bg"> - <span class="popUp-closexa close-btn cart-popUp-close" title="Close"> X </span> - </small> -</div> <div class="mini-cart"> <?php $store = Mage::app()->getStore(); @@ -17,28 +10,7 @@ $_subtotal = $this->helper('checkout')->formatPrice(Mage::getSingleton('checkout/cart')->getQuote()->getGrandTotal()) ?> <?php $_items = $this->getRecentItems() ?> - <?php $cartUrl = $this->getUrl('checkout/cart'); ?> - <?php $currentUrl = Mage::helper('core/url')->getCurrentUrl(); ?> - <?php - if(!(strpos($currentUrl,"checkout/cart"))){ - ?> - - <a id = "bag-icon" class="mybag-link" onclick="setLayerData('MiniCart', 'Top Links', 'Mini Cart Value - <?php echo $_cartQty ?>', 'Mini Cart');return viewCartItems('<?php echo $cartUrl ?>')"> - - <i class="icon-mini-cart"></i> - <span class="cart-info"> - <span class="cart-qty"> - <?php echo $_cartQty ?> - </span> - <span> - <?php echo $this->__('item(s)') ?> - </span> - </span> - </a> - - <?php - } - ?> + <a href="<?php echo $this->getUrl('checkout/cart'); ?>" class="mybag-link" onclick="setLayerData('MiniCart', 'Top Links', 'Mini Cart Value - <?php echo $_cartQty ?>', 'Mini Cart');"><i class="icon-mini-cart"></i><span class="cart-info"><span class="cart-qty"><?php echo $_cartQty ?></span><span><?php echo $this->__('item(s)') ?></span></span></a> <div class="topCartContent block-content theme-border-color"> <div class="inner-wrapper"><?php /*extra div to smooth slideUp and slideDown*/ ?> <?php $_items = $this->getRecentItems() ?> diff --git a/app/design/frontend/smartwave/porto/template/checkout/cart/noItems.phtml b/app/design/frontend/smartwave/porto/template/checkout/cart/noItems.phtml index 9b4024d..4b5b8d3 100644 --- a/app/design/frontend/smartwave/porto/template/checkout/cart/noItems.phtml +++ b/app/design/frontend/smartwave/porto/template/checkout/cart/noItems.phtml @@ -24,45 +24,13 @@ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) */ ?> -<script> - jQuery(document).ready(function(){ - jQuery('.col1-layout .continue-btn').on('click', function(){ - setLocation('<?php echo $this->getUrl();?>'); - }); - }); -</script> - -<?php $menuHelper = Mage::helper('megamenu'); ?> -<?php $categories = $menuHelper->getMenuCategories(); ?> - -<div class="page-title cart-empty-title"> - <h1><?php echo $this->__('Shopping Cart') ?></h1> +<div class="page-title"> + <h1><?php echo $this->__('Shopping Cart is Empty') ?></h1> </div> -<?php -$cart = Mage::getSingleton('checkout/cart'); -$cartCount = $cart->getItemsCount(); -?> -<input type = "hidden" id="cart-count" value="<?php echo $cartCount; ?>" /> -<div class="cart-empty cart-blank-pg"> -<div class="shoping-empty">Your Shopping Cart is empty!</div> -<div class="pop-categary"> - POPULAR CATEGORIES - </div> -<ul class="category-nm"> - <?php - foreach($categories as $cname =>$cpath) { - if($cname == "View All Categories") { - continue; - } - ?> - <li> - <a href = "<?php echo Mage::getBaseUrl().$cpath ?>"><?php echo $this->__($cname); ?></a> - </li> - - <?php - } - ?> -</ul> -<?php if($this->getContinueShoppingUrl()): ?> - <button type="button" title="<?php echo $this->__('Continue Shopping') ?>" class="button continue-btn" onclick="setLayerData('CartPage', 'Cart Page', 'Continue Shopping', 'Continue Shopping');"><span><span><?php echo $this->__('Continue Shopping') ?></span></span></button> - <?php endif; ?> +<div class="cart-empty"> + <?php echo $this->getMessagesBlock()->getGroupedHtml() ?> + <?php echo $this->getChildHtml('checkout_cart_empty_widget'); ?> + <p><?php echo $this->__('You have no items in your shopping cart.') ?></p> + <p><?php echo $this->__('Click <a href="%s">here</a> to continue shopping.', $this->getUrl('')) ?></p> + <?php echo $this->getChildHtml('shopping.cart.table.after'); ?> </div> - diff --git a/app/design/frontend/smartwave/porto/template/checkout/onepage/review/info.phtml b/app/design/frontend/smartwave/porto/template/checkout/onepage/review/info.phtml index ce70e9e..79eaa0b 100644 --- a/app/design/frontend/smartwave/porto/template/checkout/onepage/review/info.phtml +++ b/app/design/frontend/smartwave/porto/template/checkout/onepage/review/info.phtml @@ -59,10 +59,7 @@ </thead> <?php echo $this->getChildHtml('totals'); ?> <tbody> - <?php - $itemArray = $this->getItems(); - $itemArrayRev = array_reverse($itemArray,true); - foreach($itemArrayRev as $_item): ?> + <?php foreach($this->getItems() as $_item): ?> <?php echo $this->getItemHtml($_item)?> <?php endforeach ?> </tbody> diff --git a/app/design/frontend/smartwave/porto/template/page/1column.phtml b/app/design/frontend/smartwave/porto/template/page/1column.phtml index 8505fcc..1e5d636 100644 --- a/app/design/frontend/smartwave/porto/template/page/1column.phtml +++ b/app/design/frontend/smartwave/porto/template/page/1column.phtml @@ -29,7 +29,6 @@ * Template for Mage_Page_Block_Html */ ?> -<?php if(!($this->getRequest()->isXmlHttpRequest())){?> <!DOCTYPE html> <!--[if lt IE 7 ]> <html lang="<?php echo $this->getLang() ?>" class="ie6 ie oldie"> @@ -64,9 +63,7 @@ html lang="<?php echo $this->getLang() ?>" class="ie-latest ie"> <div class="main container"> <div class="col-main"> <?php echo $this->getChildHtml('global_messages') ?> - <?php } ?> <?php echo $this->getChildHtml('content') ?> -<?php if(!($this->getRequest()->isXmlHttpRequest())){ ?> </div> </div> </div> @@ -78,4 +75,3 @@ html lang="<?php echo $this->getLang() ?>" class="ie-latest ie"> <?php echo $this->getAbsoluteFooter() ?> </body> </html> -<?php } ?> diff --git a/app/design/frontend/smartwave/porto/template/page/2columns-left.phtml b/app/design/frontend/smartwave/porto/template/page/2columns-left.phtml index 80c85c6..06d0e9e 100644 --- a/app/design/frontend/smartwave/porto/template/page/2columns-left.phtml +++ b/app/design/frontend/smartwave/porto/template/page/2columns-left.phtml @@ -33,18 +33,21 @@ $labelH1 = ""; $categoryDescription = ""; - $pageVal = Mage::app()->getRequest()->getParam('p'); + $categoryDescriptionFirst = ""; + $categoryDescriptionremain = ""; $_category = Mage::registry('current_category'); - if($_category){ if($_description=$_category->getDescription()){ $categoryDescription = strip_tags($_description); } if($_category->getName()){ $labelH1 = $_category->getName(); - } + } + if($categoryDescription){ + $categoryDescriptionFirst = substr($categoryDescription, 0, 200); + $categoryDescriptionremain = substr($categoryDescription, 200); + } } - ?> <!DOCTYPE html> <html lang="<?php echo $this->getLang() ?>"> @@ -102,17 +105,16 @@ html lang="en" class="ie-latest ie"> <div class="row"> <div class="col-main col-sm-9 f-right main-heading"> <?php if($labelH1){?> - <h1><?php echo $labelH1 ?></h1> + <h1><?php echo $labelH1; ?></h1> + <div id="example" class="more-btn" > + <?php if($categoryDescriptionFirst){?> + <span><?php echo $categoryDescriptionFirst;?><?php if($categoryDescriptionremain){?><span id="spacer"> </span><span id="example-show" class="showLink" onclick="showHide('example');return false;">more...</span></span><span id="remainContent" style="display:none"><?php echo $categoryDescriptionremain;?> <span id="example-hide" class="showLink" onclick="showHide('example');return false;">less</span><?php }?></span> + <?php }?> + </div> <?php } ?> - <div class="comment more"> </div> + <div class="comment more"> </div> <?php echo $this->getChildHtml('global_messages') ?> <?php echo $this->getChildHtml('content') ?> - <?php if($pageVal <= 1) {?> - <div id="example" class="more-btn" > - <?php echo $categoryDescription ?> - </div> - <?php } ?> - </div> <div class="col-left sidebar f-left col-sm-3"> <div class="filter-header"> diff --git a/app/design/frontend/smartwave/porto/template/trackorder/login.phtml b/app/design/frontend/smartwave/porto/template/trackorder/login.phtml index ded1ab1..8c161bc 100644 --- a/app/design/frontend/smartwave/porto/template/trackorder/login.phtml +++ b/app/design/frontend/smartwave/porto/template/trackorder/login.phtml @@ -80,4 +80,4 @@ var dataForm = new VarienForm('login-form', true); //]]> </script> -</div> \ No newline at end of file +</div> diff --git a/app/design/frontend/smartwave/porto/template/trackorder/trackdetail.phtml b/app/design/frontend/smartwave/porto/template/trackorder/trackdetail.phtml index 8bfd229..af90362 100644 --- a/app/design/frontend/smartwave/porto/template/trackorder/trackdetail.phtml +++ b/app/design/frontend/smartwave/porto/template/trackorder/trackdetail.phtml @@ -1,256 +1,228 @@ -<style> -.track_order { - border:1px solid #ddd; padding: 0px; -} -.mt20 { - margin-bottom: 20px; -} -.ptb5 { - padding-top: 5px; - padding-bottom: 5px; -} -.pt15 { - padding-top: 15px; -} -.orderDetails { - min-width:80px; display:inline-block; font-weight: bold; -} -.customerDetails { - background-color:#f5f5f5; padding: 10px; border-left: 1px solid #ddd; -} -.customerDetails .header { - border-bottom: 1px solid #ddd; display: inline-block; width: 100%; padding: 5px; font-weight: bold; -} -tr.sub-header { - background-color:#fafafa; -} -.p5 { - padding:5px; -} -.order_complete { - color: #3c763d; -} -.order_pending { - color: #f00; -} -.customerDetails .header { - z-index:0; -} -.track-data-table thead th, .track-data-table tbody td { - padding:10px; -} -.track-data-table .col-sm-12, .col-sm-3, .col-sm-7, .col-sm-2 { - padding-left: 0; - padding-right: 0; -} -.track-products { - background-color:#fcfcfc; - font-weight:bold; -} -</style> - - <?php $order = $this->getTrackOrder(); $shipTrack = array(); - -$helper = Mage::helper('trackorder'); - -if ($order) { - $shipTrack = $this->getTrackInfo($order); -} - -if ($order->getStatusLabel()) { ?> - <div class="page-title title-buttons"> - <h1><?php echo $this->__('Track Order'); ?></h1> - </div> - - <div class="clearfix col-md-12 mt20 track_order"> - <div class="col-md-8 pt15"> - <div class="p5"> - <span class="orderDetails">Order No</span> - <span> : </span> - <span><strong><?php echo $order->getIncrementId(); ?></strong></span> - </div> - <div class="p5"> - <span class="orderDetails">Date</span> - <span> : </span> - <span><?php echo $order->getCreatedAtDate(); ?></span> - </div> - <div class="p5"> - <span class="orderDetails">Order Status</span> - <span> : </span> - <span> - <strong><?php - if(preg_match('/pending_/i', $order->getStatus())) { - $ordStatus = $helper->orderStatus('pending'); - } else { - $ordStatus = $helper->orderStatus(strtolower($order->getStatus())); - } - - if(empty($ordStatus)) { - $ordStatus = $order->getStatus(); - } - echo $ordStatus; - ?></strong> - </span> - </div> - </div> - <div class="col-md-4 customerDetails"> - <div class="header"> - Customer Details - </div> - <div class="fs12"> - <div class="p5"> - <span class="orderDetails">Customer Name : </span> - <span><?php echo $order->getCustomerFirstname()." ".$order->getCustomerLastname(); ?></span> - </div> - <div class="p5"> - <span class="orderDetails">Customer Email : </span> - <span><?php echo $order->getCustomerEmail() ;?></span> - </div> - </div> - </div> - </div> - - - <div class="clearfix"> - <?php - if(sizeof($shipTrack) > 0) { - $shipStr = ''; - - foreach($shipTrack as $shipid => $_result) { - - if(sizeof($_result) > 0) { - $shipRowStr = ''; - - foreach($_result as $track) { - - if(isset($track['title']) && isset($track['track_number']) && $track['track_number']) - { - if($trackUrl = $helper->getTrackUrl($track['title'], $track['track_number'])) { - $tUrl = '<a href="'.$trackUrl.'" onclick="this.target=\'_blank\'"><button class="btn btn-default">'.$this->__('Track Shipment').'</button></a>'; - } else { - $tUrl = '<div class="order_pending ptb5">No tracking url found.</div>'; - } - - $shipRowStr .= ' - - <table class="data-table track-data-table mt20"> - <thead> - <tr class="sub-header"> - <td colspan="3"> - <div class="col-sm-12"> - <div class="col-sm-3 ptb5"> - <h3>'.$this->__('AWB No: ').' <strong>'.$this->escapeHtml($track['track_number']).'</strong></h3> - </div> - <div class="col-sm-7 ptb5"> - <h3>'.$this->__('Shipping Provider: ').' <strong> '.($track['title'] ? $this->escapeHtml($track['title']) : $this->__('N/A')).'</strong></h3> - </div> - <div class="col-sm-2 text-right">'.$tUrl.'</div> - </div> - </td> - </tr> - </thead> - </tr>'; - - if(isset($track['track_number']['products']) && count($track['track_number']['products']) > 0) { - $shipRowStr .= ' - <tr class="track-products"> - <th>#</th> - <th>Product Name</th> - <th class="text-center">Qty</th> - </tr>'; - $pCnt = 1; - foreach($_result['products'] as $val) { - $shipRowStr .= ' <tr> - <td>'.$pCnt++.'</td> - <td>'.$val['name'].'</td> - <td class="text-center">'.number_format($val['qty']).'</td> - </tr>'; - } - } - - $shipRowStr .= '</table>'; - } - - } // end of foreach tracking information - - $shipStr .= $shipRowStr; - } else { - //$shipStr .= '<tr><td colspan="3"><div class="col-md-12 error-msg">'.$this->__('There is no tracking available for this shipment.').'</div></td></tr>'; + if ($order) { + $shipments = $order->getShipmentsCollection(); + foreach ($shipments as $shipment){ + $increment_id = $shipment->getIncrementId(); + $tracks = $shipment->getTracksCollection(); + + $trackingInfos=array(); + foreach ($tracks as $track){ + $trackingInfos[] = $track->getNumberDetail(); + } + $shipTrack[$increment_id] = $trackingInfos; } - - } // end of shipment loop - - echo $shipStr.''; - } else { - echo '<div class="col-md-12 error-msg">'.$this->__('Your Order is not yet Dispatched.').'</div>'; - } - ?> - </div> - - - - <?php - // Display Order History - - $orderHistoryAll = $order->getAllStatusHistory(); - ?> - <div class="clearfix mt20"> + } +?> +<?php if ($order->getStatusLabel()): ?> +<?php $_results = $shipTrack; ?> +<div class="page-title title-buttons"> + <h1><?php echo $this->__('Tracking Information'); ?></h1> +</div> + +<p><?php echo $this->__("Your Order Status is :")?> <strong><?php echo $order->getStatusLabel() ?></strong></p> + +<?php if(sizeof($_results)>0): ?> +<?php foreach($_results as $shipid => $_result): ?> + <?php if($shipid): ?> + <h4><?php echo $this->__('Shipment #').$shipid; ?></h4> + <?php endif; ?> + <?php if(sizeof($_result)>0): ?> + <?php $rowCount = sizeof($_result); $counter = 1; ?> + <?php foreach($_result as $track): ?> <table class="data-table track-data-table"> <thead> + <tr> + <th colspan=2><?php echo $this->__('Shipping Details: ' ) ?></th> + </tr> + </thead> + + <col width="70%" /> + <col /> + <tbody> + <?php if(is_object($track)): ?> <tr> - <th colspan="2"><?php echo $this->__('Order Status History' ) ?></th> + <th><?php echo $this->__('Tracking Number:'); ?></th> + <td><?php echo $track->getTracking(); ?></td> </tr> - </thead> - <tbody> - <tr class="sub-header"> - <th class="col-sm-3">Status</th><th class="col-sm-3">Date</th> + <?php if ($track->getCarrierTitle()): ?> + <tr> + <th><?php echo $this->__('Carrier:'); ?></th> + <td><?php echo $track->getCarrierTitle(); ?></td> </tr> - <?php - $historyStr = ''; - $prevStatus = ''; - array_reverse($orderHistoryAll); - foreach($orderHistoryAll as $stat) { - if($prevStatus != $stat->getStatus()) { - if(preg_match('/pending_/i', $stat->getStatus())) { - $ordStatus = $helper->orderStatus('pending'); - } else { - $ordStatus = $helper->orderStatus(strtolower($stat->getStatus())); - } - - if(empty($ordStatus)) { - $ordStatus = $stat->getStatusLabel(); - } - $historyStr .= ' + <?php endif; ?> + <?php if($track->getErrorMessage()): ?> + <tr> + <th><?php echo $this->__('Error:'); ?></th> + <td class="error"><?php if ((bool) Mage::getStoreConfig('contacts/contacts/enabled')) : ?><a href="<?php echo $this->getUrl('contacts') ?>" onclick="this.target='_blank'"><?php echo $this->__('Click here') ?></a><?php echo $this->__(' to get details or '); endif; echo $this->__('email us at '); ?><a href="mailto:<?php echo Mage::getStoreConfig('trans_email/ident_support/email'); ?>"><?php echo Mage::getStoreConfig('trans_email/ident_support/email') ?></a> + + </td> + </tr> + <?php elseif($track->getTrackSummary()): ?> + <tr> + <th><?php echo $this->__('Info:'); ?></th> + <td><?php echo $track->getTrackSummary(); ?></td> + </tr> + <?php elseif($track->getUrl()): ?> + <tr> + <th><?php echo $this->__('Track:'); ?></th> + <td><a href="<?php echo $track->getUrl(); ?>" onclick="this.target='_blank'"><?php echo $this->__('Click here to get details'); ?></a></td> + </tr> + <?php else: ?> + <?php if ($track->getStatus()): ?> + <tr> + <th><?php echo $this->__('Status:'); ?></th> + <td><?php echo $track->getStatus(); ?></td> + </tr> + <?php endif; ?> + + <?php if ($track->getDeliverydate()): ?> + <tr> + <th><?php echo $this->__('Delivered on:'); ?></th> + <td><?php echo $this->formatDeliveryDateTime($track->getDeliverydate(),$track->getDeliverytime()); ?></td> + </tr> + <?php endif; ?> + + <?php if ($track->getSignedby()): ?> + <tr> + <th><?php echo $this->__('Signed by:'); ?></th> + <td><?php echo $track->getSignedby(); ?></td> + </tr> + <?php endif; ?> + + <?php if ($track->getDeliveryLocation()): ?> + <tr> + <th><?php echo $this->__('Delivered to:'); ?></th> + <td><?php echo $track->getDeliveryLocation(); ?></td> + </tr> + <?php endif; ?> + + <?php if ($track->getShippedDate()): ?> + <tr> + <th><?php echo $this->__('Shipped or billed on:'); ?></th> + <td><?php echo $track->getShippedDate(); ?></td> + </tr> + <?php endif; ?> + + <?php if ($track->getService()): ?> + <tr> + <th><?php echo $this->__('Service Type:'); ?></th> + <td><?php echo $track->getService(); ?></td> + </tr> + <?php endif; ?> + + <?php if ($track->getWeight()): ?> + <tr> + <th><?php echo $this->__('Weight:'); ?></th> + <td><?php echo $track->getWeight(); ?></td> + </tr> + <?php endif; ?> + + <?php endif; ?> + <?php elseif(isset($track['title']) && isset($track['number']) && $track['number']): ?> + <!--if the tracking is custom value--> + <tr> + <th><?php echo $this->__('Shipping Carrier'); ?>:</th> + <td><?php echo ($track['title'] ? $this->escapeHtml($track['title']) : $this->__('N/A')); ?></td> + </tr> + <tr> + <th><?php echo $this->__('AWB Number'); ?>:</th> + <td><?php echo (isset($track['number']) ? $this->escapeHtml($track['number']) : ''); ?></td> + </tr> + <?php endif; ?> + </tbody> + </table> + + <?php if (is_object($track) && sizeof($track->getProgressdetail())>0): ?> + <table class="data-table" id="track-history-table-<?php echo $track->getTracking(); ?>"> + <col /> + <col width="1" /> + <col width="1" /> + <col /> + <thead> <tr> - <td>'.$ordStatus.'</td> - <td>'.$stat->getCreatedAtDate().'</td> - </tr>'; - } - $prevStatus = $stat->getStatus(); - } - echo $historyStr; - ?> - </tbody> + <th><?php echo $this->__('Location') ?></th> + <th><?php echo $this->__('Date') ?></th> + <th><?php echo $this->__('Local Time') ?></th> + <th><?php echo $this->__('Description') ?></th> + </tr> + </thead> + <tbody> + <?php foreach($track->getProgressdetail() as $_detail): ?> + <?php $_detailDate = (isset($_detail['deliverydate']) ? $this->formatDeliveryDate($_detail['deliverydate']) : '') ?> + <?php $_detailTime = (isset($_detail['deliverytime']) ? $this->formatDeliveryTime($_detail['deliverytime'], $_detailDate) : '') ?> + <tr> + <td><?php echo (isset($_detail['deliverylocation']) ? $_detail['deliverylocation'] : ''); ?></td> + <td><?php echo $_detailDate ?></td> + <td><?php echo $_detailTime ?></td> + <td><?php echo (isset($_detail['activity']) ? $_detail['activity'] : '') ?></td> + </tr> + <?php endforeach; ?> + </tbody> + </table> + + <script type="text/javascript">decorateTable('track-history-table-<?php echo $track->getTracking(); ?>');</script> + <?php endif; ?> + <?php if($counter!=$rowCount): ?> + <?php endif; ?> + <?php $counter++; ?> + + <?php endforeach; ?> + <!--end for each tracking information--> + <?php else: ?> + <p><?php echo $this->__('There is no tracking available for this shipment.'); ?></p> + <?php endif; ?> + +<?php endforeach; ?> +<?php else: ?> + <div><?php echo $this->__('There is no tracking available.'); ?></div> +<?php endif; ?> +<div class="order-history"> + <?php $orderHistoryAll = $order->getAllStatusHistory(); ?> + <?php $orderHistory = array_reverse($orderHistoryAll); ?> + <?php $check = array('Processing'=>0,'Pending'=>0,'Pending Payment'=>0,'Suspected Fraud'=>0,'Payment Review'=>0,'On Hold'=>0,'Complete'=>0,'Closed'=>0,'Canceled'=>0,'PayPal Canceled Reversal'=>0,'Dispatched'=>0,'Pending PayPal'=>0,'Partially Dispatched'=>0,'PayPal Reversed'=>0,'Partially Fulfillable'=>0,'Confirm'=>0,'Fulfillable'=>0,'Delivered'=>0); ?> + <?php $orderHistoryUnique = array(); ?> + <?php $orderHistoryUniqueIndividual = array(); ?> + <table class="order-status"> + <thead> + <tr> + <td colspan=2>Status History</td> + <!--<th>Status</th>--> + <tr> + </thead> + <col width="70%" /> + <col /> + <tbody> + <?php foreach($orderHistory as $stat): ?> + <?php if($check[$stat->getStatusLabel()] == 0): ?> + <!-- <tr> --> + <!-- <td> --><?php $cd = $stat->getCreatedAtDate(); ?> <!-- </td> --> + <!-- <td> --><?php $gsl = $stat->getStatusLabel(); ?> <!-- </td> --> + <?php $check[$stat->getStatusLabel()] = 1; ?> + <?php $orderHistoryUniqueIndividual = array($cd,$gsl); ?> + <?php array_push($orderHistoryUnique,$orderHistoryUniqueIndividual); ?> + <!-- </tr> --> + <?php endif; ?> + <?php endforeach; ?> +<!-- </tbody> + + <tbody> --> + <?php $orderHistoryUniqueReverse = array_reverse($orderHistoryUnique); ?> + <?php foreach($orderHistoryUniqueReverse as $date): ?> + <tr> + <td><?php echo $date[0]; ?></td> + <td><?php echo $date[1]; ?></td> + </tr> + <?php endforeach; ?> + </tbody> + </table> - </div> - -<?php } else { ?> - <div class="page-title title-buttons"> - <h1><?php echo $this->__('No Order or Tracking Information Available'); ?></h1> - </div> -<?php } ?> - -<div class="clearfix mt20"> - <button class="button pull-left" onclick="history.back();"><span>Back</span></button> - <?php - $getLoggedInUserEmail = $helper->getLoggedInUserEmail(); - if(!empty($getLoggedInUserEmail)) { - ?> - <a href="<?php echo $helper->getViewOrderUrl($order->getId()); ?>"><button class="button pull-right"><span>View Order Details</span></button></a> - <?php - } - ?> -</div> \ No newline at end of file + +</div> +<?php else: ?> +<div class="page-title title-buttons"> + <h1><?php echo $this->__('No Order or Tracking Information Available'); ?></h1> +</div> +<?php endif; ?> +<div><button class="button" onclick="history.back();"><span>Back</span></button></div> diff --git a/app/design/frontend/smartwave/porto/template/trackorder/trackorder.phtml b/app/design/frontend/smartwave/porto/template/trackorder/trackorder.phtml index 5731313..4729b4e 100644 --- a/app/design/frontend/smartwave/porto/template/trackorder/trackorder.phtml +++ b/app/design/frontend/smartwave/porto/template/trackorder/trackorder.phtml @@ -1,75 +1,76 @@ <?php -if(Mage::getStoreConfig('trackorder/trackorder_general/enabled')) { + if(Mage::getStoreConfig('trackorder/trackorder_general/enabled')): + ?> + <div class="page-title"><h1><?php echo $this->__('Track Your Order ') ?></h1></div> + <div class="form-list"> + <form name="track_order" id="track_order" action="detail" method="post"> + <ul class="form-list"> + <li> + <label for="order_id" class="required"><em>*</em><?php echo $this->__('Order Id') ?></label> + <div class="input-box"> + <input type="text" name="order_id" id="order_id" value="" title="" class="input-text required-entry" /> + </div> + </li> + <li> + <label for="email_address" class="required"><em>*</em><?php echo $this->__('Email Address') ?></label> + <div class="input-box" > + <input type="text" name="email" id="email_address" value="" title="<?php echo $this->__('Email Address') ?>" class="input-text validate-email required-entry" /> + </div> + </li> + </ul> + <div class="buttons-set"> + <button type="submit" class="button" title="<?php echo $this->__('Track Order') ?>" name="track" id="track"><span><span><?php echo $this->__('Track Order') ?></span></span></button> + </div> -$trackHelper = Mage::helper('trackorder'); + </form> + <div id="loading-details" class="loading-details" style="display:none"> + <div id="loading-mask" > + <p class="loader" id="loading_mask_loader"><img src="<?php echo $this->getSkinUrl('trackorder/images/ajax-loader-tr.gif') ?>" alt="<?php echo Mage::helper('adminhtml')->__('Loading...') ?>"/><br/><?php echo $this->__('Please wait...') ?></p> + </div> + </div> + </div> -?> -<style type="text/css"> -@media (min-width: 981px) { - .track_order_index { - width: 700px; - margin: 0 auto; - } -} -.track-data-table em { - color:red; -} -</style> + <div id="oderinfo" class="order-info-message"></div> -<div class="track_order_index"> - <div class="col-md-12"> - <div><?php echo $this->getMessagesBlock()->getGroupedHtml() ?></div> - <div class="page-title"><h1><?php echo $this->__('Track Your Order ') ?></h1></div> - <div class="form-list"> - <form name="track_order" id="track_order" action="<?php echo $trackHelper->getTrackorderUrl(); ?>detail" method="post"> - <table class="data-table track-data-table"> - <thead> - <tr> - <th colspan="2"><h4><?php echo $this->__('Order Details') ?></h4></th> - </tr> - <tr> - <td colspan="2"><?php echo $this->__('Please enter below details') ?></td> - </tr> - </thead> - <tbody> - <tr> - <td><em>* </em> <?php echo $this->__('Order Id') ?></td> - <td> - <input type="text" name="order_id" id="order_id" value="" title="" class="input-text required-entry" /> - </td> - </tr> - <tr> - <td><em>* </em> <?php echo $this->__('Email Address') ?></td> - <td><input type="text" name="email" id="email_address" value="<?php echo $trackHelper->getLoggedInUserEmail(); ?>" title="<?php echo $this->__('Email Address') ?>" class="input-text validate-email required-entry" /></td> - </tr> - <tr> - <td class="text-right" colspan="2"> - <div class="buttons-set"><button type="submit" class="button" title="<?php echo $this->__('Track Order') ?>" name="track" id="track"><span><span><?php echo $this->__('Track Order') ?></span></span></button></div> - </td> - </tr> - </tbody> - </table> - - </form> - <div id="loading-details" class="loading-details" style="display:"> - <div id="loading-mask" > - <p class="loader" id="loading_mask_loader"><img src="<?php echo $this->getSkinUrl('trackorder/images/ajax-loader-tr.gif') ?>" alt="<?php echo Mage::helper('adminhtml')->__('Loading...') ?>"/><br/><?php echo $this->__('Please wait...') ?></p> - </div> - </div> - </div> - </div> <script type="text/javascript"> var validateForm = new VarienForm('track_order', true); + </script> + <script type="text/javascript"> + + function sendAjax(frmId,url){ + if (!validateForm.validator.validate()) { + return; + } + var data = $(frmId).serialize(this); + $("loading-details").show(); + new Ajax.Updater( + { + success:"oderinfo" + }, + url, + { + asynchronous:true, + evalScripts:false, + onComplete:function(request, json){ + $("loading-details").hide(); + return false; + }, + onLoading:function(request, json){}, + parameters:data + } + ); + return false; + } + </script> -</div> -<?php -} else { - $url = Mage::getBaseUrl(); - Mage::app()->getFrontController()->getResponse()->setRedirect($url); -} -?> + <?php else: ?> + <?php + $url = Mage::getBaseUrl(); + Mage::app()->getFrontController()->getResponse()->setRedirect($url); + ?> + <?php endif; ?> diff --git a/app/etc/modules/Tolexo_Categoryreorder.xml b/app/etc/modules/Tolexo_Categoryreorder.xml deleted file mode 100644 index 0a402c3..0000000 --- a/app/etc/modules/Tolexo_Categoryreorder.xml +++ /dev/null @@ -1,10 +0,0 @@ -<?xml version="1.0"?> - -<config> - <modules> - <Tolexo_Categoryreorder> - <active>true</active> - <codePool>local</codePool> - </Tolexo_Categoryreorder> - </modules> -</config> diff --git a/app/etc/modules/Tolexo_OrderTags.xml b/app/etc/modules/Tolexo_OrderTags.xml deleted file mode 100644 index e279867..0000000 --- a/app/etc/modules/Tolexo_OrderTags.xml +++ /dev/null @@ -1,10 +0,0 @@ -<?xml version="1.0"?> -<config> - <modules> - <Tolexo_OrderTags> - <active>true</active> - <codePool>local</codePool> - <version>0.0.1</version> - </Tolexo_OrderTags> - </modules> -</config> \ No newline at end of file diff --git a/cancelorder/cancelBulkOrderApi.php b/cancelorder/cancelBulkOrderApi.php deleted file mode 100755 index dea4121..0000000 --- a/cancelorder/cancelBulkOrderApi.php +++ /dev/null @@ -1,171 +0,0 @@ -<?php - -error_reporting(E_ALL); -ini_set('display_errors', '1'); -$config = parse_ini_file("conf.ini"); -$csv_path = !empty($argv[1]) ? $argv[1] : ''; -$apiHost = !empty($config) ? $config['protocol'] . "://" . $config['host'] . ":" . $config['port'] : ''; - -if (!empty($csv_path) && !empty($apiHost)) { - $csv_data = csv_to_array($csv_path); - if (empty($csv_data)) { - echo "\n Invalid CSV format or file is inaccessible\n"; - } else { - $successCount = 0; - foreach ($csv_data as $row) { - $response = cancelFullOrder($row, $apiHost); - if (!empty($response['FullResponse']['Data']['TotalCancel']) && $response['FullResponse']['Data']['TotalCancel'] > 0) { - $successCount++; - echo "\n" . $row['order_id'] . "-Order successfully cancelled."; - if (count($response['FullResponse']['Status']['Errors']) > 0) { - echo "\n\t Still there are some errors during processing: "; - foreach ($response['FullResponse']['Status']['Errors'] as $error) { - echo "\n\t * " . $error['Msg']; - } - } - echo "\n\n"; - if (!empty($response['FullResponse']['WmsData'])) { - foreach ($response['FullResponse']['WmsData'] as $wmsData) { - if (empty($wmsData['Vendor_Facility'])) { - echo "Vendor unavailable for WMS\n"; - } else { - $wmsResponse = cancelWmsOrder( - $apiHost, - $wmsData['Item_Id'], - $wmsData['Order_Id'], - $wmsData['Qty_Ordered'] - ($wmsData['Qty_Invoiced'] + $wmsData['Qty_Canceled']), - $wmsData['Vendor_Facility'] - ); - - if ($wmsResponse['wmsServiceResponse']['Status']['HttpStatusCode'] == "500") { - echo "\n\t * WMS update unsuccessfull for ".$wmsData['Sku']; - if (count($wmsResponse['wmsServiceResponse']['Status']['Errors']) > 0) { - foreach ($wmsResponse['wmsServiceResponse']['Status']['Errors'] as $wms_error) { - echo "\n\t\t # " . $wms_error['Msg']; - } - echo "\n\n"; - } - } - } - } - } else { - echo "\n\t * WMS Data unavailable for WMS update\n\n"; - } - } else { - echo "\n" . $row['order_id'] . "-Order not cancelled successfully due to below errors:"; - if (count($response['FullResponse']['Status']['Errors']) > 0) { - foreach ($response['FullResponse']['Status']['Errors'] as $error) { - echo "\n\t * " . $error['Msg']; - } - echo "\n\n"; - } else { - echo "\n\t * Api not working\n\n"; - } - } - } - echo "Total Cancel request: " . count($csv_data) . "\n"; - echo "Total Cancel success: " . $successCount . "\n\n"; - } -} else { - echo "\n Please provide CSV path & Api Url\n"; -} - -/* - * Function for cancel of single order - * - * @author Archana Singh<archana.singh@tolexo.com> - * @param $canclOrderDataRow Array - * @param $apiHost String - * - * @return Array - */ - -function cancelFullOrder($canclOrderDataRow, $apiHost) { - $orderId = trim($canclOrderDataRow['order_id']); // Order Need To Cancel - $orderCancelStatus = trim($canclOrderDataRow['cancel_status']); // Status Need To update of Cancel Order - $orderCancelReason = trim($canclOrderDataRow['cancelled_order_reason']); //Reasone For Order Cancel - $notify = true; - - $request = array("RequestData" => - array( - array( - "order_id" => $orderId, - "cancel_status" => $orderCancelStatus, - "cancelled_order_reason" => $orderCancelReason, - "notify" => $notify - ) - ) - ); - $requestJson = json_encode($request); - - $url = $apiHost . "/order/v1/cancel/full"; - $ch = curl_init(); - curl_setopt($ch, CURLOPT_URL, $url); - curl_setopt($ch, CURLOPT_POSTFIELDS, $requestJson); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); - curl_setopt($ch, CURLOPT_ENCODING, 'utf-8'); - curl_setopt($ch, CURLOPT_POST, 1); - curl_setopt($ch, CURLOPT_HTTPHEADER, array( - 'Content-Type: application/json; - charset=utf-8', - )); - $responseJson = curl_exec($ch); - curl_close($ch); - $response = json_decode($responseJson, true); - return $response; -} - -/* - * Formats CSV into Array - * - * @author Archana Singh<archana.singh@tolexo.com> - * @param $filename String - * @param $delimiter String - * - * @return Array - */ - -function csv_to_array($filename = '', $delimiter = ',') { - if (!file_exists($filename) || !is_readable($filename)) - return FALSE; - $header = NULL; - $data = array(); - if (($handle = fopen($filename, 'r')) !== FALSE) { - while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE) { - if (!$header) - $header = $row; - else - $data[] = array_combine($header, $row); - } - fclose($handle); - } - return $data; -} - -function cancelWmsOrder($apiHost, $itemId, $orderId, $qtyToCancel, $vendor_facility) { - $request = array( - "ItemId" => $itemId, - "OrderId" => $orderId, - "QtyToCancel" => $qtyToCancel, - "VendorFacility" => $vendor_facility - ); - $requestJson = json_encode($request); - - $url = $apiHost . "/order/v1/cancel/wmsupdate"; - $ch = curl_init(); - curl_setopt($ch, CURLOPT_URL, $url); - curl_setopt($ch, CURLOPT_POSTFIELDS, $requestJson); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); - curl_setopt($ch, CURLOPT_ENCODING, 'utf-8'); - curl_setopt($ch, CURLOPT_POST, 1); - curl_setopt($ch, CURLOPT_HTTPHEADER, array( - 'Content-Type: application/json; - charset=utf-8', - )); - $responseJson = curl_exec($ch); - curl_close($ch); - $response = json_decode($responseJson, true); - return $response; -} - -?> diff --git a/cancelorder/cancelPartialOrderApi.php b/cancelorder/cancelPartialOrderApi.php deleted file mode 100755 index 9c64394..0000000 --- a/cancelorder/cancelPartialOrderApi.php +++ /dev/null @@ -1,171 +0,0 @@ -<?php - -error_reporting(E_ALL); -ini_set('display_errors', '1'); -$config = parse_ini_file("conf.ini"); -$csv_path = !empty($argv[1]) ? $argv[1] : ''; -$apiHost = !empty($config) ? $config['protocol'] . "://" . $config['host'] . ":" . $config['port'] : ''; - -if (!empty($csv_path) && !empty($apiHost)) { - $csv_data = csv_to_array($csv_path); - if (empty($csv_data)) { - echo "\n Invalid CSV format or file is inaccessible\n"; - } else { - $successCount = 0; - foreach ($csv_data as $row) { - $response = cancelFullOrder($row, $apiHost); - if (!empty($response['FullResponse']['Data']['TotalCancel']) && $response['FullResponse']['Data']['TotalCancel'] > 0) { - $successCount++; - echo "\n" . $row['sku'] . "-Item successfully cancelled."; - if (count($response['FullResponse']['Status']['Errors']) > 0) { - echo "\n\t Still there are some errors during processing: "; - foreach ($response['FullResponse']['Status']['Errors'] as $error) { - echo "\n\t * " . $error['Msg']; - } - } - echo "\n\n"; - if (!empty($response['FullResponse']['WmsData'])) { - foreach ($response['FullResponse']['WmsData'] as $wmsData) { - if (empty($wmsData['Vendor_Facility'])) { - echo "Vendor unavailable for WMS\n"; - } else { - $wmsResponse = cancelWmsOrder( - $apiHost, - $wmsData['Item_Id'], - $wmsData['Order_Id'], - $wmsData['Qty_Ordered'] - ($wmsData['Qty_Invoiced'] + $wmsData['Qty_Canceled']), - $wmsData['Vendor_Facility'] - ); - - if ($wmsResponse['wmsServiceResponse']['Status']['HttpStatusCode'] == "500") { - echo "\n\t * WMS update unsuccessfull for " . $wmsData['Sku']; - if (count($wmsResponse['wmsServiceResponse']['Status']['Errors']) > 0) { - foreach ($wmsResponse['wmsServiceResponse']['Status']['Errors'] as $wms_error) { - echo "\n\t\t # " . $wms_error['Msg']; - } - echo "\n\n"; - } - } - } - } - } else { - echo "\n\t * WMS Data unavailable for WMS update\n\n"; - } - } else { - echo "\n" . $row['sku'] . "-Item not cancelled successfully due to below errors:"; - if (count($response['FullResponse']['Status']['Errors']) > 0) { - foreach ($response['FullResponse']['Status']['Errors'] as $error) { - echo "\n\t * " . $error['Msg']; - } - echo "\n\n"; - } else { - echo "\n\t * Api not working\n\n"; - } - } - } - echo "Total Cancel request: " . count($csv_data) . "\n"; - echo "Total Cancel success: " . $successCount . "\n\n"; - } -} else { - echo "\n Please provide CSV path & Api Url\n"; -} - -/* - * Function for cancel of single order - * - * @author Archana Singh<archana.singh@tolexo.com> - * @param $canclOrderDataRow Array - * @param $apiHost String - * - * @return Array - */ - -function cancelFullOrder($canclOrderDataRow, $apiHost) { - $orderId = trim($canclOrderDataRow['order_id']); // Order Need To Cancel - $orderCancelReason = trim($canclOrderDataRow['cancelled_order_reason']); //Reasone For Order Cancel - $orderCancelSku = trim($canclOrderDataRow['sku']); - $notify = true; - - $request = array("RequestData" => - array( - array( - "order_id" => $orderId, - "cancelled_order_reason" => $orderCancelReason, - "sku" => $orderCancelSku, - "notify" => $notify - ) - ) - ); - $requestJson = json_encode($request); - - $url = $apiHost . "/order/v1/cancel/partial"; - $ch = curl_init(); - curl_setopt($ch, CURLOPT_URL, $url); - curl_setopt($ch, CURLOPT_POSTFIELDS, $requestJson); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); - curl_setopt($ch, CURLOPT_ENCODING, 'utf-8'); - curl_setopt($ch, CURLOPT_POST, 1); - curl_setopt($ch, CURLOPT_HTTPHEADER, array( - 'Content-Type: application/json; - charset=utf-8', - )); - $responseJson = curl_exec($ch); - curl_close($ch); - $response = json_decode($responseJson, true); - return $response; -} - -/* - * Formats CSV into Array - * - * @author Archana Singh<archana.singh@tolexo.com> - * @param $filename String - * @param $delimiter String - * - * @return Array - */ - -function csv_to_array($filename = '', $delimiter = ',') { - if (!file_exists($filename) || !is_readable($filename)) - return FALSE; - $header = NULL; - $data = array(); - if (($handle = fopen($filename, 'r')) !== FALSE) { - while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE) { - if (!$header) - $header = $row; - else - $data[] = array_combine($header, $row); - } - fclose($handle); - } - return $data; -} - -function cancelWmsOrder($apiHost, $itemId, $orderId, $qtyToCancel, $vendor_facility) { - $request = array( - "ItemId" => $itemId, - "OrderId" => $orderId, - "QtyToCancel" => $qtyToCancel, - "VendorFacility" => $vendor_facility - ); - $requestJson = json_encode($request); - - $url = $apiHost . "/order/v1/cancel/wmsupdate"; - $ch = curl_init(); - curl_setopt($ch, CURLOPT_URL, $url); - curl_setopt($ch, CURLOPT_POSTFIELDS, $requestJson); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); - curl_setopt($ch, CURLOPT_ENCODING, 'utf-8'); - curl_setopt($ch, CURLOPT_POST, 1); - curl_setopt($ch, CURLOPT_HTTPHEADER, array( - 'Content-Type: application/json; - charset=utf-8', - )); - $responseJson = curl_exec($ch); - curl_close($ch); - $response = json_decode($responseJson, true); - return $response; -} - -?> diff --git a/cancelorder/conf.ini b/cancelorder/conf.ini deleted file mode 100755 index 06b142f..0000000 --- a/cancelorder/conf.ini +++ /dev/null @@ -1,4 +0,0 @@ -protocol = http -host = localhost -port = 8090 - diff --git a/creatOrder.php b/creatOrder.php index 6ab07be..da7117b 100644 --- a/creatOrder.php +++ b/creatOrder.php @@ -1,96 +1,64 @@ <?php -error_reporting(E_ALL); -ini_set('display_errors', '1'); +//error_reporting(E_ALL); +//ini_set('display_errors', '1'); require_once('app/Mage.php'); Mage::app(); +$resource = Mage::getSingleton('core/resource'); +$readConnection = $resource->getConnection('core_read'); -class Tolexo_Utils_Reorder { + // Set path to CSV file - private $readConnection; - private $parameters; - private $seprator; - private $orderSuffix; - - function __construct($listParam = array()) { - - $this->parameters = $listParam; - $resource = Mage::getSingleton('core/resource'); - $this->readConnection = $resource->getConnection('core_read'); - $this->seprator = "<br/>"; - $this->orderSuffix = "R"; +//$csvFile = '/home/vivek/miniOrderReport.csv'; +//$orderCsvDataNew = csv_to_array($csvFile); +if(!$_FILES['fileToUpload']['tmp_name']){ + echo "file upload error";exit; +} +$orderCsvDataNew = csv_to_array($_FILES['fileToUpload']['tmp_name']); + +$finalArr = _group_by($orderCsvDataNew,"order_no"); +$successCount = 0; +foreach($finalArr as $row){ + + + $tmp = array(); + $orderIncrementId =$row[0]['order_no']; + foreach($row as $k => $item){ //print_r($row);exit; + $tmp[$item['product_id']] = $row[$k]; } - - public function run() { - $params = $this->parameters; - if (isset($params) && $params[0] != "") { - $this->seprator = "\n"; - $csvFile = $params[0]; - if (file_exists($csvFile)) { - $orderCsvDataNew = $this->csv_to_array($csvFile); - } else { - echo "File Path incorrect"; - exit; - } - } else { - if (!$_FILES['fileToUpload']['tmp_name']) { - echo "File upload error"; - exit; - } else { - $orderCsvDataNew = $this->csv_to_array($_FILES['fileToUpload']['tmp_name']); - } - } - - - if (!empty($orderCsvDataNew)) { - $finalArr = $this->_group_by($orderCsvDataNew, "order_no"); - $successCount = 0; - - if (isset($_POST['multi_seller']) && $_POST['multi_seller'] > 0) { - $this->orderSuffix = "M"; - } - foreach ($finalArr as $row) { - $tmp = array(); - $orderIncrementId = $row[0]['order_no']; - foreach ($row as $k => $item) { - $tmp[$item['product_id']] = $row[$k]; - } - if ($this->reOrderOld($tmp, $orderIncrementId)) { - $successCount++; - } - } - echo "Total reorder request: " . count($finalArr) . $this->seprator; - echo "Total reorder success: " . $successCount . $this->seprator; - } + if(reOrderOld($tmp,$orderIncrementId, $readConnection)){ + $successCount++; } + +} +echo "Total reorder request: ".count($finalArr)."<br/>"; +echo "Total reorder success: ".$successCount."<br/>"; - private function reOrderOld($orderCsvData, $oldOrderId) { - $flag = 0; - $wrongSku = 0; +function reOrderOld($orderCsvData,$oldOrderId,$readConnection){ + $flag = 0; + $wrongSku =0; $rowTotalNotMatch = 0; - $isFullOrderReorderEligible = 1; - $originalIncId = $oldOrderId; - try { - $transaction = Mage::getModel('core/resource_transaction'); + $originalIncId = $oldOrderId ; + try{ + $transaction = Mage::getModel('core/resource_transaction'); $oldOrder = Mage::getModel("sales/order")->loadByIncrementId($oldOrderId); - $orderItems = $oldOrder->getAllItems(); - $customerId = $oldOrder->getCustomerId(); - $shipping = $oldOrder->getShippingAddress(); - $billing = $oldOrder->getBillingAddress(); - $payment = $oldOrder->getPayment(); + $orderItems = $oldOrder->getAllItems();//print_r(count($orderItems));exit; + $customerId = $oldOrder->getCustomerId();//print_r($customerId);exit; + $shipping = $oldOrder->getShippingAddress();//print_r($shipping->getData());exit; + $billing = $oldOrder->getBillingAddress();//print_r($billing->getData());exit; + $payment = $oldOrder->getPayment();//print_r($payment->getData());exit; $storeId = 1; - - if ($oldOrder->canCancel() && ($oldOrder->getState() == "new" || $oldOrder->getState() == "processing")) { + + if($oldOrder->canCancel() && ($oldOrder->getState()=="new" || $oldOrder->getState()=="processing")){ //relation_child_real_id relation_child_id - - $newOrderIdReplace = $oldOrderId . "-" . $this->orderSuffix; - if ($oldOrderId) { + $newOrderIdReplace =$oldOrderId."-R"; + if($oldOrderId){ $orignalIdArr = explode('-', $oldOrderId); $originalIncId = $orignalIdArr[0]; } - - $order = Mage::getModel('sales/order') + + $order = Mage::getModel('sales/order') ->setIncrementId($newOrderIdReplace) - ->setRelationParentId($oldOrder->getId()) + ->setRelationParentId($oldOrder->getId()) ->setRelationParentRealId($oldOrderId) ->setOriginalIncrementId($originalIncId) ->setStoreId(1) @@ -100,7 +68,10 @@ class Tolexo_Utils_Reorder { ->setStore_currency_code('INR') ->setOrder_currency_code('INR'); - if ($customerId) { + + + + if($customerId){ $customer = Mage::getModel('customer/customer')->load($customerId); // set Customer data $order->setCustomerEmail($customer->getEmail()) @@ -112,307 +83,330 @@ class Tolexo_Utils_Reorder { } // set Billing Address - // $billing = $customer->getDefaultBillingAddress(); + // $billing = $customer->getDefaultBillingAddress(); $billingAddress = Mage::getModel('sales/order_address') - ->setStoreId($storeId) - ->setAddressType(Mage_Sales_Model_Quote_Address::TYPE_BILLING) - /* ->setCustomerId($customer->getId()) */ - ->setCustomer_address_id($billing->getEntityId()) - ->setPrefix($billing->getPrefix()) - ->setFirstname($billing->getFirstname()) - ->setMiddlename($billing->getMiddlename()) - ->setLastname($billing->getLastname()) - ->setSuffix($billing->getSuffix()) - ->setCompany($billing->getCompany()) - ->setStreet($billing->getStreet()) - ->setCity($billing->getCity()) - ->setCountry_id($billing->getCountryId()) - ->setRegion($billing->getRegion()) - ->setRegion_id($billing->getRegionId()) - ->setPostcode($billing->getPostcode()) - ->setTelephone($billing->getTelephone()) - ->setEmail($billing->getEmail()) - ->setFax($billing->getFax()); + ->setStoreId($storeId) + ->setAddressType(Mage_Sales_Model_Quote_Address::TYPE_BILLING) + /*->setCustomerId($customer->getId())*/ + ->setCustomer_address_id($billing->getEntityId()) + ->setPrefix($billing->getPrefix()) + ->setFirstname($billing->getFirstname()) + ->setMiddlename($billing->getMiddlename()) + ->setLastname($billing->getLastname()) + ->setSuffix($billing->getSuffix()) + ->setCompany($billing->getCompany()) + ->setStreet($billing->getStreet()) + ->setCity($billing->getCity()) + ->setCountry_id($billing->getCountryId()) + ->setRegion($billing->getRegion()) + ->setRegion_id($billing->getRegionId()) + ->setPostcode($billing->getPostcode()) + ->setTelephone($billing->getTelephone()) + ->setEmail($billing->getEmail()) + ->setFax($billing->getFax()); $order->setBillingAddress($billingAddress); - //$shipping = $customer->getDefaultShippingAddress(); - $shippingAddress = Mage::getModel('sales/order_address') - ->setStoreId($storeId) - ->setAddressType(Mage_Sales_Model_Quote_Address::TYPE_SHIPPING) + //$shipping = $customer->getDefaultShippingAddress(); + $shippingAddress = Mage::getModel('sales/order_address') + ->setStoreId($storeId) + ->setAddressType(Mage_Sales_Model_Quote_Address::TYPE_SHIPPING) // ->setCustomerId($customer->getId()) // ->setCustomerAddressId($customer->getDefaultShipping()) - ->setCustomer_address_id($shipping->getEntityId()) - ->setPrefix($shipping->getPrefix()) - ->setFirstname($shipping->getFirstname()) - ->setMiddlename($shipping->getMiddlename()) - ->setLastname($shipping->getLastname()) - ->setSuffix($shipping->getSuffix()) - ->setCompany($shipping->getCompany()) - ->setStreet($shipping->getStreet()) - ->setCity($shipping->getCity()) - ->setCountry_id($shipping->getCountryId()) - ->setRegion($shipping->getRegion()) - ->setRegion_id($shipping->getRegionId()) - ->setPostcode($shipping->getPostcode()) - ->setTelephone($shipping->getTelephone()) - ->setEmail($shipping->getEmail()) - ->setFax($shipping->getFax()); - if ($customerId) { - $shippingAddress->setCustomerId($customer->getId()) - ->setCustomerAddressId($customer->getDefaultShipping()); - } - - - $order->setShippingAddress($shippingAddress) - ->setShipping_method('freeshipping_freeshipping'); - - $orderPayment = Mage::getModel('sales/order_payment') - ->setStoreId($storeId) - ->setCustomerPaymentId(0) - ->setMethod($payment->getMethod()); - //->setPo_number(' - '); - $order->setPayment($orderPayment); - - foreach ($orderItems as $orderItem) { - $item_status = $orderItem->getStatus(); - if ($item_status != "Ordered") { - $isFullOrderReorderEligible = 0; - break; - } - $productId = $orderItem->getProductId(); - $stockStatus = 1; - //$customPrice = $orderItem->getCustomPrice();//CSV - $rowTotal = $orderItem->getPrice() * $orderItem->getQtyOrdered(); - $rowTotalIncludeTax = $rowTotal + $orderItem->getTaxAmount(); - $rowTax = $orderItem->getTaxAmount(); - $discountAmount = $orderItem->getDiscountAmount(); - $orderedRowTotal = $rowTotalIncludeTax - $discountAmount; - $newOrderedRowTotal = 0; - $orderItemNew = Mage::getModel('sales/order_item') - ->setStoreId($storeId) - ->setQuoteItemId(0) - ->setQuoteParentItemId(NULL) - ->setProductId($productId) - ->setProductType($orderItem->getProductType()) - ->setQtyBackordered(NULL) - ->setQtyOrdered($orderItem->getQtyOrdered())//CSV - ->setName($orderItem->getName()) - ->setSku($orderItem->getSku())//CSV - ->setPrice($orderItem->getPrice())//CSV - ->setBasePrice($orderItem->getBasePrice())//CSV - ->setOriginalPrice($orderItem->getOriginalPrice())//CSV - ->setBaseOriginalPrice($orderItem->getBaseOriginalPrice())//CSV - ->setTaxPercent($orderItem->getTaxPercent())//CSV - ->setTaxAmount($orderItem->getTaxAmount())//CSV - ->setBaseTaxAmount($orderItem->getBaseTaxAmount())//CSV - ->setPriceInclTax($orderItem->getPriceInclTax())//CSV - ->setBasePriceInclTax($orderItem->getBasePriceInclTax()) - ->setRowTotal($rowTotal)//CSV - ->setRowTotalInclTax($orderItem->getRowTotalInclTax())//CSV - ->setBaseRowTotalInclTax($orderItem->getBaseRowTotalInclTax())//CSV - ->setTolexoBasePrice($orderItem->getTolexoBasePrice())//CSV - ->setTolexoDeliveryDetails($orderItem->getTolexoDeliveryDetails()) - ->setBaseRowTotal($rowTotal) - ->setRowWeight($orderItem->getRowWeight()) - ->setDiscountAmount($discountAmount)//CSV - ->setDiscountPercent($orderItem->getDiscountPercent()) - ->setBaseDiscountAmount($orderItem->getBaseDiscountAmount())//CSV - ->setAppliedRuleIds($orderItem->getAppliedRuleIds()) - ->setRowWeight($orderItem->getRowWeight()); - // Overwritten in case of sku updation - if (isSet($orderCsvData[$productId])) { - - - //$orderCsvData[order_status] Order Current Status - //price = base_price - //original_price = base_original_price - $csvItemData = $orderCsvData[$productId]; - if ($csvItemData['new_sku'] != '') { - if ($orderItem->getSku() != $csvItemData['new_sku']) { - $flag = 1; - } - } else { - $csvItemData['new_sku'] = $orderItem->getSku(); - } - // Product Id - $queryProduct = "SELECT entity_id as product_id FROM catalog_product_entity where sku = '" . $csvItemData['new_sku'] . "'"; - $row = $this->readConnection->fetchRow($queryProduct); - $product_id = $row['product_id']; - - $wrongSku = (!$product_id)?1:0; - - if ($csvItemData['custom_price_per_unit'] != "") { - $price = $csvItemData['custom_price_per_unit']; - $basePrice = $csvItemData['custom_price_per_unit']; - } else { - //Price excluding tax of a unit - $price = $orderItem->getPrice(); - - $basePrice = $orderItem->getBasePrice(); - //$csvItemData['price'] contain tax - } - - - $rowTotal = $price * $orderItem->getQtyOrdered(); - $rowTotalIncludeTax = $rowTotal + $csvItemData['tax_amount']; - $rowTax = $csvItemData['tax_amount']; - - $newOrderedRowTotal = $rowTotalIncludeTax; - $discountAmount = 0; - - $orderItemNew->setSku($csvItemData['new_sku']) - ->setPrice($price) - ->setQty($orderItem->getQtyOrdered()) -// ->setTolexoBasePrice($csvItemData['tolexo_base_price']) - ->setDiscountAmount($discountAmount) -// ->setTaxPercent($csvItemData['tax_percent']) - ->setTaxAmount($csvItemData['tax_amount']) + ->setCustomer_address_id($shipping->getEntityId()) + ->setPrefix($shipping->getPrefix()) + ->setFirstname($shipping->getFirstname()) + ->setMiddlename($shipping->getMiddlename()) + ->setLastname($shipping->getLastname()) + ->setSuffix($shipping->getSuffix()) + ->setCompany($shipping->getCompany()) + ->setStreet($shipping->getStreet()) + ->setCity($shipping->getCity()) + ->setCountry_id($shipping->getCountryId()) + ->setRegion($shipping->getRegion()) + ->setRegion_id($shipping->getRegionId()) + ->setPostcode($shipping->getPostcode()) + ->setTelephone($shipping->getTelephone()) + ->setEmail($shipping->getEmail()) + ->setFax($shipping->getFax()); + if($customerId){ + $shippingAddress->setCustomerId($customer->getId()) + ->setCustomerAddressId($customer->getDefaultShipping()); + } + + + $order->setShippingAddress($shippingAddress) + ->setShipping_method('freeshipping_freeshipping'); + + $orderPayment = Mage::getModel('sales/order_payment') + ->setStoreId($storeId) + ->setCustomerPaymentId(0) + ->setMethod($payment->getMethod()); + //->setPo_number(' - '); + $order->setPayment($orderPayment); + + foreach ($orderItems as $orderItem) { + $productId = $orderItem->getProductId(); + $stockStatus = 1; + //$customPrice = $orderItem->getCustomPrice();//CSV + $rowTotal = $orderItem->getPrice() * $orderItem->getQtyOrdered(); + $rowTotalIncludeTax = $rowTotal + $orderItem->getTaxAmount() ; + $rowTax = $orderItem->getTaxAmount(); + $discountAmount = $orderItem->getDiscountAmount(); + $orderedRowTotal = $rowTotalIncludeTax -$discountAmount; + $newOrderedRowTotal =0; + $orderItemNew = Mage::getModel('sales/order_item') + ->setStoreId($storeId) + ->setQuoteItemId(0) + ->setQuoteParentItemId(NULL) + ->setProductId($productId) + ->setProductType($orderItem->getProductType()) + ->setQtyBackordered(NULL) ->setQtyOrdered($orderItem->getQtyOrdered())//CSV - ->setBaseRowTotal($rowTotal) - ->setBaseRowTotalInclTax() - ->setRowTotal($rowTotal)//CSV ->setName($orderItem->getName()) - ->setRowTotalInclTax($rowTotalIncludeTax)//CSV - ->setProductId($product_id) - ->setBasePrice($basePrice) - ->setPrice($price); + ->setSku($orderItem->getSku())//CSV + ->setPrice($orderItem->getPrice())//CSV + ->setBasePrice($orderItem->getBasePrice())//CSV + ->setOriginalPrice($orderItem->getOriginalPrice())//CSV + ->setBaseOriginalPrice($orderItem->getBaseOriginalPrice())//CSV + ->setTaxPercent($orderItem->getTaxPercent())//CSV + ->setTaxAmount($orderItem->getTaxAmount())//CSV + ->setBaseTaxAmount($orderItem->getBaseTaxAmount())//CSV + ->setPriceInclTax($orderItem->getPriceInclTax())//CSV + ->setBasePriceInclTax($orderItem->getBasePriceInclTax()) + ->setRowTotal($rowTotal)//CSV + ->setRowTotalInclTax($orderItem->getRowTotalInclTax())//CSV + ->setBaseRowTotalInclTax($orderItem->getBaseRowTotalInclTax())//CSV + ->setTolexoBasePrice($orderItem->getTolexoBasePrice())//CSV + ->setTolexoDeliveryDetails($orderItem->getTolexoDeliveryDetails()) + ->setBaseRowTotal($rowTotal) + ->setRowWeight($orderItem->getRowWeight()) + ->setDiscountAmount($discountAmount)//CSV + ->setDiscountPercent($orderItem->getDiscountPercent()) + ->setBaseDiscountAmount($orderItem->getBaseDiscountAmount())//CSV + ->setAppliedRuleIds($orderItem->getAppliedRuleIds()) + ->setRowWeight($orderItem->getRowWeight()); + // Overwritten in case of sku updation + if(isSet($orderCsvData[$productId]) ){ + + + //$orderCsvData[order_status] Order Current Status + //price = base_price + //original_price = base_original_price + $csvItemData = $orderCsvData[$productId]; + if($csvItemData['new_sku'] !=''){ + if($orderItem->getSku() != $csvItemData['new_sku']){ + $flag = 1; + } + }else{ + $csvItemData['new_sku'] = $orderItem->getSku(); + } + // Product Id + $queryProduct = "SELECT entity_id as product_id FROM catalog_product_entity where sku = '".$csvItemData['new_sku']."'"; + $row = $readConnection->fetchRow($queryProduct); + $product_id = $row['product_id']; + if(!$product_id){ + //echo "Wrong new_sku provided for order ".$oldOrderId."<br/>"; + $wrongSku =1; + //break; } - $orderedRowTotal = round($orderedRowTotal, 2); - $newOrderedRowTotal = round($newOrderedRowTotal, 2); - $rowTotalNotMatch = ($orderedRowTotal != $newOrderedRowTotal)?1:0; - - $subTotal += $rowTotal; - $subTotalWTax += $rowTotalIncludeTax; - $totalTax += $rowTax; - $totalDiscount += $discountAmount; - $order->addItem($orderItemNew); + if($csvItemData['custom_price_per_unit']!=""){ + $price = $csvItemData['custom_price_per_unit']; + $basePrice = $csvItemData['custom_price_per_unit']; + }else{ + //Price excluding tax of a unit + $price = $orderItem->getPrice(); + + $basePrice = $orderItem->getBasePrice(); + //$csvItemData['price'] contain tax + } + +// $orignalPrice = $csvItemData['original_price']; +// $baseOrignalPrice = $csvItemData['original_price']; + + $rowTotal = $price * $orderItem->getQtyOrdered(); + $rowTotalIncludeTax = $rowTotal + $csvItemData['tax_amount']; + $rowTax = $csvItemData['tax_amount']; + //$discountAmount = $csvItemData['discount_amount']; + $newOrderedRowTotal = $rowTotalIncludeTax ; + $discountAmount =0; + //$csvItemData = $orderCsvData[$orderItemNew->getSku()]; + $orderItemNew ->setSku($csvItemData['new_sku']) + ->setPrice($price) + ->setQty($orderItem->getQtyOrdered()) +// ->setTolexoBasePrice($csvItemData['tolexo_base_price']) + ->setDiscountAmount($discountAmount) +// ->setTaxPercent($csvItemData['tax_percent']) + ->setTaxAmount($csvItemData['tax_amount']) + ->setQtyOrdered($orderItem->getQtyOrdered())//CSV + ->setBaseRowTotal($rowTotal) + ->setBaseRowTotalInclTax() + ->setRowTotal($rowTotal)//CSV + ->setName($orderItem->getName()) + ->setRowTotalInclTax($rowTotalIncludeTax)//CSV + ->setProductId($product_id) + ->setBasePrice($basePrice) + ->setPrice($price); + + /* + ->setOriginalPrice($orderItem->getOriginalPrice())//CSV + ->setBaseOriginalPrice($orderItem->getBaseOriginalPrice())//CSV + ->setBaseTaxAmount($orderItem->getBaseTaxAmount())//CSV + ->setPriceInclTax($orderItem->getPriceInclTax())//CSV + ->setBasePriceInclTax($orderItem->getBasePriceInclTax()) + ->setBaseRowTotalInclTax($orderItem->getBaseRowTotalInclTax())//CSV +// ->setDiscountPercent($orderItem->getDiscountPercent()) + ->setBaseDiscountAmount($orderItem->getBaseDiscountAmount())//CSV + ->setAppliedRuleIds($orderItem->getAppliedRuleIds()); + */ } + $orderedRowTotal = round($orderedRowTotal, 2); + $newOrderedRowTotal = round($newOrderedRowTotal, 2); + if($orderedRowTotal != $newOrderedRowTotal) { + //echo "Row Total does not match for order ".$oldOrderId."<br/>"; + $rowTotalNotMatch =1; + + } + + + + $subTotal += $rowTotal; + $subTotalWTax += $rowTotalIncludeTax; + $totalTax += $rowTax; + $totalDiscount += $discountAmount; + $order->addItem($orderItemNew); + } //End Of Item Update - if (!$isFullOrderReorderEligible) { - echo "Unable To reOrder " . $oldOrderId . " This is partial Reorder case ." . $this->seprator; - return false; - } - // Adding Shipping Information to Order - $order->setBaseShippingInclTax($oldOrder->getBaseShippingInclTax()) - ->setShippingInclTax($oldOrder->getShippingInclTax()) - ->setBaseShippingHiddenTaxAmnt($oldOrder->getBaseShippingHiddenTaxAmnt()) - ->setHiddenTaxAmount($oldOrder->getHiddenTaxAmount()) - ->setShippingHiddenTaxAmount($oldOrder->getShippingHiddenTaxAmount()) - ->setBaseShippingDiscountAmount($oldOrder->getBaseShippingDiscountAmount()) - ->setShippingDiscountAmount($oldOrder->getShippingDiscountAmount()) - ->setShippingAmount($oldOrder->getShippingAmount()) - ->setStoreToBaseRate($oldOrder->getStoreToBaseRate()) - ->setShippingDescription($oldOrder->getShippingDescription()) - ->setStoreToOrderRate($oldOrder->getStoreToOrderRate()) - ->setBaseToGlobalRate($oldOrder->getBaseToGlobalRate()) - ->setBaseToOrderRate($oldOrder->getBaseToOrderRate()) - ->setTotalQtyOrdered($oldOrder->getTotalQtyOrdered()); // Total Item Ordered -//Adding Price information to Order - $grandTotal = $subTotalWTax + $oldOrder->getShippingAmount() - $totalDiscount; - $order->setSubtotal($subTotal) - ->setBaseSubtotal($subTotal) - ->setWeight($oldOrder->getWeight()) - ->setGrandTotal($grandTotal) - ->setTaxAmount($totalTax) - ->setBaseTaxAmount($totalTax) - ->setBaseTotalDue($subTotal) - // ->setTotalDue($subTotalWTax) - ->setBaseSubtotalInclTax($subTotalWTax) - ->setSubtotalInclTax($subTotalWTax) - ->setBaseGrandTotal($subTotalWTax) - ->setDiscountAmount(-$totalDiscount) - ->setStatus("processing") - ->setState("processing") - ->setCustomerEmail($oldOrder->getCustomerEmail()) - ->setCustomerFirstname($oldOrder->getCustomerFirstname()) - ->setCustomerLastname($oldOrder->getCustomerLastname()) - ->setCustomerGroupId($oldOrder->getCustomerGroupId()) - ->setCoupanRuleName($oldOrder->getCoupanRuleName()); + $order->setBaseShippingInclTax($oldOrder->getBaseShippingInclTax()) + ->setShippingInclTax($oldOrder->getShippingInclTax()) + ->setBaseShippingHiddenTaxAmnt($oldOrder->getBaseShippingHiddenTaxAmnt()) + ->setHiddenTaxAmount($oldOrder->getHiddenTaxAmount()) + ->setShippingHiddenTaxAmount($oldOrder->getShippingHiddenTaxAmount()) + ->setBaseShippingDiscountAmount($oldOrder->getBaseShippingDiscountAmount()) + ->setShippingDiscountAmount($oldOrder->getShippingDiscountAmount()) + ->setShippingAmount($oldOrder->getShippingAmount()) + ->setStoreToBaseRate($oldOrder->getStoreToBaseRate()) + ->setShippingDescription($oldOrder->getShippingDescription()) + ->setStoreToOrderRate($oldOrder->getStoreToOrderRate()) + ->setBaseToGlobalRate($oldOrder->getBaseToGlobalRate()) + ->setBaseToOrderRate($oldOrder->getBaseToOrderRate()) + ->setTotalQtyOrdered($oldOrder->getTotalQtyOrdered()); // Total Item Ordered - - if ($flag && !$wrongSku && !$rowTotalNotMatch) { - $transaction->addObject($order); - $transaction->addCommitCallback(array($order, 'place')); - $transaction->addCommitCallback(array($order, 'save')); - $transaction->save(); - - $newOrderObj = Mage::getModel("sales/order")->loadByIncrementId($newOrderIdReplace); - $newOrderId = $newOrderObj->getId(); - $newOrderObj->setStatus("processing") +//Adding Price information to Order + $grandTotal = $subTotalWTax+$oldOrder->getShippingAmount()-$totalDiscount; + $order->setSubtotal($subTotal) + ->setBaseSubtotal($subTotal) + ->setWeight($oldOrder->getWeight()) + ->setGrandTotal($grandTotal) + ->setTaxAmount($totalTax) + ->setBaseTaxAmount($totalTax) + ->setBaseTotalDue($subTotal) + // ->setTotalDue($subTotalWTax) + ->setBaseSubtotalInclTax($subTotalWTax) + ->setSubtotalInclTax($subTotalWTax) + ->setBaseGrandTotal($subTotalWTax) + ->setDiscountAmount(-$totalDiscount) + ->setStatus("processing") + ->setState("processing") + ->setCustomerEmail($oldOrder->getCustomerEmail()) + ->setCustomerFirstname($oldOrder->getCustomerFirstname()) + ->setCustomerLastname($oldOrder->getCustomerLastname()) + ->setCustomerGroupId($oldOrder->getCustomerGroupId()) + ->setCoupanRuleName($oldOrder->getCoupanRuleName()); + + + if($flag && !$wrongSku && !$rowTotalNotMatch){ + $transaction->addObject($order); + $transaction->addCommitCallback(array($order, 'place')); + $transaction->addCommitCallback(array($order, 'save')); + $transaction->save(); + + $newOrderObj = Mage::getModel("sales/order")->loadByIncrementId($newOrderIdReplace); + $newOrderId= $newOrderObj->getId(); + $newOrderObj->setStatus("processing") ->setState("processing"); - $newOrderObj->save(); - - - //Update Old Order - Parent order - $oldOrder->setRelationChildId($newOrderId) - ->setRelationChildRealId($newOrderIdReplace); - - if ($oldOrder->canCancel()) { - try { - $oldOrder->cancel(); - $oldOrder->setStatus("cancellation_new_order_created"); - $history = $order->addStatusHistoryComment('Order marked as cancelled.', false); - $history->setIsCustomerNotified(false); - - $oldOrder->save(); - echo "Place a new order for " . $oldOrderId . " and Successfully Cancel order. " . $this->seprator; - return true; - } catch (Exception $e) { - Mage::logException($e); - echo $e->getMessage(); - } - } else { - echo "Already Canceled order. " . $this->seprator; + $newOrderObj->save(); + + +// $getOrderIdQuery="SELECT entity_id FROM sales_flat_order WHERE increment_id = '".$newOrderIdReplace."' "; +// $rowResult = $readConnection->fetchRow($getOrderIdQuery); +// $newOrderId= $rowResult['entity_id']; + //print_r($transaction); + //Update Old Order - Parent order + $oldOrder->setRelationChildId($newOrderId) + ->setRelationChildRealId($newOrderIdReplace); + + if ($oldOrder->canCancel()) { + try { + $oldOrder->cancel(); + //$order->setState('complete', true, $this->__('Order cancel and New order created')); + + $oldOrder->setStatus("cancellation_new_order_created"); + $history = $order->addStatusHistoryComment('Order marked as cancelled.', false); + $history->setIsCustomerNotified(false); + // ... + $oldOrder->save(); + echo "Place a new order for ". $oldOrderId." and Successfully Cancel order<br/>"; + return true; + + } catch (Exception $e) { + Mage::logException($e); + echo $e->getMessage(); } - } else { - echo "No Sku are updated for order " . $oldOrderId . " Or Provided new_sku is wrong, or row total is not match. " . $this->seprator; + }else{ + echo "Already Canceled order <br/>"; } - } else { - echo $exception = "Can not cancel Order " . $oldOrderId . $this->seprator; + + }else{ + echo "No Sku are updated for order ".$oldOrderId." Or Provided new_sku is wrong, or row total is not match.<br/>"; + } - } catch (Exception $e) { + // echo 'DoneDanaDone'; + }else{ + echo $exception = "Can not cancel Order ".$oldOrderId.".<br/>"; + } + } catch (Exception $e){ echo $e->getMessage(); } - } +} // End reorder Function //exit; -//function to read csv file - private function csv_to_array($filename = '', $delimiter = ',') { - if (!file_exists($filename) || !is_readable($filename)) - return FALSE; +//function to read csv file - $header = NULL; - $data = array(); - if (($handle = fopen($filename, 'r')) !== FALSE) { - while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE) { - if (!$header) - $header = $row; - else - $data[] = array_combine($header, $row); - } - fclose($handle); +function csv_to_array($filename='', $delimiter=',') +{ + if(!file_exists($filename) || !is_readable($filename)) + return FALSE; + + $header = NULL; + $data = array(); + if (($handle = fopen($filename, 'r')) !== FALSE) + { + while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE) + { + if(!$header) + $header = $row; + else + $data[] = array_combine($header, $row); } - return $data; + fclose($handle); } + return $data; +} - private function _group_by($array, $key) { - $return = array(); - $returnA = array(); - foreach ($array as $val) { - $return[$val[$key]][] = $val; - //$returnA = array_push($returnA, $return); - } - return $return; +function _group_by($array, $key) { + $return = array(); + $returnA = array(); + foreach($array as $val) { + $return[$val[$key]][] = $val; + //$returnA = array_push($returnA, $return); } - + return $return; } -$params = array_slice($argv, 1); -$shell = new Tolexo_Utils_Reorder($params); -$shell->run(); + ?> diff --git a/createPartialOrder.php b/createPartialOrder.php index e3e6914..c2a134f 100644 --- a/createPartialOrder.php +++ b/createPartialOrder.php @@ -1,109 +1,82 @@ <?php -error_reporting(E_ALL); -ini_set('display_errors', '1'); +//error_reporting(E_ALL); +//ini_set('display_errors', '1'); require_once('app/Mage.php'); Mage::app(); +$resource = Mage::getSingleton('core/resource'); +$readConnection = $resource->getConnection('core_read'); -class Tolexo_Utils_Partial_Reorder { + // Set path to CSV file - private $readConnection; - private $parameters; - private $seprator; - private $orderSuffix; - - function __construct($listParam = array()) { - - $this->parameters = $listParam; - $resource = Mage::getSingleton('core/resource'); - $this->readConnection = $resource->getConnection('core_read'); - $this->seprator = "<br/>"; - $this->orderSuffix = "R"; +//$csvFile = '/home/vivek/miniOrderReport.csv'; +//$orderCsvDataNew = csv_to_array($csvFile); +if(!$_FILES['fileToUploadPartial']['tmp_name']){ + echo "file upload error";exit; +} +$orderCsvDataNew = csv_to_array($_FILES['fileToUploadPartial']['tmp_name']); + +$finalArr = _group_by($orderCsvDataNew,"order_no"); +$successCount = 0; +foreach($finalArr as $row){ + + + $tmp = array(); + $orderIncrementId =$row[0]['order_no']; + foreach($row as $k => $item){ //print_r($row);exit; + $tmp[$item['product_id']] = $row[$k]; } - - public function run() { - $params = $this->parameters; - if (isset($params) && $params[0] != "") { - $csvFile = $params[0]; - $this->seprator = "\n"; - if (file_exists($csvFile)) { - $orderCsvDataNew = $this->csv_to_array($csvFile); - } else { - echo "File Path incorrect"; - exit; - } - } else { - if (!$_FILES['fileToUploadPartial']['tmp_name']) { - echo "File upload error"; - exit; - } else { - $orderCsvDataNew = $this->csv_to_array($_FILES['fileToUploadPartial']['tmp_name']); - } - } - - if (!empty($orderCsvDataNew)) { - $finalArr = $this->_group_by($orderCsvDataNew, "order_no"); - $successCount = 0; - if (isset($_POST['multi_seller']) && $_POST['multi_seller'] > 0) { - $this->orderSuffix = "M"; - } - foreach ($finalArr as $row) { - $tmp = array(); - $orderIncrementId = $row[0]['order_no']; - foreach ($row as $k => $item) { //print_r($row);exit; - $tmp[$item['product_id']] = $row[$k]; - } - if ($this->reOrderOld($tmp, $orderIncrementId)) { - $successCount++; - } - } - echo "Total reorder request: " . count($finalArr) . $this->seprator; - echo "Total reorder success: " . $successCount . $this->seprator; - } + if(reOrderOld($tmp,$orderIncrementId, $readConnection)){ + $successCount++; } - - private function reOrderOld($orderCsvData, $oldOrderId) { - // Define Variables - $flag = 0; - $wrongSku = 0; - $rowTotalNotMatch = 0; - $rowTax = 0; - $item_price = 0; - $discountAmount = 0; - $cancelTaxAmount = 0; - $totalItemInOrder = 0; - $totalCancelItem = 0; - $qtyAvailForCancel = 0; - $orderStausCancel = 0; - - try { - $transaction = Mage::getModel('core/resource_transaction'); + +} +echo "Total reorder request: ".count($finalArr)."<br/>"; +echo "Total reorder success: ".$successCount."<br/>"; + +function reOrderOld($orderCsvData,$oldOrderId,$readConnection){ + // Define Variables + $flag = 0; + $wrongSku =0; + $rowTotalNotMatch = 0; + $rowTax =0; + $item_price =0; + $discountAmount =0; + $cancelTaxAmount =0; + $totalItemInOrder =0; + $totalCancelItem =0; + $qtyAvailForCancel =0; + $orderStausCancel =0; + + try{ + $transaction = Mage::getModel('core/resource_transaction'); $oldOrder = Mage::getModel("sales/order")->loadByIncrementId($oldOrderId); - $orderItems = $oldOrder->getAllItems(); - $customerId = $oldOrder->getCustomerId(); - $shipping = $oldOrder->getShippingAddress(); - $billing = $oldOrder->getBillingAddress(); - $payment = $oldOrder->getPayment(); + $orderItems = $oldOrder->getAllItems();//print_r(count($orderItems));exit; + $customerId = $oldOrder->getCustomerId();//print_r($customerId);exit; + $shipping = $oldOrder->getShippingAddress();//print_r($shipping->getData());exit; + $billing = $oldOrder->getBillingAddress();//print_r($billing->getData());exit; + $payment = $oldOrder->getPayment();//print_r($payment->getData());exit; $storeId = 1; $totalItemInOrder = count($orderItems); $totalCancelItem = 0; - $originalIncId = $oldOrderId; - - if ($oldOrder->canCancel() && ($oldOrder->getState() == "new" || $oldOrder->getState() == "processing")) { + $originalIncId = $oldOrderId ; + + if($oldOrder->canCancel() && ($oldOrder->getState()=="new" || $oldOrder->getState()=="processing")){ //relation_child_real_id relation_child_id + //New Increment Id $tmp = $oldOrderId; - $queryIncId = "SELECT COUNT(increment_id) AS total FROM sales_flat_order WHERE increment_id LIKE '" . $oldOrderId . "-%'"; - $row = $this->readConnection->fetchRow($queryIncId); - $incSuffix = $row['total'] + 1; - $newOrderIdReplace = $oldOrderId . "-" . $this->orderSuffix . "-" . $incSuffix; + $queryIncId = "SELECT COUNT(increment_id) AS total FROM sales_flat_order WHERE increment_id LIKE '".$oldOrderId."-%'"; + $row = $readConnection->fetchRow($queryIncId); + $incSuffix = $row['total']+1; + $newOrderIdReplace =$oldOrderId."-R-".$incSuffix; // Get Original Increment Id - if ($oldOrderId) { + if($oldOrderId){ $orignalIdArr = explode('-', $oldOrderId); $originalIncId = $orignalIdArr[0]; } - $order = Mage::getModel('sales/order') + $order = Mage::getModel('sales/order') ->setIncrementId($newOrderIdReplace) - ->setRelationParentId($oldOrder->getId()) + ->setRelationParentId($oldOrder->getId()) ->setRelationParentRealId($oldOrderId) ->setOriginalIncrementId($originalIncId) ->setStoreId(1) @@ -113,7 +86,10 @@ class Tolexo_Utils_Partial_Reorder { ->setStore_currency_code('INR') ->setOrder_currency_code('INR'); - if ($customerId) { + + + + if($customerId){ $customer = Mage::getModel('customer/customer')->load($customerId); // set Customer data $order->setCustomerEmail($customer->getEmail()) @@ -125,376 +101,401 @@ class Tolexo_Utils_Partial_Reorder { } // set Billing Address - // $billing = $customer->getDefaultBillingAddress(); + // $billing = $customer->getDefaultBillingAddress(); $billingAddress = Mage::getModel('sales/order_address') - ->setStoreId($storeId) - ->setAddressType(Mage_Sales_Model_Quote_Address::TYPE_BILLING) - /* ->setCustomerId($customer->getId()) */ - ->setCustomer_address_id($billing->getEntityId()) - ->setPrefix($billing->getPrefix()) - ->setFirstname($billing->getFirstname()) - ->setMiddlename($billing->getMiddlename()) - ->setLastname($billing->getLastname()) - ->setSuffix($billing->getSuffix()) - ->setCompany($billing->getCompany()) - ->setStreet($billing->getStreet()) - ->setCity($billing->getCity()) - ->setCountry_id($billing->getCountryId()) - ->setRegion($billing->getRegion()) - ->setRegion_id($billing->getRegionId()) - ->setPostcode($billing->getPostcode()) - ->setTelephone($billing->getTelephone()) - ->setEmail($billing->getEmail()) - ->setFax($billing->getFax()); + ->setStoreId($storeId) + ->setAddressType(Mage_Sales_Model_Quote_Address::TYPE_BILLING) + /*->setCustomerId($customer->getId())*/ + ->setCustomer_address_id($billing->getEntityId()) + ->setPrefix($billing->getPrefix()) + ->setFirstname($billing->getFirstname()) + ->setMiddlename($billing->getMiddlename()) + ->setLastname($billing->getLastname()) + ->setSuffix($billing->getSuffix()) + ->setCompany($billing->getCompany()) + ->setStreet($billing->getStreet()) + ->setCity($billing->getCity()) + ->setCountry_id($billing->getCountryId()) + ->setRegion($billing->getRegion()) + ->setRegion_id($billing->getRegionId()) + ->setPostcode($billing->getPostcode()) + ->setTelephone($billing->getTelephone()) + ->setEmail($billing->getEmail()) + ->setFax($billing->getFax()); $order->setBillingAddress($billingAddress); - //$shipping = $customer->getDefaultShippingAddress(); - $shippingAddress = Mage::getModel('sales/order_address') - ->setStoreId($storeId) - ->setAddressType(Mage_Sales_Model_Quote_Address::TYPE_SHIPPING) + //$shipping = $customer->getDefaultShippingAddress(); + $shippingAddress = Mage::getModel('sales/order_address') + ->setStoreId($storeId) + ->setAddressType(Mage_Sales_Model_Quote_Address::TYPE_SHIPPING) // ->setCustomerId($customer->getId()) // ->setCustomerAddressId($customer->getDefaultShipping()) - ->setCustomer_address_id($shipping->getEntityId()) - ->setPrefix($shipping->getPrefix()) - ->setFirstname($shipping->getFirstname()) - ->setMiddlename($shipping->getMiddlename()) - ->setLastname($shipping->getLastname()) - ->setSuffix($shipping->getSuffix()) - ->setCompany($shipping->getCompany()) - ->setStreet($shipping->getStreet()) - ->setCity($shipping->getCity()) - ->setCountry_id($shipping->getCountryId()) - ->setRegion($shipping->getRegion()) - ->setRegion_id($shipping->getRegionId()) - ->setPostcode($shipping->getPostcode()) - ->setTelephone($shipping->getTelephone()) - ->setEmail($shipping->getEmail()) - ->setFax($shipping->getFax()); - if ($customerId) { - $shippingAddress->setCustomerId($customer->getId()) - ->setCustomerAddressId($customer->getDefaultShipping()); - } - - - $order->setShippingAddress($shippingAddress) - ->setShipping_method('freeshipping_freeshipping'); - - $orderPayment = Mage::getModel('sales/order_payment') - ->setStoreId($storeId) - ->setCustomerPaymentId(0) - ->setMethod($payment->getMethod()); - //->setPo_number(' - '); - $order->setPayment($orderPayment); - - foreach ($orderItems as $orderItem) { - - $productId = $orderItem->getProductId(); - $item_status = $orderItem->getStatus(); - - //Check Status For item Cancel - $qtyAvailForCancel = $orderItem->getQtyToCancel(); - $orderedQantity = $orderItem->getQtyOrdered(); - $csvItemData = $orderCsvData[$productId]; - - //$qtyReorder = $csvItemData['qty_reorder']; - $qtyReorder = $qtyAvailForCancel; + ->setCustomer_address_id($shipping->getEntityId()) + ->setPrefix($shipping->getPrefix()) + ->setFirstname($shipping->getFirstname()) + ->setMiddlename($shipping->getMiddlename()) + ->setLastname($shipping->getLastname()) + ->setSuffix($shipping->getSuffix()) + ->setCompany($shipping->getCompany()) + ->setStreet($shipping->getStreet()) + ->setCity($shipping->getCity()) + ->setCountry_id($shipping->getCountryId()) + ->setRegion($shipping->getRegion()) + ->setRegion_id($shipping->getRegionId()) + ->setPostcode($shipping->getPostcode()) + ->setTelephone($shipping->getTelephone()) + ->setEmail($shipping->getEmail()) + ->setFax($shipping->getFax()); + if($customerId){ + $shippingAddress->setCustomerId($customer->getId()) + ->setCustomerAddressId($customer->getDefaultShipping()); + } + + + $order->setShippingAddress($shippingAddress) + ->setShipping_method('freeshipping_freeshipping'); + + $orderPayment = Mage::getModel('sales/order_payment') + ->setStoreId($storeId) + ->setCustomerPaymentId(0) + ->setMethod($payment->getMethod()); + //->setPo_number(' - '); + $order->setPayment($orderPayment); + + foreach ($orderItems as $orderItem) { + + $productId = $orderItem->getProductId(); + $item_status = $orderItem->getStatus(); +// if($item_status =="Canceled"){ +// $totalCancelItem++; +// } + //Check Status For item Cancel + $qtyAvailForCancel = $orderItem->getQtyToCancel(); + // Cancel if ordered quantity is equal to quantity available to cancel + $totalOrderedQuantity = $orderItem->getQtyOrdered(); + + + if(isSet($orderCsvData[$productId]) && $item_status =="Ordered"){ + $stockStatus = 1; - //if(isSet($orderCsvData[$productId]) && $item_status =="Ordered"){ - if (isSet($csvItemData) && $qtyAvailForCancel > 0 && $qtyReorder > 0) { - $stockStatus = 1; - - // Overwritten in case of sku updation - if ($csvItemData['new_sku'] != '') { - if ($orderItem->getSku() != $csvItemData['new_sku']) { - $flag = 1; - } - } else { - $csvItemData['new_sku'] = $orderItem->getSku(); - } - // Product Id - $queryProduct = "SELECT entity_id as product_id FROM catalog_product_entity where sku = '" . $csvItemData['new_sku'] . "'"; - $row = $this->readConnection->fetchRow($queryProduct); - $product_id = $row['product_id']; - if (!$product_id) { - $wrongSku = 1; - } - - if ($csvItemData['custom_price_per_unit'] != "") { - $price = $csvItemData['custom_price_per_unit']; - $basePrice = $csvItemData['custom_price_per_unit']; - } else { - //Price excluding tax of a unit - $price = $orderItem->getPrice(); - $basePrice = $orderItem->getBasePrice(); - } - - $rowTotal = $price * $qtyReorder; - - $unitTax = $csvItemData['tax_amount'] / $orderItem->getQtyOrdered(); - $rowTax = $unitTax * $qtyReorder; - $rowTotalIncludeTax = $rowTotal + $rowTax; - - //$discountAmount = $csvItemData['discount_amount']; - $newOrderedRowTotal = $rowTotalIncludeTax; - //$discountAmount =0; - //$csvItemData = $orderCsvData[$orderItemNew->getSku()]; - //$rowTotal = $orderItem->getPrice() * $qtyReorder; - //$unitTax = $orderItem->getTaxAmount() / $orderedQantity; - //$rowTax = $unitTax * $qtyReorder; - //$rowTotalIncludeTax = $rowTotal + $rowTax ; - - $unitDiscount = $orderItem->getDiscountAmount() / $orderedQantity; - $discountAmount = $unitDiscount * $qtyReorder; - $orderedRowTotal = $rowTotalIncludeTax - $discountAmount; - - $newOrderedRowTotal = 0; - $orderItemNew = Mage::getModel('sales/order_item') + //$customPrice = $orderItem->getCustomPrice();//CSV + $rowTotal = $orderItem->getPrice() * $orderItem->getQtyOrdered(); + $rowTotalIncludeTax = $rowTotal + $orderItem->getTaxAmount() ; + $rowTax = $orderItem->getTaxAmount(); + $discountAmount = $orderItem->getDiscountAmount(); + $orderedRowTotal = $rowTotalIncludeTax -$discountAmount; + $newOrderedRowTotal =0; + $orderItemNew = Mage::getModel('sales/order_item') ->setStoreId($storeId) ->setQuoteItemId(0) ->setQuoteParentItemId(NULL) ->setProductId($productId) ->setProductType($orderItem->getProductType()) ->setQtyBackordered(NULL) - ->setQtyOrdered($qtyReorder) + ->setQtyOrdered($orderItem->getQtyOrdered())//CSV ->setName($orderItem->getName()) - ->setPrice($orderItem->getPrice()) - ->setBasePrice($orderItem->getBasePrice()) - ->setOriginalPrice($orderItem->getOriginalPrice()) - ->setBaseOriginalPrice($orderItem->getBaseOriginalPrice()) - ->setTaxAmount($rowTax) - ->setBaseTaxAmount($rowTax) - ->setPriceInclTax($orderItem->getPriceInclTax()) + ->setSku($orderItem->getSku())//CSV + ->setPrice($orderItem->getPrice())//CSV + ->setBasePrice($orderItem->getBasePrice())//CSV + ->setOriginalPrice($orderItem->getOriginalPrice())//CSV + ->setBaseOriginalPrice($orderItem->getBaseOriginalPrice())//CSV + ->setTaxPercent($orderItem->getTaxPercent())//CSV + ->setTaxAmount($orderItem->getTaxAmount())//CSV + ->setBaseTaxAmount($orderItem->getBaseTaxAmount())//CSV + ->setPriceInclTax($orderItem->getPriceInclTax())//CSV ->setBasePriceInclTax($orderItem->getBasePriceInclTax()) - ->setRowTotal($rowTotal) - ->setTolexoBasePrice($orderItem->getTolexoBasePrice()) + ->setRowTotal($rowTotal)//CSV + ->setRowTotalInclTax($orderItem->getRowTotalInclTax())//CSV + ->setBaseRowTotalInclTax($orderItem->getBaseRowTotalInclTax())//CSV + ->setTolexoBasePrice($orderItem->getTolexoBasePrice())//CSV ->setTolexoDeliveryDetails($orderItem->getTolexoDeliveryDetails()) ->setBaseRowTotal($rowTotal) - ->setDiscountAmount($discountAmount) + ->setRowWeight($orderItem->getRowWeight()) + ->setDiscountAmount($discountAmount)//CSV ->setDiscountPercent($orderItem->getDiscountPercent()) - ->setBaseDiscountAmount($discountAmount) + ->setBaseDiscountAmount($orderItem->getBaseDiscountAmount())//CSV ->setAppliedRuleIds($orderItem->getAppliedRuleIds()) - ->setRowWeight($orderItem->getRowWeight()) - ->setPrice($price) - ->setQty($qtyReorder) - ->setTaxPercent($csvItemData['tax_percent']) - ->setTaxAmount($rowTax) - ->setBaseRowTotal($rowTotal) - ->setBaseRowTotalInclTax() - ->setRowTotal($rowTotal) - ->setName($orderItem->getName()) - ->setRowTotalInclTax($rowTotalIncludeTax) - ->setBaseRowTotalInclTax($rowTotalIncludeTax) - ->setProductId($product_id) - ->setBasePrice($basePrice) - ->setSku($csvItemData['new_sku']); - - $orderedRowTotal = round($orderedRowTotal, 2); - $newOrderedRowTotal = round($newOrderedRowTotal, 2); - - if ($orderedRowTotal != $newOrderedRowTotal) { - $rowTotalNotMatch = 0; - } - $subTotal += $rowTotal; - $subTotalWTax += $rowTotalIncludeTax; - - $totalTax += $rowTax; - $totalDiscount += $discountAmount; - $order->addItem($orderItemNew); - - // Collect information for cancel Item $oldOrder - //if($orderItem->getSku()==$csvItemData['old_sku'] && $qtyAvailForCancel == $orderedQantity ){ - if ($orderItem->getSku() == $csvItemData['old_sku']) { - - Mage::dispatchEvent('sales_order_item_cancel', array('item' => $orderItem)); - $orderItem->setQtyCanceled($qtyAvailForCancel); - $cancelTaxItem = $orderItem->getTaxCanceled() + - $orderItem->getBaseTaxAmount() * $orderItem->getQtyCanceled() / $orderItem->getQtyOrdered(); - $orderItem->setTaxCanceled($cancelTaxItem); - $orderItem->setHiddenTaxCanceled( - $orderItem->getHiddenTaxCanceled() + - $orderItem->getHiddenTaxAmount() * $orderItem->getQtyCanceled() / $orderItem->getQtyOrdered() - ); - - $cancelItemPrice += $orderItem->getPrice() * $orderItem->getQtyCanceled(); - $cancelDiscountAmount += $orderItem->getDiscountAmount() * $orderItem->getQtyCanceled() / $orderItem->getQtyOrdered(); - $cancelTaxAmount += $cancelTaxItem; - if ($qtyReorder == $orderItem->getQtyOrdered()) { - $totalCancelItem++; - } - } - // End cancel Item - } else { - if ($item_status == "Canceled") { - //Adding cancled Items - $totalCancelItem++; + ->setRowWeight($orderItem->getRowWeight()); + // Overwritten in case of sku updation + //if(isSet($orderCsvData[$productId]) ){ + //$orderCsvData[order_status] Order Current Status + + $csvItemData = $orderCsvData[$productId]; + if($csvItemData['new_sku'] !=''){ + if($orderItem->getSku() != $csvItemData['new_sku']){ + $flag = 1; } + }else{ + $csvItemData['new_sku'] = $orderItem->getSku(); + } + // Product Id + $queryProduct = "SELECT entity_id as product_id FROM catalog_product_entity where sku = '".$csvItemData['new_sku']."'"; + $row = $readConnection->fetchRow($queryProduct); + $product_id = $row['product_id']; + if(!$product_id){ + //echo "Wrong new_sku provided for order ".$oldOrderId."<br/>"; + $wrongSku =1; + //break; + } + + if($csvItemData['custom_price_per_unit']!=""){ + $price = $csvItemData['custom_price_per_unit']; + $basePrice = $csvItemData['custom_price_per_unit']; + + }else{ + //Price excluding tax of a unit + $price = $orderItem->getPrice(); + $basePrice = $orderItem->getBasePrice(); + //$csvItemData['price'] contain tax + } + + + + $rowTotal = $price * $orderItem->getQtyOrdered(); + $rowTotalIncludeTax = $rowTotal + $csvItemData['tax_amount']; + $rowTax = $csvItemData['tax_amount']; + //$discountAmount = $csvItemData['discount_amount']; + $newOrderedRowTotal = $rowTotalIncludeTax ; + $discountAmount =0; + //$csvItemData = $orderCsvData[$orderItemNew->getSku()]; + $orderItemNew ->setSku($csvItemData['new_sku']) + ->setPrice($price) + ->setQty($orderItem->getQtyOrdered()) +// ->setTolexoBasePrice($csvItemData['tolexo_base_price']) + ->setDiscountAmount($discountAmount) +// ->setTaxPercent($csvItemData['tax_percent']) + ->setTaxAmount($csvItemData['tax_amount']) + ->setQtyOrdered($orderItem->getQtyOrdered())//CSV + ->setBaseRowTotal($rowTotal) + ->setBaseRowTotalInclTax() + ->setRowTotal($rowTotal)//CSV + ->setName($orderItem->getName()) + ->setRowTotalInclTax($rowTotalIncludeTax)//CSV + ->setProductId($product_id) + ->setBasePrice($basePrice) + ->setPrice($price); + + + + $orderedRowTotal = round($orderedRowTotal, 2); + $newOrderedRowTotal = round($newOrderedRowTotal, 2); + + + if($orderedRowTotal != $newOrderedRowTotal) { + //echo "Row Total does not match for order ".$oldOrderId."<br/>"; + $rowTotalNotMatch =1; + + } + + + + $subTotal += $rowTotal; + $subTotalWTax += $rowTotalIncludeTax; + //$subTotalWTax = $rowTotalIncludeTax; + $totalTax += $rowTax; + $totalDiscount += $discountAmount; + $order->addItem($orderItemNew); + + // Collect information for cancel Item $oldOrder + if($orderItem->getSku()==$csvItemData['old_sku'] && $qtyAvailForCancel == $totalOrderedQuantity ){ + + Mage::dispatchEvent('sales_order_item_cancel', array('item'=>$orderItem)); + $orderItem->setQtyCanceled($qtyAvailForCancel); + $cancelTaxItem = $orderItem->getTaxCanceled() + + $orderItem->getBaseTaxAmount() * $orderItem->getQtyCanceled() / $orderItem->getQtyOrdered(); + $orderItem->setTaxCanceled($cancelTaxItem); + $orderItem->setHiddenTaxCanceled( + $orderItem->getHiddenTaxCanceled() + + $orderItem->getHiddenTaxAmount() * $orderItem->getQtyCanceled() / $orderItem->getQtyOrdered() + ); + + $cancelItemPrice += $orderItem->getPrice()*$orderItem->getQtyCanceled(); + $cancelDiscountAmount += $orderItem->getDiscountAmount()* $orderItem->getQtyCanceled()/$orderItem->getQtyOrdered(); + $cancelTaxAmount += $cancelTaxItem; + $totalCancelItem++; } + + + + + + // End cancel Item + + } + else{ + if($item_status == "Canceled"){ + //Adding cancled Items + $totalCancelItem++; + } + } + } //End Of Item Update // Adding Shipping Information to Order - $order->setHiddenTaxAmount($oldOrder->getHiddenTaxAmount()) - ->setStoreToBaseRate($oldOrder->getStoreToBaseRate()) - ->setShippingDescription($oldOrder->getShippingDescription()) - ->setStoreToOrderRate($oldOrder->getStoreToOrderRate()) - ->setBaseToGlobalRate($oldOrder->getBaseToGlobalRate()) - ->setBaseToOrderRate($oldOrder->getBaseToOrderRate()) - ->setTotalQtyOrdered($oldOrder->getTotalQtyOrdered()); // Total Item Ordered - - if ($totalItemInOrder == $totalCancelItem) { - $order->setBaseShippingInclTax($oldOrder->getBaseShippingInclTax()) - ->setShippingInclTax($oldOrder->getShippingInclTax()) - ->setBaseShippingHiddenTaxAmnt($oldOrder->getBaseShippingHiddenTaxAmnt()) - ->setShippingHiddenTaxAmount($oldOrder->getShippingHiddenTaxAmount()) - ->setBaseShippingDiscountAmount($oldOrder->getBaseShippingDiscountAmount()) - ->setShippingDiscountAmount($oldOrder->getShippingDiscountAmount()) - ->setShippingAmount($oldOrder->getShippingAmount()); - $grandTotal = $subTotalWTax + $oldOrder->getShippingAmount() - $totalDiscount; - } else { - $grandTotal = $subTotalWTax - $totalDiscount; - } + $order->setBaseShippingInclTax($oldOrder->getBaseShippingInclTax()) + ->setShippingInclTax($oldOrder->getShippingInclTax()) + ->setBaseShippingHiddenTaxAmnt($oldOrder->getBaseShippingHiddenTaxAmnt()) + ->setHiddenTaxAmount($oldOrder->getHiddenTaxAmount()) + ->setShippingHiddenTaxAmount($oldOrder->getShippingHiddenTaxAmount()) + ->setBaseShippingDiscountAmount($oldOrder->getBaseShippingDiscountAmount()) + ->setShippingDiscountAmount($oldOrder->getShippingDiscountAmount()) + ->setShippingAmount($oldOrder->getShippingAmount()) + ->setStoreToBaseRate($oldOrder->getStoreToBaseRate()) + ->setShippingDescription($oldOrder->getShippingDescription()) + ->setStoreToOrderRate($oldOrder->getStoreToOrderRate()) + ->setBaseToGlobalRate($oldOrder->getBaseToGlobalRate()) + ->setBaseToOrderRate($oldOrder->getBaseToOrderRate()) + ->setTotalQtyOrdered($oldOrder->getTotalQtyOrdered()); // Total Item Ordered //Adding Price information to Order - - $order->setSubtotal($subTotal) - ->setBaseSubtotal($subTotal) - ->setWeight($oldOrder->getWeight()) - ->setGrandTotal($grandTotal) - ->setTaxAmount($totalTax) - ->setBaseTaxAmount($totalTax) - ->setBaseTotalDue($subTotal) - // ->setTotalDue($subTotalWTax) - ->setBaseSubtotalInclTax($subTotalWTax) - ->setSubtotalInclTax($subTotalWTax) - ->setBaseGrandTotal($subTotalWTax) - ->setDiscountAmount(-$totalDiscount) - ->setStatus("processing") - ->setState("processing") - ->setCustomerEmail($oldOrder->getCustomerEmail()) - ->setCustomerFirstname($oldOrder->getCustomerFirstname()) - ->setCustomerLastname($oldOrder->getCustomerLastname()) - ->setCustomerGroupId($oldOrder->getCustomerGroupId()) - ->setCoupanRuleName($oldOrder->getCoupanRuleName()); - - - if (!$wrongSku && !$rowTotalNotMatch && $subTotalWTax > 0) { - $transaction->addObject($order); - $transaction->addCommitCallback(array($order, 'place')); - $transaction->addCommitCallback(array($order, 'save')); - $transaction->save(); - - $newOrderObj = Mage::getModel("sales/order")->loadByIncrementId($newOrderIdReplace); - $newOrderId = $newOrderObj->getId(); - $newOrderObj->setStatus("processing") + $grandTotal = $subTotalWTax+$oldOrder->getShippingAmount()-$totalDiscount; + $order->setSubtotal($subTotal) + ->setBaseSubtotal($subTotal) + ->setWeight($oldOrder->getWeight()) + ->setGrandTotal($grandTotal) + ->setTaxAmount($totalTax) + ->setBaseTaxAmount($totalTax) + ->setBaseTotalDue($subTotal) + // ->setTotalDue($subTotalWTax) + ->setBaseSubtotalInclTax($subTotalWTax) + ->setSubtotalInclTax($subTotalWTax) + ->setBaseGrandTotal($subTotalWTax) + ->setDiscountAmount(-$totalDiscount) + ->setStatus("processing") + ->setState("processing") + ->setCustomerEmail($oldOrder->getCustomerEmail()) + ->setCustomerFirstname($oldOrder->getCustomerFirstname()) + ->setCustomerLastname($oldOrder->getCustomerLastname()) + ->setCustomerGroupId($oldOrder->getCustomerGroupId()) + ->setCoupanRuleName($oldOrder->getCoupanRuleName()); + + + if( !$wrongSku && !$rowTotalNotMatch && $subTotalWTax >0){ + $transaction->addObject($order); + $transaction->addCommitCallback(array($order, 'place')); + $transaction->addCommitCallback(array($order, 'save')); + $transaction->save(); + + $newOrderObj = Mage::getModel("sales/order")->loadByIncrementId($newOrderIdReplace); + $newOrderId= $newOrderObj->getId(); + $newOrderObj->setStatus("processing") ->setState("processing"); - $newOrderObj->save(); - - - // Update Main Order - $oldOrder->setRelationChildId($newOrderId) - ->setRelationChildRealId($newOrderIdReplace); - //Ite$oldOrderm Cancel - // item Remain to cancel - $availableItemToCancel = $totalItemInOrder - $totalCancelItem; - - if ($availableItemToCancel >= 0) { - // Set Sub Total Cancelled - $oldOrder->setSubtotalCanceled($oldOrder->getSubtotalCanceled() + $cancelItemPrice); - // Set Base Sub Total Cancelled - $oldOrder->setBaseSubtotalCanceled($oldOrder->getBaseSubtotalCanceled() + $cancelItemPrice); - - // Set Tax Cancelled - $oldOrder->setTaxCanceled($oldOrder->getTaxCanceled() + $cancelTaxAmount); - // Set Base tax cancelled - $oldOrder->setBaseTaxCanceled($oldOrder->getBaseTaxCanceled() + $cancelTaxAmount); - // Set Total Canceled - $oldOrder->setTotalCanceled($oldOrder->getTotalCanceled() + $cancelItemPrice + $cancelTaxAmount); - $oldOrder->setSubTotalCanceled($oldOrder->getSubTotalCanceled() + $cancelItemPrice); - $oldOrder->setBaseSubTotalCanceled($oldOrder->getBaseSubTotalCanceled() + $cancelItemPrice); - - // Set Base Total Cancelled - $oldOrder->setBaseTotalCanceled($oldOrder->gettBaseTotalCanceled() + $cancelItemPrice + $cancelTaxAmount); - - // Set Discount Cancelled - $oldOrder->setDiscountCanceled(abs($oldOrder->getDiscountCanceled()) + $cancelDiscountAmount); - // Set base Discount Cancel - $oldOrder->setBaseDiscountCanceled(abs($oldOrder->getDiscountCanceled()) + $cancelDiscountAmount); - } else { - // Order Can Not Cancelled - echo $orderId . "- " . $sku . "-Not canceled, Already canceled or sku is mismatched or order partially invoice/shiped ." . $this->seprator; - return false; - } - - //Item cancel End - - if ($availableItemToCancel >= 0) { - try { - if ($totalItemInOrder == $totalCancelItem) { - // Mark order as cancellation_new_order_created if all items are cancel - $oldOrder->cancel(); - - $oldOrder->setStatus("cancellation_new_order_created"); - $history = $order->addStatusHistoryComment('Order marked as cancelled.', false); - $history->setIsCustomerNotified(false); - } - - // ... - $oldOrder->save(); - echo "Place a new order for " . $oldOrderId . " and Successfully Cancel order. " . $this->seprator; - return true; - } catch (Exception $e) { - Mage::logException($e); - echo $e->getMessage(); - } - } else { - echo "Already Canceled order. " . $this->seprator; + $newOrderObj->save(); + + + // Update Main Order + $oldOrder->setRelationChildId($newOrderId) + ->setRelationChildRealId($newOrderIdReplace); + //Ite$oldOrderm Cancel + // item Remain to cancel + $availableItemToCancel = $totalItemInOrder - $totalCancelItem; + + if($availableItemToCancel >=0 ){ + // Set Sub Total Cancelled + $oldOrder->setSubtotalCanceled($oldOrder->getSubtotalCanceled() + $cancelItemPrice); + // Set Base Sub Total Cancelled + $oldOrder->setBaseSubtotalCanceled($oldOrder->getBaseSubtotalCanceled() + $cancelItemPrice); + + // Set Tax Cancelled + $oldOrder->setTaxCanceled($oldOrder->getTaxCanceled() + $cancelTaxAmount); + // Set Base tax cancelled + $oldOrder->setBaseTaxCanceled($oldOrder->getBaseTaxCanceled() + $cancelTaxAmount); + // Set Total Canceled + $oldOrder->setTotalCanceled($oldOrder->getTotalCanceled()+$cancelItemPrice + $cancelTaxAmount ); + $oldOrder->setSubTotalCanceled($oldOrder->getSubTotalCanceled() +$cancelItemPrice ); + $oldOrder->setBaseSubTotalCanceled($oldOrder->getBaseSubTotalCanceled() +$cancelItemPrice ); + + // Set Base Total Cancelled + $oldOrder->setBaseTotalCanceled($oldOrder->gettBaseTotalCanceled() + $cancelItemPrice +$cancelTaxAmount); + + // Set Discount Cancelled + $oldOrder->setDiscountCanceled(abs($oldOrder->getDiscountCanceled()) + $cancelDiscountAmount); + // Set base Discount Cancel + $oldOrder->setBaseDiscountCanceled(abs($oldOrder->getDiscountCanceled()) + $cancelDiscountAmount); + + + }else{ + // Order Can Not Cancelled + echo $orderId."- ".$sku."-Not canceled, Already canceled or sku is mismatched or order partially invoice/shiped .<br/>"; + return false; + } + + //Item cancel End + //if ($oldOrder->canCancel()) { + if ($availableItemToCancel >=0) { + try { + if($totalItemInOrder == $totalCancelItem){ + // Mark order as cancellation_new_order_created if all items are cancel + $oldOrder->cancel(); + echo "Inside Cancel"; + $oldOrder->setStatus("cancellation_new_order_created"); + $history = $order->addStatusHistoryComment('Order marked as cancelled.', false); + $history->setIsCustomerNotified(false); + + } + + // ... + $oldOrder->save(); + echo "Place a new order for ". $oldOrderId." and Successfully Cancel order<br/>"; + return true; + + } catch (Exception $e) { + Mage::logException($e); + echo $e->getMessage(); } - } else { - echo "Provided new_sku is wrong for " . $oldOrderId . " or , row total is not match. " . $this->seprator; + }else{ + echo "Already Canceled order <br/>"; } - // echo 'DoneDanaDone'; - } else { - echo $exception = "Can not cancel Order " . $oldOrderId . $this->seprator; + + }else{ + echo "Provided new_sku is wrong for ".$oldOrderId." or , row total is not match.<br/>"; + } - } catch (Exception $e) { + // echo 'DoneDanaDone'; + }else{ + echo $exception = "Can not cancel Order ".$oldOrderId.".<br/>"; + } + } catch (Exception $e){ echo $e->getMessage(); } - } +} // End reorder Function //exit; -//function to read csv file - private function csv_to_array($filename = '', $delimiter = ',') { - if (!file_exists($filename) || !is_readable($filename)) - return FALSE; +//function to read csv file - $header = NULL; - $data = array(); - if (($handle = fopen($filename, 'r')) !== FALSE) { - while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE) { - if (!$header) - $header = $row; - else - $data[] = array_combine($header, $row); - } - fclose($handle); +function csv_to_array($filename='', $delimiter=',') +{ + if(!file_exists($filename) || !is_readable($filename)) + return FALSE; + + $header = NULL; + $data = array(); + if (($handle = fopen($filename, 'r')) !== FALSE) + { + while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE) + { + if(!$header) + $header = $row; + else + $data[] = array_combine($header, $row); } - return $data; + fclose($handle); } + return $data; +} - private function _group_by($array, $key) { - $return = array(); - $returnA = array(); - foreach ($array as $val) { - $return[$val[$key]][] = $val; - //$returnA = array_push($returnA, $return); - } - return $return; +function _group_by($array, $key) { + $return = array(); + $returnA = array(); + foreach($array as $val) { + $return[$val[$key]][] = $val; + //$returnA = array_push($returnA, $return); } - + return $return; } -$params = array_slice($argv, 1); -$shell = new Tolexo_Utils_Partial_Reorder($params); -$shell->run(); + + ?> diff --git a/js/categoryreorder/css/font/FontAwesome.otf b/js/categoryreorder/css/font/FontAwesome.otf deleted file mode 100644 index f7936cc..0000000 Binary files a/js/categoryreorder/css/font/FontAwesome.otf and /dev/null differ diff --git a/js/categoryreorder/css/font/fontawesome-webfont.eot b/js/categoryreorder/css/font/fontawesome-webfont.eot deleted file mode 100644 index 33b2bb8..0000000 Binary files a/js/categoryreorder/css/font/fontawesome-webfont.eot and /dev/null differ diff --git a/js/categoryreorder/css/font/fontawesome-webfont.svg b/js/categoryreorder/css/font/fontawesome-webfont.svg deleted file mode 100644 index 1ee89d4..0000000 --- a/js/categoryreorder/css/font/fontawesome-webfont.svg +++ /dev/null @@ -1,565 +0,0 @@ -<?xml version="1.0" standalone="no"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1"> -<metadata></metadata> -<defs> -<font id="fontawesomeregular" horiz-adv-x="1536" > -<font-face units-per-em="1792" ascent="1536" descent="-256" /> -<missing-glyph horiz-adv-x="448" /> -<glyph unicode=" " horiz-adv-x="448" /> -<glyph unicode="	" horiz-adv-x="448" /> -<glyph unicode=" " horiz-adv-x="448" /> -<glyph unicode="¨" horiz-adv-x="1792" /> -<glyph unicode="©" horiz-adv-x="1792" /> -<glyph unicode="®" horiz-adv-x="1792" /> -<glyph unicode="´" horiz-adv-x="1792" /> -<glyph unicode="Æ" horiz-adv-x="1792" /> -<glyph unicode="Ø" horiz-adv-x="1792" /> -<glyph unicode=" " horiz-adv-x="768" /> -<glyph unicode=" " horiz-adv-x="1537" /> -<glyph unicode=" " horiz-adv-x="768" /> -<glyph unicode=" " horiz-adv-x="1537" /> -<glyph unicode=" " horiz-adv-x="512" /> -<glyph unicode=" " horiz-adv-x="384" /> -<glyph unicode=" " horiz-adv-x="256" /> -<glyph unicode=" " horiz-adv-x="256" /> -<glyph unicode=" " horiz-adv-x="192" /> -<glyph unicode=" " horiz-adv-x="307" /> -<glyph unicode=" " horiz-adv-x="85" /> -<glyph unicode=" " horiz-adv-x="307" /> -<glyph unicode=" " horiz-adv-x="384" /> -<glyph unicode="™" horiz-adv-x="1792" /> -<glyph unicode="∞" horiz-adv-x="1792" /> -<glyph unicode="≠" horiz-adv-x="1792" /> -<glyph unicode="◼" horiz-adv-x="500" d="M0 0z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1699 1350q0 -35 -43 -78l-632 -632v-768h320q26 0 45 -19t19 -45t-19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45t45 19h320v768l-632 632q-43 43 -43 78q0 23 18 36.5t38 17.5t43 4h1408q23 0 43 -4t38 -17.5t18 -36.5z" /> -<glyph unicode="" d="M1536 1312v-1120q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89t34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v537l-768 -237v-709q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89 t34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v967q0 31 19 56.5t49 35.5l832 256q12 4 28 4q40 0 68 -28t28 -68z" /> -<glyph unicode="" horiz-adv-x="1664" d="M1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1664 -128q0 -52 -38 -90t-90 -38q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5 t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1664 32v768q-32 -36 -69 -66q-268 -206 -426 -338q-51 -43 -83 -67t-86.5 -48.5t-102.5 -24.5h-1h-1q-48 0 -102.5 24.5t-86.5 48.5t-83 67q-158 132 -426 338q-37 30 -69 66v-768q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1664 1083v11v13.5t-0.5 13 t-3 12.5t-5.5 9t-9 7.5t-14 2.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5q0 -168 147 -284q193 -152 401 -317q6 -5 35 -29.5t46 -37.5t44.5 -31.5t50.5 -27.5t43 -9h1h1q20 0 43 9t50.5 27.5t44.5 31.5t46 37.5t35 29.5q208 165 401 317q54 43 100.5 115.5t46.5 131.5z M1792 1120v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1472q66 0 113 -47t47 -113z" /> -<glyph unicode="" horiz-adv-x="1792" d="M896 -128q-26 0 -44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5q224 0 351 -124t127 -344q0 -221 -229 -450l-623 -600 q-18 -18 -44 -18z" /> -<glyph unicode="" horiz-adv-x="1664" d="M1664 889q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -21 -10.5 -35.5t-30.5 -14.5q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455 l502 -73q56 -9 56 -46z" /> -<glyph unicode="" horiz-adv-x="1664" d="M1137 532l306 297l-422 62l-189 382l-189 -382l-422 -62l306 -297l-73 -421l378 199l377 -199zM1664 889q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -50 -41 -50q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500 l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455l502 -73q56 -9 56 -46z" /> -<glyph unicode="" horiz-adv-x="1408" d="M1408 131q0 -120 -73 -189.5t-194 -69.5h-874q-121 0 -194 69.5t-73 189.5q0 53 3.5 103.5t14 109t26.5 108.5t43 97.5t62 81t85.5 53.5t111.5 20q9 0 42 -21.5t74.5 -48t108 -48t133.5 -21.5t133.5 21.5t108 48t74.5 48t42 21.5q61 0 111.5 -20t85.5 -53.5t62 -81 t43 -97.5t26.5 -108.5t14 -109t3.5 -103.5zM1088 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5z" /> -<glyph unicode="" horiz-adv-x="1920" d="M384 -64v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM384 320v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM384 704v128q0 26 -19 45t-45 19h-128 q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1408 -64v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM384 1088v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45 t45 -19h128q26 0 45 19t19 45zM1792 -64v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1408 704v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM1792 320v128 q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1792 704v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1792 1088v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19 t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1920 1248v-1344q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1344q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" /> -<glyph unicode="" horiz-adv-x="1664" d="M768 512v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM768 1280v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM1664 512v-384q0 -52 -38 -90t-90 -38 h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM1664 1280v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90z" /> -<glyph unicode="" horiz-adv-x="1792" d="M512 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 288v-192q0 -40 -28 -68t-68 -28h-320 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28 h320q40 0 68 -28t28 -68zM1792 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 800v-192 q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68z" /> -<glyph unicode="" horiz-adv-x="1792" d="M512 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 288v-192q0 -40 -28 -68t-68 -28h-960 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68zM512 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 800v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v192q0 40 28 68t68 28 h960q40 0 68 -28t28 -68zM1792 1312v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1671 970q0 -40 -28 -68l-724 -724l-136 -136q-28 -28 -68 -28t-68 28l-136 136l-362 362q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -295l656 657q28 28 68 28t68 -28l136 -136q28 -28 28 -68z" /> -<glyph unicode="" horiz-adv-x="1408" d="M1298 214q0 -40 -28 -68l-136 -136q-28 -28 -68 -28t-68 28l-294 294l-294 -294q-28 -28 -68 -28t-68 28l-136 136q-28 28 -28 68t28 68l294 294l-294 294q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -294l294 294q28 28 68 28t68 -28l136 -136q28 -28 28 -68 t-28 -68l-294 -294l294 -294q28 -28 28 -68z" /> -<glyph unicode="" horiz-adv-x="1664" d="M1024 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-224q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v224h-224q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h224v224q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-224h224 q13 0 22.5 -9.5t9.5 -22.5zM1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1664 -128q0 -53 -37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5 t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z" /> -<glyph unicode="" horiz-adv-x="1664" d="M1024 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-576q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h576q13 0 22.5 -9.5t9.5 -22.5zM1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5z M1664 -128q0 -53 -37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z " /> -<glyph unicode="" d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61t-298 61t-245 164t-164 245t-61 298q0 182 80.5 343t226.5 270q43 32 95.5 25t83.5 -50q32 -42 24.5 -94.5t-49.5 -84.5q-98 -74 -151.5 -181t-53.5 -228q0 -104 40.5 -198.5t109.5 -163.5t163.5 -109.5 t198.5 -40.5t198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5q0 121 -53.5 228t-151.5 181q-42 32 -49.5 84.5t24.5 94.5q31 43 84 50t95 -25q146 -109 226.5 -270t80.5 -343zM896 1408v-640q0 -52 -38 -90t-90 -38t-90 38t-38 90v640q0 52 38 90t90 38t90 -38t38 -90z" /> -<glyph unicode="" horiz-adv-x="1792" d="M256 96v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM640 224v-320q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v320q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1024 480v-576q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23 v576q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1408 864v-960q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 1376v-1472q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v1472q0 14 9 23t23 9h192q14 0 23 -9t9 -23z" /> -<glyph unicode="" d="M1024 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1536 749v-222q0 -12 -8 -23t-20 -13l-185 -28q-19 -54 -39 -91q35 -50 107 -138q10 -12 10 -25t-9 -23q-27 -37 -99 -108t-94 -71q-12 0 -26 9l-138 108q-44 -23 -91 -38 q-16 -136 -29 -186q-7 -28 -36 -28h-222q-14 0 -24.5 8.5t-11.5 21.5l-28 184q-49 16 -90 37l-141 -107q-10 -9 -25 -9q-14 0 -25 11q-126 114 -165 168q-7 10 -7 23q0 12 8 23q15 21 51 66.5t54 70.5q-27 50 -41 99l-183 27q-13 2 -21 12.5t-8 23.5v222q0 12 8 23t19 13 l186 28q14 46 39 92q-40 57 -107 138q-10 12 -10 24q0 10 9 23q26 36 98.5 107.5t94.5 71.5q13 0 26 -10l138 -107q44 23 91 38q16 136 29 186q7 28 36 28h222q14 0 24.5 -8.5t11.5 -21.5l28 -184q49 -16 90 -37l142 107q9 9 24 9q13 0 25 -10q129 -119 165 -170q7 -8 7 -22 q0 -12 -8 -23q-15 -21 -51 -66.5t-54 -70.5q26 -50 41 -98l183 -28q13 -2 21 -12.5t8 -23.5z" /> -<glyph unicode="" horiz-adv-x="1408" d="M512 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM768 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1024 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576 q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1152 76v948h-896v-948q0 -22 7 -40.5t14.5 -27t10.5 -8.5h832q3 0 10.5 8.5t14.5 27t7 40.5zM480 1152h448l-48 117q-7 9 -17 11h-317q-10 -2 -17 -11zM1408 1120v-64q0 -14 -9 -23t-23 -9h-96v-948q0 -83 -47 -143.5t-113 -60.5h-832 q-66 0 -113 58.5t-47 141.5v952h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h309l70 167q15 37 54 63t79 26h320q40 0 79 -26t54 -63l70 -167h309q14 0 23 -9t9 -23z" /> -<glyph unicode="" horiz-adv-x="1664" d="M1408 544v-480q0 -26 -19 -45t-45 -19h-384v384h-256v-384h-384q-26 0 -45 19t-19 45v480q0 1 0.5 3t0.5 3l575 474l575 -474q1 -2 1 -6zM1631 613l-62 -74q-8 -9 -21 -11h-3q-13 0 -21 7l-692 577l-692 -577q-12 -8 -24 -7q-13 2 -21 11l-62 74q-8 10 -7 23.5t11 21.5 l719 599q32 26 76 26t76 -26l244 -204v195q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-408l219 -182q10 -8 11 -21.5t-7 -23.5z" /> -<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z " /> -<glyph unicode="" d="M896 992v-448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" horiz-adv-x="1920" d="M1111 540v4l-24 320q-1 13 -11 22.5t-23 9.5h-186q-13 0 -23 -9.5t-11 -22.5l-24 -320v-4q-1 -12 8 -20t21 -8h244q12 0 21 8t8 20zM1870 73q0 -73 -46 -73h-704q13 0 22 9.5t8 22.5l-20 256q-1 13 -11 22.5t-23 9.5h-272q-13 0 -23 -9.5t-11 -22.5l-20 -256 q-1 -13 8 -22.5t22 -9.5h-704q-46 0 -46 73q0 54 26 116l417 1044q8 19 26 33t38 14h339q-13 0 -23 -9.5t-11 -22.5l-15 -192q-1 -14 8 -23t22 -9h166q13 0 22 9t8 23l-15 192q-1 13 -11 22.5t-23 9.5h339q20 0 38 -14t26 -33l417 -1044q26 -62 26 -116z" /> -<glyph unicode="" horiz-adv-x="1664" d="M1280 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 416v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h465l135 -136 q58 -56 136 -56t136 56l136 136h464q40 0 68 -28t28 -68zM1339 985q17 -41 -14 -70l-448 -448q-18 -19 -45 -19t-45 19l-448 448q-31 29 -14 70q17 39 59 39h256v448q0 26 19 45t45 19h256q26 0 45 -19t19 -45v-448h256q42 0 59 -39z" /> -<glyph unicode="" d="M1120 608q0 -12 -10 -24l-319 -319q-11 -9 -23 -9t-23 9l-320 320q-15 16 -7 35q8 20 30 20h192v352q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-352h192q14 0 23 -9t9 -23zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273 t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" d="M1118 660q-8 -20 -30 -20h-192v-352q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v352h-192q-14 0 -23 9t-9 23q0 12 10 24l319 319q11 9 23 9t23 -9l320 -320q15 -16 7 -35zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198 t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" d="M1023 576h316q-1 3 -2.5 8t-2.5 8l-212 496h-708l-212 -496q-1 -2 -2.5 -8t-2.5 -8h316l95 -192h320zM1536 546v-482q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v482q0 62 25 123l238 552q10 25 36.5 42t52.5 17h832q26 0 52.5 -17t36.5 -42l238 -552 q25 -61 25 -123z" /> -<glyph unicode="" d="M1184 640q0 -37 -32 -55l-544 -320q-15 -9 -32 -9q-16 0 -32 8q-32 19 -32 56v640q0 37 32 56q33 18 64 -1l544 -320q32 -18 32 -55zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" d="M1536 1280v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l138 138q-148 137 -349 137q-104 0 -198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5q119 0 225 52t179 147q7 10 23 12q14 0 25 -9 l137 -138q9 -8 9.5 -20.5t-7.5 -22.5q-109 -132 -264 -204.5t-327 -72.5q-156 0 -298 61t-245 164t-164 245t-61 298t61 298t164 245t245 164t298 61q147 0 284.5 -55.5t244.5 -156.5l130 129q29 31 70 14q39 -17 39 -59z" /> -<glyph unicode="" d="M1511 480q0 -5 -1 -7q-64 -268 -268 -434.5t-478 -166.5q-146 0 -282.5 55t-243.5 157l-129 -129q-19 -19 -45 -19t-45 19t-19 45v448q0 26 19 45t45 19h448q26 0 45 -19t19 -45t-19 -45l-137 -137q71 -66 161 -102t187 -36q134 0 250 65t186 179q11 17 53 117 q8 23 30 23h192q13 0 22.5 -9.5t9.5 -22.5zM1536 1280v-448q0 -26 -19 -45t-45 -19h-448q-26 0 -45 19t-19 45t19 45l138 138q-148 137 -349 137q-134 0 -250 -65t-186 -179q-11 -17 -53 -117q-8 -23 -30 -23h-199q-13 0 -22.5 9.5t-9.5 22.5v7q65 268 270 434.5t480 166.5 q146 0 284 -55.5t245 -156.5l130 129q19 19 45 19t45 -19t19 -45z" /> -<glyph unicode="" horiz-adv-x="1792" d="M384 352v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 608v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M384 864v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1536 352v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5z M1536 608v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5zM1536 864v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5 t9.5 -22.5zM1664 160v832q0 13 -9.5 22.5t-22.5 9.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5v-832q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1792 1248v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1472q66 0 113 -47 t47 -113z" /> -<glyph unicode="" horiz-adv-x="1152" d="M320 768h512v192q0 106 -75 181t-181 75t-181 -75t-75 -181v-192zM1152 672v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h32v192q0 184 132 316t316 132t316 -132t132 -316v-192h32q40 0 68 -28t28 -68z" /> -<glyph unicode="" horiz-adv-x="1792" d="M320 1280q0 -72 -64 -110v-1266q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v1266q-64 38 -64 110q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -25 -12.5 -38.5t-39.5 -27.5q-215 -116 -369 -116q-61 0 -123.5 22t-108.5 48 t-115.5 48t-142.5 22q-192 0 -464 -146q-17 -9 -33 -9q-26 0 -45 19t-19 45v742q0 32 31 55q21 14 79 43q236 120 421 120q107 0 200 -29t219 -88q38 -19 88 -19q54 0 117.5 21t110 47t88 47t54.5 21q26 0 45 -19t19 -45z" /> -<glyph unicode="" horiz-adv-x="1664" d="M1664 650q0 -166 -60 -314l-20 -49l-185 -33q-22 -83 -90.5 -136.5t-156.5 -53.5v-32q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-32q71 0 130 -35.5t93 -95.5l68 12q29 95 29 193q0 148 -88 279t-236.5 209t-315.5 78 t-315.5 -78t-236.5 -209t-88 -279q0 -98 29 -193l68 -12q34 60 93 95.5t130 35.5v32q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v32q-88 0 -156.5 53.5t-90.5 136.5l-185 33l-20 49q-60 148 -60 314q0 151 67 291t179 242.5 t266 163.5t320 61t320 -61t266 -163.5t179 -242.5t67 -291z" /> -<glyph unicode="" horiz-adv-x="768" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45z" /> -<glyph unicode="" horiz-adv-x="1152" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45zM1152 640q0 -76 -42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5q0 21 12 35.5t29 25t34 23t29 35.5 t12 57t-12 57t-29 35.5t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5q15 0 25 -5q70 -27 112.5 -93t42.5 -142z" /> -<glyph unicode="" horiz-adv-x="1664" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45zM1152 640q0 -76 -42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5q0 21 12 35.5t29 25t34 23t29 35.5 t12 57t-12 57t-29 35.5t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5q15 0 25 -5q70 -27 112.5 -93t42.5 -142zM1408 640q0 -153 -85 -282.5t-225 -188.5q-13 -5 -25 -5q-27 0 -46 19t-19 45q0 39 39 59q56 29 76 44q74 54 115.5 135.5t41.5 173.5t-41.5 173.5 t-115.5 135.5q-20 15 -76 44q-39 20 -39 59q0 26 19 45t45 19q13 0 26 -5q140 -59 225 -188.5t85 -282.5zM1664 640q0 -230 -127 -422.5t-338 -283.5q-13 -5 -26 -5q-26 0 -45 19t-19 45q0 36 39 59q7 4 22.5 10.5t22.5 10.5q46 25 82 51q123 91 192 227t69 289t-69 289 t-192 227q-36 26 -82 51q-7 4 -22.5 10.5t-22.5 10.5q-39 23 -39 59q0 26 19 45t45 19q13 0 26 -5q211 -91 338 -283.5t127 -422.5z" /> -<glyph unicode="" horiz-adv-x="1408" d="M384 384v-128h-128v128h128zM384 1152v-128h-128v128h128zM1152 1152v-128h-128v128h128zM128 129h384v383h-384v-383zM128 896h384v384h-384v-384zM896 896h384v384h-384v-384zM640 640v-640h-640v640h640zM1152 128v-128h-128v128h128zM1408 128v-128h-128v128h128z M1408 640v-384h-384v128h-128v-384h-128v640h384v-128h128v128h128zM640 1408v-640h-640v640h640zM1408 1408v-640h-640v640h640z" /> -<glyph unicode="" horiz-adv-x="1792" d="M63 0h-63v1408h63v-1408zM126 1h-32v1407h32v-1407zM220 1h-31v1407h31v-1407zM377 1h-31v1407h31v-1407zM534 1h-62v1407h62v-1407zM660 1h-31v1407h31v-1407zM723 1h-31v1407h31v-1407zM786 1h-31v1407h31v-1407zM943 1h-63v1407h63v-1407zM1100 1h-63v1407h63v-1407z M1226 1h-63v1407h63v-1407zM1352 1h-63v1407h63v-1407zM1446 1h-63v1407h63v-1407zM1635 1h-94v1407h94v-1407zM1698 1h-32v1407h32v-1407zM1792 0h-63v1408h63v-1408z" /> -<glyph unicode="" d="M448 1088q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1515 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5 l715 -714q37 -39 37 -91z" /> -<glyph unicode="" horiz-adv-x="1920" d="M448 1088q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1515 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5 l715 -714q37 -39 37 -91zM1899 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-36 0 -59 14t-53 45l470 470q37 37 37 90q0 52 -37 91l-715 714q-38 38 -102 64.5t-117 26.5h224q53 0 117 -26.5t102 -64.5l715 -714q37 -39 37 -91z" /> -<glyph unicode="" horiz-adv-x="1664" d="M1639 1058q40 -57 18 -129l-275 -906q-19 -64 -76.5 -107.5t-122.5 -43.5h-923q-77 0 -148.5 53.5t-99.5 131.5q-24 67 -2 127q0 4 3 27t4 37q1 8 -3 21.5t-3 19.5q2 11 8 21t16.5 23.5t16.5 23.5q23 38 45 91.5t30 91.5q3 10 0.5 30t-0.5 28q3 11 17 28t17 23 q21 36 42 92t25 90q1 9 -2.5 32t0.5 28q4 13 22 30.5t22 22.5q19 26 42.5 84.5t27.5 96.5q1 8 -3 25.5t-2 26.5q2 8 9 18t18 23t17 21q8 12 16.5 30.5t15 35t16 36t19.5 32t26.5 23.5t36 11.5t47.5 -5.5l-1 -3q38 9 51 9h761q74 0 114 -56t18 -130l-274 -906 q-36 -119 -71.5 -153.5t-128.5 -34.5h-869q-27 0 -38 -15q-11 -16 -1 -43q24 -70 144 -70h923q29 0 56 15.5t35 41.5l300 987q7 22 5 57q38 -15 59 -43zM575 1056q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5 t-16.5 -22.5zM492 800q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5t-16.5 -22.5z" /> -<glyph unicode="" horiz-adv-x="1280" d="M1164 1408q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62v1289q0 34 19.5 62t52.5 41q21 9 44 9h1048z" /> -<glyph unicode="" horiz-adv-x="1664" d="M384 0h896v256h-896v-256zM384 640h896v384h-160q-40 0 -68 28t-28 68v160h-640v-640zM1536 576q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 576v-416q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-160q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68 v160h-224q-13 0 -22.5 9.5t-9.5 22.5v416q0 79 56.5 135.5t135.5 56.5h64v544q0 40 28 68t68 28h672q40 0 88 -20t76 -48l152 -152q28 -28 48 -76t20 -88v-256h64q79 0 135.5 -56.5t56.5 -135.5z" /> -<glyph unicode="" horiz-adv-x="1920" d="M960 864q119 0 203.5 -84.5t84.5 -203.5t-84.5 -203.5t-203.5 -84.5t-203.5 84.5t-84.5 203.5t84.5 203.5t203.5 84.5zM1664 1280q106 0 181 -75t75 -181v-896q0 -106 -75 -181t-181 -75h-1408q-106 0 -181 75t-75 181v896q0 106 75 181t181 75h224l51 136 q19 49 69.5 84.5t103.5 35.5h512q53 0 103.5 -35.5t69.5 -84.5l51 -136h224zM960 128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" /> -<glyph unicode="" horiz-adv-x="1664" d="M725 977l-170 -450q33 0 136.5 -2t160.5 -2q19 0 57 2q-87 253 -184 452zM0 -128l2 79q23 7 56 12.5t57 10.5t49.5 14.5t44.5 29t31 50.5l237 616l280 724h75h53q8 -14 11 -21l205 -480q33 -78 106 -257.5t114 -274.5q15 -34 58 -144.5t72 -168.5q20 -45 35 -57 q19 -15 88 -29.5t84 -20.5q6 -38 6 -57q0 -4 -0.5 -13t-0.5 -13q-63 0 -190 8t-191 8q-76 0 -215 -7t-178 -8q0 43 4 78l131 28q1 0 12.5 2.5t15.5 3.5t14.5 4.5t15 6.5t11 8t9 11t2.5 14q0 16 -31 96.5t-72 177.5t-42 100l-450 2q-26 -58 -76.5 -195.5t-50.5 -162.5 q0 -22 14 -37.5t43.5 -24.5t48.5 -13.5t57 -8.5t41 -4q1 -19 1 -58q0 -9 -2 -27q-58 0 -174.5 10t-174.5 10q-8 0 -26.5 -4t-21.5 -4q-80 -14 -188 -14z" /> -<glyph unicode="" horiz-adv-x="1408" d="M555 15q74 -32 140 -32q376 0 376 335q0 114 -41 180q-27 44 -61.5 74t-67.5 46.5t-80.5 25t-84 10.5t-94.5 2q-73 0 -101 -10q0 -53 -0.5 -159t-0.5 -158q0 -8 -1 -67.5t-0.5 -96.5t4.5 -83.5t12 -66.5zM541 761q42 -7 109 -7q82 0 143 13t110 44.5t74.5 89.5t25.5 142 q0 70 -29 122.5t-79 82t-108 43.5t-124 14q-50 0 -130 -13q0 -50 4 -151t4 -152q0 -27 -0.5 -80t-0.5 -79q0 -46 1 -69zM0 -128l2 94q15 4 85 16t106 27q7 12 12.5 27t8.5 33.5t5.5 32.5t3 37.5t0.5 34v35.5v30q0 982 -22 1025q-4 8 -22 14.5t-44.5 11t-49.5 7t-48.5 4.5 t-30.5 3l-4 83q98 2 340 11.5t373 9.5q23 0 68.5 -0.5t67.5 -0.5q70 0 136.5 -13t128.5 -42t108 -71t74 -104.5t28 -137.5q0 -52 -16.5 -95.5t-39 -72t-64.5 -57.5t-73 -45t-84 -40q154 -35 256.5 -134t102.5 -248q0 -100 -35 -179.5t-93.5 -130.5t-138 -85.5t-163.5 -48.5 t-176 -14q-44 0 -132 3t-132 3q-106 0 -307 -11t-231 -12z" /> -<glyph unicode="" horiz-adv-x="1024" d="M0 -126l17 85q6 2 81.5 21.5t111.5 37.5q28 35 41 101q1 7 62 289t114 543.5t52 296.5v25q-24 13 -54.5 18.5t-69.5 8t-58 5.5l19 103q33 -2 120 -6.5t149.5 -7t120.5 -2.5q48 0 98.5 2.5t121 7t98.5 6.5q-5 -39 -19 -89q-30 -10 -101.5 -28.5t-108.5 -33.5 q-8 -19 -14 -42.5t-9 -40t-7.5 -45.5t-6.5 -42q-27 -148 -87.5 -419.5t-77.5 -355.5q-2 -9 -13 -58t-20 -90t-16 -83.5t-6 -57.5l1 -18q17 -4 185 -31q-3 -44 -16 -99q-11 0 -32.5 -1.5t-32.5 -1.5q-29 0 -87 10t-86 10q-138 2 -206 2q-51 0 -143 -9t-121 -11z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1744 128q33 0 42 -18.5t-11 -44.5l-126 -162q-20 -26 -49 -26t-49 26l-126 162q-20 26 -11 44.5t42 18.5h80v1024h-80q-33 0 -42 18.5t11 44.5l126 162q20 26 49 26t49 -26l126 -162q20 -26 11 -44.5t-42 -18.5h-80v-1024h80zM81 1407l54 -27q12 -5 211 -5q44 0 132 2 t132 2q36 0 107.5 -0.5t107.5 -0.5h293q6 0 21 -0.5t20.5 0t16 3t17.5 9t15 17.5l42 1q4 0 14 -0.5t14 -0.5q2 -112 2 -336q0 -80 -5 -109q-39 -14 -68 -18q-25 44 -54 128q-3 9 -11 48t-14.5 73.5t-7.5 35.5q-6 8 -12 12.5t-15.5 6t-13 2.5t-18 0.5t-16.5 -0.5 q-17 0 -66.5 0.5t-74.5 0.5t-64 -2t-71 -6q-9 -81 -8 -136q0 -94 2 -388t2 -455q0 -16 -2.5 -71.5t0 -91.5t12.5 -69q40 -21 124 -42.5t120 -37.5q5 -40 5 -50q0 -14 -3 -29l-34 -1q-76 -2 -218 8t-207 10q-50 0 -151 -9t-152 -9q-3 51 -3 52v9q17 27 61.5 43t98.5 29t78 27 q19 42 19 383q0 101 -3 303t-3 303v117q0 2 0.5 15.5t0.5 25t-1 25.5t-3 24t-5 14q-11 12 -162 12q-33 0 -93 -12t-80 -26q-19 -13 -34 -72.5t-31.5 -111t-42.5 -53.5q-42 26 -56 44v383z" /> -<glyph unicode="" d="M81 1407l54 -27q12 -5 211 -5q44 0 132 2t132 2q70 0 246.5 1t304.5 0.5t247 -4.5q33 -1 56 31l42 1q4 0 14 -0.5t14 -0.5q2 -112 2 -336q0 -80 -5 -109q-39 -14 -68 -18q-25 44 -54 128q-3 9 -11 47.5t-15 73.5t-7 36q-10 13 -27 19q-5 2 -66 2q-30 0 -93 1t-103 1 t-94 -2t-96 -7q-9 -81 -8 -136l1 -152v52q0 -55 1 -154t1.5 -180t0.5 -153q0 -16 -2.5 -71.5t0 -91.5t12.5 -69q40 -21 124 -42.5t120 -37.5q5 -40 5 -50q0 -14 -3 -29l-34 -1q-76 -2 -218 8t-207 10q-50 0 -151 -9t-152 -9q-3 51 -3 52v9q17 27 61.5 43t98.5 29t78 27 q7 16 11.5 74t6 145.5t1.5 155t-0.5 153.5t-0.5 89q0 7 -2.5 21.5t-2.5 22.5q0 7 0.5 44t1 73t0 76.5t-3 67.5t-6.5 32q-11 12 -162 12q-41 0 -163 -13.5t-138 -24.5q-19 -12 -34 -71.5t-31.5 -111.5t-42.5 -54q-42 26 -56 44v383zM1310 125q12 0 42 -19.5t57.5 -41.5 t59.5 -49t36 -30q26 -21 26 -49t-26 -49q-4 -3 -36 -30t-59.5 -49t-57.5 -41.5t-42 -19.5q-13 0 -20.5 10.5t-10 28.5t-2.5 33.5t1.5 33t1.5 19.5h-1024q0 -2 1.5 -19.5t1.5 -33t-2.5 -33.5t-10 -28.5t-20.5 -10.5q-12 0 -42 19.5t-57.5 41.5t-59.5 49t-36 30q-26 21 -26 49 t26 49q4 3 36 30t59.5 49t57.5 41.5t42 19.5q13 0 20.5 -10.5t10 -28.5t2.5 -33.5t-1.5 -33t-1.5 -19.5h1024q0 2 -1.5 19.5t-1.5 33t2.5 33.5t10 28.5t20.5 10.5z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1408 576v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45zM1664 960v-128q0 -26 -19 -45 t-45 -19h-1536q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45zM1280 1344v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1408 576v-128q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h896q26 0 45 -19t19 -45zM1664 960v-128q0 -26 -19 -45t-45 -19 h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1280 1344v-128q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h640q26 0 45 -19t19 -45z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 576v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45zM1792 960v-128q0 -26 -19 -45 t-45 -19h-1536q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45zM1792 1344v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 576v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 960v-128q0 -26 -19 -45 t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 1344v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45z" /> -<glyph unicode="" horiz-adv-x="1792" d="M256 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM256 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5 t9.5 -22.5zM256 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1344 q13 0 22.5 -9.5t9.5 -22.5zM256 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5 t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192 q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5z" /> -<glyph unicode="" horiz-adv-x="1792" d="M384 992v-576q0 -13 -9.5 -22.5t-22.5 -9.5q-14 0 -23 9l-288 288q-9 9 -9 23t9 23l288 288q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5 t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088 q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5z" /> -<glyph unicode="" horiz-adv-x="1792" d="M352 704q0 -14 -9 -23l-288 -288q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v576q0 13 9.5 22.5t22.5 9.5q14 0 23 -9l288 -288q9 -9 9 -23zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5 t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088 q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1792 1184v-1088q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-403 403v-166q0 -119 -84.5 -203.5t-203.5 -84.5h-704q-119 0 -203.5 84.5t-84.5 203.5v704q0 119 84.5 203.5t203.5 84.5h704q119 0 203.5 -84.5t84.5 -203.5v-165l403 402q18 19 45 19q12 0 25 -5 q39 -17 39 -59z" /> -<glyph unicode="" horiz-adv-x="1920" d="M640 960q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1664 576v-448h-1408v192l320 320l160 -160l512 512zM1760 1280h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-1216q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5v1216 q0 13 -9.5 22.5t-22.5 9.5zM1920 1248v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" /> -<glyph unicode="" d="M363 0l91 91l-235 235l-91 -91v-107h128v-128h107zM886 928q0 22 -22 22q-10 0 -17 -7l-542 -542q-7 -7 -7 -17q0 -22 22 -22q10 0 17 7l542 542q7 7 7 17zM832 1120l416 -416l-832 -832h-416v416zM1515 1024q0 -53 -37 -90l-166 -166l-416 416l166 165q36 38 90 38 q53 0 91 -38l235 -234q37 -39 37 -91z" /> -<glyph unicode="" horiz-adv-x="1024" d="M768 896q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1024 896q0 -109 -33 -179l-364 -774q-16 -33 -47.5 -52t-67.5 -19t-67.5 19t-46.5 52l-365 774q-33 70 -33 179q0 212 150 362t362 150t362 -150t150 -362z" /> -<glyph unicode="" d="M768 96v1088q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" horiz-adv-x="1024" d="M512 384q0 36 -20 69q-1 1 -15.5 22.5t-25.5 38t-25 44t-21 50.5q-4 16 -21 16t-21 -16q-7 -23 -21 -50.5t-25 -44t-25.5 -38t-15.5 -22.5q-20 -33 -20 -69q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 512q0 -212 -150 -362t-362 -150t-362 150t-150 362 q0 145 81 275q6 9 62.5 90.5t101 151t99.5 178t83 201.5q9 30 34 47t51 17t51.5 -17t33.5 -47q28 -93 83 -201.5t99.5 -178t101 -151t62.5 -90.5q81 -127 81 -275z" /> -<glyph unicode="" horiz-adv-x="1792" d="M888 352l116 116l-152 152l-116 -116v-56h96v-96h56zM1328 1072q-16 16 -33 -1l-350 -350q-17 -17 -1 -33t33 1l350 350q17 17 1 33zM1408 478v-190q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832 q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-14 -14 -32 -8q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v126q0 13 9 22l64 64q15 15 35 7t20 -29zM1312 1216l288 -288l-672 -672h-288v288zM1756 1084l-92 -92 l-288 288l92 92q28 28 68 28t68 -28l152 -152q28 -28 28 -68t-28 -68z" /> -<glyph unicode="" horiz-adv-x="1664" d="M1408 547v-259q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h255v0q13 0 22.5 -9.5t9.5 -22.5q0 -27 -26 -32q-77 -26 -133 -60q-10 -4 -16 -4h-112q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832 q66 0 113 47t47 113v214q0 19 18 29q28 13 54 37q16 16 35 8q21 -9 21 -29zM1645 1043l-384 -384q-18 -19 -45 -19q-12 0 -25 5q-39 17 -39 59v192h-160q-323 0 -438 -131q-119 -137 -74 -473q3 -23 -20 -34q-8 -2 -12 -2q-16 0 -26 13q-10 14 -21 31t-39.5 68.5t-49.5 99.5 t-38.5 114t-17.5 122q0 49 3.5 91t14 90t28 88t47 81.5t68.5 74t94.5 61.5t124.5 48.5t159.5 30.5t196.5 11h160v192q0 42 39 59q13 5 25 5q26 0 45 -19l384 -384q19 -19 19 -45t-19 -45z" /> -<glyph unicode="" horiz-adv-x="1664" d="M1408 606v-318q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-10 -10 -23 -10q-3 0 -9 2q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832 q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v254q0 13 9 22l64 64q10 10 23 10q6 0 12 -3q20 -8 20 -29zM1639 1095l-814 -814q-24 -24 -57 -24t-57 24l-430 430q-24 24 -24 57t24 57l110 110q24 24 57 24t57 -24l263 -263l647 647q24 24 57 24t57 -24l110 -110 q24 -24 24 -57t-24 -57z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1792 640q0 -26 -19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-384v-384h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v384h-384v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45 t19 45l256 256q19 19 45 19t45 -19t19 -45v-128h384v384h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45t-19 -45t-45 -19h-128v-384h384v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45z" /> -<glyph unicode="" horiz-adv-x="1024" d="M979 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 11 13 19z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1747 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 11 13 19l710 710 q19 19 32 13t13 -32v-710q4 11 13 19z" /> -<glyph unicode="" horiz-adv-x="1664" d="M1619 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-8 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-19 19 -19 45t19 45l710 710q19 19 32 13t13 -32v-710q5 11 13 19z" /> -<glyph unicode="" horiz-adv-x="1408" d="M1384 609l-1328 -738q-23 -13 -39.5 -3t-16.5 36v1472q0 26 16.5 36t39.5 -3l1328 -738q23 -13 23 -31t-23 -31z" /> -<glyph unicode="" d="M1536 1344v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45zM640 1344v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45z" /> -<glyph unicode="" d="M1536 1344v-1408q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" /> -<glyph unicode="" horiz-adv-x="1664" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v710q0 26 13 32t32 -13l710 -710q19 -19 19 -45t-19 -45l-710 -710q-19 -19 -32 -13t-13 32v710q-5 -10 -13 -19z" /> -<glyph unicode="" horiz-adv-x="1792" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v710q0 26 13 32t32 -13l710 -710q8 -8 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-5 -10 -13 -19l-710 -710 q-19 -19 -32 -13t-13 32v710q-5 -10 -13 -19z" /> -<glyph unicode="" horiz-adv-x="1024" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-5 -10 -13 -19z" /> -<glyph unicode="" horiz-adv-x="1538" d="M14 557l710 710q19 19 45 19t45 -19l710 -710q19 -19 13 -32t-32 -13h-1472q-26 0 -32 13t13 32zM1473 0h-1408q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1408q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19z" /> -<glyph unicode="" horiz-adv-x="1280" d="M1171 1235l-531 -531l531 -531q19 -19 19 -45t-19 -45l-166 -166q-19 -19 -45 -19t-45 19l-742 742q-19 19 -19 45t19 45l742 742q19 19 45 19t45 -19l166 -166q19 -19 19 -45t-19 -45z" /> -<glyph unicode="" horiz-adv-x="1280" d="M1107 659l-742 -742q-19 -19 -45 -19t-45 19l-166 166q-19 19 -19 45t19 45l531 531l-531 531q-19 19 -19 45t19 45l166 166q19 19 45 19t45 -19l742 -742q19 -19 19 -45t-19 -45z" /> -<glyph unicode="" d="M1216 576v128q0 26 -19 45t-45 19h-256v256q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-256h-256q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h256v-256q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v256h256q26 0 45 19t19 45zM1536 640q0 -209 -103 -385.5 t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" d="M1216 576v128q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5 t103 -385.5z" /> -<glyph unicode="" d="M1149 414q0 26 -19 45l-181 181l181 181q19 19 19 45q0 27 -19 46l-90 90q-19 19 -46 19q-26 0 -45 -19l-181 -181l-181 181q-19 19 -45 19q-27 0 -46 -19l-90 -90q-19 -19 -19 -46q0 -26 19 -45l181 -181l-181 -181q-19 -19 -19 -45q0 -27 19 -46l90 -90q19 -19 46 -19 q26 0 45 19l181 181l181 -181q19 -19 45 -19q27 0 46 19l90 90q19 19 19 46zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" d="M1284 802q0 28 -18 46l-91 90q-19 19 -45 19t-45 -19l-408 -407l-226 226q-19 19 -45 19t-45 -19l-91 -90q-18 -18 -18 -46q0 -27 18 -45l362 -362q19 -19 45 -19q27 0 46 19l543 543q18 18 18 45zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" d="M896 160v192q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h192q14 0 23 9t9 23zM1152 832q0 88 -55.5 163t-138.5 116t-170 41q-243 0 -371 -213q-15 -24 8 -42l132 -100q7 -6 19 -6q16 0 25 12q53 68 86 92q34 24 86 24q48 0 85.5 -26t37.5 -59 q0 -38 -20 -61t-68 -45q-63 -28 -115.5 -86.5t-52.5 -125.5v-36q0 -14 9 -23t23 -9h192q14 0 23 9t9 23q0 19 21.5 49.5t54.5 49.5q32 18 49 28.5t46 35t44.5 48t28 60.5t12.5 81zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" d="M1024 160v160q0 14 -9 23t-23 9h-96v512q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h96v-320h-96q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h448q14 0 23 9t9 23zM896 1056v160q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23 t23 -9h192q14 0 23 9t9 23zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" d="M1197 512h-109q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h109q-32 108 -112.5 188.5t-188.5 112.5v-109q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v109q-108 -32 -188.5 -112.5t-112.5 -188.5h109q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-109 q32 -108 112.5 -188.5t188.5 -112.5v109q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-109q108 32 188.5 112.5t112.5 188.5zM1536 704v-128q0 -26 -19 -45t-45 -19h-143q-37 -161 -154.5 -278.5t-278.5 -154.5v-143q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v143 q-161 37 -278.5 154.5t-154.5 278.5h-143q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h143q37 161 154.5 278.5t278.5 154.5v143q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-143q161 -37 278.5 -154.5t154.5 -278.5h143q26 0 45 -19t19 -45z" /> -<glyph unicode="" d="M1097 457l-146 -146q-10 -10 -23 -10t-23 10l-137 137l-137 -137q-10 -10 -23 -10t-23 10l-146 146q-10 10 -10 23t10 23l137 137l-137 137q-10 10 -10 23t10 23l146 146q10 10 23 10t23 -10l137 -137l137 137q10 10 23 10t23 -10l146 -146q10 -10 10 -23t-10 -23 l-137 -137l137 -137q10 -10 10 -23t-10 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5 t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" d="M1171 723l-422 -422q-19 -19 -45 -19t-45 19l-294 294q-19 19 -19 45t19 45l102 102q19 19 45 19t45 -19l147 -147l275 275q19 19 45 19t45 -19l102 -102q19 -19 19 -45t-19 -45zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198 t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" d="M1312 643q0 161 -87 295l-754 -753q137 -89 297 -89q111 0 211.5 43.5t173.5 116.5t116 174.5t43 212.5zM313 344l755 754q-135 91 -300 91q-148 0 -273 -73t-198 -199t-73 -274q0 -162 89 -299zM1536 643q0 -157 -61 -300t-163.5 -246t-245 -164t-298.5 -61t-298.5 61 t-245 164t-163.5 246t-61 300t61 299.5t163.5 245.5t245 164t298.5 61t298.5 -61t245 -164t163.5 -245.5t61 -299.5z" /> -<glyph unicode="" d="M1536 640v-128q0 -53 -32.5 -90.5t-84.5 -37.5h-704l293 -294q38 -36 38 -90t-38 -90l-75 -76q-37 -37 -90 -37q-52 0 -91 37l-651 652q-37 37 -37 90q0 52 37 91l651 650q38 38 91 38q52 0 90 -38l75 -74q38 -38 38 -91t-38 -91l-293 -293h704q52 0 84.5 -37.5 t32.5 -90.5z" /> -<glyph unicode="" d="M1472 576q0 -54 -37 -91l-651 -651q-39 -37 -91 -37q-51 0 -90 37l-75 75q-38 38 -38 91t38 91l293 293h-704q-52 0 -84.5 37.5t-32.5 90.5v128q0 53 32.5 90.5t84.5 37.5h704l-293 294q-38 36 -38 90t38 90l75 75q38 38 90 38q53 0 91 -38l651 -651q37 -35 37 -90z" /> -<glyph unicode="" horiz-adv-x="1664" d="M1611 565q0 -51 -37 -90l-75 -75q-38 -38 -91 -38q-54 0 -90 38l-294 293v-704q0 -52 -37.5 -84.5t-90.5 -32.5h-128q-53 0 -90.5 32.5t-37.5 84.5v704l-294 -293q-36 -38 -90 -38t-90 38l-75 75q-38 38 -38 90q0 53 38 91l651 651q35 37 90 37q54 0 91 -37l651 -651 q37 -39 37 -91z" /> -<glyph unicode="" horiz-adv-x="1664" d="M1611 704q0 -53 -37 -90l-651 -652q-39 -37 -91 -37q-53 0 -90 37l-651 652q-38 36 -38 90q0 53 38 91l74 75q39 37 91 37q53 0 90 -37l294 -294v704q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-704l294 294q37 37 90 37q52 0 91 -37l75 -75q37 -39 37 -91z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1792 896q0 -26 -19 -45l-512 -512q-19 -19 -45 -19t-45 19t-19 45v256h-224q-98 0 -175.5 -6t-154 -21.5t-133 -42.5t-105.5 -69.5t-80 -101t-48.5 -138.5t-17.5 -181q0 -55 5 -123q0 -6 2.5 -23.5t2.5 -26.5q0 -15 -8.5 -25t-23.5 -10q-16 0 -28 17q-7 9 -13 22 t-13.5 30t-10.5 24q-127 285 -127 451q0 199 53 333q162 403 875 403h224v256q0 26 19 45t45 19t45 -19l512 -512q19 -19 19 -45z" /> -<glyph unicode="" d="M755 480q0 -13 -10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45t-45 -19h-448q-26 0 -45 19t-19 45v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23zM1536 1344v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332 q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45z" /> -<glyph unicode="" d="M768 576v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45zM1523 1248q0 -13 -10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45 t-45 -19h-448q-26 0 -45 19t-19 45v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23z" /> -<glyph unicode="" horiz-adv-x="1408" d="M1408 800v-192q0 -40 -28 -68t-68 -28h-416v-416q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v416h-416q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h416v416q0 40 28 68t68 28h192q40 0 68 -28t28 -68v-416h416q40 0 68 -28t28 -68z" /> -<glyph unicode="" horiz-adv-x="1408" d="M1408 800v-192q0 -40 -28 -68t-68 -28h-1216q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h1216q40 0 68 -28t28 -68z" /> -<glyph unicode="" horiz-adv-x="1664" d="M1482 486q46 -26 59.5 -77.5t-12.5 -97.5l-64 -110q-26 -46 -77.5 -59.5t-97.5 12.5l-266 153v-307q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v307l-266 -153q-46 -26 -97.5 -12.5t-77.5 59.5l-64 110q-26 46 -12.5 97.5t59.5 77.5l266 154l-266 154 q-46 26 -59.5 77.5t12.5 97.5l64 110q26 46 77.5 59.5t97.5 -12.5l266 -153v307q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-307l266 153q46 26 97.5 12.5t77.5 -59.5l64 -110q26 -46 12.5 -97.5t-59.5 -77.5l-266 -154z" /> -<glyph unicode="" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM896 161v190q0 14 -9 23.5t-22 9.5h-192q-13 0 -23 -10t-10 -23v-190q0 -13 10 -23t23 -10h192 q13 0 22 9.5t9 23.5zM894 505l18 621q0 12 -10 18q-10 8 -24 8h-220q-14 0 -24 -8q-10 -6 -10 -18l17 -621q0 -10 10 -17.5t24 -7.5h185q14 0 23.5 7.5t10.5 17.5z" /> -<glyph unicode="" d="M928 180v56v468v192h-320v-192v-468v-56q0 -25 18 -38.5t46 -13.5h192q28 0 46 13.5t18 38.5zM472 1024h195l-126 161q-26 31 -69 31q-40 0 -68 -28t-28 -68t28 -68t68 -28zM1160 1120q0 40 -28 68t-68 28q-43 0 -69 -31l-125 -161h194q40 0 68 28t28 68zM1536 864v-320 q0 -14 -9 -23t-23 -9h-96v-416q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28t-28 68v416h-96q-14 0 -23 9t-9 23v320q0 14 9 23t23 9h440q-93 0 -158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5q107 0 168 -77l128 -165l128 165q61 77 168 77q93 0 158.5 -65.5t65.5 -158.5 t-65.5 -158.5t-158.5 -65.5h440q14 0 23 -9t9 -23z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1280 832q0 26 -19 45t-45 19q-172 0 -318 -49.5t-259.5 -134t-235.5 -219.5q-19 -21 -19 -45q0 -26 19 -45t45 -19q24 0 45 19q27 24 74 71t67 66q137 124 268.5 176t313.5 52q26 0 45 19t19 45zM1792 1030q0 -95 -20 -193q-46 -224 -184.5 -383t-357.5 -268 q-214 -108 -438 -108q-148 0 -286 47q-15 5 -88 42t-96 37q-16 0 -39.5 -32t-45 -70t-52.5 -70t-60 -32q-30 0 -51 11t-31 24t-27 42q-2 4 -6 11t-5.5 10t-3 9.5t-1.5 13.5q0 35 31 73.5t68 65.5t68 56t31 48q0 4 -14 38t-16 44q-9 51 -9 104q0 115 43.5 220t119 184.5 t170.5 139t204 95.5q55 18 145 25.5t179.5 9t178.5 6t163.5 24t113.5 56.5l29.5 29.5t29.5 28t27 20t36.5 16t43.5 4.5q39 0 70.5 -46t47.5 -112t24 -124t8 -96z" /> -<glyph unicode="" horiz-adv-x="1408" d="M1408 -160v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1152 896q0 -78 -24.5 -144t-64 -112.5t-87.5 -88t-96 -77.5t-87.5 -72t-64 -81.5t-24.5 -96.5q0 -96 67 -224l-4 1l1 -1 q-90 41 -160 83t-138.5 100t-113.5 122.5t-72.5 150.5t-27.5 184q0 78 24.5 144t64 112.5t87.5 88t96 77.5t87.5 72t64 81.5t24.5 96.5q0 94 -66 224l3 -1l-1 1q90 -41 160 -83t138.5 -100t113.5 -122.5t72.5 -150.5t27.5 -184z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1664 576q-152 236 -381 353q61 -104 61 -225q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 121 61 225q-229 -117 -381 -353q133 -205 333.5 -326.5t434.5 -121.5t434.5 121.5t333.5 326.5zM944 960q0 20 -14 34t-34 14q-125 0 -214.5 -89.5 t-89.5 -214.5q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34zM1792 576q0 -34 -20 -69q-140 -230 -376.5 -368.5t-499.5 -138.5t-499.5 139t-376.5 368q-20 35 -20 69t20 69q140 229 376.5 368t499.5 139t499.5 -139t376.5 -368q20 -35 20 -69z" /> -<glyph unicode="" horiz-adv-x="1792" d="M555 201l78 141q-87 63 -136 159t-49 203q0 121 61 225q-229 -117 -381 -353q167 -258 427 -375zM944 960q0 20 -14 34t-34 14q-125 0 -214.5 -89.5t-89.5 -214.5q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34zM1307 1151q0 -7 -1 -9 q-105 -188 -315 -566t-316 -567l-49 -89q-10 -16 -28 -16q-12 0 -134 70q-16 10 -16 28q0 12 44 87q-143 65 -263.5 173t-208.5 245q-20 31 -20 69t20 69q153 235 380 371t496 136q89 0 180 -17l54 97q10 16 28 16q5 0 18 -6t31 -15.5t33 -18.5t31.5 -18.5t19.5 -11.5 q16 -10 16 -27zM1344 704q0 -139 -79 -253.5t-209 -164.5l280 502q8 -45 8 -84zM1792 576q0 -35 -20 -69q-39 -64 -109 -145q-150 -172 -347.5 -267t-419.5 -95l74 132q212 18 392.5 137t301.5 307q-115 179 -282 294l63 112q95 -64 182.5 -153t144.5 -184q20 -34 20 -69z " /> -<glyph unicode="" horiz-adv-x="1792" d="M1024 161v190q0 14 -9.5 23.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -23.5v-190q0 -14 9.5 -23.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 23.5zM1022 535l18 459q0 12 -10 19q-13 11 -24 11h-220q-11 0 -24 -11q-10 -7 -10 -21l17 -457q0 -10 10 -16.5t24 -6.5h185 q14 0 23.5 6.5t10.5 16.5zM1008 1469l768 -1408q35 -63 -2 -126q-17 -29 -46.5 -46t-63.5 -17h-1536q-34 0 -63.5 17t-46.5 46q-37 63 -2 126l768 1408q17 31 47 49t65 18t65 -18t47 -49z" /> -<glyph unicode="" horiz-adv-x="1408" d="M1376 1376q44 -52 12 -148t-108 -172l-161 -161l160 -696q5 -19 -12 -33l-128 -96q-7 -6 -19 -6q-4 0 -7 1q-15 3 -21 16l-279 508l-259 -259l53 -194q5 -17 -8 -31l-96 -96q-9 -9 -23 -9h-2q-15 2 -24 13l-189 252l-252 189q-11 7 -13 23q-1 13 9 25l96 97q9 9 23 9 q6 0 8 -1l194 -53l259 259l-508 279q-14 8 -17 24q-2 16 9 27l128 128q14 13 30 8l665 -159l160 160q76 76 172 108t148 -12z" /> -<glyph unicode="" horiz-adv-x="1664" d="M128 -128h288v288h-288v-288zM480 -128h320v288h-320v-288zM128 224h288v320h-288v-320zM480 224h320v320h-320v-320zM128 608h288v288h-288v-288zM864 -128h320v288h-320v-288zM480 608h320v288h-320v-288zM1248 -128h288v288h-288v-288zM864 224h320v320h-320v-320z M512 1088v288q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-288q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1248 224h288v320h-288v-320zM864 608h320v288h-320v-288zM1248 608h288v288h-288v-288zM1280 1088v288q0 13 -9.5 22.5t-22.5 9.5h-64 q-13 0 -22.5 -9.5t-9.5 -22.5v-288q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1664 1152v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47 h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" /> -<glyph unicode="" horiz-adv-x="1792" d="M666 1055q-60 -92 -137 -273q-22 45 -37 72.5t-40.5 63.5t-51 56.5t-63 35t-81.5 14.5h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224q250 0 410 -225zM1792 256q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192q-32 0 -85 -0.5t-81 -1t-73 1 t-71 5t-64 10.5t-63 18.5t-58 28.5t-59 40t-55 53.5t-56 69.5q59 93 136 273q22 -45 37 -72.5t40.5 -63.5t51 -56.5t63 -35t81.5 -14.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23zM1792 1152q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5 v192h-256q-48 0 -87 -15t-69 -45t-51 -61.5t-45 -77.5q-32 -62 -78 -171q-29 -66 -49.5 -111t-54 -105t-64 -100t-74 -83t-90 -68.5t-106.5 -42t-128 -16.5h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224q48 0 87 15t69 45t51 61.5t45 77.5q32 62 78 171q29 66 49.5 111 t54 105t64 100t74 83t90 68.5t106.5 42t128 16.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1792 640q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22q-17 -2 -30.5 9t-17.5 29v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281 q0 130 71 248.5t191 204.5t286 136.5t348 50.5q244 0 450 -85.5t326 -233t120 -321.5z" /> -<glyph unicode="" d="M1536 704v-128q0 -201 -98.5 -362t-274 -251.5t-395.5 -90.5t-395.5 90.5t-274 251.5t-98.5 362v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-128q0 -52 23.5 -90t53.5 -57t71 -30t64 -13t44 -2t44 2t64 13t71 30t53.5 57t23.5 90v128q0 26 19 45t45 19h384 q26 0 45 -19t19 -45zM512 1344v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45zM1536 1344v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1683 205l-166 -165q-19 -19 -45 -19t-45 19l-531 531l-531 -531q-19 -19 -45 -19t-45 19l-166 165q-19 19 -19 45.5t19 45.5l742 741q19 19 45 19t45 -19l742 -741q19 -19 19 -45.5t-19 -45.5z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1683 728l-742 -741q-19 -19 -45 -19t-45 19l-742 741q-19 19 -19 45.5t19 45.5l166 165q19 19 45 19t45 -19l531 -531l531 531q19 19 45 19t45 -19l166 -165q19 -19 19 -45.5t-19 -45.5z" /> -<glyph unicode="" horiz-adv-x="1920" d="M1280 32q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-8 0 -13.5 2t-9 7t-5.5 8t-3 11.5t-1 11.5v13v11v160v416h-192q-26 0 -45 19t-19 45q0 24 15 41l320 384q19 22 49 22t49 -22l320 -384q15 -17 15 -41q0 -26 -19 -45t-45 -19h-192v-384h576q16 0 25 -11l160 -192q7 -11 7 -21 zM1920 448q0 -24 -15 -41l-320 -384q-20 -23 -49 -23t-49 23l-320 384q-15 17 -15 41q0 26 19 45t45 19h192v384h-576q-16 0 -25 12l-160 192q-7 9 -7 20q0 13 9.5 22.5t22.5 9.5h960q8 0 13.5 -2t9 -7t5.5 -8t3 -11.5t1 -11.5v-13v-11v-160v-416h192q26 0 45 -19t19 -45z " /> -<glyph unicode="" horiz-adv-x="1664" d="M640 0q0 -52 -38 -90t-90 -38t-90 38t-38 90t38 90t90 38t90 -38t38 -90zM1536 0q0 -52 -38 -90t-90 -38t-90 38t-38 90t38 90t90 38t90 -38t38 -90zM1664 1088v-512q0 -24 -16.5 -42.5t-40.5 -21.5l-1044 -122q13 -60 13 -70q0 -16 -24 -64h920q26 0 45 -19t19 -45 t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 11 8 31.5t16 36t21.5 40t15.5 29.5l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t19.5 -15.5t13 -24.5t8 -26t5.5 -29.5t4.5 -26h1201q26 0 45 -19t19 -45z" /> -<glyph unicode="" horiz-adv-x="1664" d="M1664 928v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158z" /> -<glyph unicode="" horiz-adv-x="1920" d="M1879 584q0 -31 -31 -66l-336 -396q-43 -51 -120.5 -86.5t-143.5 -35.5h-1088q-34 0 -60.5 13t-26.5 43q0 31 31 66l336 396q43 51 120.5 86.5t143.5 35.5h1088q34 0 60.5 -13t26.5 -43zM1536 928v-160h-832q-94 0 -197 -47.5t-164 -119.5l-337 -396l-5 -6q0 4 -0.5 12.5 t-0.5 12.5v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158z" /> -<glyph unicode="" horiz-adv-x="768" d="M704 1216q0 -26 -19 -45t-45 -19h-128v-1024h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v1024h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1792 640q0 -26 -19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-1024v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45t19 45l256 256q19 19 45 19t45 -19t19 -45v-128h1024v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45z" /> -<glyph unicode="" horiz-adv-x="2048" d="M640 640v-512h-256v512h256zM1024 1152v-1024h-256v1024h256zM2048 0v-128h-2048v1536h128v-1408h1920zM1408 896v-768h-256v768h256zM1792 1280v-1152h-256v1152h256z" /> -<glyph unicode="" d="M1280 926q-56 -25 -121 -34q68 40 93 117q-65 -38 -134 -51q-61 66 -153 66q-87 0 -148.5 -61.5t-61.5 -148.5q0 -29 5 -48q-129 7 -242 65t-192 155q-29 -50 -29 -106q0 -114 91 -175q-47 1 -100 26v-2q0 -75 50 -133.5t123 -72.5q-29 -8 -51 -8q-13 0 -39 4 q21 -63 74.5 -104t121.5 -42q-116 -90 -261 -90q-26 0 -50 3q148 -94 322 -94q112 0 210 35.5t168 95t120.5 137t75 162t24.5 168.5q0 18 -1 27q63 45 105 109zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5 t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-188v595h199l30 232h-229v148q0 56 23.5 84t91.5 28l122 1v207q-63 9 -178 9q-136 0 -217.5 -80t-81.5 -226v-171h-200v-232h200v-595h-532q-119 0 -203.5 84.5t-84.5 203.5v960 q0 119 84.5 203.5t203.5 84.5h960z" /> -<glyph unicode="" horiz-adv-x="1792" d="M928 704q0 14 -9 23t-23 9q-66 0 -113 -47t-47 -113q0 -14 9 -23t23 -9t23 9t9 23q0 40 28 68t68 28q14 0 23 9t9 23zM1152 574q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM128 0h1536v128h-1536v-128zM1280 574q0 159 -112.5 271.5 t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM256 1216h384v128h-384v-128zM128 1024h1536v118v138h-828l-64 -128h-644v-128zM1792 1280v-1280q0 -53 -37.5 -90.5t-90.5 -37.5h-1536q-53 0 -90.5 37.5t-37.5 90.5v1280 q0 53 37.5 90.5t90.5 37.5h1536q53 0 90.5 -37.5t37.5 -90.5z" /> -<glyph unicode="" horiz-adv-x="1792" d="M832 1024q0 80 -56 136t-136 56t-136 -56t-56 -136q0 -42 19 -83q-41 19 -83 19q-80 0 -136 -56t-56 -136t56 -136t136 -56t136 56t56 136q0 42 -19 83q41 -19 83 -19q80 0 136 56t56 136zM1683 320q0 -17 -49 -66t-66 -49q-9 0 -28.5 16t-36.5 33t-38.5 40t-24.5 26 l-96 -96l220 -220q28 -28 28 -68q0 -42 -39 -81t-81 -39q-40 0 -68 28l-671 671q-176 -131 -365 -131q-163 0 -265.5 102.5t-102.5 265.5q0 160 95 313t248 248t313 95q163 0 265.5 -102.5t102.5 -265.5q0 -189 -131 -365l355 -355l96 96q-3 3 -26 24.5t-40 38.5t-33 36.5 t-16 28.5q0 17 49 66t66 49q13 0 23 -10q6 -6 46 -44.5t82 -79.5t86.5 -86t73 -78t28.5 -41z" /> -<glyph unicode="" horiz-adv-x="1920" d="M896 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1664 128q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 1152q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5zM1280 731v-185q0 -10 -7 -19.5t-16 -10.5l-155 -24q-11 -35 -32 -76q34 -48 90 -115q7 -10 7 -20q0 -12 -7 -19q-23 -30 -82.5 -89.5t-78.5 -59.5q-11 0 -21 7l-115 90q-37 -19 -77 -31q-11 -108 -23 -155q-7 -24 -30 -24h-186q-11 0 -20 7.5t-10 17.5 l-23 153q-34 10 -75 31l-118 -89q-7 -7 -20 -7q-11 0 -21 8q-144 133 -144 160q0 9 7 19q10 14 41 53t47 61q-23 44 -35 82l-152 24q-10 1 -17 9.5t-7 19.5v185q0 10 7 19.5t16 10.5l155 24q11 35 32 76q-34 48 -90 115q-7 11 -7 20q0 12 7 20q22 30 82 89t79 59q11 0 21 -7 l115 -90q34 18 77 32q11 108 23 154q7 24 30 24h186q11 0 20 -7.5t10 -17.5l23 -153q34 -10 75 -31l118 89q8 7 20 7q11 0 21 -8q144 -133 144 -160q0 -9 -7 -19q-12 -16 -42 -54t-45 -60q23 -48 34 -82l152 -23q10 -2 17 -10.5t7 -19.5zM1920 198v-140q0 -16 -149 -31 q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20 t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31zM1920 1222v-140q0 -16 -149 -31q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68 q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70 q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1408 768q0 -139 -94 -257t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224 q0 139 94 257t256.5 186.5t353.5 68.5t353.5 -68.5t256.5 -186.5t94 -257zM1792 512q0 -120 -71 -224.5t-195 -176.5q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22t-22 -7 q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132q58 -4 88 -4q161 0 309 45t264 129q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230z" /> -<glyph unicode="" d="M256 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 768q0 51 -39 89.5t-89 38.5h-352q0 58 48 159.5t48 160.5q0 98 -32 145t-128 47q-26 -26 -38 -85t-30.5 -125.5t-59.5 -109.5q-22 -23 -77 -91q-4 -5 -23 -30t-31.5 -41t-34.5 -42.5 t-40 -44t-38.5 -35.5t-40 -27t-35.5 -9h-32v-640h32q13 0 31.5 -3t33 -6.5t38 -11t35 -11.5t35.5 -12.5t29 -10.5q211 -73 342 -73h121q192 0 192 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5q32 1 53.5 47t21.5 81zM1536 769 q0 -89 -49 -163q9 -33 9 -69q0 -77 -38 -144q3 -21 3 -43q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5h-36h-93q-96 0 -189.5 22.5t-216.5 65.5q-116 40 -138 40h-288q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5h274q36 24 137 155q58 75 107 128 q24 25 35.5 85.5t30.5 126.5t62 108q39 37 90 37q84 0 151 -32.5t102 -101.5t35 -186q0 -93 -48 -192h176q104 0 180 -76t76 -179z" /> -<glyph unicode="" d="M256 1088q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 512q0 35 -21.5 81t-53.5 47q15 17 25 47.5t10 55.5q0 69 -53 119q18 32 18 69t-17.5 73.5t-47.5 52.5q5 30 5 56q0 85 -49 126t-136 41h-128q-131 0 -342 -73q-5 -2 -29 -10.5 t-35.5 -12.5t-35 -11.5t-38 -11t-33 -6.5t-31.5 -3h-32v-640h32q16 0 35.5 -9t40 -27t38.5 -35.5t40 -44t34.5 -42.5t31.5 -41t23 -30q55 -68 77 -91q41 -43 59.5 -109.5t30.5 -125.5t38 -85q96 0 128 47t32 145q0 59 -48 160.5t-48 159.5h352q50 0 89 38.5t39 89.5z M1536 511q0 -103 -76 -179t-180 -76h-176q48 -99 48 -192q0 -118 -35 -186q-35 -69 -102 -101.5t-151 -32.5q-51 0 -90 37q-34 33 -54 82t-25.5 90.5t-17.5 84.5t-31 64q-48 50 -107 127q-101 131 -137 155h-274q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5 h288q22 0 138 40q128 44 223 66t200 22h112q140 0 226.5 -79t85.5 -216v-5q60 -77 60 -178q0 -22 -3 -43q38 -67 38 -144q0 -36 -9 -69q49 -74 49 -163z" /> -<glyph unicode="" horiz-adv-x="896" d="M832 1504v-1339l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1664 940q0 81 -21.5 143t-55 98.5t-81.5 59.5t-94 31t-98 8t-112 -25.5t-110.5 -64t-86.5 -72t-60 -61.5q-18 -22 -49 -22t-49 22q-24 28 -60 61.5t-86.5 72t-110.5 64t-112 25.5t-98 -8t-94 -31t-81.5 -59.5t-55 -98.5t-21.5 -143q0 -168 187 -355l581 -560l580 559 q188 188 188 356zM1792 940q0 -221 -229 -450l-623 -600q-18 -18 -44 -18t-44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5 q224 0 351 -124t127 -344z" /> -<glyph unicode="" horiz-adv-x="1664" d="M640 96q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-119 0 -203.5 84.5t-84.5 203.5v704q0 119 84.5 203.5t203.5 84.5h320q13 0 22.5 -9.5t9.5 -22.5q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-66 0 -113 -47t-47 -113v-704 q0 -66 47 -113t113 -47h288h11h13t11.5 -1t11.5 -3t8 -5.5t7 -9t2 -13.5zM1568 640q0 -26 -19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45z" /> -<glyph unicode="" d="M237 122h231v694h-231v-694zM483 1030q-1 52 -36 86t-93 34t-94.5 -34t-36.5 -86q0 -51 35.5 -85.5t92.5 -34.5h1q59 0 95 34.5t36 85.5zM1068 122h231v398q0 154 -73 233t-193 79q-136 0 -209 -117h2v101h-231q3 -66 0 -694h231v388q0 38 7 56q15 35 45 59.5t74 24.5 q116 0 116 -157v-371zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" horiz-adv-x="1152" d="M480 672v448q0 14 -9 23t-23 9t-23 -9t-9 -23v-448q0 -14 9 -23t23 -9t23 9t9 23zM1152 320q0 -26 -19 -45t-45 -19h-429l-51 -483q-2 -12 -10.5 -20.5t-20.5 -8.5h-1q-27 0 -32 27l-76 485h-404q-26 0 -45 19t-19 45q0 123 78.5 221.5t177.5 98.5v512q-52 0 -90 38 t-38 90t38 90t90 38h640q52 0 90 -38t38 -90t-38 -90t-90 -38v-512q99 0 177.5 -98.5t78.5 -221.5z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1408 608v-320q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h704q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v320 q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1792 1472v-512q0 -26 -19 -45t-45 -19t-45 19l-176 176l-652 -652q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l652 652l-176 176q-19 19 -19 45t19 45t45 19h512q26 0 45 -19t19 -45z" /> -<glyph unicode="" d="M1184 640q0 -26 -19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45zM1536 992v-704q0 -119 -84.5 -203.5t-203.5 -84.5h-320q-13 0 -22.5 9.5t-9.5 22.5 q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q66 0 113 47t47 113v704q0 66 -47 113t-113 47h-288h-11h-13t-11.5 1t-11.5 3t-8 5.5t-7 9t-2 13.5q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" horiz-adv-x="1664" d="M458 653q-74 162 -74 371h-256v-96q0 -78 94.5 -162t235.5 -113zM1536 928v96h-256q0 -209 -74 -371q141 29 235.5 113t94.5 162zM1664 1056v-128q0 -71 -41.5 -143t-112 -130t-173 -97.5t-215.5 -44.5q-42 -54 -95 -95q-38 -34 -52.5 -72.5t-14.5 -89.5q0 -54 30.5 -91 t97.5 -37q75 0 133.5 -45.5t58.5 -114.5v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 69 58.5 114.5t133.5 45.5q67 0 97.5 37t30.5 91q0 51 -14.5 89.5t-52.5 72.5q-53 41 -95 95q-113 5 -215.5 44.5t-173 97.5t-112 130t-41.5 143v128q0 40 28 68t68 28h288v96 q0 66 47 113t113 47h576q66 0 113 -47t47 -113v-96h288q40 0 68 -28t28 -68z" /> -<glyph unicode="" d="M394 184q-8 -9 -20 3q-13 11 -4 19q8 9 20 -3q12 -11 4 -19zM352 245q9 -12 0 -19q-8 -6 -17 7t0 18q9 7 17 -6zM291 305q-5 -7 -13 -2q-10 5 -7 12q3 5 13 2q10 -5 7 -12zM322 271q-6 -7 -16 3q-9 11 -2 16q6 6 16 -3q9 -11 2 -16zM451 159q-4 -12 -19 -6q-17 4 -13 15 t19 7q16 -5 13 -16zM514 154q0 -11 -16 -11q-17 -2 -17 11q0 11 16 11q17 2 17 -11zM572 164q2 -10 -14 -14t-18 8t14 15q16 2 18 -9zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-224q-16 0 -24.5 1t-19.5 5t-16 14.5t-5 27.5v239q0 97 -52 142q57 6 102.5 18t94 39 t81 66.5t53 105t20.5 150.5q0 121 -79 206q37 91 -8 204q-28 9 -81 -11t-92 -44l-38 -24q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-86 13.5q-44 -113 -7 -204q-79 -85 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-40 -36 -49 -103 q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52t-49.5 24l-20 3q-21 0 -29 -4.5t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -103t0.5 -68q0 -22 -11 -33.5t-22 -13t-33 -1.5 h-224q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" horiz-adv-x="1664" d="M1280 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 288v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h427q21 -56 70.5 -92 t110.5 -36h256q61 0 110.5 36t70.5 92h427q40 0 68 -28t28 -68zM1339 936q-17 -40 -59 -40h-256v-448q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v448h-256q-42 0 -59 40q-17 39 14 69l448 448q18 19 45 19t45 -19l448 -448q31 -30 14 -69z" /> -<glyph unicode="" d="M1407 710q0 44 -7 113.5t-18 96.5q-12 30 -17 44t-9 36.5t-4 48.5q0 23 5 68.5t5 67.5q0 37 -10 55q-4 1 -13 1q-19 0 -58 -4.5t-59 -4.5q-60 0 -176 24t-175 24q-43 0 -94.5 -11.5t-85 -23.5t-89.5 -34q-137 -54 -202 -103q-96 -73 -159.5 -189.5t-88 -236t-24.5 -248.5 q0 -40 12.5 -120t12.5 -121q0 -23 -11 -66.5t-11 -65.5t12 -36.5t34 -14.5q24 0 72.5 11t73.5 11q57 0 169.5 -15.5t169.5 -15.5q181 0 284 36q129 45 235.5 152.5t166 245.5t59.5 275zM1535 712q0 -165 -70 -327.5t-196 -288t-281 -180.5q-124 -44 -326 -44 q-57 0 -170 14.5t-169 14.5q-24 0 -72.5 -14.5t-73.5 -14.5q-73 0 -123.5 55.5t-50.5 128.5q0 24 11 68t11 67q0 40 -12.5 120.5t-12.5 121.5q0 111 18 217.5t54.5 209.5t100.5 194t150 156q78 59 232 120q194 78 316 78q60 0 175.5 -24t173.5 -24q19 0 57 5t58 5 q81 0 118 -50.5t37 -134.5q0 -23 -5 -68t-5 -68q0 -10 1 -18.5t3 -17t4 -13.5t6.5 -16t6.5 -17q16 -40 25 -118.5t9 -136.5z" /> -<glyph unicode="" horiz-adv-x="1408" d="M1408 296q0 -27 -10 -70.5t-21 -68.5q-21 -50 -122 -106q-94 -51 -186 -51q-27 0 -52.5 3.5t-57.5 12.5t-47.5 14.5t-55.5 20.5t-49 18q-98 35 -175 83q-128 79 -264.5 215.5t-215.5 264.5q-48 77 -83 175q-3 9 -18 49t-20.5 55.5t-14.5 47.5t-12.5 57.5t-3.5 52.5 q0 92 51 186q56 101 106 122q25 11 68.5 21t70.5 10q14 0 21 -3q18 -6 53 -76q11 -19 30 -54t35 -63.5t31 -53.5q3 -4 17.5 -25t21.5 -35.5t7 -28.5q0 -20 -28.5 -50t-62 -55t-62 -53t-28.5 -46q0 -9 5 -22.5t8.5 -20.5t14 -24t11.5 -19q76 -137 174 -235t235 -174 q2 -1 19 -11.5t24 -14t20.5 -8.5t22.5 -5q18 0 46 28.5t53 62t55 62t50 28.5q14 0 28.5 -7t35.5 -21.5t25 -17.5q25 -15 53.5 -31t63.5 -35t54 -30q70 -35 76 -53q3 -7 3 -21z" /> -<glyph unicode="" horiz-adv-x="1408" d="M1120 1280h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v832q0 66 -47 113t-113 47zM1408 1120v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832 q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" horiz-adv-x="1280" d="M1152 1280h-1024v-1242l423 406l89 85l89 -85l423 -406v1242zM1164 1408q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62v1289 q0 34 19.5 62t52.5 41q21 9 44 9h1048z" /> -<glyph unicode="" d="M1280 343q0 11 -2 16q-3 8 -38.5 29.5t-88.5 49.5l-53 29q-5 3 -19 13t-25 15t-21 5q-18 0 -47 -32.5t-57 -65.5t-44 -33q-7 0 -16.5 3.5t-15.5 6.5t-17 9.5t-14 8.5q-99 55 -170.5 126.5t-126.5 170.5q-2 3 -8.5 14t-9.5 17t-6.5 15.5t-3.5 16.5q0 13 20.5 33.5t45 38.5 t45 39.5t20.5 36.5q0 10 -5 21t-15 25t-13 19q-3 6 -15 28.5t-25 45.5t-26.5 47.5t-25 40.5t-16.5 18t-16 2q-48 0 -101 -22q-46 -21 -80 -94.5t-34 -130.5q0 -16 2.5 -34t5 -30.5t9 -33t10 -29.5t12.5 -33t11 -30q60 -164 216.5 -320.5t320.5 -216.5q6 -2 30 -11t33 -12.5 t29.5 -10t33 -9t30.5 -5t34 -2.5q57 0 130.5 34t94.5 80q22 53 22 101zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" horiz-adv-x="1664" d="M1620 1128q-67 -98 -162 -167q1 -14 1 -42q0 -130 -38 -259.5t-115.5 -248.5t-184.5 -210.5t-258 -146t-323 -54.5q-271 0 -496 145q35 -4 78 -4q225 0 401 138q-105 2 -188 64.5t-114 159.5q33 -5 61 -5q43 0 85 11q-112 23 -185.5 111.5t-73.5 205.5v4q68 -38 146 -41 q-66 44 -105 115t-39 154q0 88 44 163q121 -149 294.5 -238.5t371.5 -99.5q-8 38 -8 74q0 134 94.5 228.5t228.5 94.5q140 0 236 -102q109 21 205 78q-37 -115 -142 -178q93 10 186 50z" /> -<glyph unicode="" horiz-adv-x="1024" d="M959 1524v-264h-157q-86 0 -116 -36t-30 -108v-189h293l-39 -296h-254v-759h-306v759h-255v296h255v218q0 186 104 288.5t277 102.5q147 0 228 -12z" /> -<glyph unicode="" d="M1536 640q0 -251 -146.5 -451.5t-378.5 -277.5q-27 -5 -39.5 7t-12.5 30v211q0 97 -52 142q57 6 102.5 18t94 39t81 66.5t53 105t20.5 150.5q0 121 -79 206q37 91 -8 204q-28 9 -81 -11t-92 -44l-38 -24q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-86 13.5 q-44 -113 -7 -204q-79 -85 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-40 -36 -49 -103q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52t-49.5 24l-20 3q-21 0 -29 -4.5t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23 q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -89t0.5 -54q0 -18 -13 -30t-40 -7q-232 77 -378.5 277.5t-146.5 451.5q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" horiz-adv-x="1664" d="M1664 960v-256q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45v256q0 106 -75 181t-181 75t-181 -75t-75 -181v-192h96q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h672v192q0 185 131.5 316.5t316.5 131.5 t316.5 -131.5t131.5 -316.5z" /> -<glyph unicode="" horiz-adv-x="1920" d="M1760 1408q66 0 113 -47t47 -113v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600zM160 1280q-13 0 -22.5 -9.5t-9.5 -22.5v-224h1664v224q0 13 -9.5 22.5t-22.5 9.5h-1600zM1760 0q13 0 22.5 9.5t9.5 22.5v608h-1664v-608 q0 -13 9.5 -22.5t22.5 -9.5h1600zM256 128v128h256v-128h-256zM640 128v128h384v-128h-384z" /> -<glyph unicode="" horiz-adv-x="1408" d="M384 192q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 69q2 -28 -17 -48q-18 -21 -47 -21h-135q-25 0 -43 16.5t-20 41.5q-22 229 -184.5 391.5t-391.5 184.5q-25 2 -41.5 20t-16.5 43v135q0 29 21 47q17 17 43 17h5q160 -13 306 -80.5 t259 -181.5q114 -113 181.5 -259t80.5 -306zM1408 67q2 -27 -18 -47q-18 -20 -46 -20h-143q-26 0 -44.5 17.5t-19.5 42.5q-12 215 -101 408.5t-231.5 336t-336 231.5t-408.5 102q-25 1 -42.5 19.5t-17.5 43.5v143q0 28 20 46q18 18 44 18h3q262 -13 501.5 -120t425.5 -294 q187 -186 294 -425.5t120 -501.5z" /> -<glyph unicode="" d="M1040 320q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5zM1296 320q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5zM1408 160v320q0 13 -9.5 22.5t-22.5 9.5 h-1216q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h1216q13 0 22.5 9.5t9.5 22.5zM178 640h1180l-157 482q-4 13 -16 21.5t-26 8.5h-782q-14 0 -26 -8.5t-16 -21.5zM1536 480v-320q0 -66 -47 -113t-113 -47h-1216q-66 0 -113 47t-47 113v320q0 25 16 75 l197 606q17 53 63 86t101 33h782q55 0 101 -33t63 -86l197 -606q16 -50 16 -75z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1664 896q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5v-384q0 -52 -38 -90t-90 -38q-417 347 -812 380q-58 -19 -91 -66t-31 -100.5t40 -92.5q-20 -33 -23 -65.5t6 -58t33.5 -55t48 -50t61.5 -50.5q-29 -58 -111.5 -83t-168.5 -11.5t-132 55.5q-7 23 -29.5 87.5 t-32 94.5t-23 89t-15 101t3.5 98.5t22 110.5h-122q-66 0 -113 47t-47 113v192q0 66 47 113t113 47h480q435 0 896 384q52 0 90 -38t38 -90v-384zM1536 292v954q-394 -302 -768 -343v-270q377 -42 768 -341z" /> -<glyph unicode="" horiz-adv-x="1792" d="M912 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM246 128h1300q-266 300 -266 832q0 51 -24 105t-69 103t-121.5 80.5t-169.5 31.5t-169.5 -31.5t-121.5 -80.5t-69 -103t-24 -105q0 -532 -266 -832z M1728 128q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38t-38 90q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q190 -28 307 -158.5 t117 -282.5q0 -139 19.5 -260t50 -206t74.5 -158.5t85 -119.5t91 -88z" /> -<glyph unicode="" d="M1376 640l138 -135q30 -28 20 -70q-12 -41 -52 -51l-188 -48l53 -186q12 -41 -19 -70q-29 -31 -70 -19l-186 53l-48 -188q-10 -40 -51 -52q-12 -2 -19 -2q-31 0 -51 22l-135 138l-135 -138q-28 -30 -70 -20q-41 11 -51 52l-48 188l-186 -53q-41 -12 -70 19q-31 29 -19 70 l53 186l-188 48q-40 10 -52 51q-10 42 20 70l138 135l-138 135q-30 28 -20 70q12 41 52 51l188 48l-53 186q-12 41 19 70q29 31 70 19l186 -53l48 188q10 41 51 51q41 12 70 -19l135 -139l135 139q29 30 70 19q41 -10 51 -51l48 -188l186 53q41 12 70 -19q31 -29 19 -70 l-53 -186l188 -48q40 -10 52 -51q10 -42 -20 -70z" /> -<glyph unicode="" horiz-adv-x="1792" d="M256 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 768q0 51 -39 89.5t-89 38.5h-576q0 20 15 48.5t33 55t33 68t15 84.5q0 67 -44.5 97.5t-115.5 30.5q-24 0 -90 -139q-24 -44 -37 -65q-40 -64 -112 -145q-71 -81 -101 -106 q-69 -57 -140 -57h-32v-640h32q72 0 167 -32t193.5 -64t179.5 -32q189 0 189 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5h331q52 0 90 38t38 90zM1792 769q0 -105 -75.5 -181t-180.5 -76h-169q-4 -62 -37 -119q3 -21 3 -43 q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5q-133 0 -322 69q-164 59 -223 59h-288q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5h288q10 0 21.5 4.5t23.5 14t22.5 18t24 22.5t20.5 21.5t19 21.5t14 17q65 74 100 129q13 21 33 62t37 72t40.5 63t55 49.5 t69.5 17.5q125 0 206.5 -67t81.5 -189q0 -68 -22 -128h374q104 0 180 -76t76 -179z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1376 128h32v640h-32q-35 0 -67.5 12t-62.5 37t-50 46t-49 54q-2 3 -3.5 4.5t-4 4.5t-4.5 5q-72 81 -112 145q-14 22 -38 68q-1 3 -10.5 22.5t-18.5 36t-20 35.5t-21.5 30.5t-18.5 11.5q-71 0 -115.5 -30.5t-44.5 -97.5q0 -43 15 -84.5t33 -68t33 -55t15 -48.5h-576 q-50 0 -89 -38.5t-39 -89.5q0 -52 38 -90t90 -38h331q-15 -17 -25 -47.5t-10 -55.5q0 -69 53 -119q-18 -32 -18 -69t17.5 -73.5t47.5 -52.5q-4 -24 -4 -56q0 -85 48.5 -126t135.5 -41q84 0 183 32t194 64t167 32zM1664 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45 t45 -19t45 19t19 45zM1792 768v-640q0 -53 -37.5 -90.5t-90.5 -37.5h-288q-59 0 -223 -59q-190 -69 -317 -69q-142 0 -230 77.5t-87 217.5l1 5q-61 76 -61 178q0 22 3 43q-33 57 -37 119h-169q-105 0 -180.5 76t-75.5 181q0 103 76 179t180 76h374q-22 60 -22 128 q0 122 81.5 189t206.5 67q38 0 69.5 -17.5t55 -49.5t40.5 -63t37 -72t33 -62q35 -55 100 -129q2 -3 14 -17t19 -21.5t20.5 -21.5t24 -22.5t22.5 -18t23.5 -14t21.5 -4.5h288q53 0 90.5 -37.5t37.5 -90.5z" /> -<glyph unicode="" d="M1280 -64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 700q0 189 -167 189q-26 0 -56 -5q-16 30 -52.5 47.5t-73.5 17.5t-69 -18q-50 53 -119 53q-25 0 -55.5 -10t-47.5 -25v331q0 52 -38 90t-90 38q-51 0 -89.5 -39t-38.5 -89v-576 q-20 0 -48.5 15t-55 33t-68 33t-84.5 15q-67 0 -97.5 -44.5t-30.5 -115.5q0 -24 139 -90q44 -24 65 -37q64 -40 145 -112q81 -71 106 -101q57 -69 57 -140v-32h640v32q0 72 32 167t64 193.5t32 179.5zM1536 705q0 -133 -69 -322q-59 -164 -59 -223v-288q0 -53 -37.5 -90.5 t-90.5 -37.5h-640q-53 0 -90.5 37.5t-37.5 90.5v288q0 10 -4.5 21.5t-14 23.5t-18 22.5t-22.5 24t-21.5 20.5t-21.5 19t-17 14q-74 65 -129 100q-21 13 -62 33t-72 37t-63 40.5t-49.5 55t-17.5 69.5q0 125 67 206.5t189 81.5q68 0 128 -22v374q0 104 76 180t179 76 q105 0 181 -75.5t76 -180.5v-169q62 -4 119 -37q21 3 43 3q101 0 178 -60q139 1 219.5 -85t80.5 -227z" /> -<glyph unicode="" d="M1408 576q0 84 -32 183t-64 194t-32 167v32h-640v-32q0 -35 -12 -67.5t-37 -62.5t-46 -50t-54 -49q-9 -8 -14 -12q-81 -72 -145 -112q-22 -14 -68 -38q-3 -1 -22.5 -10.5t-36 -18.5t-35.5 -20t-30.5 -21.5t-11.5 -18.5q0 -71 30.5 -115.5t97.5 -44.5q43 0 84.5 15t68 33 t55 33t48.5 15v-576q0 -50 38.5 -89t89.5 -39q52 0 90 38t38 90v331q46 -35 103 -35q69 0 119 53q32 -18 69 -18t73.5 17.5t52.5 47.5q24 -4 56 -4q85 0 126 48.5t41 135.5zM1280 1344q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 580 q0 -142 -77.5 -230t-217.5 -87l-5 1q-76 -61 -178 -61q-22 0 -43 3q-54 -30 -119 -37v-169q0 -105 -76 -180.5t-181 -75.5q-103 0 -179 76t-76 180v374q-54 -22 -128 -22q-121 0 -188.5 81.5t-67.5 206.5q0 38 17.5 69.5t49.5 55t63 40.5t72 37t62 33q55 35 129 100 q3 2 17 14t21.5 19t21.5 20.5t22.5 24t18 22.5t14 23.5t4.5 21.5v288q0 53 37.5 90.5t90.5 37.5h640q53 0 90.5 -37.5t37.5 -90.5v-288q0 -59 59 -223q69 -190 69 -317z" /> -<glyph unicode="" d="M1280 576v128q0 26 -19 45t-45 19h-502l189 189q19 19 19 45t-19 45l-91 91q-18 18 -45 18t-45 -18l-362 -362l-91 -91q-18 -18 -18 -45t18 -45l91 -91l362 -362q18 -18 45 -18t45 18l91 91q18 18 18 45t-18 45l-189 189h502q26 0 45 19t19 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" d="M1285 640q0 27 -18 45l-91 91l-362 362q-18 18 -45 18t-45 -18l-91 -91q-18 -18 -18 -45t18 -45l189 -189h-502q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h502l-189 -189q-19 -19 -19 -45t19 -45l91 -91q18 -18 45 -18t45 18l362 362l91 91q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" d="M1284 641q0 27 -18 45l-362 362l-91 91q-18 18 -45 18t-45 -18l-91 -91l-362 -362q-18 -18 -18 -45t18 -45l91 -91q18 -18 45 -18t45 18l189 189v-502q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v502l189 -189q19 -19 45 -19t45 19l91 91q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" d="M1284 639q0 27 -18 45l-91 91q-18 18 -45 18t-45 -18l-189 -189v502q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-502l-189 189q-19 19 -45 19t-45 -19l-91 -91q-18 -18 -18 -45t18 -45l362 -362l91 -91q18 -18 45 -18t45 18l91 91l362 362q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM1042 887q-2 -1 -9.5 -9.5t-13.5 -9.5q2 0 4.5 5t5 11t3.5 7q6 7 22 15q14 6 52 12q34 8 51 -11 q-2 2 9.5 13t14.5 12q3 2 15 4.5t15 7.5l2 22q-12 -1 -17.5 7t-6.5 21q0 -2 -6 -8q0 7 -4.5 8t-11.5 -1t-9 -1q-10 3 -15 7.5t-8 16.5t-4 15q-2 5 -9.5 10.5t-9.5 10.5q-1 2 -2.5 5.5t-3 6.5t-4 5.5t-5.5 2.5t-7 -5t-7.5 -10t-4.5 -5q-3 2 -6 1.5t-4.5 -1t-4.5 -3t-5 -3.5 q-3 -2 -8.5 -3t-8.5 -2q15 5 -1 11q-10 4 -16 3q9 4 7.5 12t-8.5 14h5q-1 4 -8.5 8.5t-17.5 8.5t-13 6q-8 5 -34 9.5t-33 0.5q-5 -6 -4.5 -10.5t4 -14t3.5 -12.5q1 -6 -5.5 -13t-6.5 -12q0 -7 14 -15.5t10 -21.5q-3 -8 -16 -16t-16 -12q-5 -8 -1.5 -18.5t10.5 -16.5 q2 -2 1.5 -4t-3.5 -4.5t-5.5 -4t-6.5 -3.5l-3 -2q-11 -5 -20.5 6t-13.5 26q-7 25 -16 30q-23 8 -29 -1q-5 13 -41 26q-25 9 -58 4q6 1 0 15q-7 15 -19 12q3 6 4 17.5t1 13.5q3 13 12 23q1 1 7 8.5t9.5 13.5t0.5 6q35 -4 50 11q5 5 11.5 17t10.5 17q9 6 14 5.5t14.5 -5.5 t14.5 -5q14 -1 15.5 11t-7.5 20q12 -1 3 17q-5 7 -8 9q-12 4 -27 -5q-8 -4 2 -8q-1 1 -9.5 -10.5t-16.5 -17.5t-16 5q-1 1 -5.5 13.5t-9.5 13.5q-8 0 -16 -15q3 8 -11 15t-24 8q19 12 -8 27q-7 4 -20.5 5t-19.5 -4q-5 -7 -5.5 -11.5t5 -8t10.5 -5.5t11.5 -4t8.5 -3 q14 -10 8 -14q-2 -1 -8.5 -3.5t-11.5 -4.5t-6 -4q-3 -4 0 -14t-2 -14q-5 5 -9 17.5t-7 16.5q7 -9 -25 -6l-10 1q-4 0 -16 -2t-20.5 -1t-13.5 8q-4 8 0 20q1 4 4 2q-4 3 -11 9.5t-10 8.5q-46 -15 -94 -41q6 -1 12 1q5 2 13 6.5t10 5.5q34 14 42 7l5 5q14 -16 20 -25 q-7 4 -30 1q-20 -6 -22 -12q7 -12 5 -18q-4 3 -11.5 10t-14.5 11t-15 5q-16 0 -22 -1q-146 -80 -235 -222q7 -7 12 -8q4 -1 5 -9t2.5 -11t11.5 3q9 -8 3 -19q1 1 44 -27q19 -17 21 -21q3 -11 -10 -18q-1 2 -9 9t-9 4q-3 -5 0.5 -18.5t10.5 -12.5q-7 0 -9.5 -16t-2.5 -35.5 t-1 -23.5l2 -1q-3 -12 5.5 -34.5t21.5 -19.5q-13 -3 20 -43q6 -8 8 -9q3 -2 12 -7.5t15 -10t10 -10.5q4 -5 10 -22.5t14 -23.5q-2 -6 9.5 -20t10.5 -23q-1 0 -2.5 -1t-2.5 -1q3 -7 15.5 -14t15.5 -13q1 -3 2 -10t3 -11t8 -2q2 20 -24 62q-15 25 -17 29q-3 5 -5.5 15.5 t-4.5 14.5q2 0 6 -1.5t8.5 -3.5t7.5 -4t2 -3q-3 -7 2 -17.5t12 -18.5t17 -19t12 -13q6 -6 14 -19.5t0 -13.5q9 0 20 -10t17 -20q5 -8 8 -26t5 -24q2 -7 8.5 -13.5t12.5 -9.5l16 -8t13 -7q5 -2 18.5 -10.5t21.5 -11.5q10 -4 16 -4t14.5 2.5t13.5 3.5q15 2 29 -15t21 -21 q36 -19 55 -11q-2 -1 0.5 -7.5t8 -15.5t9 -14.5t5.5 -8.5q5 -6 18 -15t18 -15q6 4 7 9q-3 -8 7 -20t18 -10q14 3 14 32q-31 -15 -49 18q0 1 -2.5 5.5t-4 8.5t-2.5 8.5t0 7.5t5 3q9 0 10 3.5t-2 12.5t-4 13q-1 8 -11 20t-12 15q-5 -9 -16 -8t-16 9q0 -1 -1.5 -5.5t-1.5 -6.5 q-13 0 -15 1q1 3 2.5 17.5t3.5 22.5q1 4 5.5 12t7.5 14.5t4 12.5t-4.5 9.5t-17.5 2.5q-19 -1 -26 -20q-1 -3 -3 -10.5t-5 -11.5t-9 -7q-7 -3 -24 -2t-24 5q-13 8 -22.5 29t-9.5 37q0 10 2.5 26.5t3 25t-5.5 24.5q3 2 9 9.5t10 10.5q2 1 4.5 1.5t4.5 0t4 1.5t3 6q-1 1 -4 3 q-3 3 -4 3q7 -3 28.5 1.5t27.5 -1.5q15 -11 22 2q0 1 -2.5 9.5t-0.5 13.5q5 -27 29 -9q3 -3 15.5 -5t17.5 -5q3 -2 7 -5.5t5.5 -4.5t5 0.5t8.5 6.5q10 -14 12 -24q11 -40 19 -44q7 -3 11 -2t4.5 9.5t0 14t-1.5 12.5l-1 8v18l-1 8q-15 3 -18.5 12t1.5 18.5t15 18.5q1 1 8 3.5 t15.5 6.5t12.5 8q21 19 15 35q7 0 11 9q-1 0 -5 3t-7.5 5t-4.5 2q9 5 2 16q5 3 7.5 11t7.5 10q9 -12 21 -2q7 8 1 16q5 7 20.5 10.5t18.5 9.5q7 -2 8 2t1 12t3 12q4 5 15 9t13 5l17 11q3 4 0 4q18 -2 31 11q10 11 -6 20q3 6 -3 9.5t-15 5.5q3 1 11.5 0.5t10.5 1.5 q15 10 -7 16q-17 5 -43 -12zM879 10q206 36 351 189q-3 3 -12.5 4.5t-12.5 3.5q-18 7 -24 8q1 7 -2.5 13t-8 9t-12.5 8t-11 7q-2 2 -7 6t-7 5.5t-7.5 4.5t-8.5 2t-10 -1l-3 -1q-3 -1 -5.5 -2.5t-5.5 -3t-4 -3t0 -2.5q-21 17 -36 22q-5 1 -11 5.5t-10.5 7t-10 1.5t-11.5 -7 q-5 -5 -6 -15t-2 -13q-7 5 0 17.5t2 18.5q-3 6 -10.5 4.5t-12 -4.5t-11.5 -8.5t-9 -6.5t-8.5 -5.5t-8.5 -7.5q-3 -4 -6 -12t-5 -11q-2 4 -11.5 6.5t-9.5 5.5q2 -10 4 -35t5 -38q7 -31 -12 -48q-27 -25 -29 -40q-4 -22 12 -26q0 -7 -8 -20.5t-7 -21.5q0 -6 2 -16z" /> -<glyph unicode="" horiz-adv-x="1664" d="M384 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1028 484l-682 -682q-37 -37 -90 -37q-52 0 -91 37l-106 108q-38 36 -38 90q0 53 38 91l681 681q39 -98 114.5 -173.5t173.5 -114.5zM1662 919q0 -39 -23 -106q-47 -134 -164.5 -217.5 t-258.5 -83.5q-185 0 -316.5 131.5t-131.5 316.5t131.5 316.5t316.5 131.5q58 0 121.5 -16.5t107.5 -46.5q16 -11 16 -28t-16 -28l-293 -169v-224l193 -107q5 3 79 48.5t135.5 81t70.5 35.5q15 0 23.5 -10t8.5 -25z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1024 128h640v128h-640v-128zM640 640h1024v128h-1024v-128zM1280 1152h384v128h-384v-128zM1792 320v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 832v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19 t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 1344v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45z" /> -<glyph unicode="" horiz-adv-x="1408" d="M1403 1241q17 -41 -14 -70l-493 -493v-742q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-256 256q-19 19 -19 45v486l-493 493q-31 29 -14 70q17 39 59 39h1280q42 0 59 -39z" /> -<glyph unicode="" horiz-adv-x="1792" d="M640 1280h512v128h-512v-128zM1792 640v-480q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v480h672v-160q0 -26 19 -45t45 -19h320q26 0 45 19t19 45v160h672zM1024 640v-128h-256v128h256zM1792 1120v-384h-1792v384q0 66 47 113t113 47h352v160q0 40 28 68 t68 28h576q40 0 68 -28t28 -68v-160h352q66 0 113 -47t47 -113z" /> -<glyph unicode="" d="M1283 995l-355 -355l355 -355l144 144q29 31 70 14q39 -17 39 -59v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l144 144l-355 355l-355 -355l144 -144q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l144 -144 l355 355l-355 355l-144 -144q-19 -19 -45 -19q-12 0 -24 5q-40 17 -40 59v448q0 26 19 45t45 19h448q42 0 59 -40q17 -39 -14 -69l-144 -144l355 -355l355 355l-144 144q-31 30 -14 69q17 40 59 40h448q26 0 45 -19t19 -45v-448q0 -42 -39 -59q-13 -5 -25 -5q-26 0 -45 19z " /> -<glyph unicode="" horiz-adv-x="1920" d="M593 640q-162 -5 -265 -128h-134q-82 0 -138 40.5t-56 118.5q0 353 124 353q6 0 43.5 -21t97.5 -42.5t119 -21.5q67 0 133 23q-5 -37 -5 -66q0 -139 81 -256zM1664 3q0 -120 -73 -189.5t-194 -69.5h-874q-121 0 -194 69.5t-73 189.5q0 53 3.5 103.5t14 109t26.5 108.5 t43 97.5t62 81t85.5 53.5t111.5 20q10 0 43 -21.5t73 -48t107 -48t135 -21.5t135 21.5t107 48t73 48t43 21.5q61 0 111.5 -20t85.5 -53.5t62 -81t43 -97.5t26.5 -108.5t14 -109t3.5 -103.5zM640 1280q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75 t75 -181zM1344 896q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5zM1920 671q0 -78 -56 -118.5t-138 -40.5h-134q-103 123 -265 128q81 117 81 256q0 29 -5 66q66 -23 133 -23q59 0 119 21.5t97.5 42.5 t43.5 21q124 0 124 -353zM1792 1280q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181z" /> -<glyph unicode="" horiz-adv-x="1664" d="M1456 320q0 40 -28 68l-208 208q-28 28 -68 28q-42 0 -72 -32q3 -3 19 -18.5t21.5 -21.5t15 -19t13 -25.5t3.5 -27.5q0 -40 -28 -68t-68 -28q-15 0 -27.5 3.5t-25.5 13t-19 15t-21.5 21.5t-18.5 19q-33 -31 -33 -73q0 -40 28 -68l206 -207q27 -27 68 -27q40 0 68 26 l147 146q28 28 28 67zM753 1025q0 40 -28 68l-206 207q-28 28 -68 28q-39 0 -68 -27l-147 -146q-28 -28 -28 -67q0 -40 28 -68l208 -208q27 -27 68 -27q42 0 72 31q-3 3 -19 18.5t-21.5 21.5t-15 19t-13 25.5t-3.5 27.5q0 40 28 68t68 28q15 0 27.5 -3.5t25.5 -13t19 -15 t21.5 -21.5t18.5 -19q33 31 33 73zM1648 320q0 -120 -85 -203l-147 -146q-83 -83 -203 -83q-121 0 -204 85l-206 207q-83 83 -83 203q0 123 88 209l-88 88q-86 -88 -208 -88q-120 0 -204 84l-208 208q-84 84 -84 204t85 203l147 146q83 83 203 83q121 0 204 -85l206 -207 q83 -83 83 -203q0 -123 -88 -209l88 -88q86 88 208 88q120 0 204 -84l208 -208q84 -84 84 -204z" /> -<glyph unicode="" horiz-adv-x="1920" d="M1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088q-185 0 -316.5 131.5t-131.5 316.5q0 132 71 241.5t187 163.5q-2 28 -2 43q0 212 150 362t362 150q158 0 286.5 -88t187.5 -230q70 62 166 62q106 0 181 -75t75 -181q0 -75 -41 -138q129 -30 213 -134.5t84 -239.5z " /> -<glyph unicode="" horiz-adv-x="1664" d="M1527 88q56 -89 21.5 -152.5t-140.5 -63.5h-1152q-106 0 -140.5 63.5t21.5 152.5l503 793v399h-64q-26 0 -45 19t-19 45t19 45t45 19h512q26 0 45 -19t19 -45t-19 -45t-45 -19h-64v-399zM748 813l-272 -429h712l-272 429l-20 31v37v399h-128v-399v-37z" /> -<glyph unicode="" horiz-adv-x="1792" d="M960 640q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1260 576l507 -398q28 -20 25 -56q-5 -35 -35 -51l-128 -64q-13 -7 -29 -7q-17 0 -31 8l-690 387l-110 -66q-8 -4 -12 -5q14 -49 10 -97q-7 -77 -56 -147.5t-132 -123.5q-132 -84 -277 -84 q-136 0 -222 78q-90 84 -79 207q7 76 56 147t131 124q132 84 278 84q83 0 151 -31q9 13 22 22l122 73l-122 73q-13 9 -22 22q-68 -31 -151 -31q-146 0 -278 84q-82 53 -131 124t-56 147q-5 59 15.5 113t63.5 93q85 79 222 79q145 0 277 -84q83 -52 132 -123t56 -148 q4 -48 -10 -97q4 -1 12 -5l110 -66l690 387q14 8 31 8q16 0 29 -7l128 -64q30 -16 35 -51q3 -36 -25 -56zM579 836q46 42 21 108t-106 117q-92 59 -192 59q-74 0 -113 -36q-46 -42 -21 -108t106 -117q92 -59 192 -59q74 0 113 36zM494 91q81 51 106 117t-21 108 q-39 36 -113 36q-100 0 -192 -59q-81 -51 -106 -117t21 -108q39 -36 113 -36q100 0 192 59zM672 704l96 -58v11q0 36 33 56l14 8l-79 47l-26 -26q-3 -3 -10 -11t-12 -12q-2 -2 -4 -3.5t-3 -2.5zM896 480l96 -32l736 576l-128 64l-768 -431v-113l-160 -96l9 -8q2 -2 7 -6 q4 -4 11 -12t11 -12l26 -26zM1600 64l128 64l-520 408l-177 -138q-2 -3 -13 -7z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1696 1152q40 0 68 -28t28 -68v-1216q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v288h-544q-40 0 -68 28t-28 68v672q0 40 20 88t48 76l408 408q28 28 76 48t88 20h416q40 0 68 -28t28 -68v-328q68 40 128 40h416zM1152 939l-299 -299h299v299zM512 1323l-299 -299 h299v299zM708 676l316 316v416h-384v-416q0 -40 -28 -68t-68 -28h-416v-640h512v256q0 40 20 88t48 76zM1664 -128v1152h-384v-416q0 -40 -28 -68t-68 -28h-416v-640h896z" /> -<glyph unicode="" horiz-adv-x="1408" d="M1404 151q0 -117 -79 -196t-196 -79q-135 0 -235 100l-777 776q-113 115 -113 271q0 159 110 270t269 111q158 0 273 -113l605 -606q10 -10 10 -22q0 -16 -30.5 -46.5t-46.5 -30.5q-13 0 -23 10l-606 607q-79 77 -181 77q-106 0 -179 -75t-73 -181q0 -105 76 -181 l776 -777q63 -63 145 -63q64 0 106 42t42 106q0 82 -63 145l-581 581q-26 24 -60 24q-29 0 -48 -19t-19 -48q0 -32 25 -59l410 -410q10 -10 10 -22q0 -16 -31 -47t-47 -31q-12 0 -22 10l-410 410q-63 61 -63 149q0 82 57 139t139 57q88 0 149 -63l581 -581q100 -98 100 -235 z" /> -<glyph unicode="" d="M384 0h768v384h-768v-384zM1280 0h128v896q0 14 -10 38.5t-20 34.5l-281 281q-10 10 -34 20t-39 10v-416q0 -40 -28 -68t-68 -28h-576q-40 0 -68 28t-28 68v416h-128v-1280h128v416q0 40 28 68t68 28h832q40 0 68 -28t28 -68v-416zM896 928v320q0 13 -9.5 22.5t-22.5 9.5 h-192q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 22.5zM1536 896v-928q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h928q40 0 88 -20t76 -48l280 -280q28 -28 48 -76t20 -88z" /> -<glyph unicode="" d="M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" d="M1536 192v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1536 704v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1536 1216v-128q0 -26 -19 -45 t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" /> -<glyph unicode="" horiz-adv-x="1792" d="M384 128q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM384 640q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5 t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5zM384 1152q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1792 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z M1792 1248v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z" /> -<glyph unicode="" horiz-adv-x="1792" d="M381 -84q0 -80 -54.5 -126t-135.5 -46q-106 0 -172 66l57 88q49 -45 106 -45q29 0 50.5 14.5t21.5 42.5q0 64 -105 56l-26 56q8 10 32.5 43.5t42.5 54t37 38.5v1q-16 0 -48.5 -1t-48.5 -1v-53h-106v152h333v-88l-95 -115q51 -12 81 -49t30 -88zM383 543v-159h-362 q-6 36 -6 54q0 51 23.5 93t56.5 68t66 47.5t56.5 43.5t23.5 45q0 25 -14.5 38.5t-39.5 13.5q-46 0 -81 -58l-85 59q24 51 71.5 79.5t105.5 28.5q73 0 123 -41.5t50 -112.5q0 -50 -34 -91.5t-75 -64.5t-75.5 -50.5t-35.5 -52.5h127v60h105zM1792 224v-192q0 -13 -9.5 -22.5 t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 14 9 23t23 9h1216q13 0 22.5 -9.5t9.5 -22.5zM384 1123v-99h-335v99h107q0 41 0.5 122t0.5 121v12h-2q-8 -17 -50 -54l-71 76l136 127h106v-404h108zM1792 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5 t-9.5 22.5v192q0 14 9 23t23 9h1216q13 0 22.5 -9.5t9.5 -22.5zM1792 1248v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1760 640q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1728q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h1728zM483 704q-28 35 -51 80q-48 97 -48 188q0 181 134 309q133 127 393 127q50 0 167 -19q66 -12 177 -48q10 -38 21 -118q14 -123 14 -183q0 -18 -5 -45l-12 -3l-84 6 l-14 2q-50 149 -103 205q-88 91 -210 91q-114 0 -182 -59q-67 -58 -67 -146q0 -73 66 -140t279 -129q69 -20 173 -66q58 -28 95 -52h-743zM990 448h411q7 -39 7 -92q0 -111 -41 -212q-23 -55 -71 -104q-37 -35 -109 -81q-80 -48 -153 -66q-80 -21 -203 -21q-114 0 -195 23 l-140 40q-57 16 -72 28q-8 8 -8 22v13q0 108 -2 156q-1 30 0 68l2 37v44l102 2q15 -34 30 -71t22.5 -56t12.5 -27q35 -57 80 -94q43 -36 105 -57q59 -22 132 -22q64 0 139 27q77 26 122 86q47 61 47 129q0 84 -81 157q-34 29 -137 71z" /> -<glyph unicode="" d="M48 1313q-37 2 -45 4l-3 88q13 1 40 1q60 0 112 -4q132 -7 166 -7q86 0 168 3q116 4 146 5q56 0 86 2l-1 -14l2 -64v-9q-60 -9 -124 -9q-60 0 -79 -25q-13 -14 -13 -132q0 -13 0.5 -32.5t0.5 -25.5l1 -229l14 -280q6 -124 51 -202q35 -59 96 -92q88 -47 177 -47 q104 0 191 28q56 18 99 51q48 36 65 64q36 56 53 114q21 73 21 229q0 79 -3.5 128t-11 122.5t-13.5 159.5l-4 59q-5 67 -24 88q-34 35 -77 34l-100 -2l-14 3l2 86h84l205 -10q76 -3 196 10l18 -2q6 -38 6 -51q0 -7 -4 -31q-45 -12 -84 -13q-73 -11 -79 -17q-15 -15 -15 -41 q0 -7 1.5 -27t1.5 -31q8 -19 22 -396q6 -195 -15 -304q-15 -76 -41 -122q-38 -65 -112 -123q-75 -57 -182 -89q-109 -33 -255 -33q-167 0 -284 46q-119 47 -179 122q-61 76 -83 195q-16 80 -16 237v333q0 188 -17 213q-25 36 -147 39zM1536 -96v64q0 14 -9 23t-23 9h-1472 q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h1472q14 0 23 9t9 23z" /> -<glyph unicode="" horiz-adv-x="1664" d="M512 160v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM512 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 160v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23 v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM512 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 160v192 q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192 q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1664 1248v-1088q0 -66 -47 -113t-113 -47h-1344q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1344q66 0 113 -47t47 -113 z" /> -<glyph unicode="" horiz-adv-x="1664" d="M1190 955l293 293l-107 107l-293 -293zM1637 1248q0 -27 -18 -45l-1286 -1286q-18 -18 -45 -18t-45 18l-198 198q-18 18 -18 45t18 45l1286 1286q18 18 45 18t45 -18l198 -198q18 -18 18 -45zM286 1438l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM636 1276 l196 -60l-196 -60l-60 -196l-60 196l-196 60l196 60l60 196zM1566 798l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM926 1438l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98z" /> -<glyph unicode="" horiz-adv-x="1792" d="M640 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM256 640h384v256h-158q-13 0 -22 -9l-195 -195q-9 -9 -9 -22v-30zM1536 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM1792 1216v-1024q0 -15 -4 -26.5t-13.5 -18.5 t-16.5 -11.5t-23.5 -6t-22.5 -2t-25.5 0t-22.5 0.5q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-64q-3 0 -22.5 -0.5t-25.5 0t-22.5 2t-23.5 6t-16.5 11.5t-13.5 18.5t-4 26.5q0 26 19 45t45 19v320q0 8 -0.5 35t0 38 t2.5 34.5t6.5 37t14 30.5t22.5 30l198 198q19 19 50.5 32t58.5 13h160v192q0 26 19 45t45 19h1024q26 0 45 -19t19 -45z" /> -<glyph unicode="" d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103q-111 0 -218 32q59 93 78 164q9 34 54 211q20 -39 73 -67.5t114 -28.5q121 0 216 68.5t147 188.5t52 270q0 114 -59.5 214t-172.5 163t-255 63q-105 0 -196 -29t-154.5 -77t-109 -110.5t-67 -129.5t-21.5 -134 q0 -104 40 -183t117 -111q30 -12 38 20q2 7 8 31t8 30q6 23 -11 43q-51 61 -51 151q0 151 104.5 259.5t273.5 108.5q151 0 235.5 -82t84.5 -213q0 -170 -68.5 -289t-175.5 -119q-61 0 -98 43.5t-23 104.5q8 35 26.5 93.5t30 103t11.5 75.5q0 50 -27 83t-77 33 q-62 0 -105 -57t-43 -142q0 -73 25 -122l-99 -418q-17 -70 -13 -177q-206 91 -333 281t-127 423q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-725q85 122 108 210q9 34 53 209q21 -39 73.5 -67t112.5 -28q181 0 295.5 147.5t114.5 373.5q0 84 -35 162.5t-96.5 139t-152.5 97t-197 36.5q-104 0 -194.5 -28.5t-153 -76.5 t-107.5 -109.5t-66.5 -128t-21.5 -132.5q0 -102 39.5 -180t116.5 -110q13 -5 23.5 0t14.5 19q10 44 15 61q6 23 -11 42q-50 62 -50 150q0 150 103.5 256.5t270.5 106.5q149 0 232.5 -81t83.5 -210q0 -168 -67.5 -286t-173.5 -118q-60 0 -97 43.5t-23 103.5q8 34 26.5 92.5 t29.5 102t11 74.5q0 49 -26.5 81.5t-75.5 32.5q-61 0 -103.5 -56.5t-42.5 -139.5q0 -72 24 -121l-98 -414q-24 -100 -7 -254h-183q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960z" /> -<glyph unicode="" d="M829 318q0 -76 -58.5 -112.5t-139.5 -36.5q-41 0 -80.5 9.5t-75.5 28.5t-58 53t-22 78q0 46 25 80t65.5 51.5t82 25t84.5 7.5q20 0 31 -2q2 -1 23 -16.5t26 -19t23 -18t24.5 -22t19 -22.5t17 -26t9 -26.5t4.5 -31.5zM755 863q0 -60 -33 -99.5t-92 -39.5q-53 0 -93 42.5 t-57.5 96.5t-17.5 106q0 61 32 104t92 43q53 0 93.5 -45t58 -101t17.5 -107zM861 1120l88 64h-265q-85 0 -161 -32t-127.5 -98t-51.5 -153q0 -93 64.5 -154.5t158.5 -61.5q22 0 43 3q-13 -29 -13 -54q0 -44 40 -94q-175 -12 -257 -63q-47 -29 -75.5 -73t-28.5 -95 q0 -43 18.5 -77.5t48.5 -56.5t69 -37t77.5 -21t76.5 -6q60 0 120.5 15.5t113.5 46t86 82.5t33 117q0 49 -20 89.5t-49 66.5t-58 47.5t-49 44t-20 44.5t15.5 42.5t37.5 39.5t44 42t37.5 59.5t15.5 82.5q0 60 -22.5 99.5t-72.5 90.5h83zM1152 672h128v64h-128v128h-64v-128 h-128v-64h128v-160h64v160zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" horiz-adv-x="1664" d="M735 740q0 -36 32 -70.5t77.5 -68t90.5 -73.5t77 -104t32 -142q0 -90 -48 -173q-72 -122 -211 -179.5t-298 -57.5q-132 0 -246.5 41.5t-171.5 137.5q-37 60 -37 131q0 81 44.5 150t118.5 115q131 82 404 100q-32 42 -47.5 74t-15.5 73q0 36 21 85q-46 -4 -68 -4 q-148 0 -249.5 96.5t-101.5 244.5q0 82 36 159t99 131q77 66 182.5 98t217.5 32h418l-138 -88h-131q74 -63 112 -133t38 -160q0 -72 -24.5 -129.5t-59 -93t-69.5 -65t-59.5 -61.5t-24.5 -66zM589 836q38 0 78 16.5t66 43.5q53 57 53 159q0 58 -17 125t-48.5 129.5 t-84.5 103.5t-117 41q-42 0 -82.5 -19.5t-65.5 -52.5q-47 -59 -47 -160q0 -46 10 -97.5t31.5 -103t52 -92.5t75 -67t96.5 -26zM591 -37q58 0 111.5 13t99 39t73 73t27.5 109q0 25 -7 49t-14.5 42t-27 41.5t-29.5 35t-38.5 34.5t-36.5 29t-41.5 30t-36.5 26q-16 2 -48 2 q-53 0 -105 -7t-107.5 -25t-97 -46t-68.5 -74.5t-27 -105.5q0 -70 35 -123.5t91.5 -83t119 -44t127.5 -14.5zM1401 839h213v-108h-213v-219h-105v219h-212v108h212v217h105v-217z" /> -<glyph unicode="" horiz-adv-x="1920" d="M768 384h384v96h-128v448h-114l-148 -137l77 -80q42 37 55 57h2v-288h-128v-96zM1280 640q0 -70 -21 -142t-59.5 -134t-101.5 -101t-138 -39t-138 39t-101.5 101t-59.5 134t-21 142t21 142t59.5 134t101.5 101t138 39t138 -39t101.5 -101t59.5 -134t21 -142zM1792 384 v512q-106 0 -181 75t-75 181h-1152q0 -106 -75 -181t-181 -75v-512q106 0 181 -75t75 -181h1152q0 106 75 181t181 75zM1920 1216v-1152q0 -26 -19 -45t-45 -19h-1792q-26 0 -45 19t-19 45v1152q0 26 19 45t45 19h1792q26 0 45 -19t19 -45z" /> -<glyph unicode="" horiz-adv-x="1024" d="M1024 832q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45z" /> -<glyph unicode="" horiz-adv-x="1024" d="M1024 320q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" /> -<glyph unicode="" horiz-adv-x="640" d="M640 1088v-896q0 -26 -19 -45t-45 -19t-45 19l-448 448q-19 19 -19 45t19 45l448 448q19 19 45 19t45 -19t19 -45z" /> -<glyph unicode="" horiz-adv-x="640" d="M576 640q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19t-19 45v896q0 26 19 45t45 19t45 -19l448 -448q19 -19 19 -45z" /> -<glyph unicode="" horiz-adv-x="1664" d="M160 0h608v1152h-640v-1120q0 -13 9.5 -22.5t22.5 -9.5zM1536 32v1120h-640v-1152h608q13 0 22.5 9.5t9.5 22.5zM1664 1248v-1216q0 -66 -47 -113t-113 -47h-1344q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1344q66 0 113 -47t47 -113z" /> -<glyph unicode="" horiz-adv-x="1024" d="M1024 448q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45zM1024 832q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" /> -<glyph unicode="" horiz-adv-x="1024" d="M1024 448q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45z" /> -<glyph unicode="" horiz-adv-x="1024" d="M1024 832q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1792 826v-794q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v794q44 -49 101 -87q362 -246 497 -345q57 -42 92.5 -65.5t94.5 -48t110 -24.5h1h1q51 0 110 24.5t94.5 48t92.5 65.5q170 123 498 345q57 39 100 87zM1792 1120q0 -79 -49 -151t-122 -123 q-376 -261 -468 -325q-10 -7 -42.5 -30.5t-54 -38t-52 -32.5t-57.5 -27t-50 -9h-1h-1q-23 0 -50 9t-57.5 27t-52 32.5t-54 38t-42.5 30.5q-91 64 -262 182.5t-205 142.5q-62 42 -117 115.5t-55 136.5q0 78 41.5 130t118.5 52h1472q65 0 112.5 -47t47.5 -113z" /> -<glyph unicode="" d="M349 911v-991h-330v991h330zM370 1217q1 -73 -50.5 -122t-135.5 -49h-2q-82 0 -132 49t-50 122q0 74 51.5 122.5t134.5 48.5t133 -48.5t51 -122.5zM1536 488v-568h-329v530q0 105 -40.5 164.5t-126.5 59.5q-63 0 -105.5 -34.5t-63.5 -85.5q-11 -30 -11 -81v-553h-329 q2 399 2 647t-1 296l-1 48h329v-144h-2q20 32 41 56t56.5 52t87 43.5t114.5 15.5q171 0 275 -113.5t104 -332.5z" /> -<glyph unicode="" d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61q-172 0 -327 72.5t-264 204.5q-7 10 -6.5 22.5t8.5 20.5l137 138q10 9 25 9q16 -2 23 -12q73 -95 179 -147t225 -52q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5 t-163.5 109.5t-198.5 40.5q-98 0 -188 -35.5t-160 -101.5l137 -138q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l130 -129q107 101 244.5 156.5t284.5 55.5q156 0 298 -61t245 -164t164 -245t61 -298z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1771 0q0 -53 -37 -90l-107 -108q-39 -37 -91 -37q-53 0 -90 37l-363 364q-38 36 -38 90q0 53 43 96l-256 256l-126 -126q-14 -14 -34 -14t-34 14q2 -2 12.5 -12t12.5 -13t10 -11.5t10 -13.5t6 -13.5t5.5 -16.5t1.5 -18q0 -38 -28 -68q-3 -3 -16.5 -18t-19 -20.5 t-18.5 -16.5t-22 -15.5t-22 -9t-26 -4.5q-40 0 -68 28l-408 408q-28 28 -28 68q0 13 4.5 26t9 22t15.5 22t16.5 18.5t20.5 19t18 16.5q30 28 68 28q10 0 18 -1.5t16.5 -5.5t13.5 -6t13.5 -10t11.5 -10t13 -12.5t12 -12.5q-14 14 -14 34t14 34l348 348q14 14 34 14t34 -14 q-2 2 -12.5 12t-12.5 13t-10 11.5t-10 13.5t-6 13.5t-5.5 16.5t-1.5 18q0 38 28 68q3 3 16.5 18t19 20.5t18.5 16.5t22 15.5t22 9t26 4.5q40 0 68 -28l408 -408q28 -28 28 -68q0 -13 -4.5 -26t-9 -22t-15.5 -22t-16.5 -18.5t-20.5 -19t-18 -16.5q-30 -28 -68 -28 q-10 0 -18 1.5t-16.5 5.5t-13.5 6t-13.5 10t-11.5 10t-13 12.5t-12 12.5q14 -14 14 -34t-14 -34l-126 -126l256 -256q43 43 96 43q52 0 91 -37l363 -363q37 -39 37 -91z" /> -<glyph unicode="" horiz-adv-x="1792" d="M384 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM576 832q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1004 351l101 382q6 26 -7.5 48.5t-38.5 29.5 t-48 -6.5t-30 -39.5l-101 -382q-60 -5 -107 -43.5t-63 -98.5q-20 -77 20 -146t117 -89t146 20t89 117q16 60 -6 117t-72 91zM1664 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 1024q0 53 -37.5 90.5 t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1472 832q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1792 384q0 -261 -141 -483q-19 -29 -54 -29h-1402q-35 0 -54 29 q-141 221 -141 483q0 182 71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" /> -<glyph unicode="" horiz-adv-x="1792" d="M896 1152q-204 0 -381.5 -69.5t-282 -187.5t-104.5 -255q0 -112 71.5 -213.5t201.5 -175.5l87 -50l-27 -96q-24 -91 -70 -172q152 63 275 171l43 38l57 -6q69 -8 130 -8q204 0 381.5 69.5t282 187.5t104.5 255t-104.5 255t-282 187.5t-381.5 69.5zM1792 640 q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22h-5q-15 0 -27 10.5t-16 27.5v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281q0 174 120 321.5 t326 233t450 85.5t450 -85.5t326 -233t120 -321.5z" /> -<glyph unicode="" horiz-adv-x="1792" d="M704 1152q-153 0 -286 -52t-211.5 -141t-78.5 -191q0 -82 53 -158t149 -132l97 -56l-35 -84q34 20 62 39l44 31l53 -10q78 -14 153 -14q153 0 286 52t211.5 141t78.5 191t-78.5 191t-211.5 141t-286 52zM704 1280q191 0 353.5 -68.5t256.5 -186.5t94 -257t-94 -257 t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224q0 139 94 257t256.5 186.5 t353.5 68.5zM1526 111q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22t-22 -7q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132q58 -4 88 -4q161 0 309 45t264 129 q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230q0 -120 -71 -224.5t-195 -176.5z" /> -<glyph unicode="" horiz-adv-x="896" d="M885 970q18 -20 7 -44l-540 -1157q-13 -25 -42 -25q-4 0 -14 2q-17 5 -25.5 19t-4.5 30l197 808l-406 -101q-4 -1 -12 -1q-18 0 -31 11q-18 15 -13 39l201 825q4 14 16 23t28 9h328q19 0 32 -12.5t13 -29.5q0 -8 -5 -18l-171 -463l396 98q8 2 12 2q19 0 34 -15z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1792 288v-320q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192h-512v-192h96q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192h-512v-192h96q40 0 68 -28t28 -68v-320 q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192q0 52 38 90t90 38h512v192h-96q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-96v-192h512q52 0 90 -38t38 -90v-192h96q40 0 68 -28t28 -68 z" /> -<glyph unicode="" horiz-adv-x="1664" d="M896 708v-580q0 -104 -76 -180t-180 -76t-180 76t-76 180q0 26 19 45t45 19t45 -19t19 -45q0 -50 39 -89t89 -39t89 39t39 89v580q33 11 64 11t64 -11zM1664 681q0 -13 -9.5 -22.5t-22.5 -9.5q-11 0 -23 10q-49 46 -93 69t-102 23q-68 0 -128 -37t-103 -97 q-7 -10 -17.5 -28t-14.5 -24q-11 -17 -28 -17q-18 0 -29 17q-4 6 -14.5 24t-17.5 28q-43 60 -102.5 97t-127.5 37t-127.5 -37t-102.5 -97q-7 -10 -17.5 -28t-14.5 -24q-11 -17 -29 -17q-17 0 -28 17q-4 6 -14.5 24t-17.5 28q-43 60 -103 97t-128 37q-58 0 -102 -23t-93 -69 q-12 -10 -23 -10q-13 0 -22.5 9.5t-9.5 22.5q0 5 1 7q45 183 172.5 319.5t298 204.5t360.5 68q140 0 274.5 -40t246.5 -113.5t194.5 -187t115.5 -251.5q1 -2 1 -7zM896 1408v-98q-42 2 -64 2t-64 -2v98q0 26 19 45t45 19t45 -19t19 -45z" /> -<glyph unicode="" horiz-adv-x="1792" d="M768 -128h896v640h-416q-40 0 -68 28t-28 68v416h-384v-1152zM1024 1312v64q0 13 -9.5 22.5t-22.5 9.5h-704q-13 0 -22.5 -9.5t-9.5 -22.5v-64q0 -13 9.5 -22.5t22.5 -9.5h704q13 0 22.5 9.5t9.5 22.5zM1280 640h299l-299 299v-299zM1792 512v-672q0 -40 -28 -68t-68 -28 h-960q-40 0 -68 28t-28 68v160h-544q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h1088q40 0 68 -28t28 -68v-328q21 -13 36 -28l408 -408q28 -28 48 -76t20 -88z" /> -<glyph unicode="" horiz-adv-x="1024" d="M736 960q0 -13 -9.5 -22.5t-22.5 -9.5t-22.5 9.5t-9.5 22.5q0 46 -54 71t-106 25q-13 0 -22.5 9.5t-9.5 22.5t9.5 22.5t22.5 9.5q50 0 99.5 -16t87 -54t37.5 -90zM896 960q0 72 -34.5 134t-90 101.5t-123 62t-136.5 22.5t-136.5 -22.5t-123 -62t-90 -101.5t-34.5 -134 q0 -101 68 -180q10 -11 30.5 -33t30.5 -33q128 -153 141 -298h228q13 145 141 298q10 11 30.5 33t30.5 33q68 79 68 180zM1024 960q0 -155 -103 -268q-45 -49 -74.5 -87t-59.5 -95.5t-34 -107.5q47 -28 47 -82q0 -37 -25 -64q25 -27 25 -64q0 -52 -45 -81q13 -23 13 -47 q0 -46 -31.5 -71t-77.5 -25q-20 -44 -60 -70t-87 -26t-87 26t-60 70q-46 0 -77.5 25t-31.5 71q0 24 13 47q-45 29 -45 81q0 37 25 64q-25 27 -25 64q0 54 47 82q-4 50 -34 107.5t-59.5 95.5t-74.5 87q-103 113 -103 268q0 99 44.5 184.5t117 142t164 89t186.5 32.5 t186.5 -32.5t164 -89t117 -142t44.5 -184.5z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1792 352v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5q-12 0 -24 10l-319 320q-9 9 -9 22q0 14 9 23l320 320q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5v-192h1376q13 0 22.5 -9.5t9.5 -22.5zM1792 896q0 -14 -9 -23l-320 -320q-9 -9 -23 -9 q-13 0 -22.5 9.5t-9.5 22.5v192h-1376q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1376v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23z" /> -<glyph unicode="" horiz-adv-x="1920" d="M1280 608q0 14 -9 23t-23 9h-224v352q0 13 -9.5 22.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -22.5v-352h-224q-13 0 -22.5 -9.5t-9.5 -22.5q0 -14 9 -23l352 -352q9 -9 23 -9t23 9l351 351q10 12 10 24zM1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088 q-185 0 -316.5 131.5t-131.5 316.5q0 130 70 240t188 165q-2 30 -2 43q0 212 150 362t362 150q156 0 285.5 -87t188.5 -231q71 62 166 62q106 0 181 -75t75 -181q0 -76 -41 -138q130 -31 213.5 -135.5t83.5 -238.5z" /> -<glyph unicode="" horiz-adv-x="1920" d="M1280 672q0 14 -9 23l-352 352q-9 9 -23 9t-23 -9l-351 -351q-10 -12 -10 -24q0 -14 9 -23t23 -9h224v-352q0 -13 9.5 -22.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 22.5v352h224q13 0 22.5 9.5t9.5 22.5zM1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088 q-185 0 -316.5 131.5t-131.5 316.5q0 130 70 240t188 165q-2 30 -2 43q0 212 150 362t362 150q156 0 285.5 -87t188.5 -231q71 62 166 62q106 0 181 -75t75 -181q0 -76 -41 -138q130 -31 213.5 -135.5t83.5 -238.5z" /> -<glyph unicode="" horiz-adv-x="1408" d="M384 192q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45t45 19t45 -19t19 -45zM1408 131q0 -121 -73 -190t-194 -69h-874q-121 0 -194 69t-73 190q0 68 5.5 131t24 138t47.5 132.5t81 103t120 60.5q-22 -52 -22 -120v-203q-58 -20 -93 -70t-35 -111q0 -80 56 -136t136 -56 t136 56t56 136q0 61 -35.5 111t-92.5 70v203q0 62 25 93q132 -104 295 -104t295 104q25 -31 25 -93v-64q-106 0 -181 -75t-75 -181v-89q-32 -29 -32 -71q0 -40 28 -68t68 -28t68 28t28 68q0 42 -32 71v89q0 52 38 90t90 38t90 -38t38 -90v-89q-32 -29 -32 -71q0 -40 28 -68 t68 -28t68 28t28 68q0 42 -32 71v89q0 68 -34.5 127.5t-93.5 93.5q0 10 0.5 42.5t0 48t-2.5 41.5t-7 47t-13 40q68 -15 120 -60.5t81 -103t47.5 -132.5t24 -138t5.5 -131zM1088 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5 t271.5 -112.5t112.5 -271.5z" /> -<glyph unicode="" horiz-adv-x="1408" d="M1280 832q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 832q0 -62 -35.5 -111t-92.5 -70v-395q0 -159 -131.5 -271.5t-316.5 -112.5t-316.5 112.5t-131.5 271.5v132q-164 20 -274 128t-110 252v512q0 26 19 45t45 19q6 0 16 -2q17 30 47 48 t65 18q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5q-33 0 -64 18v-402q0 -106 94 -181t226 -75t226 75t94 181v402q-31 -18 -64 -18q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5q35 0 65 -18t47 -48q10 2 16 2q26 0 45 -19t19 -45v-512q0 -144 -110 -252 t-274 -128v-132q0 -106 94 -181t226 -75t226 75t94 181v395q-57 21 -92.5 70t-35.5 111q0 80 56 136t136 56t136 -56t56 -136z" /> -<glyph unicode="" horiz-adv-x="1792" d="M640 1152h512v128h-512v-128zM288 1152v-1280h-64q-92 0 -158 66t-66 158v832q0 92 66 158t158 66h64zM1408 1152v-1280h-1024v1280h128v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h128zM1792 928v-832q0 -92 -66 -158t-158 -66h-64v1280h64q92 0 158 -66 t66 -158z" /> -<glyph unicode="" horiz-adv-x="1792" d="M912 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM1728 128q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38t-38 90q50 42 91 88t85 119.5t74.5 158.5 t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q190 -28 307 -158.5t117 -282.5q0 -139 19.5 -260t50 -206t74.5 -158.5t85 -119.5t91 -88z" /> -<glyph unicode="" horiz-adv-x="1920" d="M1664 896q0 80 -56 136t-136 56h-64v-384h64q80 0 136 56t56 136zM0 128h1792q0 -106 -75 -181t-181 -75h-1280q-106 0 -181 75t-75 181zM1856 896q0 -159 -112.5 -271.5t-271.5 -112.5h-64v-32q0 -92 -66 -158t-158 -66h-704q-92 0 -158 66t-66 158v736q0 26 19 45 t45 19h1152q159 0 271.5 -112.5t112.5 -271.5z" /> -<glyph unicode="" horiz-adv-x="1408" d="M640 1472v-640q0 -61 -35.5 -111t-92.5 -70v-779q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v779q-57 20 -92.5 70t-35.5 111v640q0 26 19 45t45 19t45 -19t19 -45v-416q0 -26 19 -45t45 -19t45 19t19 45v416q0 26 19 45t45 19t45 -19t19 -45v-416q0 -26 19 -45 t45 -19t45 19t19 45v416q0 26 19 45t45 19t45 -19t19 -45zM1408 1472v-1600q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v512h-224q-13 0 -22.5 9.5t-9.5 22.5v800q0 132 94 226t226 94h256q26 0 45 -19t19 -45z" /> -<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M384 736q0 14 9 23t23 9h704q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64zM1120 512q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704zM1120 256q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704 q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704z" /> -<glyph unicode="" horiz-adv-x="1408" d="M384 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 -128h384v1536h-1152v-1536h384v224q0 13 9.5 22.5t22.5 9.5h320q13 0 22.5 -9.5t9.5 -22.5v-224zM1408 1472v-1664q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1664q0 26 19 45t45 19h1280q26 0 45 -19t19 -45z" /> -<glyph unicode="" horiz-adv-x="1408" d="M384 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 -128h384v1152h-256v-32q0 -40 -28 -68t-68 -28h-448q-40 0 -68 28t-28 68v32h-256v-1152h384v224q0 13 9.5 22.5t22.5 9.5h320q13 0 22.5 -9.5t9.5 -22.5v-224zM896 1056v320q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-96h-128v96q0 13 -9.5 22.5 t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5v96h128v-96q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1408 1088v-1280q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1280q0 26 19 45t45 19h320 v288q0 40 28 68t68 28h448q40 0 68 -28t28 -68v-288h320q26 0 45 -19t19 -45z" /> -<glyph unicode="" horiz-adv-x="1920" d="M640 128q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM256 640h384v256h-158q-14 -2 -22 -9l-195 -195q-7 -12 -9 -22v-30zM1536 128q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5zM1664 800v192q0 14 -9 23t-23 9h-224v224q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-224h-224q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h224v-224q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v224h224q14 0 23 9t9 23zM1920 1344v-1152 q0 -26 -19 -45t-45 -19h-192q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-128q-26 0 -45 19t-19 45t19 45t45 19v416q0 26 13 58t32 51l198 198q19 19 51 32t58 13h160v320q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1280 416v192q0 14 -9 23t-23 9h-224v224q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-224h-224q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h224v-224q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v224h224q14 0 23 9t9 23zM640 1152h512v128h-512v-128zM256 1152v-1280h-32 q-92 0 -158 66t-66 158v832q0 92 66 158t158 66h32zM1440 1152v-1280h-1088v1280h160v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h160zM1792 928v-832q0 -92 -66 -158t-158 -66h-32v1280h32q92 0 158 -66t66 -158z" /> -<glyph unicode="" horiz-adv-x="1920" d="M1920 576q-1 -32 -288 -96l-352 -32l-224 -64h-64l-293 -352h69q26 0 45 -4.5t19 -11.5t-19 -11.5t-45 -4.5h-96h-160h-64v32h64v416h-160l-192 -224h-96l-32 32v192h32v32h128v8l-192 24v128l192 24v8h-128v32h-32v192l32 32h96l192 -224h160v416h-64v32h64h160h96 q26 0 45 -4.5t19 -11.5t-19 -11.5t-45 -4.5h-69l293 -352h64l224 -64l352 -32q261 -58 287 -93z" /> -<glyph unicode="" horiz-adv-x="1664" d="M640 640v384h-256v-256q0 -53 37.5 -90.5t90.5 -37.5h128zM1664 192v-192h-1152v192l128 192h-128q-159 0 -271.5 112.5t-112.5 271.5v320l-64 64l32 128h480l32 128h960l32 -192l-64 -32v-800z" /> -<glyph unicode="" d="M1280 192v896q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-512v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-896q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h512v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" d="M1280 576v128q0 26 -19 45t-45 19h-320v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-320q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h320v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h320q26 0 45 19t19 45zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" horiz-adv-x="1024" d="M627 160q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23zM1011 160q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23 t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23z" /> -<glyph unicode="" horiz-adv-x="1024" d="M595 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23zM979 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23 l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" /> -<glyph unicode="" horiz-adv-x="1152" d="M1075 224q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23zM1075 608q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393 q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" /> -<glyph unicode="" horiz-adv-x="1152" d="M1075 672q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23zM1075 1056q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23 t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" /> -<glyph unicode="" horiz-adv-x="640" d="M627 992q0 -13 -10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" /> -<glyph unicode="" horiz-adv-x="640" d="M595 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" /> -<glyph unicode="" horiz-adv-x="1152" d="M1075 352q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" /> -<glyph unicode="" horiz-adv-x="1152" d="M1075 800q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" /> -<glyph unicode="" horiz-adv-x="1920" d="M1792 544v832q0 13 -9.5 22.5t-22.5 9.5h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-832q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5zM1920 1376v-1088q0 -66 -47 -113t-113 -47h-544q0 -37 16 -77.5t32 -71t16 -43.5q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19 t-19 45q0 14 16 44t32 70t16 78h-544q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" /> -<glyph unicode="" horiz-adv-x="1920" d="M416 256q-66 0 -113 47t-47 113v704q0 66 47 113t113 47h1088q66 0 113 -47t47 -113v-704q0 -66 -47 -113t-113 -47h-1088zM384 1120v-704q0 -13 9.5 -22.5t22.5 -9.5h1088q13 0 22.5 9.5t9.5 22.5v704q0 13 -9.5 22.5t-22.5 9.5h-1088q-13 0 -22.5 -9.5t-9.5 -22.5z M1760 192h160v-96q0 -40 -47 -68t-113 -28h-1600q-66 0 -113 28t-47 68v96h160h1600zM1040 96q16 0 16 16t-16 16h-160q-16 0 -16 -16t16 -16h160z" /> -<glyph unicode="" horiz-adv-x="1152" d="M640 128q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1024 288v960q0 13 -9.5 22.5t-22.5 9.5h-832q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h832q13 0 22.5 9.5t9.5 22.5zM1152 1248v-1088q0 -66 -47 -113t-113 -47h-832 q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h832q66 0 113 -47t47 -113z" /> -<glyph unicode="" horiz-adv-x="768" d="M464 128q0 33 -23.5 56.5t-56.5 23.5t-56.5 -23.5t-23.5 -56.5t23.5 -56.5t56.5 -23.5t56.5 23.5t23.5 56.5zM672 288v704q0 13 -9.5 22.5t-22.5 9.5h-512q-13 0 -22.5 -9.5t-9.5 -22.5v-704q0 -13 9.5 -22.5t22.5 -9.5h512q13 0 22.5 9.5t9.5 22.5zM480 1136 q0 16 -16 16h-160q-16 0 -16 -16t16 -16h160q16 0 16 16zM768 1152v-1024q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v1024q0 52 38 90t90 38h512q52 0 90 -38t38 -90z" /> -<glyph unicode="" d="M768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103 t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" horiz-adv-x="1664" d="M768 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z M1664 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z" /> -<glyph unicode="" horiz-adv-x="1664" d="M768 1216v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136zM1664 1216 v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136z" /> -<glyph unicode="" horiz-adv-x="1792" d="M526 142q0 -53 -37.5 -90.5t-90.5 -37.5q-52 0 -90 38t-38 90q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1024 -64q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM320 640q0 -53 -37.5 -90.5t-90.5 -37.5 t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1522 142q0 -52 -38 -90t-90 -38q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM558 1138q0 -66 -47 -113t-113 -47t-113 47t-47 113t47 113t113 47t113 -47t47 -113z M1728 640q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1088 1344q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1618 1138q0 -93 -66 -158.5t-158 -65.5q-93 0 -158.5 65.5t-65.5 158.5 q0 92 65.5 158t158.5 66q92 0 158 -66t66 -158z" /> -<glyph unicode="" d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1792 416q0 -166 -127 -451q-3 -7 -10.5 -24t-13.5 -30t-13 -22q-12 -17 -28 -17q-15 0 -23.5 10t-8.5 25q0 9 2.5 26.5t2.5 23.5q5 68 5 123q0 101 -17.5 181t-48.5 138.5t-80 101t-105.5 69.5t-133 42.5t-154 21.5t-175.5 6h-224v-256q0 -26 -19 -45t-45 -19t-45 19 l-512 512q-19 19 -19 45t19 45l512 512q19 19 45 19t45 -19t19 -45v-256h224q713 0 875 -403q53 -134 53 -333z" /> -<glyph unicode="" horiz-adv-x="1664" d="M640 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1280 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1440 320 q0 120 -69 204t-187 84q-41 0 -195 -21q-71 -11 -157 -11t-157 11q-152 21 -195 21q-118 0 -187 -84t-69 -204q0 -88 32 -153.5t81 -103t122 -60t140 -29.5t149 -7h168q82 0 149 7t140 29.5t122 60t81 103t32 153.5zM1664 496q0 -207 -61 -331q-38 -77 -105.5 -133t-141 -86 t-170 -47.5t-171.5 -22t-167 -4.5q-78 0 -142 3t-147.5 12.5t-152.5 30t-137 51.5t-121 81t-86 115q-62 123 -62 331q0 237 136 396q-27 82 -27 170q0 116 51 218q108 0 190 -39.5t189 -123.5q147 35 309 35q148 0 280 -32q105 82 187 121t189 39q51 -102 51 -218 q0 -87 -27 -168q136 -160 136 -398z" /> -<glyph unicode="" horiz-adv-x="1664" d="M1536 224v704q0 40 -28 68t-68 28h-704q-40 0 -68 28t-28 68v64q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68v-960q0 -40 28 -68t68 -28h1216q40 0 68 28t28 68zM1664 928v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320 q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158z" /> -<glyph unicode="" horiz-adv-x="1920" d="M1781 605q0 35 -53 35h-1088q-40 0 -85.5 -21.5t-71.5 -52.5l-294 -363q-18 -24 -18 -40q0 -35 53 -35h1088q40 0 86 22t71 53l294 363q18 22 18 39zM640 768h768v160q0 40 -28 68t-68 28h-576q-40 0 -68 28t-28 68v64q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68 v-853l256 315q44 53 116 87.5t140 34.5zM1909 605q0 -62 -46 -120l-295 -363q-43 -53 -116 -87.5t-140 -34.5h-1088q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158v-160h192q54 0 99 -24.5t67 -70.5q15 -32 15 -68z " /> -<glyph unicode="" horiz-adv-x="1792" /> -<glyph unicode="" horiz-adv-x="1792" /> -<glyph unicode="" d="M1134 461q-37 -121 -138 -195t-228 -74t-228 74t-138 195q-8 25 4 48.5t38 31.5q25 8 48.5 -4t31.5 -38q25 -80 92.5 -129.5t151.5 -49.5t151.5 49.5t92.5 129.5q8 26 32 38t49 4t37 -31.5t4 -48.5zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5 t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5 t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" d="M1134 307q8 -25 -4 -48.5t-37 -31.5t-49 4t-32 38q-25 80 -92.5 129.5t-151.5 49.5t-151.5 -49.5t-92.5 -129.5q-8 -26 -31.5 -38t-48.5 -4q-26 8 -38 31.5t-4 48.5q37 121 138 195t228 74t228 -74t138 -195zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204 t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" d="M1152 448q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h640q26 0 45 -19t19 -45zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" horiz-adv-x="1920" d="M832 448v128q0 14 -9 23t-23 9h-192v192q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-192h-192q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h192v-192q0 -14 9 -23t23 -9h128q14 0 23 9t9 23v192h192q14 0 23 9t9 23zM1408 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5 t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 640q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1920 512q0 -212 -150 -362t-362 -150q-192 0 -338 128h-220q-146 -128 -338 -128q-212 0 -362 150 t-150 362t150 362t362 150h896q212 0 362 -150t150 -362z" /> -<glyph unicode="" horiz-adv-x="1920" d="M384 368v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM512 624v-96q0 -16 -16 -16h-224q-16 0 -16 16v96q0 16 16 16h224q16 0 16 -16zM384 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1408 368v-96q0 -16 -16 -16 h-864q-16 0 -16 16v96q0 16 16 16h864q16 0 16 -16zM768 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM640 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1024 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16 h96q16 0 16 -16zM896 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1280 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1664 368v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1152 880v-96 q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1408 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1664 880v-352q0 -16 -16 -16h-224q-16 0 -16 16v96q0 16 16 16h112v240q0 16 16 16h96q16 0 16 -16zM1792 128v896h-1664v-896 h1664zM1920 1024v-896q0 -53 -37.5 -90.5t-90.5 -37.5h-1664q-53 0 -90.5 37.5t-37.5 90.5v896q0 53 37.5 90.5t90.5 37.5h1664q53 0 90.5 -37.5t37.5 -90.5z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1664 491v616q-169 -91 -306 -91q-82 0 -145 32q-100 49 -184 76.5t-178 27.5q-173 0 -403 -127v-599q245 113 433 113q55 0 103.5 -7.5t98 -26t77 -31t82.5 -39.5l28 -14q44 -22 101 -22q120 0 293 92zM320 1280q0 -35 -17.5 -64t-46.5 -46v-1266q0 -14 -9 -23t-23 -9 h-64q-14 0 -23 9t-9 23v1266q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -39 -35 -57q-10 -5 -17 -9q-218 -116 -369 -116q-88 0 -158 35l-28 14q-64 33 -99 48t-91 29t-114 14q-102 0 -235.5 -44t-228.5 -102 q-15 -9 -33 -9q-16 0 -32 8q-32 19 -32 56v742q0 35 31 55q35 21 78.5 42.5t114 52t152.5 49.5t155 19q112 0 209 -31t209 -86q38 -19 89 -19q122 0 310 112q22 12 31 17q31 16 62 -2q31 -20 31 -55z" /> -<glyph unicode="" horiz-adv-x="1792" d="M832 536v192q-181 -16 -384 -117v-185q205 96 384 110zM832 954v197q-172 -8 -384 -126v-189q215 111 384 118zM1664 491v184q-235 -116 -384 -71v224q-20 6 -39 15q-5 3 -33 17t-34.5 17t-31.5 15t-34.5 15.5t-32.5 13t-36 12.5t-35 8.5t-39.5 7.5t-39.5 4t-44 2 q-23 0 -49 -3v-222h19q102 0 192.5 -29t197.5 -82q19 -9 39 -15v-188q42 -17 91 -17q120 0 293 92zM1664 918v189q-169 -91 -306 -91q-45 0 -78 8v-196q148 -42 384 90zM320 1280q0 -35 -17.5 -64t-46.5 -46v-1266q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v1266 q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -39 -35 -57q-10 -5 -17 -9q-218 -116 -369 -116q-88 0 -158 35l-28 14q-64 33 -99 48t-91 29t-114 14q-102 0 -235.5 -44t-228.5 -102q-15 -9 -33 -9q-16 0 -32 8 q-32 19 -32 56v742q0 35 31 55q35 21 78.5 42.5t114 52t152.5 49.5t155 19q112 0 209 -31t209 -86q38 -19 89 -19q122 0 310 112q22 12 31 17q31 16 62 -2q31 -20 31 -55z" /> -<glyph unicode="" horiz-adv-x="1664" d="M585 553l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23zM1664 96v-64q0 -14 -9 -23t-23 -9h-960q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h960q14 0 23 -9 t9 -23z" /> -<glyph unicode="" horiz-adv-x="1920" d="M617 137l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23zM1208 1204l-373 -1291q-4 -13 -15.5 -19.5t-23.5 -2.5l-62 17q-13 4 -19.5 15.5t-2.5 24.5 l373 1291q4 13 15.5 19.5t23.5 2.5l62 -17q13 -4 19.5 -15.5t2.5 -24.5zM1865 553l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23z" /> -<glyph unicode="" horiz-adv-x="1792" d="M640 454v-70q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-512 512q-19 19 -19 45t19 45l512 512q29 31 70 14q39 -17 39 -59v-69l-397 -398q-19 -19 -19 -45t19 -45zM1792 416q0 -58 -17 -133.5t-38.5 -138t-48 -125t-40.5 -90.5l-20 -40q-8 -17 -28 -17q-6 0 -9 1 q-25 8 -23 34q43 400 -106 565q-64 71 -170.5 110.5t-267.5 52.5v-251q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-512 512q-19 19 -19 45t19 45l512 512q29 31 70 14q39 -17 39 -59v-262q411 -28 599 -221q169 -173 169 -509z" /> -<glyph unicode="" horiz-adv-x="1664" d="M1186 579l257 250l-356 52l-66 10l-30 60l-159 322v-963l59 -31l318 -168l-60 355l-12 66zM1638 841l-363 -354l86 -500q5 -33 -6 -51.5t-34 -18.5q-17 0 -40 12l-449 236l-449 -236q-23 -12 -40 -12q-23 0 -34 18.5t-6 51.5l86 500l-364 354q-32 32 -23 59.5t54 34.5 l502 73l225 455q20 41 49 41q28 0 49 -41l225 -455l502 -73q45 -7 54 -34.5t-24 -59.5z" /> -<glyph unicode="" horiz-adv-x="1408" d="M1401 1187l-640 -1280q-17 -35 -57 -35q-5 0 -15 2q-22 5 -35.5 22.5t-13.5 39.5v576h-576q-22 0 -39.5 13.5t-22.5 35.5t4 42t29 30l1280 640q13 7 29 7q27 0 45 -19q15 -14 18.5 -34.5t-6.5 -39.5z" /> -<glyph unicode="" horiz-adv-x="1664" d="M557 256h595v595zM512 301l595 595h-595v-595zM1664 224v-192q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v224h-864q-14 0 -23 9t-9 23v864h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224v224q0 14 9 23t23 9h192q14 0 23 -9t9 -23 v-224h851l246 247q10 9 23 9t23 -9q9 -10 9 -23t-9 -23l-247 -246v-851h224q14 0 23 -9t9 -23z" /> -<glyph unicode="" horiz-adv-x="1024" d="M288 64q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM288 1216q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM928 1088q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1024 1088q0 -52 -26 -96.5t-70 -69.5 q-2 -287 -226 -414q-68 -38 -203 -81q-128 -40 -169.5 -71t-41.5 -100v-26q44 -25 70 -69.5t26 -96.5q0 -80 -56 -136t-136 -56t-136 56t-56 136q0 52 26 96.5t70 69.5v820q-44 25 -70 69.5t-26 96.5q0 80 56 136t136 56t136 -56t56 -136q0 -52 -26 -96.5t-70 -69.5v-497 q54 26 154 57q55 17 87.5 29.5t70.5 31t59 39.5t40.5 51t28 69.5t8.5 91.5q-44 25 -70 69.5t-26 96.5q0 80 56 136t136 56t136 -56t56 -136z" /> -<glyph unicode="" horiz-adv-x="1664" d="M439 265l-256 -256q-10 -9 -23 -9q-12 0 -23 9q-9 10 -9 23t9 23l256 256q10 9 23 9t23 -9q9 -10 9 -23t-9 -23zM608 224v-320q0 -14 -9 -23t-23 -9t-23 9t-9 23v320q0 14 9 23t23 9t23 -9t9 -23zM384 448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23t9 23t23 9h320 q14 0 23 -9t9 -23zM1648 320q0 -120 -85 -203l-147 -146q-83 -83 -203 -83q-121 0 -204 85l-334 335q-21 21 -42 56l239 18l273 -274q27 -27 68 -27.5t68 26.5l147 146q28 28 28 67q0 40 -28 68l-274 275l18 239q35 -21 56 -42l336 -336q84 -86 84 -204zM1031 1044l-239 -18 l-273 274q-28 28 -68 28q-39 0 -68 -27l-147 -146q-28 -28 -28 -67q0 -40 28 -68l274 -274l-18 -240q-35 21 -56 42l-336 336q-84 86 -84 204q0 120 85 203l147 146q83 83 203 83q121 0 204 -85l334 -335q21 -21 42 -56zM1664 960q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9 t-9 23t9 23t23 9h320q14 0 23 -9t9 -23zM1120 1504v-320q0 -14 -9 -23t-23 -9t-23 9t-9 23v320q0 14 9 23t23 9t23 -9t9 -23zM1527 1353l-256 -256q-11 -9 -23 -9t-23 9q-9 10 -9 23t9 23l256 256q10 9 23 9t23 -9q9 -10 9 -23t-9 -23z" /> -<glyph unicode="" horiz-adv-x="1024" d="M704 280v-240q0 -16 -12 -28t-28 -12h-240q-16 0 -28 12t-12 28v240q0 16 12 28t28 12h240q16 0 28 -12t12 -28zM1020 880q0 -54 -15.5 -101t-35 -76.5t-55 -59.5t-57.5 -43.5t-61 -35.5q-41 -23 -68.5 -65t-27.5 -67q0 -17 -12 -32.5t-28 -15.5h-240q-15 0 -25.5 18.5 t-10.5 37.5v45q0 83 65 156.5t143 108.5q59 27 84 56t25 76q0 42 -46.5 74t-107.5 32q-65 0 -108 -29q-35 -25 -107 -115q-13 -16 -31 -16q-12 0 -25 8l-164 125q-13 10 -15.5 25t5.5 28q160 266 464 266q80 0 161 -31t146 -83t106 -127.5t41 -158.5z" /> -<glyph unicode="" horiz-adv-x="640" d="M640 192v-128q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64v384h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-576h64q26 0 45 -19t19 -45zM512 1344v-192q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v192 q0 26 19 45t45 19h256q26 0 45 -19t19 -45z" /> -<glyph unicode="" horiz-adv-x="640" d="M512 288v-224q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v224q0 26 19 45t45 19h256q26 0 45 -19t19 -45zM542 1344l-28 -768q-1 -26 -20.5 -45t-45.5 -19h-256q-26 0 -45.5 19t-20.5 45l-28 768q-1 26 17.5 45t44.5 19h320q26 0 44.5 -19t17.5 -45z" /> -<glyph unicode="" d="M897 167v-167h-248l-159 252l-24 42q-8 9 -11 21h-3l-9 -21q-10 -20 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228q2 -4 23 -42q8 -9 11 -21h3q3 9 11 21l25 42l140 228h257v-168h-125l-184 -267l204 -296h109zM1534 846v-206h-514l-3 27 q-4 28 -4 46q0 64 26 117t65 86.5t84 65t84 54.5t65 54t26 64q0 38 -29.5 62.5t-70.5 24.5q-51 0 -97 -39q-14 -11 -36 -38l-105 92q26 37 63 66q83 65 188 65q110 0 178 -59.5t68 -158.5q0 -56 -24.5 -103t-62 -76.5t-81.5 -58.5t-82 -50.5t-65.5 -51.5t-30.5 -63h232v80 h126z" /> -<glyph unicode="" d="M897 167v-167h-248l-159 252l-24 42q-8 9 -11 21h-3l-9 -21q-10 -20 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228q2 -4 23 -42q8 -9 11 -21h3q3 9 11 21l25 42l140 228h257v-168h-125l-184 -267l204 -296h109zM1536 -50v-206h-514l-4 27 q-3 45 -3 46q0 64 26 117t65 86.5t84 65t84 54.5t65 54t26 64q0 38 -29.5 62.5t-70.5 24.5q-51 0 -97 -39q-14 -11 -36 -38l-105 92q26 37 63 66q80 65 188 65q110 0 178 -59.5t68 -158.5q0 -66 -34.5 -118.5t-84 -86t-99.5 -62.5t-87 -63t-41 -73h232v80h126z" /> -<glyph unicode="" horiz-adv-x="1920" d="M896 128l336 384h-768l-336 -384h768zM1909 1205q15 -34 9.5 -71.5t-30.5 -65.5l-896 -1024q-38 -44 -96 -44h-768q-38 0 -69.5 20.5t-47.5 54.5q-15 34 -9.5 71.5t30.5 65.5l896 1024q38 44 96 44h768q38 0 69.5 -20.5t47.5 -54.5z" /> -<glyph unicode="" horiz-adv-x="1664" d="M1664 438q0 -81 -44.5 -135t-123.5 -54q-41 0 -77.5 17.5t-59 38t-56.5 38t-71 17.5q-110 0 -110 -124q0 -39 16 -115t15 -115v-5q-22 0 -33 -1q-34 -3 -97.5 -11.5t-115.5 -13.5t-98 -5q-61 0 -103 26.5t-42 83.5q0 37 17.5 71t38 56.5t38 59t17.5 77.5q0 79 -54 123.5 t-135 44.5q-84 0 -143 -45.5t-59 -127.5q0 -43 15 -83t33.5 -64.5t33.5 -53t15 -50.5q0 -45 -46 -89q-37 -35 -117 -35q-95 0 -245 24q-9 2 -27.5 4t-27.5 4l-13 2q-1 0 -3 1q-2 0 -2 1v1024q2 -1 17.5 -3.5t34 -5t21.5 -3.5q150 -24 245 -24q80 0 117 35q46 44 46 89 q0 22 -15 50.5t-33.5 53t-33.5 64.5t-15 83q0 82 59 127.5t144 45.5q80 0 134 -44.5t54 -123.5q0 -41 -17.5 -77.5t-38 -59t-38 -56.5t-17.5 -71q0 -57 42 -83.5t103 -26.5q64 0 180 15t163 17v-2q-1 -2 -3.5 -17.5t-5 -34t-3.5 -21.5q-24 -150 -24 -245q0 -80 35 -117 q44 -46 89 -46q22 0 50.5 15t53 33.5t64.5 33.5t83 15q82 0 127.5 -59t45.5 -143z" /> -<glyph unicode="" horiz-adv-x="1152" d="M1152 832v-128q0 -221 -147.5 -384.5t-364.5 -187.5v-132h256q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h256v132q-217 24 -364.5 187.5t-147.5 384.5v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -185 131.5 -316.5t316.5 -131.5 t316.5 131.5t131.5 316.5v128q0 26 19 45t45 19t45 -19t19 -45zM896 1216v-512q0 -132 -94 -226t-226 -94t-226 94t-94 226v512q0 132 94 226t226 94t226 -94t94 -226z" /> -<glyph unicode="" horiz-adv-x="1408" d="M271 591l-101 -101q-42 103 -42 214v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -53 15 -113zM1385 1193l-361 -361v-128q0 -132 -94 -226t-226 -94q-55 0 -109 19l-96 -96q97 -51 205 -51q185 0 316.5 131.5t131.5 316.5v128q0 26 19 45t45 19t45 -19t19 -45v-128 q0 -221 -147.5 -384.5t-364.5 -187.5v-132h256q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h256v132q-125 13 -235 81l-254 -254q-10 -10 -23 -10t-23 10l-82 82q-10 10 -10 23t10 23l1234 1234q10 10 23 10t23 -10l82 -82q10 -10 10 -23 t-10 -23zM1005 1325l-621 -621v512q0 132 94 226t226 94q102 0 184.5 -59t116.5 -152z" /> -<glyph unicode="" horiz-adv-x="1280" d="M1088 576v640h-448v-1137q119 63 213 137q235 184 235 360zM1280 1344v-768q0 -86 -33.5 -170.5t-83 -150t-118 -127.5t-126.5 -103t-121 -77.5t-89.5 -49.5t-42.5 -20q-12 -6 -26 -6t-26 6q-16 7 -42.5 20t-89.5 49.5t-121 77.5t-126.5 103t-118 127.5t-83 150 t-33.5 170.5v768q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" /> -<glyph unicode="" horiz-adv-x="1664" d="M128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280 q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" /> -<glyph unicode="" horiz-adv-x="1408" d="M512 1344q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 1376v-320q0 -16 -12 -25q-8 -7 -20 -7q-4 0 -7 1l-448 96q-11 2 -18 11t-7 20h-256v-102q111 -23 183.5 -111t72.5 -203v-800q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v800 q0 106 62.5 190.5t161.5 114.5v111h-32q-59 0 -115 -23.5t-91.5 -53t-66 -66.5t-40.5 -53.5t-14 -24.5q-17 -35 -57 -35q-16 0 -29 7q-23 12 -31.5 37t3.5 49q5 10 14.5 26t37.5 53.5t60.5 70t85 67t108.5 52.5q-25 42 -25 86q0 66 47 113t113 47t113 -47t47 -113 q0 -33 -14 -64h302q0 11 7 20t18 11l448 96q3 1 7 1q12 0 20 -7q12 -9 12 -25z" /> -<glyph unicode="" horiz-adv-x="1664" d="M1440 1088q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1664 1376q0 -249 -75.5 -430.5t-253.5 -360.5q-81 -80 -195 -176l-20 -379q-2 -16 -16 -26l-384 -224q-7 -4 -16 -4q-12 0 -23 9l-64 64q-13 14 -8 32l85 276l-281 281l-276 -85q-3 -1 -9 -1 q-14 0 -23 9l-64 64q-17 19 -5 39l224 384q10 14 26 16l379 20q96 114 176 195q188 187 358 258t431 71q14 0 24 -9.5t10 -22.5z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1745 763l-164 -763h-334l178 832q13 56 -15 88q-27 33 -83 33h-169l-204 -953h-334l204 953h-286l-204 -953h-334l204 953l-153 327h1276q101 0 189.5 -40.5t147.5 -113.5q60 -73 81 -168.5t0 -194.5z" /> -<glyph unicode="" d="M909 141l102 102q19 19 19 45t-19 45l-307 307l307 307q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45t19 -45l454 -454q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" d="M717 141l454 454q19 19 19 45t-19 45l-454 454q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l307 -307l-307 -307q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" d="M1165 397l102 102q19 19 19 45t-19 45l-454 454q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19l307 307l307 -307q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" d="M813 237l454 454q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-307 -307l-307 307q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l454 -454q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" horiz-adv-x="1408" d="M1130 939l16 175h-884l47 -534h612l-22 -228l-197 -53l-196 53l-13 140h-175l22 -278l362 -100h4v1l359 99l50 544h-644l-15 181h674zM0 1408h1408l-128 -1438l-578 -162l-574 162z" /> -<glyph unicode="" horiz-adv-x="1792" d="M275 1408h1505l-266 -1333l-804 -267l-698 267l71 356h297l-29 -147l422 -161l486 161l68 339h-1208l58 297h1209l38 191h-1208z" /> -<glyph unicode="" horiz-adv-x="1792" d="M960 1280q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1792 352v-352q0 -22 -20 -30q-8 -2 -12 -2q-13 0 -23 9l-93 93q-119 -143 -318.5 -226.5t-429.5 -83.5t-429.5 83.5t-318.5 226.5l-93 -93q-9 -9 -23 -9q-4 0 -12 2q-20 8 -20 30v352 q0 14 9 23t23 9h352q22 0 30 -20q8 -19 -7 -35l-100 -100q67 -91 189.5 -153.5t271.5 -82.5v647h-192q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h192v163q-58 34 -93 92.5t-35 128.5q0 106 75 181t181 75t181 -75t75 -181q0 -70 -35 -128.5t-93 -92.5v-163h192q26 0 45 -19 t19 -45v-128q0 -26 -19 -45t-45 -19h-192v-647q149 20 271.5 82.5t189.5 153.5l-100 100q-15 16 -7 35q8 20 30 20h352q14 0 23 -9t9 -23z" /> -<glyph unicode="" horiz-adv-x="1152" d="M1056 768q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h32v320q0 185 131.5 316.5t316.5 131.5t316.5 -131.5t131.5 -316.5q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45q0 106 -75 181t-181 75t-181 -75t-75 -181 v-320h736z" /> -<glyph unicode="" d="M1024 640q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM1152 640q0 159 -112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM1280 640q0 -212 -150 -362t-362 -150t-362 150 t-150 362t150 362t362 150t362 -150t150 -362zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" horiz-adv-x="1408" d="M384 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM896 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM1408 800v-192q0 -40 -28 -68t-68 -28h-192 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68z" /> -<glyph unicode="" horiz-adv-x="384" d="M384 288v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM384 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM384 1312v-192q0 -40 -28 -68t-68 -28h-192 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68z" /> -<glyph unicode="" d="M512 256q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM863 162q-13 232 -177 396t-396 177q-14 1 -24 -9t-10 -23v-128q0 -13 8.5 -22t21.5 -10q154 -11 264 -121t121 -264q1 -13 10 -21.5t22 -8.5h128q13 0 23 10 t9 24zM1247 161q-5 154 -56 297.5t-139.5 260t-205 205t-260 139.5t-297.5 56q-14 1 -23 -9q-10 -10 -10 -23v-128q0 -13 9 -22t22 -10q204 -7 378 -111.5t278.5 -278.5t111.5 -378q1 -13 10 -22t22 -9h128q13 0 23 10q11 9 9 23zM1536 1120v-960q0 -119 -84.5 -203.5 t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM1152 585q32 18 32 55t-32 55l-544 320q-31 19 -64 1q-32 -19 -32 -56v-640q0 -37 32 -56 q16 -8 32 -8q17 0 32 9z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1024 1084l316 -316l-572 -572l-316 316zM813 105l618 618q19 19 19 45t-19 45l-362 362q-18 18 -45 18t-45 -18l-618 -618q-19 -19 -19 -45t19 -45l362 -362q18 -18 45 -18t45 18zM1702 742l-907 -908q-37 -37 -90.5 -37t-90.5 37l-126 126q56 56 56 136t-56 136 t-136 56t-136 -56l-125 126q-37 37 -37 90.5t37 90.5l907 906q37 37 90.5 37t90.5 -37l125 -125q-56 -56 -56 -136t56 -136t136 -56t136 56l126 -125q37 -37 37 -90.5t-37 -90.5z" /> -<glyph unicode="" d="M1280 576v128q0 26 -19 45t-45 19h-896q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h896q26 0 45 19t19 45zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5 t84.5 -203.5z" /> -<glyph unicode="" horiz-adv-x="1408" d="M1152 736v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h832q14 0 23 -9t9 -23zM1280 288v832q0 66 -47 113t-113 47h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113zM1408 1120v-832q0 -119 -84.5 -203.5 t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" horiz-adv-x="1024" d="M1018 933q-18 -37 -58 -37h-192v-864q0 -14 -9 -23t-23 -9h-704q-21 0 -29 18q-8 20 4 35l160 192q9 11 25 11h320v640h-192q-40 0 -58 37q-17 37 9 68l320 384q18 22 49 22t49 -22l320 -384q27 -32 9 -68z" /> -<glyph unicode="" horiz-adv-x="1024" d="M32 1280h704q13 0 22.5 -9.5t9.5 -23.5v-863h192q40 0 58 -37t-9 -69l-320 -384q-18 -22 -49 -22t-49 22l-320 384q-26 31 -9 69q18 37 58 37h192v640h-320q-14 0 -25 11l-160 192q-13 14 -4 34q9 19 29 19z" /> -<glyph unicode="" d="M685 237l614 614q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-467 -467l-211 211q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l358 -358q19 -19 45 -19t45 19zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5 t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" d="M404 428l152 -152l-52 -52h-56v96h-96v56zM818 818q14 -13 -3 -30l-291 -291q-17 -17 -30 -3q-14 13 3 30l291 291q17 17 30 3zM544 128l544 544l-288 288l-544 -544v-288h288zM1152 736l92 92q28 28 28 68t-28 68l-152 152q-28 28 -68 28t-68 -28l-92 -92zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" d="M1280 608v480q0 26 -19 45t-45 19h-480q-42 0 -59 -39q-17 -41 14 -70l144 -144l-534 -534q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19l534 534l144 -144q18 -19 45 -19q12 0 25 5q39 17 39 59zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960 q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" d="M1005 435l352 352q19 19 19 45t-19 45l-352 352q-30 31 -69 14q-40 -17 -40 -59v-160q-119 0 -216 -19.5t-162.5 -51t-114 -79t-76.5 -95.5t-44.5 -109t-21.5 -111.5t-5 -110.5q0 -181 167 -404q10 -12 25 -12q7 0 13 3q22 9 19 33q-44 354 62 473q46 52 130 75.5 t224 23.5v-160q0 -42 40 -59q12 -5 24 -5q26 0 45 19zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" d="M640 448l256 128l-256 128v-256zM1024 1039v-542l-512 -256v542zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" d="M1145 861q18 -35 -5 -66l-320 -448q-19 -27 -52 -27t-52 27l-320 448q-23 31 -5 66q17 35 57 35h640q40 0 57 -35zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" d="M1145 419q-17 -35 -57 -35h-640q-40 0 -57 35q-18 35 5 66l320 448q19 27 52 27t52 -27l320 -448q23 -31 5 -66zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" d="M1088 640q0 -33 -27 -52l-448 -320q-31 -23 -66 -5q-35 17 -35 57v640q0 40 35 57q35 18 66 -5l448 -320q27 -19 27 -52zM1280 160v960q0 14 -9 23t-23 9h-960q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h960q14 0 23 9t9 23zM1536 1120v-960q0 -119 -84.5 -203.5 t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" horiz-adv-x="1024" d="M976 229l35 -159q3 -12 -3 -22.5t-17 -14.5l-5 -1q-4 -2 -10.5 -3.5t-16 -4.5t-21.5 -5.5t-25.5 -5t-30 -5t-33.5 -4.5t-36.5 -3t-38.5 -1q-234 0 -409 130.5t-238 351.5h-95q-13 0 -22.5 9.5t-9.5 22.5v113q0 13 9.5 22.5t22.5 9.5h66q-2 57 1 105h-67q-14 0 -23 9 t-9 23v114q0 14 9 23t23 9h98q67 210 243.5 338t400.5 128q102 0 194 -23q11 -3 20 -15q6 -11 3 -24l-43 -159q-3 -13 -14 -19.5t-24 -2.5l-4 1q-4 1 -11.5 2.5l-17.5 3.5t-22.5 3.5t-26 3t-29 2.5t-29.5 1q-126 0 -226 -64t-150 -176h468q16 0 25 -12q10 -12 7 -26 l-24 -114q-5 -26 -32 -26h-488q-3 -37 0 -105h459q15 0 25 -12q9 -12 6 -27l-24 -112q-2 -11 -11 -18.5t-20 -7.5h-387q48 -117 149.5 -185.5t228.5 -68.5q18 0 36 1.5t33.5 3.5t29.5 4.5t24.5 5t18.5 4.5l12 3l5 2q13 5 26 -2q12 -7 15 -21z" /> -<glyph unicode="" horiz-adv-x="1024" d="M1020 399v-367q0 -14 -9 -23t-23 -9h-956q-14 0 -23 9t-9 23v150q0 13 9.5 22.5t22.5 9.5h97v383h-95q-14 0 -23 9.5t-9 22.5v131q0 14 9 23t23 9h95v223q0 171 123.5 282t314.5 111q185 0 335 -125q9 -8 10 -20.5t-7 -22.5l-103 -127q-9 -11 -22 -12q-13 -2 -23 7 q-5 5 -26 19t-69 32t-93 18q-85 0 -137 -47t-52 -123v-215h305q13 0 22.5 -9t9.5 -23v-131q0 -13 -9.5 -22.5t-22.5 -9.5h-305v-379h414v181q0 13 9 22.5t23 9.5h162q14 0 23 -9.5t9 -22.5z" /> -<glyph unicode="" horiz-adv-x="1024" d="M978 351q0 -153 -99.5 -263.5t-258.5 -136.5v-175q0 -14 -9 -23t-23 -9h-135q-13 0 -22.5 9.5t-9.5 22.5v175q-66 9 -127.5 31t-101.5 44.5t-74 48t-46.5 37.5t-17.5 18q-17 21 -2 41l103 135q7 10 23 12q15 2 24 -9l2 -2q113 -99 243 -125q37 -8 74 -8q81 0 142.5 43 t61.5 122q0 28 -15 53t-33.5 42t-58.5 37.5t-66 32t-80 32.5q-39 16 -61.5 25t-61.5 26.5t-62.5 31t-56.5 35.5t-53.5 42.5t-43.5 49t-35.5 58t-21 66.5t-8.5 78q0 138 98 242t255 134v180q0 13 9.5 22.5t22.5 9.5h135q14 0 23 -9t9 -23v-176q57 -6 110.5 -23t87 -33.5 t63.5 -37.5t39 -29t15 -14q17 -18 5 -38l-81 -146q-8 -15 -23 -16q-14 -3 -27 7q-3 3 -14.5 12t-39 26.5t-58.5 32t-74.5 26t-85.5 11.5q-95 0 -155 -43t-60 -111q0 -26 8.5 -48t29.5 -41.5t39.5 -33t56 -31t60.5 -27t70 -27.5q53 -20 81 -31.5t76 -35t75.5 -42.5t62 -50 t53 -63.5t31.5 -76.5t13 -94z" /> -<glyph unicode="" horiz-adv-x="898" d="M898 1066v-102q0 -14 -9 -23t-23 -9h-168q-23 -144 -129 -234t-276 -110q167 -178 459 -536q14 -16 4 -34q-8 -18 -29 -18h-195q-16 0 -25 12q-306 367 -498 571q-9 9 -9 22v127q0 13 9.5 22.5t22.5 9.5h112q132 0 212.5 43t102.5 125h-427q-14 0 -23 9t-9 23v102 q0 14 9 23t23 9h413q-57 113 -268 113h-145q-13 0 -22.5 9.5t-9.5 22.5v133q0 14 9 23t23 9h832q14 0 23 -9t9 -23v-102q0 -14 -9 -23t-23 -9h-233q47 -61 64 -144h171q14 0 23 -9t9 -23z" /> -<glyph unicode="" horiz-adv-x="1027" d="M603 0h-172q-13 0 -22.5 9t-9.5 23v330h-288q-13 0 -22.5 9t-9.5 23v103q0 13 9.5 22.5t22.5 9.5h288v85h-288q-13 0 -22.5 9t-9.5 23v104q0 13 9.5 22.5t22.5 9.5h214l-321 578q-8 16 0 32q10 16 28 16h194q19 0 29 -18l215 -425q19 -38 56 -125q10 24 30.5 68t27.5 61 l191 420q8 19 29 19h191q17 0 27 -16q9 -14 1 -31l-313 -579h215q13 0 22.5 -9.5t9.5 -22.5v-104q0 -14 -9.5 -23t-22.5 -9h-290v-85h290q13 0 22.5 -9.5t9.5 -22.5v-103q0 -14 -9.5 -23t-22.5 -9h-290v-330q0 -13 -9.5 -22.5t-22.5 -9.5z" /> -<glyph unicode="" horiz-adv-x="1280" d="M1043 971q0 100 -65 162t-171 62h-320v-448h320q106 0 171 62t65 162zM1280 971q0 -193 -126.5 -315t-326.5 -122h-340v-118h505q14 0 23 -9t9 -23v-128q0 -14 -9 -23t-23 -9h-505v-192q0 -14 -9.5 -23t-22.5 -9h-167q-14 0 -23 9t-9 23v192h-224q-14 0 -23 9t-9 23v128 q0 14 9 23t23 9h224v118h-224q-14 0 -23 9t-9 23v149q0 13 9 22.5t23 9.5h224v629q0 14 9 23t23 9h539q200 0 326.5 -122t126.5 -315z" /> -<glyph unicode="" horiz-adv-x="1792" d="M514 341l81 299h-159l75 -300q1 -1 1 -3t1 -3q0 1 0.5 3.5t0.5 3.5zM630 768l35 128h-292l32 -128h225zM822 768h139l-35 128h-70zM1271 340l78 300h-162l81 -299q0 -1 0.5 -3.5t1.5 -3.5q0 1 0.5 3t0.5 3zM1382 768l33 128h-297l34 -128h230zM1792 736v-64q0 -14 -9 -23 t-23 -9h-213l-164 -616q-7 -24 -31 -24h-159q-24 0 -31 24l-166 616h-209l-167 -616q-7 -24 -31 -24h-159q-11 0 -19.5 7t-10.5 17l-160 616h-208q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h175l-33 128h-142q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h109l-89 344q-5 15 5 28 q10 12 26 12h137q26 0 31 -24l90 -360h359l97 360q7 24 31 24h126q24 0 31 -24l98 -360h365l93 360q5 24 31 24h137q16 0 26 -12q10 -13 5 -28l-91 -344h111q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-145l-34 -128h179q14 0 23 -9t9 -23z" /> -<glyph unicode="" horiz-adv-x="1280" d="M1167 896q18 -182 -131 -258q117 -28 175 -103t45 -214q-7 -71 -32.5 -125t-64.5 -89t-97 -58.5t-121.5 -34.5t-145.5 -15v-255h-154v251q-80 0 -122 1v-252h-154v255q-18 0 -54 0.5t-55 0.5h-200l31 183h111q50 0 58 51v402h16q-6 1 -16 1v287q-13 68 -89 68h-111v164 l212 -1q64 0 97 1v252h154v-247q82 2 122 2v245h154v-252q79 -7 140 -22.5t113 -45t82.5 -78t36.5 -114.5zM952 351q0 36 -15 64t-37 46t-57.5 30.5t-65.5 18.5t-74 9t-69 3t-64.5 -1t-47.5 -1v-338q8 0 37 -0.5t48 -0.5t53 1.5t58.5 4t57 8.5t55.5 14t47.5 21t39.5 30 t24.5 40t9.5 51zM881 827q0 33 -12.5 58.5t-30.5 42t-48 28t-55 16.5t-61.5 8t-58 2.5t-54 -1t-39.5 -0.5v-307q5 0 34.5 -0.5t46.5 0t50 2t55 5.5t51.5 11t48.5 18.5t37 27t27 38.5t9 51z" /> -<glyph unicode="" d="M1024 1024v472q22 -14 36 -28l408 -408q14 -14 28 -36h-472zM896 992q0 -40 28 -68t68 -28h544v-1056q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h800v-544z" /> -<glyph unicode="" d="M1468 1060q14 -14 28 -36h-472v472q22 -14 36 -28zM992 896h544v-1056q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h800v-544q0 -40 28 -68t68 -28zM1152 160v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704 q14 0 23 9t9 23zM1152 416v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23zM1152 672v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23z" /> -<glyph unicode="" horiz-adv-x="1664" d="M1191 1128h177l-72 218l-12 47q-2 16 -2 20h-4l-3 -20q0 -1 -3.5 -18t-7.5 -29zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1572 -23 v-233h-584v90l369 529q12 18 21 27l11 9v3q-2 0 -6.5 -0.5t-7.5 -0.5q-12 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530q-6 -8 -21 -26l-11 -11v-2l14 2q9 2 30 2h248v119h121zM1661 874v-106h-288v106h75l-47 144h-243l-47 -144h75v-106h-287v106h70l230 662h162 l230 -662h70z" /> -<glyph unicode="" horiz-adv-x="1664" d="M1191 104h177l-72 218l-12 47q-2 16 -2 20h-4l-3 -20q0 -1 -3.5 -18t-7.5 -29zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1661 -150 v-106h-288v106h75l-47 144h-243l-47 -144h75v-106h-287v106h70l230 662h162l230 -662h70zM1572 1001v-233h-584v90l369 529q12 18 21 27l11 9v3q-2 0 -6.5 -0.5t-7.5 -0.5q-12 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530q-6 -8 -21 -26l-11 -10v-3l14 3q9 1 30 1h248 v119h121z" /> -<glyph unicode="" horiz-adv-x="1792" d="M736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1792 -32v-192q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h832 q14 0 23 -9t9 -23zM1600 480v-192q0 -14 -9 -23t-23 -9h-640q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h640q14 0 23 -9t9 -23zM1408 992v-192q0 -14 -9 -23t-23 -9h-448q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h448q14 0 23 -9t9 -23zM1216 1504v-192q0 -14 -9 -23t-23 -9h-256 q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h256q14 0 23 -9t9 -23z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1216 -32v-192q0 -14 -9 -23t-23 -9h-256q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h256q14 0 23 -9t9 -23zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192 q14 0 23 -9t9 -23zM1408 480v-192q0 -14 -9 -23t-23 -9h-448q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h448q14 0 23 -9t9 -23zM1600 992v-192q0 -14 -9 -23t-23 -9h-640q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h640q14 0 23 -9t9 -23zM1792 1504v-192q0 -14 -9 -23t-23 -9h-832 q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h832q14 0 23 -9t9 -23z" /> -<glyph unicode="" d="M1346 223q0 63 -44 116t-103 53q-52 0 -83 -37t-31 -94t36.5 -95t104.5 -38q50 0 85 27t35 68zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23 zM1486 165q0 -62 -13 -121.5t-41 -114t-68 -95.5t-98.5 -65.5t-127.5 -24.5q-62 0 -108 16q-24 8 -42 15l39 113q15 -7 31 -11q37 -13 75 -13q84 0 134.5 58.5t66.5 145.5h-2q-21 -23 -61.5 -37t-84.5 -14q-106 0 -173 71.5t-67 172.5q0 105 72 178t181 73q123 0 205 -94.5 t82 -252.5zM1456 882v-114h-469v114h167v432q0 7 0.5 19t0.5 17v16h-2l-7 -12q-8 -13 -26 -31l-62 -58l-82 86l192 185h123v-654h165z" /> -<glyph unicode="" d="M1346 1247q0 63 -44 116t-103 53q-52 0 -83 -37t-31 -94t36.5 -95t104.5 -38q50 0 85 27t35 68zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9 t9 -23zM1456 -142v-114h-469v114h167v432q0 7 0.5 19t0.5 17v16h-2l-7 -12q-8 -13 -26 -31l-62 -58l-82 86l192 185h123v-654h165zM1486 1189q0 -62 -13 -121.5t-41 -114t-68 -95.5t-98.5 -65.5t-127.5 -24.5q-62 0 -108 16q-24 8 -42 15l39 113q15 -7 31 -11q37 -13 75 -13 q84 0 134.5 58.5t66.5 145.5h-2q-21 -23 -61.5 -37t-84.5 -14q-106 0 -173 71.5t-67 172.5q0 105 72 178t181 73q123 0 205 -94.5t82 -252.5z" /> -<glyph unicode="" horiz-adv-x="1664" d="M256 192q0 26 -19 45t-45 19q-27 0 -45.5 -19t-18.5 -45q0 -27 18.5 -45.5t45.5 -18.5q26 0 45 18.5t19 45.5zM416 704v-640q0 -26 -19 -45t-45 -19h-288q-26 0 -45 19t-19 45v640q0 26 19 45t45 19h288q26 0 45 -19t19 -45zM1600 704q0 -86 -55 -149q15 -44 15 -76 q3 -76 -43 -137q17 -56 0 -117q-15 -57 -54 -94q9 -112 -49 -181q-64 -76 -197 -78h-36h-76h-17q-66 0 -144 15.5t-121.5 29t-120.5 39.5q-123 43 -158 44q-26 1 -45 19.5t-19 44.5v641q0 25 18 43.5t43 20.5q24 2 76 59t101 121q68 87 101 120q18 18 31 48t17.5 48.5 t13.5 60.5q7 39 12.5 61t19.5 52t34 50q19 19 45 19q46 0 82.5 -10.5t60 -26t40 -40.5t24 -45t12 -50t5 -45t0.5 -39q0 -38 -9.5 -76t-19 -60t-27.5 -56q-3 -6 -10 -18t-11 -22t-8 -24h277q78 0 135 -57t57 -135z" /> -<glyph unicode="" horiz-adv-x="1664" d="M256 960q0 -26 -19 -45t-45 -19q-27 0 -45.5 19t-18.5 45q0 27 18.5 45.5t45.5 18.5q26 0 45 -18.5t19 -45.5zM416 448v640q0 26 -19 45t-45 19h-288q-26 0 -45 -19t-19 -45v-640q0 -26 19 -45t45 -19h288q26 0 45 19t19 45zM1545 597q55 -61 55 -149q-1 -78 -57.5 -135 t-134.5 -57h-277q4 -14 8 -24t11 -22t10 -18q18 -37 27 -57t19 -58.5t10 -76.5q0 -24 -0.5 -39t-5 -45t-12 -50t-24 -45t-40 -40.5t-60 -26t-82.5 -10.5q-26 0 -45 19q-20 20 -34 50t-19.5 52t-12.5 61q-9 42 -13.5 60.5t-17.5 48.5t-31 48q-33 33 -101 120q-49 64 -101 121 t-76 59q-25 2 -43 20.5t-18 43.5v641q0 26 19 44.5t45 19.5q35 1 158 44q77 26 120.5 39.5t121.5 29t144 15.5h17h76h36q133 -2 197 -78q58 -69 49 -181q39 -37 54 -94q17 -61 0 -117q46 -61 43 -137q0 -32 -15 -76z" /> -<glyph unicode="" d="M919 233v157q0 50 -29 50q-17 0 -33 -16v-224q16 -16 33 -16q29 0 29 49zM1103 355h66v34q0 51 -33 51t-33 -51v-34zM532 621v-70h-80v-423h-74v423h-78v70h232zM733 495v-367h-67v40q-39 -45 -76 -45q-33 0 -42 28q-6 16 -6 54v290h66v-270q0 -24 1 -26q1 -15 15 -15 q20 0 42 31v280h67zM985 384v-146q0 -52 -7 -73q-12 -42 -53 -42q-35 0 -68 41v-36h-67v493h67v-161q32 40 68 40q41 0 53 -42q7 -21 7 -74zM1236 255v-9q0 -29 -2 -43q-3 -22 -15 -40q-27 -40 -80 -40q-52 0 -81 38q-21 27 -21 86v129q0 59 20 86q29 38 80 38t78 -38 q21 -28 21 -86v-76h-133v-65q0 -51 34 -51q24 0 30 26q0 1 0.5 7t0.5 16.5v21.5h68zM785 1079v-156q0 -51 -32 -51t-32 51v156q0 52 32 52t32 -52zM1318 366q0 177 -19 260q-10 44 -43 73.5t-76 34.5q-136 15 -412 15q-275 0 -411 -15q-44 -5 -76.5 -34.5t-42.5 -73.5 q-20 -87 -20 -260q0 -176 20 -260q10 -43 42.5 -73t75.5 -35q137 -15 412 -15t412 15q43 5 75.5 35t42.5 73q20 84 20 260zM563 1017l90 296h-75l-51 -195l-53 195h-78l24 -69t23 -69q35 -103 46 -158v-201h74v201zM852 936v130q0 58 -21 87q-29 38 -78 38q-51 0 -78 -38 q-21 -29 -21 -87v-130q0 -58 21 -87q27 -38 78 -38q49 0 78 38q21 27 21 87zM1033 816h67v370h-67v-283q-22 -31 -42 -31q-15 0 -16 16q-1 2 -1 26v272h-67v-293q0 -37 6 -55q11 -27 43 -27q36 0 77 45v-40zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960 q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" d="M971 292v-211q0 -67 -39 -67q-23 0 -45 22v301q22 22 45 22q39 0 39 -67zM1309 291v-46h-90v46q0 68 45 68t45 -68zM343 509h107v94h-312v-94h105v-569h100v569zM631 -60h89v494h-89v-378q-30 -42 -57 -42q-18 0 -21 21q-1 3 -1 35v364h-89v-391q0 -49 8 -73 q12 -37 58 -37q48 0 102 61v-54zM1060 88v197q0 73 -9 99q-17 56 -71 56q-50 0 -93 -54v217h-89v-663h89v48q45 -55 93 -55q54 0 71 55q9 27 9 100zM1398 98v13h-91q0 -51 -2 -61q-7 -36 -40 -36q-46 0 -46 69v87h179v103q0 79 -27 116q-39 51 -106 51q-68 0 -107 -51 q-28 -37 -28 -116v-173q0 -79 29 -116q39 -51 108 -51q72 0 108 53q18 27 21 54q2 9 2 58zM790 1011v210q0 69 -43 69t-43 -69v-210q0 -70 43 -70t43 70zM1509 260q0 -234 -26 -350q-14 -59 -58 -99t-102 -46q-184 -21 -555 -21t-555 21q-58 6 -102.5 46t-57.5 99 q-26 112 -26 350q0 234 26 350q14 59 58 99t103 47q183 20 554 20t555 -20q58 -7 102.5 -47t57.5 -99q26 -112 26 -350zM511 1536h102l-121 -399v-271h-100v271q-14 74 -61 212q-37 103 -65 187h106l71 -263zM881 1203v-175q0 -81 -28 -118q-37 -51 -106 -51q-67 0 -105 51 q-28 38 -28 118v175q0 80 28 117q38 51 105 51q69 0 106 -51q28 -37 28 -117zM1216 1365v-499h-91v55q-53 -62 -103 -62q-46 0 -59 37q-8 24 -8 75v394h91v-367q0 -33 1 -35q3 -22 21 -22q27 0 57 43v381h91z" /> -<glyph unicode="" horiz-adv-x="1408" d="M597 869q-10 -18 -257 -456q-27 -46 -65 -46h-239q-21 0 -31 17t0 36l253 448q1 0 0 1l-161 279q-12 22 -1 37q9 15 32 15h239q40 0 66 -45zM1403 1511q11 -16 0 -37l-528 -934v-1l336 -615q11 -20 1 -37q-10 -15 -32 -15h-239q-42 0 -66 45l-339 622q18 32 531 942 q25 45 64 45h241q22 0 31 -15z" /> -<glyph unicode="" d="M685 771q0 1 -126 222q-21 34 -52 34h-184q-18 0 -26 -11q-7 -12 1 -29l125 -216v-1l-196 -346q-9 -14 0 -28q8 -13 24 -13h185q31 0 50 36zM1309 1268q-7 12 -24 12h-187q-30 0 -49 -35l-411 -729q1 -2 262 -481q20 -35 52 -35h184q18 0 25 12q8 13 -1 28l-260 476v1 l409 723q8 16 0 28zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1280 640q0 37 -30 54l-512 320q-31 20 -65 2q-33 -18 -33 -56v-640q0 -38 33 -56q16 -8 31 -8q20 0 34 10l512 320q30 17 30 54zM1792 640q0 -96 -1 -150t-8.5 -136.5t-22.5 -147.5q-16 -73 -69 -123t-124 -58q-222 -25 -671 -25t-671 25q-71 8 -124.5 58t-69.5 123 q-14 65 -21.5 147.5t-8.5 136.5t-1 150t1 150t8.5 136.5t22.5 147.5q16 73 69 123t124 58q222 25 671 25t671 -25q71 -8 124.5 -58t69.5 -123q14 -65 21.5 -147.5t8.5 -136.5t1 -150z" /> -<glyph unicode="" horiz-adv-x="1792" d="M402 829l494 -305l-342 -285l-490 319zM1388 274v-108l-490 -293v-1l-1 1l-1 -1v1l-489 293v108l147 -96l342 284v2l1 -1l1 1v-2l343 -284zM554 1418l342 -285l-494 -304l-338 270zM1390 829l338 -271l-489 -319l-343 285zM1239 1418l489 -319l-338 -270l-494 304z" /> -<glyph unicode="" horiz-adv-x="1408" d="M928 135v-151l-707 -1v151zM1169 481v-701l-1 -35v-1h-1132l-35 1h-1v736h121v-618h928v618h120zM241 393l704 -65l-13 -150l-705 65zM309 709l683 -183l-39 -146l-683 183zM472 1058l609 -360l-77 -130l-609 360zM832 1389l398 -585l-124 -85l-399 584zM1285 1536 l121 -697l-149 -26l-121 697z" /> -<glyph unicode="" d="M1362 110v648h-135q20 -63 20 -131q0 -126 -64 -232.5t-174 -168.5t-240 -62q-197 0 -337 135.5t-140 327.5q0 68 20 131h-141v-648q0 -26 17.5 -43.5t43.5 -17.5h1069q25 0 43 17.5t18 43.5zM1078 643q0 124 -90.5 211.5t-218.5 87.5q-127 0 -217.5 -87.5t-90.5 -211.5 t90.5 -211.5t217.5 -87.5q128 0 218.5 87.5t90.5 211.5zM1362 1003v165q0 28 -20 48.5t-49 20.5h-174q-29 0 -49 -20.5t-20 -48.5v-165q0 -29 20 -49t49 -20h174q29 0 49 20t20 49zM1536 1211v-1142q0 -81 -58 -139t-139 -58h-1142q-81 0 -139 58t-58 139v1142q0 81 58 139 t139 58h1142q81 0 139 -58t58 -139z" /> -<glyph unicode="" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM698 640q0 88 -62 150t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150zM1262 640q0 88 -62 150 t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150z" /> -<glyph unicode="" d="M768 914l201 -306h-402zM1133 384h94l-459 691l-459 -691h94l104 160h522zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" horiz-adv-x="1408" d="M815 677q8 -63 -50.5 -101t-111.5 -6q-39 17 -53.5 58t-0.5 82t52 58q36 18 72.5 12t64 -35.5t27.5 -67.5zM926 698q-14 107 -113 164t-197 13q-63 -28 -100.5 -88.5t-34.5 -129.5q4 -91 77.5 -155t165.5 -56q91 8 152 84t50 168zM1165 1240q-20 27 -56 44.5t-58 22 t-71 12.5q-291 47 -566 -2q-43 -7 -66 -12t-55 -22t-50 -43q30 -28 76 -45.5t73.5 -22t87.5 -11.5q228 -29 448 -1q63 8 89.5 12t72.5 21.5t75 46.5zM1222 205q-8 -26 -15.5 -76.5t-14 -84t-28.5 -70t-58 -56.5q-86 -48 -189.5 -71.5t-202 -22t-201.5 18.5q-46 8 -81.5 18 t-76.5 27t-73 43.5t-52 61.5q-25 96 -57 292l6 16l18 9q223 -148 506.5 -148t507.5 148q21 -6 24 -23t-5 -45t-8 -37zM1403 1166q-26 -167 -111 -655q-5 -30 -27 -56t-43.5 -40t-54.5 -31q-252 -126 -610 -88q-248 27 -394 139q-15 12 -25.5 26.5t-17 35t-9 34t-6 39.5 t-5.5 35q-9 50 -26.5 150t-28 161.5t-23.5 147.5t-22 158q3 26 17.5 48.5t31.5 37.5t45 30t46 22.5t48 18.5q125 46 313 64q379 37 676 -50q155 -46 215 -122q16 -20 16.5 -51t-5.5 -54z" /> -<glyph unicode="" d="M848 666q0 43 -41 66t-77 1q-43 -20 -42.5 -72.5t43.5 -70.5q39 -23 81 4t36 72zM928 682q8 -66 -36 -121t-110 -61t-119 40t-56 113q-2 49 25.5 93t72.5 64q70 31 141.5 -10t81.5 -118zM1100 1073q-20 -21 -53.5 -34t-53 -16t-63.5 -8q-155 -20 -324 0q-44 6 -63 9.5 t-52.5 16t-54.5 32.5q13 19 36 31t40 15.5t47 8.5q198 35 408 1q33 -5 51 -8.5t43 -16t39 -31.5zM1142 327q0 7 5.5 26.5t3 32t-17.5 16.5q-161 -106 -365 -106t-366 106l-12 -6l-5 -12q26 -154 41 -210q47 -81 204 -108q249 -46 428 53q34 19 49 51.5t22.5 85.5t12.5 71z M1272 1020q9 53 -8 75q-43 55 -155 88q-216 63 -487 36q-132 -12 -226 -46q-38 -15 -59.5 -25t-47 -34t-29.5 -54q8 -68 19 -138t29 -171t24 -137q1 -5 5 -31t7 -36t12 -27t22 -28q105 -80 284 -100q259 -28 440 63q24 13 39.5 23t31 29t19.5 40q48 267 80 473zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" horiz-adv-x="1024" d="M944 207l80 -237q-23 -35 -111 -66t-177 -32q-104 -2 -190.5 26t-142.5 74t-95 106t-55.5 120t-16.5 118v544h-168v215q72 26 129 69.5t91 90t58 102t34 99t15 88.5q1 5 4.5 8.5t7.5 3.5h244v-424h333v-252h-334v-518q0 -30 6.5 -56t22.5 -52.5t49.5 -41.5t81.5 -14 q78 2 134 29z" /> -<glyph unicode="" d="M1136 75l-62 183q-44 -22 -103 -22q-36 -1 -62 10.5t-38.5 31.5t-17.5 40.5t-5 43.5v398h257v194h-256v326h-188q-8 0 -9 -10q-5 -44 -17.5 -87t-39 -95t-77 -95t-118.5 -68v-165h130v-418q0 -57 21.5 -115t65 -111t121 -85.5t176.5 -30.5q69 1 136.5 25t85.5 50z M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" horiz-adv-x="768" d="M765 237q8 -19 -5 -35l-350 -384q-10 -10 -23 -10q-14 0 -24 10l-355 384q-13 16 -5 35q9 19 29 19h224v1248q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1248h224q21 0 29 -19z" /> -<glyph unicode="" horiz-adv-x="768" d="M765 1043q-9 -19 -29 -19h-224v-1248q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v1248h-224q-21 0 -29 19t5 35l350 384q10 10 23 10q14 0 24 -10l355 -384q13 -16 5 -35z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1792 736v-192q0 -14 -9 -23t-23 -9h-1248v-224q0 -21 -19 -29t-35 5l-384 350q-10 10 -10 23q0 14 10 24l384 354q16 14 35 6q19 -9 19 -29v-224h1248q14 0 23 -9t9 -23z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1728 643q0 -14 -10 -24l-384 -354q-16 -14 -35 -6q-19 9 -19 29v224h-1248q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h1248v224q0 21 19 29t35 -5l384 -350q10 -10 10 -23z" /> -<glyph unicode="" horiz-adv-x="1408" d="M1393 321q-39 -125 -123 -250q-129 -196 -257 -196q-49 0 -140 32q-86 32 -151 32q-61 0 -142 -33q-81 -34 -132 -34q-152 0 -301 259q-147 261 -147 503q0 228 113 374q112 144 284 144q72 0 177 -30q104 -30 138 -30q45 0 143 34q102 34 173 34q119 0 213 -65 q52 -36 104 -100q-79 -67 -114 -118q-65 -94 -65 -207q0 -124 69 -223t158 -126zM1017 1494q0 -61 -29 -136q-30 -75 -93 -138q-54 -54 -108 -72q-37 -11 -104 -17q3 149 78 257q74 107 250 148q1 -3 2.5 -11t2.5 -11q0 -4 0.5 -10t0.5 -10z" /> -<glyph unicode="" horiz-adv-x="1664" d="M682 530v-651l-682 94v557h682zM682 1273v-659h-682v565zM1664 530v-786l-907 125v661h907zM1664 1408v-794h-907v669z" /> -<glyph unicode="" horiz-adv-x="1408" d="M493 1053q16 0 27.5 11.5t11.5 27.5t-11.5 27.5t-27.5 11.5t-27 -11.5t-11 -27.5t11 -27.5t27 -11.5zM915 1053q16 0 27 11.5t11 27.5t-11 27.5t-27 11.5t-27.5 -11.5t-11.5 -27.5t11.5 -27.5t27.5 -11.5zM103 869q42 0 72 -30t30 -72v-430q0 -43 -29.5 -73t-72.5 -30 t-73 30t-30 73v430q0 42 30 72t73 30zM1163 850v-666q0 -46 -32 -78t-77 -32h-75v-227q0 -43 -30 -73t-73 -30t-73 30t-30 73v227h-138v-227q0 -43 -30 -73t-73 -30q-42 0 -72 30t-30 73l-1 227h-74q-46 0 -78 32t-32 78v666h918zM931 1255q107 -55 171 -153.5t64 -215.5 h-925q0 117 64 215.5t172 153.5l-71 131q-7 13 5 20q13 6 20 -6l72 -132q95 42 201 42t201 -42l72 132q7 12 20 6q12 -7 5 -20zM1408 767v-430q0 -43 -30 -73t-73 -30q-42 0 -72 30t-30 73v430q0 43 30 72.5t72 29.5q43 0 73 -29.5t30 -72.5z" /> -<glyph unicode="" d="M663 1125q-11 -1 -15.5 -10.5t-8.5 -9.5q-5 -1 -5 5q0 12 19 15h10zM750 1111q-4 -1 -11.5 6.5t-17.5 4.5q24 11 32 -2q3 -6 -3 -9zM399 684q-4 1 -6 -3t-4.5 -12.5t-5.5 -13.5t-10 -13q-7 -10 -1 -12q4 -1 12.5 7t12.5 18q1 3 2 7t2 6t1.5 4.5t0.5 4v3t-1 2.5t-3 2z M1254 325q0 18 -55 42q4 15 7.5 27.5t5 26t3 21.5t0.5 22.5t-1 19.5t-3.5 22t-4 20.5t-5 25t-5.5 26.5q-10 48 -47 103t-72 75q24 -20 57 -83q87 -162 54 -278q-11 -40 -50 -42q-31 -4 -38.5 18.5t-8 83.5t-11.5 107q-9 39 -19.5 69t-19.5 45.5t-15.5 24.5t-13 15t-7.5 7 q-14 62 -31 103t-29.5 56t-23.5 33t-15 40q-4 21 6 53.5t4.5 49.5t-44.5 25q-15 3 -44.5 18t-35.5 16q-8 1 -11 26t8 51t36 27q37 3 51 -30t4 -58q-11 -19 -2 -26.5t30 -0.5q13 4 13 36v37q-5 30 -13.5 50t-21 30.5t-23.5 15t-27 7.5q-107 -8 -89 -134q0 -15 -1 -15 q-9 9 -29.5 10.5t-33 -0.5t-15.5 5q1 57 -16 90t-45 34q-27 1 -41.5 -27.5t-16.5 -59.5q-1 -15 3.5 -37t13 -37.5t15.5 -13.5q10 3 16 14q4 9 -7 8q-7 0 -15.5 14.5t-9.5 33.5q-1 22 9 37t34 14q17 0 27 -21t9.5 -39t-1.5 -22q-22 -15 -31 -29q-8 -12 -27.5 -23.5 t-20.5 -12.5q-13 -14 -15.5 -27t7.5 -18q14 -8 25 -19.5t16 -19t18.5 -13t35.5 -6.5q47 -2 102 15q2 1 23 7t34.5 10.5t29.5 13t21 17.5q9 14 20 8q5 -3 6.5 -8.5t-3 -12t-16.5 -9.5q-20 -6 -56.5 -21.5t-45.5 -19.5q-44 -19 -70 -23q-25 -5 -79 2q-10 2 -9 -2t17 -19 q25 -23 67 -22q17 1 36 7t36 14t33.5 17.5t30 17t24.5 12t17.5 2.5t8.5 -11q0 -2 -1 -4.5t-4 -5t-6 -4.5t-8.5 -5t-9 -4.5t-10 -5t-9.5 -4.5q-28 -14 -67.5 -44t-66.5 -43t-49 -1q-21 11 -63 73q-22 31 -25 22q-1 -3 -1 -10q0 -25 -15 -56.5t-29.5 -55.5t-21 -58t11.5 -63 q-23 -6 -62.5 -90t-47.5 -141q-2 -18 -1.5 -69t-5.5 -59q-8 -24 -29 -3q-32 31 -36 94q-2 28 4 56q4 19 -1 18l-4 -5q-36 -65 10 -166q5 -12 25 -28t24 -20q20 -23 104 -90.5t93 -76.5q16 -15 17.5 -38t-14 -43t-45.5 -23q8 -15 29 -44.5t28 -54t7 -70.5q46 24 7 92 q-4 8 -10.5 16t-9.5 12t-2 6q3 5 13 9.5t20 -2.5q46 -52 166 -36q133 15 177 87q23 38 34 30q12 -6 10 -52q-1 -25 -23 -92q-9 -23 -6 -37.5t24 -15.5q3 19 14.5 77t13.5 90q2 21 -6.5 73.5t-7.5 97t23 70.5q15 18 51 18q1 37 34.5 53t72.5 10.5t60 -22.5zM626 1152 q3 17 -2.5 30t-11.5 15q-9 2 -9 -7q2 -5 5 -6q10 0 7 -15q-3 -20 8 -20q3 0 3 3zM1045 955q-2 8 -6.5 11.5t-13 5t-14.5 5.5q-5 3 -9.5 8t-7 8t-5.5 6.5t-4 4t-4 -1.5q-14 -16 7 -43.5t39 -31.5q9 -1 14.5 8t3.5 20zM867 1168q0 11 -5 19.5t-11 12.5t-9 3q-14 -1 -7 -7l4 -2 q14 -4 18 -31q0 -3 8 2zM921 1401q0 2 -2.5 5t-9 7t-9.5 6q-15 15 -24 15q-9 -1 -11.5 -7.5t-1 -13t-0.5 -12.5q-1 -4 -6 -10.5t-6 -9t3 -8.5q4 -3 8 0t11 9t15 9q1 1 9 1t15 2t9 7zM1486 60q20 -12 31 -24.5t12 -24t-2.5 -22.5t-15.5 -22t-23.5 -19.5t-30 -18.5 t-31.5 -16.5t-32 -15.5t-27 -13q-38 -19 -85.5 -56t-75.5 -64q-17 -16 -68 -19.5t-89 14.5q-18 9 -29.5 23.5t-16.5 25.5t-22 19.5t-47 9.5q-44 1 -130 1q-19 0 -57 -1.5t-58 -2.5q-44 -1 -79.5 -15t-53.5 -30t-43.5 -28.5t-53.5 -11.5q-29 1 -111 31t-146 43q-19 4 -51 9.5 t-50 9t-39.5 9.5t-33.5 14.5t-17 19.5q-10 23 7 66.5t18 54.5q1 16 -4 40t-10 42.5t-4.5 36.5t10.5 27q14 12 57 14t60 12q30 18 42 35t12 51q21 -73 -32 -106q-32 -20 -83 -15q-34 3 -43 -10q-13 -15 5 -57q2 -6 8 -18t8.5 -18t4.5 -17t1 -22q0 -15 -17 -49t-14 -48 q3 -17 37 -26q20 -6 84.5 -18.5t99.5 -20.5q24 -6 74 -22t82.5 -23t55.5 -4q43 6 64.5 28t23 48t-7.5 58.5t-19 52t-20 36.5q-121 190 -169 242q-68 74 -113 40q-11 -9 -15 15q-3 16 -2 38q1 29 10 52t24 47t22 42q8 21 26.5 72t29.5 78t30 61t39 54q110 143 124 195 q-12 112 -16 310q-2 90 24 151.5t106 104.5q39 21 104 21q53 1 106 -13.5t89 -41.5q57 -42 91.5 -121.5t29.5 -147.5q-5 -95 30 -214q34 -113 133 -218q55 -59 99.5 -163t59.5 -191q8 -49 5 -84.5t-12 -55.5t-20 -22q-10 -2 -23.5 -19t-27 -35.5t-40.5 -33.5t-61 -14 q-18 1 -31.5 5t-22.5 13.5t-13.5 15.5t-11.5 20.5t-9 19.5q-22 37 -41 30t-28 -49t7 -97q20 -70 1 -195q-10 -65 18 -100.5t73 -33t85 35.5q59 49 89.5 66.5t103.5 42.5q53 18 77 36.5t18.5 34.5t-25 28.5t-51.5 23.5q-33 11 -49.5 48t-15 72.5t15.5 47.5q1 -31 8 -56.5 t14.5 -40.5t20.5 -28.5t21 -19t21.5 -13t16.5 -9.5z" /> -<glyph unicode="" d="M1024 36q-42 241 -140 498h-2l-2 -1q-16 -6 -43 -16.5t-101 -49t-137 -82t-131 -114.5t-103 -148l-15 11q184 -150 418 -150q132 0 256 52zM839 643q-21 49 -53 111q-311 -93 -673 -93q-1 -7 -1 -21q0 -124 44 -236.5t124 -201.5q50 89 123.5 166.5t142.5 124.5t130.5 81 t99.5 48l37 13q4 1 13 3.5t13 4.5zM732 855q-120 213 -244 378q-138 -65 -234 -186t-128 -272q302 0 606 80zM1416 536q-210 60 -409 29q87 -239 128 -469q111 75 185 189.5t96 250.5zM611 1277q-1 0 -2 -1q1 1 2 1zM1201 1132q-185 164 -433 164q-76 0 -155 -19 q131 -170 246 -382q69 26 130 60.5t96.5 61.5t65.5 57t37.5 40.5zM1424 647q-3 232 -149 410l-1 -1q-9 -12 -19 -24.5t-43.5 -44.5t-71 -60.5t-100 -65t-131.5 -64.5q25 -53 44 -95q2 -6 6.5 -17.5t7.5 -16.5q36 5 74.5 7t73.5 2t69 -1.5t64 -4t56.5 -5.5t48 -6.5t36.5 -6 t25 -4.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" d="M1173 473q0 50 -19.5 91.5t-48.5 68.5t-73 49t-82.5 34t-87.5 23l-104 24q-30 7 -44 10.5t-35 11.5t-30 16t-16.5 21t-7.5 30q0 77 144 77q43 0 77 -12t54 -28.5t38 -33.5t40 -29t48 -12q47 0 75.5 32t28.5 77q0 55 -56 99.5t-142 67.5t-182 23q-68 0 -132 -15.5 t-119.5 -47t-89 -87t-33.5 -128.5q0 -61 19 -106.5t56 -75.5t80 -48.5t103 -32.5l146 -36q90 -22 112 -36q32 -20 32 -60q0 -39 -40 -64.5t-105 -25.5q-51 0 -91.5 16t-65 38.5t-45.5 45t-46 38.5t-54 16q-50 0 -75.5 -30t-25.5 -75q0 -92 122 -157.5t291 -65.5 q73 0 140 18.5t122.5 53.5t88.5 93.5t33 131.5zM1536 256q0 -159 -112.5 -271.5t-271.5 -112.5q-130 0 -234 80q-77 -16 -150 -16q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5q0 73 16 150q-80 104 -80 234q0 159 112.5 271.5t271.5 112.5q130 0 234 -80 q77 16 150 16q143 0 273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -73 -16 -150q80 -104 80 -234z" /> -<glyph unicode="" horiz-adv-x="1280" d="M1000 1102l37 194q5 23 -9 40t-35 17h-712q-23 0 -38.5 -17t-15.5 -37v-1101q0 -7 6 -1l291 352q23 26 38 33.5t48 7.5h239q22 0 37 14.5t18 29.5q24 130 37 191q4 21 -11.5 40t-36.5 19h-294q-29 0 -48 19t-19 48v42q0 29 19 47.5t48 18.5h346q18 0 35 13.5t20 29.5z M1227 1324q-15 -73 -53.5 -266.5t-69.5 -350t-35 -173.5q-6 -22 -9 -32.5t-14 -32.5t-24.5 -33t-38.5 -21t-58 -10h-271q-13 0 -22 -10q-8 -9 -426 -494q-22 -25 -58.5 -28.5t-48.5 5.5q-55 22 -55 98v1410q0 55 38 102.5t120 47.5h888q95 0 127 -53t10 -159zM1227 1324 l-158 -790q4 17 35 173.5t69.5 350t53.5 266.5z" /> -<glyph unicode="" d="M704 192v1024q0 14 -9 23t-23 9h-480q-14 0 -23 -9t-9 -23v-1024q0 -14 9 -23t23 -9h480q14 0 23 9t9 23zM1376 576v640q0 14 -9 23t-23 9h-480q-14 0 -23 -9t-9 -23v-640q0 -14 9 -23t23 -9h480q14 0 23 9t9 23zM1536 1344v-1408q0 -26 -19 -45t-45 -19h-1408 q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" /> -<glyph unicode="" horiz-adv-x="1280" d="M1280 480q0 -40 -28 -68t-68 -28q-51 0 -80 43l-227 341h-45v-132l247 -411q9 -15 9 -33q0 -26 -19 -45t-45 -19h-192v-272q0 -46 -33 -79t-79 -33h-160q-46 0 -79 33t-33 79v272h-192q-26 0 -45 19t-19 45q0 18 9 33l247 411v132h-45l-227 -341q-29 -43 -80 -43 q-40 0 -68 28t-28 68q0 29 16 53l256 384q73 107 176 107h384q103 0 176 -107l256 -384q16 -24 16 -53zM864 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" /> -<glyph unicode="" horiz-adv-x="1024" d="M1024 832v-416q0 -40 -28 -68t-68 -28t-68 28t-28 68v352h-64v-912q0 -46 -33 -79t-79 -33t-79 33t-33 79v464h-64v-464q0 -46 -33 -79t-79 -33t-79 33t-33 79v912h-64v-352q0 -40 -28 -68t-68 -28t-68 28t-28 68v416q0 80 56 136t136 56h640q80 0 136 -56t56 -136z M736 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" /> -<glyph unicode="" d="M773 234l350 473q16 22 24.5 59t-6 85t-61.5 79q-40 26 -83 25.5t-73.5 -17.5t-54.5 -45q-36 -40 -96 -40q-59 0 -95 40q-24 28 -54.5 45t-73.5 17.5t-84 -25.5q-46 -31 -60.5 -79t-6 -85t24.5 -59zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1472 640q0 117 -45.5 223.5t-123 184t-184 123t-223.5 45.5t-223.5 -45.5t-184 -123t-123 -184t-45.5 -223.5t45.5 -223.5t123 -184t184 -123t223.5 -45.5t223.5 45.5t184 123t123 184t45.5 223.5zM1748 363q-4 -15 -20 -20l-292 -96v-306q0 -16 -13 -26q-15 -10 -29 -4 l-292 94l-180 -248q-10 -13 -26 -13t-26 13l-180 248l-292 -94q-14 -6 -29 4q-13 10 -13 26v306l-292 96q-16 5 -20 20q-5 17 4 29l180 248l-180 248q-9 13 -4 29q4 15 20 20l292 96v306q0 16 13 26q15 10 29 4l292 -94l180 248q9 12 26 12t26 -12l180 -248l292 94 q14 6 29 -4q13 -10 13 -26v-306l292 -96q16 -5 20 -20q5 -16 -4 -29l-180 -248l180 -248q9 -12 4 -29z" /> -<glyph unicode="" d="M1262 233q-54 -9 -110 -9q-182 0 -337 90t-245 245t-90 337q0 192 104 357q-201 -60 -328.5 -229t-127.5 -384q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51q144 0 273.5 61.5t220.5 171.5zM1465 318q-94 -203 -283.5 -324.5t-413.5 -121.5q-156 0 -298 61 t-245 164t-164 245t-61 298q0 153 57.5 292.5t156 241.5t235.5 164.5t290 68.5q44 2 61 -39q18 -41 -15 -72q-86 -78 -131.5 -181.5t-45.5 -218.5q0 -148 73 -273t198 -198t273 -73q118 0 228 51q41 18 72 -13q14 -14 17.5 -34t-4.5 -38z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1088 704q0 26 -19 45t-45 19h-256q-26 0 -45 -19t-19 -45t19 -45t45 -19h256q26 0 45 19t19 45zM1664 896v-960q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v960q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1728 1344v-256q0 -26 -19 -45t-45 -19h-1536 q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1536q26 0 45 -19t19 -45z" /> -<glyph unicode="" horiz-adv-x="1664" d="M1632 576q0 -26 -19 -45t-45 -19h-224q0 -171 -67 -290l208 -209q19 -19 19 -45t-19 -45q-18 -19 -45 -19t-45 19l-198 197q-5 -5 -15 -13t-42 -28.5t-65 -36.5t-82 -29t-97 -13v896h-128v-896q-51 0 -101.5 13.5t-87 33t-66 39t-43.5 32.5l-15 14l-183 -207 q-20 -21 -48 -21q-24 0 -43 16q-19 18 -20.5 44.5t15.5 46.5l202 227q-58 114 -58 274h-224q-26 0 -45 19t-19 45t19 45t45 19h224v294l-173 173q-19 19 -19 45t19 45t45 19t45 -19l173 -173h844l173 173q19 19 45 19t45 -19t19 -45t-19 -45l-173 -173v-294h224q26 0 45 -19 t19 -45zM1152 1152h-640q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5z" /> -<glyph unicode="" horiz-adv-x="1920" d="M1917 1016q23 -64 -150 -294q-24 -32 -65 -85q-78 -100 -90 -131q-17 -41 14 -81q17 -21 81 -82h1l1 -1l1 -1l2 -2q141 -131 191 -221q3 -5 6.5 -12.5t7 -26.5t-0.5 -34t-25 -27.5t-59 -12.5l-256 -4q-24 -5 -56 5t-52 22l-20 12q-30 21 -70 64t-68.5 77.5t-61 58 t-56.5 15.5q-3 -1 -8 -3.5t-17 -14.5t-21.5 -29.5t-17 -52t-6.5 -77.5q0 -15 -3.5 -27.5t-7.5 -18.5l-4 -5q-18 -19 -53 -22h-115q-71 -4 -146 16.5t-131.5 53t-103 66t-70.5 57.5l-25 24q-10 10 -27.5 30t-71.5 91t-106 151t-122.5 211t-130.5 272q-6 16 -6 27t3 16l4 6 q15 19 57 19l274 2q12 -2 23 -6.5t16 -8.5l5 -3q16 -11 24 -32q20 -50 46 -103.5t41 -81.5l16 -29q29 -60 56 -104t48.5 -68.5t41.5 -38.5t34 -14t27 5q2 1 5 5t12 22t13.5 47t9.5 81t0 125q-2 40 -9 73t-14 46l-6 12q-25 34 -85 43q-13 2 5 24q17 19 38 30q53 26 239 24 q82 -1 135 -13q20 -5 33.5 -13.5t20.5 -24t10.5 -32t3.5 -45.5t-1 -55t-2.5 -70.5t-1.5 -82.5q0 -11 -1 -42t-0.5 -48t3.5 -40.5t11.5 -39t22.5 -24.5q8 -2 17 -4t26 11t38 34.5t52 67t68 107.5q60 104 107 225q4 10 10 17.5t11 10.5l4 3l5 2.5t13 3t20 0.5l288 2 q39 5 64 -2.5t31 -16.5z" /> -<glyph unicode="" horiz-adv-x="1792" d="M675 252q21 34 11 69t-45 50q-34 14 -73 1t-60 -46q-22 -34 -13 -68.5t43 -50.5t74.5 -2.5t62.5 47.5zM769 373q8 13 3.5 26.5t-17.5 18.5q-14 5 -28.5 -0.5t-21.5 -18.5q-17 -31 13 -45q14 -5 29 0.5t22 18.5zM943 266q-45 -102 -158 -150t-224 -12 q-107 34 -147.5 126.5t6.5 187.5q47 93 151.5 139t210.5 19q111 -29 158.5 -119.5t2.5 -190.5zM1255 426q-9 96 -89 170t-208.5 109t-274.5 21q-223 -23 -369.5 -141.5t-132.5 -264.5q9 -96 89 -170t208.5 -109t274.5 -21q223 23 369.5 141.5t132.5 264.5zM1563 422 q0 -68 -37 -139.5t-109 -137t-168.5 -117.5t-226 -83t-270.5 -31t-275 33.5t-240.5 93t-171.5 151t-65 199.5q0 115 69.5 245t197.5 258q169 169 341.5 236t246.5 -7q65 -64 20 -209q-4 -14 -1 -20t10 -7t14.5 0.5t13.5 3.5l6 2q139 59 246 59t153 -61q45 -63 0 -178 q-2 -13 -4.5 -20t4.5 -12.5t12 -7.5t17 -6q57 -18 103 -47t80 -81.5t34 -116.5zM1489 1046q42 -47 54.5 -108.5t-6.5 -117.5q-8 -23 -29.5 -34t-44.5 -4q-23 8 -34 29.5t-4 44.5q20 63 -24 111t-107 35q-24 -5 -45 8t-25 37q-5 24 8 44.5t37 25.5q60 13 119 -5.5t101 -65.5z M1670 1209q87 -96 112.5 -222.5t-13.5 -241.5q-9 -27 -34 -40t-52 -4t-40 34t-5 52q28 82 10 172t-80 158q-62 69 -148 95.5t-173 8.5q-28 -6 -52 9.5t-30 43.5t9.5 51.5t43.5 29.5q123 26 244 -11.5t208 -134.5z" /> -<glyph unicode="" d="M1133 -34q-171 -94 -368 -94q-196 0 -367 94q138 87 235.5 211t131.5 268q35 -144 132.5 -268t235.5 -211zM638 1394v-485q0 -252 -126.5 -459.5t-330.5 -306.5q-181 215 -181 495q0 187 83.5 349.5t229.5 269.5t325 137zM1536 638q0 -280 -181 -495 q-204 99 -330.5 306.5t-126.5 459.5v485q179 -30 325 -137t229.5 -269.5t83.5 -349.5z" /> -<glyph unicode="" horiz-adv-x="1408" d="M1402 433q-32 -80 -76 -138t-91 -88.5t-99 -46.5t-101.5 -14.5t-96.5 8.5t-86.5 22t-69.5 27.5t-46 22.5l-17 10q-113 -228 -289.5 -359.5t-384.5 -132.5q-19 0 -32 13t-13 32t13 31.5t32 12.5q173 1 322.5 107.5t251.5 294.5q-36 -14 -72 -23t-83 -13t-91 2.5t-93 28.5 t-92 59t-84.5 100t-74.5 146q114 47 214 57t167.5 -7.5t124.5 -56.5t88.5 -77t56.5 -82q53 131 79 291q-7 -1 -18 -2.5t-46.5 -2.5t-69.5 0.5t-81.5 10t-88.5 23t-84 42.5t-75 65t-54.5 94.5t-28.5 127.5q70 28 133.5 36.5t112.5 -1t92 -30t73.5 -50t56 -61t42 -63t27.5 -56 t16 -39.5l4 -16q12 122 12 195q-8 6 -21.5 16t-49 44.5t-63.5 71.5t-54 93t-33 112.5t12 127t70 138.5q73 -25 127.5 -61.5t84.5 -76.5t48 -85t20.5 -89t-0.5 -85.5t-13 -76.5t-19 -62t-17 -42l-7 -15q1 -5 1 -50.5t-1 -71.5q3 7 10 18.5t30.5 43t50.5 58t71 55.5t91.5 44.5 t112 14.5t132.5 -24q-2 -78 -21.5 -141.5t-50 -104.5t-69.5 -71.5t-81.5 -45.5t-84.5 -24t-80 -9.5t-67.5 1t-46.5 4.5l-17 3q-23 -147 -73 -283q6 7 18 18.5t49.5 41t77.5 52.5t99.5 42t117.5 20t129 -23.5t137 -77.5z" /> -<glyph unicode="" horiz-adv-x="1280" d="M1259 283v-66q0 -85 -57.5 -144.5t-138.5 -59.5h-57l-260 -269v269h-529q-81 0 -138.5 59.5t-57.5 144.5v66h1238zM1259 609v-255h-1238v255h1238zM1259 937v-255h-1238v255h1238zM1259 1077v-67h-1238v67q0 84 57.5 143.5t138.5 59.5h846q81 0 138.5 -59.5t57.5 -143.5z " /> -<glyph unicode="" d="M1152 640q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192h-352q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h352v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198 t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" d="M1152 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-352v-192q0 -14 -9 -23t-23 -9q-12 0 -24 10l-319 319q-9 9 -9 23t9 23l320 320q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5v-192h352q13 0 22.5 -9.5t9.5 -22.5zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198 t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" d="M1024 960v-640q0 -26 -19 -45t-45 -19q-20 0 -37 12l-448 320q-27 19 -27 52t27 52l448 320q17 12 37 12q26 0 45 -19t19 -45zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5z M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" d="M1024 640q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5 t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" horiz-adv-x="1664" d="M1023 349l102 -204q-58 -179 -210 -290t-339 -111q-156 0 -288.5 77.5t-210 210t-77.5 288.5q0 181 104.5 330t274.5 211l17 -131q-122 -54 -195 -165.5t-73 -244.5q0 -185 131.5 -316.5t316.5 -131.5q126 0 232.5 65t165 175.5t49.5 236.5zM1571 249l58 -114l-256 -128 q-13 -7 -29 -7q-40 0 -57 35l-239 477h-472q-24 0 -42.5 16.5t-21.5 40.5l-96 779q-2 16 6 42q14 51 57 82.5t97 31.5q66 0 113 -47t47 -113q0 -69 -52 -117.5t-120 -41.5l37 -289h423v-128h-407l16 -128h455q40 0 57 -35l228 -455z" /> -<glyph unicode="" d="M1254 899q16 85 -21 132q-52 65 -187 45q-17 -3 -41 -12.5t-57.5 -30.5t-64.5 -48.5t-59.5 -70t-44.5 -91.5q80 7 113.5 -16t26.5 -99q-5 -52 -52 -143q-43 -78 -71 -99q-44 -32 -87 14q-23 24 -37.5 64.5t-19 73t-10 84t-8.5 71.5q-23 129 -34 164q-12 37 -35.5 69 t-50.5 40q-57 16 -127 -25q-54 -32 -136.5 -106t-122.5 -102v-7q16 -8 25.5 -26t21.5 -20q21 -3 54.5 8.5t58 10.5t41.5 -30q11 -18 18.5 -38.5t15 -48t12.5 -40.5q17 -46 53 -187q36 -146 57 -197q42 -99 103 -125q43 -12 85 -1.5t76 31.5q131 77 250 237 q104 139 172.5 292.5t82.5 226.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" horiz-adv-x="1152" d="M1152 704q0 -191 -94.5 -353t-256.5 -256.5t-353 -94.5h-160q-14 0 -23 9t-9 23v611l-215 -66q-3 -1 -9 -1q-10 0 -19 6q-13 10 -13 26v128q0 23 23 31l233 71v93l-215 -66q-3 -1 -9 -1q-10 0 -19 6q-13 10 -13 26v128q0 23 23 31l233 71v250q0 14 9 23t23 9h160 q14 0 23 -9t9 -23v-181l375 116q15 5 28 -5t13 -26v-128q0 -23 -23 -31l-393 -121v-93l375 116q15 5 28 -5t13 -26v-128q0 -23 -23 -31l-393 -121v-487q188 13 318 151t130 328q0 14 9 23t23 9h160q14 0 23 -9t9 -23z" /> -<glyph unicode="" horiz-adv-x="1408" d="M1152 736v-64q0 -14 -9 -23t-23 -9h-352v-352q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v352h-352q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h352v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-352h352q14 0 23 -9t9 -23zM1280 288v832q0 66 -47 113t-113 47h-832 q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113zM1408 1120v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" horiz-adv-x="2176" d="M620 416q-110 -64 -268 -64h-128v64h-64q-13 0 -22.5 23.5t-9.5 56.5q0 24 7 49q-58 2 -96.5 10.5t-38.5 20.5t38.5 20.5t96.5 10.5q-7 25 -7 49q0 33 9.5 56.5t22.5 23.5h64v64h128q158 0 268 -64h1113q42 -7 106.5 -18t80.5 -14q89 -15 150 -40.5t83.5 -47.5t22.5 -40 t-22.5 -40t-83.5 -47.5t-150 -40.5q-16 -3 -80.5 -14t-106.5 -18h-1113zM1739 668q53 -36 53 -92t-53 -92l81 -30q68 48 68 122t-68 122zM625 400h1015q-217 -38 -456 -80q-57 0 -113 -24t-83 -48l-28 -24l-288 -288q-26 -26 -70.5 -45t-89.5 -19h-96l-93 464h29 q157 0 273 64zM352 816h-29l93 464h96q46 0 90 -19t70 -45l288 -288q4 -4 11 -10.5t30.5 -23t48.5 -29t61.5 -23t72.5 -10.5l456 -80h-1015q-116 64 -273 64z" /> -<glyph unicode="" horiz-adv-x="1664" d="M1519 760q62 0 103.5 -40.5t41.5 -101.5q0 -97 -93 -130l-172 -59l56 -167q7 -21 7 -47q0 -59 -42 -102t-101 -43q-47 0 -85.5 27t-53.5 72l-55 165l-310 -106l55 -164q8 -24 8 -47q0 -59 -42 -102t-102 -43q-47 0 -85 27t-53 72l-55 163l-153 -53q-29 -9 -50 -9 q-61 0 -101.5 40t-40.5 101q0 47 27.5 85t71.5 53l156 53l-105 313l-156 -54q-26 -8 -48 -8q-60 0 -101 40.5t-41 100.5q0 47 27.5 85t71.5 53l157 53l-53 159q-8 24 -8 47q0 60 42 102.5t102 42.5q47 0 85 -27t53 -72l54 -160l310 105l-54 160q-8 24 -8 47q0 59 42.5 102 t101.5 43q47 0 85.5 -27.5t53.5 -71.5l53 -161l162 55q21 6 43 6q60 0 102.5 -39.5t42.5 -98.5q0 -45 -30 -81.5t-74 -51.5l-157 -54l105 -316l164 56q24 8 46 8zM725 498l310 105l-105 315l-310 -107z" /> -<glyph unicode="" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM1280 352v436q-31 -35 -64 -55q-34 -22 -132.5 -85t-151.5 -99q-98 -69 -164 -69v0v0q-66 0 -164 69 q-46 32 -141.5 92.5t-142.5 92.5q-12 8 -33 27t-31 27v-436q0 -40 28 -68t68 -28h832q40 0 68 28t28 68zM1280 925q0 41 -27.5 70t-68.5 29h-832q-40 0 -68 -28t-28 -68q0 -37 30.5 -76.5t67.5 -64.5q47 -32 137.5 -89t129.5 -83q3 -2 17 -11.5t21 -14t21 -13t23.5 -13 t21.5 -9.5t22.5 -7.5t20.5 -2.5t20.5 2.5t22.5 7.5t21.5 9.5t23.5 13t21 13t21 14t17 11.5l267 174q35 23 66.5 62.5t31.5 73.5z" /> -<glyph unicode="" horiz-adv-x="1792" d="M127 640q0 163 67 313l367 -1005q-196 95 -315 281t-119 411zM1415 679q0 -19 -2.5 -38.5t-10 -49.5t-11.5 -44t-17.5 -59t-17.5 -58l-76 -256l-278 826q46 3 88 8q19 2 26 18.5t-2.5 31t-28.5 13.5l-205 -10q-75 1 -202 10q-12 1 -20.5 -5t-11.5 -15t-1.5 -18.5t9 -16.5 t19.5 -8l80 -8l120 -328l-168 -504l-280 832q46 3 88 8q19 2 26 18.5t-2.5 31t-28.5 13.5l-205 -10q-7 0 -23 0.5t-26 0.5q105 160 274.5 253.5t367.5 93.5q147 0 280.5 -53t238.5 -149h-10q-55 0 -92 -40.5t-37 -95.5q0 -12 2 -24t4 -21.5t8 -23t9 -21t12 -22.5t12.5 -21 t14.5 -24t14 -23q63 -107 63 -212zM909 573l237 -647q1 -6 5 -11q-126 -44 -255 -44q-112 0 -217 32zM1570 1009q95 -174 95 -369q0 -209 -104 -385.5t-279 -278.5l235 678q59 169 59 276q0 42 -6 79zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286 t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM896 -215q173 0 331.5 68t273 182.5t182.5 273t68 331.5t-68 331.5t-182.5 273t-273 182.5t-331.5 68t-331.5 -68t-273 -182.5t-182.5 -273t-68 -331.5t68 -331.5t182.5 -273 t273 -182.5t331.5 -68z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1086 1536v-1536l-272 -128q-228 20 -414 102t-293 208.5t-107 272.5q0 140 100.5 263.5t275 205.5t391.5 108v-172q-217 -38 -356.5 -150t-139.5 -255q0 -152 154.5 -267t388.5 -145v1360zM1755 954l37 -390l-525 114l147 83q-119 70 -280 99v172q277 -33 481 -157z" /> -<glyph unicode="" horiz-adv-x="2048" d="M960 1536l960 -384v-128h-128q0 -26 -20.5 -45t-48.5 -19h-1526q-28 0 -48.5 19t-20.5 45h-128v128zM256 896h256v-768h128v768h256v-768h128v768h256v-768h128v768h256v-768h59q28 0 48.5 -19t20.5 -45v-64h-1664v64q0 26 20.5 45t48.5 19h59v768zM1851 -64 q28 0 48.5 -19t20.5 -45v-128h-1920v128q0 26 20.5 45t48.5 19h1782z" /> -<glyph unicode="" horiz-adv-x="2304" d="M1774 700l18 -316q4 -69 -82 -128t-235 -93.5t-323 -34.5t-323 34.5t-235 93.5t-82 128l18 316l574 -181q22 -7 48 -7t48 7zM2304 1024q0 -23 -22 -31l-1120 -352q-4 -1 -10 -1t-10 1l-652 206q-43 -34 -71 -111.5t-34 -178.5q63 -36 63 -109q0 -69 -58 -107l58 -433 q2 -14 -8 -25q-9 -11 -24 -11h-192q-15 0 -24 11q-10 11 -8 25l58 433q-58 38 -58 107q0 73 65 111q11 207 98 330l-333 104q-22 8 -22 31t22 31l1120 352q4 1 10 1t10 -1l1120 -352q22 -8 22 -31z" /> -<glyph unicode="" d="M859 579l13 -707q-62 11 -105 11q-41 0 -105 -11l13 707q-40 69 -168.5 295.5t-216.5 374.5t-181 287q58 -15 108 -15q43 0 111 15q63 -111 133.5 -229.5t167 -276.5t138.5 -227q37 61 109.5 177.5t117.5 190t105 176t107 189.5q54 -14 107 -14q56 0 114 14v0 q-28 -39 -60 -88.5t-49.5 -78.5t-56.5 -96t-49 -84q-146 -248 -353 -610z" /> -<glyph unicode="" horiz-adv-x="1280" d="M981 197q0 25 -7 49t-14.5 42t-27 41.5t-29.5 35t-38.5 34.5t-36.5 29t-41.5 30t-36.5 26q-16 2 -49 2q-53 0 -104.5 -7t-107 -25t-97 -46t-68.5 -74.5t-27 -105.5q0 -56 23.5 -102t61 -75.5t87 -50t100 -29t101.5 -8.5q58 0 111.5 13t99 39t73 73t27.5 109zM864 1055 q0 59 -17 125.5t-48 129t-84 103.5t-117 41q-42 0 -82.5 -19.5t-66.5 -52.5q-46 -59 -46 -160q0 -46 10 -97.5t31.5 -103t52 -92.5t75 -67t96.5 -26q37 0 77.5 16.5t65.5 43.5q53 56 53 159zM752 1536h417l-137 -88h-132q75 -63 113 -133t38 -160q0 -72 -24.5 -129.5 t-59.5 -93t-69.5 -65t-59 -61.5t-24.5 -66q0 -36 32 -70.5t77 -68t90.5 -73.5t77.5 -104t32 -142q0 -91 -49 -173q-71 -122 -209.5 -179.5t-298.5 -57.5q-132 0 -246.5 41.5t-172.5 137.5q-36 59 -36 131q0 81 44.5 150t118.5 115q131 82 404 100q-32 41 -47.5 73.5 t-15.5 73.5q0 40 21 85q-46 -4 -68 -4q-148 0 -249.5 96.5t-101.5 244.5q0 82 36 159t99 131q76 66 182 98t218 32z" /> -<glyph unicode="" horiz-adv-x="2304" d="M1509 107q0 -14 -12 -29q-52 -59 -147.5 -83t-196.5 -24q-252 0 -346 107q-12 15 -12 29q0 17 12 29.5t29 12.5q15 0 30 -12q58 -49 125.5 -66t159.5 -17t160 17t127 66q15 12 30 12q17 0 29 -12.5t12 -29.5zM978 498q0 -61 -43 -104t-104 -43q-60 0 -104.5 43.5 t-44.5 103.5q0 61 44 105t105 44t104 -44t43 -105zM1622 498q0 -61 -43 -104t-104 -43q-60 0 -104.5 43.5t-44.5 103.5q0 61 44 105t105 44t104 -44t43 -105zM415 793q-39 27 -88 27q-66 0 -113 -47t-47 -113q0 -72 54 -121q53 141 194 254zM2020 382q0 222 -249 387 q-128 85 -291.5 126.5t-331.5 41.5t-331.5 -41.5t-292.5 -126.5q-249 -165 -249 -387t249 -387q129 -85 292.5 -126.5t331.5 -41.5t331.5 41.5t291.5 126.5q249 165 249 387zM2137 660q0 66 -47 113t-113 47q-50 0 -93 -30q140 -114 192 -256q61 48 61 126zM1993 1335 q0 49 -34.5 83.5t-82.5 34.5q-49 0 -83.5 -34.5t-34.5 -83.5q0 -48 34.5 -82.5t83.5 -34.5q48 0 82.5 34.5t34.5 82.5zM2220 660q0 -65 -33 -122t-89 -90q5 -35 5 -66q0 -139 -79 -255.5t-208 -201.5q-140 -92 -313.5 -136.5t-354.5 -44.5t-355 44.5t-314 136.5 q-129 85 -208 201.5t-79 255.5q0 36 6 71q-53 33 -83.5 88.5t-30.5 118.5q0 100 71 171.5t172 71.5q91 0 159 -60q265 170 638 177l144 456q10 29 40 29q24 0 384 -90q24 55 74 88t110 33q82 0 141 -59t59 -142t-59 -141.5t-141 -58.5q-83 0 -141.5 58.5t-59.5 140.5 l-339 80l-125 -395q349 -15 603 -179q71 63 163 63q101 0 172 -71.5t71 -171.5z" /> -<glyph unicode="" d="M950 393q7 7 17.5 7t17.5 -7t7 -18t-7 -18q-65 -64 -208 -64h-1h-1q-143 0 -207 64q-8 7 -8 18t8 18q7 7 17.5 7t17.5 -7q49 -51 172 -51h1h1q122 0 173 51zM671 613q0 -37 -26 -64t-63 -27t-63 27t-26 64t26 63t63 26t63 -26t26 -63zM1214 1049q-29 0 -50 21t-21 50 q0 30 21 51t50 21q30 0 51 -21t21 -51q0 -29 -21 -50t-51 -21zM1216 1408q132 0 226 -94t94 -227v-894q0 -133 -94 -227t-226 -94h-896q-132 0 -226 94t-94 227v894q0 133 94 227t226 94h896zM1321 596q35 14 57 45.5t22 70.5q0 51 -36 87.5t-87 36.5q-60 0 -98 -48 q-151 107 -375 115l83 265l206 -49q1 -50 36.5 -85t84.5 -35q50 0 86 35.5t36 85.5t-36 86t-86 36q-36 0 -66 -20.5t-45 -53.5l-227 54q-9 2 -17.5 -2.5t-11.5 -14.5l-95 -302q-224 -4 -381 -113q-36 43 -93 43q-51 0 -87 -36.5t-36 -87.5q0 -37 19.5 -67.5t52.5 -45.5 q-7 -25 -7 -54q0 -98 74 -181.5t201.5 -132t278.5 -48.5q150 0 277.5 48.5t201.5 132t74 181.5q0 27 -6 54zM971 702q37 0 63 -26t26 -63t-26 -64t-63 -27t-63 27t-26 64t26 63t63 26z" /> -<glyph unicode="" d="M866 697l90 27v62q0 79 -58 135t-138 56t-138 -55.5t-58 -134.5v-283q0 -20 -14 -33.5t-33 -13.5t-32.5 13.5t-13.5 33.5v120h-151v-122q0 -82 57.5 -139t139.5 -57q81 0 138.5 56.5t57.5 136.5v280q0 19 13.5 33t33.5 14q19 0 32.5 -14t13.5 -33v-54zM1199 502v122h-150 v-126q0 -20 -13.5 -33.5t-33.5 -13.5q-19 0 -32.5 14t-13.5 33v123l-90 -26l-60 28v-123q0 -80 58 -137t139 -57t138.5 57t57.5 139zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103 t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" horiz-adv-x="1920" d="M1062 824v118q0 42 -30 72t-72 30t-72 -30t-30 -72v-612q0 -175 -126 -299t-303 -124q-178 0 -303.5 125.5t-125.5 303.5v266h328v-262q0 -43 30 -72.5t72 -29.5t72 29.5t30 72.5v620q0 171 126.5 292t301.5 121q176 0 302 -122t126 -294v-136l-195 -58zM1592 602h328 v-266q0 -178 -125.5 -303.5t-303.5 -125.5q-177 0 -303 124.5t-126 300.5v268l131 -61l195 58v-270q0 -42 30 -71.5t72 -29.5t72 29.5t30 71.5v275z" /> -<glyph unicode="" d="M1472 160v480h-704v704h-480q-93 0 -158.5 -65.5t-65.5 -158.5v-480h704v-704h480q93 0 158.5 65.5t65.5 158.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5 t84.5 -203.5z" /> -<glyph unicode="" horiz-adv-x="2048" d="M328 1254h204v-983h-532v697h328v286zM328 435v369h-123v-369h123zM614 968v-697h205v697h-205zM614 1254v-204h205v204h-205zM901 968h533v-942h-533v163h328v82h-328v697zM1229 435v369h-123v-369h123zM1516 968h532v-942h-532v163h327v82h-327v697zM1843 435v369h-123 v-369h123z" /> -<glyph unicode="" d="M1046 516q0 -64 -38 -109t-91 -45q-43 0 -70 15v277q28 17 70 17q53 0 91 -45.5t38 -109.5zM703 944q0 -64 -38 -109.5t-91 -45.5q-43 0 -70 15v277q28 17 70 17q53 0 91 -45t38 -109zM1265 513q0 134 -88 229t-213 95q-20 0 -39 -3q-23 -78 -78 -136q-87 -95 -211 -101 v-636l211 41v206q51 -19 117 -19q125 0 213 95t88 229zM922 940q0 134 -88.5 229t-213.5 95q-74 0 -141 -36h-186v-840l211 41v206q55 -19 116 -19q125 0 213.5 95t88.5 229zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960 q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" horiz-adv-x="2038" d="M1222 607q75 3 143.5 -20.5t118 -58.5t101 -94.5t84 -108t75.5 -120.5q33 -56 78.5 -109t75.5 -80.5t99 -88.5q-48 -30 -108.5 -57.5t-138.5 -59t-114 -47.5q-44 37 -74 115t-43.5 164.5t-33 180.5t-42.5 168.5t-72.5 123t-122.5 48.5l-10 -2l-6 -4q4 -5 13 -14 q6 -5 28 -23.5t25.5 -22t19 -18t18 -20.5t11.5 -21t10.5 -27.5t4.5 -31t4 -40.5l1 -33q1 -26 -2.5 -57.5t-7.5 -52t-12.5 -58.5t-11.5 -53q-35 1 -101 -9.5t-98 -10.5q-39 0 -72 10q-2 16 -2 47q0 74 3 96q2 13 31.5 41.5t57 59t26.5 51.5q-24 2 -43 -24 q-36 -53 -111.5 -99.5t-136.5 -46.5q-25 0 -75.5 63t-106.5 139.5t-84 96.5q-6 4 -27 30q-482 -112 -513 -112q-16 0 -28 11t-12 27q0 15 8.5 26.5t22.5 14.5l486 106q-8 14 -8 25t5.5 17.5t16 11.5t20 7t23 4.5t18.5 4.5q4 1 15.5 7.5t17.5 6.5q15 0 28 -16t20 -33 q163 37 172 37q17 0 29.5 -11t12.5 -28q0 -15 -8.5 -26t-23.5 -14l-182 -40l-1 -16q-1 -26 81.5 -117.5t104.5 -91.5q47 0 119 80t72 129q0 36 -23.5 53t-51 18.5t-51 11.5t-23.5 34q0 16 10 34l-68 19q43 44 43 117q0 26 -5 58q82 16 144 16q44 0 71.5 -1.5t48.5 -8.5 t31 -13.5t20.5 -24.5t15.5 -33.5t17 -47.5t24 -60l50 25q-3 -40 -23 -60t-42.5 -21t-40 -6.5t-16.5 -20.5zM1282 842q-5 5 -13.5 15.5t-12 14.5t-10.5 11.5t-10 10.5l-8 8t-8.5 7.5t-8 5t-8.5 4.5q-7 3 -14.5 5t-20.5 2.5t-22 0.5h-32.5h-37.5q-126 0 -217 -43 q16 30 36 46.5t54 29.5t65.5 36t46 36.5t50 55t43.5 50.5q12 -9 28 -31.5t32 -36.5t38 -13l12 1v-76l22 -1q247 95 371 190q28 21 50 39t42.5 37.5t33 31t29.5 34t24 31t24.5 37t23 38t27 47.5t29.5 53l7 9q-2 -53 -43 -139q-79 -165 -205 -264t-306 -142q-14 -3 -42 -7.5 t-50 -9.5t-39 -14q3 -19 24.5 -46t21.5 -34q0 -11 -26 -30zM1061 -79q39 26 131.5 47.5t146.5 21.5q9 0 22.5 -15.5t28 -42.5t26 -50t24 -51t14.5 -33q-121 -45 -244 -45q-61 0 -125 11zM822 568l48 12l109 -177l-73 -48zM1323 51q3 -15 3 -16q0 -7 -17.5 -14.5t-46 -13 t-54 -9.5t-53.5 -7.5t-32 -4.5l-7 43q21 2 60.5 8.5t72 10t60.5 3.5h14zM866 679l-96 -20l-6 17q10 1 32.5 7t34.5 6q19 0 35 -10zM1061 45h31l10 -83l-41 -12v95zM1950 1535v1v-1zM1950 1535l-1 -5l-2 -2l1 3zM1950 1535l1 1z" /> -<glyph unicode="" d="M1167 -50q-5 19 -24 5q-30 -22 -87 -39t-131 -17q-129 0 -193 49q-5 4 -13 4q-11 0 -26 -12q-7 -6 -7.5 -16t7.5 -20q34 -32 87.5 -46t102.5 -12.5t99 4.5q41 4 84.5 20.5t65 30t28.5 20.5q12 12 7 29zM1128 65q-19 47 -39 61q-23 15 -76 15q-47 0 -71 -10 q-29 -12 -78 -56q-26 -24 -12 -44q9 -8 17.5 -4.5t31.5 23.5q3 2 10.5 8.5t10.5 8.5t10 7t11.5 7t12.5 5t15 4.5t16.5 2.5t20.5 1q27 0 44.5 -7.5t23 -14.5t13.5 -22q10 -17 12.5 -20t12.5 1q23 12 14 34zM1483 346q0 22 -5 44.5t-16.5 45t-34 36.5t-52.5 14 q-33 0 -97 -41.5t-129 -83.5t-101 -42q-27 -1 -63.5 19t-76 49t-83.5 58t-100 49t-111 19q-115 -1 -197 -78.5t-84 -178.5q-2 -112 74 -164q29 -20 62.5 -28.5t103.5 -8.5q57 0 132 32.5t134 71t120 70.5t93 31q26 -1 65 -31.5t71.5 -67t68 -67.5t55.5 -32q35 -3 58.5 14 t55.5 63q28 41 42.5 101t14.5 106zM1536 506q0 -164 -62 -304.5t-166 -236t-242.5 -149.5t-290.5 -54t-293 57.5t-247.5 157t-170.5 241.5t-64 302q0 89 19.5 172.5t49 145.5t70.5 118.5t78.5 94t78.5 69.5t64.5 46.5t42.5 24.5q14 8 51 26.5t54.5 28.5t48 30t60.5 44 q36 28 58 72.5t30 125.5q129 -155 186 -193q44 -29 130 -68t129 -66q21 -13 39 -25t60.5 -46.5t76 -70.5t75 -95t69 -122t47 -148.5t19.5 -177.5z" /> -<glyph unicode="" d="M1070 463l-160 -160l-151 -152l-30 -30q-65 -64 -151.5 -87t-171.5 -2q-16 -70 -72 -115t-129 -45q-85 0 -145 60.5t-60 145.5q0 72 44.5 128t113.5 72q-22 86 1 173t88 152l12 12l151 -152l-11 -11q-37 -37 -37 -89t37 -90q37 -37 89 -37t89 37l30 30l151 152l161 160z M729 1145l12 -12l-152 -152l-12 12q-37 37 -89 37t-89 -37t-37 -89.5t37 -89.5l29 -29l152 -152l160 -160l-151 -152l-161 160l-151 152l-30 30q-68 67 -90 159.5t5 179.5q-70 15 -115 71t-45 129q0 85 60 145.5t145 60.5q76 0 133.5 -49t69.5 -123q84 20 169.5 -3.5 t149.5 -87.5zM1536 78q0 -85 -60 -145.5t-145 -60.5q-74 0 -131 47t-71 118q-86 -28 -179.5 -6t-161.5 90l-11 12l151 152l12 -12q37 -37 89 -37t89 37t37 89t-37 89l-30 30l-152 152l-160 160l152 152l160 -160l152 -152l29 -30q64 -64 87.5 -150.5t2.5 -171.5 q76 -11 126.5 -68.5t50.5 -134.5zM1534 1202q0 -77 -51 -135t-127 -69q26 -85 3 -176.5t-90 -158.5l-12 -12l-151 152l12 12q37 37 37 89t-37 89t-89 37t-89 -37l-30 -30l-152 -152l-160 -160l-152 152l161 160l152 152l29 30q67 67 159 89.5t178 -3.5q11 75 68.5 126 t135.5 51q85 0 145 -60.5t60 -145.5z" /> -<glyph unicode="" d="M654 458q-1 -3 -12.5 0.5t-31.5 11.5l-20 9q-44 20 -87 49q-7 5 -41 31.5t-38 28.5q-67 -103 -134 -181q-81 -95 -105 -110q-4 -2 -19.5 -4t-18.5 0q6 4 82 92q21 24 85.5 115t78.5 118q17 30 51 98.5t36 77.5q-8 1 -110 -33q-8 -2 -27.5 -7.5t-34.5 -9.5t-17 -5 q-2 -2 -2 -10.5t-1 -9.5q-5 -10 -31 -15q-23 -7 -47 0q-18 4 -28 21q-4 6 -5 23q6 2 24.5 5t29.5 6q58 16 105 32q100 35 102 35q10 2 43 19.5t44 21.5q9 3 21.5 8t14.5 5.5t6 -0.5q2 -12 -1 -33q0 -2 -12.5 -27t-26.5 -53.5t-17 -33.5q-25 -50 -77 -131l64 -28 q12 -6 74.5 -32t67.5 -28q4 -1 10.5 -25.5t4.5 -30.5zM449 944q3 -15 -4 -28q-12 -23 -50 -38q-30 -12 -60 -12q-26 3 -49 26q-14 15 -18 41l1 3q3 -3 19.5 -5t26.5 0t58 16q36 12 55 14q17 0 21 -17zM1147 815l63 -227l-139 42zM39 15l694 232v1032l-694 -233v-1031z M1280 332l102 -31l-181 657l-100 31l-216 -536l102 -31l45 110l211 -65zM777 1294l573 -184v380zM1088 -29l158 -13l-54 -160l-40 66q-130 -83 -276 -108q-58 -12 -91 -12h-84q-79 0 -199.5 39t-183.5 85q-8 7 -8 16q0 8 5 13.5t13 5.5q4 0 18 -7.5t30.5 -16.5t20.5 -11 q73 -37 159.5 -61.5t157.5 -24.5q95 0 167 14.5t157 50.5q15 7 30.5 15.5t34 19t28.5 16.5zM1536 1050v-1079l-774 246q-14 -6 -375 -127.5t-368 -121.5q-13 0 -18 13q0 1 -1 3v1078q3 9 4 10q5 6 20 11q106 35 149 50v384l558 -198q2 0 160.5 55t316 108.5t161.5 53.5 q20 0 20 -21v-418z" /> -<glyph unicode="" horiz-adv-x="1792" d="M288 1152q66 0 113 -47t47 -113v-1088q0 -66 -47 -113t-113 -47h-128q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h128zM1664 989q58 -34 93 -93t35 -128v-768q0 -106 -75 -181t-181 -75h-864q-66 0 -113 47t-47 113v1536q0 40 28 68t68 28h672q40 0 88 -20t76 -48 l152 -152q28 -28 48 -76t20 -88v-163zM928 0v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM928 256v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM928 512v128q0 14 -9 23 t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1184 0v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1184 256v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128 q14 0 23 9t9 23zM1184 512v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1440 0v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1440 256v128q0 14 -9 23t-23 9h-128 q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1440 512v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1536 896v256h-160q-40 0 -68 28t-28 68v160h-640v-512h896z" /> -<glyph unicode="" d="M1344 1536q26 0 45 -19t19 -45v-1664q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1664q0 26 19 45t45 19h1280zM512 1248v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM512 992v-64q0 -14 9 -23t23 -9h64q14 0 23 9 t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM512 736v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM512 480v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM384 160v64 q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM384 416v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM384 672v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64 q14 0 23 9t9 23zM384 928v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM384 1184v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 -96v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9 t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM896 416v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 672v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 928v64 q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 1184v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 160v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64 q14 0 23 9t9 23zM1152 416v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 672v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 928v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9 t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 1184v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23z" /> -<glyph unicode="" horiz-adv-x="1280" d="M1188 988l-292 -292v-824q0 -46 -33 -79t-79 -33t-79 33t-33 79v384h-64v-384q0 -46 -33 -79t-79 -33t-79 33t-33 79v824l-292 292q-28 28 -28 68t28 68t68 28t68 -28l228 -228h368l228 228q28 28 68 28t68 -28t28 -68t-28 -68zM864 1152q0 -93 -65.5 -158.5 t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" /> -<glyph unicode="" horiz-adv-x="1664" d="M780 1064q0 -60 -19 -113.5t-63 -92.5t-105 -39q-76 0 -138 57.5t-92 135.5t-30 151q0 60 19 113.5t63 92.5t105 39q77 0 138.5 -57.5t91.5 -135t30 -151.5zM438 581q0 -80 -42 -139t-119 -59q-76 0 -141.5 55.5t-100.5 133.5t-35 152q0 80 42 139.5t119 59.5 q76 0 141.5 -55.5t100.5 -134t35 -152.5zM832 608q118 0 255 -97.5t229 -237t92 -254.5q0 -46 -17 -76.5t-48.5 -45t-64.5 -20t-76 -5.5q-68 0 -187.5 45t-182.5 45q-66 0 -192.5 -44.5t-200.5 -44.5q-183 0 -183 146q0 86 56 191.5t139.5 192.5t187.5 146t193 59zM1071 819 q-61 0 -105 39t-63 92.5t-19 113.5q0 74 30 151.5t91.5 135t138.5 57.5q61 0 105 -39t63 -92.5t19 -113.5q0 -73 -30 -151t-92 -135.5t-138 -57.5zM1503 923q77 0 119 -59.5t42 -139.5q0 -74 -35 -152t-100.5 -133.5t-141.5 -55.5q-77 0 -119 59t-42 139q0 74 35 152.5 t100.5 134t141.5 55.5z" /> -<glyph unicode="" horiz-adv-x="768" d="M704 1008q0 -145 -57 -243.5t-152 -135.5l45 -821q2 -26 -16 -45t-44 -19h-192q-26 0 -44 19t-16 45l45 821q-95 37 -152 135.5t-57 243.5q0 128 42.5 249.5t117.5 200t160 78.5t160 -78.5t117.5 -200t42.5 -249.5z" /> -<glyph unicode="" horiz-adv-x="1792" d="M896 -93l640 349v636l-640 -233v-752zM832 772l698 254l-698 254l-698 -254zM1664 1024v-768q0 -35 -18 -65t-49 -47l-704 -384q-28 -16 -61 -16t-61 16l-704 384q-31 17 -49 47t-18 65v768q0 40 23 73t61 47l704 256q22 8 44 8t44 -8l704 -256q38 -14 61 -47t23 -73z " /> -<glyph unicode="" horiz-adv-x="2304" d="M640 -96l384 192v314l-384 -164v-342zM576 358l404 173l-404 173l-404 -173zM1664 -96l384 192v314l-384 -164v-342zM1600 358l404 173l-404 173l-404 -173zM1152 651l384 165v266l-384 -164v-267zM1088 1030l441 189l-441 189l-441 -189zM2176 512v-416q0 -36 -19 -67 t-52 -47l-448 -224q-25 -14 -57 -14t-57 14l-448 224q-5 2 -7 4q-2 -2 -7 -4l-448 -224q-25 -14 -57 -14t-57 14l-448 224q-33 16 -52 47t-19 67v416q0 38 21.5 70t56.5 48l434 186v400q0 38 21.5 70t56.5 48l448 192q23 10 50 10t50 -10l448 -192q35 -16 56.5 -48t21.5 -70 v-400l434 -186q36 -16 57 -48t21 -70z" /> -<glyph unicode="" horiz-adv-x="2048" d="M1848 1197h-511v-124h511v124zM1596 771q-90 0 -146 -52.5t-62 -142.5h408q-18 195 -200 195zM1612 186q63 0 122 32t76 87h221q-100 -307 -427 -307q-214 0 -340.5 132t-126.5 347q0 208 130.5 345.5t336.5 137.5q138 0 240.5 -68t153 -179t50.5 -248q0 -17 -2 -47h-658 q0 -111 57.5 -171.5t166.5 -60.5zM277 236h296q205 0 205 167q0 180 -199 180h-302v-347zM277 773h281q78 0 123.5 36.5t45.5 113.5q0 144 -190 144h-260v-294zM0 1282h594q87 0 155 -14t126.5 -47.5t90 -96.5t31.5 -154q0 -181 -172 -263q114 -32 172 -115t58 -204 q0 -75 -24.5 -136.5t-66 -103.5t-98.5 -71t-121 -42t-134 -13h-611v1260z" /> -<glyph unicode="" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM499 1041h-371v-787h382q117 0 197 57.5t80 170.5q0 158 -143 200q107 52 107 164q0 57 -19.5 96.5 t-56.5 60.5t-79 29.5t-97 8.5zM477 723h-176v184h163q119 0 119 -90q0 -94 -106 -94zM486 388h-185v217h189q124 0 124 -113q0 -104 -128 -104zM1136 356q-68 0 -104 38t-36 107h411q1 10 1 30q0 132 -74.5 220.5t-203.5 88.5q-128 0 -210 -86t-82 -216q0 -135 79 -217 t213 -82q205 0 267 191h-138q-11 -34 -47.5 -54t-75.5 -20zM1126 722q113 0 124 -122h-254q4 56 39 89t91 33zM964 988h319v-77h-319v77z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1582 954q0 -101 -71.5 -172.5t-172.5 -71.5t-172.5 71.5t-71.5 172.5t71.5 172.5t172.5 71.5t172.5 -71.5t71.5 -172.5zM812 212q0 104 -73 177t-177 73q-27 0 -54 -6l104 -42q77 -31 109.5 -106.5t1.5 -151.5q-31 -77 -107 -109t-152 -1q-21 8 -62 24.5t-61 24.5 q32 -60 91 -96.5t130 -36.5q104 0 177 73t73 177zM1642 953q0 126 -89.5 215.5t-215.5 89.5q-127 0 -216.5 -89.5t-89.5 -215.5q0 -127 89.5 -216t216.5 -89q126 0 215.5 89t89.5 216zM1792 953q0 -189 -133.5 -322t-321.5 -133l-437 -319q-12 -129 -109 -218t-229 -89 q-121 0 -214 76t-118 192l-230 92v429l389 -157q79 48 173 48q13 0 35 -2l284 407q2 187 135.5 319t320.5 132q188 0 321.5 -133.5t133.5 -321.5z" /> -<glyph unicode="" d="M1242 889q0 80 -57 136.5t-137 56.5t-136.5 -57t-56.5 -136q0 -80 56.5 -136.5t136.5 -56.5t137 56.5t57 136.5zM632 301q0 -83 -58 -140.5t-140 -57.5q-56 0 -103 29t-72 77q52 -20 98 -40q60 -24 120 1.5t85 86.5q24 60 -1.5 120t-86.5 84l-82 33q22 5 42 5 q82 0 140 -57.5t58 -140.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v153l172 -69q20 -92 93.5 -152t168.5 -60q104 0 181 70t87 173l345 252q150 0 255.5 105.5t105.5 254.5q0 150 -105.5 255.5t-255.5 105.5 q-148 0 -253 -104.5t-107 -252.5l-225 -322q-9 1 -28 1q-75 0 -137 -37l-297 119v468q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5zM1289 887q0 -100 -71 -170.5t-171 -70.5t-170.5 70.5t-70.5 170.5t70.5 171t170.5 71q101 0 171.5 -70.5t70.5 -171.5z " /> -<glyph unicode="" horiz-adv-x="1792" d="M836 367l-15 -368l-2 -22l-420 29q-36 3 -67 31.5t-47 65.5q-11 27 -14.5 55t4 65t12 55t21.5 64t19 53q78 -12 509 -28zM449 953l180 -379l-147 92q-63 -72 -111.5 -144.5t-72.5 -125t-39.5 -94.5t-18.5 -63l-4 -21l-190 357q-17 26 -18 56t6 47l8 18q35 63 114 188 l-140 86zM1680 436l-188 -359q-12 -29 -36.5 -46.5t-43.5 -20.5l-18 -4q-71 -7 -219 -12l8 -164l-230 367l211 362l7 -173q170 -16 283 -5t170 33zM895 1360q-47 -63 -265 -435l-317 187l-19 12l225 356q20 31 60 45t80 10q24 -2 48.5 -12t42 -21t41.5 -33t36 -34.5 t36 -39.5t32 -35zM1550 1053l212 -363q18 -37 12.5 -76t-27.5 -74q-13 -20 -33 -37t-38 -28t-48.5 -22t-47 -16t-51.5 -14t-46 -12q-34 72 -265 436l313 195zM1407 1279l142 83l-220 -373l-419 20l151 86q-34 89 -75 166t-75.5 123.5t-64.5 80t-47 46.5l-17 13l405 -1 q31 3 58 -10.5t39 -28.5l11 -15q39 -61 112 -190z" /> -<glyph unicode="" horiz-adv-x="2048" d="M480 448q0 66 -47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47t113 47t47 113zM516 768h1016l-89 357q-2 8 -14 17.5t-21 9.5h-768q-9 0 -21 -9.5t-14 -17.5zM1888 448q0 66 -47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47t113 47t47 113zM2048 544v-384 q0 -14 -9 -23t-23 -9h-96v-128q0 -80 -56 -136t-136 -56t-136 56t-56 136v128h-1024v-128q0 -80 -56 -136t-136 -56t-136 56t-56 136v128h-96q-14 0 -23 9t-9 23v384q0 93 65.5 158.5t158.5 65.5h28l105 419q23 94 104 157.5t179 63.5h768q98 0 179 -63.5t104 -157.5 l105 -419h28q93 0 158.5 -65.5t65.5 -158.5z" /> -<glyph unicode="" horiz-adv-x="2048" d="M1824 640q93 0 158.5 -65.5t65.5 -158.5v-384q0 -14 -9 -23t-23 -9h-96v-64q0 -80 -56 -136t-136 -56t-136 56t-56 136v64h-1024v-64q0 -80 -56 -136t-136 -56t-136 56t-56 136v64h-96q-14 0 -23 9t-9 23v384q0 93 65.5 158.5t158.5 65.5h28l105 419q23 94 104 157.5 t179 63.5h128v224q0 14 9 23t23 9h448q14 0 23 -9t9 -23v-224h128q98 0 179 -63.5t104 -157.5l105 -419h28zM320 160q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47zM516 640h1016l-89 357q-2 8 -14 17.5t-21 9.5h-768q-9 0 -21 -9.5t-14 -17.5z M1728 160q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47z" /> -<glyph unicode="" d="M1504 64q0 -26 -19 -45t-45 -19h-462q1 -17 6 -87.5t5 -108.5q0 -25 -18 -42.5t-43 -17.5h-320q-25 0 -43 17.5t-18 42.5q0 38 5 108.5t6 87.5h-462q-26 0 -45 19t-19 45t19 45l402 403h-229q-26 0 -45 19t-19 45t19 45l402 403h-197q-26 0 -45 19t-19 45t19 45l384 384 q19 19 45 19t45 -19l384 -384q19 -19 19 -45t-19 -45t-45 -19h-197l402 -403q19 -19 19 -45t-19 -45t-45 -19h-229l402 -403q19 -19 19 -45z" /> -<glyph unicode="" d="M1127 326q0 32 -30 51q-193 115 -447 115q-133 0 -287 -34q-42 -9 -42 -52q0 -20 13.5 -34.5t35.5 -14.5q5 0 37 8q132 27 243 27q226 0 397 -103q19 -11 33 -11q19 0 33 13.5t14 34.5zM1223 541q0 40 -35 61q-237 141 -548 141q-153 0 -303 -42q-48 -13 -48 -64 q0 -25 17.5 -42.5t42.5 -17.5q7 0 37 8q122 33 251 33q279 0 488 -124q24 -13 38 -13q25 0 42.5 17.5t17.5 42.5zM1331 789q0 47 -40 70q-126 73 -293 110.5t-343 37.5q-204 0 -364 -47q-23 -7 -38.5 -25.5t-15.5 -48.5q0 -31 20.5 -52t51.5 -21q11 0 40 8q133 37 307 37 q159 0 309.5 -34t253.5 -95q21 -12 40 -12q29 0 50.5 20.5t21.5 51.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" horiz-adv-x="1024" d="M1024 1233l-303 -582l24 -31h279v-415h-507l-44 -30l-142 -273l-30 -30h-301v303l303 583l-24 30h-279v415h507l44 30l142 273l30 30h301v-303z" /> -<glyph unicode="" horiz-adv-x="2304" d="M784 164l16 241l-16 523q-1 10 -7.5 17t-16.5 7q-9 0 -16 -7t-7 -17l-14 -523l14 -241q1 -10 7.5 -16.5t15.5 -6.5q22 0 24 23zM1080 193l11 211l-12 586q0 16 -13 24q-8 5 -16 5t-16 -5q-13 -8 -13 -24l-1 -6l-10 -579q0 -1 11 -236v-1q0 -10 6 -17q9 -11 23 -11 q11 0 20 9q9 7 9 20zM35 533l20 -128l-20 -126q-2 -9 -9 -9t-9 9l-17 126l17 128q2 9 9 9t9 -9zM121 612l26 -207l-26 -203q-2 -9 -10 -9q-9 0 -9 10l-23 202l23 207q0 9 9 9q8 0 10 -9zM401 159zM213 650l25 -245l-25 -237q0 -11 -11 -11q-10 0 -12 11l-21 237l21 245 q2 12 12 12q11 0 11 -12zM307 657l23 -252l-23 -244q-2 -13 -14 -13q-13 0 -13 13l-21 244l21 252q0 13 13 13q12 0 14 -13zM401 639l21 -234l-21 -246q-2 -16 -16 -16q-6 0 -10.5 4.5t-4.5 11.5l-20 246l20 234q0 6 4.5 10.5t10.5 4.5q14 0 16 -15zM784 164zM495 785 l21 -380l-21 -246q0 -7 -5 -12.5t-12 -5.5q-16 0 -18 18l-18 246l18 380q2 18 18 18q7 0 12 -5.5t5 -12.5zM589 871l19 -468l-19 -244q0 -8 -5.5 -13.5t-13.5 -5.5q-18 0 -20 19l-16 244l16 468q2 19 20 19q8 0 13.5 -5.5t5.5 -13.5zM687 911l18 -506l-18 -242 q-2 -21 -22 -21q-19 0 -21 21l-16 242l16 506q0 9 6.5 15.5t14.5 6.5q9 0 15 -6.5t7 -15.5zM1079 169v0v0zM881 915l15 -510l-15 -239q0 -10 -7.5 -17.5t-17.5 -7.5t-17 7t-8 18l-14 239l14 510q0 11 7.5 18t17.5 7t17.5 -7t7.5 -18zM980 896l14 -492l-14 -236q0 -11 -8 -19 t-19 -8t-19 8t-9 19l-12 236l12 492q1 12 9 20t19 8t18.5 -8t8.5 -20zM1192 404l-14 -231v0q0 -13 -9 -22t-22 -9t-22 9t-10 22l-6 114l-6 117l12 636v3q2 15 12 24q9 7 20 7q8 0 15 -5q14 -8 16 -26zM2304 423q0 -117 -83 -199.5t-200 -82.5h-786q-13 2 -22 11t-9 22v899 q0 23 28 33q85 34 181 34q195 0 338 -131.5t160 -323.5q53 22 110 22q117 0 200 -83t83 -201z" /> -<glyph unicode="" d="M768 768q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127t443 -43zM768 0q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127 t443 -43zM768 384q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127t443 -43zM768 1536q208 0 385 -34.5t280 -93.5t103 -128v-128q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5 t-103 128v128q0 69 103 128t280 93.5t385 34.5z" /> -<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M894 465q33 -26 84 -56q59 7 117 7q147 0 177 -49q16 -22 2 -52q0 -1 -1 -2l-2 -2v-1q-6 -38 -71 -38q-48 0 -115 20t-130 53q-221 -24 -392 -83q-153 -262 -242 -262q-15 0 -28 7l-24 12q-1 1 -6 5q-10 10 -6 36q9 40 56 91.5t132 96.5q14 9 23 -6q2 -2 2 -4q52 85 107 197 q68 136 104 262q-24 82 -30.5 159.5t6.5 127.5q11 40 42 40h21h1q23 0 35 -15q18 -21 9 -68q-2 -6 -4 -8q1 -3 1 -8v-30q-2 -123 -14 -192q55 -164 146 -238zM318 54q52 24 137 158q-51 -40 -87.5 -84t-49.5 -74zM716 974q-15 -42 -2 -132q1 7 7 44q0 3 7 43q1 4 4 8 q-1 1 -1 2t-0.5 1.5t-0.5 1.5q-1 22 -13 36q0 -1 -1 -2v-2zM592 313q135 54 284 81q-2 1 -13 9.5t-16 13.5q-76 67 -127 176q-27 -86 -83 -197q-30 -56 -45 -83zM1238 329q-24 24 -140 24q76 -28 124 -28q14 0 18 1q0 1 -2 3z" /> -<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M233 768v-107h70l164 -661h159l128 485q7 20 10 46q2 16 2 24h4l3 -24q1 -3 3.5 -20t5.5 -26l128 -485h159l164 661h70v107h-300v-107h90l-99 -438q-5 -20 -7 -46l-2 -21h-4l-3 21q-1 5 -4 21t-5 25l-144 545h-114l-144 -545q-2 -9 -4.5 -24.5t-3.5 -21.5l-4 -21h-4l-2 21 q-2 26 -7 46l-99 438h90v107h-300z" /> -<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M429 106v-106h281v106h-75l103 161q5 7 10 16.5t7.5 13.5t3.5 4h2q1 -4 5 -10q2 -4 4.5 -7.5t6 -8t6.5 -8.5l107 -161h-76v-106h291v106h-68l-192 273l195 282h67v107h-279v-107h74l-103 -159q-4 -7 -10 -16.5t-9 -13.5l-2 -3h-2q-1 4 -5 10q-6 11 -17 23l-106 159h76v107 h-290v-107h68l189 -272l-194 -283h-68z" /> -<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M416 106v-106h327v106h-93v167h137q76 0 118 15q67 23 106.5 87t39.5 146q0 81 -37 141t-100 87q-48 19 -130 19h-368v-107h92v-555h-92zM769 386h-119v268h120q52 0 83 -18q56 -33 56 -115q0 -89 -62 -120q-31 -15 -78 -15z" /> -<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M1280 320v-320h-1024v192l192 192l128 -128l384 384zM448 512q-80 0 -136 56t-56 136t56 136t136 56t136 -56t56 -136t-56 -136t-136 -56z" /> -<glyph unicode="" d="M640 1152v128h-128v-128h128zM768 1024v128h-128v-128h128zM640 896v128h-128v-128h128zM768 768v128h-128v-128h128zM1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400 v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-128v-128h-128v128h-512v-1536h1280zM781 593l107 -349q8 -27 8 -52q0 -83 -72.5 -137.5t-183.5 -54.5t-183.5 54.5t-72.5 137.5q0 25 8 52q21 63 120 396v128h128v-128h79 q22 0 39 -13t23 -34zM640 128q53 0 90.5 19t37.5 45t-37.5 45t-90.5 19t-90.5 -19t-37.5 -45t37.5 -45t90.5 -19z" /> -<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M620 686q20 -8 20 -30v-544q0 -22 -20 -30q-8 -2 -12 -2q-12 0 -23 9l-166 167h-131q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h131l166 167q16 15 35 7zM1037 -3q31 0 50 24q129 159 129 363t-129 363q-16 21 -43 24t-47 -14q-21 -17 -23.5 -43.5t14.5 -47.5 q100 -123 100 -282t-100 -282q-17 -21 -14.5 -47.5t23.5 -42.5q18 -15 40 -15zM826 145q27 0 47 20q87 93 87 219t-87 219q-18 19 -45 20t-46 -17t-20 -44.5t18 -46.5q52 -57 52 -131t-52 -131q-19 -20 -18 -46.5t20 -44.5q20 -17 44 -17z" /> -<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M768 768q52 0 90 -38t38 -90v-384q0 -52 -38 -90t-90 -38h-384q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h384zM1260 766q20 -8 20 -30v-576q0 -22 -20 -30q-8 -2 -12 -2q-14 0 -23 9l-265 266v90l265 266q9 9 23 9q4 0 12 -2z" /> -<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M480 768q8 11 21 12.5t24 -6.5l51 -38q11 -8 12.5 -21t-6.5 -24l-182 -243l182 -243q8 -11 6.5 -24t-12.5 -21l-51 -38q-11 -8 -24 -6.5t-21 12.5l-226 301q-14 19 0 38zM1282 467q14 -19 0 -38l-226 -301q-8 -11 -21 -12.5t-24 6.5l-51 38q-11 8 -12.5 21t6.5 24l182 243 l-182 243q-8 11 -6.5 24t12.5 21l51 38q11 8 24 6.5t21 -12.5zM662 6q-13 2 -20.5 13t-5.5 24l138 831q2 13 13 20.5t24 5.5l63 -10q13 -2 20.5 -13t5.5 -24l-138 -831q-2 -13 -13 -20.5t-24 -5.5z" /> -<glyph unicode="" d="M1497 709v-198q-101 -23 -198 -23q-65 -136 -165.5 -271t-181.5 -215.5t-128 -106.5q-80 -45 -162 3q-28 17 -60.5 43.5t-85 83.5t-102.5 128.5t-107.5 184t-105.5 244t-91.5 314.5t-70.5 390h283q26 -218 70 -398.5t104.5 -317t121.5 -235.5t140 -195q169 169 287 406 q-142 72 -223 220t-81 333q0 192 104 314.5t284 122.5q178 0 273 -105.5t95 -297.5q0 -159 -58 -286q-7 -1 -19.5 -3t-46 -2t-63 6t-62 25.5t-50.5 51.5q31 103 31 184q0 87 -29 132t-79 45q-53 0 -85 -49.5t-32 -140.5q0 -186 105 -293.5t267 -107.5q62 0 121 14z" /> -<glyph unicode="" horiz-adv-x="1792" d="M216 367l603 -402v359l-334 223zM154 511l193 129l-193 129v-258zM973 -35l603 402l-269 180l-334 -223v-359zM896 458l272 182l-272 182l-272 -182zM485 733l334 223v359l-603 -402zM1445 640l193 -129v258zM1307 733l269 180l-603 402v-359zM1792 913v-546 q0 -41 -34 -64l-819 -546q-21 -13 -43 -13t-43 13l-819 546q-34 23 -34 64v546q0 41 34 64l819 546q21 13 43 13t43 -13l819 -546q34 -23 34 -64z" /> -<glyph unicode="" horiz-adv-x="2048" d="M1800 764q111 -46 179.5 -145.5t68.5 -221.5q0 -164 -118 -280.5t-285 -116.5q-4 0 -11.5 0.5t-10.5 0.5h-1209h-1h-2h-5q-170 10 -288 125.5t-118 280.5q0 110 55 203t147 147q-12 39 -12 82q0 115 82 196t199 81q95 0 172 -58q75 154 222.5 248t326.5 94 q166 0 306 -80.5t221.5 -218.5t81.5 -301q0 -6 -0.5 -18t-0.5 -18zM468 498q0 -122 84 -193t208 -71q137 0 240 99q-16 20 -47.5 56.5t-43.5 50.5q-67 -65 -144 -65q-55 0 -93.5 33.5t-38.5 87.5q0 53 38.5 87t91.5 34q44 0 84.5 -21t73 -55t65 -75t69 -82t77 -75t97 -55 t121.5 -21q121 0 204.5 71.5t83.5 190.5q0 121 -84 192t-207 71q-143 0 -241 -97q14 -16 29.5 -34t34.5 -40t29 -34q66 64 142 64q52 0 92 -33t40 -84q0 -57 -37 -91.5t-94 -34.5q-43 0 -82.5 21t-72 55t-65.5 75t-69.5 82t-77.5 75t-96.5 55t-118.5 21q-122 0 -207 -70.5 t-85 -189.5z" /> -<glyph unicode="" horiz-adv-x="1792" d="M896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM896 1408q-190 0 -361 -90l194 -194q82 28 167 28t167 -28l194 194q-171 90 -361 90zM218 279l194 194 q-28 82 -28 167t28 167l-194 194q-90 -171 -90 -361t90 -361zM896 -128q190 0 361 90l-194 194q-82 -28 -167 -28t-167 28l-194 -194q171 -90 361 -90zM896 256q159 0 271.5 112.5t112.5 271.5t-112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5 t271.5 -112.5zM1380 473l194 -194q90 171 90 361t-90 361l-194 -194q28 -82 28 -167t-28 -167z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348q0 222 101 414.5t276.5 317t390.5 155.5v-260q-221 -45 -366.5 -221t-145.5 -406q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5 q0 230 -145.5 406t-366.5 221v260q215 -31 390.5 -155.5t276.5 -317t101 -414.5z" /> -<glyph unicode="" horiz-adv-x="1792" d="M19 662q8 217 116 406t305 318h5q0 -1 -1 -3q-8 -8 -28 -33.5t-52 -76.5t-60 -110.5t-44.5 -135.5t-14 -150.5t39 -157.5t108.5 -154q50 -50 102 -69.5t90.5 -11.5t69.5 23.5t47 32.5l16 16q39 51 53 116.5t6.5 122.5t-21 107t-26.5 80l-14 29q-10 25 -30.5 49.5t-43 41 t-43.5 29.5t-35 19l-13 6l104 115q39 -17 78 -52t59 -61l19 -27q1 48 -18.5 103.5t-40.5 87.5l-20 31l161 183l160 -181q-33 -46 -52.5 -102.5t-22.5 -90.5l-4 -33q22 37 61.5 72.5t67.5 52.5l28 17l103 -115q-44 -14 -85 -50t-60 -65l-19 -29q-31 -56 -48 -133.5t-7 -170 t57 -156.5q33 -45 77.5 -60.5t85 -5.5t76 26.5t57.5 33.5l21 16q60 53 96.5 115t48.5 121.5t10 121.5t-18 118t-37 107.5t-45.5 93t-45 72t-34.5 47.5l-13 17q-14 13 -7 13l10 -3q40 -29 62.5 -46t62 -50t64 -58t58.5 -65t55.5 -77t45.5 -88t38 -103t23.5 -117t10.5 -136 q3 -259 -108 -465t-312 -321t-456 -115q-185 0 -351 74t-283.5 198t-184 293t-60.5 353z" /> -<glyph unicode="" horiz-adv-x="1792" d="M874 -102v-66q-208 6 -385 109.5t-283 275.5l58 34q29 -49 73 -99l65 57q148 -168 368 -212l-17 -86q65 -12 121 -13zM276 428l-83 -28q22 -60 49 -112l-57 -33q-98 180 -98 385t98 385l57 -33q-30 -56 -49 -112l82 -28q-35 -100 -35 -212q0 -109 36 -212zM1528 251 l58 -34q-106 -172 -283 -275.5t-385 -109.5v66q56 1 121 13l-17 86q220 44 368 212l65 -57q44 50 73 99zM1377 805l-233 -80q14 -42 14 -85t-14 -85l232 -80q-31 -92 -98 -169l-185 162q-57 -67 -147 -85l48 -241q-52 -10 -98 -10t-98 10l48 241q-90 18 -147 85l-185 -162 q-67 77 -98 169l232 80q-14 42 -14 85t14 85l-233 80q33 93 99 169l185 -162q59 68 147 86l-48 240q44 10 98 10t98 -10l-48 -240q88 -18 147 -86l185 162q66 -76 99 -169zM874 1448v-66q-65 -2 -121 -13l17 -86q-220 -42 -368 -211l-65 56q-38 -42 -73 -98l-57 33 q106 172 282 275.5t385 109.5zM1705 640q0 -205 -98 -385l-57 33q27 52 49 112l-83 28q36 103 36 212q0 112 -35 212l82 28q-19 56 -49 112l57 33q98 -180 98 -385zM1585 1063l-57 -33q-35 56 -73 98l-65 -56q-148 169 -368 211l17 86q-56 11 -121 13v66q209 -6 385 -109.5 t282 -275.5zM1748 640q0 173 -67.5 331t-181.5 272t-272 181.5t-331 67.5t-331 -67.5t-272 -181.5t-181.5 -272t-67.5 -331t67.5 -331t181.5 -272t272 -181.5t331 -67.5t331 67.5t272 181.5t181.5 272t67.5 331zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71 t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" /> -<glyph unicode="" d="M582 228q0 -66 -93 -66q-107 0 -107 63q0 64 98 64q102 0 102 -61zM546 694q0 -85 -74 -85q-77 0 -77 84q0 90 77 90q36 0 55 -25.5t19 -63.5zM712 769v125q-78 -29 -135 -29q-50 29 -110 29q-86 0 -145 -57t-59 -143q0 -50 29.5 -102t73.5 -67v-3q-38 -17 -38 -85 q0 -53 41 -77v-3q-113 -37 -113 -139q0 -45 20 -78.5t54 -51t72 -25.5t81 -8q224 0 224 188q0 67 -48 99t-126 46q-27 5 -51.5 20.5t-24.5 39.5q0 44 49 52q77 15 122 70t45 134q0 24 -10 52q37 9 49 13zM771 350h137q-2 27 -2 82v387q0 46 2 69h-137q3 -23 3 -71v-392 q0 -50 -3 -75zM1280 366v121q-30 -21 -68 -21q-53 0 -53 82v225h52q9 0 26.5 -1t26.5 -1v117h-105q0 82 3 102h-140q4 -24 4 -55v-47h-60v-117q36 3 37 3q3 0 11 -0.5t12 -0.5v-2h-2v-217q0 -37 2.5 -64t11.5 -56.5t24.5 -48.5t43.5 -31t66 -12q64 0 108 24zM924 1072 q0 36 -24 63.5t-60 27.5t-60.5 -27t-24.5 -64q0 -36 25 -62.5t60 -26.5t59.5 27t24.5 62zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" horiz-adv-x="1792" d="M595 22q0 100 -165 100q-158 0 -158 -104q0 -101 172 -101q151 0 151 105zM536 777q0 61 -30 102t-89 41q-124 0 -124 -145q0 -135 124 -135q119 0 119 137zM805 1101v-202q-36 -12 -79 -22q16 -43 16 -84q0 -127 -73 -216.5t-197 -112.5q-40 -8 -59.5 -27t-19.5 -58 q0 -31 22.5 -51.5t58 -32t78.5 -22t86 -25.5t78.5 -37.5t58 -64t22.5 -98.5q0 -304 -363 -304q-69 0 -130 12.5t-116 41t-87.5 82t-32.5 127.5q0 165 182 225v4q-67 41 -67 126q0 109 63 137v4q-72 24 -119.5 108.5t-47.5 165.5q0 139 95 231.5t235 92.5q96 0 178 -47 q98 0 218 47zM1123 220h-222q4 45 4 134v609q0 94 -4 128h222q-4 -33 -4 -124v-613q0 -89 4 -134zM1724 442v-196q-71 -39 -174 -39q-62 0 -107 20t-70 50t-39.5 78t-18.5 92t-4 103v351h2v4q-7 0 -19 1t-18 1q-21 0 -59 -6v190h96v76q0 54 -6 89h227q-6 -41 -6 -165h171 v-190q-15 0 -43.5 2t-42.5 2h-85v-365q0 -131 87 -131q61 0 109 33zM1148 1389q0 -58 -39 -101.5t-96 -43.5q-58 0 -98 43.5t-40 101.5q0 59 39.5 103t98.5 44q58 0 96.5 -44.5t38.5 -102.5z" /> -<glyph unicode="" d="M825 547l343 588h-150q-21 -39 -63.5 -118.5t-68 -128.5t-59.5 -118.5t-60 -128.5h-3q-21 48 -44.5 97t-52 105.5t-46.5 92t-54 104.5t-49 95h-150l323 -589v-435h134v436zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960 q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" horiz-adv-x="1280" d="M842 964q0 -80 -57 -136.5t-136 -56.5q-60 0 -111 35q-62 -67 -115 -146q-247 -371 -202 -859q1 -22 -12.5 -38.5t-34.5 -18.5h-5q-20 0 -35 13.5t-17 33.5q-14 126 -3.5 247.5t29.5 217t54 186t69 155.5t74 125q61 90 132 165q-16 35 -16 77q0 80 56.5 136.5t136.5 56.5 t136.5 -56.5t56.5 -136.5zM1223 953q0 -158 -78 -292t-212.5 -212t-292.5 -78q-64 0 -131 14q-21 5 -32.5 23.5t-6.5 39.5q5 20 23 31.5t39 7.5q51 -13 108 -13q97 0 186 38t153 102t102 153t38 186t-38 186t-102 153t-153 102t-186 38t-186 -38t-153 -102t-102 -153 t-38 -186q0 -114 52 -218q10 -20 3.5 -40t-25.5 -30t-39.5 -3t-30.5 26q-64 123 -64 265q0 119 46.5 227t124.5 186t186 124t226 46q158 0 292.5 -78t212.5 -212.5t78 -292.5z" /> -<glyph unicode="" horiz-adv-x="1792" d="M270 730q-8 19 -8 52q0 20 11 49t24 45q-1 22 7.5 53t22.5 43q0 139 92.5 288.5t217.5 209.5q139 66 324 66q133 0 266 -55q49 -21 90 -48t71 -56t55 -68t42 -74t32.5 -84.5t25.5 -89.5t22 -98l1 -5q55 -83 55 -150q0 -14 -9 -40t-9 -38q0 -1 1.5 -3.5t3.5 -5t2 -3.5 q77 -114 120.5 -214.5t43.5 -208.5q0 -43 -19.5 -100t-55.5 -57q-9 0 -19.5 7.5t-19 17.5t-19 26t-16 26.5t-13.5 26t-9 17.5q-1 1 -3 1l-5 -4q-59 -154 -132 -223q20 -20 61.5 -38.5t69 -41.5t35.5 -65q-2 -4 -4 -16t-7 -18q-64 -97 -302 -97q-53 0 -110.5 9t-98 20 t-104.5 30q-15 5 -23 7q-14 4 -46 4.5t-40 1.5q-41 -45 -127.5 -65t-168.5 -20q-35 0 -69 1.5t-93 9t-101 20.5t-74.5 40t-32.5 64q0 40 10 59.5t41 48.5q11 2 40.5 13t49.5 12q4 0 14 2q2 2 2 4l-2 3q-48 11 -108 105.5t-73 156.5l-5 3q-4 0 -12 -20q-18 -41 -54.5 -74.5 t-77.5 -37.5h-1q-4 0 -6 4.5t-5 5.5q-23 54 -23 100q0 275 252 466z" /> -<glyph unicode="" horiz-adv-x="2048" d="M580 1075q0 41 -25 66t-66 25q-43 0 -76 -25.5t-33 -65.5q0 -39 33 -64.5t76 -25.5q41 0 66 24.5t25 65.5zM1323 568q0 28 -25.5 50t-65.5 22q-27 0 -49.5 -22.5t-22.5 -49.5q0 -28 22.5 -50.5t49.5 -22.5q40 0 65.5 22t25.5 51zM1087 1075q0 41 -24.5 66t-65.5 25 q-43 0 -76 -25.5t-33 -65.5q0 -39 33 -64.5t76 -25.5q41 0 65.5 24.5t24.5 65.5zM1722 568q0 28 -26 50t-65 22q-27 0 -49.5 -22.5t-22.5 -49.5q0 -28 22.5 -50.5t49.5 -22.5q39 0 65 22t26 51zM1456 965q-31 4 -70 4q-169 0 -311 -77t-223.5 -208.5t-81.5 -287.5 q0 -78 23 -152q-35 -3 -68 -3q-26 0 -50 1.5t-55 6.5t-44.5 7t-54.5 10.5t-50 10.5l-253 -127l72 218q-290 203 -290 490q0 169 97.5 311t264 223.5t363.5 81.5q176 0 332.5 -66t262 -182.5t136.5 -260.5zM2048 404q0 -117 -68.5 -223.5t-185.5 -193.5l55 -181l-199 109 q-150 -37 -218 -37q-169 0 -311 70.5t-223.5 191.5t-81.5 264t81.5 264t223.5 191.5t311 70.5q161 0 303 -70.5t227.5 -192t85.5 -263.5z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1764 1525q33 -24 27 -64l-256 -1536q-5 -29 -32 -45q-14 -8 -31 -8q-11 0 -24 5l-453 185l-242 -295q-18 -23 -49 -23q-13 0 -22 4q-19 7 -30.5 23.5t-11.5 36.5v349l864 1059l-1069 -925l-395 162q-37 14 -40 55q-2 40 32 59l1664 960q15 9 32 9q20 0 36 -11z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1764 1525q33 -24 27 -64l-256 -1536q-5 -29 -32 -45q-14 -8 -31 -8q-11 0 -24 5l-527 215l-298 -327q-18 -21 -47 -21q-14 0 -23 4q-19 7 -30 23.5t-11 36.5v452l-472 193q-37 14 -40 55q-3 39 32 59l1664 960q35 21 68 -2zM1422 26l221 1323l-1434 -827l336 -137 l863 639l-478 -797z" /> -<glyph unicode="" d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61q-172 0 -327 72.5t-264 204.5q-7 10 -6.5 22.5t8.5 20.5l137 138q10 9 25 9q16 -2 23 -12q73 -95 179 -147t225 -52q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5 t-163.5 109.5t-198.5 40.5q-98 0 -188 -35.5t-160 -101.5l137 -138q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l130 -129q107 101 244.5 156.5t284.5 55.5q156 0 298 -61t245 -164t164 -245t61 -298zM896 928v-448q0 -14 -9 -23 t-23 -9h-320q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23z" /> -<glyph unicode="" d="M768 1280q-130 0 -248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5t-51 248.5t-136.5 204t-204 136.5t-248.5 51zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1682 -128q-44 0 -132.5 3.5t-133.5 3.5q-44 0 -132 -3.5t-132 -3.5q-24 0 -37 20.5t-13 45.5q0 31 17 46t39 17t51 7t45 15q33 21 33 140l-1 391q0 21 -1 31q-13 4 -50 4h-675q-38 0 -51 -4q-1 -10 -1 -31l-1 -371q0 -142 37 -164q16 -10 48 -13t57 -3.5t45 -15 t20 -45.5q0 -26 -12.5 -48t-36.5 -22q-47 0 -139.5 3.5t-138.5 3.5q-43 0 -128 -3.5t-127 -3.5q-23 0 -35.5 21t-12.5 45q0 30 15.5 45t36 17.5t47.5 7.5t42 15q33 23 33 143l-1 57v813q0 3 0.5 26t0 36.5t-1.5 38.5t-3.5 42t-6.5 36.5t-11 31.5t-16 18q-15 10 -45 12t-53 2 t-41 14t-18 45q0 26 12 48t36 22q46 0 138.5 -3.5t138.5 -3.5q42 0 126.5 3.5t126.5 3.5q25 0 37.5 -22t12.5 -48q0 -30 -17 -43.5t-38.5 -14.5t-49.5 -4t-43 -13q-35 -21 -35 -160l1 -320q0 -21 1 -32q13 -3 39 -3h699q25 0 38 3q1 11 1 32l1 320q0 139 -35 160 q-18 11 -58.5 12.5t-66 13t-25.5 49.5q0 26 12.5 48t37.5 22q44 0 132 -3.5t132 -3.5q43 0 129 3.5t129 3.5q25 0 37.5 -22t12.5 -48q0 -30 -17.5 -44t-40 -14.5t-51.5 -3t-44 -12.5q-35 -23 -35 -161l1 -943q0 -119 34 -140q16 -10 46 -13.5t53.5 -4.5t41.5 -15.5t18 -44.5 q0 -26 -12 -48t-36 -22z" /> -<glyph unicode="" horiz-adv-x="1280" d="M1278 1347v-73q0 -29 -18.5 -61t-42.5 -32q-50 0 -54 -1q-26 -6 -32 -31q-3 -11 -3 -64v-1152q0 -25 -18 -43t-43 -18h-108q-25 0 -43 18t-18 43v1218h-143v-1218q0 -25 -17.5 -43t-43.5 -18h-108q-26 0 -43.5 18t-17.5 43v496q-147 12 -245 59q-126 58 -192 179 q-64 117 -64 259q0 166 88 286q88 118 209 159q111 37 417 37h479q25 0 43 -18t18 -43z" /> -<glyph unicode="" d="M352 128v-128h-352v128h352zM704 256q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h256zM864 640v-128h-864v128h864zM224 1152v-128h-224v128h224zM1536 128v-128h-736v128h736zM576 1280q26 0 45 -19t19 -45v-256 q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h256zM1216 768q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h256zM1536 640v-128h-224v128h224zM1536 1152v-128h-864v128h864z" /> -<glyph unicode="" d="M1216 512q133 0 226.5 -93.5t93.5 -226.5t-93.5 -226.5t-226.5 -93.5t-226.5 93.5t-93.5 226.5q0 12 2 34l-360 180q-92 -86 -218 -86q-133 0 -226.5 93.5t-93.5 226.5t93.5 226.5t226.5 93.5q126 0 218 -86l360 180q-2 22 -2 34q0 133 93.5 226.5t226.5 93.5 t226.5 -93.5t93.5 -226.5t-93.5 -226.5t-226.5 -93.5q-126 0 -218 86l-360 -180q2 -22 2 -34t-2 -34l360 -180q92 86 218 86z" /> -<glyph unicode="" d="M1280 341q0 88 -62.5 151t-150.5 63q-84 0 -145 -58l-241 120q2 16 2 23t-2 23l241 120q61 -58 145 -58q88 0 150.5 63t62.5 151t-62.5 150.5t-150.5 62.5t-151 -62.5t-63 -150.5q0 -7 2 -23l-241 -120q-62 57 -145 57q-88 0 -150.5 -62.5t-62.5 -150.5t62.5 -150.5 t150.5 -62.5q83 0 145 57l241 -120q-2 -16 -2 -23q0 -88 63 -150.5t151 -62.5t150.5 62.5t62.5 150.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" horiz-adv-x="1792" d="M571 947q-10 25 -34 35t-49 0q-108 -44 -191 -127t-127 -191q-10 -25 0 -49t35 -34q13 -5 24 -5q42 0 60 40q34 84 98.5 148.5t148.5 98.5q25 11 35 35t0 49zM1513 1303l46 -46l-244 -243l68 -68q19 -19 19 -45.5t-19 -45.5l-64 -64q89 -161 89 -343q0 -143 -55.5 -273.5 t-150 -225t-225 -150t-273.5 -55.5t-273.5 55.5t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5q182 0 343 -89l64 64q19 19 45.5 19t45.5 -19l68 -68zM1521 1359q-10 -10 -22 -10q-13 0 -23 10l-91 90q-9 10 -9 23t9 23q10 9 23 9t23 -9l90 -91 q10 -9 10 -22.5t-10 -22.5zM1751 1129q-11 -9 -23 -9t-23 9l-90 91q-10 9 -10 22.5t10 22.5q9 10 22.5 10t22.5 -10l91 -90q9 -10 9 -23t-9 -23zM1792 1312q0 -14 -9 -23t-23 -9h-96q-14 0 -23 9t-9 23t9 23t23 9h96q14 0 23 -9t9 -23zM1600 1504v-96q0 -14 -9 -23t-23 -9 t-23 9t-9 23v96q0 14 9 23t23 9t23 -9t9 -23zM1751 1449l-91 -90q-10 -10 -22 -10q-13 0 -23 10q-10 9 -10 22.5t10 22.5l90 91q10 9 23 9t23 -9q9 -10 9 -23t-9 -23z" /> -<glyph unicode="" horiz-adv-x="1792" d="M609 720l287 208l287 -208l-109 -336h-355zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM1515 186q149 203 149 454v3l-102 -89l-240 224l63 323 l134 -12q-150 206 -389 282l53 -124l-287 -159l-287 159l53 124q-239 -76 -389 -282l135 12l62 -323l-240 -224l-102 89v-3q0 -251 149 -454l30 132l326 -40l139 -298l-116 -69q117 -39 240 -39t240 39l-116 69l139 298l326 40z" /> -<glyph unicode="" horiz-adv-x="1792" d="M448 224v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM256 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM832 224v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23 v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM640 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM66 768q-28 0 -47 19t-19 46v129h514v-129q0 -27 -19 -46t-46 -19h-383zM1216 224v-192q0 -14 -9 -23t-23 -9h-192 q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1024 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1600 224v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23 zM1408 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 1016v-13h-514v10q0 104 -382 102q-382 -1 -382 -102v-10h-514v13q0 17 8.5 43t34 64t65.5 75.5t110.5 76t160 67.5t224 47.5t293.5 18.5t293 -18.5t224 -47.5 t160.5 -67.5t110.5 -76t65.5 -75.5t34 -64t8.5 -43zM1792 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 962v-129q0 -27 -19 -46t-46 -19h-384q-27 0 -46 19t-19 46v129h514z" /> -<glyph unicode="" horiz-adv-x="1792" d="M704 1216v-768q0 -26 -19 -45t-45 -19v-576q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v512l249 873q7 23 31 23h424zM1024 1216v-704h-256v704h256zM1792 320v-512q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v576q-26 0 -45 19t-19 45v768h424q24 0 31 -23z M736 1504v-224h-352v224q0 14 9 23t23 9h288q14 0 23 -9t9 -23zM1408 1504v-224h-352v224q0 14 9 23t23 9h288q14 0 23 -9t9 -23z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1755 1083q37 -37 37 -90t-37 -91l-401 -400l150 -150l-160 -160q-163 -163 -389.5 -186.5t-411.5 100.5l-362 -362h-181v181l362 362q-124 185 -100.5 411.5t186.5 389.5l160 160l150 -150l400 401q38 37 91 37t90 -37t37 -90.5t-37 -90.5l-400 -401l234 -234l401 400 q38 37 91 37t90 -37z" /> -<glyph unicode="" horiz-adv-x="1792" d="M873 796q0 -83 -63.5 -142.5t-152.5 -59.5t-152.5 59.5t-63.5 142.5q0 84 63.5 143t152.5 59t152.5 -59t63.5 -143zM1375 796q0 -83 -63 -142.5t-153 -59.5q-89 0 -152.5 59.5t-63.5 142.5q0 84 63.5 143t152.5 59q90 0 153 -59t63 -143zM1600 616v667q0 87 -32 123.5 t-111 36.5h-1112q-83 0 -112.5 -34t-29.5 -126v-673q43 -23 88.5 -40t81 -28t81 -18.5t71 -11t70 -4t58.5 -0.5t56.5 2t44.5 2q68 1 95 -27q6 -6 10 -9q26 -25 61 -51q7 91 118 87q5 0 36.5 -1.5t43 -2t45.5 -1t53 1t54.5 4.5t61 8.5t62 13.5t67 19.5t67.5 27t72 34.5z M1763 621q-121 -149 -372 -252q84 -285 -23 -465q-66 -113 -183 -148q-104 -32 -182 15q-86 51 -82 164l-1 326v1q-8 2 -24.5 6t-23.5 5l-1 -338q4 -114 -83 -164q-79 -47 -183 -15q-117 36 -182 150q-105 180 -22 463q-251 103 -372 252q-25 37 -4 63t60 -1q3 -2 11 -7 t11 -8v694q0 72 47 123t114 51h1257q67 0 114 -51t47 -123v-694l21 15q39 27 60 1t-4 -63z" /> -<glyph unicode="" horiz-adv-x="1792" d="M896 1102v-434h-145v434h145zM1294 1102v-434h-145v434h145zM1294 342l253 254v795h-1194v-1049h326v-217l217 217h398zM1692 1536v-1013l-434 -434h-326l-217 -217h-217v217h-398v1158l109 289h1483z" /> -<glyph unicode="" d="M773 217v-127q-1 -292 -6 -305q-12 -32 -51 -40q-54 -9 -181.5 38t-162.5 89q-13 15 -17 36q-1 12 4 26q4 10 34 47t181 216q1 0 60 70q15 19 39.5 24.5t49.5 -3.5q24 -10 37.5 -29t12.5 -42zM624 468q-3 -55 -52 -70l-120 -39q-275 -88 -292 -88q-35 2 -54 36 q-12 25 -17 75q-8 76 1 166.5t30 124.5t56 32q13 0 202 -77q70 -29 115 -47l84 -34q23 -9 35.5 -30.5t11.5 -48.5zM1450 171q-7 -54 -91.5 -161t-135.5 -127q-37 -14 -63 7q-14 10 -184 287l-47 77q-14 21 -11.5 46t19.5 46q35 43 83 26q1 -1 119 -40q203 -66 242 -79.5 t47 -20.5q28 -22 22 -61zM778 803q5 -102 -54 -122q-58 -17 -114 71l-378 598q-8 35 19 62q41 43 207.5 89.5t224.5 31.5q40 -10 49 -45q3 -18 22 -305.5t24 -379.5zM1440 695q3 -39 -26 -59q-15 -10 -329 -86q-67 -15 -91 -23l1 2q-23 -6 -46 4t-37 32q-30 47 0 87 q1 1 75 102q125 171 150 204t34 39q28 19 65 2q48 -23 123 -133.5t81 -167.5v-3z" /> -<glyph unicode="" horiz-adv-x="2048" d="M1024 1024h-384v-384h384v384zM1152 384v-128h-640v128h640zM1152 1152v-640h-640v640h640zM1792 384v-128h-512v128h512zM1792 640v-128h-512v128h512zM1792 896v-128h-512v128h512zM1792 1152v-128h-512v128h512zM256 192v960h-128v-960q0 -26 19 -45t45 -19t45 19 t19 45zM1920 192v1088h-1536v-1088q0 -33 -11 -64h1483q26 0 45 19t19 45zM2048 1408v-1216q0 -80 -56 -136t-136 -56h-1664q-80 0 -136 56t-56 136v1088h256v128h1792z" /> -<glyph unicode="" horiz-adv-x="2048" d="M1024 13q-20 0 -93 73.5t-73 93.5q0 32 62.5 54t103.5 22t103.5 -22t62.5 -54q0 -20 -73 -93.5t-93 -73.5zM1294 284q-2 0 -40 25t-101.5 50t-128.5 25t-128.5 -25t-101 -50t-40.5 -25q-18 0 -93.5 75t-75.5 93q0 13 10 23q78 77 196 121t233 44t233 -44t196 -121 q10 -10 10 -23q0 -18 -75.5 -93t-93.5 -75zM1567 556q-11 0 -23 8q-136 105 -252 154.5t-268 49.5q-85 0 -170.5 -22t-149 -53t-113.5 -62t-79 -53t-31 -22q-17 0 -92 75t-75 93q0 12 10 22q132 132 320 205t380 73t380 -73t320 -205q10 -10 10 -22q0 -18 -75 -93t-92 -75z M1838 827q-11 0 -22 9q-179 157 -371.5 236.5t-420.5 79.5t-420.5 -79.5t-371.5 -236.5q-11 -9 -22 -9q-17 0 -92.5 75t-75.5 93q0 13 10 23q187 186 445 288t527 102t527 -102t445 -288q10 -10 10 -23q0 -18 -75.5 -93t-92.5 -75z" /> -<glyph unicode="" horiz-adv-x="1792" d="M384 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM384 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5 t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1152 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5 t37.5 90.5zM384 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1152 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 768q0 53 -37.5 90.5t-90.5 37.5 t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1536 0v384q0 52 -38 90t-90 38t-90 -38t-38 -90v-384q0 -52 38 -90t90 -38t90 38t38 90zM1152 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5z M1536 1088v256q0 26 -19 45t-45 19h-1280q-26 0 -45 -19t-19 -45v-256q0 -26 19 -45t45 -19h1280q26 0 45 19t19 45zM1536 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 1408v-1536q0 -52 -38 -90t-90 -38 h-1408q-52 0 -90 38t-38 90v1536q0 52 38 90t90 38h1408q52 0 90 -38t38 -90z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1112 1090q0 159 -237 159h-70q-32 0 -59.5 -21.5t-34.5 -52.5l-63 -276q-2 -5 -2 -16q0 -24 17 -39.5t41 -15.5h53q69 0 128.5 13t112.5 41t83.5 81.5t30.5 126.5zM1716 938q0 -265 -220 -428q-219 -161 -612 -161h-61q-32 0 -59 -21.5t-34 -52.5l-73 -316 q-8 -36 -40.5 -61.5t-69.5 -25.5h-213q-31 0 -53 20t-22 51q0 10 13 65h151q34 0 64 23.5t38 56.5l73 316q8 33 37.5 57t63.5 24h61q390 0 607 160t217 421q0 129 -51 207q183 -92 183 -335zM1533 1123q0 -264 -221 -428q-218 -161 -612 -161h-60q-32 0 -59.5 -22t-34.5 -53 l-73 -315q-8 -36 -40 -61.5t-69 -25.5h-214q-31 0 -52.5 19.5t-21.5 51.5q0 8 2 20l300 1301q8 36 40.5 61.5t69.5 25.5h444q68 0 125 -4t120.5 -15t113.5 -30t96.5 -50.5t77.5 -74t49.5 -103.5t18.5 -136z" /> -<glyph unicode="" horiz-adv-x="1792" d="M602 949q19 -61 31 -123.5t17 -141.5t-14 -159t-62 -145q-21 81 -67 157t-95.5 127t-99 90.5t-78.5 57.5t-33 19q-62 34 -81.5 100t14.5 128t101 81.5t129 -14.5q138 -83 238 -177zM927 1236q11 -25 20.5 -46t36.5 -100.5t42.5 -150.5t25.5 -179.5t0 -205.5t-47.5 -209.5 t-105.5 -208.5q-51 -72 -138 -72q-54 0 -98 31q-57 40 -69 109t28 127q60 85 81 195t13 199.5t-32 180.5t-39 128t-22 52q-31 63 -8.5 129.5t85.5 97.5q34 17 75 17q47 0 88.5 -25t63.5 -69zM1248 567q-17 -160 -72 -311q-17 131 -63 246q25 174 -5 361q-27 178 -94 342 q114 -90 212 -211q9 -37 15 -80q26 -179 7 -347zM1520 1440q9 -17 23.5 -49.5t43.5 -117.5t50.5 -178t34 -227.5t5 -269t-47 -300t-112.5 -323.5q-22 -48 -66 -75.5t-95 -27.5q-39 0 -74 16q-67 31 -92.5 100t4.5 136q58 126 90 257.5t37.5 239.5t-3.5 213.5t-26.5 180.5 t-38.5 138.5t-32.5 90t-15.5 32.5q-34 65 -11.5 135.5t87.5 104.5q37 20 81 20q49 0 91.5 -25.5t66.5 -70.5z" /> -<glyph unicode="" horiz-adv-x="2304" d="M1975 546h-138q14 37 66 179l3 9q4 10 10 26t9 26l12 -55zM531 611l-58 295q-11 54 -75 54h-268l-2 -13q311 -79 403 -336zM710 960l-162 -438l-17 89q-26 70 -85 129.5t-131 88.5l135 -510h175l261 641h-176zM849 318h166l104 642h-166zM1617 944q-69 27 -149 27 q-123 0 -201 -59t-79 -153q-1 -102 145 -174q48 -23 67 -41t19 -39q0 -30 -30 -46t-69 -16q-86 0 -156 33l-22 11l-23 -144q74 -34 185 -34q130 -1 208.5 59t80.5 160q0 106 -140 174q-49 25 -71 42t-22 38q0 22 24.5 38.5t70.5 16.5q70 1 124 -24l15 -8zM2042 960h-128 q-65 0 -87 -54l-246 -588h174l35 96h212q5 -22 20 -96h154zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" /> -<glyph unicode="" horiz-adv-x="2304" d="M671 603h-13q-47 0 -47 -32q0 -22 20 -22q17 0 28 15t12 39zM1066 639h62v3q1 4 0.5 6.5t-1 7t-2 8t-4.5 6.5t-7.5 5t-11.5 2q-28 0 -36 -38zM1606 603h-12q-48 0 -48 -32q0 -22 20 -22q17 0 28 15t12 39zM1925 629q0 41 -30 41q-19 0 -31 -20t-12 -51q0 -42 28 -42 q20 0 32.5 20t12.5 52zM480 770h87l-44 -262h-56l32 201l-71 -201h-39l-4 200l-34 -200h-53l44 262h81l2 -163zM733 663q0 -6 -4 -42q-16 -101 -17 -113h-47l1 22q-20 -26 -58 -26q-23 0 -37.5 16t-14.5 42q0 39 26 60.5t73 21.5q14 0 23 -1q0 3 0.5 5.5t1 4.5t0.5 3 q0 20 -36 20q-29 0 -59 -10q0 4 7 48q38 11 67 11q74 0 74 -62zM889 721l-8 -49q-22 3 -41 3q-27 0 -27 -17q0 -8 4.5 -12t21.5 -11q40 -19 40 -60q0 -72 -87 -71q-34 0 -58 6q0 2 7 49q29 -8 51 -8q32 0 32 19q0 7 -4.5 11.5t-21.5 12.5q-43 20 -43 59q0 72 84 72 q30 0 50 -4zM977 721h28l-7 -52h-29q-2 -17 -6.5 -40.5t-7 -38.5t-2.5 -18q0 -16 19 -16q8 0 16 2l-8 -47q-21 -7 -40 -7q-43 0 -45 47q0 12 8 56q3 20 25 146h55zM1180 648q0 -23 -7 -52h-111q-3 -22 10 -33t38 -11q30 0 58 14l-9 -54q-30 -8 -57 -8q-95 0 -95 95 q0 55 27.5 90.5t69.5 35.5q35 0 55.5 -21t20.5 -56zM1319 722q-13 -23 -22 -62q-22 2 -31 -24t-25 -128h-56l3 14q22 130 29 199h51l-3 -33q14 21 25.5 29.5t28.5 4.5zM1506 763l-9 -57q-28 14 -50 14q-31 0 -51 -27.5t-20 -70.5q0 -30 13.5 -47t38.5 -17q21 0 48 13 l-10 -59q-28 -8 -50 -8q-45 0 -71.5 30.5t-26.5 82.5q0 70 35.5 114.5t91.5 44.5q26 0 61 -13zM1668 663q0 -18 -4 -42q-13 -79 -17 -113h-46l1 22q-20 -26 -59 -26q-23 0 -37 16t-14 42q0 39 25.5 60.5t72.5 21.5q15 0 23 -1q2 7 2 13q0 20 -36 20q-29 0 -59 -10q0 4 8 48 q38 11 67 11q73 0 73 -62zM1809 722q-14 -24 -21 -62q-23 2 -31.5 -23t-25.5 -129h-56l3 14q19 104 29 199h52q0 -11 -4 -33q15 21 26.5 29.5t27.5 4.5zM1950 770h56l-43 -262h-53l3 19q-23 -23 -52 -23q-31 0 -49.5 24t-18.5 64q0 53 27.5 92t64.5 39q31 0 53 -29z M2061 640q0 148 -72.5 273t-198 198t-273.5 73q-181 0 -328 -110q127 -116 171 -284h-50q-44 150 -158 253q-114 -103 -158 -253h-50q44 168 171 284q-147 110 -328 110q-148 0 -273.5 -73t-198 -198t-72.5 -273t72.5 -273t198 -198t273.5 -73q181 0 328 110 q-120 111 -165 264h50q46 -138 152 -233q106 95 152 233h50q-45 -153 -165 -264q147 -110 328 -110q148 0 273.5 73t198 198t72.5 273zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" /> -<glyph unicode="" horiz-adv-x="2304" d="M313 759q0 -51 -36 -84q-29 -26 -89 -26h-17v220h17q61 0 89 -27q36 -31 36 -83zM2089 824q0 -52 -64 -52h-19v101h20q63 0 63 -49zM380 759q0 74 -50 120.5t-129 46.5h-95v-333h95q74 0 119 38q60 51 60 128zM410 593h65v333h-65v-333zM730 694q0 40 -20.5 62t-75.5 42 q-29 10 -39.5 19t-10.5 23q0 16 13.5 26.5t34.5 10.5q29 0 53 -27l34 44q-41 37 -98 37q-44 0 -74 -27.5t-30 -67.5q0 -35 18 -55.5t64 -36.5q37 -13 45 -19q19 -12 19 -34q0 -20 -14 -33.5t-36 -13.5q-48 0 -71 44l-42 -40q44 -64 115 -64q51 0 83 30.5t32 79.5zM1008 604 v77q-37 -37 -78 -37q-49 0 -80.5 32.5t-31.5 82.5q0 48 31.5 81.5t77.5 33.5q43 0 81 -38v77q-40 20 -80 20q-74 0 -125.5 -50.5t-51.5 -123.5t51 -123.5t125 -50.5q42 0 81 19zM2240 0v527q-65 -40 -144.5 -84t-237.5 -117t-329.5 -137.5t-417.5 -134.5t-504 -118h1569 q26 0 45 19t19 45zM1389 757q0 75 -53 128t-128 53t-128 -53t-53 -128t53 -128t128 -53t128 53t53 128zM1541 584l144 342h-71l-90 -224l-89 224h-71l142 -342h35zM1714 593h184v56h-119v90h115v56h-115v74h119v57h-184v-333zM2105 593h80l-105 140q76 16 76 94q0 47 -31 73 t-87 26h-97v-333h65v133h9zM2304 1274v-1268q0 -56 -38.5 -95t-93.5 -39h-2040q-55 0 -93.5 39t-38.5 95v1268q0 56 38.5 95t93.5 39h2040q55 0 93.5 -39t38.5 -95z" /> -<glyph unicode="" horiz-adv-x="2304" d="M119 854h89l-45 108zM740 328l74 79l-70 79h-163v-49h142v-55h-142v-54h159zM898 406l99 -110v217zM1186 453q0 33 -40 33h-84v-69h83q41 0 41 36zM1475 457q0 29 -42 29h-82v-61h81q43 0 43 32zM1197 923q0 29 -42 29h-82v-60h81q43 0 43 31zM1656 854h89l-44 108z M699 1009v-271h-66v212l-94 -212h-57l-94 212v-212h-132l-25 60h-135l-25 -60h-70l116 271h96l110 -257v257h106l85 -184l77 184h108zM1255 453q0 -20 -5.5 -35t-14 -25t-22.5 -16.5t-26 -10t-31.5 -4.5t-31.5 -1t-32.5 0.5t-29.5 0.5v-91h-126l-80 90l-83 -90h-256v271h260 l80 -89l82 89h207q109 0 109 -89zM964 794v-56h-217v271h217v-57h-152v-49h148v-55h-148v-54h152zM2304 235v-229q0 -55 -38.5 -94.5t-93.5 -39.5h-2040q-55 0 -93.5 39.5t-38.5 94.5v678h111l25 61h55l25 -61h218v46l19 -46h113l20 47v-47h541v99l10 1q10 0 10 -14v-86h279 v23q23 -12 55 -18t52.5 -6.5t63 0.5t51.5 1l25 61h56l25 -61h227v58l34 -58h182v378h-180v-44l-25 44h-185v-44l-23 44h-249q-69 0 -109 -22v22h-172v-22q-24 22 -73 22h-628l-43 -97l-43 97h-198v-44l-22 44h-169l-78 -179v391q0 55 38.5 94.5t93.5 39.5h2040 q55 0 93.5 -39.5t38.5 -94.5v-678h-120q-51 0 -81 -22v22h-177q-55 0 -78 -22v22h-316v-22q-31 22 -87 22h-209v-22q-23 22 -91 22h-234l-54 -58l-50 58h-349v-378h343l55 59l52 -59h211v89h21q59 0 90 13v-102h174v99h8q8 0 10 -2t2 -10v-87h529q57 0 88 24v-24h168 q60 0 95 17zM1546 469q0 -23 -12 -43t-34 -29q25 -9 34 -26t9 -46v-54h-65v45q0 33 -12 43.5t-46 10.5h-69v-99h-65v271h154q48 0 77 -15t29 -58zM1269 936q0 -24 -12.5 -44t-33.5 -29q26 -9 34.5 -25.5t8.5 -46.5v-53h-65q0 9 0.5 26.5t0 25t-3 18.5t-8.5 16t-17.5 8.5 t-29.5 3.5h-70v-98h-64v271l153 -1q49 0 78 -14.5t29 -57.5zM1798 327v-56h-216v271h216v-56h-151v-49h148v-55h-148v-54zM1372 1009v-271h-66v271h66zM2065 357q0 -86 -102 -86h-126v58h126q34 0 34 25q0 16 -17 21t-41.5 5t-49.5 3.5t-42 22.5t-17 55q0 39 26 60t66 21 h130v-57h-119q-36 0 -36 -25q0 -16 17.5 -20.5t42 -4t49 -2.5t42 -21.5t17.5 -54.5zM2304 407v-101q-24 -35 -88 -35h-125v58h125q33 0 33 25q0 13 -12.5 19t-31 5.5t-40 2t-40 8t-31 24t-12.5 48.5q0 39 26.5 60t66.5 21h129v-57h-118q-36 0 -36 -25q0 -20 29 -22t68.5 -5 t56.5 -26zM2139 1008v-270h-92l-122 203v-203h-132l-26 60h-134l-25 -60h-75q-129 0 -129 133q0 138 133 138h63v-59q-7 0 -28 1t-28.5 0.5t-23 -2t-21.5 -6.5t-14.5 -13.5t-11.5 -23t-3 -33.5q0 -38 13.5 -58t49.5 -20h29l92 213h97l109 -256v256h99l114 -188v188h66z" /> -<glyph unicode="" horiz-adv-x="2304" d="M322 689h-15q-19 0 -19 18q0 28 19 85q5 15 15 19.5t28 4.5q77 0 77 -49q0 -41 -30.5 -59.5t-74.5 -18.5zM664 528q-47 0 -47 29q0 62 123 62l3 -3q-5 -88 -79 -88zM1438 687h-15q-19 0 -19 19q0 28 19 85q5 15 14.5 19t28.5 4q77 0 77 -49q0 -41 -30.5 -59.5 t-74.5 -18.5zM1780 527q-47 0 -47 30q0 62 123 62l3 -3q-5 -89 -79 -89zM373 894h-128q-8 0 -14.5 -4t-8.5 -7.5t-7 -12.5q-3 -7 -45 -190t-42 -192q0 -7 5.5 -12.5t13.5 -5.5h62q25 0 32.5 34.5l15 69t32.5 34.5q47 0 87.5 7.5t80.5 24.5t63.5 52.5t23.5 84.5 q0 36 -14.5 61t-41 36.5t-53.5 15.5t-62 4zM719 798q-38 0 -74 -6q-2 0 -8.5 -1t-9 -1.5l-7.5 -1.5t-7.5 -2t-6.5 -3t-6.5 -4t-5 -5t-4.5 -7t-4 -9q-9 -29 -9 -39t9 -10q5 0 21.5 5t19.5 6q30 8 58 8q74 0 74 -36q0 -11 -10 -14q-8 -2 -18 -3t-21.5 -1.5t-17.5 -1.5 q-38 -4 -64.5 -10t-56.5 -19.5t-45.5 -39t-15.5 -62.5q0 -38 26 -59.5t64 -21.5q24 0 45.5 6.5t33 13t38.5 23.5q-3 -7 -3 -15t5.5 -13.5t12.5 -5.5h56q1 1 7 3.5t7.5 3.5t5 3.5t5 5.5t2.5 8l45 194q4 13 4 30q0 81 -145 81zM1247 793h-74q-22 0 -39 -23q-5 -7 -29.5 -51 t-46.5 -81.5t-26 -38.5l-5 4q0 77 -27 166q-1 5 -3.5 8.5t-6 6.5t-6.5 5t-8.5 3t-8.5 1.5t-9.5 1t-9 0.5h-10h-8.5q-38 0 -38 -21l1 -5q5 -53 25 -151t25 -143q2 -16 2 -24q0 -19 -30.5 -61.5t-30.5 -58.5q0 -13 40 -13q61 0 76 25l245 415q10 20 10 26q0 9 -8 9zM1489 892 h-129q-18 0 -29 -23q-6 -13 -46.5 -191.5t-40.5 -190.5q0 -20 43 -20h7.5h9h9t9.5 1t8.5 2t8.5 3t6.5 4.5t5.5 6t3 8.5l21 91q2 10 10.5 17t19.5 7q47 0 87.5 7t80.5 24.5t63.5 52.5t23.5 84q0 36 -14.5 61t-41 36.5t-53.5 15.5t-62 4zM1835 798q-26 0 -74 -6 q-38 -6 -48 -16q-7 -8 -11 -19q-8 -24 -8 -39q0 -10 8 -10q1 0 41 12q30 8 58 8q74 0 74 -36q0 -12 -10 -14q-4 -1 -57 -7q-38 -4 -64.5 -10t-56.5 -19.5t-45.5 -39t-15.5 -62.5t26 -58.5t64 -21.5q24 0 45 6t34 13t38 24q-3 -15 -3 -16q0 -5 2 -8.5t6.5 -5.5t8 -3.5 t10.5 -2t9.5 -0.5h9.5h8q42 0 48 25l45 194q3 15 3 31q0 81 -145 81zM2157 889h-55q-25 0 -33 -40q-10 -44 -36.5 -167t-42.5 -190v-5q0 -16 16 -18h1h57q10 0 18.5 6.5t10.5 16.5l83 374h-1l1 5q0 7 -5.5 12.5t-13.5 5.5zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048 q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" /> -<glyph unicode="" horiz-adv-x="2304" d="M1597 633q0 -69 -21 -106q-19 -35 -52 -35q-23 0 -41 9v224q29 30 57 30q57 0 57 -122zM2035 669h-110q6 98 56 98q51 0 54 -98zM476 534q0 59 -33 91.5t-101 57.5q-36 13 -52 24t-16 25q0 26 38 26q58 0 124 -33l18 112q-67 32 -149 32q-77 0 -123 -38q-48 -39 -48 -109 q0 -58 32.5 -90.5t99.5 -56.5q39 -14 54.5 -25.5t15.5 -27.5q0 -31 -48 -31q-29 0 -70 12.5t-72 30.5l-18 -113q72 -41 168 -41q81 0 129 37q51 41 51 117zM771 749l19 111h-96v135l-129 -21l-18 -114l-46 -8l-17 -103h62v-219q0 -84 44 -120q38 -30 111 -30q32 0 79 11v118 q-32 -7 -44 -7q-42 0 -42 50v197h77zM1087 724v139q-15 3 -28 3q-32 0 -55.5 -16t-33.5 -46l-10 56h-131v-471h150v306q26 31 82 31q16 0 26 -2zM1124 389h150v471h-150v-471zM1746 638q0 122 -45 179q-40 52 -111 52q-64 0 -117 -56l-8 47h-132v-645l150 25v151 q36 -11 68 -11q83 0 134 56q61 65 61 202zM1278 986q0 33 -23 56t-56 23t-56 -23t-23 -56t23 -56.5t56 -23.5t56 23.5t23 56.5zM2176 629q0 113 -48 176q-50 64 -144 64q-96 0 -151.5 -66t-55.5 -180q0 -128 63 -188q55 -55 161 -55q101 0 160 40l-16 103q-57 -31 -128 -31 q-43 0 -63 19q-23 19 -28 66h248q2 14 2 52zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" /> -<glyph unicode="" horiz-adv-x="2048" d="M1558 684q61 -356 298 -556q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-180.5 74.5t-75.5 180.5zM1024 -176q16 0 16 16t-16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5zM2026 1424q8 -10 7.5 -23.5t-10.5 -22.5 l-1872 -1622q-10 -8 -23.5 -7t-21.5 11l-84 96q-8 10 -7.5 23.5t10.5 21.5l186 161q-19 32 -19 66q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q124 -18 219 -82.5t148 -157.5 l418 363q10 8 23.5 7t21.5 -11z" /> -<glyph unicode="" horiz-adv-x="2048" d="M1040 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM503 315l877 760q-42 88 -132.5 146.5t-223.5 58.5q-93 0 -169.5 -31.5t-121.5 -80.5t-69 -103t-24 -105q0 -384 -137 -645zM1856 128 q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-180.5 74.5t-75.5 180.5l149 129h757q-166 187 -227 459l111 97q61 -356 298 -556zM1942 1520l84 -96q8 -10 7.5 -23.5t-10.5 -22.5l-1872 -1622q-10 -8 -23.5 -7t-21.5 11l-84 96q-8 10 -7.5 23.5t10.5 21.5l186 161 q-19 32 -19 66q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q124 -18 219 -82.5t148 -157.5l418 363q10 8 23.5 7t21.5 -11z" /> -<glyph unicode="" horiz-adv-x="1408" d="M512 160v704q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-704q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM768 160v704q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-704q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1024 160v704q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-704 q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM480 1152h448l-48 117q-7 9 -17 11h-317q-10 -2 -17 -11zM1408 1120v-64q0 -14 -9 -23t-23 -9h-96v-948q0 -83 -47 -143.5t-113 -60.5h-832q-66 0 -113 58.5t-47 141.5v952h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h309l70 167 q15 37 54 63t79 26h320q40 0 79 -26t54 -63l70 -167h309q14 0 23 -9t9 -23z" /> -<glyph unicode="" d="M1150 462v-109q0 -50 -36.5 -89t-94 -60.5t-118 -32.5t-117.5 -11q-205 0 -342.5 139t-137.5 346q0 203 136 339t339 136q34 0 75.5 -4.5t93 -18t92.5 -34t69 -56.5t28 -81v-109q0 -16 -16 -16h-118q-16 0 -16 16v70q0 43 -65.5 67.5t-137.5 24.5q-140 0 -228.5 -91.5 t-88.5 -237.5q0 -151 91.5 -249.5t233.5 -98.5q68 0 138 24t70 66v70q0 7 4.5 11.5t10.5 4.5h119q6 0 11 -4.5t5 -11.5zM768 1280q-130 0 -248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5 t-51 248.5t-136.5 204t-204 136.5t-248.5 51zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" d="M972 761q0 108 -53.5 169t-147.5 61q-63 0 -124 -30.5t-110 -84.5t-79.5 -137t-30.5 -180q0 -112 53.5 -173t150.5 -61q96 0 176 66.5t122.5 166t42.5 203.5zM1536 640q0 -111 -37 -197t-98.5 -135t-131.5 -74.5t-145 -27.5q-6 0 -15.5 -0.5t-16.5 -0.5q-95 0 -142 53 q-28 33 -33 83q-52 -66 -131.5 -110t-173.5 -44q-161 0 -249.5 95.5t-88.5 269.5q0 157 66 290t179 210.5t246 77.5q87 0 155 -35.5t106 -99.5l2 19l11 56q1 6 5.5 12t9.5 6h118q5 0 13 -11q5 -5 3 -16l-120 -614q-5 -24 -5 -48q0 -39 12.5 -52t44.5 -13q28 1 57 5.5t73 24 t77 50t57 89.5t24 137q0 292 -174 466t-466 174q-130 0 -248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51q228 0 405 144q11 9 24 8t21 -12l41 -49q8 -12 7 -24q-2 -13 -12 -22q-102 -83 -227.5 -128t-258.5 -45q-156 0 -298 61 t-245 164t-164 245t-61 298t61 298t164 245t245 164t298 61q344 0 556 -212t212 -556z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1698 1442q94 -94 94 -226.5t-94 -225.5l-225 -223l104 -104q10 -10 10 -23t-10 -23l-210 -210q-10 -10 -23 -10t-23 10l-105 105l-603 -603q-37 -37 -90 -37h-203l-256 -128l-64 64l128 256v203q0 53 37 90l603 603l-105 105q-10 10 -10 23t10 23l210 210q10 10 23 10 t23 -10l104 -104l223 225q93 94 225.5 94t226.5 -94zM512 64l576 576l-192 192l-576 -576v-192h192z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1615 1536q70 0 122.5 -46.5t52.5 -116.5q0 -63 -45 -151q-332 -629 -465 -752q-97 -91 -218 -91q-126 0 -216.5 92.5t-90.5 219.5q0 128 92 212l638 579q59 54 130 54zM706 502q39 -76 106.5 -130t150.5 -76l1 -71q4 -213 -129.5 -347t-348.5 -134q-123 0 -218 46.5 t-152.5 127.5t-86.5 183t-29 220q7 -5 41 -30t62 -44.5t59 -36.5t46 -17q41 0 55 37q25 66 57.5 112.5t69.5 76t88 47.5t103 25.5t125 10.5z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1792 128v-384h-1792v384q45 0 85 14t59 27.5t47 37.5q30 27 51.5 38t56.5 11t55.5 -11t52.5 -38q29 -25 47 -38t58 -27t86 -14q45 0 85 14.5t58 27t48 37.5q21 19 32.5 27t31 15t43.5 7q35 0 56.5 -11t51.5 -38q28 -24 47 -37.5t59 -27.5t85 -14t85 14t59 27.5t47 37.5 q30 27 51.5 38t56.5 11q34 0 55.5 -11t51.5 -38q28 -24 47 -37.5t59 -27.5t85 -14zM1792 448v-192q-35 0 -55.5 11t-52.5 38q-29 25 -47 38t-58 27t-85 14q-46 0 -86 -14t-58 -27t-47 -38q-22 -19 -33 -27t-31 -15t-44 -7q-35 0 -56.5 11t-51.5 38q-29 25 -47 38t-58 27 t-86 14q-45 0 -85 -14.5t-58 -27t-48 -37.5q-21 -19 -32.5 -27t-31 -15t-43.5 -7q-35 0 -56.5 11t-51.5 38q-28 24 -47 37.5t-59 27.5t-85 14q-46 0 -86 -14t-58 -27t-47 -38q-30 -27 -51.5 -38t-56.5 -11v192q0 80 56 136t136 56h64v448h256v-448h256v448h256v-448h256v448 h256v-448h64q80 0 136 -56t56 -136zM512 1312q0 -77 -36 -118.5t-92 -41.5q-53 0 -90.5 37.5t-37.5 90.5q0 29 9.5 51t23.5 34t31 28t31 31.5t23.5 44.5t9.5 67q38 0 83 -74t45 -150zM1024 1312q0 -77 -36 -118.5t-92 -41.5q-53 0 -90.5 37.5t-37.5 90.5q0 29 9.5 51 t23.5 34t31 28t31 31.5t23.5 44.5t9.5 67q38 0 83 -74t45 -150zM1536 1312q0 -77 -36 -118.5t-92 -41.5q-53 0 -90.5 37.5t-37.5 90.5q0 29 9.5 51t23.5 34t31 28t31 31.5t23.5 44.5t9.5 67q38 0 83 -74t45 -150z" /> -<glyph unicode="" horiz-adv-x="2048" d="M2048 0v-128h-2048v1536h128v-1408h1920zM1664 1024l256 -896h-1664v576l448 576l576 -576z" /> -<glyph unicode="" horiz-adv-x="1792" d="M768 646l546 -546q-106 -108 -247.5 -168t-298.5 -60q-209 0 -385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103v-762zM955 640h773q0 -157 -60 -298.5t-168 -247.5zM1664 768h-768v768q209 0 385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" horiz-adv-x="2048" d="M2048 0v-128h-2048v1536h128v-1408h1920zM1920 1248v-435q0 -21 -19.5 -29.5t-35.5 7.5l-121 121l-633 -633q-10 -10 -23 -10t-23 10l-233 233l-416 -416l-192 192l585 585q10 10 23 10t23 -10l233 -233l464 464l-121 121q-16 16 -7.5 35.5t29.5 19.5h435q14 0 23 -9 t9 -23z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1292 832q0 -6 10 -41q10 -29 25 -49.5t41 -34t44 -20t55 -16.5q325 -91 325 -332q0 -146 -105.5 -242.5t-254.5 -96.5q-59 0 -111.5 18.5t-91.5 45.5t-77 74.5t-63 87.5t-53.5 103.5t-43.5 103t-39.5 106.5t-35.5 95q-32 81 -61.5 133.5t-73.5 96.5t-104 64t-142 20 q-96 0 -183 -55.5t-138 -144.5t-51 -185q0 -160 106.5 -279.5t263.5 -119.5q177 0 258 95q56 63 83 116l84 -152q-15 -34 -44 -70l1 -1q-131 -152 -388 -152q-147 0 -269.5 79t-190.5 207.5t-68 274.5q0 105 43.5 206t116 176.5t172 121.5t204.5 46q87 0 159 -19t123.5 -50 t95 -80t72.5 -99t58.5 -117t50.5 -124.5t50 -130.5t55 -127q96 -200 233 -200q81 0 138.5 48.5t57.5 128.5q0 42 -19 72t-50.5 46t-72.5 31.5t-84.5 27t-87.5 34t-81 52t-65 82t-39 122.5q-3 16 -3 33q0 110 87.5 192t198.5 78q78 -3 120.5 -14.5t90.5 -53.5h-1 q12 -11 23 -24.5t26 -36t19 -27.5l-129 -99q-26 49 -54 70v1q-23 21 -97 21q-49 0 -84 -33t-35 -83z" /> -<glyph unicode="" d="M1432 484q0 173 -234 239q-35 10 -53 16.5t-38 25t-29 46.5q0 2 -2 8.5t-3 12t-1 7.5q0 36 24.5 59.5t60.5 23.5q54 0 71 -15h-1q20 -15 39 -51l93 71q-39 54 -49 64q-33 29 -67.5 39t-85.5 10q-80 0 -142 -57.5t-62 -137.5q0 -7 2 -23q16 -96 64.5 -140t148.5 -73 q29 -8 49 -15.5t45 -21.5t38.5 -34.5t13.5 -46.5v-5q1 -58 -40.5 -93t-100.5 -35q-97 0 -167 144q-23 47 -51.5 121.5t-48 125.5t-54 110.5t-74 95.5t-103.5 60.5t-147 24.5q-101 0 -192 -56t-144 -148t-50 -192v-1q4 -108 50.5 -199t133.5 -147.5t196 -56.5q186 0 279 110 q20 27 31 51l-60 109q-42 -80 -99 -116t-146 -36q-115 0 -191 87t-76 204q0 105 82 189t186 84q112 0 170 -53.5t104 -172.5q8 -21 25.5 -68.5t28.5 -76.5t31.5 -74.5t38.5 -74t45.5 -62.5t55.5 -53.5t66 -33t80 -13.5q107 0 183 69.5t76 174.5zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" horiz-adv-x="2048" d="M1152 640q0 104 -40.5 198.5t-109.5 163.5t-163.5 109.5t-198.5 40.5t-198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5t198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5zM1920 640q0 104 -40.5 198.5 t-109.5 163.5t-163.5 109.5t-198.5 40.5h-386q119 -90 188.5 -224t69.5 -288t-69.5 -288t-188.5 -224h386q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5zM2048 640q0 -130 -51 -248.5t-136.5 -204t-204 -136.5t-248.5 -51h-768q-130 0 -248.5 51t-204 136.5 t-136.5 204t-51 248.5t51 248.5t136.5 204t204 136.5t248.5 51h768q130 0 248.5 -51t204 -136.5t136.5 -204t51 -248.5z" /> -<glyph unicode="" horiz-adv-x="2048" d="M0 640q0 130 51 248.5t136.5 204t204 136.5t248.5 51h768q130 0 248.5 -51t204 -136.5t136.5 -204t51 -248.5t-51 -248.5t-136.5 -204t-204 -136.5t-248.5 -51h-768q-130 0 -248.5 51t-204 136.5t-136.5 204t-51 248.5zM1408 128q104 0 198.5 40.5t163.5 109.5 t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5t-163.5 109.5t-198.5 40.5t-198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5z" /> -<glyph unicode="" horiz-adv-x="2304" d="M762 384h-314q-40 0 -57.5 35t6.5 67l188 251q-65 31 -137 31q-132 0 -226 -94t-94 -226t94 -226t226 -94q115 0 203 72.5t111 183.5zM576 512h186q-18 85 -75 148zM1056 512l288 384h-480l-99 -132q105 -103 126 -252h165zM2176 448q0 132 -94 226t-226 94 q-60 0 -121 -24l174 -260q15 -23 10 -49t-27 -40q-15 -11 -36 -11q-35 0 -53 29l-174 260q-93 -95 -93 -225q0 -132 94 -226t226 -94t226 94t94 226zM2304 448q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 97 39.5 183.5t109.5 149.5l-65 98l-353 -469 q-18 -26 -51 -26h-197q-23 -164 -149 -274t-294 -110q-185 0 -316.5 131.5t-131.5 316.5t131.5 316.5t316.5 131.5q114 0 215 -55l137 183h-224q-26 0 -45 19t-19 45t19 45t45 19h384v-128h435l-85 128h-222q-26 0 -45 19t-19 45t19 45t45 19h256q33 0 53 -28l267 -400 q91 44 192 44q185 0 316.5 -131.5t131.5 -316.5z" /> -<glyph unicode="" d="M384 320q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1408 320q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1362 716l-72 384q-5 23 -22.5 37.5t-40.5 14.5 h-918q-23 0 -40.5 -14.5t-22.5 -37.5l-72 -384q-5 -30 14 -53t49 -23h1062q30 0 49 23t14 53zM1136 1328q0 20 -14 34t-34 14h-640q-20 0 -34 -14t-14 -34t14 -34t34 -14h640q20 0 34 14t14 34zM1536 603v-603h-128v-128q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 t-37.5 90.5v128h-768v-128q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5v128h-128v603q0 112 25 223l103 454q9 78 97.5 137t230 89t312.5 30t312.5 -30t230 -89t97.5 -137l105 -454q23 -102 23 -223z" /> -<glyph unicode="" horiz-adv-x="2048" d="M1463 704q0 -35 -25 -60.5t-61 -25.5h-702q-36 0 -61 25.5t-25 60.5t25 60.5t61 25.5h702q36 0 61 -25.5t25 -60.5zM1677 704q0 86 -23 170h-982q-36 0 -61 25t-25 60q0 36 25 61t61 25h908q-88 143 -235 227t-320 84q-177 0 -327.5 -87.5t-238 -237.5t-87.5 -327 q0 -86 23 -170h982q36 0 61 -25t25 -60q0 -36 -25 -61t-61 -25h-908q88 -143 235.5 -227t320.5 -84q132 0 253 51.5t208 139t139 208t52 253.5zM2048 959q0 -35 -25 -60t-61 -25h-131q17 -85 17 -170q0 -167 -65.5 -319.5t-175.5 -263t-262.5 -176t-319.5 -65.5 q-246 0 -448.5 133t-301.5 350h-189q-36 0 -61 25t-25 61q0 35 25 60t61 25h132q-17 85 -17 170q0 167 65.5 319.5t175.5 263t262.5 176t320.5 65.5q245 0 447.5 -133t301.5 -350h188q36 0 61 -25t25 -61z" /> -<glyph unicode="" horiz-adv-x="1280" d="M953 1158l-114 -328l117 -21q165 451 165 518q0 56 -38 56q-57 0 -130 -225zM654 471l33 -88q37 42 71 67l-33 5.5t-38.5 7t-32.5 8.5zM362 1367q0 -98 159 -521q18 10 49 10q15 0 75 -5l-121 351q-75 220 -123 220q-19 0 -29 -17.5t-10 -37.5zM283 608q0 -36 51.5 -119 t117.5 -153t100 -70q14 0 25.5 13t11.5 27q0 24 -32 102q-13 32 -32 72t-47.5 89t-61.5 81t-62 32q-20 0 -45.5 -27t-25.5 -47zM125 273q0 -41 25 -104q59 -145 183.5 -227t281.5 -82q227 0 382 170q152 169 152 427q0 43 -1 67t-11.5 62t-30.5 56q-56 49 -211.5 75.5 t-270.5 26.5q-37 0 -49 -11q-12 -5 -12 -35q0 -34 21.5 -60t55.5 -40t77.5 -23.5t87.5 -11.5t85 -4t70 0h23q24 0 40 -19q15 -19 19 -55q-28 -28 -96 -54q-61 -22 -93 -46q-64 -46 -108.5 -114t-44.5 -137q0 -31 18.5 -88.5t18.5 -87.5l-3 -12q-4 -12 -4 -14 q-137 10 -146 216q-8 -2 -41 -2q2 -7 2 -21q0 -53 -40.5 -89.5t-94.5 -36.5q-82 0 -166.5 78t-84.5 159q0 34 33 67q52 -64 60 -76q77 -104 133 -104q12 0 26.5 8.5t14.5 20.5q0 34 -87.5 145t-116.5 111q-43 0 -70 -44.5t-27 -90.5zM11 264q0 101 42.5 163t136.5 88 q-28 74 -28 104q0 62 61 123t122 61q29 0 70 -15q-163 462 -163 567q0 80 41 130.5t119 50.5q131 0 325 -581q6 -17 8 -23q6 16 29 79.5t43.5 118.5t54 127.5t64.5 123t70.5 86.5t76.5 36q71 0 112 -49t41 -122q0 -108 -159 -550q61 -15 100.5 -46t58.5 -78t26 -93.5 t7 -110.5q0 -150 -47 -280t-132 -225t-211 -150t-278 -55q-111 0 -223 42q-149 57 -258 191.5t-109 286.5z" /> -<glyph unicode="" horiz-adv-x="2048" d="M785 528h207q-14 -158 -98.5 -248.5t-214.5 -90.5q-162 0 -254.5 116t-92.5 316q0 194 93 311.5t233 117.5q148 0 232 -87t97 -247h-203q-5 64 -35.5 99t-81.5 35q-57 0 -88.5 -60.5t-31.5 -177.5q0 -48 5 -84t18 -69.5t40 -51.5t66 -18q95 0 109 139zM1497 528h206 q-14 -158 -98 -248.5t-214 -90.5q-162 0 -254.5 116t-92.5 316q0 194 93 311.5t233 117.5q148 0 232 -87t97 -247h-204q-4 64 -35 99t-81 35q-57 0 -88.5 -60.5t-31.5 -177.5q0 -48 5 -84t18 -69.5t39.5 -51.5t65.5 -18q49 0 76.5 38t33.5 101zM1856 647q0 207 -15.5 307 t-60.5 161q-6 8 -13.5 14t-21.5 15t-16 11q-86 63 -697 63q-625 0 -710 -63q-5 -4 -17.5 -11.5t-21 -14t-14.5 -14.5q-45 -60 -60 -159.5t-15 -308.5q0 -208 15 -307.5t60 -160.5q6 -8 15 -15t20.5 -14t17.5 -12q44 -33 239.5 -49t470.5 -16q610 0 697 65q5 4 17 11t20.5 14 t13.5 16q46 60 61 159t15 309zM2048 1408v-1536h-2048v1536h2048z" /> -<glyph unicode="" d="M992 912v-496q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v496q0 112 -80 192t-192 80h-272v-1152q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v1344q0 14 9 23t23 9h464q135 0 249 -66.5t180.5 -180.5t66.5 -249zM1376 1376v-880q0 -135 -66.5 -249t-180.5 -180.5 t-249 -66.5h-464q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h160q14 0 23 -9t9 -23v-768h272q112 0 192 80t80 192v880q0 14 9 23t23 9h160q14 0 23 -9t9 -23z" /> -<glyph unicode="" d="M1311 694v-114q0 -24 -13.5 -38t-37.5 -14h-202q-24 0 -38 14t-14 38v114q0 24 14 38t38 14h202q24 0 37.5 -14t13.5 -38zM821 464v250q0 53 -32.5 85.5t-85.5 32.5h-133q-68 0 -96 -52q-28 52 -96 52h-130q-53 0 -85.5 -32.5t-32.5 -85.5v-250q0 -22 21 -22h55 q22 0 22 22v230q0 24 13.5 38t38.5 14h94q24 0 38 -14t14 -38v-230q0 -22 21 -22h54q22 0 22 22v230q0 24 14 38t38 14h97q24 0 37.5 -14t13.5 -38v-230q0 -22 22 -22h55q21 0 21 22zM1410 560v154q0 53 -33 85.5t-86 32.5h-264q-53 0 -86 -32.5t-33 -85.5v-410 q0 -21 22 -21h55q21 0 21 21v180q31 -42 94 -42h191q53 0 86 32.5t33 85.5zM1536 1176v-1072q0 -96 -68 -164t-164 -68h-1072q-96 0 -164 68t-68 164v1072q0 96 68 164t164 68h1072q96 0 164 -68t68 -164z" /> -<glyph unicode="" d="M915 450h-294l147 551zM1001 128h311l-324 1024h-440l-324 -1024h311l383 314zM1536 1120v-960q0 -118 -85 -203t-203 -85h-960q-118 0 -203 85t-85 203v960q0 118 85 203t203 85h960q118 0 203 -85t85 -203z" /> -<glyph unicode="" horiz-adv-x="2048" d="M2048 641q0 -21 -13 -36.5t-33 -19.5l-205 -356q3 -9 3 -18q0 -20 -12.5 -35.5t-32.5 -19.5l-193 -337q3 -8 3 -16q0 -23 -16.5 -40t-40.5 -17q-25 0 -41 18h-400q-17 -20 -43 -20t-43 20h-399q-17 -20 -43 -20q-23 0 -40 16.5t-17 40.5q0 8 4 20l-193 335 q-20 4 -32.5 19.5t-12.5 35.5q0 9 3 18l-206 356q-20 5 -32.5 20.5t-12.5 35.5q0 21 13.5 36.5t33.5 19.5l199 344q0 1 -0.5 3t-0.5 3q0 36 34 51l209 363q-4 10 -4 18q0 24 17 40.5t40 16.5q26 0 44 -21h396q16 21 43 21t43 -21h398q18 21 44 21q23 0 40 -16.5t17 -40.5 q0 -6 -4 -18l207 -358q23 -1 39 -17.5t16 -38.5q0 -13 -7 -27l187 -324q19 -4 31.5 -19.5t12.5 -35.5zM1063 -158h389l-342 354h-143l-342 -354h360q18 16 39 16t39 -16zM112 654q1 -4 1 -13q0 -10 -2 -15l208 -360q2 0 4.5 -1t5.5 -2.5l5 -2.5l188 199v347l-187 194 q-13 -8 -29 -10zM986 1438h-388l190 -200l554 200h-280q-16 -16 -38 -16t-38 16zM1689 226q1 6 5 11l-64 68l-17 -79h76zM1583 226l22 105l-252 266l-296 -307l63 -64h463zM1495 -142l16 28l65 310h-427l333 -343q8 4 13 5zM578 -158h5l342 354h-373v-335l4 -6q14 -5 22 -13 zM552 226h402l64 66l-309 321l-157 -166v-221zM359 226h163v189l-168 -177q4 -8 5 -12zM358 1051q0 -1 0.5 -2t0.5 -2q0 -16 -8 -29l171 -177v269zM552 1121v-311l153 -157l297 314l-223 236zM556 1425l-4 -8v-264l205 74l-191 201q-6 -2 -10 -3zM1447 1438h-16l-621 -224 l213 -225zM1023 946l-297 -315l311 -319l296 307zM688 634l-136 141v-284zM1038 270l-42 -44h85zM1374 618l238 -251l132 624l-3 5l-1 1zM1718 1018q-8 13 -8 29v2l-216 376q-5 1 -13 5l-437 -463l310 -327zM522 1142v223l-163 -282zM522 196h-163l163 -283v283zM1607 196 l-48 -227l130 227h-82zM1729 266l207 361q-2 10 -2 14q0 1 3 16l-171 296l-129 -612l77 -82q5 3 15 7z" /> -<glyph unicode="" d="M0 856q0 131 91.5 226.5t222.5 95.5h742l352 358v-1470q0 -132 -91.5 -227t-222.5 -95h-780q-131 0 -222.5 95t-91.5 227v790zM1232 102l-176 180v425q0 46 -32 79t-78 33h-484q-46 0 -78 -33t-32 -79v-492q0 -46 32.5 -79.5t77.5 -33.5h770z" /> -<glyph unicode="" d="M934 1386q-317 -121 -556 -362.5t-358 -560.5q-20 89 -20 176q0 208 102.5 384.5t278.5 279t384 102.5q82 0 169 -19zM1203 1267q93 -65 164 -155q-389 -113 -674.5 -400.5t-396.5 -676.5q-93 72 -155 162q112 386 395 671t667 399zM470 -67q115 356 379.5 622t619.5 384 q40 -92 54 -195q-292 -120 -516 -345t-343 -518q-103 14 -194 52zM1536 -125q-193 50 -367 115q-135 -84 -290 -107q109 205 274 370.5t369 275.5q-21 -152 -101 -284q65 -175 115 -370z" /> -<glyph unicode="" horiz-adv-x="2048" d="M1893 1144l155 -1272q-131 0 -257 57q-200 91 -393 91q-226 0 -374 -148q-148 148 -374 148q-193 0 -393 -91q-128 -57 -252 -57h-5l155 1272q224 127 482 127q233 0 387 -106q154 106 387 106q258 0 482 -127zM1398 157q129 0 232 -28.5t260 -93.5l-124 1021 q-171 78 -368 78q-224 0 -374 -141q-150 141 -374 141q-197 0 -368 -78l-124 -1021q105 43 165.5 65t148.5 39.5t178 17.5q202 0 374 -108q172 108 374 108zM1438 191l-55 907q-211 -4 -359 -155q-152 155 -374 155q-176 0 -336 -66l-114 -941q124 51 228.5 76t221.5 25 q209 0 374 -102q172 107 374 102z" /> -<glyph unicode="" horiz-adv-x="2048" d="M1500 165v733q0 21 -15 36t-35 15h-93q-20 0 -35 -15t-15 -36v-733q0 -20 15 -35t35 -15h93q20 0 35 15t15 35zM1216 165v531q0 20 -15 35t-35 15h-101q-20 0 -35 -15t-15 -35v-531q0 -20 15 -35t35 -15h101q20 0 35 15t15 35zM924 165v429q0 20 -15 35t-35 15h-101 q-20 0 -35 -15t-15 -35v-429q0 -20 15 -35t35 -15h101q20 0 35 15t15 35zM632 165v362q0 20 -15 35t-35 15h-101q-20 0 -35 -15t-15 -35v-362q0 -20 15 -35t35 -15h101q20 0 35 15t15 35zM2048 311q0 -166 -118 -284t-284 -118h-1244q-166 0 -284 118t-118 284 q0 116 63 214.5t168 148.5q-10 34 -10 73q0 113 80.5 193.5t193.5 80.5q102 0 180 -67q45 183 194 300t338 117q149 0 275 -73.5t199.5 -199.5t73.5 -275q0 -66 -14 -122q135 -33 221 -142.5t86 -247.5z" /> -<glyph unicode="" d="M0 1536h1536v-1392l-776 -338l-760 338v1392zM1436 209v926h-1336v-926l661 -294zM1436 1235v201h-1336v-201h1336zM181 937v-115h-37v115h37zM181 789v-115h-37v115h37zM181 641v-115h-37v115h37zM181 493v-115h-37v115h37zM181 345v-115h-37v115h37zM207 202l15 34 l105 -47l-15 -33zM343 142l15 34l105 -46l-15 -34zM478 82l15 34l105 -46l-15 -34zM614 23l15 33l104 -46l-15 -34zM797 10l105 46l15 -33l-105 -47zM932 70l105 46l15 -34l-105 -46zM1068 130l105 46l15 -34l-105 -46zM1203 189l105 47l15 -34l-105 -46zM259 1389v-36h-114 v36h114zM421 1389v-36h-115v36h115zM583 1389v-36h-115v36h115zM744 1389v-36h-114v36h114zM906 1389v-36h-114v36h114zM1068 1389v-36h-115v36h115zM1230 1389v-36h-115v36h115zM1391 1389v-36h-114v36h114zM181 1049v-79h-37v115h115v-36h-78zM421 1085v-36h-115v36h115z M583 1085v-36h-115v36h115zM744 1085v-36h-114v36h114zM906 1085v-36h-114v36h114zM1068 1085v-36h-115v36h115zM1230 1085v-36h-115v36h115zM1355 970v79h-78v36h115v-115h-37zM1355 822v115h37v-115h-37zM1355 674v115h37v-115h-37zM1355 526v115h37v-115h-37zM1355 378 v115h37v-115h-37zM1355 230v115h37v-115h-37zM760 265q-129 0 -221 91.5t-92 221.5q0 129 92 221t221 92q130 0 221.5 -92t91.5 -221q0 -130 -91.5 -221.5t-221.5 -91.5zM595 646q0 -36 19.5 -56.5t49.5 -25t64 -7t64 -2t49.5 -9t19.5 -30.5q0 -49 -112 -49q-97 0 -123 51 h-3l-31 -63q67 -42 162 -42q29 0 56.5 5t55.5 16t45.5 33t17.5 53q0 46 -27.5 69.5t-67.5 27t-79.5 3t-67 5t-27.5 25.5q0 21 20.5 33t40.5 15t41 3q34 0 70.5 -11t51.5 -34h3l30 58q-3 1 -21 8.5t-22.5 9t-19.5 7t-22 7t-20 4.5t-24 4t-23 1q-29 0 -56.5 -5t-54 -16.5 t-43 -34t-16.5 -53.5z" /> -<glyph unicode="" horiz-adv-x="2048" d="M863 504q0 112 -79.5 191.5t-191.5 79.5t-191 -79.5t-79 -191.5t79 -191t191 -79t191.5 79t79.5 191zM1726 505q0 112 -79 191t-191 79t-191.5 -79t-79.5 -191q0 -113 79.5 -192t191.5 -79t191 79.5t79 191.5zM2048 1314v-1348q0 -44 -31.5 -75.5t-76.5 -31.5h-1832 q-45 0 -76.5 31.5t-31.5 75.5v1348q0 44 31.5 75.5t76.5 31.5h431q44 0 76 -31.5t32 -75.5v-161h754v161q0 44 32 75.5t76 31.5h431q45 0 76.5 -31.5t31.5 -75.5z" /> -<glyph unicode="" horiz-adv-x="2048" d="M1430 953zM1690 749q148 0 253 -98.5t105 -244.5q0 -157 -109 -261.5t-267 -104.5q-85 0 -162 27.5t-138 73.5t-118 106t-109 126.5t-103.5 132.5t-108.5 126t-117 106t-136 73.5t-159 27.5q-154 0 -251.5 -91.5t-97.5 -244.5q0 -157 104 -250t263 -93q100 0 208 37.5 t193 98.5q5 4 21 18.5t30 24t22 9.5q14 0 24.5 -10.5t10.5 -24.5q0 -24 -60 -77q-101 -88 -234.5 -142t-260.5 -54q-133 0 -245.5 58t-180 165t-67.5 241q0 205 141.5 341t347.5 136q120 0 226.5 -43.5t185.5 -113t151.5 -153t139 -167.5t133.5 -153.5t149.5 -113 t172.5 -43.5q102 0 168.5 61.5t66.5 162.5q0 95 -64.5 159t-159.5 64q-30 0 -81.5 -18.5t-68.5 -18.5q-20 0 -35.5 15t-15.5 35q0 18 8.5 57t8.5 59q0 159 -107.5 263t-266.5 104q-58 0 -111.5 -18.5t-84 -40.5t-55.5 -40.5t-33 -18.5q-15 0 -25.5 10.5t-10.5 25.5 q0 19 25 46q59 67 147 103.5t182 36.5q191 0 318 -125.5t127 -315.5q0 -37 -4 -66q57 15 115 15z" /> -<glyph unicode="" horiz-adv-x="1664" d="M1216 832q0 26 -19 45t-45 19h-128v128q0 26 -19 45t-45 19t-45 -19t-19 -45v-128h-128q-26 0 -45 -19t-19 -45t19 -45t45 -19h128v-128q0 -26 19 -45t45 -19t45 19t19 45v128h128q26 0 45 19t19 45zM640 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5 t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1536 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1664 1088v-512q0 -24 -16 -42.5t-41 -21.5l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920 q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1280 832q0 26 -19 45t-45 19t-45 -19l-147 -146v293q0 26 -19 45t-45 19t-45 -19t-19 -45v-293l-147 146q-19 19 -45 19t-45 -19t-19 -45t19 -45l256 -256q19 -19 45 -19t45 19l256 256q19 19 19 45zM640 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5 t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1536 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1664 1088v-512q0 -24 -16 -42.5t-41 -21.5l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920 q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45z" /> -<glyph unicode="" horiz-adv-x="2048" d="M212 768l623 -665l-300 665h-323zM1024 -4l349 772h-698zM538 896l204 384h-262l-288 -384h346zM1213 103l623 665h-323zM683 896h682l-204 384h-274zM1510 896h346l-288 384h-262zM1651 1382l384 -512q14 -18 13 -41.5t-17 -40.5l-960 -1024q-18 -20 -47 -20t-47 20 l-960 1024q-16 17 -17 40.5t13 41.5l384 512q18 26 51 26h1152q33 0 51 -26z" /> -<glyph unicode="" horiz-adv-x="2048" d="M1811 -19q19 19 45 19t45 -19l128 -128l-90 -90l-83 83l-83 -83q-18 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83 q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-128 128l90 90l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83 q19 19 45 19t45 -19l83 -83zM237 19q-19 -19 -45 -19t-45 19l-128 128l90 90l83 -82l83 82q19 19 45 19t45 -19l83 -82l64 64v293l-210 314q-17 26 -7 56.5t40 40.5l177 58v299h128v128h256v128h256v-128h256v-128h128v-299l177 -58q30 -10 40 -40.5t-7 -56.5l-210 -314 v-293l19 18q19 19 45 19t45 -19l83 -82l83 82q19 19 45 19t45 -19l128 -128l-90 -90l-83 83l-83 -83q-18 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83 q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83zM640 1152v-128l384 128l384 -128v128h-128v128h-512v-128h-128z" /> -<glyph unicode="" d="M576 0l96 448l-96 128l-128 64zM832 0l128 640l-128 -64l-96 -128zM992 1010q-2 4 -4 6q-10 8 -96 8q-70 0 -167 -19q-7 -2 -21 -2t-21 2q-97 19 -167 19q-86 0 -96 -8q-2 -2 -4 -6q2 -18 4 -27q2 -3 7.5 -6.5t7.5 -10.5q2 -4 7.5 -20.5t7 -20.5t7.5 -17t8.5 -17t9 -14 t12 -13.5t14 -9.5t17.5 -8t20.5 -4t24.5 -2q36 0 59 12.5t32.5 30t14.5 34.5t11.5 29.5t17.5 12.5h12q11 0 17.5 -12.5t11.5 -29.5t14.5 -34.5t32.5 -30t59 -12.5q13 0 24.5 2t20.5 4t17.5 8t14 9.5t12 13.5t9 14t8.5 17t7.5 17t7 20.5t7.5 20.5q2 7 7.5 10.5t7.5 6.5 q2 9 4 27zM1408 131q0 -121 -73 -190t-194 -69h-874q-121 0 -194 69t-73 190q0 61 4.5 118t19 125.5t37.5 123.5t63.5 103.5t93.5 74.5l-90 220h214q-22 64 -22 128q0 12 2 32q-194 40 -194 96q0 57 210 99q17 62 51.5 134t70.5 114q32 37 76 37q30 0 84 -31t84 -31t84 31 t84 31q44 0 76 -37q36 -42 70.5 -114t51.5 -134q210 -42 210 -99q0 -56 -194 -96q7 -81 -20 -160h214l-82 -225q63 -33 107.5 -96.5t65.5 -143.5t29 -151.5t8 -148.5z" /> -<glyph unicode="" horiz-adv-x="2304" d="M2301 500q12 -103 -22 -198.5t-99 -163.5t-158.5 -106t-196.5 -31q-161 11 -279.5 125t-134.5 274q-12 111 27.5 210.5t118.5 170.5l-71 107q-96 -80 -151 -194t-55 -244q0 -27 -18.5 -46.5t-45.5 -19.5h-256h-69q-23 -164 -149 -274t-294 -110q-185 0 -316.5 131.5 t-131.5 316.5t131.5 316.5t316.5 131.5q76 0 152 -27l24 45q-123 110 -304 110h-64q-26 0 -45 19t-19 45t19 45t45 19h128q78 0 145 -13.5t116.5 -38.5t71.5 -39.5t51 -36.5h512h115l-85 128h-222q-30 0 -49 22.5t-14 52.5q4 23 23 38t43 15h253q33 0 53 -28l70 -105 l114 114q19 19 46 19h101q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-179l115 -172q131 63 275 36q143 -26 244 -134.5t118 -253.5zM448 128q115 0 203 72.5t111 183.5h-314q-35 0 -55 31q-18 32 -1 63l147 277q-47 13 -91 13q-132 0 -226 -94t-94 -226t94 -226 t226 -94zM1856 128q132 0 226 94t94 226t-94 226t-226 94q-60 0 -121 -24l174 -260q15 -23 10 -49t-27 -40q-15 -11 -36 -11q-35 0 -53 29l-174 260q-93 -95 -93 -225q0 -132 94 -226t226 -94z" /> -<glyph unicode="" d="M1408 0q0 -63 -61.5 -113.5t-164 -81t-225 -46t-253.5 -15.5t-253.5 15.5t-225 46t-164 81t-61.5 113.5q0 49 33 88.5t91 66.5t118 44.5t131 29.5q26 5 48 -10.5t26 -41.5q5 -26 -10.5 -48t-41.5 -26q-58 -10 -106 -23.5t-76.5 -25.5t-48.5 -23.5t-27.5 -19.5t-8.5 -12 q3 -11 27 -26.5t73 -33t114 -32.5t160.5 -25t201.5 -10t201.5 10t160.5 25t114 33t73 33.5t27 27.5q-1 4 -8.5 11t-27.5 19t-48.5 23.5t-76.5 25t-106 23.5q-26 4 -41.5 26t-10.5 48q4 26 26 41.5t48 10.5q71 -12 131 -29.5t118 -44.5t91 -66.5t33 -88.5zM1024 896v-384 q0 -26 -19 -45t-45 -19h-64v-384q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v384h-64q-26 0 -45 19t-19 45v384q0 53 37.5 90.5t90.5 37.5h384q53 0 90.5 -37.5t37.5 -90.5zM928 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5 t158.5 -65.5t65.5 -158.5z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1280 512h305q-5 -6 -10 -10.5t-9 -7.5l-3 -4l-623 -600q-18 -18 -44 -18t-44 18l-624 602q-5 2 -21 20h369q22 0 39.5 13.5t22.5 34.5l70 281l190 -667q6 -20 23 -33t39 -13q21 0 38 13t23 33l146 485l56 -112q18 -35 57 -35zM1792 940q0 -145 -103 -300h-369l-111 221 q-8 17 -25.5 27t-36.5 8q-45 -5 -56 -46l-129 -430l-196 686q-6 20 -23.5 33t-39.5 13t-39 -13.5t-22 -34.5l-116 -464h-423q-103 155 -103 300q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5q224 0 351 -124 t127 -344z" /> -<glyph unicode="" horiz-adv-x="1280" d="M1152 960q0 -221 -147.5 -384.5t-364.5 -187.5v-260h224q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v260q-150 16 -271.5 103t-186 224t-52.5 292 q11 134 80.5 249t182 188t245.5 88q170 19 319 -54t236 -212t87 -306zM128 960q0 -185 131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1280 1504q0 14 9 23t23 9h416q26 0 45 -19t19 -45v-416q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v262l-419 -420q87 -104 129.5 -236.5t30.5 -276.5q-22 -250 -200.5 -431t-428.5 -206q-163 -17 -314 39.5t-256.5 162t-162 256.5t-39.5 314q25 250 206 428.5 t431 200.5q144 12 276.5 -30.5t236.5 -129.5l419 419h-261q-14 0 -23 9t-9 23v64zM704 -128q117 0 223.5 45.5t184 123t123 184t45.5 223.5t-45.5 223.5t-123 184t-184 123t-223.5 45.5t-223.5 -45.5t-184 -123t-123 -184t-45.5 -223.5t45.5 -223.5t123 -184t184 -123 t223.5 -45.5z" /> -<glyph unicode="" horiz-adv-x="1280" d="M830 1220q145 -72 233.5 -210.5t88.5 -305.5q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-217 24 -364.5 187.5 t-147.5 384.5q0 167 88.5 305.5t233.5 210.5q-165 96 -228 273q-6 16 3.5 29.5t26.5 13.5h69q21 0 29 -20q44 -106 140 -171t214 -65t214 65t140 171q8 20 37 20h61q17 0 26.5 -13.5t3.5 -29.5q-63 -177 -228 -273zM576 256q185 0 316.5 131.5t131.5 316.5t-131.5 316.5 t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" /> -<glyph unicode="" d="M1024 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q126 -158 126 -359q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64 q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-149 16 -270.5 103t-186.5 223.5t-53 291.5q16 204 160 353.5t347 172.5q118 14 228 -19t198 -103l255 254h-134q-14 0 -23 9t-9 23v64zM576 256q185 0 316.5 131.5t131.5 316.5t-131.5 316.5 t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1280 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q126 -158 126 -359q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64 q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-217 24 -364.5 187.5t-147.5 384.5q0 201 126 359l-52 53l-101 -111q-9 -10 -22 -10.5t-23 7.5l-48 44q-10 8 -10.5 21.5t8.5 23.5l105 115l-111 112v-134q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9 t-9 23v288q0 26 19 45t45 19h288q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-133l106 -107l86 94q9 10 22 10.5t23 -7.5l48 -44q10 -8 10.5 -21.5t-8.5 -23.5l-90 -99l57 -56q158 126 359 126t359 -126l255 254h-134q-14 0 -23 9t-9 23v64zM832 256q185 0 316.5 131.5 t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1790 1007q12 -155 -52.5 -292t-186 -224t-271.5 -103v-260h224q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-512v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23 t23 9h224v260q-150 16 -271.5 103t-186 224t-52.5 292q17 206 164.5 356.5t352.5 169.5q206 21 377 -94q171 115 377 94q205 -19 352.5 -169.5t164.5 -356.5zM896 647q128 131 128 313t-128 313q-128 -131 -128 -313t128 -313zM576 512q115 0 218 57q-154 165 -154 391 q0 224 154 391q-103 57 -218 57q-185 0 -316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5zM1152 128v260q-137 15 -256 94q-119 -79 -256 -94v-260h512zM1216 512q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5q-115 0 -218 -57q154 -167 154 -391 q0 -226 -154 -391q103 -57 218 -57z" /> -<glyph unicode="" horiz-adv-x="1920" d="M1536 1120q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q76 -95 107.5 -214t9.5 -247q-31 -182 -166 -312t-318 -156q-210 -29 -384.5 80t-241.5 300q-117 6 -221 57.5t-177.5 133t-113.5 192.5t-32 230 q9 135 78 252t182 191.5t248 89.5q118 14 227.5 -19t198.5 -103l255 254h-134q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q59 -74 93 -169q182 -9 328 -124l255 254h-134q-14 0 -23 9 t-9 23v64zM1024 704q0 20 -4 58q-162 -25 -271 -150t-109 -292q0 -20 4 -58q162 25 271 150t109 292zM128 704q0 -168 111 -294t276 -149q-3 29 -3 59q0 210 135 369.5t338 196.5q-53 120 -163.5 193t-245.5 73q-185 0 -316.5 -131.5t-131.5 -316.5zM1088 -128 q185 0 316.5 131.5t131.5 316.5q0 168 -111 294t-276 149q3 -29 3 -59q0 -210 -135 -369.5t-338 -196.5q53 -120 163.5 -193t245.5 -73z" /> -<glyph unicode="" horiz-adv-x="2048" d="M1664 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q76 -95 107.5 -214t9.5 -247q-32 -180 -164.5 -310t-313.5 -157q-223 -34 -409 90q-117 -78 -256 -93v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23 t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-155 17 -279.5 109.5t-187 237.5t-39.5 307q25 187 159.5 322.5t320.5 164.5q224 34 410 -90q146 97 320 97q201 0 359 -126l255 254h-134q-14 0 -23 9 t-9 23v64zM896 391q128 131 128 313t-128 313q-128 -131 -128 -313t128 -313zM128 704q0 -185 131.5 -316.5t316.5 -131.5q117 0 218 57q-154 167 -154 391t154 391q-101 57 -218 57q-185 0 -316.5 -131.5t-131.5 -316.5zM1216 256q185 0 316.5 131.5t131.5 316.5 t-131.5 316.5t-316.5 131.5q-117 0 -218 -57q154 -167 154 -391t-154 -391q101 -57 218 -57z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1728 1536q26 0 45 -19t19 -45v-416q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v262l-229 -230l156 -156q9 -10 9 -23t-9 -22l-46 -46q-9 -9 -22 -9t-23 9l-156 157l-99 -100q87 -104 129.5 -236.5t30.5 -276.5q-22 -250 -200.5 -431t-428.5 -206q-163 -17 -314 39.5 t-256.5 162t-162 256.5t-39.5 314q25 250 206 428.5t431 200.5q144 12 276.5 -30.5t236.5 -129.5l99 99l-156 156q-9 10 -9 23t9 22l46 46q9 9 22 9t23 -9l156 -156l229 229h-261q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h416zM1280 448q0 117 -45.5 223.5t-123 184t-184 123 t-223.5 45.5t-223.5 -45.5t-184 -123t-123 -184t-45.5 -223.5t45.5 -223.5t123 -184t184 -123t223.5 -45.5t223.5 45.5t184 123t123 184t45.5 223.5z" /> -<glyph unicode="" horiz-adv-x="1280" d="M640 892q217 -24 364.5 -187.5t147.5 -384.5q0 -167 -87 -306t-236 -212t-319 -54q-133 15 -245.5 88t-182 188t-80.5 249q-12 155 52.5 292t186 224t271.5 103v132h-160q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h160v165l-92 -92q-10 -9 -23 -9t-22 9l-46 46q-9 9 -9 22 t9 23l202 201q19 19 45 19t45 -19l202 -201q9 -10 9 -23t-9 -22l-46 -46q-9 -9 -22 -9t-23 9l-92 92v-165h160q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-160v-132zM576 -128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5 t131.5 -316.5t316.5 -131.5z" /> -<glyph unicode="" horiz-adv-x="2048" d="M2029 685q19 -19 19 -45t-19 -45l-294 -294q-9 -10 -22.5 -10t-22.5 10l-45 45q-10 9 -10 22.5t10 22.5l185 185h-294v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-131q-12 -119 -67 -226t-139 -183.5t-196.5 -121.5t-234.5 -45q-180 0 -330.5 91t-234.5 247 t-74 337q8 162 94 300t226.5 219.5t302.5 85.5q166 4 310.5 -71.5t235.5 -208.5t107 -296h131v224q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-224h294l-185 185q-10 9 -10 22.5t10 22.5l45 45q9 10 22.5 10t22.5 -10zM640 128q104 0 198.5 40.5t163.5 109.5t109.5 163.5 t40.5 198.5t-40.5 198.5t-109.5 163.5t-163.5 109.5t-198.5 40.5t-198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5z" /> -<glyph unicode="" horiz-adv-x="1280" d="M1152 960q0 -221 -147.5 -384.5t-364.5 -187.5v-612q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v612q-217 24 -364.5 187.5t-147.5 384.5q0 117 45.5 223.5t123 184t184 123t223.5 45.5t223.5 -45.5t184 -123t123 -184t45.5 -223.5zM576 512q185 0 316.5 131.5 t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" /> -<glyph unicode="" horiz-adv-x="1792" /> -<glyph unicode="" horiz-adv-x="1792" /> -<glyph unicode="" horiz-adv-x="1792" /> -<glyph unicode="" d="M1451 1408q35 0 60 -25t25 -60v-1366q0 -35 -25 -60t-60 -25h-391v595h199l30 232h-229v148q0 56 23.5 84t91.5 28l122 1v207q-63 9 -178 9q-136 0 -217.5 -80t-81.5 -226v-171h-200v-232h200v-595h-735q-35 0 -60 25t-25 60v1366q0 35 25 60t60 25h1366z" /> -<glyph unicode="" horiz-adv-x="1280" d="M0 939q0 108 37.5 203.5t103.5 166.5t152 123t185 78t202 26q158 0 294 -66.5t221 -193.5t85 -287q0 -96 -19 -188t-60 -177t-100 -149.5t-145 -103t-189 -38.5q-68 0 -135 32t-96 88q-10 -39 -28 -112.5t-23.5 -95t-20.5 -71t-26 -71t-32 -62.5t-46 -77.5t-62 -86.5 l-14 -5l-9 10q-15 157 -15 188q0 92 21.5 206.5t66.5 287.5t52 203q-32 65 -32 169q0 83 52 156t132 73q61 0 95 -40.5t34 -102.5q0 -66 -44 -191t-44 -187q0 -63 45 -104.5t109 -41.5q55 0 102 25t78.5 68t56 95t38 110.5t20 111t6.5 99.5q0 173 -109.5 269.5t-285.5 96.5 q-200 0 -334 -129.5t-134 -328.5q0 -44 12.5 -85t27 -65t27 -45.5t12.5 -30.5q0 -28 -15 -73t-37 -45q-2 0 -17 3q-51 15 -90.5 56t-61 94.5t-32.5 108t-11 106.5z" /> -<glyph unicode="" d="M985 562q13 0 97.5 -44t89.5 -53q2 -5 2 -15q0 -33 -17 -76q-16 -39 -71 -65.5t-102 -26.5q-57 0 -190 62q-98 45 -170 118t-148 185q-72 107 -71 194v8q3 91 74 158q24 22 52 22q6 0 18 -1.5t19 -1.5q19 0 26.5 -6.5t15.5 -27.5q8 -20 33 -88t25 -75q0 -21 -34.5 -57.5 t-34.5 -46.5q0 -7 5 -15q34 -73 102 -137q56 -53 151 -101q12 -7 22 -7q15 0 54 48.5t52 48.5zM782 32q127 0 243.5 50t200.5 134t134 200.5t50 243.5t-50 243.5t-134 200.5t-200.5 134t-243.5 50t-243.5 -50t-200.5 -134t-134 -200.5t-50 -243.5q0 -203 120 -368l-79 -233 l242 77q158 -104 345 -104zM782 1414q153 0 292.5 -60t240.5 -161t161 -240.5t60 -292.5t-60 -292.5t-161 -240.5t-240.5 -161t-292.5 -60q-195 0 -365 94l-417 -134l136 405q-108 178 -108 389q0 153 60 292.5t161 240.5t240.5 161t292.5 60z" /> -<glyph unicode="" horiz-adv-x="1792" d="M128 128h1024v128h-1024v-128zM128 640h1024v128h-1024v-128zM1696 192q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM128 1152h1024v128h-1024v-128zM1696 704q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1696 1216 q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1792 384v-384h-1792v384h1792zM1792 896v-384h-1792v384h1792zM1792 1408v-384h-1792v384h1792z" /> -<glyph unicode="" horiz-adv-x="2048" d="M704 640q-159 0 -271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5t-112.5 -271.5t-271.5 -112.5zM1664 512h352q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-352v-352q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5 t-9.5 22.5v352h-352q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h352v352q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5v-352zM928 288q0 -52 38 -90t90 -38h256v-238q-68 -50 -171 -50h-874q-121 0 -194 69t-73 190q0 53 3.5 103.5t14 109t26.5 108.5 t43 97.5t62 81t85.5 53.5t111.5 20q19 0 39 -17q79 -61 154.5 -91.5t164.5 -30.5t164.5 30.5t154.5 91.5q20 17 39 17q132 0 217 -96h-223q-52 0 -90 -38t-38 -90v-192z" /> -<glyph unicode="" horiz-adv-x="2048" d="M704 640q-159 0 -271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5t-112.5 -271.5t-271.5 -112.5zM1781 320l249 -249q9 -9 9 -23q0 -13 -9 -22l-136 -136q-9 -9 -22 -9q-14 0 -23 9l-249 249l-249 -249q-9 -9 -23 -9q-13 0 -22 9l-136 136 q-9 9 -9 22q0 14 9 23l249 249l-249 249q-9 9 -9 23q0 13 9 22l136 136q9 9 22 9q14 0 23 -9l249 -249l249 249q9 9 23 9q13 0 22 -9l136 -136q9 -9 9 -22q0 -14 -9 -23zM1283 320l-181 -181q-37 -37 -37 -91q0 -53 37 -90l83 -83q-21 -3 -44 -3h-874q-121 0 -194 69 t-73 190q0 53 3.5 103.5t14 109t26.5 108.5t43 97.5t62 81t85.5 53.5t111.5 20q19 0 39 -17q154 -122 319 -122t319 122q20 17 39 17q28 0 57 -6q-28 -27 -41 -50t-13 -56q0 -54 37 -91z" /> -<glyph unicode="" horiz-adv-x="2048" d="M256 512h1728q26 0 45 -19t19 -45v-448h-256v256h-1536v-256h-256v1216q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-704zM832 832q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM2048 576v64q0 159 -112.5 271.5t-271.5 112.5h-704 q-26 0 -45 -19t-19 -45v-384h1152z" /> -<glyph unicode="" d="M1536 1536l-192 -448h192v-192h-274l-55 -128h329v-192h-411l-357 -832l-357 832h-411v192h329l-55 128h-274v192h192l-192 448h256l323 -768h378l323 768h256zM768 320l108 256h-216z" /> -<glyph unicode="" d="M1088 1536q185 0 316.5 -93.5t131.5 -226.5v-896q0 -130 -125.5 -222t-305.5 -97l213 -202q16 -15 8 -35t-30 -20h-1056q-22 0 -30 20t8 35l213 202q-180 5 -305.5 97t-125.5 222v896q0 133 131.5 226.5t316.5 93.5h640zM768 192q80 0 136 56t56 136t-56 136t-136 56 t-136 -56t-56 -136t56 -136t136 -56zM1344 768v512h-1152v-512h1152z" /> -<glyph unicode="" d="M1088 1536q185 0 316.5 -93.5t131.5 -226.5v-896q0 -130 -125.5 -222t-305.5 -97l213 -202q16 -15 8 -35t-30 -20h-1056q-22 0 -30 20t8 35l213 202q-180 5 -305.5 97t-125.5 222v896q0 133 131.5 226.5t316.5 93.5h640zM288 224q66 0 113 47t47 113t-47 113t-113 47 t-113 -47t-47 -113t47 -113t113 -47zM704 768v512h-544v-512h544zM1248 224q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47zM1408 768v512h-576v-512h576z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1792 204v-209h-642v209h134v926h-6l-314 -1135h-243l-310 1135h-8v-926h135v-209h-538v209h69q21 0 43 19.5t22 37.5v881q0 18 -22 40t-43 22h-69v209h672l221 -821h6l223 821h670v-209h-71q-19 0 -41 -22t-22 -40v-881q0 -18 21.5 -37.5t41.5 -19.5h71z" /> -<glyph unicode="" horiz-adv-x="1792" /> -<glyph unicode="" horiz-adv-x="1792" /> -<glyph unicode="" horiz-adv-x="1792" /> -<glyph unicode="" horiz-adv-x="1792" /> -<glyph unicode="" horiz-adv-x="1792" /> -</font> -</defs></svg> \ No newline at end of file diff --git a/js/categoryreorder/css/font/fontawesome-webfont.ttf b/js/categoryreorder/css/font/fontawesome-webfont.ttf deleted file mode 100644 index ed9372f..0000000 Binary files a/js/categoryreorder/css/font/fontawesome-webfont.ttf and /dev/null differ diff --git a/js/categoryreorder/css/font/fontawesome-webfont.woff b/js/categoryreorder/css/font/fontawesome-webfont.woff deleted file mode 100644 index 8b280b9..0000000 Binary files a/js/categoryreorder/css/font/fontawesome-webfont.woff and /dev/null differ diff --git a/js/categoryreorder/css/font/fontawesome-webfont.woff2 b/js/categoryreorder/css/font/fontawesome-webfont.woff2 deleted file mode 100644 index 3311d58..0000000 Binary files a/js/categoryreorder/css/font/fontawesome-webfont.woff2 and /dev/null differ diff --git a/js/categoryreorder/css/style.css b/js/categoryreorder/css/style.css deleted file mode 100644 index 9b0988e..0000000 --- a/js/categoryreorder/css/style.css +++ /dev/null @@ -1,131 +0,0 @@ -@font-face { - font-family: "FontAwesome"; - src: url('font/fontawesome-webfont.eot'); - src: url('font/fontawesome-webfont.eot?#iefix') format('eot'), - url('font/fontawesome-webfont.woff') format('woff'), - url('font/fontawesome-webfont.ttf') format('truetype'), - url('font/fontawesome-webfont.svg#FontAwesome') format('svg'); - font-weight: normal; - font-style: normal; -} -body { - background-color: #333; -} -.ui-sortable { - width: 350px; - margin: 0px auto 40px auto; - background-color: #ccc; - -webkit-box-shadow: 0px 0px 10px 1px rgba(0, 0, 0, .1); - box-shadow: 0px 0px 10px 1px rgba(0, 0, 0, .1); - list-style-type: none; - padding: 0; -} -.ui-sortable li.ui-state-default { - margin: 0; - font-size: 14px; - color: #fff; - outline: 0; - text-indent: 15px; - background: rgb(78,82,91); - background: -moz-linear-gradient(top, rgb(78,82,91) 0%, rgb(57,61,68) 100%); - background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgb(78,82,91)), color-stop(100%,rgb(57,61,68))); - background: -webkit-linear-gradient(top, rgb(78,82,91) 0%,rgb(57,61,68) 100%); - background: -o-linear-gradient(top, rgb(78,82,91) 0%,rgb(57,61,68) 100%); - background: -ms-linear-gradient(top, rgb(78,82,91) 0%,rgb(57,61,68) 100%); - background: linear-gradient(to bottom, rgb(78,82,91) 0%,rgb(57,61,68) 100%); - border-top: 1px solid rgba(255,255,255,.2); - border-bottom: 1px solid rgba(0,0,0,.5); - text-shadow: -1px -1px 0px rgba(0,0,0,.5); - font-size: 1.1em; - position: relative; - cursor: pointer; - padding: 9px; - text-align: left; -} -.ui-sortable li.ui-state-default:first-child { - border-top: 0; -} -.ui-sortable li.ui-state-default:last-child { - border-bottom: 0; -} -.ui-sortable-placeholder { - border: 3px dashed #aaa; - height: 45px; - width: 344px; - background: #ccc; -} -.ui-sortable li.ui-state-default:after { - content: "\f0c9"; - display: inline-block; - font-family: "FontAwesome"; - position: absolute; - right: 18px; - top: 9px; - text-align: center; - color: rgba(255,255,255,.2); - text-shadow: 0px 0px 0px rgba(0,0,0,0); - cursor: move; -} -#l1catlist, #l2catlist{ - width: 100%; - margin-bottom: 5px; -} -#anchor-content{ - text-align: center; -} -#category_listl1 select, #category_listl2 select { - width: 27%; - padding: 7px; - font-size: 13px; - color: #333; - border: 1px solid #ccc; -} -.update-btn a{ - font-size: 15px; - color: #fff; - cursor: pointer; - padding: 10px 40px; - text-decoration:none; - text-transform: uppercase; - background: #f77d00; - border-radius: 3px; -} -.update-btn a:hover{ - color: #fff; - text-decoration: none; -} -#category_listl3 p { - font-size: 14px; - color: #f00; - border: 1px solid #f00; - padding: 10px 0; - width: 27%; - margin:-40px auto; -} -#update_msg_success { - color: #27ae03; - font-size: 14px; - padding: 0 0 10px 0; -} -#update_msg_error { - color: red; - font-size: 14px; - padding: 0 0 10px 0; -} -#category_listl1 lable, #category_listl2 lable { - font-size: 14px; - font-weight: bold; - color: #3c3c3c; - padding: 0 20px 0 0; - margin-left: -105px; -} -lable.blnk-spc{ - width: 10%; - display: inline-block; -} -.catgry-heading{ - font-size: 16px; - font-weight: bold; - color: #3c3c3c; - text-align: left; -} \ No newline at end of file diff --git a/js/categoryreorder/js/catreorder-common.js b/js/categoryreorder/js/catreorder-common.js deleted file mode 100644 index 8085529..0000000 --- a/js/categoryreorder/js/catreorder-common.js +++ /dev/null @@ -1,21 +0,0 @@ -jQuery(function() { - jQuery("#sortable").sortable({ - placeholder: "ui-sortable-placeholder" - }); - jQuery('#update_msg_success').fadeOut(5000); - }); - -function prepareCatArr(){ - var i = 0; - var finalArr = []; - jQuery("#sortable li").each(function(){ - key = jQuery(this).attr('id'); - finalArr[i] = {}; - finalArr[i]['position'] = i+1; - finalArr[i]['id'] = key; - i++; - }); - var outputArr = JSON.stringify(finalArr); - jQuery("#update_catlist").val(outputArr); - jQuery('#category_list').submit(); -} \ No newline at end of file diff --git a/js/smartwave/jquery/jquery-1.10.2.min.js b/js/smartwave/jquery/jquery-1.10.2.min.js index 692f5b3..da41706 100644 --- a/js/smartwave/jquery/jquery-1.10.2.min.js +++ b/js/smartwave/jquery/jquery-1.10.2.min.js @@ -4,5 +4,3 @@ (function(e,t){var n,r,i=typeof t,o=e.location,a=e.document,s=a.documentElement,l=e.jQuery,u=e.$,c={},p=[],f="1.10.2",d=p.concat,h=p.push,g=p.slice,m=p.indexOf,y=c.toString,v=c.hasOwnProperty,b=f.trim,x=function(e,t){return new x.fn.init(e,t,r)},w=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=/\S+/g,C=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,k=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,E=/^[\],:{}\s]*$/,S=/(?:^|:|,)(?:\s*\[)+/g,A=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,j=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,D=/^-ms-/,L=/-([\da-z])/gi,H=function(e,t){return t.toUpperCase()},q=function(e){(a.addEventListener||"load"===e.type||"complete"===a.readyState)&&(_(),x.ready())},_=function(){a.addEventListener?(a.removeEventListener("DOMContentLoaded",q,!1),e.removeEventListener("load",q,!1)):(a.detachEvent("onreadystatechange",q),e.detachEvent("onload",q))};x.fn=x.prototype={jquery:f,constructor:x,init:function(e,n,r){var i,o;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof x?n[0]:n,x.merge(this,x.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:a,!0)),k.test(i[1])&&x.isPlainObject(n))for(i in n)x.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(o=a.getElementById(i[2]),o&&o.parentNode){if(o.id!==i[2])return r.find(e);this.length=1,this[0]=o}return this.context=a,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return g.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(g.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},l=2),"object"==typeof s||x.isFunction(s)||(s={}),u===l&&(s=this,--l);u>l;l++)if(null!=(o=arguments[l]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(x.isPlainObject(r)||(n=x.isArray(r)))?(n?(n=!1,a=e&&x.isArray(e)?e:[]):a=e&&x.isPlainObject(e)?e:{},s[i]=x.extend(c,a,r)):r!==t&&(s[i]=r));return s},x.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=l),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){if(e===!0?!--x.readyWait:!x.isReady){if(!a.body)return setTimeout(x.ready);x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(a,[x]),x.fn.trigger&&x(a).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray||function(e){return"array"===x.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?c[y.call(e)]||"object":typeof e},isPlainObject:function(e){var n;if(!e||"object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!v.call(e,"constructor")&&!v.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(r){return!1}if(x.support.ownLast)for(n in e)return v.call(e,n);for(n in e);return n===t||v.call(e,n)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||a;var r=k.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=x.trim(n),n&&E.test(n.replace(A,"@").replace(j,"]").replace(S,"")))?Function("return "+n)():(x.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||x.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&x.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(D,"ms-").replace(L,H)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:b&&!b.call("\ufeff\u00a0")?function(e){return null==e?"":b.call(e)}:function(e){return null==e?"":(e+"").replace(C,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(m)return m.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return d.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),x.isFunction(e)?(r=g.call(arguments,2),i=function(){return e.apply(n||this,r.concat(g.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):t},access:function(e,n,r,i,o,a,s){var l=0,u=e.length,c=null==r;if("object"===x.type(r)){o=!0;for(l in r)x.access(e,n,l,r[l],!0,a,s)}else if(i!==t&&(o=!0,x.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(x(e),n)})),n))for(;u>l;l++)n(e[l],r,s?i:i.call(e[l],l,n(e[l],r)));return o?e:c?n.call(e):u?n(e[0],r):a},now:function(){return(new Date).getTime()},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),x.ready.promise=function(t){if(!n)if(n=x.Deferred(),"complete"===a.readyState)setTimeout(x.ready);else if(a.addEventListener)a.addEventListener("DOMContentLoaded",q,!1),e.addEventListener("load",q,!1);else{a.attachEvent("onreadystatechange",q),e.attachEvent("onload",q);var r=!1;try{r=null==e.frameElement&&a.documentElement}catch(i){}r&&r.doScroll&&function o(){if(!x.isReady){try{r.doScroll("left")}catch(e){return setTimeout(o,50)}_(),x.ready()}}()}return n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){c["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=x(a),function(e,t){var n,r,i,o,a,s,l,u,c,p,f,d,h,g,m,y,v,b="sizzle"+-new Date,w=e.document,T=0,C=0,N=st(),k=st(),E=st(),S=!1,A=function(e,t){return e===t?(S=!0,0):0},j=typeof t,D=1<<31,L={}.hasOwnProperty,H=[],q=H.pop,_=H.push,M=H.push,O=H.slice,F=H.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},B="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",P="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",W=R.replace("w","w#"),$="\\["+P+"*("+R+")"+P+"*(?:([*^$|!~]?=)"+P+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+W+")|)|)"+P+"*\\]",I=":("+R+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+$.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+P+"+|((?:^|[^\\\\])(?:\\\\.)*)"+P+"+$","g"),X=RegExp("^"+P+"*,"+P+"*"),U=RegExp("^"+P+"*([>+~]|"+P+")"+P+"*"),V=RegExp(P+"*[+~]"),Y=RegExp("="+P+"*([^\\]'\"]*)"+P+"*\\]","g"),J=RegExp(I),G=RegExp("^"+W+"$"),Q={ID:RegExp("^#("+R+")"),CLASS:RegExp("^\\.("+R+")"),TAG:RegExp("^("+R.replace("w","w*")+")"),ATTR:RegExp("^"+$),PSEUDO:RegExp("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+P+"*(even|odd|(([+-]|)(\\d*)n|)"+P+"*(?:([+-]|)"+P+"*(\\d+)|))"+P+"*\\)|)","i"),bool:RegExp("^(?:"+B+")$","i"),needsContext:RegExp("^"+P+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+P+"*((?:-\\d)?\\d*)"+P+"*\\)|)(?=[^-]|$)","i")},K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,et=/^(?:input|select|textarea|button)$/i,tt=/^h\d$/i,nt=/'|\\/g,rt=RegExp("\\\\([\\da-f]{1,6}"+P+"?|("+P+")|.)","ig"),it=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{M.apply(H=O.call(w.childNodes),w.childNodes),H[w.childNodes.length].nodeType}catch(ot){M={apply:H.length?function(e,t){_.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function at(e,t,n,i){var o,a,s,l,u,c,d,m,y,x;if((t?t.ownerDocument||t:w)!==f&&p(t),t=t||f,n=n||[],!e||"string"!=typeof e)return n;if(1!==(l=t.nodeType)&&9!==l)return[];if(h&&!i){if(o=Z.exec(e))if(s=o[1]){if(9===l){if(a=t.getElementById(s),!a||!a.parentNode)return n;if(a.id===s)return n.push(a),n}else if(t.ownerDocument&&(a=t.ownerDocument.getElementById(s))&&v(t,a)&&a.id===s)return n.push(a),n}else{if(o[2])return M.apply(n,t.getElementsByTagName(e)),n;if((s=o[3])&&r.getElementsByClassName&&t.getElementsByClassName)return M.apply(n,t.getElementsByClassName(s)),n}if(r.qsa&&(!g||!g.test(e))){if(m=d=b,y=t,x=9===l&&e,1===l&&"object"!==t.nodeName.toLowerCase()){c=mt(e),(d=t.getAttribute("id"))?m=d.replace(nt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",u=c.length;while(u--)c[u]=m+yt(c[u]);y=V.test(e)&&t.parentNode||t,x=c.join(",")}if(x)try{return M.apply(n,y.querySelectorAll(x)),n}catch(T){}finally{d||t.removeAttribute("id")}}}return kt(e.replace(z,"$1"),t,n,i)}function st(){var e=[];function t(n,r){return e.push(n+=" ")>o.cacheLength&&delete t[e.shift()],t[n]=r}return t}function lt(e){return e[b]=!0,e}function ut(e){var t=f.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ct(e,t){var n=e.split("|"),r=e.length;while(r--)o.attrHandle[n[r]]=t}function pt(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function ft(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function dt(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function ht(e){return lt(function(t){return t=+t,lt(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}s=at.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},r=at.support={},p=at.setDocument=function(e){var n=e?e.ownerDocument||e:w,i=n.defaultView;return n!==f&&9===n.nodeType&&n.documentElement?(f=n,d=n.documentElement,h=!s(n),i&&i.attachEvent&&i!==i.top&&i.attachEvent("onbeforeunload",function(){p()}),r.attributes=ut(function(e){return e.className="i",!e.getAttribute("className")}),r.getElementsByTagName=ut(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),r.getElementsByClassName=ut(function(e){return e.innerHTML="<div class='a'></div><div class='a i'></div>",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),r.getById=ut(function(e){return d.appendChild(e).id=b,!n.getElementsByName||!n.getElementsByName(b).length}),r.getById?(o.find.ID=function(e,t){if(typeof t.getElementById!==j&&h){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){return e.getAttribute("id")===t}}):(delete o.find.ID,o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),o.find.TAG=r.getElementsByTagName?function(e,n){return typeof n.getElementsByTagName!==j?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},o.find.CLASS=r.getElementsByClassName&&function(e,n){return typeof n.getElementsByClassName!==j&&h?n.getElementsByClassName(e):t},m=[],g=[],(r.qsa=K.test(n.querySelectorAll))&&(ut(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||g.push("\\["+P+"*(?:value|"+B+")"),e.querySelectorAll(":checked").length||g.push(":checked")}),ut(function(e){var t=n.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&g.push("[*^$]="+P+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")})),(r.matchesSelector=K.test(y=d.webkitMatchesSelector||d.mozMatchesSelector||d.oMatchesSelector||d.msMatchesSelector))&&ut(function(e){r.disconnectedMatch=y.call(e,"div"),y.call(e,"[s!='']:x"),m.push("!=",I)}),g=g.length&&RegExp(g.join("|")),m=m.length&&RegExp(m.join("|")),v=K.test(d.contains)||d.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},A=d.compareDocumentPosition?function(e,t){if(e===t)return S=!0,0;var i=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t);return i?1&i||!r.sortDetached&&t.compareDocumentPosition(e)===i?e===n||v(w,e)?-1:t===n||v(w,t)?1:c?F.call(c,e)-F.call(c,t):0:4&i?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return S=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:c?F.call(c,e)-F.call(c,t):0;if(o===a)return pt(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?pt(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},n):f},at.matches=function(e,t){return at(e,null,null,t)},at.matchesSelector=function(e,t){if((e.ownerDocument||e)!==f&&p(e),t=t.replace(Y,"='$1']"),!(!r.matchesSelector||!h||m&&m.test(t)||g&&g.test(t)))try{var n=y.call(e,t);if(n||r.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(i){}return at(t,f,null,[e]).length>0},at.contains=function(e,t){return(e.ownerDocument||e)!==f&&p(e),v(e,t)},at.attr=function(e,n){(e.ownerDocument||e)!==f&&p(e);var i=o.attrHandle[n.toLowerCase()],a=i&&L.call(o.attrHandle,n.toLowerCase())?i(e,n,!h):t;return a===t?r.attributes||!h?e.getAttribute(n):(a=e.getAttributeNode(n))&&a.specified?a.value:null:a},at.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},at.uniqueSort=function(e){var t,n=[],i=0,o=0;if(S=!r.detectDuplicates,c=!r.sortStable&&e.slice(0),e.sort(A),S){while(t=e[o++])t===e[o]&&(i=n.push(o));while(i--)e.splice(n[i],1)}return e},a=at.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=a(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=a(t);return n},o=at.selectors={cacheLength:50,createPseudo:lt,match:Q,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(rt,it),e[3]=(e[4]||e[5]||"").replace(rt,it),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||at.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&at.error(e[0]),e},PSEUDO:function(e){var n,r=!e[5]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]&&e[4]!==t?e[2]=e[4]:r&&J.test(r)&&(n=mt(r,!0))&&(n=r.indexOf(")",r.length-n)-r.length)&&(e[0]=e[0].slice(0,n),e[2]=r.slice(0,n)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(rt,it).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=N[e+" "];return t||(t=RegExp("(^|"+P+")"+e+"("+P+"|$)"))&&N(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=at.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var u,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!l&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[b]||(m[b]={}),u=c[e]||[],d=u[0]===T&&u[1],f=u[0]===T&&u[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[T,d,f];break}}else if(v&&(u=(t[b]||(t[b]={}))[e])&&u[0]===T)f=u[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[b]||(p[b]={}))[e]=[T,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=o.pseudos[e]||o.setFilters[e.toLowerCase()]||at.error("unsupported pseudo: "+e);return r[b]?r(t):r.length>1?(n=[e,e,"",t],o.setFilters.hasOwnProperty(e.toLowerCase())?lt(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=F.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:lt(function(e){var t=[],n=[],r=l(e.replace(z,"$1"));return r[b]?lt(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:lt(function(e){return function(t){return at(e,t).length>0}}),contains:lt(function(e){return function(t){return(t.textContent||t.innerText||a(t)).indexOf(e)>-1}}),lang:lt(function(e){return G.test(e||"")||at.error("unsupported lang: "+e),e=e.replace(rt,it).toLowerCase(),function(t){var n;do if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===d},focus:function(e){return e===f.activeElement&&(!f.hasFocus||f.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!o.pseudos.empty(e)},header:function(e){return tt.test(e.nodeName)},input:function(e){return et.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:ht(function(){return[0]}),last:ht(function(e,t){return[t-1]}),eq:ht(function(e,t,n){return[0>n?n+t:n]}),even:ht(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:ht(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:ht(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:ht(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}},o.pseudos.nth=o.pseudos.eq;for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})o.pseudos[n]=ft(n);for(n in{submit:!0,reset:!0})o.pseudos[n]=dt(n);function gt(){}gt.prototype=o.filters=o.pseudos,o.setFilters=new gt;function mt(e,t){var n,r,i,a,s,l,u,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,l=[],u=o.preFilter;while(s){(!n||(r=X.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),l.push(i=[])),n=!1,(r=U.exec(s))&&(n=r.shift(),i.push({value:n,type:r[0].replace(z," ")}),s=s.slice(n.length));for(a in o.filter)!(r=Q[a].exec(s))||u[a]&&!(r=u[a](r))||(n=r.shift(),i.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?at.error(e):k(e,l).slice(0)}function yt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function vt(e,t,n){var r=t.dir,o=n&&"parentNode"===r,a=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||o)return e(t,n,i)}:function(t,n,s){var l,u,c,p=T+" "+a;if(s){while(t=t[r])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[r])if(1===t.nodeType||o)if(c=t[b]||(t[b]={}),(u=c[r])&&u[0]===p){if((l=u[1])===!0||l===i)return l===!0}else if(u=c[r]=[p],u[1]=e(t,n,s)||i,u[1]===!0)return!0}}function bt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function xt(e,t,n,r,i){var o,a=[],s=0,l=e.length,u=null!=t;for(;l>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),u&&t.push(s));return a}function wt(e,t,n,r,i,o){return r&&!r[b]&&(r=wt(r)),i&&!i[b]&&(i=wt(i,o)),lt(function(o,a,s,l){var u,c,p,f=[],d=[],h=a.length,g=o||Nt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:xt(g,f,e,s,l),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,l),r){u=xt(y,d),r(u,[],s,l),c=u.length;while(c--)(p=u[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){u=[],c=y.length;while(c--)(p=y[c])&&u.push(m[c]=p);i(null,y=[],u,l)}c=y.length;while(c--)(p=y[c])&&(u=i?F.call(o,p):f[c])>-1&&(o[u]=!(a[u]=p))}}else y=xt(y===a?y.splice(h,y.length):y),i?i(null,a,y,l):M.apply(a,y)})}function Tt(e){var t,n,r,i=e.length,a=o.relative[e[0].type],s=a||o.relative[" "],l=a?1:0,c=vt(function(e){return e===t},s,!0),p=vt(function(e){return F.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;i>l;l++)if(n=o.relative[e[l].type])f=[vt(bt(f),n)];else{if(n=o.filter[e[l].type].apply(null,e[l].matches),n[b]){for(r=++l;i>r;r++)if(o.relative[e[r].type])break;return wt(l>1&&bt(f),l>1&&yt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&Tt(e.slice(l,r)),i>r&&Tt(e=e.slice(r)),i>r&&yt(e))}f.push(n)}return bt(f)}function Ct(e,t){var n=0,r=t.length>0,a=e.length>0,s=function(s,l,c,p,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,C=u,N=s||a&&o.find.TAG("*",d&&l.parentNode||l),k=T+=null==C?1:Math.random()||.1;for(w&&(u=l!==f&&l,i=n);null!=(h=N[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,l,c)){p.push(h);break}w&&(T=k,i=++n)}r&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,r&&b!==v){g=0;while(m=t[g++])m(x,y,l,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=q.call(p));y=xt(y)}M.apply(p,y),w&&!s&&y.length>0&&v+t.length>1&&at.uniqueSort(p)}return w&&(T=k,u=C),x};return r?lt(s):s}l=at.compile=function(e,t){var n,r=[],i=[],o=E[e+" "];if(!o){t||(t=mt(e)),n=t.length;while(n--)o=Tt(t[n]),o[b]?r.push(o):i.push(o);o=E(e,Ct(i,r))}return o};function Nt(e,t,n){var r=0,i=t.length;for(;i>r;r++)at(e,t[r],n);return n}function kt(e,t,n,i){var a,s,u,c,p,f=mt(e);if(!i&&1===f.length){if(s=f[0]=f[0].slice(0),s.length>2&&"ID"===(u=s[0]).type&&r.getById&&9===t.nodeType&&h&&o.relative[s[1].type]){if(t=(o.find.ID(u.matches[0].replace(rt,it),t)||[])[0],!t)return n;e=e.slice(s.shift().value.length)}a=Q.needsContext.test(e)?0:s.length;while(a--){if(u=s[a],o.relative[c=u.type])break;if((p=o.find[c])&&(i=p(u.matches[0].replace(rt,it),V.test(s[0].type)&&t.parentNode||t))){if(s.splice(a,1),e=i.length&&yt(s),!e)return M.apply(n,i),n;break}}}return l(e,f)(i,t,!h,n,V.test(e)),n}r.sortStable=b.split("").sort(A).join("")===b,r.detectDuplicates=S,p(),r.sortDetached=ut(function(e){return 1&e.compareDocumentPosition(f.createElement("div"))}),ut(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||ct("type|href|height|width",function(e,n,r){return r?t:e.getAttribute(n,"type"===n.toLowerCase()?1:2)}),r.attributes&&ut(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||ct("value",function(e,n,r){return r||"input"!==e.nodeName.toLowerCase()?t:e.defaultValue}),ut(function(e){return null==e.getAttribute("disabled")})||ct(B,function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&i.specified?i.value:e[n]===!0?n.toLowerCase():null}),x.find=at,x.expr=at.selectors,x.expr[":"]=x.expr.pseudos,x.unique=at.uniqueSort,x.text=at.getText,x.isXMLDoc=at.isXML,x.contains=at.contains}(e);var O={};function F(e){var t=O[e]={};return x.each(e.match(T)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?O[e]||F(e):x.extend({},e);var n,r,i,o,a,s,l=[],u=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=l.length,n=!0;l&&o>a;a++)if(l[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,l&&(u?u.length&&c(u.shift()):r?l=[]:p.disable())},p={add:function(){if(l){var t=l.length;(function i(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&p.has(n)||l.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=l.length:r&&(s=t,c(r))}return this},remove:function(){return l&&x.each(arguments,function(e,t){var r;while((r=x.inArray(t,l,r))>-1)l.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?x.inArray(e,l)>-1:!(!l||!l.length)},empty:function(){return l=[],o=0,this},disable:function(){return l=u=r=t,this},disabled:function(){return!l},lock:function(){return u=t,r||p.disable(),this},locked:function(){return!u},fireWith:function(e,t){return!l||i&&!u||(t=t||[],t=[e,t.slice?t.slice():t],n?u.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var a=o[0],s=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=g.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?g.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,l,u;if(r>1)for(s=Array(r),l=Array(r),u=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(a(t,u,n)).fail(o.reject).progress(a(t,l,s)):--i;return i||o.resolveWith(u,n),o.promise()}}),x.support=function(t){var n,r,o,s,l,u,c,p,f,d=a.createElement("div");if(d.setAttribute("className","t"),d.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",n=d.getElementsByTagName("*")||[],r=d.getElementsByTagName("a")[0],!r||!r.style||!n.length)return t;s=a.createElement("select"),u=s.appendChild(a.createElement("option")),o=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t.getSetAttribute="t"!==d.className,t.leadingWhitespace=3===d.firstChild.nodeType,t.tbody=!d.getElementsByTagName("tbody").length,t.htmlSerialize=!!d.getElementsByTagName("link").length,t.style=/top/.test(r.getAttribute("style")),t.hrefNormalized="/a"===r.getAttribute("href"),t.opacity=/^0.5/.test(r.style.opacity),t.cssFloat=!!r.style.cssFloat,t.checkOn=!!o.value,t.optSelected=u.selected,t.enctype=!!a.createElement("form").enctype,t.html5Clone="<:nav></:nav>"!==a.createElement("nav").cloneNode(!0).outerHTML,t.inlineBlockNeedsLayout=!1,t.shrinkWrapBlocks=!1,t.pixelPosition=!1,t.deleteExpando=!0,t.noCloneEvent=!0,t.reliableMarginRight=!0,t.boxSizingReliable=!0,o.checked=!0,t.noCloneChecked=o.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!u.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}o=a.createElement("input"),o.setAttribute("value",""),t.input=""===o.getAttribute("value"),o.value="t",o.setAttribute("type","radio"),t.radioValue="t"===o.value,o.setAttribute("checked","t"),o.setAttribute("name","t"),l=a.createDocumentFragment(),l.appendChild(o),t.appendChecked=o.checked,t.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip;for(f in x(t))break;return t.ownLast="0"!==f,x(function(){var n,r,o,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",l=a.getElementsByTagName("body")[0];l&&(n=a.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",l.appendChild(n).appendChild(d),d.innerHTML="<table><tr><td></td><td>t</td></tr></table>",o=d.getElementsByTagName("td"),o[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===o[0].offsetHeight,o[0].style.display="",o[1].style.display="none",t.reliableHiddenOffsets=p&&0===o[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",x.swap(l,null!=l.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===d.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(a.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="<div></div>",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(l.style.zoom=1)),l.removeChild(n),n=d=o=r=null)}),n=s=l=u=r=o=null,t }({});var B=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;function R(e,n,r,i){if(x.acceptData(e)){var o,a,s=x.expando,l=e.nodeType,u=l?x.cache:e,c=l?e[s]:e[s]&&s;if(c&&u[c]&&(i||u[c].data)||r!==t||"string"!=typeof n)return c||(c=l?e[s]=p.pop()||x.guid++:s),u[c]||(u[c]=l?{}:{toJSON:x.noop}),("object"==typeof n||"function"==typeof n)&&(i?u[c]=x.extend(u[c],n):u[c].data=x.extend(u[c].data,n)),a=u[c],i||(a.data||(a.data={}),a=a.data),r!==t&&(a[x.camelCase(n)]=r),"string"==typeof n?(o=a[n],null==o&&(o=a[x.camelCase(n)])):o=a,o}}function W(e,t,n){if(x.acceptData(e)){var r,i,o=e.nodeType,a=o?x.cache:e,s=o?e[x.expando]:x.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){x.isArray(t)?t=t.concat(x.map(t,x.camelCase)):t in r?t=[t]:(t=x.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;while(i--)delete r[t[i]];if(n?!I(r):!x.isEmptyObject(r))return}(n||(delete a[s].data,I(a[s])))&&(o?x.cleanData([e],!0):x.support.deleteExpando||a!=a.window?delete a[s]:a[s]=null)}}}x.extend({cache:{},noData:{applet:!0,embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?x.cache[e[x.expando]]:e[x.expando],!!e&&!I(e)},data:function(e,t,n){return R(e,t,n)},removeData:function(e,t){return W(e,t)},_data:function(e,t,n){return R(e,t,n,!0)},_removeData:function(e,t){return W(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&x.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),x.fn.extend({data:function(e,n){var r,i,o=null,a=0,s=this[0];if(e===t){if(this.length&&(o=x.data(s),1===s.nodeType&&!x._data(s,"parsedAttrs"))){for(r=s.attributes;r.length>a;a++)i=r[a].name,0===i.indexOf("data-")&&(i=x.camelCase(i.slice(5)),$(s,i,o[i]));x._data(s,"parsedAttrs",!0)}return o}return"object"==typeof e?this.each(function(){x.data(this,e)}):arguments.length>1?this.each(function(){x.data(this,e,n)}):s?$(s,e,x.data(s,e)):null},removeData:function(e){return this.each(function(){x.removeData(this,e)})}});function $(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(P,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:B.test(r)?x.parseJSON(r):r}catch(o){}x.data(e,n,r)}else r=t}return r}function I(e){var t;for(t in e)if(("data"!==t||!x.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}x.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=x._data(e,n),r&&(!i||x.isArray(r)?i=x._data(e,n,x.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),a=function(){x.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return x._data(e,n)||x._data(e,n,{empty:x.Callbacks("once memory").add(function(){x._removeData(e,t+"queue"),x._removeData(e,n)})})}}),x.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?x.queue(this[0],e):n===t?this:this.each(function(){var t=x.queue(this,e,n);x._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=x.Deferred(),a=this,s=this.length,l=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=x._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(l));return l(),o.promise(n)}});var z,X,U=/[\t\r\n\f]/g,V=/\r/g,Y=/^(?:input|select|textarea|button|object)$/i,J=/^(?:a|area)$/i,G=/^(?:checked|selected)$/i,Q=x.support.getSetAttribute,K=x.support.input;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return e=x.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,l="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,l=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var t,r=0,o=x(this),a=e.match(T)||[];while(t=a[r++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else(n===i||"boolean"===n)&&(this.className&&x._data(this,"__className__",this.className),this.className=this.className||e===!1?"":x._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(U," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=x.isFunction(e),this.each(function(n){var o;1===this.nodeType&&(o=i?e.call(this,n,x(this).val()):e,null==o?o="":"number"==typeof o?o+="":x.isArray(o)&&(o=x.map(o,function(e){return null==e?"":e+""})),r=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=x.valHooks[o.type]||x.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(V,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=x.find.attr(e,"value");return null!=t?t:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,l=0>i?s:o?i:0;for(;s>l;l++)if(n=r[l],!(!n.selected&&l!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),a=i.length;while(a--)r=i[a],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,n,r){var o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===i?x.prop(e,n,r):(1===s&&x.isXMLDoc(e)||(n=n.toLowerCase(),o=x.attrHooks[n]||(x.expr.match.bool.test(n)?X:z)),r===t?o&&"get"in o&&null!==(a=o.get(e,n))?a:(a=x.find.attr(e,n),null==a?t:a):null!==r?o&&"set"in o&&(a=o.set(e,r,n))!==t?a:(e.setAttribute(n,r+""),r):(x.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(T);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.bool.test(n)?K&&Q||!G.test(n)?e[r]=!1:e[x.camelCase("default-"+n)]=e[r]=!1:x.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!x.isXMLDoc(e),a&&(n=x.propFix[n]||n,o=x.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var t=x.find.attr(e,"tabindex");return t?parseInt(t,10):Y.test(e.nodeName)||J.test(e.nodeName)&&e.href?0:-1}}}}),X={set:function(e,t,n){return t===!1?x.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&x.propFix[n]||n,n):e[x.camelCase("default-"+n)]=e[n]=!0,n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,n){var r=x.expr.attrHandle[n]||x.find.attr;x.expr.attrHandle[n]=K&&Q||!G.test(n)?function(e,n,i){var o=x.expr.attrHandle[n],a=i?t:(x.expr.attrHandle[n]=t)!=r(e,n,i)?n.toLowerCase():null;return x.expr.attrHandle[n]=o,a}:function(e,n,r){return r?t:e[x.camelCase("default-"+n)]?n.toLowerCase():null}}),K&&Q||(x.attrHooks.value={set:function(e,n,r){return x.nodeName(e,"input")?(e.defaultValue=n,t):z&&z.set(e,n,r)}}),Q||(z={set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},x.expr.attrHandle.id=x.expr.attrHandle.name=x.expr.attrHandle.coords=function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&""!==i.value?i.value:null},x.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&r.specified?r.value:t},set:z.set},x.attrHooks.contenteditable={set:function(e,t,n){z.set(e,""===t?!1:t,n)}},x.each(["width","height"],function(e,n){x.attrHooks[n]={set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}}})),x.support.hrefNormalized||x.each(["href","src"],function(e,t){x.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),x.support.style||(x.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.support.enctype||(x.propFix.enctype="encoding"),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,n){return x.isArray(n)?e.checked=x.inArray(x(e).val(),n)>=0:t}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}function at(){try{return a.activeElement}catch(e){}}x.event={global:{},add:function(e,n,r,o,a){var s,l,u,c,p,f,d,h,g,m,y,v=x._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=x.guid++),(l=v.events)||(l=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof x===i||e&&x.event.triggered===e.type?t:x.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(T)||[""],u=n.length;while(u--)s=rt.exec(n[u])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),g&&(p=x.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=x.event.special[g]||{},d=x.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&x.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=l[g])||(h=l[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),x.event.global[g]=!0);e=null}},remove:function(e,t,n,r,i){var o,a,s,l,u,c,p,f,d,h,g,m=x.hasData(e)&&x._data(e);if(m&&(c=m.events)){t=(t||"").match(T)||[""],u=t.length;while(u--)if(s=rt.exec(t[u])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=x.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));l&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||x.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)x.event.remove(e,d+t[u],n,r,!0);x.isEmptyObject(c)&&(delete m.handle,x._removeData(e,"events"))}},trigger:function(n,r,i,o){var s,l,u,c,p,f,d,h=[i||a],g=v.call(n,"type")?n.type:n,m=v.call(n,"namespace")?n.namespace.split("."):[];if(u=f=i=i||a,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+x.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),l=0>g.indexOf(":")&&"on"+g,n=n[x.expando]?n:new x.Event(g,"object"==typeof n&&n),n.isTrigger=o?2:3,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:x.makeArray(r,[n]),p=x.event.special[g]||{},o||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!o&&!p.noBubble&&!x.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(u=u.parentNode);u;u=u.parentNode)h.push(u),f=u;f===(i.ownerDocument||a)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((u=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(x._data(u,"events")||{})[n.type]&&x._data(u,"handle"),s&&s.apply(u,r),s=l&&u[l],s&&x.acceptData(u)&&s.apply&&s.apply(u,r)===!1&&n.preventDefault();if(n.type=g,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(h.pop(),r)===!1)&&x.acceptData(i)&&l&&i[g]&&!x.isWindow(i)){f=i[l],f&&(i[l]=null),x.event.triggered=g;try{i[g]()}catch(y){}x.event.triggered=t,f&&(i[l]=f)}return n.result}},dispatch:function(e){e=x.event.fix(e);var n,r,i,o,a,s=[],l=g.call(arguments),u=(x._data(this,"events")||{})[e.type]||[],c=x.event.special[e.type]||{};if(l[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((x.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,l),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],l=n.delegateCount,u=e.target;if(l&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!=this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==e.type)){for(o=[],a=0;l>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?x(r,this).index(u)>=0:x.find(r,this,null,[u]).length),o[r]&&o.push(i);o.length&&s.push({elem:u,handlers:o})}return n.length>l&&s.push({elem:this,handlers:n.slice(l)}),s},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,o=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new x.Event(o),t=r.length;while(t--)n=r[t],e[n]=o[n];return e.target||(e.target=o.srcElement||a),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,o):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,o,s=n.button,l=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||a,o=i.documentElement,r=i.body,e.pageX=n.clientX+(o&&o.scrollLeft||r&&r.scrollLeft||0)-(o&&o.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(o&&o.scrollTop||r&&r.scrollTop||0)-(o&&o.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&l&&(e.relatedTarget=l===e.target?n.toElement:l),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==at()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===at()&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},click:{trigger:function(){return x.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=a.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},x.Event=function(e,n){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&x.extend(this,n),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,t):new x.Event(e,n)},x.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.submitBubbles||(x.event.special.submit={setup:function(){return x.nodeName(this,"form")?!1:(x.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=x.nodeName(n,"input")||x.nodeName(n,"button")?n.form:t;r&&!x._data(r,"submitBubbles")&&(x.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),x._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&x.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return x.nodeName(this,"form")?!1:(x.event.remove(this,"._submit"),t)}}),x.support.changeBubbles||(x.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(x.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),x.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),x.event.simulate("change",this,e,!0)})),!1):(x.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!x._data(t,"changeBubbles")&&(x.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||x.event.simulate("change",this.parentNode,e,!0)}),x._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return x.event.remove(this,"._change"),!Z.test(this.nodeName)}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0===n++&&a.addEventListener(e,r,!0)},teardown:function(){0===--n&&a.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return x().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=x.guid++)),this.each(function(){x.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,x(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){x.event.remove(this,e,r,n)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?x.event.trigger(e,n,r,!0):t}});var st=/^.[^:#\[\.,]*$/,lt=/^(?:parents|prev(?:Until|All))/,ut=x.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;i>t;t++)if(x.contains(r[t],this))return!0}));for(t=0;i>t;t++)x.find(e,r[t],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},has:function(e){var t,n=x(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(x.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e||[],!0))},filter:function(e){return this.pushStack(ft(this,e||[],!1))},is:function(e){return!!ft(this,"string"==typeof e&&ut.test(e)?x(e):e||[],!1).length},closest:function(e,t){var n,r=0,i=this.length,o=[],a=ut.test(e)||"string"!=typeof e?x(e,t||this.context):0;for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(a?a.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.length>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?x.inArray(this[0],x(e)):x.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling")},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},siblings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return x.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(ct[e]||(i=x.unique(i)),lt.test(e)&&(i=i.reverse())),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!x(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(st.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return x.inArray(e,t)>=0!==n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/<tbody/i,wt=/<|&#?\w+;/,Tt=/<(?:script|style|link)/i,Ct=/^(?:checkbox|radio)$/i,Nt=/checked\s*(?:[^=]|=\s*.checked.)/i,kt=/^$|\/(?:java|ecma)script/i,Et=/^true\/(.*)/,St=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,At={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:x.support.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},jt=dt(a),Dt=jt.appendChild(a.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===t?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||a).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(Ft(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&_t(Ft(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&x.cleanData(Ft(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&x.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!x.support.htmlSerialize&&mt.test(e)||!x.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1></$2>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(x.cleanData(Ft(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(r&&r.parentNode!==i&&(r=this.nextSibling),x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=d.apply([],e);var r,i,o,a,s,l,u=0,c=this.length,p=this,f=c-1,h=e[0],g=x.isFunction(h);if(g||!(1>=c||"string"!=typeof h||x.support.checkClone)&&Nt.test(h))return this.each(function(r){var i=p.eq(r);g&&(e[0]=h.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(l=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),r=l.firstChild,1===l.childNodes.length&&(l=r),r)){for(a=x.map(Ft(l,"script"),Ht),o=a.length;c>u;u++)i=l,u!==f&&(i=x.clone(i,!0,!0),o&&x.merge(a,Ft(i,"script"))),t.call(this[u],i,u);if(o)for(s=a[a.length-1].ownerDocument,x.map(a,qt),u=0;o>u;u++)i=a[u],kt.test(i.type||"")&&!x._data(i,"globalEval")&&x.contains(s,i)&&(i.src?x._evalUrl(i.src):x.globalEval((i.text||i.textContent||i.innerHTML||"").replace(St,"")));l=r=null}return this}});function Lt(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ht(e){return e.type=(null!==x.find.attr(e,"type"))+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function _t(e,t){var n,r=0;for(;null!=(n=e[r]);r++)x._data(n,"globalEval",!t||x._data(t[r],"globalEval"))}function Mt(e,t){if(1===t.nodeType&&x.hasData(e)){var n,r,i,o=x._data(e),a=x._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)x.event.add(t,n,s[n][r])}a.data&&(a.data=x.extend({},a.data))}}function Ot(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!x.support.noCloneEvent&&t[x.expando]){i=x._data(t);for(r in i.events)x.removeEvent(t,r,i.handle);t.removeAttribute(x.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),x.support.html5Clone&&e.innerHTML&&!x.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Ct.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){var n,r=0,i=[],o=x(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),x(o[r])[t](n),h.apply(i,n.get());return this.pushStack(i)}});function Ft(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||x.nodeName(o,n)?s.push(o):x.merge(s,Ft(o,n));return n===t||n&&x.nodeName(e,n)?x.merge([e],s):s}function Bt(e){Ct.test(e.type)&&(e.defaultChecked=e.checked)}x.extend({clone:function(e,t,n){var r,i,o,a,s,l=x.contains(e.ownerDocument,e);if(x.support.html5Clone||x.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(x.support.noCloneEvent&&x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(r=Ft(o),s=Ft(e),a=0;null!=(i=s[a]);++a)r[a]&&Ot(i,r[a]);if(t)if(n)for(s=s||Ft(e),r=r||Ft(o),a=0;null!=(i=s[a]);a++)Mt(i,r[a]);else Mt(e,o);return r=Ft(o,"script"),r.length>0&&_t(r,!l&&Ft(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,l,u,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===x.type(o))x.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),l=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[l]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1></$2>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!x.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!x.support.tbody){o="table"!==l||xt.test(o)?"<table>"!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)x.nodeName(u=o.childNodes[i],"tbody")&&!u.childNodes.length&&o.removeChild(u)}x.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),x.support.appendChecked||x.grep(Ft(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===x.inArray(o,r))&&(a=x.contains(o.ownerDocument,o),s=Ft(f.appendChild(o),"script"),a&&_t(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,l=x.expando,u=x.cache,c=x.support.deleteExpando,f=x.event.special;for(;null!=(n=e[s]);s++)if((t||x.acceptData(n))&&(o=n[l],a=o&&u[o])){if(a.events)for(r in a.events)f[r]?x.event.remove(n,r):x.removeEvent(n,r,a.handle); u[o]&&(delete u[o],c?delete n[l]:typeof n.removeAttribute!==i?n.removeAttribute(l):n[l]=null,p.push(o))}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})}}),x.fn.extend({wrapAll:function(e){if(x.isFunction(e))return this.each(function(t){x(this).wrapAll(e.call(this,t))});if(this[0]){var t=x(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+w+")(.*)$","i"),Yt=RegExp("^("+w+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+w+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=x._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=x._data(r,"olddisplay",ln(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&x._data(r,"olddisplay",i?n:x.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}x.fn.extend({css:function(e,n){return x.access(this,function(e,n,r){var i,o,a={},s=0;if(x.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=x.css(e,n[s],!1,o);return a}return r!==t?x.style(e,n,r):x.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){nn(this)?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":x.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,l=x.camelCase(n),u=e.style;if(n=x.cssProps[l]||(x.cssProps[l]=tn(u,l)),s=x.cssHooks[n]||x.cssHooks[l],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:u[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(x.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||x.cssNumber[l]||(r+="px"),x.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(u[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{u[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,l=x.camelCase(n);return n=x.cssProps[l]||(x.cssProps[l]=tn(e.style,l)),s=x.cssHooks[n]||x.cssHooks[l],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||x.isNumeric(o)?o||0:a):a}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s.getPropertyValue(n)||s[n]:t,u=e.style;return s&&(""!==l||x.contains(e.ownerDocument,e)||(l=x.style(e,n)),Yt.test(l)&&Ut.test(n)&&(i=u.width,o=u.minWidth,a=u.maxWidth,u.minWidth=u.maxWidth=u.width=l,l=s.width,u.width=i,u.minWidth=o,u.maxWidth=a)),l}):a.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s[n]:t,u=e.style;return null==l&&u&&u[n]&&(l=u[n]),Yt.test(l)&&!zt.test(n)&&(i=u.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),u.left="fontSize"===n?"1em":l,l=u.pixelLeft+"px",u.left=i,a&&(o.left=a)),""===l?"auto":l});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=x.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=x.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=x.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=x.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=x.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function ln(e){var t=a,n=Gt[e];return n||(n=un(e,t),"none"!==n&&n||(Pt=(Pt||x("<iframe frameborder='0' width='0' height='0'/>").css("cssText","display:block !important")).appendTo(t.documentElement),t=(Pt[0].contentWindow||Pt[0].contentDocument).document,t.write("<!doctype html><html><body>"),t.close(),n=un(e,t),Pt.detach()),Gt[e]=n),n}function un(e,t){var n=x(t.createElement(e)).appendTo(t.body),r=x.css(n[0],"display");return n.remove(),r}x.each(["height","width"],function(e,n){x.cssHooks[n]={get:function(e,r,i){return r?0===e.offsetWidth&&Xt.test(x.css(e,"display"))?x.swap(e,Qt,function(){return sn(e,n,i)}):sn(e,n,i):t},set:function(e,t,r){var i=r&&Rt(e);return on(e,t,r?an(e,n,r,x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,i),i):0)}}}),x.support.opacity||(x.cssHooks.opacity={get:function(e,t){return It.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=x.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=r&&r.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===x.trim(o.replace($t,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||r&&!r.filter)||(n.filter=$t.test(o)?o.replace($t,i):o+" "+i)}}),x(function(){x.support.reliableMarginRight||(x.cssHooks.marginRight={get:function(e,n){return n?x.swap(e,{display:"inline-block"},Wt,[e,"marginRight"]):t}}),!x.support.pixelPosition&&x.fn.position&&x.each(["top","left"],function(e,n){x.cssHooks[n]={get:function(e,r){return r?(r=Wt(e,n),Yt.test(r)?x(e).position()[n]+"px":r):t}}})}),x.expr&&x.expr.filters&&(x.expr.filters.hidden=function(e){return 0>=e.offsetWidth&&0>=e.offsetHeight||!x.support.reliableHiddenOffsets&&"none"===(e.style&&e.style.display||x.css(e,"display"))},x.expr.filters.visible=function(e){return!x.expr.filters.hidden(e)}),x.each({margin:"",padding:"",border:"Width"},function(e,t){x.cssHooks[e+t]={expand:function(n){var r=0,i={},o="string"==typeof n?n.split(" "):[n];for(;4>r;r++)i[e+Zt[r]+t]=o[r]||o[r-2]||o[0];return i}},Ut.test(e)||(x.cssHooks[e+t].set=on)});var cn=/%20/g,pn=/\[\]$/,fn=/\r?\n/g,dn=/^(?:submit|button|image|reset|file)$/i,hn=/^(?:input|select|textarea|keygen)/i;x.fn.extend({serialize:function(){return x.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=x.prop(this,"elements");return e?x.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!x(this).is(":disabled")&&hn.test(this.nodeName)&&!dn.test(e)&&(this.checked||!Ct.test(e))}).map(function(e,t){var n=x(this).val();return null==n?null:x.isArray(n)?x.map(n,function(e){return{name:t.name,value:e.replace(fn,"\r\n")}}):{name:t.name,value:n.replace(fn,"\r\n")}}).get()}}),x.param=function(e,n){var r,i=[],o=function(e,t){t=x.isFunction(t)?t():null==t?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(n===t&&(n=x.ajaxSettings&&x.ajaxSettings.traditional),x.isArray(e)||e.jquery&&!x.isPlainObject(e))x.each(e,function(){o(this.name,this.value)});else for(r in e)gn(r,e[r],n,o);return i.join("&").replace(cn,"+")};function gn(e,t,n,r){var i;if(x.isArray(t))x.each(t,function(t,i){n||pn.test(e)?r(e,i):gn(e+"["+("object"==typeof i?t:"")+"]",i,n,r)});else if(n||"object"!==x.type(t))r(e,t);else for(i in t)gn(e+"["+i+"]",t[i],n,r)}x.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){x.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),x.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}});var mn,yn,vn=x.now(),bn=/\?/,xn=/#.*$/,wn=/([?&])_=[^&]*/,Tn=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Cn=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Nn=/^(?:GET|HEAD)$/,kn=/^\/\//,En=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,Sn=x.fn.load,An={},jn={},Dn="*/".concat("*");try{yn=o.href}catch(Ln){yn=a.createElement("a"),yn.href="",yn=yn.href}mn=En.exec(yn.toLowerCase())||[];function Hn(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(T)||[];if(x.isFunction(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function qn(e,n,r,i){var o={},a=e===jn;function s(l){var u;return o[l]=!0,x.each(e[l]||[],function(e,l){var c=l(n,r,i);return"string"!=typeof c||a||o[c]?a?!(u=c):t:(n.dataTypes.unshift(c),s(c),!1)}),u}return s(n.dataTypes[0])||!o["*"]&&s("*")}function _n(e,n){var r,i,o=x.ajaxSettings.flatOptions||{};for(i in n)n[i]!==t&&((o[i]?e:r||(r={}))[i]=n[i]);return r&&x.extend(!0,e,r),e}x.fn.load=function(e,n,r){if("string"!=typeof e&&Sn)return Sn.apply(this,arguments);var i,o,a,s=this,l=e.indexOf(" ");return l>=0&&(i=e.slice(l,e.length),e=e.slice(0,l)),x.isFunction(n)?(r=n,n=t):n&&"object"==typeof n&&(a="POST"),s.length>0&&x.ajax({url:e,type:a,dataType:"html",data:n}).done(function(e){o=arguments,s.html(i?x("<div>").append(x.parseHTML(e)).find(i):e)}).complete(r&&function(e,t){s.each(r,o||[e.responseText,t,e])}),this},x.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){x.fn[t]=function(e){return this.on(t,e)}}),x.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:yn,type:"GET",isLocal:Cn.test(mn[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Dn,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":x.parseJSON,"text xml":x.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?_n(_n(e,x.ajaxSettings),t):_n(x.ajaxSettings,e)},ajaxPrefilter:Hn(An),ajaxTransport:Hn(jn),ajax:function(e,n){"object"==typeof e&&(n=e,e=t),n=n||{};var r,i,o,a,s,l,u,c,p=x.ajaxSetup({},n),f=p.context||p,d=p.context&&(f.nodeType||f.jquery)?x(f):x.event,h=x.Deferred(),g=x.Callbacks("once memory"),m=p.statusCode||{},y={},v={},b=0,w="canceled",C={readyState:0,getResponseHeader:function(e){var t;if(2===b){if(!c){c={};while(t=Tn.exec(a))c[t[1].toLowerCase()]=t[2]}t=c[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===b?a:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return b||(e=v[n]=v[n]||e,y[e]=t),this},overrideMimeType:function(e){return b||(p.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>b)for(t in e)m[t]=[m[t],e[t]];else C.always(e[C.status]);return this},abort:function(e){var t=e||w;return u&&u.abort(t),k(0,t),this}};if(h.promise(C).complete=g.add,C.success=C.done,C.error=C.fail,p.url=((e||p.url||yn)+"").replace(xn,"").replace(kn,mn[1]+"//"),p.type=n.method||n.type||p.method||p.type,p.dataTypes=x.trim(p.dataType||"*").toLowerCase().match(T)||[""],null==p.crossDomain&&(r=En.exec(p.url.toLowerCase()),p.crossDomain=!(!r||r[1]===mn[1]&&r[2]===mn[2]&&(r[3]||("http:"===r[1]?"80":"443"))===(mn[3]||("http:"===mn[1]?"80":"443")))),p.data&&p.processData&&"string"!=typeof p.data&&(p.data=x.param(p.data,p.traditional)),qn(An,p,n,C),2===b)return C;l=p.global,l&&0===x.active++&&x.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!Nn.test(p.type),o=p.url,p.hasContent||(p.data&&(o=p.url+=(bn.test(o)?"&":"?")+p.data,delete p.data),p.cache===!1&&(p.url=wn.test(o)?o.replace(wn,"$1_="+vn++):o+(bn.test(o)?"&":"?")+"_="+vn++)),p.ifModified&&(x.lastModified[o]&&C.setRequestHeader("If-Modified-Since",x.lastModified[o]),x.etag[o]&&C.setRequestHeader("If-None-Match",x.etag[o])),(p.data&&p.hasContent&&p.contentType!==!1||n.contentType)&&C.setRequestHeader("Content-Type",p.contentType),C.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+Dn+"; q=0.01":""):p.accepts["*"]);for(i in p.headers)C.setRequestHeader(i,p.headers[i]);if(p.beforeSend&&(p.beforeSend.call(f,C,p)===!1||2===b))return C.abort();w="abort";for(i in{success:1,error:1,complete:1})C[i](p[i]);if(u=qn(jn,p,n,C)){C.readyState=1,l&&d.trigger("ajaxSend",[C,p]),p.async&&p.timeout>0&&(s=setTimeout(function(){C.abort("timeout")},p.timeout));try{b=1,u.send(y,k)}catch(N){if(!(2>b))throw N;k(-1,N)}}else k(-1,"No Transport");function k(e,n,r,i){var c,y,v,w,T,N=n;2!==b&&(b=2,s&&clearTimeout(s),u=t,a=i||"",C.readyState=e>0?4:0,c=e>=200&&300>e||304===e,r&&(w=Mn(p,C,r)),w=On(p,w,C,c),c?(p.ifModified&&(T=C.getResponseHeader("Last-Modified"),T&&(x.lastModified[o]=T),T=C.getResponseHeader("etag"),T&&(x.etag[o]=T)),204===e||"HEAD"===p.type?N="nocontent":304===e?N="notmodified":(N=w.state,y=w.data,v=w.error,c=!v)):(v=N,(e||!N)&&(N="error",0>e&&(e=0))),C.status=e,C.statusText=(n||N)+"",c?h.resolveWith(f,[y,N,C]):h.rejectWith(f,[C,N,v]),C.statusCode(m),m=t,l&&d.trigger(c?"ajaxSuccess":"ajaxError",[C,p,c?y:v]),g.fireWith(f,[C,N]),l&&(d.trigger("ajaxComplete",[C,p]),--x.active||x.event.trigger("ajaxStop")))}return C},getJSON:function(e,t,n){return x.get(e,t,n,"json")},getScript:function(e,n){return x.get(e,t,n,"script")}}),x.each(["get","post"],function(e,n){x[n]=function(e,r,i,o){return x.isFunction(r)&&(o=o||i,i=r,r=t),x.ajax({url:e,type:n,dataType:o,data:r,success:i})}});function Mn(e,n,r){var i,o,a,s,l=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),o===t&&(o=e.mimeType||n.getResponseHeader("Content-Type"));if(o)for(s in l)if(l[s]&&l[s].test(o)){u.unshift(s);break}if(u[0]in r)a=u[0];else{for(s in r){if(!u[0]||e.converters[s+" "+u[0]]){a=s;break}i||(i=s)}a=a||i}return a?(a!==u[0]&&u.unshift(a),r[a]):t}function On(e,t,n,r){var i,o,a,s,l,u={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)u[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!l&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=o,o=c.shift())if("*"===o)o=l;else if("*"!==l&&l!==o){if(a=u[l+" "+o]||u["* "+o],!a)for(i in u)if(s=i.split(" "),s[1]===o&&(a=u[l+" "+s[0]]||u["* "+s[0]])){a===!0?a=u[i]:u[i]!==!0&&(o=s[0],c.unshift(s[1]));break}if(a!==!0)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(p){return{state:"parsererror",error:a?p:"No conversion from "+l+" to "+o}}}return{state:"success",data:t}}x.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return x.globalEval(e),e}}}),x.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),x.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=a.head||x("head")[0]||a.documentElement;return{send:function(t,i){n=a.createElement("script"),n.async=!0,e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,t){(t||!n.readyState||/loaded|complete/.test(n.readyState))&&(n.onload=n.onreadystatechange=null,n.parentNode&&n.parentNode.removeChild(n),n=null,t||i(200,"success"))},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(t,!0)}}}});var Fn=[],Bn=/(=)\?(?=&|$)|\?\?/;x.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Fn.pop()||x.expando+"_"+vn++;return this[e]=!0,e}}),x.ajaxPrefilter("json jsonp",function(n,r,i){var o,a,s,l=n.jsonp!==!1&&(Bn.test(n.url)?"url":"string"==typeof n.data&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Bn.test(n.data)&&"data");return l||"jsonp"===n.dataTypes[0]?(o=n.jsonpCallback=x.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,l?n[l]=n[l].replace(Bn,"$1"+o):n.jsonp!==!1&&(n.url+=(bn.test(n.url)?"&":"?")+n.jsonp+"="+o),n.converters["script json"]=function(){return s||x.error(o+" was not called"),s[0]},n.dataTypes[0]="json",a=e[o],e[o]=function(){s=arguments},i.always(function(){e[o]=a,n[o]&&(n.jsonpCallback=r.jsonpCallback,Fn.push(o)),s&&x.isFunction(a)&&a(s[0]),s=a=t}),"script"):t});var Pn,Rn,Wn=0,$n=e.ActiveXObject&&function(){var e;for(e in Pn)Pn[e](t,!0)};function In(){try{return new e.XMLHttpRequest}catch(t){}}function zn(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}x.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&In()||zn()}:In,Rn=x.ajaxSettings.xhr(),x.support.cors=!!Rn&&"withCredentials"in Rn,Rn=x.support.ajax=!!Rn,Rn&&x.ajaxTransport(function(n){if(!n.crossDomain||x.support.cors){var r;return{send:function(i,o){var a,s,l=n.xhr();if(n.username?l.open(n.type,n.url,n.async,n.username,n.password):l.open(n.type,n.url,n.async),n.xhrFields)for(s in n.xhrFields)l[s]=n.xhrFields[s];n.mimeType&&l.overrideMimeType&&l.overrideMimeType(n.mimeType),n.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");try{for(s in i)l.setRequestHeader(s,i[s])}catch(u){}l.send(n.hasContent&&n.data||null),r=function(e,i){var s,u,c,p;try{if(r&&(i||4===l.readyState))if(r=t,a&&(l.onreadystatechange=x.noop,$n&&delete Pn[a]),i)4!==l.readyState&&l.abort();else{p={},s=l.status,u=l.getAllResponseHeaders(),"string"==typeof l.responseText&&(p.text=l.responseText);try{c=l.statusText}catch(f){c=""}s||!n.isLocal||n.crossDomain?1223===s&&(s=204):s=p.text?200:404}}catch(d){i||o(-1,d)}p&&o(s,c,p,u)},n.async?4===l.readyState?setTimeout(r):(a=++Wn,$n&&(Pn||(Pn={},x(e).unload($n)),Pn[a]=r),l.onreadystatechange=r):r()},abort:function(){r&&r(t,!0)}}}});var Xn,Un,Vn=/^(?:toggle|show|hide)$/,Yn=RegExp("^(?:([+-])=|)("+w+")([a-z%]*)$","i"),Jn=/queueHooks$/,Gn=[nr],Qn={"*":[function(e,t){var n=this.createTween(e,t),r=n.cur(),i=Yn.exec(t),o=i&&i[3]||(x.cssNumber[e]?"":"px"),a=(x.cssNumber[e]||"px"!==o&&+r)&&Yn.exec(x.css(n.elem,e)),s=1,l=20;if(a&&a[3]!==o){o=o||a[3],i=i||[],a=+r||1;do s=s||".5",a/=s,x.style(n.elem,e,a+o);while(s!==(s=n.cur()/r)&&1!==s&&--l)}return i&&(a=n.start=+a||+r||0,n.unit=o,n.end=i[1]?a+(i[1]+1)*i[2]:+i[2]),n}]};function Kn(){return setTimeout(function(){Xn=t}),Xn=x.now()}function Zn(e,t,n){var r,i=(Qn[t]||[]).concat(Qn["*"]),o=0,a=i.length;for(;a>o;o++)if(r=i[o].call(n,t,e))return r}function er(e,t,n){var r,i,o=0,a=Gn.length,s=x.Deferred().always(function(){delete l.elem}),l=function(){if(i)return!1;var t=Xn||Kn(),n=Math.max(0,u.startTime+u.duration-t),r=n/u.duration||0,o=1-r,a=0,l=u.tweens.length;for(;l>a;a++)u.tweens[a].run(o);return s.notifyWith(e,[u,o,n]),1>o&&l?n:(s.resolveWith(e,[u]),!1)},u=s.promise({elem:e,props:x.extend({},t),opts:x.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:Xn||Kn(),duration:n.duration,tweens:[],createTween:function(t,n){var r=x.Tween(e,u.opts,t,n,u.opts.specialEasing[t]||u.opts.easing);return u.tweens.push(r),r},stop:function(t){var n=0,r=t?u.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)u.tweens[n].run(1);return t?s.resolveWith(e,[u,t]):s.rejectWith(e,[u,t]),this}}),c=u.props;for(tr(c,u.opts.specialEasing);a>o;o++)if(r=Gn[o].call(u,e,c,u.opts))return r;return x.map(c,Zn,u),x.isFunction(u.opts.start)&&u.opts.start.call(e,u),x.fx.timer(x.extend(l,{elem:e,anim:u,queue:u.opts.queue})),u.progress(u.opts.progress).done(u.opts.done,u.opts.complete).fail(u.opts.fail).always(u.opts.always)}function tr(e,t){var n,r,i,o,a;for(n in e)if(r=x.camelCase(n),i=t[r],o=e[n],x.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),a=x.cssHooks[r],a&&"expand"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}x.Animation=x.extend(er,{tweener:function(e,t){x.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;i>r;r++)n=e[r],Qn[n]=Qn[n]||[],Qn[n].unshift(t)},prefilter:function(e,t){t?Gn.unshift(e):Gn.push(e)}});function nr(e,t,n){var r,i,o,a,s,l,u=this,c={},p=e.style,f=e.nodeType&&nn(e),d=x._data(e,"fxshow");n.queue||(s=x._queueHooks(e,"fx"),null==s.unqueued&&(s.unqueued=0,l=s.empty.fire,s.empty.fire=function(){s.unqueued||l()}),s.unqueued++,u.always(function(){u.always(function(){s.unqueued--,x.queue(e,"fx").length||s.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],"inline"===x.css(e,"display")&&"none"===x.css(e,"float")&&(x.support.inlineBlockNeedsLayout&&"inline"!==ln(e.nodeName)?p.zoom=1:p.display="inline-block")),n.overflow&&(p.overflow="hidden",x.support.shrinkWrapBlocks||u.always(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t)if(i=t[r],Vn.exec(i)){if(delete t[r],o=o||"toggle"===i,i===(f?"hide":"show"))continue;c[r]=d&&d[r]||x.style(e,r)}if(!x.isEmptyObject(c)){d?"hidden"in d&&(f=d.hidden):d=x._data(e,"fxshow",{}),o&&(d.hidden=!f),f?x(e).show():u.done(function(){x(e).hide()}),u.done(function(){var t;x._removeData(e,"fxshow");for(t in c)x.style(e,t,c[t])});for(r in c)a=Zn(f?d[r]:0,r,u),r in d||(d[r]=a.start,f&&(a.end=a.start,a.start="width"===r||"height"===r?1:0))}}function rr(e,t,n,r,i){return new rr.prototype.init(e,t,n,r,i)}x.Tween=rr,rr.prototype={constructor:rr,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(x.cssNumber[n]?"":"px")},cur:function(){var e=rr.propHooks[this.prop];return e&&e.get?e.get(this):rr.propHooks._default.get(this)},run:function(e){var t,n=rr.propHooks[this.prop];return this.pos=t=this.options.duration?x.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):rr.propHooks._default.set(this),this}},rr.prototype.init.prototype=rr.prototype,rr.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=x.css(e.elem,e.prop,""),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){x.fx.step[e.prop]?x.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[x.cssProps[e.prop]]||x.cssHooks[e.prop])?x.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},rr.propHooks.scrollTop=rr.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},x.each(["toggle","show","hide"],function(e,t){var n=x.fn[t];x.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ir(t,!0),e,r,i)}}),x.fn.extend({fadeTo:function(e,t,n,r){return this.filter(nn).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=x.isEmptyObject(e),o=x.speed(t,n,r),a=function(){var t=er(this,x.extend({},e),o);(i||x._data(this,"finish"))&&t.stop(!0)};return a.finish=a,i||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return"string"!=typeof e&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=null!=e&&e+"queueHooks",o=x.timers,a=x._data(this);if(n)a[n]&&a[n].stop&&i(a[n]);else for(n in a)a[n]&&a[n].stop&&Jn.test(n)&&i(a[n]);for(n=o.length;n--;)o[n].elem!==this||null!=e&&o[n].queue!==e||(o[n].anim.stop(r),t=!1,o.splice(n,1));(t||!r)&&x.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=x._data(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=x.timers,a=r?r.length:0;for(n.finish=!0,x.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;a>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}});function ir(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=Zt[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}x.each({slideDown:ir("show"),slideUp:ir("hide"),slideToggle:ir("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){x.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),x.speed=function(e,t,n){var r=e&&"object"==typeof e?x.extend({},e):{complete:n||!n&&t||x.isFunction(e)&&e,duration:e,easing:n&&t||t&&!x.isFunction(t)&&t};return r.duration=x.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in x.fx.speeds?x.fx.speeds[r.duration]:x.fx.speeds._default,(null==r.queue||r.queue===!0)&&(r.queue="fx"),r.old=r.complete,r.complete=function(){x.isFunction(r.old)&&r.old.call(this),r.queue&&x.dequeue(this,r.queue)},r},x.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},x.timers=[],x.fx=rr.prototype.init,x.fx.tick=function(){var e,n=x.timers,r=0;for(Xn=x.now();n.length>r;r++)e=n[r],e()||n[r]!==e||n.splice(r--,1);n.length||x.fx.stop(),Xn=t},x.fx.timer=function(e){e()&&x.timers.push(e)&&x.fx.start()},x.fx.interval=13,x.fx.start=function(){Un||(Un=setInterval(x.fx.tick,x.fx.interval))},x.fx.stop=function(){clearInterval(Un),Un=null},x.fx.speeds={slow:600,fast:200,_default:400},x.fx.step={},x.expr&&x.expr.filters&&(x.expr.filters.animated=function(e){return x.grep(x.timers,function(t){return e===t.elem}).length}),x.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){x.offset.setOffset(this,e,t)});var n,r,o={top:0,left:0},a=this[0],s=a&&a.ownerDocument;if(s)return n=s.documentElement,x.contains(n,a)?(typeof a.getBoundingClientRect!==i&&(o=a.getBoundingClientRect()),r=or(s),{top:o.top+(r.pageYOffset||n.scrollTop)-(n.clientTop||0),left:o.left+(r.pageXOffset||n.scrollLeft)-(n.clientLeft||0)}):o},x.offset={setOffset:function(e,t,n){var r=x.css(e,"position");"static"===r&&(e.style.position="relative");var i=x(e),o=i.offset(),a=x.css(e,"top"),s=x.css(e,"left"),l=("absolute"===r||"fixed"===r)&&x.inArray("auto",[a,s])>-1,u={},c={},p,f;l?(c=i.position(),p=c.top,f=c.left):(p=parseFloat(a)||0,f=parseFloat(s)||0),x.isFunction(t)&&(t=t.call(e,n,o)),null!=t.top&&(u.top=t.top-o.top+p),null!=t.left&&(u.left=t.left-o.left+f),"using"in t?t.using.call(e,u):i.css(u)}},x.fn.extend({position:function(){if(this[0]){var e,t,n={top:0,left:0},r=this[0];return"fixed"===x.css(r,"position")?t=r.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),x.nodeName(e[0],"html")||(n=e.offset()),n.top+=x.css(e[0],"borderTopWidth",!0),n.left+=x.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-x.css(r,"marginTop",!0),left:t.left-n.left-x.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||s;while(e&&!x.nodeName(e,"html")&&"static"===x.css(e,"position"))e=e.offsetParent;return e||s})}}),x.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);x.fn[e]=function(i){return x.access(this,function(e,i,o){var a=or(e);return o===t?a?n in a?a[n]:a.document.documentElement[i]:e[i]:(a?a.scrollTo(r?x(a).scrollLeft():o,r?o:x(a).scrollTop()):e[i]=o,t)},e,i,arguments.length,null)}});function or(e){return x.isWindow(e)?e:9===e.nodeType?e.defaultView||e.parentWindow:!1}x.each({Height:"height",Width:"width"},function(e,n){x.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){x.fn[i]=function(i,o){var a=arguments.length&&(r||"boolean"!=typeof i),s=r||(i===!0||o===!0?"margin":"border");return x.access(this,function(n,r,i){var o;return x.isWindow(n)?n.document.documentElement["client"+e]:9===n.nodeType?(o=n.documentElement,Math.max(n.body["scroll"+e],o["scroll"+e],n.body["offset"+e],o["offset"+e],o["client"+e])):i===t?x.css(n,r,s):x.style(n,r,i,s)},n,a?i:t,a,null)}})}),x.fn.size=function(){return this.length},x.fn.andSelf=x.fn.addBack,"object"==typeof module&&module&&"object"==typeof module.exports?module.exports=x:(e.jQuery=e.$=x,"function"==typeof define&&define.amd&&define("jquery",[],function(){return x}))})(window); - -jQuery.noConflict(); \ No newline at end of file diff --git a/js/smartwave/jquery/jquery-ui-1.11.4.min.js b/js/smartwave/jquery/jquery-ui-1.11.4.min.js deleted file mode 100644 index 0245f83..0000000 --- a/js/smartwave/jquery/jquery-ui-1.11.4.min.js +++ /dev/null @@ -1,13 +0,0 @@ -/*! jQuery UI - v1.11.4 - 2015-03-11 -* http://jqueryui.com -* Includes: core.js, widget.js, mouse.js, position.js, accordion.js, autocomplete.js, button.js, datepicker.js, dialog.js, draggable.js, droppable.js, effect.js, effect-blind.js, effect-bounce.js, effect-clip.js, effect-drop.js, effect-explode.js, effect-fade.js, effect-fold.js, effect-highlight.js, effect-puff.js, effect-pulsate.js, effect-scale.js, effect-shake.js, effect-size.js, effect-slide.js, effect-transfer.js, menu.js, progressbar.js, resizable.js, selectable.js, selectmenu.js, slider.js, sortable.js, spinner.js, tabs.js, tooltip.js -* Copyright 2015 jQuery Foundation and other contributors; Licensed MIT */ - -(function(e){"function"==typeof define&&define.amd?define(["jquery"],e):e(jQuery)})(function(e){function t(t,s){var n,a,o,r=t.nodeName.toLowerCase();return"area"===r?(n=t.parentNode,a=n.name,t.href&&a&&"map"===n.nodeName.toLowerCase()?(o=e("img[usemap='#"+a+"']")[0],!!o&&i(o)):!1):(/^(input|select|textarea|button|object)$/.test(r)?!t.disabled:"a"===r?t.href||s:s)&&i(t)}function i(t){return e.expr.filters.visible(t)&&!e(t).parents().addBack().filter(function(){return"hidden"===e.css(this,"visibility")}).length}function s(e){for(var t,i;e.length&&e[0]!==document;){if(t=e.css("position"),("absolute"===t||"relative"===t||"fixed"===t)&&(i=parseInt(e.css("zIndex"),10),!isNaN(i)&&0!==i))return i;e=e.parent()}return 0}function n(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},e.extend(this._defaults,this.regional[""]),this.regional.en=e.extend(!0,{},this.regional[""]),this.regional["en-US"]=e.extend(!0,{},this.regional.en),this.dpDiv=a(e("<div id='"+this._mainDivId+"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"))}function a(t){var i="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return t.delegate(i,"mouseout",function(){e(this).removeClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&e(this).removeClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&e(this).removeClass("ui-datepicker-next-hover")}).delegate(i,"mouseover",o)}function o(){e.datepicker._isDisabledDatepicker(v.inline?v.dpDiv.parent()[0]:v.input[0])||(e(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),e(this).addClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&e(this).addClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&e(this).addClass("ui-datepicker-next-hover"))}function r(t,i){e.extend(t,i);for(var s in i)null==i[s]&&(t[s]=i[s]);return t}function h(e){return function(){var t=this.element.val();e.apply(this,arguments),this._refresh(),t!==this.element.val()&&this._trigger("change")}}e.ui=e.ui||{},e.extend(e.ui,{version:"1.11.4",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),e.fn.extend({scrollParent:function(t){var i=this.css("position"),s="absolute"===i,n=t?/(auto|scroll|hidden)/:/(auto|scroll)/,a=this.parents().filter(function(){var t=e(this);return s&&"static"===t.css("position")?!1:n.test(t.css("overflow")+t.css("overflow-y")+t.css("overflow-x"))}).eq(0);return"fixed"!==i&&a.length?a:e(this[0].ownerDocument||document)},uniqueId:function(){var e=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++e)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&e(this).removeAttr("id")})}}),e.extend(e.expr[":"],{data:e.expr.createPseudo?e.expr.createPseudo(function(t){return function(i){return!!e.data(i,t)}}):function(t,i,s){return!!e.data(t,s[3])},focusable:function(i){return t(i,!isNaN(e.attr(i,"tabindex")))},tabbable:function(i){var s=e.attr(i,"tabindex"),n=isNaN(s);return(n||s>=0)&&t(i,!n)}}),e("<a>").outerWidth(1).jquery||e.each(["Width","Height"],function(t,i){function s(t,i,s,a){return e.each(n,function(){i-=parseFloat(e.css(t,"padding"+this))||0,s&&(i-=parseFloat(e.css(t,"border"+this+"Width"))||0),a&&(i-=parseFloat(e.css(t,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],a=i.toLowerCase(),o={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn["inner"+i]=function(t){return void 0===t?o["inner"+i].call(this):this.each(function(){e(this).css(a,s(this,t)+"px")})},e.fn["outer"+i]=function(t,n){return"number"!=typeof t?o["outer"+i].call(this,t):this.each(function(){e(this).css(a,s(this,t,!0,n)+"px")})}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e("<a>").data("a-b","a").removeData("a-b").data("a-b")&&(e.fn.removeData=function(t){return function(i){return arguments.length?t.call(this,e.camelCase(i)):t.call(this)}}(e.fn.removeData)),e.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()),e.fn.extend({focus:function(t){return function(i,s){return"number"==typeof i?this.each(function(){var t=this;setTimeout(function(){e(t).focus(),s&&s.call(t)},i)}):t.apply(this,arguments)}}(e.fn.focus),disableSelection:function(){var e="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.bind(e+".ui-disableSelection",function(e){e.preventDefault()})}}(),enableSelection:function(){return this.unbind(".ui-disableSelection")},zIndex:function(t){if(void 0!==t)return this.css("zIndex",t);if(this.length)for(var i,s,n=e(this[0]);n.length&&n[0]!==document;){if(i=n.css("position"),("absolute"===i||"relative"===i||"fixed"===i)&&(s=parseInt(n.css("zIndex"),10),!isNaN(s)&&0!==s))return s;n=n.parent()}return 0}}),e.ui.plugin={add:function(t,i,s){var n,a=e.ui[t].prototype;for(n in s)a.plugins[n]=a.plugins[n]||[],a.plugins[n].push([i,s[n]])},call:function(e,t,i,s){var n,a=e.plugins[t];if(a&&(s||e.element[0].parentNode&&11!==e.element[0].parentNode.nodeType))for(n=0;a.length>n;n++)e.options[a[n][0]]&&a[n][1].apply(e.element,i)}};var l=0,u=Array.prototype.slice;e.cleanData=function(t){return function(i){var s,n,a;for(a=0;null!=(n=i[a]);a++)try{s=e._data(n,"events"),s&&s.remove&&e(n).triggerHandler("remove")}catch(o){}t(i)}}(e.cleanData),e.widget=function(t,i,s){var n,a,o,r,h={},l=t.split(".")[0];return t=t.split(".")[1],n=l+"-"+t,s||(s=i,i=e.Widget),e.expr[":"][n.toLowerCase()]=function(t){return!!e.data(t,n)},e[l]=e[l]||{},a=e[l][t],o=e[l][t]=function(e,t){return this._createWidget?(arguments.length&&this._createWidget(e,t),void 0):new o(e,t)},e.extend(o,a,{version:s.version,_proto:e.extend({},s),_childConstructors:[]}),r=new i,r.options=e.widget.extend({},r.options),e.each(s,function(t,s){return e.isFunction(s)?(h[t]=function(){var e=function(){return i.prototype[t].apply(this,arguments)},n=function(e){return i.prototype[t].apply(this,e)};return function(){var t,i=this._super,a=this._superApply;return this._super=e,this._superApply=n,t=s.apply(this,arguments),this._super=i,this._superApply=a,t}}(),void 0):(h[t]=s,void 0)}),o.prototype=e.widget.extend(r,{widgetEventPrefix:a?r.widgetEventPrefix||t:t},h,{constructor:o,namespace:l,widgetName:t,widgetFullName:n}),a?(e.each(a._childConstructors,function(t,i){var s=i.prototype;e.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete a._childConstructors):i._childConstructors.push(o),e.widget.bridge(t,o),o},e.widget.extend=function(t){for(var i,s,n=u.call(arguments,1),a=0,o=n.length;o>a;a++)for(i in n[a])s=n[a][i],n[a].hasOwnProperty(i)&&void 0!==s&&(t[i]=e.isPlainObject(s)?e.isPlainObject(t[i])?e.widget.extend({},t[i],s):e.widget.extend({},s):s);return t},e.widget.bridge=function(t,i){var s=i.prototype.widgetFullName||t;e.fn[t]=function(n){var a="string"==typeof n,o=u.call(arguments,1),r=this;return a?this.each(function(){var i,a=e.data(this,s);return"instance"===n?(r=a,!1):a?e.isFunction(a[n])&&"_"!==n.charAt(0)?(i=a[n].apply(a,o),i!==a&&void 0!==i?(r=i&&i.jquery?r.pushStack(i.get()):i,!1):void 0):e.error("no such method '"+n+"' for "+t+" widget instance"):e.error("cannot call methods on "+t+" prior to initialization; "+"attempted to call method '"+n+"'")}):(o.length&&(n=e.widget.extend.apply(null,[n].concat(o))),this.each(function(){var t=e.data(this,s);t?(t.option(n||{}),t._init&&t._init()):e.data(this,s,new i(n,this))})),r}},e.Widget=function(){},e.Widget._childConstructors=[],e.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{disabled:!1,create:null},_createWidget:function(t,i){i=e(i||this.defaultElement||this)[0],this.element=e(i),this.uuid=l++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=e(),this.hoverable=e(),this.focusable=e(),i!==this&&(e.data(i,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===i&&this.destroy()}}),this.document=e(i.style?i.ownerDocument:i.document||i),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),this.options=e.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:e.noop,_getCreateEventData:e.noop,_create:e.noop,_init:e.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:e.noop,widget:function(){return this.element},option:function(t,i){var s,n,a,o=t;if(0===arguments.length)return e.widget.extend({},this.options);if("string"==typeof t)if(o={},s=t.split("."),t=s.shift(),s.length){for(n=o[t]=e.widget.extend({},this.options[t]),a=0;s.length-1>a;a++)n[s[a]]=n[s[a]]||{},n=n[s[a]];if(t=s.pop(),1===arguments.length)return void 0===n[t]?null:n[t];n[t]=i}else{if(1===arguments.length)return void 0===this.options[t]?null:this.options[t];o[t]=i}return this._setOptions(o),this},_setOptions:function(e){var t;for(t in e)this._setOption(t,e[t]);return this},_setOption:function(e,t){return this.options[e]=t,"disabled"===e&&(this.widget().toggleClass(this.widgetFullName+"-disabled",!!t),t&&(this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus"))),this},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_on:function(t,i,s){var n,a=this;"boolean"!=typeof t&&(s=i,i=t,t=!1),s?(i=n=e(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),e.each(s,function(s,o){function r(){return t||a.options.disabled!==!0&&!e(this).hasClass("ui-state-disabled")?("string"==typeof o?a[o]:o).apply(a,arguments):void 0}"string"!=typeof o&&(r.guid=o.guid=o.guid||r.guid||e.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+a.eventNamespace,u=h[2];u?n.delegate(u,l,r):i.bind(l,r)})},_off:function(t,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.unbind(i).undelegate(i),this.bindings=e(this.bindings.not(t).get()),this.focusable=e(this.focusable.not(t).get()),this.hoverable=e(this.hoverable.not(t).get())},_delay:function(e,t){function i(){return("string"==typeof e?s[e]:e).apply(s,arguments)}var s=this;return setTimeout(i,t||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){e(t.currentTarget).addClass("ui-state-hover")},mouseleave:function(t){e(t.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){e(t.currentTarget).addClass("ui-state-focus")},focusout:function(t){e(t.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(t,i,s){var n,a,o=this.options[t];if(s=s||{},i=e.Event(i),i.type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),i.target=this.element[0],a=i.originalEvent)for(n in a)n in i||(i[n]=a[n]);return this.element.trigger(i,s),!(e.isFunction(o)&&o.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},e.each({show:"fadeIn",hide:"fadeOut"},function(t,i){e.Widget.prototype["_"+t]=function(s,n,a){"string"==typeof n&&(n={effect:n});var o,r=n?n===!0||"number"==typeof n?i:n.effect||i:t;n=n||{},"number"==typeof n&&(n={duration:n}),o=!e.isEmptyObject(n),n.complete=a,n.delay&&s.delay(n.delay),o&&e.effects&&e.effects.effect[r]?s[t](n):r!==t&&s[r]?s[r](n.duration,n.easing,a):s.queue(function(i){e(this)[t](),a&&a.call(s[0]),i()})}}),e.widget;var d=!1;e(document).mouseup(function(){d=!1}),e.widget("ui.mouse",{version:"1.11.4",options:{cancel:"input,textarea,button,select,option",distance:1,delay:0},_mouseInit:function(){var t=this;this.element.bind("mousedown."+this.widgetName,function(e){return t._mouseDown(e)}).bind("click."+this.widgetName,function(i){return!0===e.data(i.target,t.widgetName+".preventClickEvent")?(e.removeData(i.target,t.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),this._mouseMoveDelegate&&this.document.unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){if(!d){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var i=this,s=1===t.which,n="string"==typeof this.options.cancel&&t.target.nodeName?e(t.target).closest(this.options.cancel).length:!1;return s&&!n&&this._mouseCapture(t)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(t)!==!1,!this._mouseStarted)?(t.preventDefault(),!0):(!0===e.data(t.target,this.widgetName+".preventClickEvent")&&e.removeData(t.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(e){return i._mouseMove(e)},this._mouseUpDelegate=function(e){return i._mouseUp(e)},this.document.bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),t.preventDefault(),d=!0,!0)):!0}},_mouseMove:function(t){if(this._mouseMoved){if(e.ui.ie&&(!document.documentMode||9>document.documentMode)&&!t.button)return this._mouseUp(t);if(!t.which)return this._mouseUp(t)}return(t.which||t.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,t)!==!1,this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){return this.document.unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&e.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),d=!1,!1},_mouseDistanceMet:function(e){return Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),function(){function t(e,t,i){return[parseFloat(e[0])*(p.test(e[0])?t/100:1),parseFloat(e[1])*(p.test(e[1])?i/100:1)]}function i(t,i){return parseInt(e.css(t,i),10)||0}function s(t){var i=t[0];return 9===i.nodeType?{width:t.width(),height:t.height(),offset:{top:0,left:0}}:e.isWindow(i)?{width:t.width(),height:t.height(),offset:{top:t.scrollTop(),left:t.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:t.outerWidth(),height:t.outerHeight(),offset:t.offset()}}e.ui=e.ui||{};var n,a,o=Math.max,r=Math.abs,h=Math.round,l=/left|center|right/,u=/top|center|bottom/,d=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,p=/%$/,f=e.fn.position;e.position={scrollbarWidth:function(){if(void 0!==n)return n;var t,i,s=e("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),a=s.children()[0];return e("body").append(s),t=a.offsetWidth,s.css("overflow","scroll"),i=a.offsetWidth,t===i&&(i=s[0].clientWidth),s.remove(),n=t-i},getScrollInfo:function(t){var i=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),s=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),n="scroll"===i||"auto"===i&&t.width<t.element[0].scrollWidth,a="scroll"===s||"auto"===s&&t.height<t.element[0].scrollHeight;return{width:a?e.position.scrollbarWidth():0,height:n?e.position.scrollbarWidth():0}},getWithinInfo:function(t){var i=e(t||window),s=e.isWindow(i[0]),n=!!i[0]&&9===i[0].nodeType;return{element:i,isWindow:s,isDocument:n,offset:i.offset()||{left:0,top:0},scrollLeft:i.scrollLeft(),scrollTop:i.scrollTop(),width:s||n?i.width():i.outerWidth(),height:s||n?i.height():i.outerHeight()}}},e.fn.position=function(n){if(!n||!n.of)return f.apply(this,arguments);n=e.extend({},n);var p,m,g,v,y,b,_=e(n.of),x=e.position.getWithinInfo(n.within),w=e.position.getScrollInfo(x),k=(n.collision||"flip").split(" "),T={};return b=s(_),_[0].preventDefault&&(n.at="left top"),m=b.width,g=b.height,v=b.offset,y=e.extend({},v),e.each(["my","at"],function(){var e,t,i=(n[this]||"").split(" ");1===i.length&&(i=l.test(i[0])?i.concat(["center"]):u.test(i[0])?["center"].concat(i):["center","center"]),i[0]=l.test(i[0])?i[0]:"center",i[1]=u.test(i[1])?i[1]:"center",e=d.exec(i[0]),t=d.exec(i[1]),T[this]=[e?e[0]:0,t?t[0]:0],n[this]=[c.exec(i[0])[0],c.exec(i[1])[0]]}),1===k.length&&(k[1]=k[0]),"right"===n.at[0]?y.left+=m:"center"===n.at[0]&&(y.left+=m/2),"bottom"===n.at[1]?y.top+=g:"center"===n.at[1]&&(y.top+=g/2),p=t(T.at,m,g),y.left+=p[0],y.top+=p[1],this.each(function(){var s,l,u=e(this),d=u.outerWidth(),c=u.outerHeight(),f=i(this,"marginLeft"),b=i(this,"marginTop"),D=d+f+i(this,"marginRight")+w.width,S=c+b+i(this,"marginBottom")+w.height,M=e.extend({},y),C=t(T.my,u.outerWidth(),u.outerHeight());"right"===n.my[0]?M.left-=d:"center"===n.my[0]&&(M.left-=d/2),"bottom"===n.my[1]?M.top-=c:"center"===n.my[1]&&(M.top-=c/2),M.left+=C[0],M.top+=C[1],a||(M.left=h(M.left),M.top=h(M.top)),s={marginLeft:f,marginTop:b},e.each(["left","top"],function(t,i){e.ui.position[k[t]]&&e.ui.position[k[t]][i](M,{targetWidth:m,targetHeight:g,elemWidth:d,elemHeight:c,collisionPosition:s,collisionWidth:D,collisionHeight:S,offset:[p[0]+C[0],p[1]+C[1]],my:n.my,at:n.at,within:x,elem:u})}),n.using&&(l=function(e){var t=v.left-M.left,i=t+m-d,s=v.top-M.top,a=s+g-c,h={target:{element:_,left:v.left,top:v.top,width:m,height:g},element:{element:u,left:M.left,top:M.top,width:d,height:c},horizontal:0>i?"left":t>0?"right":"center",vertical:0>a?"top":s>0?"bottom":"middle"};d>m&&m>r(t+i)&&(h.horizontal="center"),c>g&&g>r(s+a)&&(h.vertical="middle"),h.important=o(r(t),r(i))>o(r(s),r(a))?"horizontal":"vertical",n.using.call(this,e,h)}),u.offset(e.extend(M,{using:l}))})},e.ui.position={fit:{left:function(e,t){var i,s=t.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=e.left-t.collisionPosition.marginLeft,h=n-r,l=r+t.collisionWidth-a-n;t.collisionWidth>a?h>0&&0>=l?(i=e.left+h+t.collisionWidth-a-n,e.left+=h-i):e.left=l>0&&0>=h?n:h>l?n+a-t.collisionWidth:n:h>0?e.left+=h:l>0?e.left-=l:e.left=o(e.left-r,e.left)},top:function(e,t){var i,s=t.within,n=s.isWindow?s.scrollTop:s.offset.top,a=t.within.height,r=e.top-t.collisionPosition.marginTop,h=n-r,l=r+t.collisionHeight-a-n;t.collisionHeight>a?h>0&&0>=l?(i=e.top+h+t.collisionHeight-a-n,e.top+=h-i):e.top=l>0&&0>=h?n:h>l?n+a-t.collisionHeight:n:h>0?e.top+=h:l>0?e.top-=l:e.top=o(e.top-r,e.top)}},flip:{left:function(e,t){var i,s,n=t.within,a=n.offset.left+n.scrollLeft,o=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=e.left-t.collisionPosition.marginLeft,u=l-h,d=l+t.collisionWidth-o-h,c="left"===t.my[0]?-t.elemWidth:"right"===t.my[0]?t.elemWidth:0,p="left"===t.at[0]?t.targetWidth:"right"===t.at[0]?-t.targetWidth:0,f=-2*t.offset[0];0>u?(i=e.left+c+p+f+t.collisionWidth-o-a,(0>i||r(u)>i)&&(e.left+=c+p+f)):d>0&&(s=e.left-t.collisionPosition.marginLeft+c+p+f-h,(s>0||d>r(s))&&(e.left+=c+p+f))},top:function(e,t){var i,s,n=t.within,a=n.offset.top+n.scrollTop,o=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=e.top-t.collisionPosition.marginTop,u=l-h,d=l+t.collisionHeight-o-h,c="top"===t.my[1],p=c?-t.elemHeight:"bottom"===t.my[1]?t.elemHeight:0,f="top"===t.at[1]?t.targetHeight:"bottom"===t.at[1]?-t.targetHeight:0,m=-2*t.offset[1];0>u?(s=e.top+p+f+m+t.collisionHeight-o-a,(0>s||r(u)>s)&&(e.top+=p+f+m)):d>0&&(i=e.top-t.collisionPosition.marginTop+p+f+m-h,(i>0||d>r(i))&&(e.top+=p+f+m))}},flipfit:{left:function(){e.ui.position.flip.left.apply(this,arguments),e.ui.position.fit.left.apply(this,arguments)},top:function(){e.ui.position.flip.top.apply(this,arguments),e.ui.position.fit.top.apply(this,arguments)}}},function(){var t,i,s,n,o,r=document.getElementsByTagName("body")[0],h=document.createElement("div");t=document.createElement(r?"div":"body"),s={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},r&&e.extend(s,{position:"absolute",left:"-1000px",top:"-1000px"});for(o in s)t.style[o]=s[o];t.appendChild(h),i=r||document.documentElement,i.insertBefore(t,i.firstChild),h.style.cssText="position: absolute; left: 10.7432222px;",n=e(h).offset().left,a=n>10&&11>n,t.innerHTML="",i.removeChild(t)}()}(),e.ui.position,e.widget("ui.accordion",{version:"1.11.4",options:{active:0,animate:{},collapsible:!1,event:"click",header:"> li > :first-child,> :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var t=this.options;this.prevShow=this.prevHide=e(),this.element.addClass("ui-accordion ui-widget ui-helper-reset").attr("role","tablist"),t.collapsible||t.active!==!1&&null!=t.active||(t.active=0),this._processPanels(),0>t.active&&(t.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():e()}},_createIcons:function(){var t=this.options.icons;t&&(e("<span>").addClass("ui-accordion-header-icon ui-icon "+t.header).prependTo(this.headers),this.active.children(".ui-accordion-header-icon").removeClass(t.header).addClass(t.activeHeader),this.headers.addClass("ui-accordion-icons"))},_destroyIcons:function(){this.headers.removeClass("ui-accordion-icons").children(".ui-accordion-header-icon").remove()},_destroy:function(){var e;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role"),this.headers.removeClass("ui-accordion-header ui-accordion-header-active ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-selected").removeAttr("aria-controls").removeAttr("tabIndex").removeUniqueId(),this._destroyIcons(),e=this.headers.next().removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled").css("display","").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&e.css("height","")},_setOption:function(e,t){return"active"===e?(this._activate(t),void 0):("event"===e&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(t)),this._super(e,t),"collapsible"!==e||t||this.options.active!==!1||this._activate(0),"icons"===e&&(this._destroyIcons(),t&&this._createIcons()),"disabled"===e&&(this.element.toggleClass("ui-state-disabled",!!t).attr("aria-disabled",t),this.headers.add(this.headers.next()).toggleClass("ui-state-disabled",!!t)),void 0)},_keydown:function(t){if(!t.altKey&&!t.ctrlKey){var i=e.ui.keyCode,s=this.headers.length,n=this.headers.index(t.target),a=!1;switch(t.keyCode){case i.RIGHT:case i.DOWN:a=this.headers[(n+1)%s];break;case i.LEFT:case i.UP:a=this.headers[(n-1+s)%s];break;case i.SPACE:case i.ENTER:this._eventHandler(t);break;case i.HOME:a=this.headers[0];break;case i.END:a=this.headers[s-1]}a&&(e(t.target).attr("tabIndex",-1),e(a).attr("tabIndex",0),a.focus(),t.preventDefault())}},_panelKeyDown:function(t){t.keyCode===e.ui.keyCode.UP&&t.ctrlKey&&e(t.currentTarget).prev().focus()},refresh:function(){var t=this.options;this._processPanels(),t.active===!1&&t.collapsible===!0||!this.headers.length?(t.active=!1,this.active=e()):t.active===!1?this._activate(0):this.active.length&&!e.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(t.active=!1,this.active=e()):this._activate(Math.max(0,t.active-1)):t.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var e=this.headers,t=this.panels;this.headers=this.element.find(this.options.header).addClass("ui-accordion-header ui-state-default ui-corner-all"),this.panels=this.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom").filter(":not(.ui-accordion-content-active)").hide(),t&&(this._off(e.not(this.headers)),this._off(t.not(this.panels)))},_refresh:function(){var t,i=this.options,s=i.heightStyle,n=this.element.parent();this.active=this._findActive(i.active).addClass("ui-accordion-header-active ui-state-active ui-corner-top").removeClass("ui-corner-all"),this.active.next().addClass("ui-accordion-content-active").show(),this.headers.attr("role","tab").each(function(){var t=e(this),i=t.uniqueId().attr("id"),s=t.next(),n=s.uniqueId().attr("id");t.attr("aria-controls",n),s.attr("aria-labelledby",i)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(i.event),"fill"===s?(t=n.height(),this.element.siblings(":visible").each(function(){var i=e(this),s=i.css("position");"absolute"!==s&&"fixed"!==s&&(t-=i.outerHeight(!0))}),this.headers.each(function(){t-=e(this).outerHeight(!0)}),this.headers.next().each(function(){e(this).height(Math.max(0,t-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):"auto"===s&&(t=0,this.headers.next().each(function(){t=Math.max(t,e(this).css("height","").height())}).height(t))},_activate:function(t){var i=this._findActive(t)[0];i!==this.active[0]&&(i=i||this.active[0],this._eventHandler({target:i,currentTarget:i,preventDefault:e.noop}))},_findActive:function(t){return"number"==typeof t?this.headers.eq(t):e()},_setupEvents:function(t){var i={keydown:"_keydown"};t&&e.each(t.split(" "),function(e,t){i[t]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(t){var i=this.options,s=this.active,n=e(t.currentTarget),a=n[0]===s[0],o=a&&i.collapsible,r=o?e():n.next(),h=s.next(),l={oldHeader:s,oldPanel:h,newHeader:o?e():n,newPanel:r};t.preventDefault(),a&&!i.collapsible||this._trigger("beforeActivate",t,l)===!1||(i.active=o?!1:this.headers.index(n),this.active=a?e():n,this._toggle(l),s.removeClass("ui-accordion-header-active ui-state-active"),i.icons&&s.children(".ui-accordion-header-icon").removeClass(i.icons.activeHeader).addClass(i.icons.header),a||(n.removeClass("ui-corner-all").addClass("ui-accordion-header-active ui-state-active ui-corner-top"),i.icons&&n.children(".ui-accordion-header-icon").removeClass(i.icons.header).addClass(i.icons.activeHeader),n.next().addClass("ui-accordion-content-active")))},_toggle:function(t){var i=t.newPanel,s=this.prevShow.length?this.prevShow:t.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=i,this.prevHide=s,this.options.animate?this._animate(i,s,t):(s.hide(),i.show(),this._toggleComplete(t)),s.attr({"aria-hidden":"true"}),s.prev().attr({"aria-selected":"false","aria-expanded":"false"}),i.length&&s.length?s.prev().attr({tabIndex:-1,"aria-expanded":"false"}):i.length&&this.headers.filter(function(){return 0===parseInt(e(this).attr("tabIndex"),10)}).attr("tabIndex",-1),i.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(e,t,i){var s,n,a,o=this,r=0,h=e.css("box-sizing"),l=e.length&&(!t.length||e.index()<t.index()),u=this.options.animate||{},d=l&&u.down||u,c=function(){o._toggleComplete(i)};return"number"==typeof d&&(a=d),"string"==typeof d&&(n=d),n=n||d.easing||u.easing,a=a||d.duration||u.duration,t.length?e.length?(s=e.show().outerHeight(),t.animate(this.hideProps,{duration:a,easing:n,step:function(e,t){t.now=Math.round(e)}}),e.hide().animate(this.showProps,{duration:a,easing:n,complete:c,step:function(e,i){i.now=Math.round(e),"height"!==i.prop?"content-box"===h&&(r+=i.now):"content"!==o.options.heightStyle&&(i.now=Math.round(s-t.outerHeight()-r),r=0)}}),void 0):t.animate(this.hideProps,a,n,c):e.animate(this.showProps,a,n,c)},_toggleComplete:function(e){var t=e.oldPanel;t.removeClass("ui-accordion-content-active").prev().removeClass("ui-corner-top").addClass("ui-corner-all"),t.length&&(t.parent()[0].className=t.parent()[0].className),this._trigger("activate",null,e)}}),e.widget("ui.menu",{version:"1.11.4",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-carat-1-e"},items:"> *",menus:"ul",position:{my:"left-1 top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().addClass("ui-menu ui-widget ui-widget-content").toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length).attr({role:this.options.role,tabIndex:0}),this.options.disabled&&this.element.addClass("ui-state-disabled").attr("aria-disabled","true"),this._on({"mousedown .ui-menu-item":function(e){e.preventDefault()},"click .ui-menu-item":function(t){var i=e(t.target);!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),i.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&e(this.document[0].activeElement).closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(t){if(!this.previousFilter){var i=e(t.currentTarget); -i.siblings(".ui-state-active").removeClass("ui-state-active"),this.focus(t,i)}},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(e,t){var i=this.active||this.element.find(this.options.items).eq(0);t||this.focus(e,i)},blur:function(t){this._delay(function(){e.contains(this.element[0],this.document[0].activeElement)||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(e){this._closeOnDocumentClick(e)&&this.collapseAll(e),this.mouseHandled=!1}})},_destroy:function(){this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeClass("ui-menu ui-widget ui-widget-content ui-menu-icons ui-front").removeAttr("role").removeAttr("tabIndex").removeAttr("aria-labelledby").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-disabled").removeUniqueId().show(),this.element.find(".ui-menu-item").removeClass("ui-menu-item").removeAttr("role").removeAttr("aria-disabled").removeUniqueId().removeClass("ui-state-hover").removeAttr("tabIndex").removeAttr("role").removeAttr("aria-haspopup").children().each(function(){var t=e(this);t.data("ui-menu-submenu-carat")&&t.remove()}),this.element.find(".ui-menu-divider").removeClass("ui-menu-divider ui-widget-content")},_keydown:function(t){var i,s,n,a,o=!0;switch(t.keyCode){case e.ui.keyCode.PAGE_UP:this.previousPage(t);break;case e.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case e.ui.keyCode.HOME:this._move("first","first",t);break;case e.ui.keyCode.END:this._move("last","last",t);break;case e.ui.keyCode.UP:this.previous(t);break;case e.ui.keyCode.DOWN:this.next(t);break;case e.ui.keyCode.LEFT:this.collapse(t);break;case e.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case e.ui.keyCode.ENTER:case e.ui.keyCode.SPACE:this._activate(t);break;case e.ui.keyCode.ESCAPE:this.collapse(t);break;default:o=!1,s=this.previousFilter||"",n=String.fromCharCode(t.keyCode),a=!1,clearTimeout(this.filterTimer),n===s?a=!0:n=s+n,i=this._filterMenuItems(n),i=a&&-1!==i.index(this.active.next())?this.active.nextAll(".ui-menu-item"):i,i.length||(n=String.fromCharCode(t.keyCode),i=this._filterMenuItems(n)),i.length?(this.focus(t,i),this.previousFilter=n,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}o&&t.preventDefault()},_activate:function(e){this.active.is(".ui-state-disabled")||(this.active.is("[aria-haspopup='true']")?this.expand(e):this.select(e))},refresh:function(){var t,i,s=this,n=this.options.icons.submenu,a=this.element.find(this.options.menus);this.element.toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length),a.filter(":not(.ui-menu)").addClass("ui-menu ui-widget ui-widget-content ui-front").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=e(this),i=t.parent(),s=e("<span>").addClass("ui-menu-icon ui-icon "+n).data("ui-menu-submenu-carat",!0);i.attr("aria-haspopup","true").prepend(s),t.attr("aria-labelledby",i.attr("id"))}),t=a.add(this.element),i=t.find(this.options.items),i.not(".ui-menu-item").each(function(){var t=e(this);s._isDivider(t)&&t.addClass("ui-widget-content ui-menu-divider")}),i.not(".ui-menu-item, .ui-menu-divider").addClass("ui-menu-item").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),i.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!e.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(e,t){"icons"===e&&this.element.find(".ui-menu-icon").removeClass(this.options.icons.submenu).addClass(t.submenu),"disabled"===e&&this.element.toggleClass("ui-state-disabled",!!t).attr("aria-disabled",t),this._super(e,t)},focus:function(e,t){var i,s;this.blur(e,e&&"focus"===e.type),this._scrollIntoView(t),this.active=t.first(),s=this.active.addClass("ui-state-focus").removeClass("ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),this.active.parent().closest(".ui-menu-item").addClass("ui-state-active"),e&&"keydown"===e.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=t.children(".ui-menu"),i.length&&e&&/^mouse/.test(e.type)&&this._startOpening(i),this.activeMenu=t.parent(),this._trigger("focus",e,{item:t})},_scrollIntoView:function(t){var i,s,n,a,o,r;this._hasScroll()&&(i=parseFloat(e.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(e.css(this.activeMenu[0],"paddingTop"))||0,n=t.offset().top-this.activeMenu.offset().top-i-s,a=this.activeMenu.scrollTop(),o=this.activeMenu.height(),r=t.outerHeight(),0>n?this.activeMenu.scrollTop(a+n):n+r>o&&this.activeMenu.scrollTop(a+n-o+r))},blur:function(e,t){t||clearTimeout(this.timer),this.active&&(this.active.removeClass("ui-state-focus"),this.active=null,this._trigger("blur",e,{item:this.active}))},_startOpening:function(e){clearTimeout(this.timer),"true"===e.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(e)},this.delay))},_open:function(t){var i=e.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(t.parents(".ui-menu")).hide().attr("aria-hidden","true"),t.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(t,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:e(t&&t.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(t),this.activeMenu=s},this.delay)},_close:function(e){e||(e=this.active?this.active.parent():this.element),e.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false").end().find(".ui-state-active").not(".ui-state-focus").removeClass("ui-state-active")},_closeOnDocumentClick:function(t){return!e(t.target).closest(".ui-menu").length},_isDivider:function(e){return!/[^\-\u2014\u2013\s]/.test(e.text())},collapse:function(e){var t=this.active&&this.active.parent().closest(".ui-menu-item",this.element);t&&t.length&&(this._close(),this.focus(e,t))},expand:function(e){var t=this.active&&this.active.children(".ui-menu ").find(this.options.items).first();t&&t.length&&(this._open(t.parent()),this._delay(function(){this.focus(e,t)}))},next:function(e){this._move("next","first",e)},previous:function(e){this._move("prev","last",e)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(e,t,i){var s;this.active&&(s="first"===e||"last"===e?this.active["first"===e?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[e+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.find(this.options.items)[t]()),this.focus(i,s)},nextPage:function(t){var i,s,n;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return i=e(this),0>i.offset().top-s-n}),this.focus(t,i)):this.focus(t,this.activeMenu.find(this.options.items)[this.active?"last":"first"]())),void 0):(this.next(t),void 0)},previousPage:function(t){var i,s,n;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return i=e(this),i.offset().top-s+n>0}),this.focus(t,i)):this.focus(t,this.activeMenu.find(this.options.items).first())),void 0):(this.next(t),void 0)},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(t){this.active=this.active||e(t.target).closest(".ui-menu-item");var i={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(t,!0),this._trigger("select",t,i)},_filterMenuItems:function(t){var i=t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&"),s=RegExp("^"+i,"i");return this.activeMenu.find(this.options.items).filter(".ui-menu-item").filter(function(){return s.test(e.trim(e(this).text()))})}}),e.widget("ui.autocomplete",{version:"1.11.4",defaultElement:"<input>",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var t,i,s,n=this.element[0].nodeName.toLowerCase(),a="textarea"===n,o="input"===n;this.isMultiLine=a?!0:o?!1:this.element.prop("isContentEditable"),this.valueMethod=this.element[a||o?"val":"text"],this.isNewMenu=!0,this.element.addClass("ui-autocomplete-input").attr("autocomplete","off"),this._on(this.element,{keydown:function(n){if(this.element.prop("readOnly"))return t=!0,s=!0,i=!0,void 0;t=!1,s=!1,i=!1;var a=e.ui.keyCode;switch(n.keyCode){case a.PAGE_UP:t=!0,this._move("previousPage",n);break;case a.PAGE_DOWN:t=!0,this._move("nextPage",n);break;case a.UP:t=!0,this._keyEvent("previous",n);break;case a.DOWN:t=!0,this._keyEvent("next",n);break;case a.ENTER:this.menu.active&&(t=!0,n.preventDefault(),this.menu.select(n));break;case a.TAB:this.menu.active&&this.menu.select(n);break;case a.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(n),n.preventDefault());break;default:i=!0,this._searchTimeout(n)}},keypress:function(s){if(t)return t=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&s.preventDefault(),void 0;if(!i){var n=e.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:this._move("previousPage",s);break;case n.PAGE_DOWN:this._move("nextPage",s);break;case n.UP:this._keyEvent("previous",s);break;case n.DOWN:this._keyEvent("next",s)}}},input:function(e){return s?(s=!1,e.preventDefault(),void 0):(this._searchTimeout(e),void 0)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(e){return this.cancelBlur?(delete this.cancelBlur,void 0):(clearTimeout(this.searching),this.close(e),this._change(e),void 0)}}),this._initSource(),this.menu=e("<ul>").addClass("ui-autocomplete ui-front").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur});var i=this.menu.element[0];e(t.target).closest(".ui-menu-item").length||this._delay(function(){var t=this;this.document.one("mousedown",function(s){s.target===t.element[0]||s.target===i||e.contains(i,s.target)||t.close()})})},menufocus:function(t,i){var s,n;return this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type))?(this.menu.blur(),this.document.one("mousemove",function(){e(t.target).trigger(t.originalEvent)}),void 0):(n=i.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:n})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(n.value),s=i.item.attr("aria-label")||n.value,s&&e.trim(s).length&&(this.liveRegion.children().hide(),e("<div>").text(s).appendTo(this.liveRegion)),void 0)},menuselect:function(e,t){var i=t.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==this.document[0].activeElement&&(this.element.focus(),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",e,{item:i})&&this._value(i.value),this.term=this._value(),this.close(e),this.selectedItem=i}}),this.liveRegion=e("<span>",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).addClass("ui-helper-hidden-accessible").appendTo(this.document[0].body),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(e,t){this._super(e,t),"source"===e&&this._initSource(),"appendTo"===e&&this.menu.element.appendTo(this._appendTo()),"disabled"===e&&t&&this.xhr&&this.xhr.abort()},_appendTo:function(){var t=this.options.appendTo;return t&&(t=t.jquery||t.nodeType?e(t):this.document.find(t).eq(0)),t&&t[0]||(t=this.element.closest(".ui-front")),t.length||(t=this.document[0].body),t},_initSource:function(){var t,i,s=this;e.isArray(this.options.source)?(t=this.options.source,this.source=function(i,s){s(e.ui.autocomplete.filter(t,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(t,n){s.xhr&&s.xhr.abort(),s.xhr=e.ajax({url:i,data:t,dataType:"json",success:function(e){n(e)},error:function(){n([])}})}):this.source=this.options.source},_searchTimeout:function(e){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),i=this.menu.element.is(":visible"),s=e.altKey||e.ctrlKey||e.metaKey||e.shiftKey;(!t||t&&!i&&!s)&&(this.selectedItem=null,this.search(null,e))},this.options.delay)},search:function(e,t){return e=null!=e?e:this._value(),this.term=this._value(),e.length<this.options.minLength?this.close(t):this._trigger("search",t)!==!1?this._search(e):void 0},_search:function(e){this.pending++,this.element.addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:e},this._response())},_response:function(){var t=++this.requestIndex;return e.proxy(function(e){t===this.requestIndex&&this.__response(e),this.pending--,this.pending||this.element.removeClass("ui-autocomplete-loading")},this)},__response:function(e){e&&(e=this._normalize(e)),this._trigger("response",null,{content:e}),!this.options.disabled&&e&&e.length&&!this.cancelSearch?(this._suggest(e),this._trigger("open")):this._close()},close:function(e){this.cancelSearch=!0,this._close(e)},_close:function(e){this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",e))},_change:function(e){this.previous!==this._value()&&this._trigger("change",e,{item:this.selectedItem})},_normalize:function(t){return t.length&&t[0].label&&t[0].value?t:e.map(t,function(t){return"string"==typeof t?{label:t,value:t}:e.extend({},t,{label:t.label||t.value,value:t.value||t.label})})},_suggest:function(t){var i=this.menu.element.empty();this._renderMenu(i,t),this.isNewMenu=!0,this.menu.refresh(),i.show(),this._resizeMenu(),i.position(e.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next()},_resizeMenu:function(){var e=this.menu.element;e.outerWidth(Math.max(e.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(t,i){var s=this;e.each(i,function(e,i){s._renderItemData(t,i)})},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-autocomplete-item",t)},_renderItem:function(t,i){return e("<li>").text(i.label).appendTo(t)},_move:function(e,t){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(e)||this.menu.isLastItem()&&/^next/.test(e)?(this.isMultiLine||this._value(this.term),this.menu.blur(),void 0):(this.menu[e](t),void 0):(this.search(null,t),void 0)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(e,t){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(e,t),t.preventDefault())}}),e.extend(e.ui.autocomplete,{escapeRegex:function(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,i){var s=RegExp(e.ui.autocomplete.escapeRegex(i),"i");return e.grep(t,function(e){return s.test(e.label||e.value||e)})}}),e.widget("ui.autocomplete",e.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(e){return e+(e>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(t){var i;this._superApply(arguments),this.options.disabled||this.cancelSearch||(i=t&&t.length?this.options.messages.results(t.length):this.options.messages.noResults,this.liveRegion.children().hide(),e("<div>").text(i).appendTo(this.liveRegion))}}),e.ui.autocomplete;var c,p="ui-button ui-widget ui-state-default ui-corner-all",f="ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only",m=function(){var t=e(this);setTimeout(function(){t.find(":ui-button").button("refresh")},1)},g=function(t){var i=t.name,s=t.form,n=e([]);return i&&(i=i.replace(/'/g,"\\'"),n=s?e(s).find("[name='"+i+"'][type=radio]"):e("[name='"+i+"'][type=radio]",t.ownerDocument).filter(function(){return!this.form})),n};e.widget("ui.button",{version:"1.11.4",defaultElement:"<button>",options:{disabled:null,text:!0,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset"+this.eventNamespace).bind("reset"+this.eventNamespace,m),"boolean"!=typeof this.options.disabled?this.options.disabled=!!this.element.prop("disabled"):this.element.prop("disabled",this.options.disabled),this._determineButtonType(),this.hasTitle=!!this.buttonElement.attr("title");var t=this,i=this.options,s="checkbox"===this.type||"radio"===this.type,n=s?"":"ui-state-active";null===i.label&&(i.label="input"===this.type?this.buttonElement.val():this.buttonElement.html()),this._hoverable(this.buttonElement),this.buttonElement.addClass(p).attr("role","button").bind("mouseenter"+this.eventNamespace,function(){i.disabled||this===c&&e(this).addClass("ui-state-active")}).bind("mouseleave"+this.eventNamespace,function(){i.disabled||e(this).removeClass(n)}).bind("click"+this.eventNamespace,function(e){i.disabled&&(e.preventDefault(),e.stopImmediatePropagation())}),this._on({focus:function(){this.buttonElement.addClass("ui-state-focus")},blur:function(){this.buttonElement.removeClass("ui-state-focus")}}),s&&this.element.bind("change"+this.eventNamespace,function(){t.refresh()}),"checkbox"===this.type?this.buttonElement.bind("click"+this.eventNamespace,function(){return i.disabled?!1:void 0}):"radio"===this.type?this.buttonElement.bind("click"+this.eventNamespace,function(){if(i.disabled)return!1;e(this).addClass("ui-state-active"),t.buttonElement.attr("aria-pressed","true");var s=t.element[0];g(s).not(s).map(function(){return e(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed","false")}):(this.buttonElement.bind("mousedown"+this.eventNamespace,function(){return i.disabled?!1:(e(this).addClass("ui-state-active"),c=this,t.document.one("mouseup",function(){c=null}),void 0)}).bind("mouseup"+this.eventNamespace,function(){return i.disabled?!1:(e(this).removeClass("ui-state-active"),void 0)}).bind("keydown"+this.eventNamespace,function(t){return i.disabled?!1:((t.keyCode===e.ui.keyCode.SPACE||t.keyCode===e.ui.keyCode.ENTER)&&e(this).addClass("ui-state-active"),void 0)}).bind("keyup"+this.eventNamespace+" blur"+this.eventNamespace,function(){e(this).removeClass("ui-state-active")}),this.buttonElement.is("a")&&this.buttonElement.keyup(function(t){t.keyCode===e.ui.keyCode.SPACE&&e(this).click()})),this._setOption("disabled",i.disabled),this._resetButton()},_determineButtonType:function(){var e,t,i;this.type=this.element.is("[type=checkbox]")?"checkbox":this.element.is("[type=radio]")?"radio":this.element.is("input")?"input":"button","checkbox"===this.type||"radio"===this.type?(e=this.element.parents().last(),t="label[for='"+this.element.attr("id")+"']",this.buttonElement=e.find(t),this.buttonElement.length||(e=e.length?e.siblings():this.element.siblings(),this.buttonElement=e.filter(t),this.buttonElement.length||(this.buttonElement=e.find(t))),this.element.addClass("ui-helper-hidden-accessible"),i=this.element.is(":checked"),i&&this.buttonElement.addClass("ui-state-active"),this.buttonElement.prop("aria-pressed",i)):this.buttonElement=this.element},widget:function(){return this.buttonElement},_destroy:function(){this.element.removeClass("ui-helper-hidden-accessible"),this.buttonElement.removeClass(p+" ui-state-active "+f).removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html()),this.hasTitle||this.buttonElement.removeAttr("title")},_setOption:function(e,t){return this._super(e,t),"disabled"===e?(this.widget().toggleClass("ui-state-disabled",!!t),this.element.prop("disabled",!!t),t&&("checkbox"===this.type||"radio"===this.type?this.buttonElement.removeClass("ui-state-focus"):this.buttonElement.removeClass("ui-state-focus ui-state-active")),void 0):(this._resetButton(),void 0)},refresh:function(){var t=this.element.is("input, button")?this.element.is(":disabled"):this.element.hasClass("ui-button-disabled");t!==this.options.disabled&&this._setOption("disabled",t),"radio"===this.type?g(this.element[0]).each(function(){e(this).is(":checked")?e(this).button("widget").addClass("ui-state-active").attr("aria-pressed","true"):e(this).button("widget").removeClass("ui-state-active").attr("aria-pressed","false")}):"checkbox"===this.type&&(this.element.is(":checked")?this.buttonElement.addClass("ui-state-active").attr("aria-pressed","true"):this.buttonElement.removeClass("ui-state-active").attr("aria-pressed","false"))},_resetButton:function(){if("input"===this.type)return this.options.label&&this.element.val(this.options.label),void 0;var t=this.buttonElement.removeClass(f),i=e("<span></span>",this.document[0]).addClass("ui-button-text").html(this.options.label).appendTo(t.empty()).text(),s=this.options.icons,n=s.primary&&s.secondary,a=[];s.primary||s.secondary?(this.options.text&&a.push("ui-button-text-icon"+(n?"s":s.primary?"-primary":"-secondary")),s.primary&&t.prepend("<span class='ui-button-icon-primary ui-icon "+s.primary+"'></span>"),s.secondary&&t.append("<span class='ui-button-icon-secondary ui-icon "+s.secondary+"'></span>"),this.options.text||(a.push(n?"ui-button-icons-only":"ui-button-icon-only"),this.hasTitle||t.attr("title",e.trim(i)))):a.push("ui-button-text-only"),t.addClass(a.join(" "))}}),e.widget("ui.buttonset",{version:"1.11.4",options:{items:"button, input[type=button], input[type=submit], input[type=reset], input[type=checkbox], input[type=radio], a, :data(ui-button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(e,t){"disabled"===e&&this.buttons.button("option",e,t),this._super(e,t)},refresh:function(){var t="rtl"===this.element.css("direction"),i=this.element.find(this.options.items),s=i.filter(":ui-button");i.not(":ui-button").button(),s.button("refresh"),this.buttons=i.map(function(){return e(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(t?"ui-corner-right":"ui-corner-left").end().filter(":last").addClass(t?"ui-corner-left":"ui-corner-right").end().end()},_destroy:function(){this.element.removeClass("ui-buttonset"),this.buttons.map(function(){return e(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy")}}),e.ui.button,e.extend(e.ui,{datepicker:{version:"1.11.4"}});var v;e.extend(n.prototype,{markerClassName:"hasDatepicker",maxRows:4,_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(e){return r(this._defaults,e||{}),this},_attachDatepicker:function(t,i){var s,n,a;s=t.nodeName.toLowerCase(),n="div"===s||"span"===s,t.id||(this.uuid+=1,t.id="dp"+this.uuid),a=this._newInst(e(t),n),a.settings=e.extend({},i||{}),"input"===s?this._connectDatepicker(t,a):n&&this._inlineDatepicker(t,a)},_newInst:function(t,i){var s=t[0].id.replace(/([^A-Za-z0-9_\-])/g,"\\\\$1");return{id:s,input:t,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:i,dpDiv:i?a(e("<div class='"+this._inlineClass+" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")):this.dpDiv}},_connectDatepicker:function(t,i){var s=e(t);i.append=e([]),i.trigger=e([]),s.hasClass(this.markerClassName)||(this._attachments(s,i),s.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp),this._autoSize(i),e.data(t,"datepicker",i),i.settings.disabled&&this._disableDatepicker(t))},_attachments:function(t,i){var s,n,a,o=this._get(i,"appendText"),r=this._get(i,"isRTL");i.append&&i.append.remove(),o&&(i.append=e("<span class='"+this._appendClass+"'>"+o+"</span>"),t[r?"before":"after"](i.append)),t.unbind("focus",this._showDatepicker),i.trigger&&i.trigger.remove(),s=this._get(i,"showOn"),("focus"===s||"both"===s)&&t.focus(this._showDatepicker),("button"===s||"both"===s)&&(n=this._get(i,"buttonText"),a=this._get(i,"buttonImage"),i.trigger=e(this._get(i,"buttonImageOnly")?e("<img/>").addClass(this._triggerClass).attr({src:a,alt:n,title:n}):e("<button type='button'></button>").addClass(this._triggerClass).html(a?e("<img/>").attr({src:a,alt:n,title:n}):n)),t[r?"before":"after"](i.trigger),i.trigger.click(function(){return e.datepicker._datepickerShowing&&e.datepicker._lastInput===t[0]?e.datepicker._hideDatepicker():e.datepicker._datepickerShowing&&e.datepicker._lastInput!==t[0]?(e.datepicker._hideDatepicker(),e.datepicker._showDatepicker(t[0])):e.datepicker._showDatepicker(t[0]),!1}))},_autoSize:function(e){if(this._get(e,"autoSize")&&!e.inline){var t,i,s,n,a=new Date(2009,11,20),o=this._get(e,"dateFormat");o.match(/[DM]/)&&(t=function(e){for(i=0,s=0,n=0;e.length>n;n++)e[n].length>i&&(i=e[n].length,s=n);return s},a.setMonth(t(this._get(e,o.match(/MM/)?"monthNames":"monthNamesShort"))),a.setDate(t(this._get(e,o.match(/DD/)?"dayNames":"dayNamesShort"))+20-a.getDay())),e.input.attr("size",this._formatDate(e,a).length)}},_inlineDatepicker:function(t,i){var s=e(t);s.hasClass(this.markerClassName)||(s.addClass(this.markerClassName).append(i.dpDiv),e.data(t,"datepicker",i),this._setDate(i,this._getDefaultDate(i),!0),this._updateDatepicker(i),this._updateAlternate(i),i.settings.disabled&&this._disableDatepicker(t),i.dpDiv.css("display","block"))},_dialogDatepicker:function(t,i,s,n,a){var o,h,l,u,d,c=this._dialogInst;return c||(this.uuid+=1,o="dp"+this.uuid,this._dialogInput=e("<input type='text' id='"+o+"' style='position: absolute; top: -100px; width: 0px;'/>"),this._dialogInput.keydown(this._doKeyDown),e("body").append(this._dialogInput),c=this._dialogInst=this._newInst(this._dialogInput,!1),c.settings={},e.data(this._dialogInput[0],"datepicker",c)),r(c.settings,n||{}),i=i&&i.constructor===Date?this._formatDate(c,i):i,this._dialogInput.val(i),this._pos=a?a.length?a:[a.pageX,a.pageY]:null,this._pos||(h=document.documentElement.clientWidth,l=document.documentElement.clientHeight,u=document.documentElement.scrollLeft||document.body.scrollLeft,d=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[h/2-100+u,l/2-150+d]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),c.settings.onSelect=s,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),e.blockUI&&e.blockUI(this.dpDiv),e.data(this._dialogInput[0],"datepicker",c),this},_destroyDatepicker:function(t){var i,s=e(t),n=e.data(t,"datepicker");s.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),e.removeData(t,"datepicker"),"input"===i?(n.append.remove(),n.trigger.remove(),s.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)):("div"===i||"span"===i)&&s.removeClass(this.markerClassName).empty(),v===n&&(v=null))},_enableDatepicker:function(t){var i,s,n=e(t),a=e.data(t,"datepicker");n.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),"input"===i?(t.disabled=!1,a.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().removeClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)),this._disabledInputs=e.map(this._disabledInputs,function(e){return e===t?null:e}))},_disableDatepicker:function(t){var i,s,n=e(t),a=e.data(t,"datepicker");n.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),"input"===i?(t.disabled=!0,a.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().addClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)),this._disabledInputs=e.map(this._disabledInputs,function(e){return e===t?null:e}),this._disabledInputs[this._disabledInputs.length]=t)},_isDisabledDatepicker:function(e){if(!e)return!1;for(var t=0;this._disabledInputs.length>t;t++)if(this._disabledInputs[t]===e)return!0;return!1},_getInst:function(t){try{return e.data(t,"datepicker")}catch(i){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(t,i,s){var n,a,o,h,l=this._getInst(t);return 2===arguments.length&&"string"==typeof i?"defaults"===i?e.extend({},e.datepicker._defaults):l?"all"===i?e.extend({},l.settings):this._get(l,i):null:(n=i||{},"string"==typeof i&&(n={},n[i]=s),l&&(this._curInst===l&&this._hideDatepicker(),a=this._getDateDatepicker(t,!0),o=this._getMinMaxDate(l,"min"),h=this._getMinMaxDate(l,"max"),r(l.settings,n),null!==o&&void 0!==n.dateFormat&&void 0===n.minDate&&(l.settings.minDate=this._formatDate(l,o)),null!==h&&void 0!==n.dateFormat&&void 0===n.maxDate&&(l.settings.maxDate=this._formatDate(l,h)),"disabled"in n&&(n.disabled?this._disableDatepicker(t):this._enableDatepicker(t)),this._attachments(e(t),l),this._autoSize(l),this._setDate(l,a),this._updateAlternate(l),this._updateDatepicker(l)),void 0)},_changeDatepicker:function(e,t,i){this._optionDatepicker(e,t,i)},_refreshDatepicker:function(e){var t=this._getInst(e);t&&this._updateDatepicker(t)},_setDateDatepicker:function(e,t){var i=this._getInst(e);i&&(this._setDate(i,t),this._updateDatepicker(i),this._updateAlternate(i))},_getDateDatepicker:function(e,t){var i=this._getInst(e);return i&&!i.inline&&this._setDateFromField(i,t),i?this._getDate(i):null},_doKeyDown:function(t){var i,s,n,a=e.datepicker._getInst(t.target),o=!0,r=a.dpDiv.is(".ui-datepicker-rtl");if(a._keyEvent=!0,e.datepicker._datepickerShowing)switch(t.keyCode){case 9:e.datepicker._hideDatepicker(),o=!1;break;case 13:return n=e("td."+e.datepicker._dayOverClass+":not(."+e.datepicker._currentClass+")",a.dpDiv),n[0]&&e.datepicker._selectDay(t.target,a.selectedMonth,a.selectedYear,n[0]),i=e.datepicker._get(a,"onSelect"),i?(s=e.datepicker._formatDate(a),i.apply(a.input?a.input[0]:null,[s,a])):e.datepicker._hideDatepicker(),!1;case 27:e.datepicker._hideDatepicker();break;case 33:e.datepicker._adjustDate(t.target,t.ctrlKey?-e.datepicker._get(a,"stepBigMonths"):-e.datepicker._get(a,"stepMonths"),"M");break;case 34:e.datepicker._adjustDate(t.target,t.ctrlKey?+e.datepicker._get(a,"stepBigMonths"):+e.datepicker._get(a,"stepMonths"),"M");break;case 35:(t.ctrlKey||t.metaKey)&&e.datepicker._clearDate(t.target),o=t.ctrlKey||t.metaKey;break;case 36:(t.ctrlKey||t.metaKey)&&e.datepicker._gotoToday(t.target),o=t.ctrlKey||t.metaKey;break;case 37:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,r?1:-1,"D"),o=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&e.datepicker._adjustDate(t.target,t.ctrlKey?-e.datepicker._get(a,"stepBigMonths"):-e.datepicker._get(a,"stepMonths"),"M");break;case 38:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,-7,"D"),o=t.ctrlKey||t.metaKey;break;case 39:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,r?-1:1,"D"),o=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&e.datepicker._adjustDate(t.target,t.ctrlKey?+e.datepicker._get(a,"stepBigMonths"):+e.datepicker._get(a,"stepMonths"),"M");break;case 40:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,7,"D"),o=t.ctrlKey||t.metaKey;break;default:o=!1}else 36===t.keyCode&&t.ctrlKey?e.datepicker._showDatepicker(this):o=!1;o&&(t.preventDefault(),t.stopPropagation())},_doKeyPress:function(t){var i,s,n=e.datepicker._getInst(t.target); -return e.datepicker._get(n,"constrainInput")?(i=e.datepicker._possibleChars(e.datepicker._get(n,"dateFormat")),s=String.fromCharCode(null==t.charCode?t.keyCode:t.charCode),t.ctrlKey||t.metaKey||" ">s||!i||i.indexOf(s)>-1):void 0},_doKeyUp:function(t){var i,s=e.datepicker._getInst(t.target);if(s.input.val()!==s.lastVal)try{i=e.datepicker.parseDate(e.datepicker._get(s,"dateFormat"),s.input?s.input.val():null,e.datepicker._getFormatConfig(s)),i&&(e.datepicker._setDateFromField(s),e.datepicker._updateAlternate(s),e.datepicker._updateDatepicker(s))}catch(n){}return!0},_showDatepicker:function(t){if(t=t.target||t,"input"!==t.nodeName.toLowerCase()&&(t=e("input",t.parentNode)[0]),!e.datepicker._isDisabledDatepicker(t)&&e.datepicker._lastInput!==t){var i,n,a,o,h,l,u;i=e.datepicker._getInst(t),e.datepicker._curInst&&e.datepicker._curInst!==i&&(e.datepicker._curInst.dpDiv.stop(!0,!0),i&&e.datepicker._datepickerShowing&&e.datepicker._hideDatepicker(e.datepicker._curInst.input[0])),n=e.datepicker._get(i,"beforeShow"),a=n?n.apply(t,[t,i]):{},a!==!1&&(r(i.settings,a),i.lastVal=null,e.datepicker._lastInput=t,e.datepicker._setDateFromField(i),e.datepicker._inDialog&&(t.value=""),e.datepicker._pos||(e.datepicker._pos=e.datepicker._findPos(t),e.datepicker._pos[1]+=t.offsetHeight),o=!1,e(t).parents().each(function(){return o|="fixed"===e(this).css("position"),!o}),h={left:e.datepicker._pos[0],top:e.datepicker._pos[1]},e.datepicker._pos=null,i.dpDiv.empty(),i.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),e.datepicker._updateDatepicker(i),h=e.datepicker._checkOffset(i,h,o),i.dpDiv.css({position:e.datepicker._inDialog&&e.blockUI?"static":o?"fixed":"absolute",display:"none",left:h.left+"px",top:h.top+"px"}),i.inline||(l=e.datepicker._get(i,"showAnim"),u=e.datepicker._get(i,"duration"),i.dpDiv.css("z-index",s(e(t))+1),e.datepicker._datepickerShowing=!0,e.effects&&e.effects.effect[l]?i.dpDiv.show(l,e.datepicker._get(i,"showOptions"),u):i.dpDiv[l||"show"](l?u:null),e.datepicker._shouldFocusInput(i)&&i.input.focus(),e.datepicker._curInst=i))}},_updateDatepicker:function(t){this.maxRows=4,v=t,t.dpDiv.empty().append(this._generateHTML(t)),this._attachHandlers(t);var i,s=this._getNumberOfMonths(t),n=s[1],a=17,r=t.dpDiv.find("."+this._dayOverClass+" a");r.length>0&&o.apply(r.get(0)),t.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),n>1&&t.dpDiv.addClass("ui-datepicker-multi-"+n).css("width",a*n+"em"),t.dpDiv[(1!==s[0]||1!==s[1]?"add":"remove")+"Class"]("ui-datepicker-multi"),t.dpDiv[(this._get(t,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),t===e.datepicker._curInst&&e.datepicker._datepickerShowing&&e.datepicker._shouldFocusInput(t)&&t.input.focus(),t.yearshtml&&(i=t.yearshtml,setTimeout(function(){i===t.yearshtml&&t.yearshtml&&t.dpDiv.find("select.ui-datepicker-year:first").replaceWith(t.yearshtml),i=t.yearshtml=null},0))},_shouldFocusInput:function(e){return e.input&&e.input.is(":visible")&&!e.input.is(":disabled")&&!e.input.is(":focus")},_checkOffset:function(t,i,s){var n=t.dpDiv.outerWidth(),a=t.dpDiv.outerHeight(),o=t.input?t.input.outerWidth():0,r=t.input?t.input.outerHeight():0,h=document.documentElement.clientWidth+(s?0:e(document).scrollLeft()),l=document.documentElement.clientHeight+(s?0:e(document).scrollTop());return i.left-=this._get(t,"isRTL")?n-o:0,i.left-=s&&i.left===t.input.offset().left?e(document).scrollLeft():0,i.top-=s&&i.top===t.input.offset().top+r?e(document).scrollTop():0,i.left-=Math.min(i.left,i.left+n>h&&h>n?Math.abs(i.left+n-h):0),i.top-=Math.min(i.top,i.top+a>l&&l>a?Math.abs(a+r):0),i},_findPos:function(t){for(var i,s=this._getInst(t),n=this._get(s,"isRTL");t&&("hidden"===t.type||1!==t.nodeType||e.expr.filters.hidden(t));)t=t[n?"previousSibling":"nextSibling"];return i=e(t).offset(),[i.left,i.top]},_hideDatepicker:function(t){var i,s,n,a,o=this._curInst;!o||t&&o!==e.data(t,"datepicker")||this._datepickerShowing&&(i=this._get(o,"showAnim"),s=this._get(o,"duration"),n=function(){e.datepicker._tidyDialog(o)},e.effects&&(e.effects.effect[i]||e.effects[i])?o.dpDiv.hide(i,e.datepicker._get(o,"showOptions"),s,n):o.dpDiv["slideDown"===i?"slideUp":"fadeIn"===i?"fadeOut":"hide"](i?s:null,n),i||n(),this._datepickerShowing=!1,a=this._get(o,"onClose"),a&&a.apply(o.input?o.input[0]:null,[o.input?o.input.val():"",o]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),e.blockUI&&(e.unblockUI(),e("body").append(this.dpDiv))),this._inDialog=!1)},_tidyDialog:function(e){e.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(t){if(e.datepicker._curInst){var i=e(t.target),s=e.datepicker._getInst(i[0]);(i[0].id!==e.datepicker._mainDivId&&0===i.parents("#"+e.datepicker._mainDivId).length&&!i.hasClass(e.datepicker.markerClassName)&&!i.closest("."+e.datepicker._triggerClass).length&&e.datepicker._datepickerShowing&&(!e.datepicker._inDialog||!e.blockUI)||i.hasClass(e.datepicker.markerClassName)&&e.datepicker._curInst!==s)&&e.datepicker._hideDatepicker()}},_adjustDate:function(t,i,s){var n=e(t),a=this._getInst(n[0]);this._isDisabledDatepicker(n[0])||(this._adjustInstDate(a,i+("M"===s?this._get(a,"showCurrentAtPos"):0),s),this._updateDatepicker(a))},_gotoToday:function(t){var i,s=e(t),n=this._getInst(s[0]);this._get(n,"gotoCurrent")&&n.currentDay?(n.selectedDay=n.currentDay,n.drawMonth=n.selectedMonth=n.currentMonth,n.drawYear=n.selectedYear=n.currentYear):(i=new Date,n.selectedDay=i.getDate(),n.drawMonth=n.selectedMonth=i.getMonth(),n.drawYear=n.selectedYear=i.getFullYear()),this._notifyChange(n),this._adjustDate(s)},_selectMonthYear:function(t,i,s){var n=e(t),a=this._getInst(n[0]);a["selected"+("M"===s?"Month":"Year")]=a["draw"+("M"===s?"Month":"Year")]=parseInt(i.options[i.selectedIndex].value,10),this._notifyChange(a),this._adjustDate(n)},_selectDay:function(t,i,s,n){var a,o=e(t);e(n).hasClass(this._unselectableClass)||this._isDisabledDatepicker(o[0])||(a=this._getInst(o[0]),a.selectedDay=a.currentDay=e("a",n).html(),a.selectedMonth=a.currentMonth=i,a.selectedYear=a.currentYear=s,this._selectDate(t,this._formatDate(a,a.currentDay,a.currentMonth,a.currentYear)))},_clearDate:function(t){var i=e(t);this._selectDate(i,"")},_selectDate:function(t,i){var s,n=e(t),a=this._getInst(n[0]);i=null!=i?i:this._formatDate(a),a.input&&a.input.val(i),this._updateAlternate(a),s=this._get(a,"onSelect"),s?s.apply(a.input?a.input[0]:null,[i,a]):a.input&&a.input.trigger("change"),a.inline?this._updateDatepicker(a):(this._hideDatepicker(),this._lastInput=a.input[0],"object"!=typeof a.input[0]&&a.input.focus(),this._lastInput=null)},_updateAlternate:function(t){var i,s,n,a=this._get(t,"altField");a&&(i=this._get(t,"altFormat")||this._get(t,"dateFormat"),s=this._getDate(t),n=this.formatDate(i,s,this._getFormatConfig(t)),e(a).each(function(){e(this).val(n)}))},noWeekends:function(e){var t=e.getDay();return[t>0&&6>t,""]},iso8601Week:function(e){var t,i=new Date(e.getTime());return i.setDate(i.getDate()+4-(i.getDay()||7)),t=i.getTime(),i.setMonth(0),i.setDate(1),Math.floor(Math.round((t-i)/864e5)/7)+1},parseDate:function(t,i,s){if(null==t||null==i)throw"Invalid arguments";if(i="object"==typeof i?""+i:i+"",""===i)return null;var n,a,o,r,h=0,l=(s?s.shortYearCutoff:null)||this._defaults.shortYearCutoff,u="string"!=typeof l?l:(new Date).getFullYear()%100+parseInt(l,10),d=(s?s.dayNamesShort:null)||this._defaults.dayNamesShort,c=(s?s.dayNames:null)||this._defaults.dayNames,p=(s?s.monthNamesShort:null)||this._defaults.monthNamesShort,f=(s?s.monthNames:null)||this._defaults.monthNames,m=-1,g=-1,v=-1,y=-1,b=!1,_=function(e){var i=t.length>n+1&&t.charAt(n+1)===e;return i&&n++,i},x=function(e){var t=_(e),s="@"===e?14:"!"===e?20:"y"===e&&t?4:"o"===e?3:2,n="y"===e?s:1,a=RegExp("^\\d{"+n+","+s+"}"),o=i.substring(h).match(a);if(!o)throw"Missing number at position "+h;return h+=o[0].length,parseInt(o[0],10)},w=function(t,s,n){var a=-1,o=e.map(_(t)?n:s,function(e,t){return[[t,e]]}).sort(function(e,t){return-(e[1].length-t[1].length)});if(e.each(o,function(e,t){var s=t[1];return i.substr(h,s.length).toLowerCase()===s.toLowerCase()?(a=t[0],h+=s.length,!1):void 0}),-1!==a)return a+1;throw"Unknown name at position "+h},k=function(){if(i.charAt(h)!==t.charAt(n))throw"Unexpected literal at position "+h;h++};for(n=0;t.length>n;n++)if(b)"'"!==t.charAt(n)||_("'")?k():b=!1;else switch(t.charAt(n)){case"d":v=x("d");break;case"D":w("D",d,c);break;case"o":y=x("o");break;case"m":g=x("m");break;case"M":g=w("M",p,f);break;case"y":m=x("y");break;case"@":r=new Date(x("@")),m=r.getFullYear(),g=r.getMonth()+1,v=r.getDate();break;case"!":r=new Date((x("!")-this._ticksTo1970)/1e4),m=r.getFullYear(),g=r.getMonth()+1,v=r.getDate();break;case"'":_("'")?k():b=!0;break;default:k()}if(i.length>h&&(o=i.substr(h),!/^\s+/.test(o)))throw"Extra/unparsed characters found in date: "+o;if(-1===m?m=(new Date).getFullYear():100>m&&(m+=(new Date).getFullYear()-(new Date).getFullYear()%100+(u>=m?0:-100)),y>-1)for(g=1,v=y;;){if(a=this._getDaysInMonth(m,g-1),a>=v)break;g++,v-=a}if(r=this._daylightSavingAdjust(new Date(m,g-1,v)),r.getFullYear()!==m||r.getMonth()+1!==g||r.getDate()!==v)throw"Invalid date";return r},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:1e7*60*60*24*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925)),formatDate:function(e,t,i){if(!t)return"";var s,n=(i?i.dayNamesShort:null)||this._defaults.dayNamesShort,a=(i?i.dayNames:null)||this._defaults.dayNames,o=(i?i.monthNamesShort:null)||this._defaults.monthNamesShort,r=(i?i.monthNames:null)||this._defaults.monthNames,h=function(t){var i=e.length>s+1&&e.charAt(s+1)===t;return i&&s++,i},l=function(e,t,i){var s=""+t;if(h(e))for(;i>s.length;)s="0"+s;return s},u=function(e,t,i,s){return h(e)?s[t]:i[t]},d="",c=!1;if(t)for(s=0;e.length>s;s++)if(c)"'"!==e.charAt(s)||h("'")?d+=e.charAt(s):c=!1;else switch(e.charAt(s)){case"d":d+=l("d",t.getDate(),2);break;case"D":d+=u("D",t.getDay(),n,a);break;case"o":d+=l("o",Math.round((new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()-new Date(t.getFullYear(),0,0).getTime())/864e5),3);break;case"m":d+=l("m",t.getMonth()+1,2);break;case"M":d+=u("M",t.getMonth(),o,r);break;case"y":d+=h("y")?t.getFullYear():(10>t.getYear()%100?"0":"")+t.getYear()%100;break;case"@":d+=t.getTime();break;case"!":d+=1e4*t.getTime()+this._ticksTo1970;break;case"'":h("'")?d+="'":c=!0;break;default:d+=e.charAt(s)}return d},_possibleChars:function(e){var t,i="",s=!1,n=function(i){var s=e.length>t+1&&e.charAt(t+1)===i;return s&&t++,s};for(t=0;e.length>t;t++)if(s)"'"!==e.charAt(t)||n("'")?i+=e.charAt(t):s=!1;else switch(e.charAt(t)){case"d":case"m":case"y":case"@":i+="0123456789";break;case"D":case"M":return null;case"'":n("'")?i+="'":s=!0;break;default:i+=e.charAt(t)}return i},_get:function(e,t){return void 0!==e.settings[t]?e.settings[t]:this._defaults[t]},_setDateFromField:function(e,t){if(e.input.val()!==e.lastVal){var i=this._get(e,"dateFormat"),s=e.lastVal=e.input?e.input.val():null,n=this._getDefaultDate(e),a=n,o=this._getFormatConfig(e);try{a=this.parseDate(i,s,o)||n}catch(r){s=t?"":s}e.selectedDay=a.getDate(),e.drawMonth=e.selectedMonth=a.getMonth(),e.drawYear=e.selectedYear=a.getFullYear(),e.currentDay=s?a.getDate():0,e.currentMonth=s?a.getMonth():0,e.currentYear=s?a.getFullYear():0,this._adjustInstDate(e)}},_getDefaultDate:function(e){return this._restrictMinMax(e,this._determineDate(e,this._get(e,"defaultDate"),new Date))},_determineDate:function(t,i,s){var n=function(e){var t=new Date;return t.setDate(t.getDate()+e),t},a=function(i){try{return e.datepicker.parseDate(e.datepicker._get(t,"dateFormat"),i,e.datepicker._getFormatConfig(t))}catch(s){}for(var n=(i.toLowerCase().match(/^c/)?e.datepicker._getDate(t):null)||new Date,a=n.getFullYear(),o=n.getMonth(),r=n.getDate(),h=/([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,l=h.exec(i);l;){switch(l[2]||"d"){case"d":case"D":r+=parseInt(l[1],10);break;case"w":case"W":r+=7*parseInt(l[1],10);break;case"m":case"M":o+=parseInt(l[1],10),r=Math.min(r,e.datepicker._getDaysInMonth(a,o));break;case"y":case"Y":a+=parseInt(l[1],10),r=Math.min(r,e.datepicker._getDaysInMonth(a,o))}l=h.exec(i)}return new Date(a,o,r)},o=null==i||""===i?s:"string"==typeof i?a(i):"number"==typeof i?isNaN(i)?s:n(i):new Date(i.getTime());return o=o&&"Invalid Date"==""+o?s:o,o&&(o.setHours(0),o.setMinutes(0),o.setSeconds(0),o.setMilliseconds(0)),this._daylightSavingAdjust(o)},_daylightSavingAdjust:function(e){return e?(e.setHours(e.getHours()>12?e.getHours()+2:0),e):null},_setDate:function(e,t,i){var s=!t,n=e.selectedMonth,a=e.selectedYear,o=this._restrictMinMax(e,this._determineDate(e,t,new Date));e.selectedDay=e.currentDay=o.getDate(),e.drawMonth=e.selectedMonth=e.currentMonth=o.getMonth(),e.drawYear=e.selectedYear=e.currentYear=o.getFullYear(),n===e.selectedMonth&&a===e.selectedYear||i||this._notifyChange(e),this._adjustInstDate(e),e.input&&e.input.val(s?"":this._formatDate(e))},_getDate:function(e){var t=!e.currentYear||e.input&&""===e.input.val()?null:this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return t},_attachHandlers:function(t){var i=this._get(t,"stepMonths"),s="#"+t.id.replace(/\\\\/g,"\\");t.dpDiv.find("[data-handler]").map(function(){var t={prev:function(){e.datepicker._adjustDate(s,-i,"M")},next:function(){e.datepicker._adjustDate(s,+i,"M")},hide:function(){e.datepicker._hideDatepicker()},today:function(){e.datepicker._gotoToday(s)},selectDay:function(){return e.datepicker._selectDay(s,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return e.datepicker._selectMonthYear(s,this,"M"),!1},selectYear:function(){return e.datepicker._selectMonthYear(s,this,"Y"),!1}};e(this).bind(this.getAttribute("data-event"),t[this.getAttribute("data-handler")])})},_generateHTML:function(e){var t,i,s,n,a,o,r,h,l,u,d,c,p,f,m,g,v,y,b,_,x,w,k,T,D,S,M,C,N,A,P,I,H,z,F,E,O,j,W,L=new Date,R=this._daylightSavingAdjust(new Date(L.getFullYear(),L.getMonth(),L.getDate())),Y=this._get(e,"isRTL"),B=this._get(e,"showButtonPanel"),J=this._get(e,"hideIfNoPrevNext"),q=this._get(e,"navigationAsDateFormat"),K=this._getNumberOfMonths(e),V=this._get(e,"showCurrentAtPos"),U=this._get(e,"stepMonths"),Q=1!==K[0]||1!==K[1],G=this._daylightSavingAdjust(e.currentDay?new Date(e.currentYear,e.currentMonth,e.currentDay):new Date(9999,9,9)),X=this._getMinMaxDate(e,"min"),$=this._getMinMaxDate(e,"max"),Z=e.drawMonth-V,et=e.drawYear;if(0>Z&&(Z+=12,et--),$)for(t=this._daylightSavingAdjust(new Date($.getFullYear(),$.getMonth()-K[0]*K[1]+1,$.getDate())),t=X&&X>t?X:t;this._daylightSavingAdjust(new Date(et,Z,1))>t;)Z--,0>Z&&(Z=11,et--);for(e.drawMonth=Z,e.drawYear=et,i=this._get(e,"prevText"),i=q?this.formatDate(i,this._daylightSavingAdjust(new Date(et,Z-U,1)),this._getFormatConfig(e)):i,s=this._canAdjustMonth(e,-1,et,Z)?"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"e":"w")+"'>"+i+"</span></a>":J?"":"<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"e":"w")+"'>"+i+"</span></a>",n=this._get(e,"nextText"),n=q?this.formatDate(n,this._daylightSavingAdjust(new Date(et,Z+U,1)),this._getFormatConfig(e)):n,a=this._canAdjustMonth(e,1,et,Z)?"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"w":"e")+"'>"+n+"</span></a>":J?"":"<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"w":"e")+"'>"+n+"</span></a>",o=this._get(e,"currentText"),r=this._get(e,"gotoCurrent")&&e.currentDay?G:R,o=q?this.formatDate(o,r,this._getFormatConfig(e)):o,h=e.inline?"":"<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>"+this._get(e,"closeText")+"</button>",l=B?"<div class='ui-datepicker-buttonpane ui-widget-content'>"+(Y?h:"")+(this._isInRange(e,r)?"<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'>"+o+"</button>":"")+(Y?"":h)+"</div>":"",u=parseInt(this._get(e,"firstDay"),10),u=isNaN(u)?0:u,d=this._get(e,"showWeek"),c=this._get(e,"dayNames"),p=this._get(e,"dayNamesMin"),f=this._get(e,"monthNames"),m=this._get(e,"monthNamesShort"),g=this._get(e,"beforeShowDay"),v=this._get(e,"showOtherMonths"),y=this._get(e,"selectOtherMonths"),b=this._getDefaultDate(e),_="",w=0;K[0]>w;w++){for(k="",this.maxRows=4,T=0;K[1]>T;T++){if(D=this._daylightSavingAdjust(new Date(et,Z,e.selectedDay)),S=" ui-corner-all",M="",Q){if(M+="<div class='ui-datepicker-group",K[1]>1)switch(T){case 0:M+=" ui-datepicker-group-first",S=" ui-corner-"+(Y?"right":"left");break;case K[1]-1:M+=" ui-datepicker-group-last",S=" ui-corner-"+(Y?"left":"right");break;default:M+=" ui-datepicker-group-middle",S=""}M+="'>"}for(M+="<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix"+S+"'>"+(/all|left/.test(S)&&0===w?Y?a:s:"")+(/all|right/.test(S)&&0===w?Y?s:a:"")+this._generateMonthYearHeader(e,Z,et,X,$,w>0||T>0,f,m)+"</div><table class='ui-datepicker-calendar'><thead>"+"<tr>",C=d?"<th class='ui-datepicker-week-col'>"+this._get(e,"weekHeader")+"</th>":"",x=0;7>x;x++)N=(x+u)%7,C+="<th scope='col'"+((x+u+6)%7>=5?" class='ui-datepicker-week-end'":"")+">"+"<span title='"+c[N]+"'>"+p[N]+"</span></th>";for(M+=C+"</tr></thead><tbody>",A=this._getDaysInMonth(et,Z),et===e.selectedYear&&Z===e.selectedMonth&&(e.selectedDay=Math.min(e.selectedDay,A)),P=(this._getFirstDayOfMonth(et,Z)-u+7)%7,I=Math.ceil((P+A)/7),H=Q?this.maxRows>I?this.maxRows:I:I,this.maxRows=H,z=this._daylightSavingAdjust(new Date(et,Z,1-P)),F=0;H>F;F++){for(M+="<tr>",E=d?"<td class='ui-datepicker-week-col'>"+this._get(e,"calculateWeek")(z)+"</td>":"",x=0;7>x;x++)O=g?g.apply(e.input?e.input[0]:null,[z]):[!0,""],j=z.getMonth()!==Z,W=j&&!y||!O[0]||X&&X>z||$&&z>$,E+="<td class='"+((x+u+6)%7>=5?" ui-datepicker-week-end":"")+(j?" ui-datepicker-other-month":"")+(z.getTime()===D.getTime()&&Z===e.selectedMonth&&e._keyEvent||b.getTime()===z.getTime()&&b.getTime()===D.getTime()?" "+this._dayOverClass:"")+(W?" "+this._unselectableClass+" ui-state-disabled":"")+(j&&!v?"":" "+O[1]+(z.getTime()===G.getTime()?" "+this._currentClass:"")+(z.getTime()===R.getTime()?" ui-datepicker-today":""))+"'"+(j&&!v||!O[2]?"":" title='"+O[2].replace(/'/g,"'")+"'")+(W?"":" data-handler='selectDay' data-event='click' data-month='"+z.getMonth()+"' data-year='"+z.getFullYear()+"'")+">"+(j&&!v?" ":W?"<span class='ui-state-default'>"+z.getDate()+"</span>":"<a class='ui-state-default"+(z.getTime()===R.getTime()?" ui-state-highlight":"")+(z.getTime()===G.getTime()?" ui-state-active":"")+(j?" ui-priority-secondary":"")+"' href='#'>"+z.getDate()+"</a>")+"</td>",z.setDate(z.getDate()+1),z=this._daylightSavingAdjust(z);M+=E+"</tr>"}Z++,Z>11&&(Z=0,et++),M+="</tbody></table>"+(Q?"</div>"+(K[0]>0&&T===K[1]-1?"<div class='ui-datepicker-row-break'></div>":""):""),k+=M}_+=k}return _+=l,e._keyEvent=!1,_},_generateMonthYearHeader:function(e,t,i,s,n,a,o,r){var h,l,u,d,c,p,f,m,g=this._get(e,"changeMonth"),v=this._get(e,"changeYear"),y=this._get(e,"showMonthAfterYear"),b="<div class='ui-datepicker-title'>",_="";if(a||!g)_+="<span class='ui-datepicker-month'>"+o[t]+"</span>";else{for(h=s&&s.getFullYear()===i,l=n&&n.getFullYear()===i,_+="<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>",u=0;12>u;u++)(!h||u>=s.getMonth())&&(!l||n.getMonth()>=u)&&(_+="<option value='"+u+"'"+(u===t?" selected='selected'":"")+">"+r[u]+"</option>");_+="</select>"}if(y||(b+=_+(!a&&g&&v?"":" ")),!e.yearshtml)if(e.yearshtml="",a||!v)b+="<span class='ui-datepicker-year'>"+i+"</span>";else{for(d=this._get(e,"yearRange").split(":"),c=(new Date).getFullYear(),p=function(e){var t=e.match(/c[+\-].*/)?i+parseInt(e.substring(1),10):e.match(/[+\-].*/)?c+parseInt(e,10):parseInt(e,10);return isNaN(t)?c:t},f=p(d[0]),m=Math.max(f,p(d[1]||"")),f=s?Math.max(f,s.getFullYear()):f,m=n?Math.min(m,n.getFullYear()):m,e.yearshtml+="<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>";m>=f;f++)e.yearshtml+="<option value='"+f+"'"+(f===i?" selected='selected'":"")+">"+f+"</option>";e.yearshtml+="</select>",b+=e.yearshtml,e.yearshtml=null}return b+=this._get(e,"yearSuffix"),y&&(b+=(!a&&g&&v?"":" ")+_),b+="</div>"},_adjustInstDate:function(e,t,i){var s=e.drawYear+("Y"===i?t:0),n=e.drawMonth+("M"===i?t:0),a=Math.min(e.selectedDay,this._getDaysInMonth(s,n))+("D"===i?t:0),o=this._restrictMinMax(e,this._daylightSavingAdjust(new Date(s,n,a)));e.selectedDay=o.getDate(),e.drawMonth=e.selectedMonth=o.getMonth(),e.drawYear=e.selectedYear=o.getFullYear(),("M"===i||"Y"===i)&&this._notifyChange(e)},_restrictMinMax:function(e,t){var i=this._getMinMaxDate(e,"min"),s=this._getMinMaxDate(e,"max"),n=i&&i>t?i:t;return s&&n>s?s:n},_notifyChange:function(e){var t=this._get(e,"onChangeMonthYear");t&&t.apply(e.input?e.input[0]:null,[e.selectedYear,e.selectedMonth+1,e])},_getNumberOfMonths:function(e){var t=this._get(e,"numberOfMonths");return null==t?[1,1]:"number"==typeof t?[1,t]:t},_getMinMaxDate:function(e,t){return this._determineDate(e,this._get(e,t+"Date"),null)},_getDaysInMonth:function(e,t){return 32-this._daylightSavingAdjust(new Date(e,t,32)).getDate()},_getFirstDayOfMonth:function(e,t){return new Date(e,t,1).getDay()},_canAdjustMonth:function(e,t,i,s){var n=this._getNumberOfMonths(e),a=this._daylightSavingAdjust(new Date(i,s+(0>t?t:n[0]*n[1]),1));return 0>t&&a.setDate(this._getDaysInMonth(a.getFullYear(),a.getMonth())),this._isInRange(e,a)},_isInRange:function(e,t){var i,s,n=this._getMinMaxDate(e,"min"),a=this._getMinMaxDate(e,"max"),o=null,r=null,h=this._get(e,"yearRange");return h&&(i=h.split(":"),s=(new Date).getFullYear(),o=parseInt(i[0],10),r=parseInt(i[1],10),i[0].match(/[+\-].*/)&&(o+=s),i[1].match(/[+\-].*/)&&(r+=s)),(!n||t.getTime()>=n.getTime())&&(!a||t.getTime()<=a.getTime())&&(!o||t.getFullYear()>=o)&&(!r||r>=t.getFullYear())},_getFormatConfig:function(e){var t=this._get(e,"shortYearCutoff");return t="string"!=typeof t?t:(new Date).getFullYear()%100+parseInt(t,10),{shortYearCutoff:t,dayNamesShort:this._get(e,"dayNamesShort"),dayNames:this._get(e,"dayNames"),monthNamesShort:this._get(e,"monthNamesShort"),monthNames:this._get(e,"monthNames")}},_formatDate:function(e,t,i,s){t||(e.currentDay=e.selectedDay,e.currentMonth=e.selectedMonth,e.currentYear=e.selectedYear);var n=t?"object"==typeof t?t:this._daylightSavingAdjust(new Date(s,i,t)):this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return this.formatDate(this._get(e,"dateFormat"),n,this._getFormatConfig(e))}}),e.fn.datepicker=function(t){if(!this.length)return this;e.datepicker.initialized||(e(document).mousedown(e.datepicker._checkExternalClick),e.datepicker.initialized=!0),0===e("#"+e.datepicker._mainDivId).length&&e("body").append(e.datepicker.dpDiv);var i=Array.prototype.slice.call(arguments,1);return"string"!=typeof t||"isDisabled"!==t&&"getDate"!==t&&"widget"!==t?"option"===t&&2===arguments.length&&"string"==typeof arguments[1]?e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this[0]].concat(i)):this.each(function(){"string"==typeof t?e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this].concat(i)):e.datepicker._attachDatepicker(this,t)}):e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this[0]].concat(i))},e.datepicker=new n,e.datepicker.initialized=!1,e.datepicker.uuid=(new Date).getTime(),e.datepicker.version="1.11.4",e.datepicker,e.widget("ui.draggable",e.ui.mouse,{version:"1.11.4",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"===this.options.helper&&this._setPositionRelative(),this.options.addClasses&&this.element.addClass("ui-draggable"),this.options.disabled&&this.element.addClass("ui-draggable-disabled"),this._setHandleClassName(),this._mouseInit()},_setOption:function(e,t){this._super(e,t),"handle"===e&&(this._removeHandleClassName(),this._setHandleClassName())},_destroy:function(){return(this.helper||this.element).is(".ui-draggable-dragging")?(this.destroyOnClear=!0,void 0):(this.element.removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._removeHandleClassName(),this._mouseDestroy(),void 0)},_mouseCapture:function(t){var i=this.options;return this._blurActiveElement(t),this.helper||i.disabled||e(t.target).closest(".ui-resizable-handle").length>0?!1:(this.handle=this._getHandle(t),this.handle?(this._blockFrames(i.iframeFix===!0?"iframe":i.iframeFix),!0):!1)},_blockFrames:function(t){this.iframeBlocks=this.document.find(t).map(function(){var t=e(this);return e("<div>").css("position","absolute").appendTo(t.parent()).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(t){var i=this.document[0];if(this.handleElement.is(t.target))try{i.activeElement&&"body"!==i.activeElement.nodeName.toLowerCase()&&e(i.activeElement).blur()}catch(s){}},_mouseStart:function(t){var i=this.options;return this.helper=this._createHelper(t),this.helper.addClass("ui-draggable-dragging"),this._cacheHelperProportions(),e.ui.ddmanager&&(e.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=this.helper.parents().filter(function(){return"fixed"===e(this).css("position")}).length>0,this.positionAbs=this.element.offset(),this._refreshOffsets(t),this.originalPosition=this.position=this._generatePosition(t,!1),this.originalPageX=t.pageX,this.originalPageY=t.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this._setContainment(),this._trigger("start",t)===!1?(this._clear(),!1):(this._cacheHelperProportions(),e.ui.ddmanager&&!i.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this._normalizeRightBottom(),this._mouseDrag(t,!0),e.ui.ddmanager&&e.ui.ddmanager.dragStart(this,t),!0)},_refreshOffsets:function(e){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:e.pageX-this.offset.left,top:e.pageY-this.offset.top}},_mouseDrag:function(t,i){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(t,!0),this.positionAbs=this._convertPositionTo("absolute"),!i){var s=this._uiHash();if(this._trigger("drag",t,s)===!1)return this._mouseUp({}),!1;this.position=s.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),!1},_mouseStop:function(t){var i=this,s=!1;return e.ui.ddmanager&&!this.options.dropBehaviour&&(s=e.ui.ddmanager.drop(this,t)),this.dropped&&(s=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!s||"valid"===this.options.revert&&s||this.options.revert===!0||e.isFunction(this.options.revert)&&this.options.revert.call(this.element,s)?e(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){i._trigger("stop",t)!==!1&&i._clear()}):this._trigger("stop",t)!==!1&&this._clear(),!1},_mouseUp:function(t){return this._unblockFrames(),e.ui.ddmanager&&e.ui.ddmanager.dragStop(this,t),this.handleElement.is(t.target)&&this.element.focus(),e.ui.mouse.prototype._mouseUp.call(this,t)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear(),this},_getHandle:function(t){return this.options.handle?!!e(t.target).closest(this.element.find(this.options.handle)).length:!0},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this.handleElement.addClass("ui-draggable-handle")},_removeHandleClassName:function(){this.handleElement.removeClass("ui-draggable-handle")},_createHelper:function(t){var i=this.options,s=e.isFunction(i.helper),n=s?e(i.helper.apply(this.element[0],[t])):"clone"===i.helper?this.element.clone().removeAttr("id"):this.element;return n.parents("body").length||n.appendTo("parent"===i.appendTo?this.element[0].parentNode:i.appendTo),s&&n[0]===this.element[0]&&this._setPositionRelative(),n[0]===this.element[0]||/(fixed|absolute)/.test(n.css("position"))||n.css("position","absolute"),n},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_isRootNode:function(e){return/(html|body)/i.test(e.tagName)||e===this.document[0]},_getParentOffset:function(){var t=this.offsetParent.offset(),i=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==i&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),this._isRootNode(this.offsetParent[0])&&(t={top:0,left:0}),{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var e=this.element.position(),t=this._isRootNode(this.scrollParent[0]);return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+(t?0:this.scrollParent.scrollTop()),left:e.left-(parseInt(this.helper.css("left"),10)||0)+(t?0:this.scrollParent.scrollLeft())}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,i,s,n=this.options,a=this.document[0];return this.relativeContainer=null,n.containment?"window"===n.containment?(this.containment=[e(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,e(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,e(window).scrollLeft()+e(window).width()-this.helperProportions.width-this.margins.left,e(window).scrollTop()+(e(window).height()||a.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):"document"===n.containment?(this.containment=[0,0,e(a).width()-this.helperProportions.width-this.margins.left,(e(a).height()||a.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):n.containment.constructor===Array?(this.containment=n.containment,void 0):("parent"===n.containment&&(n.containment=this.helper[0].parentNode),i=e(n.containment),s=i[0],s&&(t=/(scroll|auto)/.test(i.css("overflow")),this.containment=[(parseInt(i.css("borderLeftWidth"),10)||0)+(parseInt(i.css("paddingLeft"),10)||0),(parseInt(i.css("borderTopWidth"),10)||0)+(parseInt(i.css("paddingTop"),10)||0),(t?Math.max(s.scrollWidth,s.offsetWidth):s.offsetWidth)-(parseInt(i.css("borderRightWidth"),10)||0)-(parseInt(i.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(t?Math.max(s.scrollHeight,s.offsetHeight):s.offsetHeight)-(parseInt(i.css("borderBottomWidth"),10)||0)-(parseInt(i.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=i),void 0):(this.containment=null,void 0) -},_convertPositionTo:function(e,t){t||(t=this.position);var i="absolute"===e?1:-1,s=this._isRootNode(this.scrollParent[0]);return{top:t.top+this.offset.relative.top*i+this.offset.parent.top*i-("fixed"===this.cssPosition?-this.offset.scroll.top:s?0:this.offset.scroll.top)*i,left:t.left+this.offset.relative.left*i+this.offset.parent.left*i-("fixed"===this.cssPosition?-this.offset.scroll.left:s?0:this.offset.scroll.left)*i}},_generatePosition:function(e,t){var i,s,n,a,o=this.options,r=this._isRootNode(this.scrollParent[0]),h=e.pageX,l=e.pageY;return r&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),t&&(this.containment&&(this.relativeContainer?(s=this.relativeContainer.offset(),i=[this.containment[0]+s.left,this.containment[1]+s.top,this.containment[2]+s.left,this.containment[3]+s.top]):i=this.containment,e.pageX-this.offset.click.left<i[0]&&(h=i[0]+this.offset.click.left),e.pageY-this.offset.click.top<i[1]&&(l=i[1]+this.offset.click.top),e.pageX-this.offset.click.left>i[2]&&(h=i[2]+this.offset.click.left),e.pageY-this.offset.click.top>i[3]&&(l=i[3]+this.offset.click.top)),o.grid&&(n=o.grid[1]?this.originalPageY+Math.round((l-this.originalPageY)/o.grid[1])*o.grid[1]:this.originalPageY,l=i?n-this.offset.click.top>=i[1]||n-this.offset.click.top>i[3]?n:n-this.offset.click.top>=i[1]?n-o.grid[1]:n+o.grid[1]:n,a=o.grid[0]?this.originalPageX+Math.round((h-this.originalPageX)/o.grid[0])*o.grid[0]:this.originalPageX,h=i?a-this.offset.click.left>=i[0]||a-this.offset.click.left>i[2]?a:a-this.offset.click.left>=i[0]?a-o.grid[0]:a+o.grid[0]:a),"y"===o.axis&&(h=this.originalPageX),"x"===o.axis&&(l=this.originalPageY)),{top:l-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:r?0:this.offset.scroll.top),left:h-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:r?0:this.offset.scroll.left)}},_clear:function(){this.helper.removeClass("ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_normalizeRightBottom:function(){"y"!==this.options.axis&&"auto"!==this.helper.css("right")&&(this.helper.width(this.helper.width()),this.helper.css("right","auto")),"x"!==this.options.axis&&"auto"!==this.helper.css("bottom")&&(this.helper.height(this.helper.height()),this.helper.css("bottom","auto"))},_trigger:function(t,i,s){return s=s||this._uiHash(),e.ui.plugin.call(this,t,[i,s,this],!0),/^(drag|start|stop)/.test(t)&&(this.positionAbs=this._convertPositionTo("absolute"),s.offset=this.positionAbs),e.Widget.prototype._trigger.call(this,t,i,s)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),e.ui.plugin.add("draggable","connectToSortable",{start:function(t,i,s){var n=e.extend({},i,{item:s.element});s.sortables=[],e(s.options.connectToSortable).each(function(){var i=e(this).sortable("instance");i&&!i.options.disabled&&(s.sortables.push(i),i.refreshPositions(),i._trigger("activate",t,n))})},stop:function(t,i,s){var n=e.extend({},i,{item:s.element});s.cancelHelperRemoval=!1,e.each(s.sortables,function(){var e=this;e.isOver?(e.isOver=0,s.cancelHelperRemoval=!0,e.cancelHelperRemoval=!1,e._storedCSS={position:e.placeholder.css("position"),top:e.placeholder.css("top"),left:e.placeholder.css("left")},e._mouseStop(t),e.options.helper=e.options._helper):(e.cancelHelperRemoval=!0,e._trigger("deactivate",t,n))})},drag:function(t,i,s){e.each(s.sortables,function(){var n=!1,a=this;a.positionAbs=s.positionAbs,a.helperProportions=s.helperProportions,a.offset.click=s.offset.click,a._intersectsWith(a.containerCache)&&(n=!0,e.each(s.sortables,function(){return this.positionAbs=s.positionAbs,this.helperProportions=s.helperProportions,this.offset.click=s.offset.click,this!==a&&this._intersectsWith(this.containerCache)&&e.contains(a.element[0],this.element[0])&&(n=!1),n})),n?(a.isOver||(a.isOver=1,s._parent=i.helper.parent(),a.currentItem=i.helper.appendTo(a.element).data("ui-sortable-item",!0),a.options._helper=a.options.helper,a.options.helper=function(){return i.helper[0]},t.target=a.currentItem[0],a._mouseCapture(t,!0),a._mouseStart(t,!0,!0),a.offset.click.top=s.offset.click.top,a.offset.click.left=s.offset.click.left,a.offset.parent.left-=s.offset.parent.left-a.offset.parent.left,a.offset.parent.top-=s.offset.parent.top-a.offset.parent.top,s._trigger("toSortable",t),s.dropped=a.element,e.each(s.sortables,function(){this.refreshPositions()}),s.currentItem=s.element,a.fromOutside=s),a.currentItem&&(a._mouseDrag(t),i.position=a.position)):a.isOver&&(a.isOver=0,a.cancelHelperRemoval=!0,a.options._revert=a.options.revert,a.options.revert=!1,a._trigger("out",t,a._uiHash(a)),a._mouseStop(t,!0),a.options.revert=a.options._revert,a.options.helper=a.options._helper,a.placeholder&&a.placeholder.remove(),i.helper.appendTo(s._parent),s._refreshOffsets(t),i.position=s._generatePosition(t,!0),s._trigger("fromSortable",t),s.dropped=!1,e.each(s.sortables,function(){this.refreshPositions()}))})}}),e.ui.plugin.add("draggable","cursor",{start:function(t,i,s){var n=e("body"),a=s.options;n.css("cursor")&&(a._cursor=n.css("cursor")),n.css("cursor",a.cursor)},stop:function(t,i,s){var n=s.options;n._cursor&&e("body").css("cursor",n._cursor)}}),e.ui.plugin.add("draggable","opacity",{start:function(t,i,s){var n=e(i.helper),a=s.options;n.css("opacity")&&(a._opacity=n.css("opacity")),n.css("opacity",a.opacity)},stop:function(t,i,s){var n=s.options;n._opacity&&e(i.helper).css("opacity",n._opacity)}}),e.ui.plugin.add("draggable","scroll",{start:function(e,t,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(t,i,s){var n=s.options,a=!1,o=s.scrollParentNotHidden[0],r=s.document[0];o!==r&&"HTML"!==o.tagName?(n.axis&&"x"===n.axis||(s.overflowOffset.top+o.offsetHeight-t.pageY<n.scrollSensitivity?o.scrollTop=a=o.scrollTop+n.scrollSpeed:t.pageY-s.overflowOffset.top<n.scrollSensitivity&&(o.scrollTop=a=o.scrollTop-n.scrollSpeed)),n.axis&&"y"===n.axis||(s.overflowOffset.left+o.offsetWidth-t.pageX<n.scrollSensitivity?o.scrollLeft=a=o.scrollLeft+n.scrollSpeed:t.pageX-s.overflowOffset.left<n.scrollSensitivity&&(o.scrollLeft=a=o.scrollLeft-n.scrollSpeed))):(n.axis&&"x"===n.axis||(t.pageY-e(r).scrollTop()<n.scrollSensitivity?a=e(r).scrollTop(e(r).scrollTop()-n.scrollSpeed):e(window).height()-(t.pageY-e(r).scrollTop())<n.scrollSensitivity&&(a=e(r).scrollTop(e(r).scrollTop()+n.scrollSpeed))),n.axis&&"y"===n.axis||(t.pageX-e(r).scrollLeft()<n.scrollSensitivity?a=e(r).scrollLeft(e(r).scrollLeft()-n.scrollSpeed):e(window).width()-(t.pageX-e(r).scrollLeft())<n.scrollSensitivity&&(a=e(r).scrollLeft(e(r).scrollLeft()+n.scrollSpeed)))),a!==!1&&e.ui.ddmanager&&!n.dropBehaviour&&e.ui.ddmanager.prepareOffsets(s,t)}}),e.ui.plugin.add("draggable","snap",{start:function(t,i,s){var n=s.options;s.snapElements=[],e(n.snap.constructor!==String?n.snap.items||":data(ui-draggable)":n.snap).each(function(){var t=e(this),i=t.offset();this!==s.element[0]&&s.snapElements.push({item:this,width:t.outerWidth(),height:t.outerHeight(),top:i.top,left:i.left})})},drag:function(t,i,s){var n,a,o,r,h,l,u,d,c,p,f=s.options,m=f.snapTolerance,g=i.offset.left,v=g+s.helperProportions.width,y=i.offset.top,b=y+s.helperProportions.height;for(c=s.snapElements.length-1;c>=0;c--)h=s.snapElements[c].left-s.margins.left,l=h+s.snapElements[c].width,u=s.snapElements[c].top-s.margins.top,d=u+s.snapElements[c].height,h-m>v||g>l+m||u-m>b||y>d+m||!e.contains(s.snapElements[c].item.ownerDocument,s.snapElements[c].item)?(s.snapElements[c].snapping&&s.options.snap.release&&s.options.snap.release.call(s.element,t,e.extend(s._uiHash(),{snapItem:s.snapElements[c].item})),s.snapElements[c].snapping=!1):("inner"!==f.snapMode&&(n=m>=Math.abs(u-b),a=m>=Math.abs(d-y),o=m>=Math.abs(h-v),r=m>=Math.abs(l-g),n&&(i.position.top=s._convertPositionTo("relative",{top:u-s.helperProportions.height,left:0}).top),a&&(i.position.top=s._convertPositionTo("relative",{top:d,left:0}).top),o&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h-s.helperProportions.width}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l}).left)),p=n||a||o||r,"outer"!==f.snapMode&&(n=m>=Math.abs(u-y),a=m>=Math.abs(d-b),o=m>=Math.abs(h-g),r=m>=Math.abs(l-v),n&&(i.position.top=s._convertPositionTo("relative",{top:u,left:0}).top),a&&(i.position.top=s._convertPositionTo("relative",{top:d-s.helperProportions.height,left:0}).top),o&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l-s.helperProportions.width}).left)),!s.snapElements[c].snapping&&(n||a||o||r||p)&&s.options.snap.snap&&s.options.snap.snap.call(s.element,t,e.extend(s._uiHash(),{snapItem:s.snapElements[c].item})),s.snapElements[c].snapping=n||a||o||r||p)}}),e.ui.plugin.add("draggable","stack",{start:function(t,i,s){var n,a=s.options,o=e.makeArray(e(a.stack)).sort(function(t,i){return(parseInt(e(t).css("zIndex"),10)||0)-(parseInt(e(i).css("zIndex"),10)||0)});o.length&&(n=parseInt(e(o[0]).css("zIndex"),10)||0,e(o).each(function(t){e(this).css("zIndex",n+t)}),this.css("zIndex",n+o.length))}}),e.ui.plugin.add("draggable","zIndex",{start:function(t,i,s){var n=e(i.helper),a=s.options;n.css("zIndex")&&(a._zIndex=n.css("zIndex")),n.css("zIndex",a.zIndex)},stop:function(t,i,s){var n=s.options;n._zIndex&&e(i.helper).css("zIndex",n._zIndex)}}),e.ui.draggable,e.widget("ui.resizable",e.ui.mouse,{version:"1.11.4",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(e){return parseInt(e,10)||0},_isNumber:function(e){return!isNaN(parseInt(e,10))},_hasScroll:function(t,i){if("hidden"===e(t).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return t[s]>0?!0:(t[s]=1,n=t[s]>0,t[s]=0,n)},_create:function(){var t,i,s,n,a,o=this,r=this.options;if(this.element.addClass("ui-resizable"),e.extend(this,{_aspectRatio:!!r.aspectRatio,aspectRatio:r.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:r.helper||r.ghost||r.animate?r.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(e("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize()),this.handles=r.handles||(e(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=e(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),t=this.handles.split(","),this.handles={},i=0;t.length>i;i++)s=e.trim(t[i]),a="ui-resizable-"+s,n=e("<div class='ui-resizable-handle "+a+"'></div>"),n.css({zIndex:r.zIndex}),"se"===s&&n.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[s]=".ui-resizable-"+s,this.element.append(n);this._renderAxis=function(t){var i,s,n,a;t=t||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=e(this.handles[i]),this._on(this.handles[i],{mousedown:o._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=e(this.handles[i],this.element),a=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),t.css(n,a),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.mouseover(function(){o.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),o.axis=n&&n[1]?n[1]:"se")}),r.autoHide&&(this._handles.hide(),e(this.element).addClass("ui-resizable-autohide").mouseenter(function(){r.disabled||(e(this).removeClass("ui-resizable-autohide"),o._handles.show())}).mouseleave(function(){r.disabled||o.resizing||(e(this).addClass("ui-resizable-autohide"),o._handles.hide())})),this._mouseInit()},_destroy:function(){this._mouseDestroy();var t,i=function(t){e(t).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").removeData("ui-resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),t=this.element,this.originalElement.css({position:t.css("position"),width:t.outerWidth(),height:t.outerHeight(),top:t.css("top"),left:t.css("left")}).insertAfter(t),t.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_mouseCapture:function(t){var i,s,n=!1;for(i in this.handles)s=e(this.handles[i])[0],(s===t.target||e.contains(s,t.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(t){var i,s,n,a=this.options,o=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),a.containment&&(i+=e(a.containment).scrollLeft()||0,s+=e(a.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:o.width(),height:o.height()},this.originalSize=this._helper?{width:o.outerWidth(),height:o.outerHeight()}:{width:o.width(),height:o.height()},this.sizeDiff={width:o.outerWidth()-o.width(),height:o.outerHeight()-o.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof a.aspectRatio?a.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=e(".ui-resizable-"+this.axis).css("cursor"),e("body").css("cursor","auto"===n?this.axis+"-resize":n),o.addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var i,s,n=this.originalMousePosition,a=this.axis,o=t.pageX-n.left||0,r=t.pageY-n.top||0,h=this._change[a];return this._updatePrevProperties(),h?(i=h.apply(this,[t,o,r]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(i=this._updateRatio(i,t)),i=this._respectSize(i,t),this._updateCache(i),this._propagate("resize",t),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),e.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(t){this.resizing=!1;var i,s,n,a,o,r,h,l=this.options,u=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:u.sizeDiff.height,a=s?0:u.sizeDiff.width,o={width:u.helper.width()-a,height:u.helper.height()-n},r=parseInt(u.element.css("left"),10)+(u.position.left-u.originalPosition.left)||null,h=parseInt(u.element.css("top"),10)+(u.position.top-u.originalPosition.top)||null,l.animate||this.element.css(e.extend(o,{top:h,left:r})),u.helper.height(u.size.height),u.helper.width(u.size.width),this._helper&&!l.animate&&this._proportionallyResize()),e("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var e={};return this.position.top!==this.prevPosition.top&&(e.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(e.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(e.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(e.height=this.size.height+"px"),this.helper.css(e),e},_updateVirtualBoundaries:function(e){var t,i,s,n,a,o=this.options;a={minWidth:this._isNumber(o.minWidth)?o.minWidth:0,maxWidth:this._isNumber(o.maxWidth)?o.maxWidth:1/0,minHeight:this._isNumber(o.minHeight)?o.minHeight:0,maxHeight:this._isNumber(o.maxHeight)?o.maxHeight:1/0},(this._aspectRatio||e)&&(t=a.minHeight*this.aspectRatio,s=a.minWidth/this.aspectRatio,i=a.maxHeight*this.aspectRatio,n=a.maxWidth/this.aspectRatio,t>a.minWidth&&(a.minWidth=t),s>a.minHeight&&(a.minHeight=s),a.maxWidth>i&&(a.maxWidth=i),a.maxHeight>n&&(a.maxHeight=n)),this._vBoundaries=a},_updateCache:function(e){this.offset=this.helper.offset(),this._isNumber(e.left)&&(this.position.left=e.left),this._isNumber(e.top)&&(this.position.top=e.top),this._isNumber(e.height)&&(this.size.height=e.height),this._isNumber(e.width)&&(this.size.width=e.width)},_updateRatio:function(e){var t=this.position,i=this.size,s=this.axis;return this._isNumber(e.height)?e.width=e.height*this.aspectRatio:this._isNumber(e.width)&&(e.height=e.width/this.aspectRatio),"sw"===s&&(e.left=t.left+(i.width-e.width),e.top=null),"nw"===s&&(e.top=t.top+(i.height-e.height),e.left=t.left+(i.width-e.width)),e},_respectSize:function(e){var t=this._vBoundaries,i=this.axis,s=this._isNumber(e.width)&&t.maxWidth&&t.maxWidth<e.width,n=this._isNumber(e.height)&&t.maxHeight&&t.maxHeight<e.height,a=this._isNumber(e.width)&&t.minWidth&&t.minWidth>e.width,o=this._isNumber(e.height)&&t.minHeight&&t.minHeight>e.height,r=this.originalPosition.left+this.originalSize.width,h=this.position.top+this.size.height,l=/sw|nw|w/.test(i),u=/nw|ne|n/.test(i);return a&&(e.width=t.minWidth),o&&(e.height=t.minHeight),s&&(e.width=t.maxWidth),n&&(e.height=t.maxHeight),a&&l&&(e.left=r-t.minWidth),s&&l&&(e.left=r-t.maxWidth),o&&u&&(e.top=h-t.minHeight),n&&u&&(e.top=h-t.maxHeight),e.width||e.height||e.left||!e.top?e.width||e.height||e.top||!e.left||(e.left=null):e.top=null,e},_getPaddingPlusBorderDimensions:function(e){for(var t=0,i=[],s=[e.css("borderTopWidth"),e.css("borderRightWidth"),e.css("borderBottomWidth"),e.css("borderLeftWidth")],n=[e.css("paddingTop"),e.css("paddingRight"),e.css("paddingBottom"),e.css("paddingLeft")];4>t;t++)i[t]=parseInt(s[t],10)||0,i[t]+=parseInt(n[t],10)||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var e,t=0,i=this.helper||this.element;this._proportionallyResizeElements.length>t;t++)e=this._proportionallyResizeElements[t],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(e)),e.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var t=this.element,i=this.options;this.elementOffset=t.offset(),this._helper?(this.helper=this.helper||e("<div style='overflow:hidden;'></div>"),this.helper.addClass(this._helper).css({width:this.element.outerWidth()-1,height:this.element.outerHeight()-1,position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(e,t){return{width:this.originalSize.width+t}},w:function(e,t){var i=this.originalSize,s=this.originalPosition;return{left:s.left+t,width:i.width-t}},n:function(e,t,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(e,t,i){return{height:this.originalSize.height+i}},se:function(t,i,s){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,i,s]))},sw:function(t,i,s){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,i,s]))},ne:function(t,i,s){return e.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,i,s]))},nw:function(t,i,s){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,i,s]))}},_propagate:function(t,i){e.ui.plugin.call(this,t,[i,this.ui()]),"resize"!==t&&this._trigger(t,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),e.ui.plugin.add("resizable","animate",{stop:function(t){var i=e(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,a=n.length&&/textarea/i.test(n[0].nodeName),o=a&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=a?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-o},l=parseInt(i.element.css("left"),10)+(i.position.left-i.originalPosition.left)||null,u=parseInt(i.element.css("top"),10)+(i.position.top-i.originalPosition.top)||null;i.element.animate(e.extend(h,u&&l?{top:u,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseInt(i.element.css("width"),10),height:parseInt(i.element.css("height"),10),top:parseInt(i.element.css("top"),10),left:parseInt(i.element.css("left"),10)};n&&n.length&&e(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",t)}})}}),e.ui.plugin.add("resizable","containment",{start:function(){var t,i,s,n,a,o,r,h=e(this).resizable("instance"),l=h.options,u=h.element,d=l.containment,c=d instanceof e?d.get(0):/parent/.test(d)?u.parent().get(0):d;c&&(h.containerElement=e(c),/document/.test(d)||d===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight}):(t=e(c),i=[],e(["Top","Right","Left","Bottom"]).each(function(e,s){i[e]=h._num(t.css("padding"+s))}),h.containerOffset=t.offset(),h.containerPosition=t.position(),h.containerSize={height:t.innerHeight()-i[3],width:t.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,a=h.containerSize.width,o=h._hasScroll(c,"left")?c.scrollWidth:a,r=h._hasScroll(c)?c.scrollHeight:n,h.parentData={element:c,left:s.left,top:s.top,width:o,height:r}))},resize:function(t){var i,s,n,a,o=e(this).resizable("instance"),r=o.options,h=o.containerOffset,l=o.position,u=o._aspectRatio||t.shiftKey,d={top:0,left:0},c=o.containerElement,p=!0;c[0]!==document&&/static/.test(c.css("position"))&&(d=h),l.left<(o._helper?h.left:0)&&(o.size.width=o.size.width+(o._helper?o.position.left-h.left:o.position.left-d.left),u&&(o.size.height=o.size.width/o.aspectRatio,p=!1),o.position.left=r.helper?h.left:0),l.top<(o._helper?h.top:0)&&(o.size.height=o.size.height+(o._helper?o.position.top-h.top:o.position.top),u&&(o.size.width=o.size.height*o.aspectRatio,p=!1),o.position.top=o._helper?h.top:0),n=o.containerElement.get(0)===o.element.parent().get(0),a=/relative|absolute/.test(o.containerElement.css("position")),n&&a?(o.offset.left=o.parentData.left+o.position.left,o.offset.top=o.parentData.top+o.position.top):(o.offset.left=o.element.offset().left,o.offset.top=o.element.offset().top),i=Math.abs(o.sizeDiff.width+(o._helper?o.offset.left-d.left:o.offset.left-h.left)),s=Math.abs(o.sizeDiff.height+(o._helper?o.offset.top-d.top:o.offset.top-h.top)),i+o.size.width>=o.parentData.width&&(o.size.width=o.parentData.width-i,u&&(o.size.height=o.size.width/o.aspectRatio,p=!1)),s+o.size.height>=o.parentData.height&&(o.size.height=o.parentData.height-s,u&&(o.size.width=o.size.height*o.aspectRatio,p=!1)),p||(o.position.left=o.prevPosition.left,o.position.top=o.prevPosition.top,o.size.width=o.prevSize.width,o.size.height=o.prevSize.height)},stop:function(){var t=e(this).resizable("instance"),i=t.options,s=t.containerOffset,n=t.containerPosition,a=t.containerElement,o=e(t.helper),r=o.offset(),h=o.outerWidth()-t.sizeDiff.width,l=o.outerHeight()-t.sizeDiff.height;t._helper&&!i.animate&&/relative/.test(a.css("position"))&&e(this).css({left:r.left-n.left-s.left,width:h,height:l}),t._helper&&!i.animate&&/static/.test(a.css("position"))&&e(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),e.ui.plugin.add("resizable","alsoResize",{start:function(){var t=e(this).resizable("instance"),i=t.options;e(i.alsoResize).each(function(){var t=e(this);t.data("ui-resizable-alsoresize",{width:parseInt(t.width(),10),height:parseInt(t.height(),10),left:parseInt(t.css("left"),10),top:parseInt(t.css("top"),10)})})},resize:function(t,i){var s=e(this).resizable("instance"),n=s.options,a=s.originalSize,o=s.originalPosition,r={height:s.size.height-a.height||0,width:s.size.width-a.width||0,top:s.position.top-o.top||0,left:s.position.left-o.left||0};e(n.alsoResize).each(function(){var t=e(this),s=e(this).data("ui-resizable-alsoresize"),n={},a=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(a,function(e,t){var i=(s[t]||0)+(r[t]||0);i&&i>=0&&(n[t]=i||null)}),t.css(n)})},stop:function(){e(this).removeData("resizable-alsoresize")}}),e.ui.plugin.add("resizable","ghost",{start:function(){var t=e(this).resizable("instance"),i=t.options,s=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:s.height,width:s.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass("string"==typeof i.ghost?i.ghost:""),t.ghost.appendTo(t.helper)},resize:function(){var t=e(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=e(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),e.ui.plugin.add("resizable","grid",{resize:function(){var t,i=e(this).resizable("instance"),s=i.options,n=i.size,a=i.originalSize,o=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,u=h[1]||1,d=Math.round((n.width-a.width)/l)*l,c=Math.round((n.height-a.height)/u)*u,p=a.width+d,f=a.height+c,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,v=s.minWidth&&s.minWidth>p,y=s.minHeight&&s.minHeight>f;s.grid=h,v&&(p+=l),y&&(f+=u),m&&(p-=l),g&&(f-=u),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=o.top-c):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=o.left-d):((0>=f-u||0>=p-l)&&(t=i._getPaddingPlusBorderDimensions(this)),f-u>0?(i.size.height=f,i.position.top=o.top-c):(f=u-t.height,i.size.height=f,i.position.top=o.top+a.height-f),p-l>0?(i.size.width=p,i.position.left=o.left-d):(p=l-t.width,i.size.width=p,i.position.left=o.left+a.width-p))}}),e.ui.resizable,e.widget("ui.dialog",{version:"1.11.4",options:{appendTo:"body",autoOpen:!0,buttons:[],closeOnEscape:!0,closeText:"Close",dialogClass:"",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(t){var i=e(this).css(t).offset().top;0>i&&e(this).css("top",t.top-i)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},sizeRelatedOptions:{buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},resizableRelatedOptions:{maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),this.options.title=this.options.title||this.originalTitle,this._createWrapper(),this.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(this.uiDialog),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&e.fn.draggable&&this._makeDraggable(),this.options.resizable&&e.fn.resizable&&this._makeResizable(),this._isOpen=!1,this._trackFocus()},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var t=this.options.appendTo;return t&&(t.jquery||t.nodeType)?e(t):this.document.find(t||"body").eq(0)},_destroy:function(){var e,t=this.originalPosition;this._untrackInstance(),this._destroyOverlay(),this.element.removeUniqueId().removeClass("ui-dialog-content ui-widget-content").css(this.originalCss).detach(),this.uiDialog.stop(!0,!0).remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),e=t.parent.children().eq(t.index),e.length&&e[0]!==this.element[0]?e.before(this.element):t.parent.append(this.element)},widget:function(){return this.uiDialog},disable:e.noop,enable:e.noop,close:function(t){var i,s=this;if(this._isOpen&&this._trigger("beforeClose",t)!==!1){if(this._isOpen=!1,this._focusedElement=null,this._destroyOverlay(),this._untrackInstance(),!this.opener.filter(":focusable").focus().length)try{i=this.document[0].activeElement,i&&"body"!==i.nodeName.toLowerCase()&&e(i).blur()}catch(n){}this._hide(this.uiDialog,this.options.hide,function(){s._trigger("close",t)})}},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(t,i){var s=!1,n=this.uiDialog.siblings(".ui-front:visible").map(function(){return+e(this).css("z-index")}).get(),a=Math.max.apply(null,n);return a>=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",a+1),s=!0),s&&!i&&this._trigger("focus",t),s},open:function(){var t=this;return this._isOpen?(this._moveToTop()&&this._focusTabbable(),void 0):(this._isOpen=!0,this.opener=e(this.document[0].activeElement),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-1),this._show(this.uiDialog,this.options.show,function(){t._focusTabbable(),t._trigger("focus")}),this._makeFocusTarget(),this._trigger("open"),void 0)},_focusTabbable:function(){var e=this._focusedElement;e||(e=this.element.find("[autofocus]")),e.length||(e=this.element.find(":tabbable")),e.length||(e=this.uiDialogButtonPane.find(":tabbable")),e.length||(e=this.uiDialogTitlebarClose.filter(":tabbable")),e.length||(e=this.uiDialog),e.eq(0).focus()},_keepFocus:function(t){function i(){var t=this.document[0].activeElement,i=this.uiDialog[0]===t||e.contains(this.uiDialog[0],t);i||this._focusTabbable()}t.preventDefault(),i.call(this),this._delay(i)},_createWrapper:function(){this.uiDialog=e("<div>").addClass("ui-dialog ui-widget ui-widget-content ui-corner-all ui-front "+this.options.dialogClass).hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._on(this.uiDialog,{keydown:function(t){if(this.options.closeOnEscape&&!t.isDefaultPrevented()&&t.keyCode&&t.keyCode===e.ui.keyCode.ESCAPE)return t.preventDefault(),this.close(t),void 0; -if(t.keyCode===e.ui.keyCode.TAB&&!t.isDefaultPrevented()){var i=this.uiDialog.find(":tabbable"),s=i.filter(":first"),n=i.filter(":last");t.target!==n[0]&&t.target!==this.uiDialog[0]||t.shiftKey?t.target!==s[0]&&t.target!==this.uiDialog[0]||!t.shiftKey||(this._delay(function(){n.focus()}),t.preventDefault()):(this._delay(function(){s.focus()}),t.preventDefault())}},mousedown:function(e){this._moveToTop(e)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var t;this.uiDialogTitlebar=e("<div>").addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(this.uiDialog),this._on(this.uiDialogTitlebar,{mousedown:function(t){e(t.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.focus()}}),this.uiDialogTitlebarClose=e("<button type='button'></button>").button({label:this.options.closeText,icons:{primary:"ui-icon-closethick"},text:!1}).addClass("ui-dialog-titlebar-close").appendTo(this.uiDialogTitlebar),this._on(this.uiDialogTitlebarClose,{click:function(e){e.preventDefault(),this.close(e)}}),t=e("<span>").uniqueId().addClass("ui-dialog-title").prependTo(this.uiDialogTitlebar),this._title(t),this.uiDialog.attr({"aria-labelledby":t.attr("id")})},_title:function(e){this.options.title||e.html(" "),e.text(this.options.title)},_createButtonPane:function(){this.uiDialogButtonPane=e("<div>").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),this.uiButtonSet=e("<div>").addClass("ui-dialog-buttonset").appendTo(this.uiDialogButtonPane),this._createButtons()},_createButtons:function(){var t=this,i=this.options.buttons;return this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),e.isEmptyObject(i)||e.isArray(i)&&!i.length?(this.uiDialog.removeClass("ui-dialog-buttons"),void 0):(e.each(i,function(i,s){var n,a;s=e.isFunction(s)?{click:s,text:i}:s,s=e.extend({type:"button"},s),n=s.click,s.click=function(){n.apply(t.element[0],arguments)},a={icons:s.icons,text:s.showText},delete s.icons,delete s.showText,e("<button></button>",s).button(a).appendTo(t.uiButtonSet)}),this.uiDialog.addClass("ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog),void 0)},_makeDraggable:function(){function t(e){return{position:e.position,offset:e.offset}}var i=this,s=this.options;this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(s,n){e(this).addClass("ui-dialog-dragging"),i._blockFrames(),i._trigger("dragStart",s,t(n))},drag:function(e,s){i._trigger("drag",e,t(s))},stop:function(n,a){var o=a.offset.left-i.document.scrollLeft(),r=a.offset.top-i.document.scrollTop();s.position={my:"left top",at:"left"+(o>=0?"+":"")+o+" "+"top"+(r>=0?"+":"")+r,of:i.window},e(this).removeClass("ui-dialog-dragging"),i._unblockFrames(),i._trigger("dragStop",n,t(a))}})},_makeResizable:function(){function t(e){return{originalPosition:e.originalPosition,originalSize:e.originalSize,position:e.position,size:e.size}}var i=this,s=this.options,n=s.resizable,a=this.uiDialog.css("position"),o="string"==typeof n?n:"n,e,s,w,se,sw,ne,nw";this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:s.maxWidth,maxHeight:s.maxHeight,minWidth:s.minWidth,minHeight:this._minHeight(),handles:o,start:function(s,n){e(this).addClass("ui-dialog-resizing"),i._blockFrames(),i._trigger("resizeStart",s,t(n))},resize:function(e,s){i._trigger("resize",e,t(s))},stop:function(n,a){var o=i.uiDialog.offset(),r=o.left-i.document.scrollLeft(),h=o.top-i.document.scrollTop();s.height=i.uiDialog.height(),s.width=i.uiDialog.width(),s.position={my:"left top",at:"left"+(r>=0?"+":"")+r+" "+"top"+(h>=0?"+":"")+h,of:i.window},e(this).removeClass("ui-dialog-resizing"),i._unblockFrames(),i._trigger("resizeStop",n,t(a))}}).css("position",a)},_trackFocus:function(){this._on(this.widget(),{focusin:function(t){this._makeFocusTarget(),this._focusedElement=e(t.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var t=this._trackingInstances(),i=e.inArray(this,t);-1!==i&&t.splice(i,1)},_trackingInstances:function(){var e=this.document.data("ui-dialog-instances");return e||(e=[],this.document.data("ui-dialog-instances",e)),e},_minHeight:function(){var e=this.options;return"auto"===e.height?e.minHeight:Math.min(e.minHeight,e.height)},_position:function(){var e=this.uiDialog.is(":visible");e||this.uiDialog.show(),this.uiDialog.position(this.options.position),e||this.uiDialog.hide()},_setOptions:function(t){var i=this,s=!1,n={};e.each(t,function(e,t){i._setOption(e,t),e in i.sizeRelatedOptions&&(s=!0),e in i.resizableRelatedOptions&&(n[e]=t)}),s&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",n)},_setOption:function(e,t){var i,s,n=this.uiDialog;"dialogClass"===e&&n.removeClass(this.options.dialogClass).addClass(t),"disabled"!==e&&(this._super(e,t),"appendTo"===e&&this.uiDialog.appendTo(this._appendTo()),"buttons"===e&&this._createButtons(),"closeText"===e&&this.uiDialogTitlebarClose.button({label:""+t}),"draggable"===e&&(i=n.is(":data(ui-draggable)"),i&&!t&&n.draggable("destroy"),!i&&t&&this._makeDraggable()),"position"===e&&this._position(),"resizable"===e&&(s=n.is(":data(ui-resizable)"),s&&!t&&n.resizable("destroy"),s&&"string"==typeof t&&n.resizable("option","handles",t),s||t===!1||this._makeResizable()),"title"===e&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var e,t,i,s=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),e=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),t=Math.max(0,s.minHeight-e),i="number"==typeof s.maxHeight?Math.max(0,s.maxHeight-e):"none","auto"===s.height?this.element.css({minHeight:t,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,s.height-e)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var t=e(this);return e("<div>").css({position:"absolute",width:t.outerWidth(),height:t.outerHeight()}).appendTo(t.parent()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(t){return e(t.target).closest(".ui-dialog").length?!0:!!e(t.target).closest(".ui-datepicker").length},_createOverlay:function(){if(this.options.modal){var t=!0;this._delay(function(){t=!1}),this.document.data("ui-dialog-overlays")||this._on(this.document,{focusin:function(e){t||this._allowInteraction(e)||(e.preventDefault(),this._trackingInstances()[0]._focusTabbable())}}),this.overlay=e("<div>").addClass("ui-widget-overlay ui-front").appendTo(this._appendTo()),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1)}},_destroyOverlay:function(){if(this.options.modal&&this.overlay){var e=this.document.data("ui-dialog-overlays")-1;e?this.document.data("ui-dialog-overlays",e):this.document.unbind("focusin").removeData("ui-dialog-overlays"),this.overlay.remove(),this.overlay=null}}}),e.widget("ui.droppable",{version:"1.11.4",widgetEventPrefix:"drop",options:{accept:"*",activeClass:!1,addClasses:!0,greedy:!1,hoverClass:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var t,i=this.options,s=i.accept;this.isover=!1,this.isout=!0,this.accept=e.isFunction(s)?s:function(e){return e.is(s)},this.proportions=function(){return arguments.length?(t=arguments[0],void 0):t?t:t={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight}},this._addToManager(i.scope),i.addClasses&&this.element.addClass("ui-droppable")},_addToManager:function(t){e.ui.ddmanager.droppables[t]=e.ui.ddmanager.droppables[t]||[],e.ui.ddmanager.droppables[t].push(this)},_splice:function(e){for(var t=0;e.length>t;t++)e[t]===this&&e.splice(t,1)},_destroy:function(){var t=e.ui.ddmanager.droppables[this.options.scope];this._splice(t),this.element.removeClass("ui-droppable ui-droppable-disabled")},_setOption:function(t,i){if("accept"===t)this.accept=e.isFunction(i)?i:function(e){return e.is(i)};else if("scope"===t){var s=e.ui.ddmanager.droppables[this.options.scope];this._splice(s),this._addToManager(i)}this._super(t,i)},_activate:function(t){var i=e.ui.ddmanager.current;this.options.activeClass&&this.element.addClass(this.options.activeClass),i&&this._trigger("activate",t,this.ui(i))},_deactivate:function(t){var i=e.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass),i&&this._trigger("deactivate",t,this.ui(i))},_over:function(t){var i=e.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.addClass(this.options.hoverClass),this._trigger("over",t,this.ui(i)))},_out:function(t){var i=e.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("out",t,this.ui(i)))},_drop:function(t,i){var s=i||e.ui.ddmanager.current,n=!1;return s&&(s.currentItem||s.element)[0]!==this.element[0]?(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var i=e(this).droppable("instance");return i.options.greedy&&!i.options.disabled&&i.options.scope===s.options.scope&&i.accept.call(i.element[0],s.currentItem||s.element)&&e.ui.intersect(s,e.extend(i,{offset:i.element.offset()}),i.options.tolerance,t)?(n=!0,!1):void 0}),n?!1:this.accept.call(this.element[0],s.currentItem||s.element)?(this.options.activeClass&&this.element.removeClass(this.options.activeClass),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("drop",t,this.ui(s)),this.element):!1):!1},ui:function(e){return{draggable:e.currentItem||e.element,helper:e.helper,position:e.position,offset:e.positionAbs}}}),e.ui.intersect=function(){function e(e,t,i){return e>=t&&t+i>e}return function(t,i,s,n){if(!i.offset)return!1;var a=(t.positionAbs||t.position.absolute).left+t.margins.left,o=(t.positionAbs||t.position.absolute).top+t.margins.top,r=a+t.helperProportions.width,h=o+t.helperProportions.height,l=i.offset.left,u=i.offset.top,d=l+i.proportions().width,c=u+i.proportions().height;switch(s){case"fit":return a>=l&&d>=r&&o>=u&&c>=h;case"intersect":return a+t.helperProportions.width/2>l&&d>r-t.helperProportions.width/2&&o+t.helperProportions.height/2>u&&c>h-t.helperProportions.height/2;case"pointer":return e(n.pageY,u,i.proportions().height)&&e(n.pageX,l,i.proportions().width);case"touch":return(o>=u&&c>=o||h>=u&&c>=h||u>o&&h>c)&&(a>=l&&d>=a||r>=l&&d>=r||l>a&&r>d);default:return!1}}}(),e.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(t,i){var s,n,a=e.ui.ddmanager.droppables[t.options.scope]||[],o=i?i.type:null,r=(t.currentItem||t.element).find(":data(ui-droppable)").addBack();e:for(s=0;a.length>s;s++)if(!(a[s].options.disabled||t&&!a[s].accept.call(a[s].element[0],t.currentItem||t.element))){for(n=0;r.length>n;n++)if(r[n]===a[s].element[0]){a[s].proportions().height=0;continue e}a[s].visible="none"!==a[s].element.css("display"),a[s].visible&&("mousedown"===o&&a[s]._activate.call(a[s],i),a[s].offset=a[s].element.offset(),a[s].proportions({width:a[s].element[0].offsetWidth,height:a[s].element[0].offsetHeight}))}},drop:function(t,i){var s=!1;return e.each((e.ui.ddmanager.droppables[t.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&e.ui.intersect(t,this,this.options.tolerance,i)&&(s=this._drop.call(this,i)||s),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],t.currentItem||t.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,i)))}),s},dragStart:function(t,i){t.element.parentsUntil("body").bind("scroll.droppable",function(){t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,i)})},drag:function(t,i){t.options.refreshPositions&&e.ui.ddmanager.prepareOffsets(t,i),e.each(e.ui.ddmanager.droppables[t.options.scope]||[],function(){if(!this.options.disabled&&!this.greedyChild&&this.visible){var s,n,a,o=e.ui.intersect(t,this,this.options.tolerance,i),r=!o&&this.isover?"isout":o&&!this.isover?"isover":null;r&&(this.options.greedy&&(n=this.options.scope,a=this.element.parents(":data(ui-droppable)").filter(function(){return e(this).droppable("instance").options.scope===n}),a.length&&(s=e(a[0]).droppable("instance"),s.greedyChild="isover"===r)),s&&"isover"===r&&(s.isover=!1,s.isout=!0,s._out.call(s,i)),this[r]=!0,this["isout"===r?"isover":"isout"]=!1,this["isover"===r?"_over":"_out"].call(this,i),s&&"isout"===r&&(s.isout=!1,s.isover=!0,s._over.call(s,i)))}})},dragStop:function(t,i){t.element.parentsUntil("body").unbind("scroll.droppable"),t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,i)}},e.ui.droppable;var y="ui-effects-",b=e;e.effects={effect:{}},function(e,t){function i(e,t,i){var s=d[t.type]||{};return null==e?i||!t.def?null:t.def:(e=s.floor?~~e:parseFloat(e),isNaN(e)?t.def:s.mod?(e+s.mod)%s.mod:0>e?0:e>s.max?s.max:e)}function s(i){var s=l(),n=s._rgba=[];return i=i.toLowerCase(),f(h,function(e,a){var o,r=a.re.exec(i),h=r&&a.parse(r),l=a.space||"rgba";return h?(o=s[l](h),s[u[l].cache]=o[u[l].cache],n=s._rgba=o._rgba,!1):t}),n.length?("0,0,0,0"===n.join()&&e.extend(n,a.transparent),s):a[i]}function n(e,t,i){return i=(i+1)%1,1>6*i?e+6*(t-e)*i:1>2*i?t:2>3*i?e+6*(t-e)*(2/3-i):e}var a,o="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",r=/^([\-+])=\s*(\d+\.?\d*)/,h=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(e){return[e[1],e[2],e[3],e[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(e){return[2.55*e[1],2.55*e[2],2.55*e[3],e[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(e){return[parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(e){return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(e){return[e[1],e[2]/100,e[3]/100,e[4]]}}],l=e.Color=function(t,i,s,n){return new e.Color.fn.parse(t,i,s,n)},u={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},d={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},c=l.support={},p=e("<p>")[0],f=e.each;p.style.cssText="background-color:rgba(1,1,1,.5)",c.rgba=p.style.backgroundColor.indexOf("rgba")>-1,f(u,function(e,t){t.cache="_"+e,t.props.alpha={idx:3,type:"percent",def:1}}),l.fn=e.extend(l.prototype,{parse:function(n,o,r,h){if(n===t)return this._rgba=[null,null,null,null],this;(n.jquery||n.nodeType)&&(n=e(n).css(o),o=t);var d=this,c=e.type(n),p=this._rgba=[];return o!==t&&(n=[n,o,r,h],c="array"),"string"===c?this.parse(s(n)||a._default):"array"===c?(f(u.rgba.props,function(e,t){p[t.idx]=i(n[t.idx],t)}),this):"object"===c?(n instanceof l?f(u,function(e,t){n[t.cache]&&(d[t.cache]=n[t.cache].slice())}):f(u,function(t,s){var a=s.cache;f(s.props,function(e,t){if(!d[a]&&s.to){if("alpha"===e||null==n[e])return;d[a]=s.to(d._rgba)}d[a][t.idx]=i(n[e],t,!0)}),d[a]&&0>e.inArray(null,d[a].slice(0,3))&&(d[a][3]=1,s.from&&(d._rgba=s.from(d[a])))}),this):t},is:function(e){var i=l(e),s=!0,n=this;return f(u,function(e,a){var o,r=i[a.cache];return r&&(o=n[a.cache]||a.to&&a.to(n._rgba)||[],f(a.props,function(e,i){return null!=r[i.idx]?s=r[i.idx]===o[i.idx]:t})),s}),s},_space:function(){var e=[],t=this;return f(u,function(i,s){t[s.cache]&&e.push(i)}),e.pop()},transition:function(e,t){var s=l(e),n=s._space(),a=u[n],o=0===this.alpha()?l("transparent"):this,r=o[a.cache]||a.to(o._rgba),h=r.slice();return s=s[a.cache],f(a.props,function(e,n){var a=n.idx,o=r[a],l=s[a],u=d[n.type]||{};null!==l&&(null===o?h[a]=l:(u.mod&&(l-o>u.mod/2?o+=u.mod:o-l>u.mod/2&&(o-=u.mod)),h[a]=i((l-o)*t+o,n)))}),this[n](h)},blend:function(t){if(1===this._rgba[3])return this;var i=this._rgba.slice(),s=i.pop(),n=l(t)._rgba;return l(e.map(i,function(e,t){return(1-s)*n[t]+s*e}))},toRgbaString:function(){var t="rgba(",i=e.map(this._rgba,function(e,t){return null==e?t>2?1:0:e});return 1===i[3]&&(i.pop(),t="rgb("),t+i.join()+")"},toHslaString:function(){var t="hsla(",i=e.map(this.hsla(),function(e,t){return null==e&&(e=t>2?1:0),t&&3>t&&(e=Math.round(100*e)+"%"),e});return 1===i[3]&&(i.pop(),t="hsl("),t+i.join()+")"},toHexString:function(t){var i=this._rgba.slice(),s=i.pop();return t&&i.push(~~(255*s)),"#"+e.map(i,function(e){return e=(e||0).toString(16),1===e.length?"0"+e:e}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),l.fn.parse.prototype=l.fn,u.hsla.to=function(e){if(null==e[0]||null==e[1]||null==e[2])return[null,null,null,e[3]];var t,i,s=e[0]/255,n=e[1]/255,a=e[2]/255,o=e[3],r=Math.max(s,n,a),h=Math.min(s,n,a),l=r-h,u=r+h,d=.5*u;return t=h===r?0:s===r?60*(n-a)/l+360:n===r?60*(a-s)/l+120:60*(s-n)/l+240,i=0===l?0:.5>=d?l/u:l/(2-u),[Math.round(t)%360,i,d,null==o?1:o]},u.hsla.from=function(e){if(null==e[0]||null==e[1]||null==e[2])return[null,null,null,e[3]];var t=e[0]/360,i=e[1],s=e[2],a=e[3],o=.5>=s?s*(1+i):s+i-s*i,r=2*s-o;return[Math.round(255*n(r,o,t+1/3)),Math.round(255*n(r,o,t)),Math.round(255*n(r,o,t-1/3)),a]},f(u,function(s,n){var a=n.props,o=n.cache,h=n.to,u=n.from;l.fn[s]=function(s){if(h&&!this[o]&&(this[o]=h(this._rgba)),s===t)return this[o].slice();var n,r=e.type(s),d="array"===r||"object"===r?s:arguments,c=this[o].slice();return f(a,function(e,t){var s=d["object"===r?e:t.idx];null==s&&(s=c[t.idx]),c[t.idx]=i(s,t)}),u?(n=l(u(c)),n[o]=c,n):l(c)},f(a,function(t,i){l.fn[t]||(l.fn[t]=function(n){var a,o=e.type(n),h="alpha"===t?this._hsla?"hsla":"rgba":s,l=this[h](),u=l[i.idx];return"undefined"===o?u:("function"===o&&(n=n.call(this,u),o=e.type(n)),null==n&&i.empty?this:("string"===o&&(a=r.exec(n),a&&(n=u+parseFloat(a[2])*("+"===a[1]?1:-1))),l[i.idx]=n,this[h](l)))})})}),l.hook=function(t){var i=t.split(" ");f(i,function(t,i){e.cssHooks[i]={set:function(t,n){var a,o,r="";if("transparent"!==n&&("string"!==e.type(n)||(a=s(n)))){if(n=l(a||n),!c.rgba&&1!==n._rgba[3]){for(o="backgroundColor"===i?t.parentNode:t;(""===r||"transparent"===r)&&o&&o.style;)try{r=e.css(o,"backgroundColor"),o=o.parentNode}catch(h){}n=n.blend(r&&"transparent"!==r?r:"_default")}n=n.toRgbaString()}try{t.style[i]=n}catch(h){}}},e.fx.step[i]=function(t){t.colorInit||(t.start=l(t.elem,i),t.end=l(t.end),t.colorInit=!0),e.cssHooks[i].set(t.elem,t.start.transition(t.end,t.pos))}})},l.hook(o),e.cssHooks.borderColor={expand:function(e){var t={};return f(["Top","Right","Bottom","Left"],function(i,s){t["border"+s+"Color"]=e}),t}},a=e.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(b),function(){function t(t){var i,s,n=t.ownerDocument.defaultView?t.ownerDocument.defaultView.getComputedStyle(t,null):t.currentStyle,a={};if(n&&n.length&&n[0]&&n[n[0]])for(s=n.length;s--;)i=n[s],"string"==typeof n[i]&&(a[e.camelCase(i)]=n[i]);else for(i in n)"string"==typeof n[i]&&(a[i]=n[i]);return a}function i(t,i){var s,a,o={};for(s in i)a=i[s],t[s]!==a&&(n[s]||(e.fx.step[s]||!isNaN(parseFloat(a)))&&(o[s]=a));return o}var s=["add","remove","toggle"],n={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};e.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(t,i){e.fx.step[i]=function(e){("none"!==e.end&&!e.setAttr||1===e.pos&&!e.setAttr)&&(b.style(e.elem,i,e.end),e.setAttr=!0)}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e.effects.animateClass=function(n,a,o,r){var h=e.speed(a,o,r);return this.queue(function(){var a,o=e(this),r=o.attr("class")||"",l=h.children?o.find("*").addBack():o;l=l.map(function(){var i=e(this);return{el:i,start:t(this)}}),a=function(){e.each(s,function(e,t){n[t]&&o[t+"Class"](n[t])})},a(),l=l.map(function(){return this.end=t(this.el[0]),this.diff=i(this.start,this.end),this}),o.attr("class",r),l=l.map(function(){var t=this,i=e.Deferred(),s=e.extend({},h,{queue:!1,complete:function(){i.resolve(t)}});return this.el.animate(this.diff,s),i.promise()}),e.when.apply(e,l.get()).done(function(){a(),e.each(arguments,function(){var t=this.el;e.each(this.diff,function(e){t.css(e,"")})}),h.complete.call(o[0])})})},e.fn.extend({addClass:function(t){return function(i,s,n,a){return s?e.effects.animateClass.call(this,{add:i},s,n,a):t.apply(this,arguments)}}(e.fn.addClass),removeClass:function(t){return function(i,s,n,a){return arguments.length>1?e.effects.animateClass.call(this,{remove:i},s,n,a):t.apply(this,arguments)}}(e.fn.removeClass),toggleClass:function(t){return function(i,s,n,a,o){return"boolean"==typeof s||void 0===s?n?e.effects.animateClass.call(this,s?{add:i}:{remove:i},n,a,o):t.apply(this,arguments):e.effects.animateClass.call(this,{toggle:i},s,n,a)}}(e.fn.toggleClass),switchClass:function(t,i,s,n,a){return e.effects.animateClass.call(this,{add:i,remove:t},s,n,a)}})}(),function(){function t(t,i,s,n){return e.isPlainObject(t)&&(i=t,t=t.effect),t={effect:t},null==i&&(i={}),e.isFunction(i)&&(n=i,s=null,i={}),("number"==typeof i||e.fx.speeds[i])&&(n=s,s=i,i={}),e.isFunction(s)&&(n=s,s=null),i&&e.extend(t,i),s=s||i.duration,t.duration=e.fx.off?0:"number"==typeof s?s:s in e.fx.speeds?e.fx.speeds[s]:e.fx.speeds._default,t.complete=n||i.complete,t}function i(t){return!t||"number"==typeof t||e.fx.speeds[t]?!0:"string"!=typeof t||e.effects.effect[t]?e.isFunction(t)?!0:"object"!=typeof t||t.effect?!1:!0:!0}e.extend(e.effects,{version:"1.11.4",save:function(e,t){for(var i=0;t.length>i;i++)null!==t[i]&&e.data(y+t[i],e[0].style[t[i]])},restore:function(e,t){var i,s;for(s=0;t.length>s;s++)null!==t[s]&&(i=e.data(y+t[s]),void 0===i&&(i=""),e.css(t[s],i))},setMode:function(e,t){return"toggle"===t&&(t=e.is(":hidden")?"show":"hide"),t},getBaseline:function(e,t){var i,s;switch(e[0]){case"top":i=0;break;case"middle":i=.5;break;case"bottom":i=1;break;default:i=e[0]/t.height}switch(e[1]){case"left":s=0;break;case"center":s=.5;break;case"right":s=1;break;default:s=e[1]/t.width}return{x:s,y:i}},createWrapper:function(t){if(t.parent().is(".ui-effects-wrapper"))return t.parent();var i={width:t.outerWidth(!0),height:t.outerHeight(!0),"float":t.css("float")},s=e("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),n={width:t.width(),height:t.height()},a=document.activeElement;try{a.id}catch(o){a=document.body}return t.wrap(s),(t[0]===a||e.contains(t[0],a))&&e(a).focus(),s=t.parent(),"static"===t.css("position")?(s.css({position:"relative"}),t.css({position:"relative"})):(e.extend(i,{position:t.css("position"),zIndex:t.css("z-index")}),e.each(["top","left","bottom","right"],function(e,s){i[s]=t.css(s),isNaN(parseInt(i[s],10))&&(i[s]="auto")}),t.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),t.css(n),s.css(i).show()},removeWrapper:function(t){var i=document.activeElement;return t.parent().is(".ui-effects-wrapper")&&(t.parent().replaceWith(t),(t[0]===i||e.contains(t[0],i))&&e(i).focus()),t},setTransition:function(t,i,s,n){return n=n||{},e.each(i,function(e,i){var a=t.cssUnit(i);a[0]>0&&(n[i]=a[0]*s+a[1])}),n}}),e.fn.extend({effect:function(){function i(t){function i(){e.isFunction(a)&&a.call(n[0]),e.isFunction(t)&&t()}var n=e(this),a=s.complete,r=s.mode;(n.is(":hidden")?"hide"===r:"show"===r)?(n[r](),i()):o.call(n[0],s,i)}var s=t.apply(this,arguments),n=s.mode,a=s.queue,o=e.effects.effect[s.effect];return e.fx.off||!o?n?this[n](s.duration,s.complete):this.each(function(){s.complete&&s.complete.call(this)}):a===!1?this.each(i):this.queue(a||"fx",i)},show:function(e){return function(s){if(i(s))return e.apply(this,arguments);var n=t.apply(this,arguments);return n.mode="show",this.effect.call(this,n)}}(e.fn.show),hide:function(e){return function(s){if(i(s))return e.apply(this,arguments);var n=t.apply(this,arguments);return n.mode="hide",this.effect.call(this,n)}}(e.fn.hide),toggle:function(e){return function(s){if(i(s)||"boolean"==typeof s)return e.apply(this,arguments);var n=t.apply(this,arguments);return n.mode="toggle",this.effect.call(this,n)}}(e.fn.toggle),cssUnit:function(t){var i=this.css(t),s=[];return e.each(["em","px","%","pt"],function(e,t){i.indexOf(t)>0&&(s=[parseFloat(i),t])}),s}})}(),function(){var t={};e.each(["Quad","Cubic","Quart","Quint","Expo"],function(e,i){t[i]=function(t){return Math.pow(t,e+2)}}),e.extend(t,{Sine:function(e){return 1-Math.cos(e*Math.PI/2)},Circ:function(e){return 1-Math.sqrt(1-e*e)},Elastic:function(e){return 0===e||1===e?e:-Math.pow(2,8*(e-1))*Math.sin((80*(e-1)-7.5)*Math.PI/15)},Back:function(e){return e*e*(3*e-2)},Bounce:function(e){for(var t,i=4;((t=Math.pow(2,--i))-1)/11>e;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*t-2)/22-e,2)}}),e.each(t,function(t,i){e.easing["easeIn"+t]=i,e.easing["easeOut"+t]=function(e){return 1-i(1-e)},e.easing["easeInOut"+t]=function(e){return.5>e?i(2*e)/2:1-i(-2*e+2)/2}})}(),e.effects,e.effects.effect.blind=function(t,i){var s,n,a,o=e(this),r=/up|down|vertical/,h=/up|left|vertical|horizontal/,l=["position","top","bottom","left","right","height","width"],u=e.effects.setMode(o,t.mode||"hide"),d=t.direction||"up",c=r.test(d),p=c?"height":"width",f=c?"top":"left",m=h.test(d),g={},v="show"===u;o.parent().is(".ui-effects-wrapper")?e.effects.save(o.parent(),l):e.effects.save(o,l),o.show(),s=e.effects.createWrapper(o).css({overflow:"hidden"}),n=s[p](),a=parseFloat(s.css(f))||0,g[p]=v?n:0,m||(o.css(c?"bottom":"right",0).css(c?"top":"left","auto").css({position:"absolute"}),g[f]=v?a:n+a),v&&(s.css(p,0),m||s.css(f,a+n)),s.animate(g,{duration:t.duration,easing:t.easing,queue:!1,complete:function(){"hide"===u&&o.hide(),e.effects.restore(o,l),e.effects.removeWrapper(o),i()}})},e.effects.effect.bounce=function(t,i){var s,n,a,o=e(this),r=["position","top","bottom","left","right","height","width"],h=e.effects.setMode(o,t.mode||"effect"),l="hide"===h,u="show"===h,d=t.direction||"up",c=t.distance,p=t.times||5,f=2*p+(u||l?1:0),m=t.duration/f,g=t.easing,v="up"===d||"down"===d?"top":"left",y="up"===d||"left"===d,b=o.queue(),_=b.length;for((u||l)&&r.push("opacity"),e.effects.save(o,r),o.show(),e.effects.createWrapper(o),c||(c=o["top"===v?"outerHeight":"outerWidth"]()/3),u&&(a={opacity:1},a[v]=0,o.css("opacity",0).css(v,y?2*-c:2*c).animate(a,m,g)),l&&(c/=Math.pow(2,p-1)),a={},a[v]=0,s=0;p>s;s++)n={},n[v]=(y?"-=":"+=")+c,o.animate(n,m,g).animate(a,m,g),c=l?2*c:c/2;l&&(n={opacity:0},n[v]=(y?"-=":"+=")+c,o.animate(n,m,g)),o.queue(function(){l&&o.hide(),e.effects.restore(o,r),e.effects.removeWrapper(o),i()}),_>1&&b.splice.apply(b,[1,0].concat(b.splice(_,f+1))),o.dequeue()},e.effects.effect.clip=function(t,i){var s,n,a,o=e(this),r=["position","top","bottom","left","right","height","width"],h=e.effects.setMode(o,t.mode||"hide"),l="show"===h,u=t.direction||"vertical",d="vertical"===u,c=d?"height":"width",p=d?"top":"left",f={};e.effects.save(o,r),o.show(),s=e.effects.createWrapper(o).css({overflow:"hidden"}),n="IMG"===o[0].tagName?s:o,a=n[c](),l&&(n.css(c,0),n.css(p,a/2)),f[c]=l?a:0,f[p]=l?0:a/2,n.animate(f,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){l||o.hide(),e.effects.restore(o,r),e.effects.removeWrapper(o),i()}})},e.effects.effect.drop=function(t,i){var s,n=e(this),a=["position","top","bottom","left","right","opacity","height","width"],o=e.effects.setMode(n,t.mode||"hide"),r="show"===o,h=t.direction||"left",l="up"===h||"down"===h?"top":"left",u="up"===h||"left"===h?"pos":"neg",d={opacity:r?1:0};e.effects.save(n,a),n.show(),e.effects.createWrapper(n),s=t.distance||n["top"===l?"outerHeight":"outerWidth"](!0)/2,r&&n.css("opacity",0).css(l,"pos"===u?-s:s),d[l]=(r?"pos"===u?"+=":"-=":"pos"===u?"-=":"+=")+s,n.animate(d,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===o&&n.hide(),e.effects.restore(n,a),e.effects.removeWrapper(n),i()}})},e.effects.effect.explode=function(t,i){function s(){b.push(this),b.length===d*c&&n()}function n(){p.css({visibility:"visible"}),e(b).remove(),m||p.hide(),i()}var a,o,r,h,l,u,d=t.pieces?Math.round(Math.sqrt(t.pieces)):3,c=d,p=e(this),f=e.effects.setMode(p,t.mode||"hide"),m="show"===f,g=p.show().css("visibility","hidden").offset(),v=Math.ceil(p.outerWidth()/c),y=Math.ceil(p.outerHeight()/d),b=[];for(a=0;d>a;a++)for(h=g.top+a*y,u=a-(d-1)/2,o=0;c>o;o++)r=g.left+o*v,l=o-(c-1)/2,p.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-o*v,top:-a*y}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:v,height:y,left:r+(m?l*v:0),top:h+(m?u*y:0),opacity:m?0:1}).animate({left:r+(m?0:l*v),top:h+(m?0:u*y),opacity:m?1:0},t.duration||500,t.easing,s)},e.effects.effect.fade=function(t,i){var s=e(this),n=e.effects.setMode(s,t.mode||"toggle");s.animate({opacity:n},{queue:!1,duration:t.duration,easing:t.easing,complete:i})},e.effects.effect.fold=function(t,i){var s,n,a=e(this),o=["position","top","bottom","left","right","height","width"],r=e.effects.setMode(a,t.mode||"hide"),h="show"===r,l="hide"===r,u=t.size||15,d=/([0-9]+)%/.exec(u),c=!!t.horizFirst,p=h!==c,f=p?["width","height"]:["height","width"],m=t.duration/2,g={},v={};e.effects.save(a,o),a.show(),s=e.effects.createWrapper(a).css({overflow:"hidden"}),n=p?[s.width(),s.height()]:[s.height(),s.width()],d&&(u=parseInt(d[1],10)/100*n[l?0:1]),h&&s.css(c?{height:0,width:u}:{height:u,width:0}),g[f[0]]=h?n[0]:u,v[f[1]]=h?n[1]:0,s.animate(g,m,t.easing).animate(v,m,t.easing,function(){l&&a.hide(),e.effects.restore(a,o),e.effects.removeWrapper(a),i()})},e.effects.effect.highlight=function(t,i){var s=e(this),n=["backgroundImage","backgroundColor","opacity"],a=e.effects.setMode(s,t.mode||"show"),o={backgroundColor:s.css("backgroundColor")};"hide"===a&&(o.opacity=0),e.effects.save(s,n),s.show().css({backgroundImage:"none",backgroundColor:t.color||"#ffff99"}).animate(o,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===a&&s.hide(),e.effects.restore(s,n),i()}})},e.effects.effect.size=function(t,i){var s,n,a,o=e(this),r=["position","top","bottom","left","right","width","height","overflow","opacity"],h=["position","top","bottom","left","right","overflow","opacity"],l=["width","height","overflow"],u=["fontSize"],d=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],c=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],p=e.effects.setMode(o,t.mode||"effect"),f=t.restore||"effect"!==p,m=t.scale||"both",g=t.origin||["middle","center"],v=o.css("position"),y=f?r:h,b={height:0,width:0,outerHeight:0,outerWidth:0};"show"===p&&o.show(),s={height:o.height(),width:o.width(),outerHeight:o.outerHeight(),outerWidth:o.outerWidth()},"toggle"===t.mode&&"show"===p?(o.from=t.to||b,o.to=t.from||s):(o.from=t.from||("show"===p?b:s),o.to=t.to||("hide"===p?b:s)),a={from:{y:o.from.height/s.height,x:o.from.width/s.width},to:{y:o.to.height/s.height,x:o.to.width/s.width}},("box"===m||"both"===m)&&(a.from.y!==a.to.y&&(y=y.concat(d),o.from=e.effects.setTransition(o,d,a.from.y,o.from),o.to=e.effects.setTransition(o,d,a.to.y,o.to)),a.from.x!==a.to.x&&(y=y.concat(c),o.from=e.effects.setTransition(o,c,a.from.x,o.from),o.to=e.effects.setTransition(o,c,a.to.x,o.to))),("content"===m||"both"===m)&&a.from.y!==a.to.y&&(y=y.concat(u).concat(l),o.from=e.effects.setTransition(o,u,a.from.y,o.from),o.to=e.effects.setTransition(o,u,a.to.y,o.to)),e.effects.save(o,y),o.show(),e.effects.createWrapper(o),o.css("overflow","hidden").css(o.from),g&&(n=e.effects.getBaseline(g,s),o.from.top=(s.outerHeight-o.outerHeight())*n.y,o.from.left=(s.outerWidth-o.outerWidth())*n.x,o.to.top=(s.outerHeight-o.to.outerHeight)*n.y,o.to.left=(s.outerWidth-o.to.outerWidth)*n.x),o.css(o.from),("content"===m||"both"===m)&&(d=d.concat(["marginTop","marginBottom"]).concat(u),c=c.concat(["marginLeft","marginRight"]),l=r.concat(d).concat(c),o.find("*[width]").each(function(){var i=e(this),s={height:i.height(),width:i.width(),outerHeight:i.outerHeight(),outerWidth:i.outerWidth()}; -f&&e.effects.save(i,l),i.from={height:s.height*a.from.y,width:s.width*a.from.x,outerHeight:s.outerHeight*a.from.y,outerWidth:s.outerWidth*a.from.x},i.to={height:s.height*a.to.y,width:s.width*a.to.x,outerHeight:s.height*a.to.y,outerWidth:s.width*a.to.x},a.from.y!==a.to.y&&(i.from=e.effects.setTransition(i,d,a.from.y,i.from),i.to=e.effects.setTransition(i,d,a.to.y,i.to)),a.from.x!==a.to.x&&(i.from=e.effects.setTransition(i,c,a.from.x,i.from),i.to=e.effects.setTransition(i,c,a.to.x,i.to)),i.css(i.from),i.animate(i.to,t.duration,t.easing,function(){f&&e.effects.restore(i,l)})})),o.animate(o.to,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){0===o.to.opacity&&o.css("opacity",o.from.opacity),"hide"===p&&o.hide(),e.effects.restore(o,y),f||("static"===v?o.css({position:"relative",top:o.to.top,left:o.to.left}):e.each(["top","left"],function(e,t){o.css(t,function(t,i){var s=parseInt(i,10),n=e?o.to.left:o.to.top;return"auto"===i?n+"px":s+n+"px"})})),e.effects.removeWrapper(o),i()}})},e.effects.effect.scale=function(t,i){var s=e(this),n=e.extend(!0,{},t),a=e.effects.setMode(s,t.mode||"effect"),o=parseInt(t.percent,10)||(0===parseInt(t.percent,10)?0:"hide"===a?0:100),r=t.direction||"both",h=t.origin,l={height:s.height(),width:s.width(),outerHeight:s.outerHeight(),outerWidth:s.outerWidth()},u={y:"horizontal"!==r?o/100:1,x:"vertical"!==r?o/100:1};n.effect="size",n.queue=!1,n.complete=i,"effect"!==a&&(n.origin=h||["middle","center"],n.restore=!0),n.from=t.from||("show"===a?{height:0,width:0,outerHeight:0,outerWidth:0}:l),n.to={height:l.height*u.y,width:l.width*u.x,outerHeight:l.outerHeight*u.y,outerWidth:l.outerWidth*u.x},n.fade&&("show"===a&&(n.from.opacity=0,n.to.opacity=1),"hide"===a&&(n.from.opacity=1,n.to.opacity=0)),s.effect(n)},e.effects.effect.puff=function(t,i){var s=e(this),n=e.effects.setMode(s,t.mode||"hide"),a="hide"===n,o=parseInt(t.percent,10)||150,r=o/100,h={height:s.height(),width:s.width(),outerHeight:s.outerHeight(),outerWidth:s.outerWidth()};e.extend(t,{effect:"scale",queue:!1,fade:!0,mode:n,complete:i,percent:a?o:100,from:a?h:{height:h.height*r,width:h.width*r,outerHeight:h.outerHeight*r,outerWidth:h.outerWidth*r}}),s.effect(t)},e.effects.effect.pulsate=function(t,i){var s,n=e(this),a=e.effects.setMode(n,t.mode||"show"),o="show"===a,r="hide"===a,h=o||"hide"===a,l=2*(t.times||5)+(h?1:0),u=t.duration/l,d=0,c=n.queue(),p=c.length;for((o||!n.is(":visible"))&&(n.css("opacity",0).show(),d=1),s=1;l>s;s++)n.animate({opacity:d},u,t.easing),d=1-d;n.animate({opacity:d},u,t.easing),n.queue(function(){r&&n.hide(),i()}),p>1&&c.splice.apply(c,[1,0].concat(c.splice(p,l+1))),n.dequeue()},e.effects.effect.shake=function(t,i){var s,n=e(this),a=["position","top","bottom","left","right","height","width"],o=e.effects.setMode(n,t.mode||"effect"),r=t.direction||"left",h=t.distance||20,l=t.times||3,u=2*l+1,d=Math.round(t.duration/u),c="up"===r||"down"===r?"top":"left",p="up"===r||"left"===r,f={},m={},g={},v=n.queue(),y=v.length;for(e.effects.save(n,a),n.show(),e.effects.createWrapper(n),f[c]=(p?"-=":"+=")+h,m[c]=(p?"+=":"-=")+2*h,g[c]=(p?"-=":"+=")+2*h,n.animate(f,d,t.easing),s=1;l>s;s++)n.animate(m,d,t.easing).animate(g,d,t.easing);n.animate(m,d,t.easing).animate(f,d/2,t.easing).queue(function(){"hide"===o&&n.hide(),e.effects.restore(n,a),e.effects.removeWrapper(n),i()}),y>1&&v.splice.apply(v,[1,0].concat(v.splice(y,u+1))),n.dequeue()},e.effects.effect.slide=function(t,i){var s,n=e(this),a=["position","top","bottom","left","right","width","height"],o=e.effects.setMode(n,t.mode||"show"),r="show"===o,h=t.direction||"left",l="up"===h||"down"===h?"top":"left",u="up"===h||"left"===h,d={};e.effects.save(n,a),n.show(),s=t.distance||n["top"===l?"outerHeight":"outerWidth"](!0),e.effects.createWrapper(n).css({overflow:"hidden"}),r&&n.css(l,u?isNaN(s)?"-"+s:-s:s),d[l]=(r?u?"+=":"-=":u?"-=":"+=")+s,n.animate(d,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===o&&n.hide(),e.effects.restore(n,a),e.effects.removeWrapper(n),i()}})},e.effects.effect.transfer=function(t,i){var s=e(this),n=e(t.to),a="fixed"===n.css("position"),o=e("body"),r=a?o.scrollTop():0,h=a?o.scrollLeft():0,l=n.offset(),u={top:l.top-r,left:l.left-h,height:n.innerHeight(),width:n.innerWidth()},d=s.offset(),c=e("<div class='ui-effects-transfer'></div>").appendTo(document.body).addClass(t.className).css({top:d.top-r,left:d.left-h,height:s.innerHeight(),width:s.innerWidth(),position:a?"fixed":"absolute"}).animate(u,t.duration,t.easing,function(){c.remove(),i()})},e.widget("ui.progressbar",{version:"1.11.4",options:{max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min}),this.valueDiv=e("<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>").appendTo(this.element),this._refreshValue()},_destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.valueDiv.remove()},value:function(e){return void 0===e?this.options.value:(this.options.value=this._constrainedValue(e),this._refreshValue(),void 0)},_constrainedValue:function(e){return void 0===e&&(e=this.options.value),this.indeterminate=e===!1,"number"!=typeof e&&(e=0),this.indeterminate?!1:Math.min(this.options.max,Math.max(this.min,e))},_setOptions:function(e){var t=e.value;delete e.value,this._super(e),this.options.value=this._constrainedValue(t),this._refreshValue()},_setOption:function(e,t){"max"===e&&(t=Math.max(this.min,t)),"disabled"===e&&this.element.toggleClass("ui-state-disabled",!!t).attr("aria-disabled",t),this._super(e,t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var t=this.options.value,i=this._percentage();this.valueDiv.toggle(this.indeterminate||t>this.min).toggleClass("ui-corner-right",t===this.options.max).width(i.toFixed(0)+"%"),this.element.toggleClass("ui-progressbar-indeterminate",this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=e("<div class='ui-progressbar-overlay'></div>").appendTo(this.valueDiv))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":t}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==t&&(this.oldValue=t,this._trigger("change")),t===this.options.max&&this._trigger("complete")}}),e.widget("ui.selectable",e.ui.mouse,{version:"1.11.4",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var t,i=this;this.element.addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){t=e(i.options.filter,i.element[0]),t.addClass("ui-selectee"),t.each(function(){var t=e(this),i=t.offset();e.data(this,"selectable-item",{element:this,$element:t,left:i.left,top:i.top,right:i.left+t.outerWidth(),bottom:i.top+t.outerHeight(),startselected:!1,selected:t.hasClass("ui-selected"),selecting:t.hasClass("ui-selecting"),unselecting:t.hasClass("ui-unselecting")})})},this.refresh(),this.selectees=t.addClass("ui-selectee"),this._mouseInit(),this.helper=e("<div class='ui-selectable-helper'></div>")},_destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item"),this.element.removeClass("ui-selectable ui-selectable-disabled"),this._mouseDestroy()},_mouseStart:function(t){var i=this,s=this.options;this.opos=[t.pageX,t.pageY],this.options.disabled||(this.selectees=e(s.filter,this.element[0]),this._trigger("start",t),e(s.appendTo).append(this.helper),this.helper.css({left:t.pageX,top:t.pageY,width:0,height:0}),s.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var s=e.data(this,"selectable-item");s.startselected=!0,t.metaKey||t.ctrlKey||(s.$element.removeClass("ui-selected"),s.selected=!1,s.$element.addClass("ui-unselecting"),s.unselecting=!0,i._trigger("unselecting",t,{unselecting:s.element}))}),e(t.target).parents().addBack().each(function(){var s,n=e.data(this,"selectable-item");return n?(s=!t.metaKey&&!t.ctrlKey||!n.$element.hasClass("ui-selected"),n.$element.removeClass(s?"ui-unselecting":"ui-selected").addClass(s?"ui-selecting":"ui-unselecting"),n.unselecting=!s,n.selecting=s,n.selected=s,s?i._trigger("selecting",t,{selecting:n.element}):i._trigger("unselecting",t,{unselecting:n.element}),!1):void 0}))},_mouseDrag:function(t){if(this.dragged=!0,!this.options.disabled){var i,s=this,n=this.options,a=this.opos[0],o=this.opos[1],r=t.pageX,h=t.pageY;return a>r&&(i=r,r=a,a=i),o>h&&(i=h,h=o,o=i),this.helper.css({left:a,top:o,width:r-a,height:h-o}),this.selectees.each(function(){var i=e.data(this,"selectable-item"),l=!1;i&&i.element!==s.element[0]&&("touch"===n.tolerance?l=!(i.left>r||a>i.right||i.top>h||o>i.bottom):"fit"===n.tolerance&&(l=i.left>a&&r>i.right&&i.top>o&&h>i.bottom),l?(i.selected&&(i.$element.removeClass("ui-selected"),i.selected=!1),i.unselecting&&(i.$element.removeClass("ui-unselecting"),i.unselecting=!1),i.selecting||(i.$element.addClass("ui-selecting"),i.selecting=!0,s._trigger("selecting",t,{selecting:i.element}))):(i.selecting&&((t.metaKey||t.ctrlKey)&&i.startselected?(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.$element.addClass("ui-selected"),i.selected=!0):(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.startselected&&(i.$element.addClass("ui-unselecting"),i.unselecting=!0),s._trigger("unselecting",t,{unselecting:i.element}))),i.selected&&(t.metaKey||t.ctrlKey||i.startselected||(i.$element.removeClass("ui-selected"),i.selected=!1,i.$element.addClass("ui-unselecting"),i.unselecting=!0,s._trigger("unselecting",t,{unselecting:i.element})))))}),!1}},_mouseStop:function(t){var i=this;return this.dragged=!1,e(".ui-unselecting",this.element[0]).each(function(){var s=e.data(this,"selectable-item");s.$element.removeClass("ui-unselecting"),s.unselecting=!1,s.startselected=!1,i._trigger("unselected",t,{unselected:s.element})}),e(".ui-selecting",this.element[0]).each(function(){var s=e.data(this,"selectable-item");s.$element.removeClass("ui-selecting").addClass("ui-selected"),s.selecting=!1,s.selected=!0,s.startselected=!0,i._trigger("selected",t,{selected:s.element})}),this._trigger("stop",t),this.helper.remove(),!1}}),e.widget("ui.selectmenu",{version:"1.11.4",defaultElement:"<select>",options:{appendTo:null,disabled:null,icons:{button:"ui-icon-triangle-1-s"},position:{my:"left top",at:"left bottom",collision:"none"},width:null,change:null,close:null,focus:null,open:null,select:null},_create:function(){var e=this.element.uniqueId().attr("id");this.ids={element:e,button:e+"-button",menu:e+"-menu"},this._drawButton(),this._drawMenu(),this.options.disabled&&this.disable()},_drawButton:function(){var t=this;this.label=e("label[for='"+this.ids.element+"']").attr("for",this.ids.button),this._on(this.label,{click:function(e){this.button.focus(),e.preventDefault()}}),this.element.hide(),this.button=e("<span>",{"class":"ui-selectmenu-button ui-widget ui-state-default ui-corner-all",tabindex:this.options.disabled?-1:0,id:this.ids.button,role:"combobox","aria-expanded":"false","aria-autocomplete":"list","aria-owns":this.ids.menu,"aria-haspopup":"true"}).insertAfter(this.element),e("<span>",{"class":"ui-icon "+this.options.icons.button}).prependTo(this.button),this.buttonText=e("<span>",{"class":"ui-selectmenu-text"}).appendTo(this.button),this._setText(this.buttonText,this.element.find("option:selected").text()),this._resizeButton(),this._on(this.button,this._buttonEvents),this.button.one("focusin",function(){t.menuItems||t._refreshMenu()}),this._hoverable(this.button),this._focusable(this.button)},_drawMenu:function(){var t=this;this.menu=e("<ul>",{"aria-hidden":"true","aria-labelledby":this.ids.button,id:this.ids.menu}),this.menuWrap=e("<div>",{"class":"ui-selectmenu-menu ui-front"}).append(this.menu).appendTo(this._appendTo()),this.menuInstance=this.menu.menu({role:"listbox",select:function(e,i){e.preventDefault(),t._setSelection(),t._select(i.item.data("ui-selectmenu-item"),e)},focus:function(e,i){var s=i.item.data("ui-selectmenu-item");null!=t.focusIndex&&s.index!==t.focusIndex&&(t._trigger("focus",e,{item:s}),t.isOpen||t._select(s,e)),t.focusIndex=s.index,t.button.attr("aria-activedescendant",t.menuItems.eq(s.index).attr("id"))}}).menu("instance"),this.menu.addClass("ui-corner-bottom").removeClass("ui-corner-all"),this.menuInstance._off(this.menu,"mouseleave"),this.menuInstance._closeOnDocumentClick=function(){return!1},this.menuInstance._isDivider=function(){return!1}},refresh:function(){this._refreshMenu(),this._setText(this.buttonText,this._getSelectedItem().text()),this.options.width||this._resizeButton()},_refreshMenu:function(){this.menu.empty();var e,t=this.element.find("option");t.length&&(this._parseOptions(t),this._renderMenu(this.menu,this.items),this.menuInstance.refresh(),this.menuItems=this.menu.find("li").not(".ui-selectmenu-optgroup"),e=this._getSelectedItem(),this.menuInstance.focus(null,e),this._setAria(e.data("ui-selectmenu-item")),this._setOption("disabled",this.element.prop("disabled")))},open:function(e){this.options.disabled||(this.menuItems?(this.menu.find(".ui-state-focus").removeClass("ui-state-focus"),this.menuInstance.focus(null,this._getSelectedItem())):this._refreshMenu(),this.isOpen=!0,this._toggleAttr(),this._resizeMenu(),this._position(),this._on(this.document,this._documentClick),this._trigger("open",e))},_position:function(){this.menuWrap.position(e.extend({of:this.button},this.options.position))},close:function(e){this.isOpen&&(this.isOpen=!1,this._toggleAttr(),this.range=null,this._off(this.document),this._trigger("close",e))},widget:function(){return this.button},menuWidget:function(){return this.menu},_renderMenu:function(t,i){var s=this,n="";e.each(i,function(i,a){a.optgroup!==n&&(e("<li>",{"class":"ui-selectmenu-optgroup ui-menu-divider"+(a.element.parent("optgroup").prop("disabled")?" ui-state-disabled":""),text:a.optgroup}).appendTo(t),n=a.optgroup),s._renderItemData(t,a)})},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-selectmenu-item",t)},_renderItem:function(t,i){var s=e("<li>");return i.disabled&&s.addClass("ui-state-disabled"),this._setText(s,i.label),s.appendTo(t)},_setText:function(e,t){t?e.text(t):e.html(" ")},_move:function(e,t){var i,s,n=".ui-menu-item";this.isOpen?i=this.menuItems.eq(this.focusIndex):(i=this.menuItems.eq(this.element[0].selectedIndex),n+=":not(.ui-state-disabled)"),s="first"===e||"last"===e?i["first"===e?"prevAll":"nextAll"](n).eq(-1):i[e+"All"](n).eq(0),s.length&&this.menuInstance.focus(t,s)},_getSelectedItem:function(){return this.menuItems.eq(this.element[0].selectedIndex)},_toggle:function(e){this[this.isOpen?"close":"open"](e)},_setSelection:function(){var e;this.range&&(window.getSelection?(e=window.getSelection(),e.removeAllRanges(),e.addRange(this.range)):this.range.select(),this.button.focus())},_documentClick:{mousedown:function(t){this.isOpen&&(e(t.target).closest(".ui-selectmenu-menu, #"+this.ids.button).length||this.close(t))}},_buttonEvents:{mousedown:function(){var e;window.getSelection?(e=window.getSelection(),e.rangeCount&&(this.range=e.getRangeAt(0))):this.range=document.selection.createRange()},click:function(e){this._setSelection(),this._toggle(e)},keydown:function(t){var i=!0;switch(t.keyCode){case e.ui.keyCode.TAB:case e.ui.keyCode.ESCAPE:this.close(t),i=!1;break;case e.ui.keyCode.ENTER:this.isOpen&&this._selectFocusedItem(t);break;case e.ui.keyCode.UP:t.altKey?this._toggle(t):this._move("prev",t);break;case e.ui.keyCode.DOWN:t.altKey?this._toggle(t):this._move("next",t);break;case e.ui.keyCode.SPACE:this.isOpen?this._selectFocusedItem(t):this._toggle(t);break;case e.ui.keyCode.LEFT:this._move("prev",t);break;case e.ui.keyCode.RIGHT:this._move("next",t);break;case e.ui.keyCode.HOME:case e.ui.keyCode.PAGE_UP:this._move("first",t);break;case e.ui.keyCode.END:case e.ui.keyCode.PAGE_DOWN:this._move("last",t);break;default:this.menu.trigger(t),i=!1}i&&t.preventDefault()}},_selectFocusedItem:function(e){var t=this.menuItems.eq(this.focusIndex);t.hasClass("ui-state-disabled")||this._select(t.data("ui-selectmenu-item"),e)},_select:function(e,t){var i=this.element[0].selectedIndex;this.element[0].selectedIndex=e.index,this._setText(this.buttonText,e.label),this._setAria(e),this._trigger("select",t,{item:e}),e.index!==i&&this._trigger("change",t,{item:e}),this.close(t)},_setAria:function(e){var t=this.menuItems.eq(e.index).attr("id");this.button.attr({"aria-labelledby":t,"aria-activedescendant":t}),this.menu.attr("aria-activedescendant",t)},_setOption:function(e,t){"icons"===e&&this.button.find("span.ui-icon").removeClass(this.options.icons.button).addClass(t.button),this._super(e,t),"appendTo"===e&&this.menuWrap.appendTo(this._appendTo()),"disabled"===e&&(this.menuInstance.option("disabled",t),this.button.toggleClass("ui-state-disabled",t).attr("aria-disabled",t),this.element.prop("disabled",t),t?(this.button.attr("tabindex",-1),this.close()):this.button.attr("tabindex",0)),"width"===e&&this._resizeButton()},_appendTo:function(){var t=this.options.appendTo;return t&&(t=t.jquery||t.nodeType?e(t):this.document.find(t).eq(0)),t&&t[0]||(t=this.element.closest(".ui-front")),t.length||(t=this.document[0].body),t},_toggleAttr:function(){this.button.toggleClass("ui-corner-top",this.isOpen).toggleClass("ui-corner-all",!this.isOpen).attr("aria-expanded",this.isOpen),this.menuWrap.toggleClass("ui-selectmenu-open",this.isOpen),this.menu.attr("aria-hidden",!this.isOpen)},_resizeButton:function(){var e=this.options.width;e||(e=this.element.show().outerWidth(),this.element.hide()),this.button.outerWidth(e)},_resizeMenu:function(){this.menu.outerWidth(Math.max(this.button.outerWidth(),this.menu.width("").outerWidth()+1))},_getCreateOptions:function(){return{disabled:this.element.prop("disabled")}},_parseOptions:function(t){var i=[];t.each(function(t,s){var n=e(s),a=n.parent("optgroup");i.push({element:n,index:t,value:n.val(),label:n.text(),optgroup:a.attr("label")||"",disabled:a.prop("disabled")||n.prop("disabled")})}),this.items=i},_destroy:function(){this.menuWrap.remove(),this.button.remove(),this.element.show(),this.element.removeUniqueId(),this.label.attr("for",this.ids.element)}}),e.widget("ui.slider",e.ui.mouse,{version:"1.11.4",widgetEventPrefix:"slide",options:{animate:!1,distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},numPages:5,_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this._calculateNewMax(),this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget"+" ui-widget-content"+" ui-corner-all"),this._refresh(),this._setOption("disabled",this.options.disabled),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var t,i,s=this.options,n=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),a="<span class='ui-slider-handle ui-state-default ui-corner-all' tabindex='0'></span>",o=[];for(i=s.values&&s.values.length||1,n.length>i&&(n.slice(i).remove(),n=n.slice(0,i)),t=n.length;i>t;t++)o.push(a);this.handles=n.add(e(o.join("")).appendTo(this.element)),this.handle=this.handles.eq(0),this.handles.each(function(t){e(this).data("ui-slider-handle-index",t)})},_createRange:function(){var t=this.options,i="";t.range?(t.range===!0&&(t.values?t.values.length&&2!==t.values.length?t.values=[t.values[0],t.values[0]]:e.isArray(t.values)&&(t.values=t.values.slice(0)):t.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?this.range.removeClass("ui-slider-range-min ui-slider-range-max").css({left:"",bottom:""}):(this.range=e("<div></div>").appendTo(this.element),i="ui-slider-range ui-widget-header ui-corner-all"),this.range.addClass(i+("min"===t.range||"max"===t.range?" ui-slider-range-"+t.range:""))):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-widget ui-widget-content ui-corner-all"),this._mouseDestroy()},_mouseCapture:function(t){var i,s,n,a,o,r,h,l,u=this,d=this.options;return d.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),i={x:t.pageX,y:t.pageY},s=this._normValueFromMouse(i),n=this._valueMax()-this._valueMin()+1,this.handles.each(function(t){var i=Math.abs(s-u.values(t));(n>i||n===i&&(t===u._lastChangedValue||u.values(t)===d.min))&&(n=i,a=e(this),o=t)}),r=this._start(t,o),r===!1?!1:(this._mouseSliding=!0,this._handleIndex=o,a.addClass("ui-state-active").focus(),h=a.offset(),l=!e(t.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=l?{left:0,top:0}:{left:t.pageX-h.left-a.width()/2,top:t.pageY-h.top-a.height()/2-(parseInt(a.css("borderTopWidth"),10)||0)-(parseInt(a.css("borderBottomWidth"),10)||0)+(parseInt(a.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(t,o,s),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(e){var t={x:e.pageX,y:e.pageY},i=this._normValueFromMouse(t);return this._slide(e,this._handleIndex,i),!1},_mouseStop:function(e){return this.handles.removeClass("ui-state-active"),this._mouseSliding=!1,this._stop(e,this._handleIndex),this._change(e,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(e){var t,i,s,n,a;return"horizontal"===this.orientation?(t=this.elementSize.width,i=e.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(t=this.elementSize.height,i=e.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),s=i/t,s>1&&(s=1),0>s&&(s=0),"vertical"===this.orientation&&(s=1-s),n=this._valueMax()-this._valueMin(),a=this._valueMin()+s*n,this._trimAlignValue(a)},_start:function(e,t){var i={handle:this.handles[t],value:this.value()};return this.options.values&&this.options.values.length&&(i.value=this.values(t),i.values=this.values()),this._trigger("start",e,i)},_slide:function(e,t,i){var s,n,a;this.options.values&&this.options.values.length?(s=this.values(t?0:1),2===this.options.values.length&&this.options.range===!0&&(0===t&&i>s||1===t&&s>i)&&(i=s),i!==this.values(t)&&(n=this.values(),n[t]=i,a=this._trigger("slide",e,{handle:this.handles[t],value:i,values:n}),s=this.values(t?0:1),a!==!1&&this.values(t,i))):i!==this.value()&&(a=this._trigger("slide",e,{handle:this.handles[t],value:i}),a!==!1&&this.value(i))},_stop:function(e,t){var i={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(i.value=this.values(t),i.values=this.values()),this._trigger("stop",e,i)},_change:function(e,t){if(!this._keySliding&&!this._mouseSliding){var i={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(i.value=this.values(t),i.values=this.values()),this._lastChangedValue=t,this._trigger("change",e,i)}},value:function(e){return arguments.length?(this.options.value=this._trimAlignValue(e),this._refreshValue(),this._change(null,0),void 0):this._value()},values:function(t,i){var s,n,a;if(arguments.length>1)return this.options.values[t]=this._trimAlignValue(i),this._refreshValue(),this._change(null,t),void 0;if(!arguments.length)return this._values();if(!e.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(t):this.value();for(s=this.options.values,n=arguments[0],a=0;s.length>a;a+=1)s[a]=this._trimAlignValue(n[a]),this._change(null,a);this._refreshValue()},_setOption:function(t,i){var s,n=0;switch("range"===t&&this.options.range===!0&&("min"===i?(this.options.value=this._values(0),this.options.values=null):"max"===i&&(this.options.value=this._values(this.options.values.length-1),this.options.values=null)),e.isArray(this.options.values)&&(n=this.options.values.length),"disabled"===t&&this.element.toggleClass("ui-state-disabled",!!i),this._super(t,i),t){case"orientation":this._detectOrientation(),this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation),this._refreshValue(),this.handles.css("horizontal"===i?"bottom":"left","");break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":for(this._animateOff=!0,this._refreshValue(),s=0;n>s;s+=1)this._change(null,s);this._animateOff=!1;break;case"step":case"min":case"max":this._animateOff=!0,this._calculateNewMax(),this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_value:function(){var e=this.options.value;return e=this._trimAlignValue(e)},_values:function(e){var t,i,s;if(arguments.length)return t=this.options.values[e],t=this._trimAlignValue(t);if(this.options.values&&this.options.values.length){for(i=this.options.values.slice(),s=0;i.length>s;s+=1)i[s]=this._trimAlignValue(i[s]);return i}return[]},_trimAlignValue:function(e){if(this._valueMin()>=e)return this._valueMin();if(e>=this._valueMax())return this._valueMax();var t=this.options.step>0?this.options.step:1,i=(e-this._valueMin())%t,s=e-i;return 2*Math.abs(i)>=t&&(s+=i>0?t:-t),parseFloat(s.toFixed(5))},_calculateNewMax:function(){var e=this.options.max,t=this._valueMin(),i=this.options.step,s=Math.floor(+(e-t).toFixed(this._precision())/i)*i;e=s+t,this.max=parseFloat(e.toFixed(this._precision()))},_precision:function(){var e=this._precisionOf(this.options.step);return null!==this.options.min&&(e=Math.max(e,this._precisionOf(this.options.min))),e},_precisionOf:function(e){var t=""+e,i=t.indexOf(".");return-1===i?0:t.length-i-1},_valueMin:function(){return this.options.min},_valueMax:function(){return this.max},_refreshValue:function(){var t,i,s,n,a,o=this.options.range,r=this.options,h=this,l=this._animateOff?!1:r.animate,u={};this.options.values&&this.options.values.length?this.handles.each(function(s){i=100*((h.values(s)-h._valueMin())/(h._valueMax()-h._valueMin())),u["horizontal"===h.orientation?"left":"bottom"]=i+"%",e(this).stop(1,1)[l?"animate":"css"](u,r.animate),h.options.range===!0&&("horizontal"===h.orientation?(0===s&&h.range.stop(1,1)[l?"animate":"css"]({left:i+"%"},r.animate),1===s&&h.range[l?"animate":"css"]({width:i-t+"%"},{queue:!1,duration:r.animate})):(0===s&&h.range.stop(1,1)[l?"animate":"css"]({bottom:i+"%"},r.animate),1===s&&h.range[l?"animate":"css"]({height:i-t+"%"},{queue:!1,duration:r.animate}))),t=i}):(s=this.value(),n=this._valueMin(),a=this._valueMax(),i=a!==n?100*((s-n)/(a-n)):0,u["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[l?"animate":"css"](u,r.animate),"min"===o&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:i+"%"},r.animate),"max"===o&&"horizontal"===this.orientation&&this.range[l?"animate":"css"]({width:100-i+"%"},{queue:!1,duration:r.animate}),"min"===o&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:i+"%"},r.animate),"max"===o&&"vertical"===this.orientation&&this.range[l?"animate":"css"]({height:100-i+"%"},{queue:!1,duration:r.animate}))},_handleEvents:{keydown:function(t){var i,s,n,a,o=e(t.target).data("ui-slider-handle-index");switch(t.keyCode){case e.ui.keyCode.HOME:case e.ui.keyCode.END:case e.ui.keyCode.PAGE_UP:case e.ui.keyCode.PAGE_DOWN:case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:if(t.preventDefault(),!this._keySliding&&(this._keySliding=!0,e(t.target).addClass("ui-state-active"),i=this._start(t,o),i===!1))return}switch(a=this.options.step,s=n=this.options.values&&this.options.values.length?this.values(o):this.value(),t.keyCode){case e.ui.keyCode.HOME:n=this._valueMin();break;case e.ui.keyCode.END:n=this._valueMax();break;case e.ui.keyCode.PAGE_UP:n=this._trimAlignValue(s+(this._valueMax()-this._valueMin())/this.numPages);break;case e.ui.keyCode.PAGE_DOWN:n=this._trimAlignValue(s-(this._valueMax()-this._valueMin())/this.numPages);break;case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:if(s===this._valueMax())return;n=this._trimAlignValue(s+a);break;case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:if(s===this._valueMin())return;n=this._trimAlignValue(s-a)}this._slide(t,o,n)},keyup:function(t){var i=e(t.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(t,i),this._change(t,i),e(t.target).removeClass("ui-state-active"))}}}),e.widget("ui.sortable",e.ui.mouse,{version:"1.11.4",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(e,t,i){return e>=t&&t+i>e},_isFloating:function(e){return/left|right/.test(e.css("float"))||/inline|table-cell/.test(e.css("display"))},_create:function(){this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.offset=this.element.offset(),this._mouseInit(),this._setHandleClassName(),this.ready=!0},_setOption:function(e,t){this._super(e,t),"handle"===e&&this._setHandleClassName()},_setHandleClassName:function(){this.element.find(".ui-sortable-handle").removeClass("ui-sortable-handle"),e.each(this.items,function(){(this.instance.options.handle?this.item.find(this.instance.options.handle):this.item).addClass("ui-sortable-handle")})},_destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").find(".ui-sortable-handle").removeClass("ui-sortable-handle"),this._mouseDestroy();for(var e=this.items.length-1;e>=0;e--)this.items[e].item.removeData(this.widgetName+"-item");return this},_mouseCapture:function(t,i){var s=null,n=!1,a=this;return this.reverting?!1:this.options.disabled||"static"===this.options.type?!1:(this._refreshItems(t),e(t.target).parents().each(function(){return e.data(this,a.widgetName+"-item")===a?(s=e(this),!1):void 0}),e.data(t.target,a.widgetName+"-item")===a&&(s=e(t.target)),s?!this.options.handle||i||(e(this.options.handle,s).find("*").addBack().each(function(){this===t.target&&(n=!0)}),n)?(this.currentItem=s,this._removeCurrentsFromItems(),!0):!1:!1)},_mouseStart:function(t,i,s){var n,a,o=this.options;if(this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(t),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},e.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,o.cursorAt&&this._adjustOffsetFromHelper(o.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),o.containment&&this._setContainment(),o.cursor&&"auto"!==o.cursor&&(a=this.document.find("body"),this.storedCursor=a.css("cursor"),a.css("cursor",o.cursor),this.storedStylesheet=e("<style>*{ cursor: "+o.cursor+" !important; }</style>").appendTo(a)),o.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",o.opacity)),o.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",o.zIndex)),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!s)for(n=this.containers.length-1;n>=0;n--)this.containers[n]._trigger("activate",t,this._uiHash(this)); -return e.ui.ddmanager&&(e.ui.ddmanager.current=this),e.ui.ddmanager&&!o.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(t),!0},_mouseDrag:function(t){var i,s,n,a,o=this.options,r=!1;for(this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageY<o.scrollSensitivity?this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop+o.scrollSpeed:t.pageY-this.overflowOffset.top<o.scrollSensitivity&&(this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop-o.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-t.pageX<o.scrollSensitivity?this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft+o.scrollSpeed:t.pageX-this.overflowOffset.left<o.scrollSensitivity&&(this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft-o.scrollSpeed)):(t.pageY-this.document.scrollTop()<o.scrollSensitivity?r=this.document.scrollTop(this.document.scrollTop()-o.scrollSpeed):this.window.height()-(t.pageY-this.document.scrollTop())<o.scrollSensitivity&&(r=this.document.scrollTop(this.document.scrollTop()+o.scrollSpeed)),t.pageX-this.document.scrollLeft()<o.scrollSensitivity?r=this.document.scrollLeft(this.document.scrollLeft()-o.scrollSpeed):this.window.width()-(t.pageX-this.document.scrollLeft())<o.scrollSensitivity&&(r=this.document.scrollLeft(this.document.scrollLeft()+o.scrollSpeed))),r!==!1&&e.ui.ddmanager&&!o.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t)),this.positionAbs=this._convertPositionTo("absolute"),this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),i=this.items.length-1;i>=0;i--)if(s=this.items[i],n=s.item[0],a=this._intersectsWithPointer(s),a&&s.instance===this.currentContainer&&n!==this.currentItem[0]&&this.placeholder[1===a?"next":"prev"]()[0]!==n&&!e.contains(this.placeholder[0],n)&&("semi-dynamic"===this.options.type?!e.contains(this.element[0],n):!0)){if(this.direction=1===a?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(s))break;this._rearrange(t,s),this._trigger("change",t,this._uiHash());break}return this._contactContainers(t),e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),this._trigger("sort",t,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(t,i){if(t){if(e.ui.ddmanager&&!this.options.dropBehaviour&&e.ui.ddmanager.drop(this,t),this.options.revert){var s=this,n=this.placeholder.offset(),a=this.options.axis,o={};a&&"x"!==a||(o.left=n.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollLeft)),a&&"y"!==a||(o.top=n.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,e(this.helper).animate(o,parseInt(this.options.revert,10)||500,function(){s._clear(t)})}else this._clear(t,i);return!1}},cancel:function(){if(this.dragging){this._mouseUp({target:null}),"original"===this.options.helper?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var t=this.containers.length-1;t>=0;t--)this.containers[t]._trigger("deactivate",null,this._uiHash(this)),this.containers[t].containerCache.over&&(this.containers[t]._trigger("out",null,this._uiHash(this)),this.containers[t].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),e.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?e(this.domPosition.prev).after(this.currentItem):e(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(t){var i=this._getItemsAsjQuery(t&&t.connected),s=[];return t=t||{},e(i).each(function(){var i=(e(t.item||this).attr(t.attribute||"id")||"").match(t.expression||/(.+)[\-=_](.+)/);i&&s.push((t.key||i[1]+"[]")+"="+(t.key&&t.expression?i[1]:i[2]))}),!s.length&&t.key&&s.push(t.key+"="),s.join("&")},toArray:function(t){var i=this._getItemsAsjQuery(t&&t.connected),s=[];return t=t||{},i.each(function(){s.push(e(t.item||this).attr(t.attribute||"id")||"")}),s},_intersectsWith:function(e){var t=this.positionAbs.left,i=t+this.helperProportions.width,s=this.positionAbs.top,n=s+this.helperProportions.height,a=e.left,o=a+e.width,r=e.top,h=r+e.height,l=this.offset.click.top,u=this.offset.click.left,d="x"===this.options.axis||s+l>r&&h>s+l,c="y"===this.options.axis||t+u>a&&o>t+u,p=d&&c;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>e[this.floating?"width":"height"]?p:t+this.helperProportions.width/2>a&&o>i-this.helperProportions.width/2&&s+this.helperProportions.height/2>r&&h>n-this.helperProportions.height/2},_intersectsWithPointer:function(e){var t="x"===this.options.axis||this._isOverAxis(this.positionAbs.top+this.offset.click.top,e.top,e.height),i="y"===this.options.axis||this._isOverAxis(this.positionAbs.left+this.offset.click.left,e.left,e.width),s=t&&i,n=this._getDragVerticalDirection(),a=this._getDragHorizontalDirection();return s?this.floating?a&&"right"===a||"down"===n?2:1:n&&("down"===n?2:1):!1},_intersectsWithSides:function(e){var t=this._isOverAxis(this.positionAbs.top+this.offset.click.top,e.top+e.height/2,e.height),i=this._isOverAxis(this.positionAbs.left+this.offset.click.left,e.left+e.width/2,e.width),s=this._getDragVerticalDirection(),n=this._getDragHorizontalDirection();return this.floating&&n?"right"===n&&i||"left"===n&&!i:s&&("down"===s&&t||"up"===s&&!t)},_getDragVerticalDirection:function(){var e=this.positionAbs.top-this.lastPositionAbs.top;return 0!==e&&(e>0?"down":"up")},_getDragHorizontalDirection:function(){var e=this.positionAbs.left-this.lastPositionAbs.left;return 0!==e&&(e>0?"right":"left")},refresh:function(e){return this._refreshItems(e),this._setHandleClassName(),this.refreshPositions(),this},_connectWith:function(){var e=this.options;return e.connectWith.constructor===String?[e.connectWith]:e.connectWith},_getItemsAsjQuery:function(t){function i(){r.push(this)}var s,n,a,o,r=[],h=[],l=this._connectWith();if(l&&t)for(s=l.length-1;s>=0;s--)for(a=e(l[s],this.document[0]),n=a.length-1;n>=0;n--)o=e.data(a[n],this.widgetFullName),o&&o!==this&&!o.options.disabled&&h.push([e.isFunction(o.options.items)?o.options.items.call(o.element):e(o.options.items,o.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),o]);for(h.push([e.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):e(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),s=h.length-1;s>=0;s--)h[s][0].each(i);return e(r)},_removeCurrentsFromItems:function(){var t=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=e.grep(this.items,function(e){for(var i=0;t.length>i;i++)if(t[i]===e.item[0])return!1;return!0})},_refreshItems:function(t){this.items=[],this.containers=[this];var i,s,n,a,o,r,h,l,u=this.items,d=[[e.isFunction(this.options.items)?this.options.items.call(this.element[0],t,{item:this.currentItem}):e(this.options.items,this.element),this]],c=this._connectWith();if(c&&this.ready)for(i=c.length-1;i>=0;i--)for(n=e(c[i],this.document[0]),s=n.length-1;s>=0;s--)a=e.data(n[s],this.widgetFullName),a&&a!==this&&!a.options.disabled&&(d.push([e.isFunction(a.options.items)?a.options.items.call(a.element[0],t,{item:this.currentItem}):e(a.options.items,a.element),a]),this.containers.push(a));for(i=d.length-1;i>=0;i--)for(o=d[i][1],r=d[i][0],s=0,l=r.length;l>s;s++)h=e(r[s]),h.data(this.widgetName+"-item",o),u.push({item:h,instance:o,width:0,height:0,left:0,top:0})},refreshPositions:function(t){this.floating=this.items.length?"x"===this.options.axis||this._isFloating(this.items[0].item):!1,this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());var i,s,n,a;for(i=this.items.length-1;i>=0;i--)s=this.items[i],s.instance!==this.currentContainer&&this.currentContainer&&s.item[0]!==this.currentItem[0]||(n=this.options.toleranceElement?e(this.options.toleranceElement,s.item):s.item,t||(s.width=n.outerWidth(),s.height=n.outerHeight()),a=n.offset(),s.left=a.left,s.top=a.top);if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(i=this.containers.length-1;i>=0;i--)a=this.containers[i].element.offset(),this.containers[i].containerCache.left=a.left,this.containers[i].containerCache.top=a.top,this.containers[i].containerCache.width=this.containers[i].element.outerWidth(),this.containers[i].containerCache.height=this.containers[i].element.outerHeight();return this},_createPlaceholder:function(t){t=t||this;var i,s=t.options;s.placeholder&&s.placeholder.constructor!==String||(i=s.placeholder,s.placeholder={element:function(){var s=t.currentItem[0].nodeName.toLowerCase(),n=e("<"+s+">",t.document[0]).addClass(i||t.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper");return"tbody"===s?t._createTrPlaceholder(t.currentItem.find("tr").eq(0),e("<tr>",t.document[0]).appendTo(n)):"tr"===s?t._createTrPlaceholder(t.currentItem,n):"img"===s&&n.attr("src",t.currentItem.attr("src")),i||n.css("visibility","hidden"),n},update:function(e,n){(!i||s.forcePlaceholderSize)&&(n.height()||n.height(t.currentItem.innerHeight()-parseInt(t.currentItem.css("paddingTop")||0,10)-parseInt(t.currentItem.css("paddingBottom")||0,10)),n.width()||n.width(t.currentItem.innerWidth()-parseInt(t.currentItem.css("paddingLeft")||0,10)-parseInt(t.currentItem.css("paddingRight")||0,10)))}}),t.placeholder=e(s.placeholder.element.call(t.element,t.currentItem)),t.currentItem.after(t.placeholder),s.placeholder.update(t,t.placeholder)},_createTrPlaceholder:function(t,i){var s=this;t.children().each(function(){e("<td> </td>",s.document[0]).attr("colspan",e(this).attr("colspan")||1).appendTo(i)})},_contactContainers:function(t){var i,s,n,a,o,r,h,l,u,d,c=null,p=null;for(i=this.containers.length-1;i>=0;i--)if(!e.contains(this.currentItem[0],this.containers[i].element[0]))if(this._intersectsWith(this.containers[i].containerCache)){if(c&&e.contains(this.containers[i].element[0],c.element[0]))continue;c=this.containers[i],p=i}else this.containers[i].containerCache.over&&(this.containers[i]._trigger("out",t,this._uiHash(this)),this.containers[i].containerCache.over=0);if(c)if(1===this.containers.length)this.containers[p].containerCache.over||(this.containers[p]._trigger("over",t,this._uiHash(this)),this.containers[p].containerCache.over=1);else{for(n=1e4,a=null,u=c.floating||this._isFloating(this.currentItem),o=u?"left":"top",r=u?"width":"height",d=u?"clientX":"clientY",s=this.items.length-1;s>=0;s--)e.contains(this.containers[p].element[0],this.items[s].item[0])&&this.items[s].item[0]!==this.currentItem[0]&&(h=this.items[s].item.offset()[o],l=!1,t[d]-h>this.items[s][r]/2&&(l=!0),n>Math.abs(t[d]-h)&&(n=Math.abs(t[d]-h),a=this.items[s],this.direction=l?"up":"down"));if(!a&&!this.options.dropOnEmpty)return;if(this.currentContainer===this.containers[p])return this.currentContainer.containerCache.over||(this.containers[p]._trigger("over",t,this._uiHash()),this.currentContainer.containerCache.over=1),void 0;a?this._rearrange(t,a,null,!0):this._rearrange(t,null,this.containers[p].element,!0),this._trigger("change",t,this._uiHash()),this.containers[p]._trigger("change",t,this._uiHash(this)),this.currentContainer=this.containers[p],this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[p]._trigger("over",t,this._uiHash(this)),this.containers[p].containerCache.over=1}},_createHelper:function(t){var i=this.options,s=e.isFunction(i.helper)?e(i.helper.apply(this.element[0],[t,this.currentItem])):"clone"===i.helper?this.currentItem.clone():this.currentItem;return s.parents("body").length||e("parent"!==i.appendTo?i.appendTo:this.currentItem[0].parentNode)[0].appendChild(s[0]),s[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(!s[0].style.width||i.forceHelperSize)&&s.width(this.currentItem.width()),(!s[0].style.height||i.forceHelperSize)&&s.height(this.currentItem.height()),s},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var t=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==this.document[0]&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===this.document[0].body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&e.ui.ie)&&(t={top:0,left:0}),{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var e=this.currentItem.position();return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:e.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,i,s,n=this.options;"parent"===n.containment&&(n.containment=this.helper[0].parentNode),("document"===n.containment||"window"===n.containment)&&(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,"document"===n.containment?this.document.width():this.window.width()-this.helperProportions.width-this.margins.left,("document"===n.containment?this.document.width():this.window.height()||this.document[0].body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(n.containment)||(t=e(n.containment)[0],i=e(n.containment).offset(),s="hidden"!==e(t).css("overflow"),this.containment=[i.left+(parseInt(e(t).css("borderLeftWidth"),10)||0)+(parseInt(e(t).css("paddingLeft"),10)||0)-this.margins.left,i.top+(parseInt(e(t).css("borderTopWidth"),10)||0)+(parseInt(e(t).css("paddingTop"),10)||0)-this.margins.top,i.left+(s?Math.max(t.scrollWidth,t.offsetWidth):t.offsetWidth)-(parseInt(e(t).css("borderLeftWidth"),10)||0)-(parseInt(e(t).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,i.top+(s?Math.max(t.scrollHeight,t.offsetHeight):t.offsetHeight)-(parseInt(e(t).css("borderTopWidth"),10)||0)-(parseInt(e(t).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(t,i){i||(i=this.position);var s="absolute"===t?1:-1,n="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,a=/(html|body)/i.test(n[0].tagName);return{top:i.top+this.offset.relative.top*s+this.offset.parent.top*s-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():a?0:n.scrollTop())*s,left:i.left+this.offset.relative.left*s+this.offset.parent.left*s-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():a?0:n.scrollLeft())*s}},_generatePosition:function(t){var i,s,n=this.options,a=t.pageX,o=t.pageY,r="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,h=/(html|body)/i.test(r[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(t.pageX-this.offset.click.left<this.containment[0]&&(a=this.containment[0]+this.offset.click.left),t.pageY-this.offset.click.top<this.containment[1]&&(o=this.containment[1]+this.offset.click.top),t.pageX-this.offset.click.left>this.containment[2]&&(a=this.containment[2]+this.offset.click.left),t.pageY-this.offset.click.top>this.containment[3]&&(o=this.containment[3]+this.offset.click.top)),n.grid&&(i=this.originalPageY+Math.round((o-this.originalPageY)/n.grid[1])*n.grid[1],o=this.containment?i-this.offset.click.top>=this.containment[1]&&i-this.offset.click.top<=this.containment[3]?i:i-this.offset.click.top>=this.containment[1]?i-n.grid[1]:i+n.grid[1]:i,s=this.originalPageX+Math.round((a-this.originalPageX)/n.grid[0])*n.grid[0],a=this.containment?s-this.offset.click.left>=this.containment[0]&&s-this.offset.click.left<=this.containment[2]?s:s-this.offset.click.left>=this.containment[0]?s-n.grid[0]:s+n.grid[0]:s)),{top:o-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():h?0:r.scrollTop()),left:a-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():h?0:r.scrollLeft())}},_rearrange:function(e,t,i,s){i?i[0].appendChild(this.placeholder[0]):t.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?t.item[0]:t.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter;this._delay(function(){n===this.counter&&this.refreshPositions(!s)})},_clear:function(e,t){function i(e,t,i){return function(s){i._trigger(e,s,t._uiHash(t))}}this.reverting=!1;var s,n=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(s in this._storedCSS)("auto"===this._storedCSS[s]||"static"===this._storedCSS[s])&&(this._storedCSS[s]="");this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();for(this.fromOutside&&!t&&n.push(function(e){this._trigger("receive",e,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||t||n.push(function(e){this._trigger("update",e,this._uiHash())}),this!==this.currentContainer&&(t||(n.push(function(e){this._trigger("remove",e,this._uiHash())}),n.push(function(e){return function(t){e._trigger("receive",t,this._uiHash(this))}}.call(this,this.currentContainer)),n.push(function(e){return function(t){e._trigger("update",t,this._uiHash(this))}}.call(this,this.currentContainer)))),s=this.containers.length-1;s>=0;s--)t||n.push(i("deactivate",this,this.containers[s])),this.containers[s].containerCache.over&&(n.push(i("out",this,this.containers[s])),this.containers[s].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,t||this._trigger("beforeStop",e,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!t){for(s=0;n.length>s;s++)n[s].call(this,e);this._trigger("stop",e,this._uiHash())}return this.fromOutside=!1,!this.cancelHelperRemoval},_trigger:function(){e.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(t){var i=t||this;return{helper:i.helper,placeholder:i.placeholder||e([]),position:i.position,originalPosition:i.originalPosition,offset:i.positionAbs,item:i.currentItem,sender:t?t.element:null}}}),e.widget("ui.spinner",{version:"1.11.4",defaultElement:"<input>",widgetEventPrefix:"spin",options:{culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var t={},i=this.element;return e.each(["min","max","step"],function(e,s){var n=i.attr(s);void 0!==n&&n.length&&(t[s]=n)}),t},_events:{keydown:function(e){this._start(e)&&this._keydown(e)&&e.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(e){return this.cancelBlur?(delete this.cancelBlur,void 0):(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",e),void 0)},mousewheel:function(e,t){if(t){if(!this.spinning&&!this._start(e))return!1;this._spin((t>0?1:-1)*this.options.step,e),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(e)},100),e.preventDefault()}},"mousedown .ui-spinner-button":function(t){function i(){var e=this.element[0]===this.document[0].activeElement;e||(this.element.focus(),this.previous=s,this._delay(function(){this.previous=s}))}var s;s=this.element[0]===this.document[0].activeElement?this.previous:this.element.val(),t.preventDefault(),i.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,i.call(this)}),this._start(t)!==!1&&this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(t){return e(t.currentTarget).hasClass("ui-state-active")?this._start(t)===!1?!1:(this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t),void 0):void 0},"mouseleave .ui-spinner-button":"_stop"},_draw:function(){var e=this.uiSpinner=this.element.addClass("ui-spinner-input").attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml());this.element.attr("role","spinbutton"),this.buttons=e.find(".ui-spinner-button").attr("tabIndex",-1).button().removeClass("ui-corner-all"),this.buttons.height()>Math.ceil(.5*e.height())&&e.height()>0&&e.height(e.height()),this.options.disabled&&this.disable()},_keydown:function(t){var i=this.options,s=e.ui.keyCode;switch(t.keyCode){case s.UP:return this._repeat(null,1,t),!0;case s.DOWN:return this._repeat(null,-1,t),!0;case s.PAGE_UP:return this._repeat(null,i.page,t),!0;case s.PAGE_DOWN:return this._repeat(null,-i.page,t),!0}return!1},_uiSpinnerHtml:function(){return"<span class='ui-spinner ui-widget ui-widget-content ui-corner-all'></span>"},_buttonHtml:function(){return"<a class='ui-spinner-button ui-spinner-up ui-corner-tr'><span class='ui-icon "+this.options.icons.up+"'>▲</span>"+"</a>"+"<a class='ui-spinner-button ui-spinner-down ui-corner-br'>"+"<span class='ui-icon "+this.options.icons.down+"'>▼</span>"+"</a>"},_start:function(e){return this.spinning||this._trigger("start",e)!==!1?(this.counter||(this.counter=1),this.spinning=!0,!0):!1},_repeat:function(e,t,i){e=e||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,t,i)},e),this._spin(t*this.options.step,i)},_spin:function(e,t){var i=this.value()||0;this.counter||(this.counter=1),i=this._adjustValue(i+e*this._increment(this.counter)),this.spinning&&this._trigger("spin",t,{value:i})===!1||(this._value(i),this.counter++)},_increment:function(t){var i=this.options.incremental;return i?e.isFunction(i)?i(t):Math.floor(t*t*t/5e4-t*t/500+17*t/200+1):1},_precision:function(){var e=this._precisionOf(this.options.step);return null!==this.options.min&&(e=Math.max(e,this._precisionOf(this.options.min))),e},_precisionOf:function(e){var t=""+e,i=t.indexOf(".");return-1===i?0:t.length-i-1},_adjustValue:function(e){var t,i,s=this.options;return t=null!==s.min?s.min:0,i=e-t,i=Math.round(i/s.step)*s.step,e=t+i,e=parseFloat(e.toFixed(this._precision())),null!==s.max&&e>s.max?s.max:null!==s.min&&s.min>e?s.min:e},_stop:function(e){this.spinning&&(clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",e))},_setOption:function(e,t){if("culture"===e||"numberFormat"===e){var i=this._parse(this.element.val());return this.options[e]=t,this.element.val(this._format(i)),void 0}("max"===e||"min"===e||"step"===e)&&"string"==typeof t&&(t=this._parse(t)),"icons"===e&&(this.buttons.first().find(".ui-icon").removeClass(this.options.icons.up).addClass(t.up),this.buttons.last().find(".ui-icon").removeClass(this.options.icons.down).addClass(t.down)),this._super(e,t),"disabled"===e&&(this.widget().toggleClass("ui-state-disabled",!!t),this.element.prop("disabled",!!t),this.buttons.button(t?"disable":"enable"))},_setOptions:h(function(e){this._super(e)}),_parse:function(e){return"string"==typeof e&&""!==e&&(e=window.Globalize&&this.options.numberFormat?Globalize.parseFloat(e,10,this.options.culture):+e),""===e||isNaN(e)?null:e},_format:function(e){return""===e?"":window.Globalize&&this.options.numberFormat?Globalize.format(e,this.options.numberFormat,this.options.culture):e},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},isValid:function(){var e=this.value();return null===e?!1:e===this._adjustValue(e)},_value:function(e,t){var i;""!==e&&(i=this._parse(e),null!==i&&(t||(i=this._adjustValue(i)),e=this._format(i))),this.element.val(e),this._refresh()},_destroy:function(){this.element.removeClass("ui-spinner-input").prop("disabled",!1).removeAttr("autocomplete").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:h(function(e){this._stepUp(e)}),_stepUp:function(e){this._start()&&(this._spin((e||1)*this.options.step),this._stop())},stepDown:h(function(e){this._stepDown(e)}),_stepDown:function(e){this._start()&&(this._spin((e||1)*-this.options.step),this._stop())},pageUp:h(function(e){this._stepUp((e||1)*this.options.page)}),pageDown:h(function(e){this._stepDown((e||1)*this.options.page)}),value:function(e){return arguments.length?(h(this._value).call(this,e),void 0):this._parse(this.element.val())},widget:function(){return this.uiSpinner}}),e.widget("ui.tabs",{version:"1.11.4",delay:300,options:{active:null,collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:function(){var e=/#.*$/;return function(t){var i,s;t=t.cloneNode(!1),i=t.href.replace(e,""),s=location.href.replace(e,"");try{i=decodeURIComponent(i)}catch(n){}try{s=decodeURIComponent(s)}catch(n){}return t.hash.length>1&&i===s}}(),_create:function(){var t=this,i=this.options;this.running=!1,this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all").toggleClass("ui-tabs-collapsible",i.collapsible),this._processTabs(),i.active=this._initialActive(),e.isArray(i.disabled)&&(i.disabled=e.unique(i.disabled.concat(e.map(this.tabs.filter(".ui-state-disabled"),function(e){return t.tabs.index(e)}))).sort()),this.active=this.options.active!==!1&&this.anchors.length?this._findActive(i.active):e(),this._refresh(),this.active.length&&this.load(i.active)},_initialActive:function(){var t=this.options.active,i=this.options.collapsible,s=location.hash.substring(1);return null===t&&(s&&this.tabs.each(function(i,n){return e(n).attr("aria-controls")===s?(t=i,!1):void 0}),null===t&&(t=this.tabs.index(this.tabs.filter(".ui-tabs-active"))),(null===t||-1===t)&&(t=this.tabs.length?0:!1)),t!==!1&&(t=this.tabs.index(this.tabs.eq(t)),-1===t&&(t=i?!1:0)),!i&&t===!1&&this.anchors.length&&(t=0),t},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):e()}},_tabKeydown:function(t){var i=e(this.document[0].activeElement).closest("li"),s=this.tabs.index(i),n=!0;if(!this._handlePageNav(t)){switch(t.keyCode){case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:s++;break;case e.ui.keyCode.UP:case e.ui.keyCode.LEFT:n=!1,s--;break;case e.ui.keyCode.END:s=this.anchors.length-1;break;case e.ui.keyCode.HOME:s=0;break;case e.ui.keyCode.SPACE:return t.preventDefault(),clearTimeout(this.activating),this._activate(s),void 0;case e.ui.keyCode.ENTER:return t.preventDefault(),clearTimeout(this.activating),this._activate(s===this.options.active?!1:s),void 0;default:return}t.preventDefault(),clearTimeout(this.activating),s=this._focusNextTab(s,n),t.ctrlKey||t.metaKey||(i.attr("aria-selected","false"),this.tabs.eq(s).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",s)},this.delay))}},_panelKeydown:function(t){this._handlePageNav(t)||t.ctrlKey&&t.keyCode===e.ui.keyCode.UP&&(t.preventDefault(),this.active.focus())},_handlePageNav:function(t){return t.altKey&&t.keyCode===e.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):t.altKey&&t.keyCode===e.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):void 0},_findNextTab:function(t,i){function s(){return t>n&&(t=0),0>t&&(t=n),t}for(var n=this.tabs.length-1;-1!==e.inArray(s(),this.options.disabled);)t=i?t+1:t-1;return t},_focusNextTab:function(e,t){return e=this._findNextTab(e,t),this.tabs.eq(e).focus(),e},_setOption:function(e,t){return"active"===e?(this._activate(t),void 0):"disabled"===e?(this._setupDisabled(t),void 0):(this._super(e,t),"collapsible"===e&&(this.element.toggleClass("ui-tabs-collapsible",t),t||this.options.active!==!1||this._activate(0)),"event"===e&&this._setupEvents(t),"heightStyle"===e&&this._setupHeightStyle(t),void 0)},_sanitizeSelector:function(e){return e?e.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var t=this.options,i=this.tablist.children(":has(a[href])");t.disabled=e.map(i.filter(".ui-state-disabled"),function(e){return i.index(e)}),this._processTabs(),t.active!==!1&&this.anchors.length?this.active.length&&!e.contains(this.tablist[0],this.active[0])?this.tabs.length===t.disabled.length?(t.active=!1,this.active=e()):this._activate(this._findNextTab(Math.max(0,t.active-1),!1)):t.active=this.tabs.index(this.active):(t.active=!1,this.active=e()),this._refresh()},_refresh:function(){this._setupDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-hidden":"true"}),this.active.length?(this.active.addClass("ui-tabs-active ui-state-active").attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}),this._getPanelForTab(this.active).show().attr({"aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var t=this,i=this.tabs,s=this.anchors,n=this.panels; -this.tablist=this._getList().addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").attr("role","tablist").delegate("> li","mousedown"+this.eventNamespace,function(t){e(this).is(".ui-state-disabled")&&t.preventDefault()}).delegate(".ui-tabs-anchor","focus"+this.eventNamespace,function(){e(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this.tabs=this.tablist.find("> li:has(a[href])").addClass("ui-state-default ui-corner-top").attr({role:"tab",tabIndex:-1}),this.anchors=this.tabs.map(function(){return e("a",this)[0]}).addClass("ui-tabs-anchor").attr({role:"presentation",tabIndex:-1}),this.panels=e(),this.anchors.each(function(i,s){var n,a,o,r=e(s).uniqueId().attr("id"),h=e(s).closest("li"),l=h.attr("aria-controls");t._isLocal(s)?(n=s.hash,o=n.substring(1),a=t.element.find(t._sanitizeSelector(n))):(o=h.attr("aria-controls")||e({}).uniqueId()[0].id,n="#"+o,a=t.element.find(n),a.length||(a=t._createPanel(o),a.insertAfter(t.panels[i-1]||t.tablist)),a.attr("aria-live","polite")),a.length&&(t.panels=t.panels.add(a)),l&&h.data("ui-tabs-aria-controls",l),h.attr({"aria-controls":o,"aria-labelledby":r}),a.attr("aria-labelledby",r)}),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").attr("role","tabpanel"),i&&(this._off(i.not(this.tabs)),this._off(s.not(this.anchors)),this._off(n.not(this.panels)))},_getList:function(){return this.tablist||this.element.find("ol,ul").eq(0)},_createPanel:function(t){return e("<div>").attr("id",t).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").data("ui-tabs-destroy",!0)},_setupDisabled:function(t){e.isArray(t)&&(t.length?t.length===this.anchors.length&&(t=!0):t=!1);for(var i,s=0;i=this.tabs[s];s++)t===!0||-1!==e.inArray(s,t)?e(i).addClass("ui-state-disabled").attr("aria-disabled","true"):e(i).removeClass("ui-state-disabled").removeAttr("aria-disabled");this.options.disabled=t},_setupEvents:function(t){var i={};t&&e.each(t.split(" "),function(e,t){i[t]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(e){e.preventDefault()}}),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(t){var i,s=this.element.parent();"fill"===t?(i=s.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var t=e(this),s=t.css("position");"absolute"!==s&&"fixed"!==s&&(i-=t.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=e(this).outerHeight(!0)}),this.panels.each(function(){e(this).height(Math.max(0,i-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):"auto"===t&&(i=0,this.panels.each(function(){i=Math.max(i,e(this).height("").height())}).height(i))},_eventHandler:function(t){var i=this.options,s=this.active,n=e(t.currentTarget),a=n.closest("li"),o=a[0]===s[0],r=o&&i.collapsible,h=r?e():this._getPanelForTab(a),l=s.length?this._getPanelForTab(s):e(),u={oldTab:s,oldPanel:l,newTab:r?e():a,newPanel:h};t.preventDefault(),a.hasClass("ui-state-disabled")||a.hasClass("ui-tabs-loading")||this.running||o&&!i.collapsible||this._trigger("beforeActivate",t,u)===!1||(i.active=r?!1:this.tabs.index(a),this.active=o?e():a,this.xhr&&this.xhr.abort(),l.length||h.length||e.error("jQuery UI Tabs: Mismatching fragment identifier."),h.length&&this.load(this.tabs.index(a),t),this._toggle(t,u))},_toggle:function(t,i){function s(){a.running=!1,a._trigger("activate",t,i)}function n(){i.newTab.closest("li").addClass("ui-tabs-active ui-state-active"),o.length&&a.options.show?a._show(o,a.options.show,s):(o.show(),s())}var a=this,o=i.newPanel,r=i.oldPanel;this.running=!0,r.length&&this.options.hide?this._hide(r,this.options.hide,function(){i.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),n()}):(i.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),r.hide(),n()),r.attr("aria-hidden","true"),i.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),o.length&&r.length?i.oldTab.attr("tabIndex",-1):o.length&&this.tabs.filter(function(){return 0===e(this).attr("tabIndex")}).attr("tabIndex",-1),o.attr("aria-hidden","false"),i.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(t){var i,s=this._findActive(t);s[0]!==this.active[0]&&(s.length||(s=this.active),i=s.find(".ui-tabs-anchor")[0],this._eventHandler({target:i,currentTarget:i,preventDefault:e.noop}))},_findActive:function(t){return t===!1?e():this.tabs.eq(t)},_getIndex:function(e){return"string"==typeof e&&(e=this.anchors.index(this.anchors.filter("[href$='"+e+"']"))),e},_destroy:function(){this.xhr&&this.xhr.abort(),this.element.removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible"),this.tablist.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").removeAttr("role"),this.anchors.removeClass("ui-tabs-anchor").removeAttr("role").removeAttr("tabIndex").removeUniqueId(),this.tablist.unbind(this.eventNamespace),this.tabs.add(this.panels).each(function(){e.data(this,"ui-tabs-destroy")?e(this).remove():e(this).removeClass("ui-state-default ui-state-active ui-state-disabled ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel").removeAttr("tabIndex").removeAttr("aria-live").removeAttr("aria-busy").removeAttr("aria-selected").removeAttr("aria-labelledby").removeAttr("aria-hidden").removeAttr("aria-expanded").removeAttr("role")}),this.tabs.each(function(){var t=e(this),i=t.data("ui-tabs-aria-controls");i?t.attr("aria-controls",i).removeData("ui-tabs-aria-controls"):t.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(t){var i=this.options.disabled;i!==!1&&(void 0===t?i=!1:(t=this._getIndex(t),i=e.isArray(i)?e.map(i,function(e){return e!==t?e:null}):e.map(this.tabs,function(e,i){return i!==t?i:null})),this._setupDisabled(i))},disable:function(t){var i=this.options.disabled;if(i!==!0){if(void 0===t)i=!0;else{if(t=this._getIndex(t),-1!==e.inArray(t,i))return;i=e.isArray(i)?e.merge([t],i).sort():[t]}this._setupDisabled(i)}},load:function(t,i){t=this._getIndex(t);var s=this,n=this.tabs.eq(t),a=n.find(".ui-tabs-anchor"),o=this._getPanelForTab(n),r={tab:n,panel:o},h=function(e,t){"abort"===t&&s.panels.stop(!1,!0),n.removeClass("ui-tabs-loading"),o.removeAttr("aria-busy"),e===s.xhr&&delete s.xhr};this._isLocal(a[0])||(this.xhr=e.ajax(this._ajaxSettings(a,i,r)),this.xhr&&"canceled"!==this.xhr.statusText&&(n.addClass("ui-tabs-loading"),o.attr("aria-busy","true"),this.xhr.done(function(e,t,n){setTimeout(function(){o.html(e),s._trigger("load",i,r),h(n,t)},1)}).fail(function(e,t){setTimeout(function(){h(e,t)},1)})))},_ajaxSettings:function(t,i,s){var n=this;return{url:t.attr("href"),beforeSend:function(t,a){return n._trigger("beforeLoad",i,e.extend({jqXHR:t,ajaxSettings:a},s))}}},_getPanelForTab:function(t){var i=e(t).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+i))}}),e.widget("ui.tooltip",{version:"1.11.4",options:{content:function(){var t=e(this).attr("title")||"";return e("<a>").text(t).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,tooltipClass:null,track:!1,close:null,open:null},_addDescribedBy:function(t,i){var s=(t.attr("aria-describedby")||"").split(/\s+/);s.push(i),t.data("ui-tooltip-id",i).attr("aria-describedby",e.trim(s.join(" ")))},_removeDescribedBy:function(t){var i=t.data("ui-tooltip-id"),s=(t.attr("aria-describedby")||"").split(/\s+/),n=e.inArray(i,s);-1!==n&&s.splice(n,1),t.removeData("ui-tooltip-id"),s=e.trim(s.join(" ")),s?t.attr("aria-describedby",s):t.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.options.disabled&&this._disable(),this.liveRegion=e("<div>").attr({role:"log","aria-live":"assertive","aria-relevant":"additions"}).addClass("ui-helper-hidden-accessible").appendTo(this.document[0].body)},_setOption:function(t,i){var s=this;return"disabled"===t?(this[i?"_disable":"_enable"](),this.options[t]=i,void 0):(this._super(t,i),"content"===t&&e.each(this.tooltips,function(e,t){s._updateContent(t.element)}),void 0)},_disable:function(){var t=this;e.each(this.tooltips,function(i,s){var n=e.Event("blur");n.target=n.currentTarget=s.element[0],t.close(n,!0)}),this.element.find(this.options.items).addBack().each(function(){var t=e(this);t.is("[title]")&&t.data("ui-tooltip-title",t.attr("title")).removeAttr("title")})},_enable:function(){this.element.find(this.options.items).addBack().each(function(){var t=e(this);t.data("ui-tooltip-title")&&t.attr("title",t.data("ui-tooltip-title"))})},open:function(t){var i=this,s=e(t?t.target:this.element).closest(this.options.items);s.length&&!s.data("ui-tooltip-id")&&(s.attr("title")&&s.data("ui-tooltip-title",s.attr("title")),s.data("ui-tooltip-open",!0),t&&"mouseover"===t.type&&s.parents().each(function(){var t,s=e(this);s.data("ui-tooltip-open")&&(t=e.Event("blur"),t.target=t.currentTarget=this,i.close(t,!0)),s.attr("title")&&(s.uniqueId(),i.parents[this.id]={element:this,title:s.attr("title")},s.attr("title",""))}),this._registerCloseHandlers(t,s),this._updateContent(s,t))},_updateContent:function(e,t){var i,s=this.options.content,n=this,a=t?t.type:null;return"string"==typeof s?this._open(t,e,s):(i=s.call(e[0],function(i){n._delay(function(){e.data("ui-tooltip-open")&&(t&&(t.type=a),this._open(t,e,i))})}),i&&this._open(t,e,i),void 0)},_open:function(t,i,s){function n(e){l.of=e,o.is(":hidden")||o.position(l)}var a,o,r,h,l=e.extend({},this.options.position);if(s){if(a=this._find(i))return a.tooltip.find(".ui-tooltip-content").html(s),void 0;i.is("[title]")&&(t&&"mouseover"===t.type?i.attr("title",""):i.removeAttr("title")),a=this._tooltip(i),o=a.tooltip,this._addDescribedBy(i,o.attr("id")),o.find(".ui-tooltip-content").html(s),this.liveRegion.children().hide(),s.clone?(h=s.clone(),h.removeAttr("id").find("[id]").removeAttr("id")):h=s,e("<div>").html(h).appendTo(this.liveRegion),this.options.track&&t&&/^mouse/.test(t.type)?(this._on(this.document,{mousemove:n}),n(t)):o.position(e.extend({of:i},this.options.position)),o.hide(),this._show(o,this.options.show),this.options.show&&this.options.show.delay&&(r=this.delayedShow=setInterval(function(){o.is(":visible")&&(n(l.of),clearInterval(r))},e.fx.interval)),this._trigger("open",t,{tooltip:o})}},_registerCloseHandlers:function(t,i){var s={keyup:function(t){if(t.keyCode===e.ui.keyCode.ESCAPE){var s=e.Event(t);s.currentTarget=i[0],this.close(s,!0)}}};i[0]!==this.element[0]&&(s.remove=function(){this._removeTooltip(this._find(i).tooltip)}),t&&"mouseover"!==t.type||(s.mouseleave="close"),t&&"focusin"!==t.type||(s.focusout="close"),this._on(!0,i,s)},close:function(t){var i,s=this,n=e(t?t.currentTarget:this.element),a=this._find(n);return a?(i=a.tooltip,a.closing||(clearInterval(this.delayedShow),n.data("ui-tooltip-title")&&!n.attr("title")&&n.attr("title",n.data("ui-tooltip-title")),this._removeDescribedBy(n),a.hiding=!0,i.stop(!0),this._hide(i,this.options.hide,function(){s._removeTooltip(e(this))}),n.removeData("ui-tooltip-open"),this._off(n,"mouseleave focusout keyup"),n[0]!==this.element[0]&&this._off(n,"remove"),this._off(this.document,"mousemove"),t&&"mouseleave"===t.type&&e.each(this.parents,function(t,i){e(i.element).attr("title",i.title),delete s.parents[t]}),a.closing=!0,this._trigger("close",t,{tooltip:i}),a.hiding||(a.closing=!1)),void 0):(n.removeData("ui-tooltip-open"),void 0)},_tooltip:function(t){var i=e("<div>").attr("role","tooltip").addClass("ui-tooltip ui-widget ui-corner-all ui-widget-content "+(this.options.tooltipClass||"")),s=i.uniqueId().attr("id");return e("<div>").addClass("ui-tooltip-content").appendTo(i),i.appendTo(this.document[0].body),this.tooltips[s]={element:t,tooltip:i}},_find:function(e){var t=e.data("ui-tooltip-id");return t?this.tooltips[t]:null},_removeTooltip:function(e){e.remove(),delete this.tooltips[e.attr("id")]},_destroy:function(){var t=this;e.each(this.tooltips,function(i,s){var n=e.Event("blur"),a=s.element;n.target=n.currentTarget=a[0],t.close(n,!0),e("#"+i).remove(),a.data("ui-tooltip-title")&&(a.attr("title")||a.attr("title",a.data("ui-tooltip-title")),a.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}})}); diff --git a/lib/Sails/Routing.php b/lib/Sails/Routing.php index 4c4759e..64f196b 100644 --- a/lib/Sails/Routing.php +++ b/lib/Sails/Routing.php @@ -157,33 +157,59 @@ class Sails_Routing { $pageId = (!empty($p)) ? implode('/', $p) : false; if (!$pageId) handleSailsError(404, "Page Not Found"); } elseif ($module == 'catalog' && $controller == 'product' && $action == 'view' && $doProductWithNode && $version != 'mage') { + //} elseif ($module == 'catalog' && $controller == 'product' && $action == 'view' && $doProductWithNode && $version == '2') { + $page = 'product'; $productId = $productId = (isset($p[4]) && $p[4] != '')?$p[4]:false; $productId = (isset($p[4]) && $p[4] != '')?$p[4]:false; if(!$productId) handleSailsError(404, "Product Not Found"); } - + + + // AB testing code starts; + $abTestValues = array(0,1,0,2,0,1,0,2,0,1,0,0,0,2,0,2,0,1,0,0); + $abTestValue = 0; + $abTestCurrentValue = $abTestValues[$abTestValue]; + $cookieName = 'ab_product_29-07-2015'; + $cookieLifeTime = time() + (86400 * 30); + $abTestCookieValue = $_COOKIE[$cookieName]; + if(trim($abTestCookieValue) != '' && $abTestCookieValue != null){ + $abTestCurrentValue = $abTestCookieValue; + }else{ + $abTestFile = 'abtestvalue.txt'; + if(is_file($abTestFile)){ + $abTestLastValue = file_get_contents($abTestFile); + if( ($abTestLastValue + 1) == sizeof($abTestValues) ){ + $abTestValue = 0; + }else{ + $abTestValue = $abTestLastValue+1; + } + $abTestCurrentValue = $abTestValues[$abTestValue]; + } + file_put_contents($abTestFile , $abTestValue); + setcookie($cookieName,$abTestCurrentValue,$cookieLifeTime); //cookie set for 30 day + } + // AB testing code ends; + $url = null; switch ($page) { case 'homepage': $url = $sailsUrl; break; case 'product': - $url = $sailsUrl . '/product/' . $productId; + $url = $sailsUrl . '/product/' . $productId."?abvariant=".$abTestCurrentValue; break; case 'cmspage': $url = $sailsUrl . '/' . $pageId; break; - case 'catalogsearch': - $url = $sailsUrl . '/catalogsearch/?' . $queryParams; - break; - case 'catalogcategory': - $url = $sailsUrl . '/catalogcategory/' . $catId . '/?' . $catQueryParams; default: } //Mage::log('Sails URL : ' . $url, Zend_Log::CRIT, 'sailsapp.log'); if ($page != 'none') { + + + //Create Magento Session //Mage::getSingleton('core/session', array('name' => 'frontend')); Mage::getSingleton('core/session', array('name' => 'frontend'))->setData('re_link', Mage::helper('core/url')->getCurrentUrl()); @@ -194,20 +220,11 @@ class Sails_Routing { Mage::log('Sails URL after Session: ' . $url, Zend_Log::INFO, 'sailsapp.log'); $cookie_data= ''; - $cookie_data_array = array(); if(isset($_COOKIE['frontend'])) { - $cookie_data_array[] = "frontend=".$_COOKIE['frontend']; + $cookie_data = "frontend=".$_COOKIE['frontend']; } else { Mage::log('Frontend Cookie not found. All Cookies: ' . print_r($_COOKIE,true), Zend_Log::ERR, 'sailsapp.log'); } - // PLEASE NOTE : we have replace dot(.) with underscore(_) in the cookie "unbxd.userId" as PHP replaces dot(.) with underscore(_) in cookie name - if(isset($_COOKIE['unbxd_userId']) ) { - $cookie_data_array[] = "unbxd.userId=".$_COOKIE['unbxd_userId']; - } else { - Mage::log('unbxd.userId Cookie not found. All Cookies: ' . print_r($_COOKIE,true), Zend_Log::ERR, 'sailsapp.log'); - } - $cookie_data = implode(";", $cookie_data_array); - // create curl resource $ch = curl_init(); diff --git a/miniOrderReport.php b/miniOrderReport.php index 6ce6efe..a38c10b 100755 --- a/miniOrderReport.php +++ b/miniOrderReport.php @@ -26,7 +26,7 @@ $orders->addAttributeToFilter('state', array('new', 'processing')); $outputFile = Mage::getBaseDir('var').'/export/miniOrderReport.csv'; $write = fopen($outputFile,"w"); -$heads = array("order_date","order_time","order_status","Item_no","order_no","item_status","old_sku","qty","tolexo_base_price","tax_percent","tax_amount","shipping_amount","final_selling_price_per_unit","grand_total","product_id","qty_reorder","new_sku","custom_price_per_unit"); +$heads = array("order_date","order_time","order_status","Item_no","order_no","item_status","old_sku","qty","tolexo_base_price","tax_percent","tax_amount","shipping_amount","final_selling_price_per_unit","grand_total","product_id","new_sku","custom_price_per_unit"); fputcsv($write,$heads); foreach($orders as $order) { @@ -66,7 +66,6 @@ foreach($orders as $order) { $product_p = $item->getName(); $qty = $item->getQtyOrdered(); - $qty_to_reorder = $item->getQtyToCancel(); // $purchase_price = $item->getBasePrice(); //base_price $sql = "SELECT value from catalog_product_entity_varchar where entity_id = '".$productId."' and attribute_id = '501'"; @@ -89,7 +88,7 @@ foreach($orders as $order) { $row = $readConnection->fetchRow($sql); $tolexo_base_price = $row['tolexo_base_price']; - $productInfo = array($orderDate,$orderTime,$order_status,$ItemId,$orderNo,$item_status,$product_num,$qty,$tolexo_base_price,$taxpercent,$tax,$shipping_charges,$finalSellingPricePerUnit,$grand_total,$productId,$qty_to_reorder,'',''); + $productInfo = array($orderDate,$orderTime,$order_status,$ItemId,$orderNo,$item_status,$product_num,$qty,$tolexo_base_price,$taxpercent,$tax,$shipping_charges,$finalSellingPricePerUnit,$grand_total,$productId,'',''); fputcsv($write,$productInfo); } diff --git a/mobileapi/api_app_session.php b/mobileapi/api_app_session.php index 2088469..81ba16c 100644 --- a/mobileapi/api_app_session.php +++ b/mobileapi/api_app_session.php @@ -19,18 +19,6 @@ if(Mage::app()->getRequest()->getParam('route') == "rest/web_api/getappsession") echo json_encode($response); exit(); } -} else if(Mage::app()->getRequest()->getParam('route') == "rest/web_api/checksession") { - $appSession = (isset($_GET['app_session'])) ? $_GET['app_session'] : $_POST['app_session']; - $timestamp = (isset($_GET['timestamp'])) ? $_GET['timestamp'] : $_POST['timestamp']; - $hash = (isset($_GET['hash'])) ? $_GET['hash'] : $_POST['hash']; - - $authCustomer = new AuthCustomer($appSession, null, null); - $isValid = $authCustomer->isAppSessionValid(); - - $response['status'] = 200; - $response['session'] = $isValid; - echo json_encode($response); - exit(); } else{ diff --git a/mobileapi/api_cart.php b/mobileapi/api_cart.php index b6b3230..bf5f06f 100644 --- a/mobileapi/api_cart.php +++ b/mobileapi/api_cart.php @@ -5,7 +5,7 @@ require_once("auth.php"); Mage::app(); -if (!$BY_PASS_AUTHENTICATION && !isset($_APP_SESSION_INFO)) +if (!isset($_APP_SESSION_INFO)) exit(); $customerid = (isset($_APP_SESSION_INFO['customer_id'])) ? $_APP_SESSION_INFO['customer_id'] : 0; @@ -16,10 +16,7 @@ if ($quote_id != "") $quote_id = decryptQuoteId($quote_id); //die; -if($INTERNAL_FUNCTION_CALL) { - - //do nothing for internal function calls -}else if (Mage::app()->getRequest()->getParam('route') == "rest/web_api/updatecart") { +if (Mage::app()->getRequest()->getParam('route') == "rest/web_api/updatecart") { $productid = Mage::app()->getRequest()->getParam('productid'); $qty = Mage::app()->getRequest()->getParam('qty'); @@ -46,7 +43,9 @@ if($INTERNAL_FUNCTION_CALL) { } elseif (Mage::app()->getRequest()->getParam('route') == "rest/web_api/cartskuinfo") { - print_r(json_encode(CartSKUnfo($customerid, $quote_id, false))); + $infoskucart = json_decode(Mage::app()->getRequest()->getParam('infoskucart')); + print_r(json_encode(CartSKUnfo($customerid, $infoskucart, $quote_id))); + } elseif (Mage::app()->getRequest()->getParam('route') == "rest/web_api/removecartitem") { @@ -93,6 +92,7 @@ if($INTERNAL_FUNCTION_CALL) { } else { + header("HTTP/1.0 404 Not Found"); } @@ -409,7 +409,8 @@ function whishListProductDetails($product_id) { return $json; } -function CartSKUnfo($customer_id, $quote_id, $showGuestShippingCharges = true) { +function CartSKUnfo($customer_id, $infoskucart, $quote_id) { + $shipping = 0; #$customer_email = $email; @@ -450,10 +451,7 @@ function CartSKUnfo($customer_id, $quote_id, $showGuestShippingCharges = true) { $product = Mage::getModel('catalog/product')->load($product->getId()); $stock = $product->getStockItem()->getIsInStock(); $is_active = $product->getStatus(); - $maxQty = $product->getStockItem()->getMaxSaleQty(); - $stockQty = (int)$product->getStockItem()->getQty(); - $manageStock = (int)$product->getStockItem()->getManageStock(); - $minQty = (int)$product->getStockItem()->getMinSaleQty(); + if ($product->isAvailable()): if (intval($stock) > 0) { @@ -473,13 +471,11 @@ function CartSKUnfo($customer_id, $quote_id, $showGuestShippingCharges = true) { 'in_stock' => (int) $in_stock, 'is_active' => $is_active, 'available_qty' => $qty, - 'product_details' => $productDetails, - 'max_qty' => $maxQty, - 'stock_qty' => $stockQty, - 'manage_stock' => $manageStock, - 'min_qty' => $minQty + 'product_details' => $productDetails ); + + $i++; } @@ -530,10 +526,6 @@ function CartSKUnfo($customer_id, $quote_id, $showGuestShippingCharges = true) { $stock = $product->getStockItem()->getIsInStock(); $is_active = $product->getStatus(); $productDetails = whishListProductDetails($item->getProductId()); - $maxQty = $product->getStockItem()->getMaxSaleQty(); - $stockQty = (int)$product->getStockItem()->getQty(); - $manageStock = (int)$product->getStockItem()->getManageStock(); - $minQty = (int)$product->getStockItem()->getMinSaleQty(); if ($product->isAvailable()): if (intval($stock) > 0) { @@ -554,11 +546,7 @@ function CartSKUnfo($customer_id, $quote_id, $showGuestShippingCharges = true) { 'in_stock' => (int) $in_stock, 'is_active' => $is_active, 'available_qty' => $qty, - 'product_details' => $productDetails, - 'max_qty' => $maxQty, - 'stock_qty' => $stockQty, - 'manage_stock' => $manageStock, - 'min_qty' => $minQty + 'product_details' => $productDetails ); $i++; @@ -570,9 +558,6 @@ function CartSKUnfo($customer_id, $quote_id, $showGuestShippingCharges = true) { $productsResult['discount_amount'] = $discountAmount; $productsResult['coupon_code'] = $coupon_code; - if($showGuestShippingCharges) //show shipping charges for guest user - $shipping = round($quote->getShippingAddress()->getData('shipping_amount')); - $productsResult['shipping'] = round($shipping); $productsResult['sub_total'] = round($quote->getSubtotal()); $productsResult['tax'] = round($totalTax); diff --git a/mobileapi/api_order_tag.php b/mobileapi/api_order_tag.php deleted file mode 100644 index 1ddb74b..0000000 --- a/mobileapi/api_order_tag.php +++ /dev/null @@ -1,340 +0,0 @@ -<?php -// require_once ("common.php"); -// require_once ("auth.php"); -require_once ('../app/Mage.php'); - -Mage::app(); - -class Tolexo_OrderTag -{ - - private $writeConnection; - - private $readConnection; - - private $parameters; - - private $listGetPara; - - private $listPostPara; - - private $orderData; - - function __construct($listParam = array()) - { - $this->parameters = $listParam; - $resource = Mage::getSingleton('core/resource'); - $this->readConnection = $resource->getConnection('core_read'); - $this->writeConnection = $resource->getConnection('core_write'); - $this->listGetPara = $_GET; - $this->listPostPara = $_POST; - $this->orderData = file_get_contents("php://input"); - } - - public function fetchGetParams($key, $default = '') - { - return isset($this->listGetPara[$key]) ? $this->listGetPara[$key] : $default; - } - - public function fetchPostParams($key, $default = '') - { - return isset($this->listPostPara[$key]) ? $this->listPostPara[$key] : $default; - } - - public function run() - { - $route = $this->fetchGetParams('route'); - switch ($route) { - case "rest/web_api/updateOrderTags": - - $tagableOrders = array(); - $updatedIds = array(); - $succes = false; - - $orders = $this->orderData; - $orders = json_decode($orders, true); - - if (! empty($orders)) { - $tagableOrders = $this->fetchOrdersForTag($orders); - $succes = $this->updateOrderTags($tagableOrders); - if ($succes) { - $updatedQueueIds = $this->updateOrdersInQueue($orders); - } - } - echo json_encode($updatedQueueIds); - break; - } - - return true; - } - - public function fetchOrdersForTag($orders) - { - $tagableOrders = array(); - foreach ($orders as $order) { - $orderData = json_decode($order['order_data'], true); - if ($orderData['state'] == 'new') { - $tagableOrders[$orderData['entity_id']] = $orderData; - } - } - - return $tagableOrders; - } - - public function updateOrdersInQueue($orders) - { - foreach ($orders as $order) { - $queueIds[] = (int) $order['id']; - } - $queueIdsString = implode(',', $queueIds); - - $sql = "UPDATE sales_order_queue SET tag_order = '1' - WHERE id IN ($queueIdsString);"; - $this->writeConnection->query($sql); - - return $queueIds; - } - - public function updateOrderTags($orders) - { - $startTime = new DateTime(date("Y:m:d h:i:s")); - $startTime->setTimezone(new DateTimeZone('Asia/Calcutta')); - $logArray = array( - 'functionName' => __FUNCTION__, - 'startTime' => $startTime->format('Y-m-d H:i:s'), - 'startTimeObj' => $startTime, - 'ordersUpdatedCount' => 0 - ); - - try { - $ordersString = implode(',', array_keys($orders)); - $utmSource = array(); - - $sql = "SELECT sfo_1.`status` as parent_status, sfo.entity_id, sfo.relation_parent_id - FROM sales_flat_order sfo - LEFT JOIN sales_flat_order sfo_1 - ON sfo_1.entity_id = sfo.relation_parent_id - WHERE sfo.entity_id IN ($ordersString);"; - - $orderRows = $this->readConnection->fetchAll($sql); - - $splittedOrderArr = array(); - $normalOrderArr = array(); - $tagArr = array(); - foreach ($orderRows as $orderRow) { - if ($orderRow['parent_status'] == 'cancel_split_order') { - $splittedOrderArr[$orderRow['entity_id']] = $orderRow['relation_parent_id']; - $normalOrderArr[$orderRow['relation_parent_id']] = $orderRow['relation_parent_id']; - } else { - $normalOrderArr[$orderRow['entity_id']] = $orderRow['entity_id']; - } - } - - // **************************************PROCESSING FOR NORMAL ORDERS***************************************// - - if (! empty($normalOrderArr)) { - $normalOrdersString = implode(',', $normalOrderArr); - - // Corporate User Ids - $adminUserIds = Mage::getStoreConfig('ordertag/general/corporate_users'); - $adminUserIds = array_map('intval', explode(',', $adminUserIds)); - - // Telesales User Ids - $telesalesUserIds = Mage::getStoreConfig('ordertag/general/telesales_users'); - $telesalesUserIds = array_map('intval', explode(',', $telesalesUserIds)); - - // Telesales User's Ipaddresses - $telesalesUserIpAddrs = Mage::getStoreConfig('ordertag/general/telesales_users_ip'); - $telesalesUserIpAddrs = explode(',', $telesalesUserIpAddrs); - - // Get Ids from sales_flat_order_tag_master - - $sql = "SELECT tag_id, tag_name FROM sales_flat_order_tag_master"; - - $tagRows = $this->readConnection->fetchAll($sql); - foreach ($tagRows as $tag) { - $tagArr[$tag['tag_name']] = $tag['tag_id']; - } - - // Get orders, which are not processed for order tagging - $q = "SELECT sfo.entity_id AS order_id, - CASE - WHEN LOCATE('delivered', GROUP_CONCAT(sfo_1.status)) THEN 'repeat-a' - WHEN GROUP_CONCAT(sfo_1.status) <> '' THEN 'repeat' - END AS `repeat`, - IF(LOCATE('-R', sfo.increment_id), 'alternate', NULL) AS alternate, - sfq.orig_order_id, - sfo.purchase_from, - sfo.customer_email, - sfo.status, - sfoa.telephone, - sfo.relation_parent_id, - sfo.increment_id, - sfoi.utm_source - FROM sales_flat_order sfo - INNER JOIN sales_flat_order_address sfoa - ON sfo.entity_id=sfoa.parent_id - LEFT JOIN sales_flat_order_address sfoa_1 - ON (sfoa.email=sfoa_1.email OR sfoa.telephone=sfoa_1.telephone) AND sfoa_1.parent_id < sfo.entity_id - AND sfoa_1.address_type = 'billing' - LEFT JOIN sales_flat_quote sfq - ON sfo.quote_id=sfq.entity_id - LEFT JOIN sales_flat_order AS sfo_1 - ON sfoa_1.parent_id = sfo_1.entity_id - LEFT JOIN sales_flat_order_info AS sfoi - ON sfo.entity_id = sfoi.order_id - WHERE sfoa.address_type='billing' - AND sfo.entity_id IN ($normalOrdersString) - GROUP BY sfo.entity_id;"; - - $orderIds = $this->readConnection->fetchAll($q); - if (! empty($orderIds)) { - foreach ($orderIds as $row) { - $tagOrderId = $row['order_id']; - $logArray['ordersUpdatedCount'] ++; - $orderTagArray[$tagOrderId] = array( - 'order_id' => 'NULL', - 'placed_from' => 'NULL', - 'created_by' => 'NULL', - 'repeat_sequence' => 'NULL', - 'fresh_or_reorder' => 'NULL', - 'purchase_admin_id' => 'NULL' - ); - - $orderTagArray[$tagOrderId]['order_id'] = $tagOrderId; - - // WEB: Order Placed Using Website & APP: Order placed using Mobile APP - if ($row['purchase_from'] == 'Main Website') { - $orderTagArray[$tagOrderId]['placed_from'] = 'Web'; - } else { - $orderTagArray[$tagOrderId]['placed_from'] = 'App'; - } - - // Edit by CustomerCare: Orders which are edited by CC through admin panel "Edit" order option - if (! empty($row['relation_parent_id'])) { - $orderTagArray[$tagOrderId]['created_by'] = 'Edited'; - } - - // Corporate: Orders created using specific user IDs in the system from admin panel - if (! empty($orders[$tagOrderId]['purchase_admin_id'])) { - $orderTagArray[$tagOrderId]['placed_from'] = 'Backend'; - $orderTagArray[$tagOrderId]['purchase_admin_id'] = $orders[$tagOrderId]['purchase_admin_id']; - if (in_array($orders[$tagOrderId]['purchase_admin_id'], $adminUserIds)) { - $orderTagArray[$tagOrderId]['created_by'] = 'Corporate'; - } elseif (in_array($orders[$tagOrderId]['purchase_admin_id'], $telesalesUserIds)) { - $orderTagArray[$tagOrderId]['created_by'] = 'Telesales'; - } - } - - if (! empty($row['alternate'])) { - $orderTagArray[$tagOrderId]['placed_from'] = 'Backend'; - $orderTagArray[$tagOrderId]['created_by'] = 'Alternate'; - } - - // Repeat: Orders placed by the email ids which have placed order before( guest and logged in ) - if (! empty($row['repeat'])) { - if ($row['repeat'] == 'repeat') { - $orderTagArray[$tagOrderId]['repeat_sequence'] = 'Repeat'; - } elseif ($row['repeat'] == 'repeat-a') { - $orderTagArray[$tagOrderId]['repeat_sequence'] = 'Repeat-A'; - } - } - - // ReOrder: Orders placed by reorder button at backend - if (! empty($row['orig_order_id'])) { - $orderTagArray[$tagOrderId]['fresh_or_reorder'] = 'Reorder'; - } - - $utmSource[$tagOrderId] = ucfirst($row['utm_source']); - } - } - } - - // **************************************PROCESSING FOR SPLITTED ORDERS***************************************// - - if (! empty($splittedOrderArr)) { - foreach ($splittedOrderArr as $splittedOrderId => $splittedOrderParentId) { - $orderTagArray[$splittedOrderId] = $orderTagArray[$splittedOrderParentId]; - } - } - - // Insert each tag in seperate row so that DB filter queries can be made in future - if (! empty($orderTagArray)) { - foreach ($orderTagArray as $orderId => $tagArray) { - $i = 0; - $taggedMasterArr = array(); - $taggedArr = array(); - - if (! empty($utmSource[$orderId])) { - $taggedMasterArr['utm_sorce'] = $utmSource[$orderId]; - } - - foreach ($tagArray as $tag) { - if ($tagArr[$tag]) { - $taggedArr[] = $tagArr[$tag]; - $taggedMasterArr[$tagArr[$tag]] = $tag; - } else { - $taggedArr[] = $tag; - } - } - - $taggedMasterString = implode(",", $taggedMasterArr); - $tagString = implode(",", $taggedArr); - - $infoQurey = "INSERT INTO `sales_flat_order_info` - ( `order_id`, `placed_from`, `created_by`, `repeat_sequence`, `fresh_or_reorder`,`purchase_admin_id`) - VALUES (" . $tagString . ") ON DUPLICATE KEY - UPDATE `placed_from` = IF('" . $tagArr[$tagArray['placed_from']] . "', '" . $tagArr[$tagArray['placed_from']] . "', NULL), - `created_by` = IF('" . $tagArr[$tagArray['created_by']] . "', '" . $tagArr[$tagArray['created_by']] . "', NULL), - `repeat_sequence` = IF('" . $tagArr[$tagArray['repeat_sequence']] . "', '" . $tagArr[$tagArray['repeat_sequence']] . "', NULL), - `fresh_or_reorder` = IF('" . $tagArr[$tagArray['fresh_or_reorder']] . "', '" . $tagArr[$tagArray['fresh_or_reorder']] . "', NULL), - `purchase_admin_id` = IF('" . $tagArr[$tagArray['purchase_admin_id']] . "', '" . $tagArr[$tagArray['purchase_admin_id']] . "', NULL)"; - $this->writeConnection->query($infoQurey); - - // Update sales_flat_order_grid table with applicable Order - $gridQurey = "UPDATE sales_flat_order_grid - SET order_tags = '$taggedMasterString' - WHERE entity_id = '$orderId';"; - $this->writeConnection->query($gridQurey); - } - } - // Log Execution Details in Summary Log File - $logArray['status'] = 'Orders Tagged successfully'; - $this->doLogging($logArray); - return true; - } catch (Exception $e) { - $logArray['status'] = $e->getMessage(); - $this->doLogging($logArray); - return false; - } - } - - public function doLogging($logArray) - { - $endTime = new DateTime(date("Y:m:d h:i:s")); - $endTime->setTimezone(new DateTimeZone('Asia/Calcutta')); - $logArray['completionTime'] = $endTime->format('Y-m-d H:i:s'); - - // Time Taken by the script (in secods) - $diffTime = $logArray['startTimeObj']->diff($endTime); - $hours = $diffTime->format('%h'); - $minutes = $diffTime->format('%i'); - $seconds = $diffTime->format('%s'); - - $logArray['executionTime'] = "$hours hours $minutes minutes $seconds seconds"; - - // Print Summary Log - $fp = fopen("../var/log/summary_log_file.txt", "a") or die("Unable to open file!"); - fprintf($fp, "\n\n*************************** %s ***********************", $logArray['functionName']); - fprintf($fp, "\nFunction Name - %s", $logArray['functionName']); - fprintf($fp, "\nStart Time - %s", $logArray['startTime']); - fprintf($fp, "\nCompetion Time - %s", $logArray['completionTime']); - fprintf($fp, "\nExecution Time - %s", $logArray['executionTime']); - fprintf($fp, "\nOrders Checked/Impacted - %d", $logArray['ordersUpdatedCount']); - fprintf($fp, "\nStatus - %s", $logArray['status']); - } -} - -$params = array_slice($argv, 1); -$shell = new Tolexo_OrderTag($params); -$shell->run(); \ No newline at end of file diff --git a/mobileapi/auth.php b/mobileapi/auth.php index 9c12ce1..73e6c90 100644 --- a/mobileapi/auth.php +++ b/mobileapi/auth.php @@ -12,63 +12,24 @@ include_once('AuthCustomer.php'); * - If no then use reguar authentication model * to verify the authenticity of the call */ -if ($INTERNAL_FUNCTION_CALL || hasElementInCollection($_SERVER['REMOTE_ADDR'],$INTERNAL_WEBADMIN01_SERVER)) { +if (hasElementInCollection($_SERVER['REMOTE_ADDR'],$INTERNAL_WEBADMIN01_SERVER)) { //get customer_id from _GET / _POST $customerid = isset($_GET['customer_id']) ? $_GET['customer_id'] : (isset($_POST['customer_id']) ? $_POST['customer_id'] : null); $BY_PASS_AUTHENTICATION = true; $_APP_SESSION_INFO = $customerid; }else{ - - $authParams = getAuthenticationParams(); - $authCustomer = new AuthCustomer($authParams['app_session'], $authParams['timestamp'], $authParams['hash']); + $appSession = (isset($_GET['app_session'])) ? $_GET['app_session'] : $_POST['app_session']; + $timestamp = (isset($_GET['timestamp'])) ? $_GET['timestamp'] : $_POST['timestamp']; + $hash = (isset($_GET['hash'])) ? $_GET['hash'] : $_POST['hash']; + + $authCustomer = new AuthCustomer($appSession, $timestamp, $hash); $_APP_SESSION_INFO = $authCustomer->getSessionInfo(); - if( $_APP_SESSION_INFO == null ){ + + if( $_APP_SESSION_INFO == null ) + { echo getAuthenticationError(); exit(); } -} - -function getAuthenticationParams() { - - if(getApiVersion() == "v1") { - - $authParams['app_session'] = (isset($_GET['app_session'])) ? - $_GET['app_session'] : - ( (isset($_POST['app_session'])) ? $_POST['app_session']: null); - - $authParams['timestamp'] = (isset($_GET['timestamp'])) ? - $_GET['timestamp'] : - ( (isset($_POST['timestamp'])) ? $_POST['timestamp']: null); - - $authParams['hash'] = (isset($_GET['hash'])) ? - $_GET['hash'] : - ( (isset($_POST['hash'])) ? $_POST['hash']: null); - - } else { - - $authParams['app_session'] = isset($_SERVER['HTTP_XAPPSESSION']) ? $_SERVER['HTTP_XAPPSESSION'] : null; - $authParams['timestamp'] = isset($_SERVER['HTTP_XTIMESTAMP']) ? $_SERVER['HTTP_XTIMESTAMP'] : null; - $authParams['hash'] = isset($_SERVER['HTTP_XHASH']) ? $_SERVER['HTTP_XHASH'] : null; - - } - return $authParams; -} - -function getApiVersion(){ - - $route = Mage::app()->getRequest()->getParam('route'); - $tmpArr = explode("/", $route); - if(count($tmpArr) > 3) { - - $version = $tmpArr[0]; - //remove version information from route - $newRoute = substr( $route, strpos($route, "/")+1 ); - Mage::app()->getRequest()->setParam('route', $newRoute); - - } else { //if version information is missing then return default version v1 - $version = "v1"; - } - return $version; -} +} \ No newline at end of file diff --git a/mobileapi/category_icon/others.png b/mobileapi/category_icon/others.png deleted file mode 100644 index 7614d28..0000000 Binary files a/mobileapi/category_icon/others.png and /dev/null differ diff --git a/mobileapi/common.php b/mobileapi/common.php index d00df47..1113353 100644 --- a/mobileapi/common.php +++ b/mobileapi/common.php @@ -2,13 +2,9 @@ include_once('config.php'); include_once('Logger.php'); -if(!isset($INTERNAL_FUNCTION_CALL)) - $INTERNAL_FUNCTION_CALL = false; - -Logger::logRequest(); - +$BY_PASS_AUTHENTICATION = false; $conn = connectDb(); -rewriteJsonRequestParams(); + function connectDb(){ $conn = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME) or die('Error connecting to mysql'); @@ -117,17 +113,4 @@ function hasElementInCollection($element,$arr_collection){ next($arr_collection); } return false; -} - -//this function writes json input to post params -function rewriteJsonRequestParams(){ - $input = json_decode(file_get_contents('php://input'), true); - if($input) { - foreach($input as $key => $value) { - if(is_array($value)) - $_POST[$key] = json_encode($value); - else - $_POST[$key] = $value; - } - } -} +} \ No newline at end of file diff --git a/mobileapi/config_production.php b/mobileapi/config_production.php index da78cdf..c43dfc8 100644 --- a/mobileapi/config_production.php +++ b/mobileapi/config_production.php @@ -2,10 +2,8 @@ //error_reporting(E_ALL); ini_set('display_errors',0); -define('API_ROOT', dirname(__FILE__)); //api directory - define('WEB_API_KEY', 'c5d92aa397c1b8f7448b3950d4ddc0a6'); -define('ORDER_BY_PHONE','082-8282-8282'); +define('ORDER_BY_PHONE','+91 8282 8282 82'); define('REVIEW_LIMIT','5'); define('EMAIL','support@tolexo.com'); define('OTP_CLIENT_URL','http://push.rstvas.com/SendSMS/sendmsg.php?uname=tolexo&pass=tol%40123'); @@ -47,15 +45,15 @@ define('LISTING_IMAGE_RESIZE', '?resize=1&q=98&w=200&h=200&zc=2'); define('WISHLIST_IMAGE_RESIZE', '?resize=1&q=98&w=70&h=70&zc=2'); define('IMAGE_BASE_URL', 'http://img.tolexokit.com/media/catalog/product'); -//GO API -define("PRODUCT_GO_API", true); -define("GO_API_TIMEOUT", 30); -define("GO_API_URL", "http://spare01:8090/p/v1"); - define('SHIPPING', '99'); define('IMAGE_BASE_URL', 'http://img.tolexokit.com/media/catalog/product'); +//GO API +define("PRODUCT_GO_API", true); +define("GO_API_TIMEOUT", 30); +define("GO_API_URL", "http://localhost:2022/p/v1"); + define('SERVER_NAME',$_SERVER['SERVER_ADDR']); if($_SERVER['SERVER_ADDR'] =="127.0.0.1"){ define('CATEGORY_ICON_PATH',"http://".$_SERVER['SERVER_NAME']."/mobileapi/category_icon/"); @@ -70,14 +68,16 @@ define('APP_SESSION_VALID_TIMESTAMP', 100000); //in minutes define('ENCRYPTION_KEY', 'cFs1!R@20O%O#S$2*!iH'); define('AES_256_CBC', 'aes-256-cbc'); -$INTERNAL_WEBADMIN01_SERVER = array('172.16.50.181'); + +//Define the list of webadmin servers collection +$INTERNAL_WEBADMIN01_SERVER = array('172.16.50.116', '127.0.0.1'); $categoryIcon = array( '1193'=>'saftey.png','1187'=>'abrasives.png','1672'=>'adhhesive.png','1188'=>'cutting_tolls.png','1189'=>'fastners.png','1190'=>'hand_tools.png','1192'=>'powertools.png','1194'=>'security.png','1191'=>'test_measures.png','1637'=>'bike-car-acc.png','2154'=>'cleaning.png','1938'=>'electrical.png','2162'=>'hardwares.png','2165'=>'lab-supplies.png','2167'=>'lubrications.png','2168'=>'material-hendeling.png','2170'=>'office-supplies.png','2173'=>'plumbings.png','2174'=>'pneumatics.png','2177'=>'pumps.png','2183'=>'welding.png','1906'=>'power_transmission.png','1760'=>'others.png'); global $categoryIcon; -require_once(API_ROOT.'/../app/Mage.php'); +require_once('./../app/Mage.php'); //require_once('memcache.php'); function pr($data){ @@ -87,4 +87,8 @@ function pr($data){ return true; } + +Logger::logRequest(); + + ?> diff --git a/orderSplit.php b/orderSplit.php index 14e536c..3fb5528 100755 --- a/orderSplit.php +++ b/orderSplit.php @@ -522,7 +522,6 @@ if(isset($_POST['entity_id']) && isset($_POST['increment_id'])){ <div style="border:1px solid #dddddd;font-size:12px;margin-bottom:15px;margin: 0 5px 15px;overflow:auto;" align="center">'; $iCnt=1; - $orderDate2= $order->getCreatedAt(); foreach ($order->getAllItems() as $item) { if($iCnt==count($order->getAllItems())) @@ -557,11 +556,12 @@ if(isset($_POST['entity_id']) && isset($_POST['increment_id'])){ $row = $write->fetchRow($sql); $dispatch = $row['value']; } - + + $orderDate2= $orderItem['created_at']; if(is_numeric($dispatch)) { - $expecteddispatch =date('d-m-Y', strtotime($orderDate2.' +'.$dispatch.' days')); + $expecteddispatch =date('d-m-Y', strtotime($orderDate2 . ' + '.$dispatch.' days')); } else { diff --git a/qlp/css/custom.css b/qlp/css/custom.css index daa28b9..ded8a53 100755 --- a/qlp/css/custom.css +++ b/qlp/css/custom.css @@ -5,7 +5,7 @@ .lp { font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; } -.jq-brand-content ul, +.jq-brand-content ul{display: none;} .jq-tab-content div.clearfix{ display: none; } @@ -361,6 +361,7 @@ } @media (min-width : 960px) and (max-width : 1169px) { .lp { + /*width: 100%;*/ margin: 0 auto; } .lp .products li { @@ -390,6 +391,7 @@ @media (min-width : 1170px) { .lp { + /*width: 100%;*/ margin: 0 auto; } .lp .tabs a { diff --git a/qlp/css/style.css b/qlp/css/style.css index ce9629b..60a27bb 100755 --- a/qlp/css/style.css +++ b/qlp/css/style.css @@ -7,14 +7,6 @@ body { ul li { line-height: 20px; } -.fs12 { - font-size: 12px; -} -a, a:visited { - color:#ff5f5c; - text-decoration: none; - font-size: 12px; -} .container { margin-left: auto; margin-right: auto; @@ -29,7 +21,7 @@ a, a:visited { .clp { left: 50%; background: #fff; - padding:0 15px; + padding: 15px; border-bottom: 1px solid #aaa; } .clp h2 { @@ -63,7 +55,7 @@ a, a:visited { border: 1px solid #56006b; } .clp textarea { - height:260px; + height:360px; clear:both; width: 99%; } @@ -79,9 +71,6 @@ a, a:visited { color:#444; display: block; } -.clp label.lbl_is_deleted { - display: inline; -} .clear { clear: both; } @@ -107,7 +96,7 @@ a, a:visited { background: #56006b; color:#fff; } -.clp #btn_save, .clp #download_csv { +.clp #save { display:none; } .clp_overlay { diff --git a/qlp/default.json b/qlp/default.json index fca6d43..0c1d68d 100644 --- a/qlp/default.json +++ b/qlp/default.json @@ -10,11 +10,11 @@ "type": "products", "morelink": "http://www.tolexo.com/", "tab": "Best Seller", - "tsin": "T06IND0001, T06BND0029", - "tier": "Y" + "tsin": "T06IND0001, T06BND0029" }, { - "type": "disclaimer", - "title": "* Disclaimer: Subject to stock availability | Price subject to change without notice" + "type": "products", + "tab": "UPTO 63% OFF", + "tsin": "T06JKF0011, T06TRN0004, T04BND0021" } ] \ No newline at end of file diff --git a/qlp/js/custom.js b/qlp/js/custom.js index 5392e3a..86a01a2 100755 --- a/qlp/js/custom.js +++ b/qlp/js/custom.js @@ -1,7 +1,5 @@ jQuery.noConflict(); -var saveProcess = false; -var scrFunc = {iSave:function(s){if(s == undefined){return saveProcess;}saveProcess=s;return s;},IsJsonString:function(s){try{JSON.parse(s);}catch(e){return false;}return true;},smoothscroll:function(){jQuery('html,body').animate({scrollTop:jQuery('#clp_output').offset().top},1000);return false;}}; -var dataLayer = []; +var scrFunc = {IsJsonString:function(s){try{JSON.parse(s);}catch(e){return false;}return true;},smoothscroll:function(){jQuery('html,body').animate({scrollTop:jQuery('#clp_output').offset().top},1000);return false;}}; function dhtmlData(page) { if(!scrFunc.IsJsonString(jQuery('#jsondata_txt').val()) && page!='find_cms') { @@ -15,19 +13,14 @@ function dhtmlData(page) { type: "POST", beforeSend: function() { jQuery('.clp_overlay').show().css('height', jQuery(window).height()+'px'); - jQuery('#download_csv').hide(); }, //contentType: "application/json;charset=utf-8", data: jQuery('#frmclp').serialize(), success: function (r) { - jQuery('#is_deleted').attr('checked', false); if(page == 'process') { jQuery('#clp_output').html(r); jQuery('#btn_save').show(); - jQuery('#download_csv').show(); - scrFunc.iSave(true); scrFunc.smoothscroll(); - } else if(page == 'download_csv') { } else { var d = jQuery.parseJSON(r); var m = ''; @@ -42,20 +35,13 @@ function dhtmlData(page) { if(page === 'find_cms' && d.error === 0) { jQuery('#jsondata_txt').val(d.data.jsondata); jQuery('#css_txt').val(d.data.css); - jQuery('#javascript_txt').val(d.data.javascript); - if(d.data.is_deleted == 1) { - jQuery('#is_deleted').attr('checked', true); - } else { - jQuery('#is_deleted').attr('checked', false); - } } } jQuery('.clp_overlay').hide(); }, error: function (e) { - alert("Something happening wrong, Please try again later."); - jQuery('.clp_overlay').hide(); + alert("error"); } }); } @@ -65,30 +51,13 @@ jQuery(document).ready(function() { dhtmlData('find_cms'); }); - jQuery("#btn_process").click(function () { + jQuery("#btn_submit").click(function () { dhtmlData('process'); }); jQuery("#btn_save").click(function () { - if(scrFunc.iSave() === false) { - alert('Please click on preview button before save.'); - return false; - } - if(scrFunc.iSave() === true) { - if(confirm('Are you sure you want to save this page?')) { - dhtmlData('save'); - scrFunc.iSave(false); - jQuery('#btn_save').hide(); - jQuery('#download_csv').hide(); - } + if(confirm('Are you sure you want to save this page?')) { + dhtmlData('save'); } - }); - - jQuery('.txt_changed').on('focus', function() { - scrFunc.iSave(false); - jQuery("#btn_save").hide(); - jQuery('#download_csv').hide(); - }); - - jQuery("#btn_save").hide(); + }); }); \ No newline at end of file diff --git a/qlp/process.php b/qlp/process.php index 9b086a1..4f2ea05 100755 --- a/qlp/process.php +++ b/qlp/process.php @@ -29,23 +29,21 @@ class Dhtml { private $tabSel = false; private $tabCnt = 0; private $apiUrl = array(); - private $list = array(); - private $showTierPrice = 'N'; private $disclaimer = "* Disclaimer: Subject to stock availability | Price subject to change without notice"; private $siteUrl = array( - "staging1.tolx.net:2020" => "http://staging1.tolx.net/", + "beta.tolexo.com:2020" => "http://beta.tolexo.com/", "tolexo.com:4040" => "http://www.tolexo.com/", "43.252.89.107:4040" => "http://www.tolexo.com/", - "localhost"=> "http://www.tolexo.com/" + "localhost"=> "http://beta.tolexo.com/" ); private $hosts = array( - "staging1.tolx.net:2020" => "http://localhost:9090", + "beta.tolexo.com:2020" => "http://localhost:2022", "tolexo.com:4040" => "http://spare01:8090", "43.252.89.107:4040" => "http://spare01:8090", - "localhost"=> "http://staging1.tolx.net:9090"//http://172.16.50.168:8090" + "localhost"=> "http://beta.tolexo.com:2022" ); private $mageInc = array( - "staging1.tolx.net:2020" => "../app/Mage.php", + "beta.tolexo.com:2020" => "../app/Mage.php", "tolexo.com:4040" => "../../magento/magento/app/Mage.php", "43.252.89.107:4040" => "../../magento/magento/app/Mage.php", "localhost"=> "../../tolexo_magento_sandeep/app/Mage.php" @@ -61,10 +59,6 @@ class Dhtml { "tsin" => "/p/v1/products/tsin-to-id/", "product" => "/p/v1/product/" ); - - $this->list[] = array( - 'TAB', 'ID', 'TSIN', 'NAME', 'MRP', 'SP', 'DISCOUNT', 'IN STOCK', 'URL', 'IMAGE' - ); } private function __sleep() { @@ -90,7 +84,7 @@ class Dhtml { * */ private function setDb() { - include_once $this->mageInc[(isset($_SERVER['HTTP_HOST'])?$_SERVER['HTTP_HOST']:'43.252.89.107:4040')]; + include_once $this->mageInc[$_SERVER['HTTP_HOST']]; umask(0); Mage::app('admin')->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID); @@ -112,22 +106,20 @@ class Dhtml { $this->setDb(); if(isset($this->postData['identifier']) && !empty($this->postData['identifier'])) { - //$sel_query = "SELECT page_id FROM `{$this->db['cms_page']}` WHERE identifier = '".mysql_escape_string($this->postData['identifier'])."' "; - //$query_data = $this->db['read_conn']->fetchAll($sel_query); - $this->getCmsPageJson(true); - - if(isset($this->return_data['error']) && $this->return_data['error'] == 0) { - $is_deleted = 0; - if(isset($this->postData['remove_from_qlp']) && (int)$this->postData['remove_from_qlp'] === 1) { - $is_deleted = 1; - } - $ins_query = "INSERT INTO `{$this->db['cms_page_dynamic']}` (`page_id`, `identifier`, `jsondata`, `css`, `javascript`, `is_deleted`) VALUES ('".$this->return_data['data']['page_id']."', '".$this->postData['identifier']."', '".addslashes($this->postData['jsondata'])."', '".addslashes($this->postData['css'])."', '".addslashes($this->postData['javascript'])."', '".(int)$is_deleted."') ON DUPLICATE KEY UPDATE jsondata='".addslashes($this->postData['jsondata'])."', css='".addslashes($this->postData['css'])."', javascript='".addslashes($this->postData['javascript'])."', is_deleted='".(int)$is_deleted."'"; + $sel_query = "SELECT page_id FROM `{$this->db['cms_page']}` WHERE identifier = '".mysql_escape_string($this->postData['identifier'])."'"; + $query_data = $this->db['read_conn']->fetchAll($sel_query); + + if(isset($query_data[0])) { + + $ins_query = "INSERT INTO `{$this->db['cms_page_dynamic']}` (`page_id`, `identifier`, `jsondata`, `css`) VALUES ('".$query_data[0]['page_id']."', '".$this->postData['identifier']."', '".addslashes($this->postData['jsondata'])."', '".addslashes($this->postData['css'])."') ON DUPLICATE KEY UPDATE jsondata='".addslashes($this->postData['jsondata'])."', css='".addslashes($this->postData['css'])."'"; if(true === $this->executeQueries($ins_query)) { - $this->updateCmsPage(true, $this->return_data['data']['page_id']); // update the cms page content + $this->updateCmsPage(true, $query_data[0]['page_id']); // update the cms page content } else { $this->return_data = array('error'=>1, 'msg'=>'Something happening wrong, Please try again later.'); } + } else { + $this->return_data = array('error'=>1, 'msg'=>"CMS Page identifier doesn't exists."); } } else { @@ -141,7 +133,6 @@ class Dhtml { * @param - integer page id */ public function updateCmsPage($is_manual = true, $page_id = 0) { - global $argv; if(true === $is_manual) { // manual submit $htmlpageContent = isset($_SESSION['page_content'])?$_SESSION['page_content']:$this->pageStructure; @@ -150,18 +141,14 @@ class Dhtml { $upd_query = "UPDATE `{$this->db['cms_page']}` SET content = '".addslashes($htmlpageContent)."' WHERE page_id = ".(int)$page_id; if(true === $this->executeQueries($upd_query)) { - //$this->db['write_conn']->commit(); + $this->db['write_conn']->commit(); $this->return_data = array('error'=>0, 'msg'=>'CMS Page successfully updated.'); } else { $this->return_data = array('error'=>1, 'msg'=>'CMS Page not update due to some technical errors.'); } - - if(isset($argv[1])) { - pr("Page: ".$page_id); - } } else { // cron $this->setDb(); - $sel_query = "SELECT cmsd.* FROM `{$this->db['cms_page']}` as cms INNER JOIN `{$this->db['cms_page_dynamic']}` as cmsd ON cms.page_id = cmsd.page_id AND cms.is_active = 1 AND cmsd.is_deleted = 0"; + $sel_query = "SELECT cmsd.* FROM `{$this->db['cms_page']}` as cms INNER JOIN `{$this->db['cms_page_dynamic']}` as cmsd ON cms.page_id = cmsd.page_id AND cms.is_active = 1"; $query_data = $this->db['read_conn']->fetchAll($sel_query); if($query_data && count($query_data) > 0) { @@ -170,7 +157,6 @@ class Dhtml { $this->pageStructure = ''; $this->tabSel = false; $this->tabCnt = 0; - $this->list = array(); $this->getProductData(false); $this->updateCmsPage(true, $data['page_id']); } @@ -186,15 +172,11 @@ class Dhtml { public function getCmsPageJson() { if(isset($this->postData['identifier']) && !empty($this->postData['identifier'])) { $this->setDb(); - $sel_query = "SELECT cmsd.page_id, cmsd.jsondata, cmsd.css, cmsd.is_deleted, cmsd.javascript FROM `{$this->db['cms_page']}` as cms INNER JOIN `{$this->db['cms_page_dynamic']}` as cmsd ON cms.page_id = cmsd.page_id AND cms.is_active = 1 WHERE cmsd.identifier = '".mysql_escape_string($this->postData['identifier'])."'"; + $sel_query = "SELECT cmsd.jsondata, cmsd.css FROM `{$this->db['cms_page']}` as cms INNER JOIN `{$this->db['cms_page_dynamic']}` as cmsd ON cms.page_id = cmsd.page_id AND cms.is_active = 1 WHERE cmsd.identifier = '".mysql_escape_string($this->postData['identifier'])."'"; $query_data = $this->db['read_conn']->fetchAll($sel_query); if(isset($query_data[0]) && count($query_data) > 0) { - if($query_data[0]['is_deleted'] == 0) { - $this->return_data = array('error'=>0, 'msg'=>'Previous data is populated.', 'data'=>array('page_id'=>$query_data[0]['page_id'], 'identifier'=>$query_data[0]['identifier'], 'jsondata'=>$query_data[0]['jsondata'], 'css'=>$query_data[0]['css'], 'javascript'=>$query_data[0]['javascript'])); - } else { - $this->return_data = array('error'=>1, 'msg'=>"This CMS Page is already removed from QLP. You cannot update it."); - } + $this->return_data = array('error'=>0, 'msg'=>'Previous data is populated.', 'data'=>array('jsondata'=>$query_data[0]['jsondata'], 'css'=>$query_data[0]['css'])); } else { $this->return_data = array('error'=>1, 'msg'=>"Previous data for this CMS Page doesn't exists."); } @@ -231,7 +213,8 @@ class Dhtml { * @param - values pass to api */ private function getData($t = 'curl', $url_code = '', $params = '') { - $url = $this->hosts[(isset($_SERVER['HTTP_HOST'])?$_SERVER['HTTP_HOST']:'43.252.89.107:4040')].$this->apiUrl[$url_code].$params; + $url = $this->hosts[$_SERVER['HTTP_HOST']].$this->apiUrl[$url_code].$params; + //$url = "http://localhost/html/sandeep/qlp/jsondata.php?type=".$url_code."&id=".$params; try { if($t === 'curl') { @@ -322,8 +305,6 @@ class Dhtml { // get products by TSIN $productIds = $this->getProductByTsin($product->tsin); - $this->showTierPrice = isset($product->tier)?$product->tier:'N'; - if($productIds && count($productIds) > 0) { foreach($productIds as $tsin=>$pid) { if(!empty($pid)) { @@ -380,7 +361,6 @@ class Dhtml { $this->prodArr = array(); $lowestPriceMrpArr = array(); $lowestPriceArrRev = array(); - $lowestPriceDataArr = array(); $this->prodArr['enabled'] = false; if(count($data->variations) > 0) { @@ -391,15 +371,18 @@ class Dhtml { if(true == $v->is_enabled) // check variations enabled/disabled { - $this->prodArr['id'] = $data->_id; - $this->prodArr['name'] = $data->name; - $this->prodArr['url'] = $this->siteUrl[(isset($_SERVER['HTTP_HOST'])?$_SERVER['HTTP_HOST']:'43.252.89.107:4040')].$data->url->path; + $this->prodArr['id'] = $data->_id; + $noOfItems = ''; + if(isset($data->attributes->number_of_items) && $data->attributes->number_of_items > 1) { + $noOfItems = " (Pack of ".$data->attributes->number_of_items.")"; + } + $this->prodArr['name'] = $data->name.$noOfItems; + $this->prodArr['url'] = $this->siteUrl[$_SERVER['HTTP_HOST']].$data->url->path; if(isset($data->media) && count($data->media) > 0) { $p_img = array('img'=>'', 'title'=>''); - $mediaCnt = count($data->media); foreach($data->media as $img) { - if(1 == $img->is_primary || $mediaCnt == 1) { + if(1 == $img->is_primary) { $p_img['img'] = $img->value; $p_img['title'] = $img->label; break; @@ -427,9 +410,7 @@ class Dhtml { { $this->prodArr['enabled'] = true; if(isset($article->price)) { - if($this->showTierPrice == 'Y' && isset($article->recommended_price) && !empty($article->recommended_price)) { - $price = $article->recommended_price; - } elseif(isset($article->price->special)) { + if(isset($article->price->special)) { if(isset($article->price->special->value) && ((isset($article->price->special->from) && isset($article->price->special->to) && strtotime(date('Y-m-d H:i:s')) >= strtotime($article->price->special->from) && strtotime(date('Y-m-d H:i:s')) <= strtotime($article->price->special->to)) || (isset($article->price->special->from) && !isset($article->price->special->to) && strtotime(date('Y-m-d H:i:s')) >= strtotime($article->price->special->from)))) { $price = $article->price->special->value; } else { @@ -450,7 +431,7 @@ class Dhtml { } } - $lowestPriceMrpArr[$this->price($price)] = array('mrp' => $msrp, 'noofitems' => (isset($v->attributes->number_of_items)?$v->attributes->number_of_items:'')); + $lowestPriceMrpArr[$this->price($price)] = $msrp; } } } @@ -474,12 +455,7 @@ class Dhtml { $lprice[current($lowestPriceArrRev)] = key($lowestPriceArrRev); } - $this->prodArr['mrp'] = $lowestPriceMrpArr[current($lprice)]['mrp']; - $noOfItems = $lowestPriceMrpArr[current($lprice)]['noofitems']; - - if(!empty($noOfItems) && $noOfItems != 1) { - $this->prodArr['name'] .= " (Pack of ".$noOfItems.")"; - } + $this->prodArr['mrp'] = $lowestPriceMrpArr[current($lprice)]; $this->prodArr[key($lprice)] = array( 'sp' => current($lprice), @@ -550,7 +526,6 @@ class Dhtml { * */ private function createProductHtml($data = null) { - $prod = ' <div class="clearfix products jq-'.$this->tabIdData($data->tab).'">'; if(isset($data->morelink)) { @@ -577,13 +552,10 @@ class Dhtml { } $stock = ''; - $is_in_stock = ''; if(isset($val->stock)) { $stock = $val->stock; - $is_in_stock = 'Y'; } else if(isset($val->outofstock)) { $stock = $val->outofstock; - $is_in_stock = 'N'; } $ajaxLoader = ''; @@ -604,18 +576,12 @@ class Dhtml { $products .= $ajaxLoader.' <img '.$lazyLoad.' width="135" height="135" border="0" alt="'.$val->name.'" src="http://d2ulloqlm1pj3b.cloudfront.net/mailer/images/spacer.gif" title="'.$val->name.'">'; } - $selling_price = 0; - $discount_price = 0; - $mrp_price = 0; if(isset($val->mrp)) { if(empty($stock['discount'])) { $products .= '<p class="main-price"> '.$stock['sp'].'</p>'; } else { $products .= '<span class="discount rotate">'.$stock['discount'].'% OFF </span> <p class="main-price"><span class="old-price">Rs. '.$val->mrp.'</span><span class="price-pipe">|</span>Rs. '.$stock['sp'].'</p> '; } - $selling_price = $stock['sp']; - $discount_price = $stock['discount']; - $mrp_price = $val->mrp; } if(isset($val->stock)) { @@ -626,13 +592,7 @@ class Dhtml { $products .= ' </li>'; - - $this->list[] = array( - $data->tab, $val->id, $val->tsin_id, $val->name, $mrp_price, $selling_price, $discount_price, $is_in_stock, $val->url, $val->image - ); - } - $prod .= $products; } else { //error_data @@ -650,7 +610,6 @@ class Dhtml { * */ private function getStructure($output = false) { - $disclaimer = ''; $prod = ''; $tab = ''; $str = ' @@ -660,9 +619,6 @@ class Dhtml { foreach($this->allProducts as $data) { if(isset($data->type)) { switch($data->type) { - case 'disclaimer': - $disclaimer = isset($data->title)?$data->title:$this->disclaimer; - break; case 'banner': $str .= $this->createBannerHtml($data); break; @@ -680,58 +636,26 @@ class Dhtml { } $str .= '<div id="jq-tabs" class="p0 tabs" '.$tabHideShow.'>'.$tab.'</div>'; $str .= '<div class="p0 tab-content jq-tab-content">'.$prod.'</div>'; - $str .= '<div class="fs13">'.(!empty($disclaimer)?$disclaimer:$this->disclaimer).'</div>'; + $str .= '<div class="fs13">'.$this->disclaimer.'</div>'; $str .= '<script type="text/javascript">'.file_get_contents('js/landing-page.js').'</script>'; - $str .= $this->postData['javascript']; $this->displayError(); if($output === true) { - $this->downloadCsv(false); $_SESSION['page_content'] = $str; echo $str; } - $this->pageStructure = $str; - - + $this->pageStructure = $str; } // End of function - getStructure - /* - * Function is used to download csv - * - */ - public function downloadCsv($download = false) { - $filename = "session/landingpage.csv"; - - if(false === $download) { - $handle = fopen($filename, 'w'); - foreach ($this->list as $val) { - fputcsv($handle, $val); - } - fclose($handle); - } elseif(true === $download) { - try { - // output headers so that the file is downloaded rather than displayed - header("Pragma: public"); - header("Expires: 0"); - header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); - //header('Content-Type: text/x-csv; charset=utf-8'); - header('Content-Type: application/csv'); - header('Content-Disposition: attachment; filename="landingpage.csv"'); - readfile($filename); - exit; - } catch (Expression $e) { - } - } - } // End of function - downloadCsv } //End of Class $obj = Dhtml::getInstance(); -$params = isset($_REQUEST['type'])?$_REQUEST['type']:''; +$params = isset($_POST['type'])?$_POST['type']:''; $obj->postData = isset($_POST)?$_POST:''; @@ -752,11 +676,6 @@ switch($params) { exit; break; - case 'download_csv': - $obj->downloadCsv(true); - exit; - break; - default: $obj->updateCmsPage(false); break; diff --git a/qlp/qlp.php b/qlp/qlp.php index 76eb030..5aaca2d 100755 --- a/qlp/qlp.php +++ b/qlp/qlp.php @@ -12,30 +12,25 @@ <h2>Custom Landing Page - Data Input</h2> <form id="frmclp" method="post" action=""> <label for="identifier_txt">CMS Page Identifier</label> - <input name="identifier" placeholder='CMS Page Identifier' type='text' id="identifier_txt" class="txt_changed" /> - <input type="button" id="btn_find" class="button txt_changed" value="Find!" /> + <input name="identifier" placeholder='CMS Page Identifier' type='text' id="identifier_txt" /> + <input type="button" id="btn_find" class="button" value="Find!" /> <input name="type" type='hidden' value="" id="page_type" /> <div style="width:100%;"> <div class="lbl_txtarea"> - <label for="jsondata_txt">Place your JSON Data here</label> - <textarea name="jsondata" placeholder='Place your JSON Data here' class="txt_changed" id="jsondata_txt"><?php echo file_get_contents('default.json'); ?></textarea> + <label for="jsondata_txt">Place you JSON Data here</label> + <textarea name="jsondata" placeholder='Place you JSON Data here' id="jsondata_txt"><?php echo file_get_contents('default.json'); ?></textarea> </div> <div class="lbl_txt"> - <label for="css_txt">Place your CSS here</label> - <textarea name="css" placeholder='Place your CSS here' class="txt_changed" id="css_txt"><?php echo file_get_contents('css/custom.css'); ?></textarea> + <label for="css_txt">Place you CSS here</label> + <textarea name="css" placeholder='Place you CSS here' id="css_txt"><?php echo file_get_contents('css/custom.css'); ?></textarea> </div> <div class="clear"></div> - - <div> - <label for="javascript_txt">Place your GTM javascript here</label> - <textarea name="javascript" placeholder='Place your GTM javascript here' class="txt_changed" id="javascript_txt" style="height:100px;"></textarea> - </div> + + </div> - <input type="button" id="btn_process" class="button" value="Preview" /> + <input type="button" id="btn_submit" class="button" value="Preview" /> <input type="button" id="btn_save" class="button" value="Save" /> - <a href="process.php?type=download_csv" target="_blank" id="download_csv">Download CSV</a> - <div class="fs12"><input type="checkbox" name="remove_from_qlp" value="1" style="width:0;" id="is_deleted" /> <label for="is_deleted" class="lbl_is_deleted">Remove from QLP</label></div> </form> </div> diff --git a/robots.txt b/robots.txt index 18c17a2..1d3ac7a 100644 --- a/robots.txt +++ b/robots.txt @@ -134,16 +134,6 @@ Disallow: /sendfriend/ Disallow: /tag/ Disallow: /wishlist/ Disallow: /catalog/product/gallery/ -Disallow: /recommendation/ -Disallow: /1*.html -Disallow: /2*.html -Disallow: /3*.html -Disallow: /4*.html -Disallow: /5*.html -Disallow: /6*.html -Disallow: /7*.html -Disallow: /8*.html -Disallow: /9*.html # Files Disallow: /cron.php @@ -164,4 +154,4 @@ Disallow: /*?SID= -#robots-r-us +#robots-r-us \ No newline at end of file diff --git a/skin/frontend/base/default/js/tm/ajaxpro/catalog/product/compare.js b/skin/frontend/base/default/js/tm/ajaxpro/catalog/product/compare.js index fa64828..3bc6a0a 100644 --- a/skin/frontend/base/default/js/tm/ajaxpro/catalog/product/compare.js +++ b/skin/frontend/base/default/js/tm/ajaxpro/catalog/product/compare.js @@ -228,21 +228,6 @@ }; }; - /* - @author: Jasleen Kaur - @desc: To check whether device is mobile or not - */ - - var checkMobileDevice = function () { - var width = jQuery(window).width(); - if (width <= 991) { - $mobileDevice = true;; - } else { - $mobileDevice = false; - } - return $mobileDevice; - } - var imageOnLoad = function(action) { // assign data-src-onload value to src of image getDeviceWidth(); @@ -542,11 +527,5 @@ }); window.imageOnLoad = imageOnLoad; //assign 'imageOnLoad' function to a global variable 'imageOnLoad'. - /* - @author: Jasleen Kaur - @desc: set device is mobile or not - */ - $mobileDevice = checkMobileDevice(); - window.mobileDevice = $mobileDevice; }(window, document, jQuery)); diff --git a/skin/frontend/base/default/js/tm/ajaxpro/checkout/cart.js b/skin/frontend/base/default/js/tm/ajaxpro/checkout/cart.js index 8d45fc9..b49d9a5 100644 --- a/skin/frontend/base/default/js/tm/ajaxpro/checkout/cart.js +++ b/skin/frontend/base/default/js/tm/ajaxpro/checkout/cart.js @@ -1,91 +1,5 @@ -/** -@author: Bijomon Varghese -@desc : Cart Popup Function -**/ -//Cart PopUp Script Starts -(function(window, document, $) { - function cartPop(action,showloader) { - /*var $height = $('.cart-popUp').outerHeight(), - $windowHeight = $(window).height() - 20;*/ - - if (action === 'reset') { - // Popup reset - /*var $contentAdded = $('.cart-popup-ui').height(), - var $scrollHeight = $('.cart-popup-scroll').height(); - - $scrollHeight = $height - ($contentAdded - $scrollHeight); - $('.cart-popup-scroll').css('height', $scrollHeight);*/ - var $windowWidth = $(window).outerWidth(), - $windowHeight = $(window).outerHeight(), - $width = $('.cart-popUp').outerWidth(), - $height = $('.cart-popUp').outerHeight(), - topMargin = ($windowHeight - $height) / 2, - leftMargin = ($windowWidth - $width) / 2; - - $('.cart-popUp').css({'top' : topMargin , 'left' : leftMargin}); - } - - if (action === 'show') { - - cartPop('reset',false); - - // Show popup. - /*if ($windowHeight > $height) { - - $height = $windowHeight; - };*/ - - //$('#cart-popup').html('<div class="page-title cart-empty-title"><h1>Shopping Cart</h1></div><span class="ajax-cart-loader"></span>'); - if(showloader){ - $('#cart-popup').html('<span class="ajax-cart-loader">Loading Your Shopping Cart</span>'); - } - - $('.cart-popUp').css({ - //'height': $height - }).show(); - - $('.cart-overlay').show(); - $('.cart-popUp').addClass('cart-popUp-show'); - } - - if (action === 'hide') { - // Hide popup. - $('.cart-popUp').removeClass('cart-popUp-show'); - $('.cart-overlay').delay(300).hide(0); - - } - }; - - var keyDown; // on escape - window.onkeydown = function() { - keyDown = true; - }; - - window.onkeyup = function(e) { - if (e.keyCode === 27 && keyDown) { - cartPop('hide',false); - keyDown = false; - } - }; - - $(document).on('click', '.cart-popUp-close, .continue-btn, .cart-overlay', function() { - cartPop('hide',false); - jQuery('body, html').removeClass('scroll-hide'); - jQuery('.cart-close-bg, .cart-popUp-close').hide(); - }); - $(document).on('keypress', '#coupon_code', function(e) { - if (e.keyCode === 13) { - $(this).next('div').find('button').click(); - return false; - }; - }); - - window.cartPop = cartPop; -}(window, document, jQuery)); -//PopUp Script Ends - document.observe("dom:loaded", function (){ -jQuery.noConflict(); + AjaxPro.observe('addObservers', function() { setLocation = setLocation.wrap(function(callOriginal, url) { @@ -228,13 +142,14 @@ jQuery.noConflict(); var url = el.action; if(url.search('checkout/cart/updatePost') != -1) { - setLayerData('CartPage', 'Cart Page', 'Update Shopping Cart', 'Update Shopping Cart'); + setLayerData('CartPage', 'Cart Page', 'Update Shopping Cart', 'Update Shopping Cart'); } AjaxPro.request({ 'url' : url, parameters : params }); + return false; }); } @@ -269,7 +184,7 @@ jQuery.noConflict(); // set data layer value for eCommerce remove product var pid = element.getAttribute("data-pid"); delCartProductsOption(pid); - setLayerData('CartPage', 'Cart Page', 'Remove from cart', 'Remove from cart'); + setLayerData('CartPage', 'Cart Page', 'Remove from cart', 'Remove from cart'); if (AjaxPro.config.get('checkoutCart/enabledDeleteConfirm')) { if(!confirm(Translator.translate('Are you sure you would like to remove this item from the shopping cart?'))) { @@ -394,456 +309,3 @@ jQuery.noConflict(); }); }); - -/** -@author: Jasleen Kaur -@desc: Observer for handling js executed on ajax cart popup -**/ - AjaxPro.observe('addObserversCart', function() { - - var submit = function() { - var url = this.form.action; - var isUploadFile = false;//$(this.form).select('input[type=file]').length; - $(this.form).select('input[type=file]').each(function(el){ - if ('' !== el.getValue()) { - isUploadFile = true; - } - }); - if (isUploadFile) { - if(this.validator && !this.validator.validate()){ - return false; - } - var template = '<iframe id="product_addtocart_form_frame" name="product_addtocart_form_frame" style="width:0; height:0; border:0;display:none;"><\/iframe>'; - Element.insert($('product_addtocart_form'), {after: template}); - this.form.setAttribute('target', 'product_addtocart_form_frame'); - //add product - this.form.submit(); - - var interval = window.setInterval(function() { - - var iframe = $('product_addtocart_form_frame'); - if ('undefined' == typeof iframe) { - window.clearInterval(interval); - return; - } - - var isAfterSubmit = false; - try { - - if (iframe.contentDocument) { - isAfterSubmit = iframe.contentDocument.body.innerHTML.length > 1 ? true : false; - } else if (iframe.contentWindow) { - isAfterSubmit = iframe.contentWindow.document.body.innerHTML.length > 1 ? true : false; - } else if (iframe.document) { - isAfterSubmit = iframe.document.body.innerHTML.length > 1 ? true : false; - } - - } catch (exception) { - console.log(exception); - } - - if(!isAfterSubmit) { - return; - } - AjaxPro.request({ - 'url' : url.replace('/product', ''), - parameters : {'onlyblocks': 1} - }); - Element.remove(iframe); - window.clearInterval(interval); - }, 1000); - this.form.removeAttribute('target'); - return false; - } - var params = this.form.serialize(true); - if(this.validator && this.validator.validate()){ - AjaxPro.request({ - 'url' : url, - parameters : params - }); - } - - return false; - }; - - if (typeof productAddToCartFormOld != 'undefined') { - - productAddToCartForm.submit = submit.bind(productAddToCartFormOld); - - } else if(typeof productAddToCartForm != 'undefined') { - - productAddToCartForm.submit = submit; - // - if($('qty')){ - $('qty').observe('keypress', function(e){ - if (13 === e.keyCode) { - Event.stop(e); - productAddToCartForm.submit(); - } - }); - } - } - -// redeclare submit form function on shopping cart page -// update action checkout/cart/updatePost - var shoppingCartTable = $('shopping-cart-table'); - if (shoppingCartTable) { - var shoppingCartForm = shoppingCartTable.up('form'); - if(typeof shoppingCartForm != 'undefined'){ - - //prototype multiple submit bugfix - //http://www.developpez.net/forums/d577369/webmasters-developpement-web/javascript/bibliotheques-frameworks/prototype-script-aculo-us/prototype-serialize-multiple-submit/ - shoppingCartForm.select(':submit').each(function(submitInput){ - submitInput._submitted = false; - submitInput.onclick = function(){ - if (jQuery('.cart-overlay').is(':visible')) { - var position = jQuery(submitInput).position(); - jQuery('.ajaxpro-spinner').eq(0).css({ - 'top': position.top, - 'left': position.left - }).show(); - }; - submitInput._submitted = true; - }.bind(this); - }.bind(this)); - - shoppingCartForm.observe('submit', function(e) { - var el = Event.element(e); - el.stopObserving('submit'); - Event.stop(e); - var params = el.serialize(true); - - shoppingCartForm.select(':submit').each(function(_el){ - if (_el._submitted === true){ - params[_el.name] = _el.value; - } - _el._submitted = false; - }.bind(this)); - - var url = el.action; - - if(url.search('checkout/cart/updatePost') != -1) { - setLayerData('CartPage', 'Cart Page', 'Update Shopping Cart', 'Update Shopping Cart'); - } - params['ajaxCart'] = true; - setTimeout(function(){ - jQuery.ajax({ - url: url, - data: params, - timeout:30000, - async:true, - success: function(data) { - jQuery('#cart-popup').html(data); - jQuery('.cart-qty').html(jQuery("#cart-count").val()); - jQuery(".cart").removeClass("main-cart"); - AjaxPro.fire('addObserversCart'); - if (jQuery('.cart-overlay').is(':visible')) { - cartPop('reset',false); - }; - }, - error: function() { - console.log("error"); - jQuery('#cart-popup').html("SOMETHING WENT WRONG!! PLEASE TRY AGAIN LATER"); - jQuery(".cart").removeClass("main-cart"); - if (jQuery('.cart-overlay').is(':visible')) { - cartPop('reset',false); - }; - } - }); - return false; - }); - },1000); - } - } - - $$('a').each(function(element){ - var url = element.getAttribute('href'); - - if (url == '#') { - var onclickHandler = element.getAttribute('onclick'); - if ( - onclickHandler - && typeof onclickHandler == 'string' - && onclickHandler != '' - && onclickHandler.search('setLocation') != -1 - && onclickHandler.search('checkout/cart/add') != -1 - ) { - - element.stopObserving('click'); - element.observe('click', function(e) { - Event.stop(e); - }); - } - } - if (url && url.search('checkout/cart/delete') != -1) { - element.stopObserving('click'); - element.setAttribute('onclick', ''); - element.observe('click', function(e) { - if (jQuery('.cart-overlay').is(':visible')) { - var position = jQuery(element).position(); - jQuery('.ajaxpro-spinner').eq(0).css({ - 'top': position.top, - 'left': position.left - }).show(); - }; - AjaxPro.fire('click:stop', e); - Event.stop(e); - // set data layer value for eCommerce remove product - var pid = element.getAttribute("data-pid"); - - setLayerData('CartPage', 'Cart Page', 'Remove from cart', 'Remove from cart'); - - if (AjaxPro.config.get('checkoutCart/enabledDeleteConfirm')) { - if(!confirm(Translator.translate('Are you sure you would like to remove this item from the shopping cart?'))) { - jQuery('.ajaxpro-spinner').hide(); - return false; - } - } - setTimeout(function(){ - jQuery.ajax({ - url: url, - timeout:30000, - async:true, - success: function(data) { - jQuery('#cart-popup').html(data); - jQuery('.cart-qty').html(jQuery("#cart-count").val()); - jQuery(".cart").removeClass("main-cart"); - AjaxPro.fire('addObserversCart'); - cartPop('reset',false); - }, - error: function() { - console.log("error"); - jQuery('#cart-popup').html("SOMETHING WENT WRONG!! PLEASE TRY AGAIN LATER"); - jQuery(".cart").removeClass("main-cart"); - if (jQuery('.cart-overlay').is(':visible')) { - cartPop('reset',false); - }; - } - }); - },1000); - - return false; - }); - return false; - } - }); - - var discountCartForm = $('discount-coupon-form'); - if(discountCartForm){ -// discountForm.oldSubmit = discountForm.submit; - discountForm.submit = function(isRemove){ - var url = this.form.action; - if (isRemove) { - $('coupon_code').removeClassName('required-entry'); - $('remove-coupone').value = "1"; - setLayerData('CartPage', 'Cart Page', 'Cancel Coupon', 'Coupon'); - if (jQuery('.cart-overlay').is(':visible')) { - var position = jQuery('.rmv-cupn').offset(); - jQuery('.ajaxpro-spinner').eq(1).css({ - 'top': position.top + 20, - 'left': position.left - }).show(); - }; - } else { - $('coupon_code').addClassName('required-entry'); - $('remove-coupone').value = "0"; - setLayerData('CartPage', 'Cart Page', 'Apply Coupon', 'Coupon'); - } - var params = this.form.serialize(true); - if(this.validator && this.validator.validate()){ - params['ajaxCart'] = true; - if (jQuery('.cart-overlay').is(':visible') && !jQuery('.ajaxpro-spinner').is(':visible')) { - var position = jQuery('.discount button.button').offset(); - jQuery('.ajaxpro-spinner').eq(1).css({ - 'top': position.top, - 'left': position.left - }).show(); - }; - setTimeout(function(){ - jQuery.ajax({ - url: url, - data: params, - timeout:30000, - async:true, - success: function(data) { - jQuery('#cart-popup').html(data); - jQuery('.cart-qty').html(jQuery("#cart-count").val()); - jQuery(".cart").removeClass("main-cart"); - AjaxPro.fire('addObserversCart'); - cartPop('reset',false); - jQuery('.ajaxpro-spinner').hide(); - }, - error: function() { - console.log("error"); - jQuery('#cart-popup').html("SOMETHING WENT WRONG!! PLEASE TRY AGAIN LATER"); - jQuery(".cart").removeClass("main-cart"); - if (jQuery('.cart-overlay').is(':visible')) { - cartPop('reset',false); - }; - } - }); - },1000); - - } - } - } - - var shippingZipForm = $('shipping-zip-form'); - if(shippingZipForm){ -// coShippingMethodForm.oldSubmit = coShippingMethodForm.submit; - coShippingMethodForm.submit = function(){ - var country = $F('country'); - var optionalZip = false; - for (i=0; i < countriesWithOptionalZip.length; i++) { - if (countriesWithOptionalZip[i] == country) { - optionalZip = true; - } - } - if (optionalZip) { - $('postcode').removeClassName('required-entry'); - } - else { - $('postcode').addClassName('required-entry'); - } - - var url = this.form.action, params = this.form.serialize(true); - if(this.validator && this.validator.validate()){ - AjaxPro.request({ - 'url' : url, - parameters : params - }); - } - } - } - - var elCoShippingMethodForm = $('co-shipping-method-form'); - if(elCoShippingMethodForm){ - //prototype multiple submit bugfix - //http://www.developpez.net/forums/d577369/webmasters-developpement-web/javascript/bibliotheques-frameworks/prototype-script-aculo-us/prototype-serialize-multiple-submit/ - elCoShippingMethodForm.select(':submit').each(function(submitInput){ - submitInput._submitted = false; - submitInput.onclick = function(){ - submitInput._submitted = true; - }.bind(this); - }.bind(this)); - - elCoShippingMethodForm.observe('submit', function(e) { - var el = Event.element(e); - el.stopObserving('submit'); - Event.stop(e); - var params = el.serialize(true); - - elCoShippingMethodForm.select(':submit').each(function(_el){ - if (_el._submitted === true){ - params[_el.name] = _el.value; - } - _el._submitted = false; - }.bind(this)); - - var url = el.action; - - AjaxPro.request({ - 'url' : url, - parameters : params - }); - - return false; - }); - } - }); - - -/** -@author: Jasleen Kaur -@desc : calling ajax on buy button click to add item in cart -**/ - -function ajaxCartAdd(ptsin,ptype,qtyId,itemUrl,btnobj){ -returnParam = buyProduct(ptsin,ptype,qtyId); -if(returnParam){ - jQuery(btnobj).next("span").css('display', 'block'); - setTimeout(function(){ - jQuery.ajax({ - url: itemUrl, - data: { - 'qty' : jQuery("#"+qtyId).val(), - 'ajaxCart' : true, - }, - timeout:30000, - async:true, - success: function(data) { - cartPop('show',false); - jQuery('body, html').addClass('scroll-hide'); - jQuery('#cart-popup').html(data); - jQuery(btnobj).next("span").css('display', 'none'); - jQuery('.btn-proceed-checkout').click(function() { - jQuery('.proceed-txt').hide(); - jQuery('.checkout-loader').css('display', 'block'); - }); - jQuery('.cart-close-bg, .cart-popUp-close').show(); - jQuery('.cart-qty').html(jQuery("#cart-count").val()); - jQuery(".cart").removeClass("main-cart"); - AjaxPro.fire('addObserversCart'); - cartPop('reset',false); - }, - error: function() { - console.log("error"); - cartPop('show',false); - jQuery('body, html').addClass('scroll-hide'); - jQuery('#cart-popup').html("SOMETHING WENT WRONG!! PLEASE TRY AGAIN LATER"); - jQuery(btnobj).next("span").css('display', 'none'); - jQuery('.cart-close-bg, .cart-popUp-close').show(); - jQuery(".cart").removeClass("main-cart"); - cartPop('reset',false); - } - }); - },1000); -} -} - -/** -@author: Jasleen Kaur -@desc : calling ajax on cart button click to view items in cart -**/ -function viewCartItems(cartUrl) { - if(mobileDevice) { - jQuery("#bag-icon").attr('href',cartUrl); - } else { - cartPop('show',true); - jQuery('body, html').addClass('scroll-hide'); - jQuery("#bag-icon").attr('href','#'); - setTimeout(function(){ - jQuery.ajax({ - url: cartUrl, - data: { - 'ajaxCart' : true, - }, - timeout:30000, - async:true, - success: function(data) { - jQuery('#cart-popup').html(data); - jQuery('.btn-proceed-checkout').click(function() { - jQuery('.proceed-txt').hide(); - jQuery('.checkout-loader').css('display', 'block'); - }); - jQuery('.cart-close-bg, .cart-popUp-close').show(); - jQuery('.cart-qty').html(jQuery("#cart-count").val()); - jQuery(".cart").removeClass("main-cart"); - AjaxPro.fire('addObserversCart'); - cartPop('reset',false); - }, - error: function() { - console.log("error"); - jQuery('#cart-popup').html("SOMETHING WENT WRONG!! PLEASE TRY AGAIN LATER"); - jQuery('.cart-close-bg, .cart-popUp-close').show(); - jQuery(".cart").removeClass("main-cart"); - cartPop('reset',false); - } - }); - }, 1000); - - } - -} - - diff --git a/skin/frontend/smartwave/porto/css/local.css b/skin/frontend/smartwave/porto/css/local.css index ff9883d..ef6fd0e 100644 --- a/skin/frontend/smartwave/porto/css/local.css +++ b/skin/frontend/smartwave/porto/css/local.css @@ -11,7 +11,7 @@ a:hover{color:#08c;text-decoration:underline} /* Sprite Images */ .common-sprite { - background: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v6.png'); + background: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v5.png'); background-repeat: no-repeat; } @@ -129,7 +129,7 @@ select.multiselect option:last-child{border-bottom:0} textarea{overflow:auto;padding:8px} input.radio{display:inline-block;margin:0 5px 0 0;vertical-align:middle} input.checkbox{margin-right:10px;display:inline-block} -input.qty{display:inline-block;vertical-align:middle;height:38px;width:35px !important;font-size:14px;text-align:center;color:#08c;border-color:#e1e1e1} +input.qty{margin-right:2px;display:inline-block;vertical-align:middle;height:38px;width:35px !important;font-size:14px;text-align:center;color:#08c;border-color:#e1e1e1} button.button::-moz-focus-inner{padding:0;border:0} button.button{-webkit-border-fit:lines} @@ -280,15 +280,15 @@ p.required{font-size:11px;text-align:right;color:#EB340A} .messages, .messages ul{list-style:none;margin:0;padding:0} -.messages{width:100%;overflow:hidden;} -.messages li{margin:0 0 5px} +.messages{width:100%;overflow:hidden;margin-bottom:15px} +.messages li{margin:0 0 10px} .messages li li{margin:0 0 3px} .error-msg, .success-msg, .note-msg, -.notice-msg{min-height:24px; font-size:14px;font-weight:400;margin-bottom:20px} -.error-msg li{border:1px solid #ebccd1;background-color:#f2dede;color:#a94442} -.success-msg li{border:1px solid #d6e9c6;background-color:#dff0d8;color:#3c763d} +.notice-msg{border-style:solid;border-width:1px;min-height:24px;padding:15px;font-size:14px;font-weight:400;border-radius:4px;margin-bottom:20px} +.error-msg{border-color:#ebccd1;background-color:#f2dede;color:#a94442} +.success-msg{border-color:#d6e9c6;background-color:#dff0d8;color:#3c763d} .note-msg, .notice-msg{border-color:#faebcc;background-color:#fcf8e3;color:#8a6d3b} @@ -386,7 +386,7 @@ p.required{font-size:11px;text-align:right;color:#EB340A} .data-table .qty-holder,.data-table .add-to-cart-alt{position:relative;text-align:left;margin-right:0} .data-table .add-to-cart-alt{margin:10px 0;width:93px} .data-table .edit-qty{margin-left:5px} -.data-table input.qty{color:#000;height:30px;border-radius:0;border-color:#ccc;} +.data-table input.qty{color:#777;height:30px;border-radius:0;border-color:#ccc;margin:0 -1px} .data-table .table_qty_inc,.data-table .table_qty_dec{display:inline-block;width:30px;height:30px;background:#f4f4f4;border:1px solid #ccc;color:#777;line-height:30px;border-radius:0;margin:0;font-size:14px;font-weight:bold;text-decoration:none;text-align:center;vertical-align:top} .data-table button.button > span{background:#fff;border:1px solid #ccc;color:#777;line-height:32px;padding:0 12px} .data-table button.button:hover > span{background:#08c;border:1px solid #08c;color:#fff} @@ -495,7 +495,7 @@ tr.summary-details-excluded{font-style:italic} /* Header ================================================================================ */ .header-container{background-color:#fff;border-top-width:4px;border-top-style:solid} -.top-links-container{padding:5px 0;position:relative;z-index:99; background: #f0f0ed} +.top-links-container{padding:5px 0;position:relative;z-index:200; background: #f0f0ed} .mobile-nav-shown .header-container{position: relative;z-index: 9999;} .header{position:relative;z-index:99;text-align:left} .header>.logo{ float:left;margin:30px 40px 30px 0;text-decoration:none !important;max-width:100%;display:inline-block;vertical-align:middle;max-width:170px;position:relative;z-index:2} @@ -539,7 +539,7 @@ tr.summary-details-excluded{font-style:italic} .topCartContent{display:none;position:absolute;right:0;top:40px;width:300px;background-color:#fff;border-width:6px 0 0 0;border-style:solid;z-index:1;border-radius:8px 8px 5px 5px;color:#777;box-shadow:0 2px 8px rgba(0,0,0,0.5);margin-top:10px} .topCartContent:before{content:"";position:absolute;border:10px solid transparent;display:block;right:15px;top:-25px;border-bottom-color:#08c} .mini-cart .topCartContent:after{content:"";position:absolute;left:0;top:-30px;height:30px;width:100%;display:block} -.mybag-link{line-height:1; cursor:pointer;display:inline-block;color:#fff;border-radius:5px;height:40px;text-transform:uppercase;text-align:center;max-width:120px} +.mybag-link{line-height:1;display:inline-block;color:#fff;border-radius:5px;height:40px;text-transform:uppercase;text-align:center;max-width:120px} .mybag-link i{color:#fff;font-size:27px;display:inline-block;vertical-align:middle} .mybag-link:hover{color:#fff;text-decoration:none} .mybag-link .cart-info{display:inline-block;vertical-align:middle;text-align:left;padding:3px} @@ -570,7 +570,7 @@ tr.summary-details-excluded{font-style:italic} .header-container .selectbox .dropdown{border-radius:3px} .header-container .selectbox .dropdown ul{background-color:#fff !important} .header-container .top-links-container span.split{float:left;display:block;height:14px;width:1px;border-right:1px solid #ccc;margin:6px 3px 6px 0} -.header-container .main-nav ul.menu >li.menu-full-width >a,.header-container .main-nav ul.menu >li.menu-item-has-children >a,.header-container .main-nav ul.menu >li.menu-static-width >a{padding-right:27px} +.header-container .main-nav ul.menu >li.menu-full-width >a,.header-container .main-nav ul.menu >li.menu-item-has-children >a,.header-container .main-nav ul.menu >li.menu-static-width >a{padding-right:30px} .custom-block .icon-group:first-child{margin:0} .icon-group{display:inline-block;vertical-align:middle;text-align:left;margin-left:30px} .icon-group i{font-size:20px;color:#fff;float:left;border-radius:50%;width:40px;height:40px;text-align:center;line-height:40px;background-color:#000} @@ -855,7 +855,7 @@ tr.summary-details-excluded{font-style:italic} /********** <Navigation */ .header-wrapper{} .main-nav{background-color:transparent;font-size:12px;border:0;padding:0;text-align:left} -.main-nav .menu-wrapper{background-color:#f0f0ed;border-radius:5px 5px 0 0;position: relative; z-index: 70;} +.main-nav .menu-wrapper{background-color:#f0f0ed;border-radius:5px 5px 0 0;position: relative;} .mega-columns.row{margin-right:-10px;margin-left:-10px} .menu_thumb_img{padding:15px 0 0} .fixed-header-area .menu >li{padding:0 !important} @@ -886,7 +886,7 @@ tr.summary-details-excluded{font-style:italic} .fixed-header a:hover,.main-nav a:hover{color:#fff} .fixed-header .menu >li .nav-sublist-dropdown .container ul >li a,.main-nav .menu >li .nav-sublist-dropdown .container ul >li a{padding:6px 10px;border:none;line-height: 16px;color: #333;text-overflow: ellipsis;width:220px;overflow: hidden;white-space: nowrap;border-top: 1px solid transparent;border-bottom: 1px solid transparent;} .fixed-header .menu >li.view-all .nav-sublist-dropdown .container ul >li a,.main-nav .menu >li.view-all .nav-sublist-dropdown .container ul >li a{line-height: 1;margin: 0 8px;color:#777;} -.fixed-header .menu >li .nav-sublist-dropdown .container ul >li a:before,.main-nav .menu >li .nav-sublist-dropdown .container ul >li a:before{background: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v6.png') -162px 0px no-repeat;display: inline-block;height: 9px;width: 7px;content: '';opacity: 0.7;margin-right: 1px;-ms-transform: rotate(7deg);-webkit-transform: rotate(7deg);transform: rotate(-90deg);} +.fixed-header .menu >li .nav-sublist-dropdown .container ul >li a:before,.main-nav .menu >li .nav-sublist-dropdown .container ul >li a:before{background: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v5.png') -162px 0px no-repeat;display: inline-block;height: 9px;width: 7px;content: '';opacity: 0.7;margin-right: 1px;-ms-transform: rotate(7deg);-webkit-transform: rotate(7deg);transform: rotate(-90deg);} .fixed-header .menu >li.view-all .nav-sublist-dropdown .container ul >li a:before,.main-nav .menu >li.view-all .nav-sublist-dropdown .container ul >li a:before{display: none;} .fixed-header .menu >li.view-all .nav-sublist-dropdown .container ul ul >li a:hover,.main-nav .menu >li.view-all .nav-sublist-dropdown .container ul ul >li a:hover{color:#777;font-weight: normal;} .fixed-header .menu > li:nth-last-child(1) .nav-sublist-dropdown .container > ul .menu-item-has-children .nav-sublist, .fixed-header .menu > li:nth-last-child(2) .nav-sublist-dropdown .container > ul .menu-item-has-children .nav-sublist, .main-nav .menu > li:nth-last-child(1) .nav-sublist-dropdown .container > ul .menu-item-has-children .nav-sublist, .main-nav .menu > li:nth-last-child(2) .nav-sublist-dropdown .container > ul .menu-item-has-children .nav-sublist{right:100%} @@ -1050,13 +1050,13 @@ tr.summary-details-excluded{font-style:italic} .block.block-layered-nav .block-content{background-color:transparent} .block.block-layered-nav .block-content ol{margin:0} dl#narrow-by-list{margin:0} -.block-layered-nav dt,.block-layered-nav .currently .block-subtitle,.block-category-nav .block-title{padding:8px 37px 6px 10px; font-size:13px;font-weight:bold;text-transform:uppercase;border:1px solid #ddd;background-color:#f5f5f5;color:#777;position:relative;cursor:pointer;border-radius:7px 7px 0 0;margin-top:7px} +.block-layered-nav dt,.block-layered-nav .currently .block-subtitle,.block-category-nav .block-title{padding:10px 15px;font-size:13px;font-weight:bold;text-transform:uppercase;border:1px solid #ddd;background-color:#f5f5f5;color:#777;position:relative;cursor:pointer;border-radius:7px 7px 0 0;margin-top:14px} .catalog-category-view .block-category-nav .block-title{margin-top:0;margin-bottom:0} .block-layered-nav dt.closed,.block-category-nav .block-title.closed{border-radius:7px} .block-layered-nav dt:before,.block-category-nav .block-title:before{content:"\e80d";width:26px;height:26px;display:block;border:1px solid #ccc;position:absolute;right:15px;top:50%;margin-top:-13px;border-radius:3px;color:#ccc;text-align:center;line-height:24px;background-color:#fff;font-size:10px} .block-layered-nav dt.closed:before,.block-category-nav .block-title.closed:before{content:"\e80b"} -.block-layered-nav dt:hover:before,.block-category-nav .block-title:hover:before{background-color:#08c;color:#fff;border-color: #56006b;} -.block-layered-nav dd,.block-category-nav .block-content{padding:10px 15px 10px 10px;font-size:13px;border:1px solid #ddd;border-top:0;border-radius:0 0 7px 7px;background-color:#fbfbfb} +.block-layered-nav dt:hover:before,.block-category-nav .block-title:hover:before{background-color:#08c;color:#fff} +.block-layered-nav dd,.block-category-nav .block-content{padding:10px 15px;font-size:13px;border:1px solid #ddd;border-top:0;border-radius:0 0 7px 7px;background-color:#fbfbfb} .block-layered-nav dd a{color:#777;font-size:13px;line-height:2.5} .block-layered-nav .currently ol{border:1px solid #ddd;border-width:0 1px;background-color:#fbfbfb;padding:10px 0;margin:0} .block-layered-nav .currently li{padding:5px 15px;position:relative;z-index:1;line-height:1.5} @@ -1079,9 +1079,9 @@ dl#narrow-by-list{margin:0} .block-category-nav{border-radius:7px;border-color:#ddd;overflow:hidden;margin-bottom:28px;line-height:1.42857143} .block-category-nav .block-title{cursor:pointer;margin:0} .block-category-nav .block-title strong{padding:0} -.block-category-nav .block-content{padding:10px 15px 10px 10px;} +.block-category-nav .block-content{padding:10px 15px} .block-category-nav .category-list{list-style:none;padding:0;margin:0} -.block-category-nav .category-list li{position:relative; margin-bottom: 5px;} +.block-category-nav .category-list li{position:relative; margin-bottom: 11px;} .block-category-nav .category-list a{color:#777;font-size:13px;line-height:1.5;display: inline-block;padding-right: 30px;} .block-category-nav .category-list ul{padding-left:15px;margin:0;list-style:none} .block-category-nav .category-list ul{display:none} @@ -1584,7 +1584,7 @@ li.etalage_small_thumbs{margin-top:8px;top:100%} .send-friend .form-list li.wide textarea{width:609px} .send-friend .buttons-set .limit{float:right;margin:0 7px 0 0;font-size:11px;line-height:21px} /* Content Styles ================================================================= */ -.product-name{margin:10px 0;font-size:1em;font-weight:normal} +.product-name{margin:10px 0;font-size:1em;font-weight:normal;} .product-name a{color:#777} .product-name a:hover{text-decoration:none} @@ -1620,7 +1620,8 @@ li.etalage_small_thumbs{margin-top:8px;top:100%} .rss-title h1{background:url(//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/i_rss-big.png) 0 4px no-repeat;padding-left:27px} .rss-table .link-rss{display:block;line-height:1.55;background-position:0 4px} /* Shopping Cart ========================================================================= */ -.cart .page-title{border-bottom:0;} +.cart .page-title{border-bottom:0;margin:0 0 12px} +.cart .page-title h1{margin:0 0 20px} /* Checkout Types */ .cart .page-title .checkout-types li{margin:0 0 5px} @@ -1646,7 +1647,7 @@ li.etalage_small_thumbs{margin-top:8px;top:100%} .cart-table .product-name{margin:0} .cart-table .cart-price{} .cart-table td.td-total .cart-price{color:#08c} -.cart-table .item-msg{margin:5px 0;font-size:11px;font-weight:normal;display: block;clear: both;color:#df280a} +.cart-table .item-msg{margin:5px 0;font-size:11px;font-weight:bold;color:#df280a} .cart-table tfoot td{padding:15px 5px 0} .cart-table .btn-continue{float:left} .cart-table .btn-empty span, @@ -1692,11 +1693,11 @@ li.etalage_small_thumbs{margin-top:8px;top:100%} .cart .discount .form-list label,.cart .shipping .form-list label{} .cart .discount button span, .cart .shipping button span{} -.cart .discount button > span {background-color: #e2e2e2 !important;color: #666; border: 1px solid #ccc !important; border-left: none !important;} +.cart .discount button > span {background-color: #e2e2e2 !important;color: #666; border: 1px solid #ccc !important;} .cart .discount .buttons-set, .cart .shipping .buttons-set{margin:10px 0 0;border:0;padding:0;text-align:left} .cart .discount .buttons-set button.button, -.cart .shipping .buttons-set button.button{float:right;margin-left:0;} +.cart .shipping .buttons-set button.button{float:none;margin-left:0;width:100%} .cart .discount .buttons-set button.button + button {margin-top: 10px;} .cart .discount h2{} @@ -2631,24 +2632,8 @@ h2.sidebar-title{margin-bottom:20px;font-size:16px;font-weight:bold;text-transfo .slide .product .add_to_cart_button{display:inline-block;margin:15px 0} div.filter-title,h2.filter-title{background:url(http://d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/slider-bar-v1.png) right no-repeat;font-size:16px;font-weight:300;line-height:42px;margin:0;color:#313131;text-transform:uppercase;text-align:left} div.filter-title .content,h2.filter-title .content{background-color:#fff;padding-right:20px;display:inline} -p.filter-title { - background:url(http://d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/slider-bar-v1.png) right no-repeat; - font-size:1.7em; - font-weight:400; - line-height:24px; - margin:0 0 32px 0; - color:#08c; -} -h3.filter-title { - background:url(http://d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/slider-bar-v1.png) right no-repeat; - font-size:16px; - font-weight:300; - line-height:42px; - margin:0; - color:#313131 !important; - text-transform:uppercase; - text-align:left; -} +p.filter-title{background:url(http://d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/slider-bar-v1.png) right no-repeat;font-size:1.7em;font-weight:400;line-height:24px;margin:0 0 32px 0;color:#08c} +h3.filter-title{background:url(http://d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/slider-bar-v1.png) right no-repeat;font-size:16px;font-weight:300;line-height:42px;margin:0;color:#313131 !important;text-transform:uppercase;text-align:left} p.filter-title .content,h3.filter-title .content{background-color:#fff;padding-right:20px} .filterproducts-tab .filter-title ul{list-style:none;padding:0;padding-right:20px} @@ -3063,7 +3048,7 @@ div.mobile-nav .sw-mobile-menu li>a span.cat-label,.menu.side-menu li>a span.cat i.ajax-loader{display:inline-block;vertical-align:middle;border:1px solid #08c;border-radius:20px;border-bottom-color:transparent!important} i.ajax-loader.small{width:16px;height:16px;border-width:2px 3px 1px 0} i.ajax-loader.large{width:32px;height:32px;border-width:3px 5px 2px 0} -#fullajax_loader i. {position:absolute;left:50%;top:50%;margin-left:-16px;margin-top:-16px} +#fullajax_loader i.ajax-loader{position:absolute;left:50%;top:50%;margin-left:-16px;margin-top:-16px} .add-to-cart #ajax_loader{margin:0 10px} .fixed-header .cart-area{right:0} @@ -3369,7 +3354,6 @@ iframe[name='google_conversion_frame'] { text-align: left; width: 130px; margin: -3px 0 0 0; - position: relative; } .product-optns-content input[type=button] { border: 0; @@ -3613,20 +3597,21 @@ script + img, script + iframe { button.button.btn-cart { vertical-align: top; } - span.btn-loader { - background: none repeat #56006b; + width: 48px; + height: 27px; + background: #56006b; border-radius: 5px; - cursor: default; display: none; - height: 27px; - line-height: 23px; + cursor: default; text-align: center; + line-height: 23px; vertical-align: top; - width: 48px; - position: absolute; - top: 0; - } +} +span.btn-loader img { + width: 16px; + height: 16px; +} .main-heading h1{ font-size: 16px; color: #333; @@ -3641,8 +3626,8 @@ span.btn-loader { margin-bottom: 10px; } .more-btn{ - margin-top: 25px; - line-height: 1.5; + margin-bottom: 20px; + text-align: justify; } .more-btn span{ line-height: 20px; @@ -4039,7 +4024,7 @@ ul.product-cont li{ width: 12%; float: left; text-align: center; - padding: 5px 0; + padding: 5px 0;ghjhk } ul.product-cont li:first-child{ width: 25%; @@ -4079,7 +4064,7 @@ ul.product-cont li p{ } .product-sec{ float: left; - width: 100%; + width: 100%;ghjhk } .grnad-totl-sec{ width: 100%; @@ -4162,32 +4147,6 @@ ul.grnad-totl li span{ padding:4px 0; margin:0; } -/*tolexo information in bottom container css*/ -.bottom-container-info { - border: 1px solid #d8d8d8; - text-align: justify; - padding: 10px; - margin: 0 0 25px; - height: 150px; - overflow: auto; -} -.bottom-container-info h1.bottom-info-h1 { - color:#777; - margin-bottom: 8px; - font-size: 18px; -} -.bottom-container-info .common-bottom-container-info{ - margin-bottom: 15px; - line-height: 1.3; -} -.bottom-container-info h2.bottom-info-h2 { - color:#777; - margin-bottom: 5px; - font-size: 16px; -} -.bottom-container-info a { - color: #777 !important; -} /*Responsive css*/ @media (max-width: 980px) { @@ -4638,583 +4597,88 @@ html, body{ } -/* Cart popup css */ -.cart-popUp { - background: #fff; - position: relative ; - min-height: 475px; -} -.cart-popUp .page-title h1 { - color: #fff; - text-align: left; - font-size: 16px; - font-weight: 100; - margin: 0; - padding: 10px; - text-transform: uppercase; - width: 100%; - position: relative; - background: #7c5685; -} -.cart-popup-ui .page-title span { - font-size: 12px; - text-transform: lowercase; - margin: 0 5px; - font-weight: 600; -} -.cart-popup-ui .cart-table-wrap { - border-radius: 0px; - padding: 0; - box-shadow: none; - border: none; - margin: 0; - float: left; - width: 100%; -} -.cart-popup-ui .discount { - width: 48% ; - float: left; - text-align: left; - margin-left: 15px !important; -} -.cart-popup-ui .discount h2 { - border: 1px dashed #d7cbdb; - border-radius: 0; -} -.cart-popup-ui .totals { - width: 48%; - float: right; -} -.cart-popup-ui .data-table thead th, -.main-cart .data-table thead th { - text-transform: uppercase; - font-weight: normal; - font-size: 12px; - color: #737373; - padding: 15px 10px 10px 10px; -} -.main-cart .data-table thead th { - font-weight: 600; - padding: 13px 10px; -} -.cart-popup-ui .totals .price, .main-cart .totals .price { - color: #404040; - text-align: right; -} -.cart-popup-ui .totals td { - color: #7f7f7f; - font-size: 14px; - padding: 5px 15px; - text-align: right !important; -} -.main-cart .totals td { - padding: 8px 10px; -} -.cart-popup-ui .totals tfoot td strong, -.main-cart .totals tfoot td strong { - font-weight: bold; -} -.cart-popup-ui .totals tr { - border-bottom: none; -} -.cart-popup-ui .wid20, .main-cart .wid20 { - width: 20%; -} -/*.cart-popup-ui .frst-wd, .main-cart .frst-wd { - width:120px; -}*/ -.cart-popup-ui .wid15 { - width: 15%; -} -.cart-popup-ui .wid35, .main-cart .wid35 { - width: 35%; -} -.cart-popup-ui .data-table td.product-name-td, -.main-cart .data-table td.product-name-td { - text-align: left; - color: #616161 !important; -} -.cart-popup-ui .data-table td.product-name-td a, -.main-cart .data-table td.product-name-td a { - color: #000; - font-size: 13px; - display: block; - line-height: 18px; - margin-left: -2px; -} -.cart-popup-ui .data-table td.product-name-td a:hover, -.main-cart .data-table td.product-name-td a:hover { - color: #56006b; -} -.cart-popup-ui .product-image img, -.main-cart .product-image img { - max-width: 48px; - width: auto; -} -.main-cart .data-table thead tr:nth-child(odd) { - background:#f7f7f7; - border-radius: 5px 5px 0 0; -} -.cart-popup-ui .data-table tr th { - background: #fff !important; -} -.cart-popup-ui .data-table tr:nth-child(odd), -.main-cart .data-table tr:nth-child(odd) { - background: #fcfcfc -} -.cart-popup-ui .data-table tr:nth-child(even), -.main-cart .data-table tr:nth-child(even) { - background: #fff -} - -/*.cart-popup-ui .dark-gry-bg, .main-cart .dark-gry-bg{ -background:#f7f7f7 -}*/ -.cart-popup-ui .data-table button.button, -.main-cart .data-table button.button { - float: none; - display: block; - margin: 0; -} -.cart-popup-ui .data-table button.button > span, -.main-cart .data-table button.button > span { - float: none; - display: block; - background: none; - border: none; - color: #1865b4; - text-decoration: none; - text-transform: uppercase; - margin: 0 7px; - padding: 0; - font-size: 10px; - line-height: 18px; -} -.cart-popup-ui .data-table button.button > span span, -.main-cart .data-table button.button > span span { - font-size: 10px; -} -.cart-popup-ui .data-table button.button:hover span, -.main-cart .data-table button.button:hover span { - background: none; - color: #1865b4; - text-decoration: underline; -} -.cart-popup-ui a.cart-remove, .main-cart a.cart-remove { - text-decoration: none; - text-transform: uppercase; - font-size: 10px; - color: #1865b4; -} -.cart-popup-ui a.cart-remove:hover, -.main-cart a.cart-remove:hover { - text-decoration: underline; -} -.cart-popup-ui .dark-gry-bg span, -.main-cart .dark-gry-bg span{ - color: #000; - font-size: 13px; -} -.cart-popup-ui .data-table .td-total span, -.main-cart .data-table .td-total span { - font-size: 13px; - color: #000; - font-weight: bold; -} -.cart-popup-ui .data-table tbody th, .data-table tbody td, -.main-cart .data-table tbody th, .data-table tbody td { - border-bottom: 1px solid #ececec; -} -.cart-popup-ui .cart-collaterals { - position: relative; - padding-bottom: 50px; - border-top: 2px solid #9b8a9f; - margin: 0 0 15px 0; - padding: 20px 0 50px 0; -} -.cart-popup-ui .cart-collaterals .checkout-continue-btn { - position: absolute; - bottom: 0; - left: 0; -} -.cart-popup-ui .cart-collaterals, -.main-cart .cart-collaterals { - float: left; - width: 100%; - margin: 0; -} -.cart-popup-ui .cart-collaterals .input-box, -.main-cart .cart-collaterals .input-box { - width: 100%; - position: relative; -} -.cart-popup-ui .cart-collaterals .input-box input.input-text, -.main-cart .cart-collaterals .input-box input.input-text { - border: 1px solid #d7cbdb; - border-radius: 0; - padding: 6px 5px 5px 30px; - height: 32px; - position: relative; - color: #737373; - text-transform: uppercase; - float: left; - width: 76%; - float: left; -} -.main-cart .cart-collaterals .input-box input.input-text { - width: 75%; - float: left; -} -.cart-popup-ui .discount button, -.main-cart .discount button { - margin:0 !important; - float: left; -} -.cart-popup-ui .discount button > span, -.main-cart .discount button > span { - height: 0; - line-height: 0; - padding: 15px 17px; - color: #666; - background: #e2e2e2; - border:1px solid #ccc; - border-radius: 0; - border-left: none; -} .filterOpen,.filter-header{ display: none; } -.cart-popup-ui .discount button.rmv-cupn > span, -.main-cart .discount button.rmv-cupn > span { - background: none !important; - border: none !important; - padding: 15px 0 8px 0; - color: #1865b4; - line-height: 1; - height: auto; -} -.cart-popup-ui .discount button.rmv-cupn > span > span, -.main-cart .discount button.rmv-cupn > span > span { - text-align: left; - white-space: normal; -} -.cart-popup-ui .close-check, -.main-cart .close-check { - display: none; -} -.main-cart .discount button > span { - padding: 15px 17px 15px 16px; -} -.cart-popup-ui .messages { - margin: 8px auto 0; - width: 97%; - clear: both; -} -.cart-popup-ui .error-msg li, -.main-cart .error-msg li, -.cart-popup-ui .success-msg li, -.main-cart .success-msg li { - border-radius: 0; - margin: 0; - text-align: left; - line-height: 18px; - padding:5px 8px; - font-size: 12px; - margin:0 0 5px 0 !important; -} -.cart-popup-ui .discount .buttons-set, -.main-cart .discount .buttons-set { - width: 17%; - float: left; - clear: none; - margin: 0 !important; -} -.main-cart .discount .buttons-set { - width: 25%; -} -.cart-popup-ui .discount .buttons-set button.button { - float: none; -} -.cart-popup-ui .validation-advice, -.main-cart .validation-advice { - display: none !important; - width: 100%; -} -.cart-popup-ui .validation-failed, -.main-cart .validation-failed { - border: 1px solid #f00 !important; -} -.cart-popup-ui .login-msg, -.main-cart .login-msg { - display: inline-block; - font-size: 11px; - color: #737373; - margin: 10px 0 0 0; -} -.cart-popup-ui .login-msg a, -.main-cart .login-msg a { - color: #1865b4; - text-decoration: none; -} -.cart-popup-ui .login-msg a:hover, -.main-cart .login-msg a:hover { - color: #1865b4; - text-decoration: underline; -} -.cart-popup-ui .input-box, -.main-cart .input-box { - position: relative; -} -.cart-popup-ui .rmv-cupn, -.main-cart .rmv-cupn -{ - display: block; width: 100%; margin: 10px 0; -} -.cart-popup-ui .rmv-cupn a:hover, -.main-cart .rmv-cupn a:hover { - text-decoration: none; -} -.cart-popup-ui .validation-advice, -.main-cart .validation-advice { - position: relative; -} -.cart-popup-ui .input-box span.feature-icn, -.main-cart .input-box span.feature-icn { - width: 25px; - height: 25px; - background: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v6.png') -73px -176px; - position: absolute; - display: inline-block; - z-index:50; - left: 4px; -} -.main-cart .input-box input { - font-size: 12px; -} -.main-cart .continue-btn span span { - font-size: 16px; -} -.cart-popup-ui .continue-btn { - width: 50%; - float: left; -} -.cart-popup-ui .continue-btn span { - background: #ededed none repeat scroll 0 0; - border-radius: 0; - color: #737373; - font-size: 18px; - font-weight: 100; - text-transform: uppercase; - position: relative; - padding: 3px 0; -} -.cart-popup-ui .continue-btn span span:before { - background: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v6.png') 0px -250px no-repeat; - content: ''; - position: absolute; - width: 20px; - height: 35px; - left: 60px; - transform:scale(0.6); - -webkit-transform:scale(0.6); - -ms-transform:scale(0.6); - -moz-transform:scale(0.6); -} -.cart-popup-ui .cart-empty .continue-btn { - float: none; - text-align: center; - margin: 30px 0 40px 0; - width: 370px; -} -.cart-popup-ui .cart-empty .continue-btn span { - background: #f67d00; - color: #fff; - font-weight: 600; -} -.cart-popup-ui .cart-empty .continue-btn span span:before { - background: none; -} -.cart-popup-ui .btn-checkout:hover span span { - background-position: 0px -251px; -} -.cart-popup-ui .btn-checkout { - float: right; - width: 50%; -} -.cart-popup-ui .btn-checkout { - background: #f4482c !important; - border-radius: 0; -} -.cart-popup-ui .btn-checkout span { - width: 100%; - background: #ff9212; - text-transform: uppercase; - font-weight: 100; - position: relative; - padding: 3px 0; - font-size: 18px; - border-radius: 0; -} -.cart-popup-ui .btn-checkout span span:before { - background: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v6.png') -37px -250px no-repeat; - content: ''; - position: absolute; - width: 20px; - height: 35px; - right:44px; - transform:scale(0.6); - -webkit-transform:scale(0.6); - -ms-transform:scale(0.6); - -moz-transform:scale(0.6); -} -.cart-popup-ui .btn-checkout:hover span span { - background-position: -37px -251px; -} -.cart-popup-ui .title-buttons .checkout-types button, -.main-cart .title-buttons .checkout-types button { - display: none; -} -.cart-popup-ui .cart-table { - display: block; - position: relative; -} -.cart-popup-ui .cart-table thead { - display: inline-block; - width: 100%; - margin-top: 0; -} -.cart-popup-ui .cart-table th, -.main-cart .cart-table th { - width: 100px; -} -.cart-popup-ui .cart-table th + th, -.main-cart .cart-table th + th { - width: 255px; -} -.cart-popup-ui .cart-table th + th + th, -.main-cart .cart-table th + th + th { - width: 80px; - text-align: left; -} -.cart-popup-ui .cart-table th + th + th + th, -.main-cart .cart-table th + th + th + th{ - text-align: right; - width: 140px; - padding-right: 20px; - } -.cart-popup-ui .cart-table td, -.main-cart .cart-table td { - width: 100px; - vertical-align: top; -} -.cart-popup-ui .cart-table td + td, -.main-cart .cart-table td + td { - width: 255px; -} -.cart-popup-ui .cart-table td + td +td, -.main-cart .cart-table td + td + td { - width: 80px; - text-align: left; -} -.cart-popup-ui .cart-table td + td + td + td, -.main-cart .cart-table td + td + td + td { - text-align: right; - width: 140px; - padding-right: 20px; - } -.cart-popup-ui .total-inner { - width: 95%; - display: block; -} -.cart-popup-ui .cart-popup-scroll { - display: inline-block; - width: 100%; - height: 250px; - overflow-y:auto; -} -.data-table .item-msg.error{ - border: none !important; -} -/* search result css */ + +/* search result css */ .block-layered-nav dt:first-child{ margin-top:5px; } .showing-result{ - font-size: 16px; - float: left; - color: #444; - font-weight: bold; - margin-bottom: 2px; -} -.showing-total { - font-size: 13px; - float: right; - color: #777; - margin-bottom: 2px; + font-size: 16px; + float: left; + color: #444; + font-weight: bold; + margin-bottom: 2px; } -.rad-link { - color: #cc0000; +.showing-total{ + font-size: 13px; + float: right; + color: #777; + margin-bottom: 2px; } -.showing-discrip { - font-size: 13px; - color: #777; - float: left; - width: 100%; - padding: 0px 0 5px 0; +.rad-link{ + color:#cc0000; } -.showing-discrip a { - text-decoration: underline; +.showing-discrip{ + font-size: 13px; + color: #777; + float: left; + width: 100%; + padding: 0px 0 5px 0; } -.showing-discrip a:hover { - text-decoration: none; +.showing-discrip a{ + text-decoration: underline; } -.catalogsearch-result-index .page-title > h2 { - width: 100%; - display: block; - margin: -12px 0 0 0 !important; +.showing-discrip a:hover{ + text-decoration: none; } -.cart-item{ - font-size: 14px; +.catalogsearch-result-index .page-title > h2{ +width:100%; +display:block; +margin:-12px 0 0 0 !important; } + /* Newsletter popup design css */ -.newsletter-bg h2 { - margin: 0 !important; +.newsletter-bg h2{ + margin:0 0 0 0 !important; } -.newsletter-bg p { - padding: 5px 0; +.newsletter-bg p{ + padding:5px 0; margin: 0 !important; color: #000; } -.newsletter-bg .bdr-btm { +.newsletter-bg .bdr-btm{ border-bottom: 1px solid #bcbabd; } -.newsletter-bg .top-cont { +.newsletter-bg .top-cont{ color: #f34242; text-transform: uppercase; position: relative; font-size: 16px; } -.top-cont span { +.top-cont span{ color: #bcbabd; } -.news-discrip { +.news-discrip{ font-size: 28px; text-transform: uppercase; padding: 12px 0 20px 0; color: #1d1b1e; } -.btm-cont { +.btm-cont{ color: #f34242; font-size: 16px; position: relative; height: 1px; background:#bdbdbd; } -.note-cont strong { +.note-cont strong{ color: #818181; } -.btm-cont span { +.btm-cont span{ background: #fbf9fc; padding: 0 15px; position: relative; @@ -5223,331 +4687,34 @@ margin-top:5px; .coupon-bg{ margin: 30px auto; } -.newsletter-bg .input-box input.input-text { +.newsletter-bg .input-box input.input-text{ font-size: 14px; color: #5a5a5a; } -.newsletter-bg p.note-cont { +.newsletter-bg p.note-cont{ text-align: left; font-size: 11px !important; color: #adadad !important; margin: 16px 0 0px 30px !important; } .newsletter-bg ::-webkit-input-placeholder { - color: #5a5a5a; - opacity: 1; + color: #5a5a5a; + opacity: 1; } .newsletter-bg :-moz-placeholder { /* Firefox 18- */ - color: #5a5a5a; - opacity: 1; + color: #5a5a5a; + opacity: 1; } .newsletter-bg ::-moz-placeholder { /* Firefox 19+ */ - color: #5a5a5a; - opacity: 1; + color: #5a5a5a; + opacity: 1; } .newsletter-bg :-ms-input-placeholder { - color: #5a5a5a; - opacity: 1; -} - -/* desktop css */ -.main-cart { - width: 100%; - float: left; -} -.main-cart .cart-table-wrap { - border: none; - box-shadow: none; - display: inline-block; - padding: 0; - width: 100%; -} -.main-cart form { - float: left; - width: 72%; -} -.main-cart form .cart-table { - width: 100%; - float: left; - border:1px solid #ececec; - border-radius: 5px 5px 0 0; -} -.main-cart .cart-collaterals { - width: 26%; - float: right; - margin: 0; -} -.main-cart .discount { - padding:0 0 10px 0; - border-bottom:1px solid #ececec; -} -.main-cart .cart-collaterals form, -.main-cart .totals { - width:100%; - float: right; -} -.main-cart .checkout-types, .main-cart .continue-btn { - width: 100%; -} -.main-cart .checkout-types button{ - width: 100%; - margin: 0 0 10px 0; -} -.main-cart .checkout-types span span{ - font-size: 16px; -} -.main-cart .page-title h1 { - margin: 0 0 15px 0 !important; - background: transparent; - font-weight: normal; - padding: 0; - text-transform:unset; -} -.main-cart .cart-collaterals { - border:1px solid #ececec; - padding: 10px; -} - -.cart-popup-ui .checkout-continue-btn { - width: 100%; - margin: 0; -} -.cart-popup-ui .pack, -.main-cart .pack { - font-size: 12px; - color: #989696; - float: left; - margin: 8px 0; - line-height: 12px; - padding: 0 10px 0 0; -} -.cart-popup-ui .sold, -.main-cart .sold { - color: #8f8f8f; - font-size: 12px; - float: left; - margin: 8px 0; - line-height: 12px; - display: none; -} -.cart-popup-ui .pack + .sold { - border-left: 1px solid #8f8f8f; - padding: 0 10px; -} -.main-cart .checkout-continue-btn button.continue-btn span { - background: #e2e2e2; - color: #666; - height: 42px; - line-height: 42px; -} -/* blank cart page popup css */ -.cart-empty { - text-align: center; - width: 100%; - display: inline-block; -} -.shoping-empty { - font-size: 22px; - color: #343434; - padding: 25px 0; - background: #fffff7; - border:1px dashed #ccc; - text-align: center; - width: 530px; - margin: 80px auto 0 auto; -} -.pop-categary { - font-size: 14px; - color: #343434; - text-align: center; - width: 100%; - font-weight: bold; - text-transform: uppercase; - margin: 20px 0 20px 0; -} -.category-nm { - display: inline-block; - max-width: 675px; - text-align: center; - width: 100%; -} -.category-nm li { - display: block; - float: left; - line-height: 25px; -} -.category-nm li a { - font-size: 12px; - color: #56006b; - border-right: 1px solid #ccc; - padding: 0 12px; -} -.category-nm li:last-child a { - border-right: 0; -} -.col1-layout .pop-categary, .col1-layout .category-nm { - display: none; -} -.col1-layout .shoping-empty { - margin: 0 auto; -} -.cart-blank-pg .continue-btn { - width: 370px; - margin: 30px 0 20px 0; -} -.cart-blank-pg .continue-btn span { - background: #f67d00; - border-radius: 0; - color: #fff; - font-size: 18px; - font-weight: 600; - text-transform: uppercase; - position: relative; - padding: 3px 0; -} -.cart-blank-pg .continue-btn span span:before { - background: none; -} -.cart-popup-ui .cart-empty-title h1 { - padding: 10px !important; -} -/*popup css*/ -/*.popup-innerxa{ - margin:0px auto ; - background: #ffffff ; - position: relative ; - overflow: hidden ; - padding:0px ; -}*/ -.cart-overlay{ - background: rgba(51, 51, 51, 0.8) ; - display: none ; - height: 100% ; - left: 0 ; - position: fixed ; - top: 0 ; - width: 100% ; - z-index: 200 ; - } - .cart-popUp{ - position: fixed ; - z-index: 201 ; - width: 720px; - padding: 1px; - box-sizing: border-box; - -webkit-transform: translate(0, -1000px); - -webkit-transition: transform ease-in 0.3s; - -moz-transform: translate(0, -1000px); - -moz-transition: transform ease-in 0.3s; - -o-transform: translate(0, -1000px); - -o-transition: transform ease-in 0.3s; - -ms-transform: translate(0, -1000px); - -ms-transition: transform ease-in 0.3s; - transform: translate(0, -1000px); - transition: transform ease-in 0.3s; - } -.cart-popUp-show { - -webkit-transform: translate(0); - -webkit-transition: transform ease-in 0.3s; - -moz-transform: translate(0); - -moz-transition: transform ease-in 0.3s; - -o-transform: translate(0); - -o-transition: transform ease-in 0.3s; - -ms-transform: translate(0); - -ms-transition: transform ease-in 0.3s; - transform: translate(0); - transition: transform ease-in 0.3s; -} -small.cart-close-bg { - display: none; - float:right; - cursor: pointer; - /*background:#56006b;*/ - padding: 12px 15px; - position: absolute; - right: 0; - top: 0px; - } -.cart-popUp-close { - color: #fff; - cursor: pointer; - display: none; - font-size: 18px; - height: 26px; - margin: 3px 0 0; - width: 16px; -} -.cart-popUp-close:hover { - color: #ccc; + color: #5a5a5a; + opacity: 1; } -.cart-popup-ui .btn-checkout.no-checkout, -.main-cart .btn-checkout.no-checkout { - opacity: 0.4; - cursor:default; -} -.cart-popup-ui .btn-checkout.no-checkout span, -.main-cart .btn-checkout.no-checkout span { - color:#fff !important; - opacity: 0.8; -} -.cart-popup-ui .btn-checkout.no-checkout span:hover, -.main-cart .btn-checkout.no-checkout span:hover { - color:#fff !important; - opacity: 0.8; -} -.cart-loader{ - width: 100%; - height: 100%; -} -.ajax-cart-loader { - position: absolute; - display: block; - top: 50%; - left: 50%; - margin-left: -146px; - margin-top: -16px; - text-align: center; - font-size: 20px; - color: #333; -} -.ajax-cart-loader:after { - background: url("http://d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/ajax_loader.gif") no-repeat; - content: ''; - position: absolute; - display: inline-block; - width: 32px; - height: 32px; - top: -4px; - right: -40px; -} -.main-cart .checkout-continue-btn { - float: left; - width: 100%; -} -.error-msg span.error-icn, .success-msg span.success-icn{ - background-position: -141px -254px; - height: 32px; - vertical-align: middle; - display: inline-block; - width: 5% !important; -} -.success-msg span.success-icn{ - background-position: -100px -254px; -} -.error-msg span, .success-msg span{ - vertical-align: middle; - display: inline-block; - width: 94% !important; -} -.err-qty{ - border: 1px solid #df280a !important; -} -.cart-popup-scroll .cart-price { - color: #000; - font-size: 13px; -} -/* deal btn css */ +/* deal btn css */ .header-container .menu-all-pages-container ul.menu > li:last-child { display: inline-block !important; float: right; @@ -5596,86 +4763,3 @@ small.cart-close-bg { .payment-discount{ color: #f67d00; } - -.cart-popup-scroll .ajaxpro-spinner { - margin: 25px 0 0 -40px; -} -.main-cart .btn-proceed-checkout span { - height: 42px; - line-height: 42px; - background:#ff9212; -} -.cart-popup-ui span i.checkout-loader, -.main-cart .btn-proceed-checkout span i.checkout-loader { - background: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/buynow-loader.gif') no-repeat center center; - content: ''; - height: 44px; - display: none; - width: 100%; -} -.cart-popup-ui span i.checkout-loader:before { - background: none !important; -} - -/* Unbox css home and product page*/ -.unbxd-widget-header { - position: relative; -} -.unbxd-class1.unbxd-head-recommendations > span { - background: #fff; - padding-right: 20px; - font-weight: bold; -} -.unbxd-control.unbxd-control-right, -.unbxd-control-left { - position: absolute !important; - top: 15px !important; -} -.unbxd-control.unbxd-control-right { - right: 20px; -} -.unbxd-control-left{ - right: 30px !important; - top: 15px !important; -} -.unbxd-head-recommendations { - background-position: right center !important; -} -.unbxd-headLeftHz { - width: 100% !important; -} -.unbxd-view-details { - font-weight: normal; - } -.unbxd-currency-symbol, .unbxd-currency-value{ - margin:0 0 10px 0; - } -.unbxd-currency-value { - margin-left: 2px; -} -.unbxd-width-x a:first-child{ - color: #444 !important; - font-size:12.5px !important -} -.unbxd-product-description{ - overflow: hidden !important ; - height: 34px !important; - color: #777 !important; - line-height:17px !important; -} -.unbxd-field-price a strike { - color: #444 !important; - font-size:12.5px !important; -} -.unbxd-contHz { - margin:10px 0 !important; -} -/* saf3+, chrome1+ */ -@media screen and (-webkit-min-device-pixel-ratio:0) { - .cart-popup-ui .cart-collaterals .checkout-continue-btn { - bottom: -2px; - } -} -.scroll-hide { - overflow: hidden; -} diff --git a/skin/frontend/smartwave/porto/css/responsive.css b/skin/frontend/smartwave/porto/css/responsive.css index 6e0f70b..d93e31d 100644 --- a/skin/frontend/smartwave/porto/css/responsive.css +++ b/skin/frontend/smartwave/porto/css/responsive.css @@ -294,8 +294,8 @@ .data-table.cart-table tbody tr.first td.action-td { top: -5px }*/ - .cart-popUp-show .cart .cart-table-wrap { - padding: 0px; + .cart .cart-table-wrap { + padding: 15px; } .data-table.cart-table tbody td.action-td .btn-remove2 { float: right; @@ -621,12 +621,6 @@ font-weight:600; text-transform: uppercase; } - .main-cart .input-box input{ - font-size: 11px; - } - .main-cart .discount button > span{ - padding: 15px 11px; - } } @media (min-width: 768px) and (max-width: 991px) { #banner-slider-demo-5, .homepage-bar { @@ -653,19 +647,8 @@ .add-to-cart button.button { width: 140px } - .cart-popUp{ - width: 780px; - left: 55%; - } - } @media (max-width: 991px) { - .main-cart .discount button > span { - padding: 15px 17px; - } - .buy-button-box { - height: 44px; - } .submenu-rightbox{ display: none; } @@ -1487,34 +1470,31 @@ .cart-table thead { display: none } - .data-table.cart-table .product-image, - .main-cart .data-table.cart-table .product-image { + .data-table.cart-table .product-image { z-index: 0 } - .data-table.cart-table tbody tr, - .main-cart .data-table.cart-table tbody tr{ + .data-table.cart-table tbody tr { position: relative; display: block; clear: both; padding: 25px 0; border-bottom: 1px solid #dcdcdc } - .data-table.cart-table tbody tr.first, - .main-cart .data-table.cart-table tbody tr.first{ + .data-table.cart-table tbody tr.first { padding-top: 0 } - .data-table.cart-table tbody td{ + .data-table.cart-table tbody td { display: block; padding: 5px; width: 100%; border-width: 0; text-align: center!important } - .data-table.cart-table tbody td.pr-img-td{ + .data-table.cart-table tbody td.pr-img-td { clear: both; padding: 0 0 15px } - .data-table.cart-table tbody td.action-td{ + .data-table.cart-table tbody td.action-td { top: 20px; z-index: 1 } @@ -1524,9 +1504,8 @@ .feedbackUser{ clear: left; } - /* Checkout Page Mobile Optimization */ -.main-cart #discount-coupon-form .discount-form{ + #discount-coupon-form .discount-form{ display: inline-block !important; width: 100%; background: transparent; @@ -1534,31 +1513,50 @@ position: relative; padding: 10px 0 22px; } - .main-cart #discount-coupon-form .discount { + #discount-coupon-form .discount { margin: 0 auto 30px; max-width: 292px; } - .main-cart #discount-coupon-form .discount h2, - .main-cart #discount-coupon-form .discount-form label, + #discount-coupon-form .discount h2, + #discount-coupon-form .discount-form label, .footer-bottom .custom-block{ display: none; } - .main-cart #discount-coupon-form .discount-form label+span{ + #discount-coupon-form .discount-form label+span{ position: absolute; left: 42px; bottom: 0; } - .main-cart #discount-coupon-form .discount-form .input-box{ + #discount-coupon-form .discount-form .input-box{ float: left; width: 195px; } - .main-cart #discount-coupon-form .discount-form .buttons-set{ + #discount-coupon-form input.input-text{ + border-radius:3px 0 0 3px; + padding: 0 10px; + margin: 0; + height: 32px !important; + border-color: #bbb; + border-right: none; + } + #discount-coupon-form .discount-form .buttons-set{ float: left; width: 95px; clear: none; } - - .main-cart #discount-coupon-form button.button + button.button span{ + #discount-coupon-form .buttons-set, + #discount-coupon-form .buttons-set .button{ + margin-top: 0; + } + #discount-coupon-form button.button span{ + line-height: 28px; + padding: 0 0 1px 0; + border-radius: 0 3px 3px 0; + font-size: 13px; + color: #666; + border-color: #bbb !important; + } + #discount-coupon-form button.button + button.button span{ background: transparent !important; border: none !important; line-height: 1; @@ -1567,60 +1565,60 @@ color: #e82f2c; margin-bottom: -2px; } - .main-cart .data-table.cart-table tbody td{ + .data-table.cart-table tbody td{ display: inline-block; width: auto; padding: 5px; } - .main-cart .data-table.cart-table tbody td.action-td { + .data-table.cart-table tbody td.action-td { position: absolute; top: 18px; right: -5px; z-index: 1; } - .main-cart td.action-td .btn-remove2 { + td.action-td .btn-remove2 { height: 14px; line-height: 15px; margin: 0 !important; padding: 0; width: 14px; } - .main-cart .product-name-td { + .product-name-td { vertical-align: top !important; padding-right: 18px !important; width: calc(100% - 42px) !important; } - .main-cart .product-name-td .product-name{ + .product-name-td .product-name{ text-align: left; } - .main-cart .cart .cart-table-wrap{ + .cart .cart-table-wrap{ padding: 10px; margin-bottom: 30px; } - .main-cart .totals .checkout-types.posiStatic{ + .totals .checkout-types.posiStatic{ background: transparent; margin-bottom: -20px; position: static; } - .main-cart .data-table.cart-table tbody td.pr-img-td{ + .data-table.cart-table tbody td.pr-img-td{ padding: 0; } - .main-cart .cart-table .qty-holder, .cart-table .qty-holder > input.qty { + .cart-table .qty-holder, .cart-table .qty-holder > input.qty { padding: 0; width: 50px !important; } - .main-cart .data-table.cart-table tbody tr{ + .data-table.cart-table tbody tr{ padding: 15px 0; } - .main-cart .cart-table button.button{ + .cart-table button.button{ margin-left: auto !important; margin-right: auto; max-width: 200px; } - .main-cart .title-buttons .checkout-types, .cart-table .btn-continue { + .title-buttons .checkout-types, .cart-table .btn-continue { display: none; } - .main-cart .cart-table .btn-update { + .cart-table .btn-update { display: block; float: none; margin-left: auto; @@ -1628,27 +1626,23 @@ width: 100%; max-width: 200px; } - .main-cart .cart-table td.product-name-td + td { + .cart-table td.product-name-td + td { margin-left: 45px; color: #555; } - .main-cart .cart-table .product-name a { + .cart-table .product-name a { color: #555 !important; } - .main-cart .error-msg, .success-msg, .note-msg, .notice-msg { - margin: 5px 0; - padding: 0; - } - .main-cart .shipping-offer { - background: #f8eeda; + .error-msg, .success-msg, .note-msg, .notice-msg{padding: 7px;} + .shipping-offer { + background: none repeat scroll 0 0 #f8eeda; border: 1px solid #f9e0ab; - line-height: 15px; - padding: 8px 10px; - text-align: left; - width: 100%; - margin: 10px 0 4px 0; + border-radius: 3px; + line-height: 18px; + padding: 4px 5px; + text-align: center; } - .main-cart #coupon_code + .validation-advice{ + #coupon_code + .validation-advice{ position: static; } /**** Drawer Nav for Mobile Site ****/ @@ -1899,142 +1893,7 @@ a.Safety:before{ a.Power_Transmission:before{ background-position: -196px -329px; } - /* Header Search for Mobile */ - .header-container.type4 .header #search_mini_form{ - display: block; - } - .header-container.type4 .header .form-search{ - left: auto; - min-width: 0; - right: 0 !important; - top: -5px; - width: 250px; - display: block; - padding-right: 32px !important; - } - .header-container.type4 .header .form-search::before{ - display: none; - } - .header .form-search #search{ - padding: 10px 7px; - height: 35px; - } - .header .form-search button.button{ - width: 32px; - height: 35px; - background-color: transparent; - border: 1px solid #ccc; - border-left: none; - } - #search_mini_form .icon-search:before{ - background-position:-72px -53px; - } - .header-container.type4 .menu-icon{ - margin-left: -10px; - } - .main-cart .data-table.cart-table tbody td.pr-img-td{ - margin-left: 10px; - width: 50px; - text-align: left; - display: inline-block; - } - .main-cart .data-table.cart-table tbody td.product-name-td { - padding-right: 18px !important; - vertical-align: top !important; - text-align: left !important; - display: inline-block; - width: calc(100% - 64px) !important; -} - .main-cart .data-table.cart-table tbody td{ - text-align: left; - display:inline-block; - width: auto; - vertical-align: top; - } - .main-cart .data-table.cart-table tbody td + td + td +td { - display: inline-block; - margin-left: 0; - } -.main-cart .data-table.cart-table tbody td + td + td{ - display: inline-block; - margin-left: 66px; -} -.main-cart form, .main-cart .cart-collaterals, -.main-cart .cart-collaterals form{ - width: 100%; - float: none; -} - .main-cart .continue-btn{ - display: none; -} - .main-cart .main-cart .checkout-types{ - float: none; - width: 100%; -} - .main-cart #discount-coupon-form{ - display: block; - margin: 0 auto; - width: 300px; -} - .main-cart #discount-coupon-form .discount{ - border: none; -} -.main-cart .cart-collaterals .input-box input.input-text{ - width: 64%; -} - -.cart-popup-ui{ - width:100%; -} -.cart-popup-ui .cart-popup-scroll { - display: inline-block; - width: 100%; - height: 150px; - overflow-y:auto; -} - -.cart-popup-ui .cart-table-wrap{ - padding: 2px 0; -} -.cart-popup-ui .data-table.cart-table th, -.cart-popup-ui .data-table.cart-table td{ - width: 100px; - display: inline-block; -} -.cart-popup-ui .data-table.cart-table th + th, -.cart-popup-ui .data-table.cart-table td + td{ - width: 392px; - text-align: left !important; - padding-left: 10px; -} -.cart-popup-ui .data-table.cart-table th + th + th, -.cart-popup-ui .data-table.cart-table td + td + td{ - width: 120px; -} -.cart-popup-ui .data-table.cart-table .button.btn-update span { - padding: 0 2px; -} -.cart-popup-ui .continue-btn span span::before{ - left: 55px; -} -.cart-popup-ui .btn-checkout span span::before{ - right: 45px; -} -.cart-popup-ui .title-buttons h1{ - padding: 10px; -} -.category-nm{ - max-width: 705px; -} -.category-nm li a{ - padding: 0 9px; -} -.main-cart .discount .buttons-set{ - width: 24%; -} - - } @media all and (max-width: 767px) { #banner-slider-demo-5, .homepage-bar { @@ -2708,7 +2567,8 @@ ul.sw-mobile-menu > li:first-child:hover a { .footer-middle .block .block-title strong{ font-size: 14px; } - .contact-info { + + .contact-info { display: inline-block; width: 100%; } @@ -2794,9 +2654,7 @@ ul.sw-mobile-menu > li:first-child:hover a { .fancybox-overlay, .fancybox-mobile{ display: none !important; } - .main-cart form{ - width: 100%; - } + .filterIcon .header-container.type4, .filterIcon .mobile-nav.side-block, .filterIcon .top-container, @@ -2886,9 +2744,6 @@ body:not(.customer-account-index) .col2-left-layout .col-left.sidebar{ body.boxed .page { width: 480px } - .main-cart .page-title h1 { - margin: 15px 0 !important; - } .owl-middle-narrow .owl-controls { display: none!important } @@ -3123,8 +2978,7 @@ body:not(.customer-account-index) .col2-left-layout .col-left.sidebar{ display: block; width: 100%; } - .totals .checkout-types, - .main-cart .checkout-types { + .totals .checkout-types { background: none repeat scroll 0 0 rgba(0, 0, 0, 0.7); bottom: 0; height: 55px; @@ -3134,28 +2988,13 @@ body:not(.customer-account-index) .col2-left-layout .col-left.sidebar{ width: 100%; z-index: 99999; } - .main-cart .checkout-types li{ - margin:10px 0; - clear: both; - } body.checkout-cart-index { padding-bottom: 55px; } body.checkout-cart-index #totop { display: none !important; } - .col1-layout .shoping-empty{ - width: 80%; - } - .cart-blank-pg .continue-btn{ - width: 60%; - } - .error-msg span.error-icn, .success-msg span.success-icn { - width: 8% !important - } - .error-msg span, .success-msg span { - width: 90% !important; - } + } @media all and (max-width: 620px){ /* Filter Section CSS*/ @@ -3367,7 +3206,7 @@ body:not(.customer-account-index) .col2-left-layout .col-left.sidebar{ .header-container.type1 .header-right-area>div:first-child { margin: 30px 0 } - .header-container.type1 .header .form-search, .header-container.type2 .header .form-search, .header-container.type3 .header .form-search, .header-container.type5 .header .form-search, .header-container.type6 .header .form-search, .header-container.type7 .header .form-search, .header-container.type8 .header .form-search { + .header-container.type1 .header .form-search, .header-container.type2 .header .form-search, .header-container.type3 .header .form-search, .header-container.type4 .header .form-search, .header-container.type5 .header .form-search, .header-container.type6 .header .form-search, .header-container.type7 .header .form-search, .header-container.type8 .header .form-search { width: 300px } .header-container.type2 .mybag-link .cart-info span { @@ -3484,53 +3323,15 @@ body:not(.customer-account-index) .col2-left-layout .col-left.sidebar{ .catalogsearch-result-index .category-products { margin: 5px 0 0; } - .col1-layout .shoping-empty{ - width: 100%; - font-size: 18px; - margin: 10px 0 0 0; - } - .cart-blank-pg .continue-btn{ - width: 100%; - } .payment-info-msg{ margin: 0; } - -} -@media (max-width: 460px) { - .header-container.type4 .header .form-search{ - width: 120px; - background-color: rgba(255, 255, 255, 0.98); - } - - - .main-cart form .cart-table{ - margin-top: 20px; - } - .cart-area .mini-cart{ - display: block !important; - } - .error-msg span.error-icn, .success-msg span.success-icn { - width: 10% !important - } - .error-msg span, .success-msg span { - width: 85% !important; - } - .main-cart form .cart-table{ - margin-top:0; - } - } @media (min-width: 400px) { - .cart-area div[id^=turpentine] { + .cart-area div { display: inline-block; } - } -@media all and (min-width: 400px) and (min-height: 270px) { - -} - @media (max-width: 400px) { /* .top-links-container { display: none; @@ -3538,11 +3339,6 @@ body:not(.customer-account-index) .col2-left-layout .col-left.sidebar{ .block-subscribe #advice-validate-email-newsletter_footer{ margin-top: 31px; } - - .header-container.type4 .header .logo img{ - width: 95px; - } - } @media screen and(-ms-high-contrast: active), (-ms-high-contrast: none) { .rating-box { @@ -3584,14 +3380,11 @@ body:not(.customer-account-index) .col2-left-layout .col-left.sidebar{ line-height: 12px; white-space: nowrap } -.main-cart .page-title{ - margin: 0px 0 20px 0; } .header .form-search #search{ color: #777; } -} /* For Product Recommandation sections*/ @@ -3617,7 +3410,6 @@ body:not(.customer-account-index) .col2-left-layout .col-left.sidebar{ .block-soldtogether-order .products-grid li.item:nth-child(3n+4){clear: left;} } - @media all and (max-width: 568px) and (min-width: 480px){ .block-soldtogether-order .products-grid li.item{ width: 50%; @@ -3672,23 +3464,6 @@ body:not(.customer-account-index) .col2-left-layout .col-left.sidebar{ } @media all and (max-width: 360px){ -.mobile-nav.side-block .sw-mobile-menu li:hover > a::before{ - background-position: -150px -160px !important; -} -.error-msg span.error-icn, .success-msg span.success-icn { - width: 12% !important - } - .error-msg span, .success-msg span { - width: 80% !important; - } - .main-cart .cart-collaterals .input-box input.input-text { - font-size: 11px; - } -} -@media all and (max-width: 320px){ - .main-cart .cart-collaterals .input-box input.input-text{ - width: 64%; - } .mobile-nav.side-block .sw-mobile-menu li:hover:not(.menu-item-has-children) > a:before { background-position: -150px -160px !important; } diff --git a/skin/frontend/smartwave/porto/icons/css/porto.css b/skin/frontend/smartwave/porto/icons/css/porto.css index b73ba57..65c5457 100644 --- a/skin/frontend/smartwave/porto/icons/css/porto.css +++ b/skin/frontend/smartwave/porto/icons/css/porto.css @@ -3,7 +3,7 @@ font-style: normal; font-weight: normal; speak: none; - background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v6.png'); + background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v5.png'); background-repeat: no-repeat; display: inline-block; @@ -566,9 +566,9 @@ display: none; .top-links-area ul.links .first { border-left: 0px !important; } -/*.top-links-area ul.links li:nth-child(2) { +.top-links-area ul.links li:nth-child(2) { display: none; -}*/ +} .header-container.type4 .header { padding: 20px 15px !important; } @@ -736,7 +736,7 @@ table.csku-sellers thead tr th { display: inline-block !important; } .cart-table .qty-holder, .cart-table .qty-holder > input.qty { -width: 55px !important; +width: 65px !important; } .filter-products .products div.item .product-image img { width: 155px !important; @@ -787,6 +787,7 @@ width: 55px !important; margin: 0 5px 0 0; color: #444 !important; } + @media (max-width:992px){ .product-view .product-img-box { width: 100% !important; @@ -881,6 +882,7 @@ width: 55px !important; width: 180px !important; margin-right: 15px !important; } + } @media (max-width:640px){ .qty-buy { @@ -892,6 +894,7 @@ width: 55px !important; background: #e5e5e5; margin-top: 12px !important; padding: 5px !important; + } .product-optns-content { padding-right: 15px 0 0 !important; @@ -1016,23 +1019,12 @@ width: 55px !important; width: 177px !important; } } -.cart-popup-ui .shipping-offer { - background: #f8eeda; - border: 1px solid #f9e0ab; - padding: 8px 10px; - text-align: left; - width: 97%; - line-height: 15px; - margin: 8px auto 0px auto; -} -.main-cart .shipping-offer { - background: #f8eeda; - border: 1px solid #f9e0ab; - padding: 8px 10px; - text-align: left; - width: 100%; - line-height: 15px; - margin: 8px auto 4px auto; + +.shipping-offer { + border: 1px solid #f9e0ab; + border-radius: 3px; + padding: 11px; + background: #f8eeda; } #inover { width: 600px; @@ -1114,7 +1106,7 @@ a.fancybox-close:before { content:''; width: 10px; height: 10px; - background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v6.png'); + background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v5.png'); background-position: -199px -90px; background-repeat: no-repeat; display: inline-block; @@ -1124,7 +1116,7 @@ a.fancybox-close:before { background-position: -162px 4px; width: 8px; height: 4px; - background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v6.png'); + background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v5.png'); background-repeat: no-repeat; } .header-container.type4 .main-nav ul.menu>li:hover>a:after, .header-container.type4 .main-nav ul.menu>li.act>a:after, .header-container.type4 .main-nav ul.menu>li:first-child > a:after { @@ -1138,7 +1130,7 @@ a.fancybox-close:before { background-position: -198px -90px; width: 10px; height: 10px; - background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v6.png'); + background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v5.png'); background-repeat: no-repeat; } .btn-remove2:before { @@ -1154,47 +1146,47 @@ a.fancybox-close:before { } .pager li >a.next { background-position: -81px -155px; - background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v6.png'); + background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v5.png'); background-repeat: no-repeat; transition: none; } .pager li >a.next:hover, .pager li >a.next:focus { background-position: -99px -155px; - background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v6.png'); + background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v5.png'); background-repeat: no-repeat; } .pager li >a.previous { background-position: -117px -155px; - background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v6.png'); + background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v5.png'); background-repeat: no-repeat; transition: none; } .pager li >a.previous:hover, .pager li >a.previous:focus { background-position: -135px -155px; - background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v6.png'); + background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v5.png'); background-repeat: no-repeat; } /* default.css classes */ .sorter .view-mode strong .icon-mode-list:before, .sorter .view-mode a:hover .icon-mode-list:before{ - background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v6.png'); + background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v5.png'); background-position: -145px -91px !important; background-repeat: no-repeat; } .sorter .view-mode strong .icon-mode-grid:before, .sorter .view-mode a:hover .icon-mode-grid:before{ - background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v6.png'); + background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v5.png'); background-position: -73px -91px; background-repeat: no-repeat; } .block-layered-nav dt:before, .block-category-nav .block-title:before { content: '' !important; background-position: -67px -120px; - background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v6.png'); + background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v5.png'); background-repeat: no-repeat; } .block-layered-nav dt:hover:before, .block-category-nav .block-title:hover:before { background-position: -85px -120px; - background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v6.png'); + background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v5.png'); background-repeat: no-repeat; } .block-layered-nav dt.closed:before, .block-category-nav .block-title.closed:before { @@ -1205,7 +1197,7 @@ a.fancybox-close:before { } .fa-bars:before { content: ''; - background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v6.png'); + background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v5.png'); background-position: -126px -54px; background-repeat: no-repeat; display: inline-block; @@ -1215,7 +1207,7 @@ a.fancybox-close:before { .mobile-nav.side-block .sw-mobile-menu li .open-child:after { content: ''; background-position: 0 -52px !important; - background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v6.png') !important; + background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v5.png') !important; background-repeat: no-repeat; width: 18px; height: 18px; @@ -1229,7 +1221,7 @@ a.fancybox-close:before { .mobile-nav .sw-mobile-menu > li > ul > li a:before { content: ''; background-position: -160px -162px; - background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v6.png'); + background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v5.png'); background-repeat: no-repeat; width: 7px; height: 10px; @@ -1245,7 +1237,7 @@ a.fancybox-close:before { .cart .discount h2:before, .cart .shipping h2:before { content: '' !important; background-position: -100px -116px; - background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v6.png'); + background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v5.png'); background-repeat: no-repeat; width: 7px; height: 5px; @@ -1253,17 +1245,18 @@ a.fancybox-close:before { .cart .discount h2:hover:before,.cart .shipping h2:hover:before { content: '' !important; background-position: -118px -116px !important; - background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v6.png') !important; + background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v5.png') !important; background-repeat: no-repeat; } .header-container .top-links-icon:before { content: ''; background-position: -108px -52px; - background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v6.png') !important; + background-image: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v5.png') !important; background-repeat: no-repeat; width: 8px; height: 6px; } + /* media query for mobile site */ @media only screen and (min-device-width : 320px) and (max-device-width : 480px) and (orientation : landscape) { .icon-search:before { @@ -1276,6 +1269,7 @@ a.fancybox-close:before { background-position: -71px 0; } } + @media only screen and (min-device-width : 320px) and (max-device-width : 480px) and (orientation : portrait) { .icon-search:before { content: ''; @@ -1482,7 +1476,7 @@ button.button.notify-btn{width: auto;} padding: 2px 0 0 0; } .free-shiphing-sec .shiping-icn{ - background: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v6.png') 0 -184px; + background: url('//d2ulloqlm1pj3b.cloudfront.net/skin/frontend/smartwave/porto/images/common-sprite-v5.png') 0 -184px; width: 34px; height: 20px; display: inline-block; @@ -1667,7 +1661,6 @@ button.button.notify-btn{width: auto;} } .parallax { padding: 30px 0 !important; - margin: 0; } .parallax-slider .owl-carousel p { font-size: 20px !important; diff --git a/skin/frontend/smartwave/porto/js/porto.js b/skin/frontend/smartwave/porto/js/porto.js index 082399e..416dcb7 100644 --- a/skin/frontend/smartwave/porto/js/porto.js +++ b/skin/frontend/smartwave/porto/js/porto.js @@ -306,7 +306,7 @@ if($(window).width() < 768){ } /* Checkout Page */ if($(window).width() > 991){ - // $('#discount-coupon-form input.input-text').removeAttr('placeholder'); + $('#discount-coupon-form input.input-text').removeAttr('placeholder'); } }); /**** Footer JS End here for New Design ****/ @@ -335,9 +335,7 @@ if($(window).width() < 768){ $('.logIn_link').prepend(myAcc.html()); } } - if($width <= 460){ - searchFld(); //For Mobile Search field. - } + /*Cart Page Placeholder attribute JS End*/ $(document).ready(function(){ subcatexpand(); @@ -347,37 +345,28 @@ if($(window).width() < 768){ } $(document).on('click','.filterOpen', function(){ $(this).parents('.wrapper').addClass('filterIcon'); - var screenHt = $(window).height(), - scrollTopBtn = $(this).parents('.main-container').siblings('#totop'); - $(this).parents('body, html').css({ + var screenHt = $(window).height(); + $(this).parents('body').css({ height: screenHt, overflow: "hidden" }); $('.filterIcon .col2-left-layout .col-left.sidebar').fadeIn(400).css('max-height',screenHt); - if(scrollTopBtn.css('display') == 'block'){ - scrollTopBtn.css('display','none'); - } }); $(document).on('click','.filter-cancel, .filter-apply', function(){ $(this).parents('.wrapper ').removeClass('filterIcon'); $('.col2-left-layout .col-left.sidebar').fadeOut(500); - $('body, html').removeAttr('style'); - var scrollTopBtn = $(this).parents('.main-container').siblings('#totop'); - if(scrollTopBtn.css('display') == 'none'){ - scrollTopBtn.removeAttr('style'); - } + $('body').removeAttr('style'); return false; }); /**** Fliter on catalog page script Ends Here ****/ $(window).resize(function(){ subcatexpand(); - var $width = $(window).width(); - if($width > 767){ + if($(window).width() > 767){ $('.col2-left-layout .col-left.sidebar').removeAttr('style'); } - if ($width < 992 && $width >= 768) { + if ($(window).width() < 992 && $(window).width() >= 768) { if($('body').hasClass('mobile-nav-shown')){ $('body').removeClass('mobile-nav-shown'); @@ -419,32 +408,10 @@ if($(window).width() < 768){ }); } } - //For Seach Field Animation for mobile Device - if($width <= 460){ - searchFld(); - } - if ($width > 460) { - $('.header .form-search #search').parent('.form-search').removeAttr('style'); - $('.header .form-search #search').on('focus', function(){ - $(this).parent('.form-search').stop().animate().removeAttr('style'); - }).on('blur', function(){ - $(this).parent('.form-search').stop().animate().removeAttr('style'); - }); - } - }); + }); - //For Disable Zooming on Input focus - function zoomDisable() { - $('head meta[name=viewport]').remove(); - $('head').prepend('<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0" />'); - } - - function zoomEnable() { - $('head meta[name=viewport]').remove(); - $('head').prepend('<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=1" />'); - } - $("input[type=text], textarea").mouseover(zoomDisable).mousedown(zoomEnable); + function subcatexpand(){ var subcatwrap = $('ul.subcategories'), @@ -491,7 +458,6 @@ if($(window).width() < 768){ }) - }); /* @@ -557,13 +523,3 @@ function setNewsletterCookies(type) { } } // Newsletter Popup Functionality - End -// For Search Field Animation -function searchFld(){ - var animateWidth = jQuery('.header-container.type4 .header').width() - 65; - jQuery('.header .form-search #search').on('focus', function(){ - jQuery(this).parent('.form-search').animate({width: animateWidth}) - }).on('blur', function(){ - jQuery(this).parent('.form-search').animate({width: '120px'}) - }); - } - diff --git a/utils/PLAfeedCSV.php b/utils/PLAfeedCSV.php index 541fe23..c7e6d26 100755 --- a/utils/PLAfeedCSV.php +++ b/utils/PLAfeedCSV.php @@ -1,14 +1,12 @@ <?php -$outputFile = '/var/www/magento/var/export/exportPLA_' . date('m_d_Y_His') . '.csv'; -$write = fopen($outputFile, "w"); +$rustart = getrusage(); +$time_start = microtime(true); -$heads = array("id", "SKU", "Visibility", "Status", "Type", "Vendor Code", "SKU Name", "In Stock", "Manage Stock", - "Use Config Manage Stock", "Qty", "Category Id", "Category", "PSKU Name", "URL", "Image URL", - "Price", "MSRP", "Base price", "Tax", "No of Items", "Description", "Brand Name", "Delivery Details", - "Volumetric weight", "Shipping weight", "Vendor code", "Part Number", "Key Feature 1","Key Feature 2", - "Key Feature 3", "Key Feature 4", "Key Feature 5", "Special_Price", "Special_Base_Price", "Special_Price_from_date", - "Special_Price_to_date", "Special_Base_Price_from_date", "Special_Base_Price_to_date", " PSKU ID"); -fputcsv($write, $heads); +$outputFile = '/var/www/magento/var/export/exportPLA_'.date('m_d_Y_His').'.csv'; +$write = fopen($outputFile,"w"); + +$heads = array("id","SKU","Visibility","Status","Type","Vendor Code","SKU Name","In Stock","Manage Stock","Use Config Manage Stock","Qty","Category Id","Category","PSKU Name","URL","Image URL","Price","MSRP","Base price","Tax","No of Items","Description","Brand Name","Delivery Details","Volumetric weight","Shipping weight","Vendor code","Part Number","Key Feature 1","Key Feature 2","Key Feature 3","Key Feature 4","Key Feature 5","Special_Price","Special_Base_Price","Special_Price_from_date","Special_Price_to_date","Special_Base_Price_from_date","Special_Base_Price_to_date"); +fputcsv($write,$heads); require_once 'connection.php'; @@ -16,134 +14,294 @@ $conn = mysql_connect($dbhost, $dbuser, $dbpass) or die('Error connecting to mys $dbname = 'magento'; mysql_select_db($dbname); -$sql = "SELECT DISTINCT(cpe.entity_id), cpev_8.value AS psku_id, eaov_4.value AS part_num, eaov_3.value AS num_items, - cpedt_4.value AS spc_base_price_todate, cpedt_3.value AS spc_base_price_fromdate, cpedt_2.value AS special_price_todate, - cpedt_1.value AS special_price_fromdate, cped_4.value AS special_base_price, cped_3.value AS special_price, - cpet_6.value AS key_feature_5, cpet_5.value AS key_feature_4, cpet_4.value AS key_feature_3, cpet_3.value AS key_feature_2, - cpet_2.value AS key_feature_1, vvv.display_name AS vendor_name, cpev_7.value AS ship_weight, cpev_6.value AS vol_weight, - eaov_2.value AS delivery_time, eaov_1.value AS brand_name, cpet_1.value AS short_desc, tc.class_name, - cpev_5.value AS base_price, cped_2.value AS msrp_price, cped_1.value AS cost_price, cpev_4.value AS image, - cpev_3.value AS url_path, cpev_2.value AS psku_name, csi.is_in_stock, csi.manage_stock, - csi.use_config_manage_stock, csi.qty, cpev_1.value AS name, vvv.vendor_code, cpe.sku, cpe.type_id, - cpei_1.value AS visible, cpei_2.value AS status - FROM catalog_product_entity AS cpe - LEFT JOIN catalog_product_entity_int AS cpei_1 ON cpei_1.entity_id = cpe.entity_id AND cpei_1.attribute_id = '102' - AND (cpei_1.value = '1' OR cpei_1.value = '3' OR cpei_1.value = '4') - LEFT JOIN catalog_product_entity_int AS cpei_2 ON cpei_2.entity_id = cpe.entity_id AND cpei_2.attribute_id = '96' - LEFT JOIN catalog_product_entity_int AS cpei_3 ON cpei_3.entity_id = cpe.entity_id AND cpei_3.attribute_id = '133' - LEFT JOIN vendor_vendordirectory_vendors AS vvv ON cpei_3.value = vvv.vendor_id - LEFT JOIN catalog_product_entity_varchar AS cpev_1 ON cpev_1.entity_id = cpe.entity_id AND cpev_1.attribute_id = '71' - LEFT JOIN cataloginventory_stock_item AS csi ON csi.product_id = cpe.entity_id - LEFT JOIN catalog_product_entity_varchar AS cpev_2 ON cpev_2.entity_id = cpe.entity_id AND cpev_2.attribute_id = '511' - LEFT JOIN catalog_product_entity_varchar AS cpev_3 ON cpev_3.entity_id = cpe.entity_id AND cpev_3.attribute_id = '98' - LEFT JOIN catalog_product_entity_varchar AS cpev_4 ON cpev_4.entity_id = cpe.entity_id AND cpev_4.attribute_id = '85' - LEFT JOIN catalog_product_entity_decimal AS cped_1 ON cped_1.entity_id = cpe.entity_id AND cped_1.attribute_id = '75' - LEFT JOIN catalog_product_entity_decimal AS cped_2 ON cped_2.entity_id = cpe.entity_id AND cped_2.attribute_id = '120' - LEFT JOIN catalog_product_entity_varchar AS cpev_5 ON cpev_5.entity_id = cpe.entity_id AND cpev_5.attribute_id = '501' - LEFT JOIN catalog_product_entity_int AS cpei_4 ON cpei_4.entity_id = cpe.entity_id AND cpei_4.attribute_id = '121' - LEFT JOIN tax_class AS tc ON tc.class_id = cpei_4.value - LEFT JOIN catalog_product_entity_text AS cpet_1 ON cpet_1.entity_id = cpe.entity_id AND cpet_1.attribute_id = '73' - LEFT JOIN catalog_product_entity_int AS cpei_5 ON cpei_5.entity_id = cpe.entity_id AND cpei_5.attribute_id = '268' - LEFT JOIN eav_attribute_option_value AS eaov_1 ON eaov_1.option_id = cpei_5.value - LEFT JOIN catalog_product_entity_int AS cpei_6 ON cpei_6.entity_id = cpe.entity_id AND cpei_6.attribute_id = '563' - LEFT JOIN eav_attribute_option_value AS eaov_2 ON eaov_2.option_id = cpei_6.value - LEFT JOIN catalog_product_entity_varchar AS cpev_6 ON cpev_6.entity_id = cpe.entity_id AND cpev_6.attribute_id = '565' - LEFT JOIN catalog_product_entity_varchar AS cpev_7 ON cpev_7.entity_id = cpe.entity_id AND cpev_7.attribute_id = '271' - LEFT JOIN catalog_product_entity_text AS cpet_2 ON cpet_2.entity_id = cpe.entity_id AND cpet_2.attribute_id = '536' - LEFT JOIN catalog_product_entity_text AS cpet_3 ON cpet_3.entity_id = cpe.entity_id AND cpet_3.attribute_id = '537' - LEFT JOIN catalog_product_entity_text AS cpet_4 ON cpet_4.entity_id = cpe.entity_id AND cpet_4.attribute_id = '538' - LEFT JOIN catalog_product_entity_text AS cpet_5 ON cpet_5.entity_id = cpe.entity_id AND cpet_5.attribute_id = '539' - LEFT JOIN catalog_product_entity_text AS cpet_6 ON cpet_6.entity_id = cpe.entity_id AND cpet_6.attribute_id = '540' - LEFT JOIN catalog_product_entity_decimal AS cped_3 ON cped_3.entity_id = cpe.entity_id AND cped_3.attribute_id = '76' - LEFT JOIN catalog_product_entity_decimal AS cped_4 ON cped_4.entity_id = cpe.entity_id AND cped_4.attribute_id = '1648' - LEFT JOIN catalog_product_entity_datetime AS cpedt_1 ON cpedt_1.entity_id = cpe.entity_id AND cpedt_1.attribute_id = '77' - LEFT JOIN catalog_product_entity_datetime AS cpedt_2 ON cpedt_2.entity_id = cpe.entity_id AND cpedt_2.attribute_id = '78' - LEFT JOIN catalog_product_entity_datetime AS cpedt_3 ON cpedt_3.entity_id = cpe.entity_id AND cpedt_3.attribute_id = '1650' - LEFT JOIN catalog_product_entity_datetime AS cpedt_4 ON cpedt_4.entity_id = cpe.entity_id AND cpedt_4.attribute_id = '1651' - LEFT JOIN catalog_product_entity_int AS cpei_7 ON cpei_7.entity_id = cpe.entity_id AND cpei_7.attribute_id = '517' - LEFT JOIN eav_attribute_option_value AS eaov_3 ON eaov_3.option_id = cpei_7.value - LEFT JOIN catalog_product_entity_int AS cpei_8 ON cpei_8.entity_id = cpe.entity_id AND cpei_8.attribute_id = '413' - LEFT JOIN eav_attribute_option_value AS eaov_4 ON eaov_4.option_id = cpei_8.value - LEFT JOIN catalog_product_relation AS cpr ON cpe.entity_id = cpr.child_id - LEFT JOIN catalog_product_entity_varchar AS cpev_8 ON cpr.parent_id = cpev_8.entity_id AND cpev_8.attribute_id = '141'"; +$sql = "select entity_id, sku, type_id from catalog_product_entity"; $result = mysql_query($sql); - -while ($row = mysql_fetch_array($result)) { +while($row1 =mysql_fetch_array($result)){ $data = array(); - $prod = $row['entity_id']; - $sku = $row['sku']; - $type = $row['type_id']; - - if ($row['visible'] == '4') { - $visible = 'Catalog Search'; - } else { - if ($row['visible'] == '3') { - $visible = 'Search'; - } else { - $visible = 'Not Visible Individually'; - } - } - $row1 = mysql_fetch_array(mysql_query("SELECT cce.path, ccp.category_id FROM catalog_category_product AS ccp - LEFT JOIN catalog_category_entity AS cce ON cce.entity_id = ccp.category_id - WHERE product_id = '" . $prod . "';")); - $categoryId = $row1['category_id']; - $categoryIds = str_replace('/', ',', $row1['path']); - $query = mysql_query("SELECT value from catalog_category_entity_varchar where entity_id in (" . $categoryIds . ") and attribute_id = '41';"); + $prod = $row1['entity_id']; + $sku = $row1['sku']; + $type = $row1['type_id']; + // visibility check + $sql = "SELECT value from catalog_product_entity_int where entity_id = '". $prod ."' and attribute_id = '102'"; + $query = mysql_query($sql); + $row2=mysql_fetch_array($query); + if($row2['value'] == '4' || $row2['value'] == '3' || $row2['value'] == '1') + { + // status check + $sql = "SELECT value from catalog_product_entity_int where entity_id = '".$prod."' and attribute_id = '96'"; + $query = mysql_query($sql); + $row=mysql_fetch_array($query); + //if($row['value'] == 1) + //{ + //id + $data[] = $prod; + //sku + $data[] = $sku; + //visibility + if($row2['value'] == '4') + $data[] = 'Catalog Search'; + else if($row2['value'] == '3') + $data[] = 'Search'; + else + $data[] = 'Not Visible Individually'; + //$data[] = ($row2['value'] == '4')?'Catalog Search':'Search'; + + //status + $data[] = $row['value']; + //Type + $data[] = $type; + //vendor + $sql = "SELECT vendor_code from vendor_vendordirectory_vendors,catalog_product_entity_int where entity_id = '".$prod."' and attribute_id = '133' and value=vendor_id"; + $query = mysql_query($sql); + $row=mysql_fetch_array($query); + $data[] = $row['vendor_code']; + //name + $sql = "SELECT value from catalog_product_entity_varchar where entity_id = '".$prod."' and attribute_id = '71'"; + $query = mysql_query($sql); + $row=mysql_fetch_array($query); + $name = $row['value']; + $name =str_replace(","," ",$name); + $name =str_replace("\n"," ",$name); + $name =str_replace("\r"," ",$name); + $name =str_replace("."," ",$name); + $data[] = $name; + + //In stock + $sql = "SELECT is_in_stock,manage_stock,use_config_manage_stock,qty from cataloginventory_stock_item where product_id = '".$prod."'"; + $query = mysql_query($sql); + $row=mysql_fetch_array($query); + $data[] = $row['is_in_stock']; + + //Manage Stock + $data[] = $row['manage_stock']; + + //Use Config Manage Stock + $data[] = $row['use_config_manage_stock']; + + //Quantity + $data[] = $row['qty']; - $c3 = array(); - if ($query) { - while ($row1 = mysql_fetch_array($query)) { - $c3[] = $row1['value']; - } - unset($c3[0], $c3[1], $c3[2]); + //category + $sql = "SELECT category_id from catalog_category_product where product_id = '".$prod."'"; + $query = mysql_query($sql); + $row=mysql_fetch_array($query); + $categoryId = $row['category_id']; + $data[] = $categoryId; + + //categoryPath + $sql = "SELECT path from catalog_category_entity where entity_id = '".$categoryId."'"; + $query = mysql_query($sql); + $row=mysql_fetch_array($query); + $categoryIds = $row['path']; + $c1 = explode("/",$categoryIds); + $categoryIds = str_replace('/', ',', $categoryIds); + $c3 = array(); + $sql = "SELECT value from catalog_category_entity_varchar where entity_id in (". $categoryIds .") and attribute_id = '41'"; + $query = mysql_query($sql); + while($row =mysql_fetch_array($query)){ + $c3[] = $row['value']; + } + unset($c3[0]);unset($c3[1]);unset($c3[2]); + $categoryPath = implode(" > ",$c3); + $categoryPath =str_replace(","," ",$categoryPath); + $categoryPath =str_replace("\n"," ",$categoryPath); + $categoryPath =str_replace("\r"," ",$categoryPath); + $categoryPath =str_replace("."," ",$categoryPath); + $data[] = $categoryPath; + + //psku name + $sql = "SELECT value from catalog_product_entity_varchar where entity_id = '".$prod."' and attribute_id = '511'"; + $query = mysql_query($sql); + $row=mysql_fetch_array($query); + $name = $row['value']; + $name =str_replace(","," ",$name); + $name =str_replace("\n"," ",$name); + $name =str_replace("\r"," ",$name); + $name =str_replace("."," ",$name); + $data[] = $name; + + //url_path + $sql = "SELECT value from catalog_product_entity_varchar where entity_id = '".$prod."' and attribute_id = '98'"; + $query = mysql_query($sql); + $row=mysql_fetch_array($query); + $data[] = "http://www.tolexo.com/".$row['value']; + + //Image + $sql = "SELECT value from catalog_product_entity_varchar where entity_id = '".$prod."' and attribute_id = '85'"; + $query = mysql_query($sql); + $row=mysql_fetch_array($query); + $data[] = "http://img.tolexokit.com/media/catalog/product".$row['value']; + + //cost_price + $sql = "SELECT value from catalog_product_entity_decimal where entity_id = '".$prod."' and attribute_id = '75'"; + $query = mysql_query($sql); + $row=mysql_fetch_array($query); + $price = $row['value']; +// if($price==''){ +// $sql = "SELECT value from catalog_product_entity_varchar where entity_id = '".$prod."' and attribute_id = '172'"; +// $query = mysql_query($sql); +// $row=mysql_fetch_array($query); +// $price = $row['value']; +// } + $data[] = $price; + + //msrp_price + $sql = "SELECT value from catalog_product_entity_decimal where entity_id = '".$prod."' and attribute_id = '120'"; + $query = mysql_query($sql); + $row=mysql_fetch_array($query); + $price = $row['value']; + $data[] = $price; + + //base_price + $sql = "SELECT value from catalog_product_entity_varchar where entity_id = '".$prod."' and attribute_id = '501'"; + $query = mysql_query($sql); + $row=mysql_fetch_array($query); + $data[] = $row['value']; + + //tax + $sql = "SELECT tax_class.class_name from tax_class LEFT JOIN catalog_product_entity_int ON tax_class.class_id = catalog_product_entity_int.value where catalog_product_entity_int.attribute_id=121 AND catalog_product_entity_int.entity_id='".$prod."'"; + $query = mysql_query($sql); + $row=mysql_fetch_array($query); + $data[] = $row['class_name']; + + //number_of_items + $sql = "SELECT eav_attribute_option_value.value from eav_attribute_option_value LEFT JOIN catalog_product_entity_int ON eav_attribute_option_value.option_id = catalog_product_entity_int.value where catalog_product_entity_int.attribute_id=517 AND catalog_product_entity_int.entity_id='".$prod."'"; + $query = mysql_query($sql); + $row=mysql_fetch_array($query); + $data[] = $row['value']; + + //short_description + $sql = "SELECT value from catalog_product_entity_text where entity_id = '".$prod."' and attribute_id = '73'"; + $query = mysql_query($sql); + $row=mysql_fetch_array($query); + $name = $row['value']; + $name =str_replace(","," ",$name); + $name =str_replace("\n"," ",$name); + $name =str_replace("\r"," ",$name); + $name =str_replace("."," ",$name); + $data[] = $name; + + //brand_name + $sql = "SELECT eav_attribute_option_value.value from eav_attribute_option_value LEFT JOIN catalog_product_entity_int ON eav_attribute_option_value.option_id = catalog_product_entity_int.value where catalog_product_entity_int.attribute_id=268 AND catalog_product_entity_int.entity_id='".$prod."'"; + $query = mysql_query($sql); + $row=mysql_fetch_array($query); + $data[] = $row['value']; + + //delivery_time + $sql = "SELECT eav_attribute_option_value.value from eav_attribute_option_value LEFT JOIN catalog_product_entity_int ON eav_attribute_option_value.option_id = catalog_product_entity_int.value where catalog_product_entity_int.attribute_id=563 AND catalog_product_entity_int.entity_id='".$prod."'"; + $query = mysql_query($sql); + $row=mysql_fetch_array($query); + $data[] = $row['value']; + + //volumetric_weight + $sql = "SELECT value from catalog_product_entity_varchar where entity_id = '".$prod."' and attribute_id = '565'"; + $query = mysql_query($sql); + $row=mysql_fetch_array($query); + $data[] = $row['value']; + + //shipping_weight + $sql = "SELECT value from catalog_product_entity_varchar where entity_id = '".$prod."' and attribute_id = '271'"; + $query = mysql_query($sql); + $row=mysql_fetch_array($query); + $data[] = $row['value']; + + //vendor_id + $sql = "SELECT vendor_vendordirectory_vendors.display_name from vendor_vendordirectory_vendors LEFT JOIN catalog_product_entity_int ON vendor_vendordirectory_vendors.vendor_id = catalog_product_entity_int.value where catalog_product_entity_int.attribute_id=133 AND catalog_product_entity_int.entity_id='".$prod."'"; + $query = mysql_query($sql); + $row=mysql_fetch_array($query); + $data[] = $row['display_name']; + + //part_number + $sql = "SELECT eav_attribute_option_value.value from eav_attribute_option_value LEFT JOIN catalog_product_entity_int ON eav_attribute_option_value.option_id = catalog_product_entity_int.value where catalog_product_entity_int.attribute_id=413 AND catalog_product_entity_int.entity_id='".$prod."'"; + $query = mysql_query($sql); + $row=mysql_fetch_array($query); + $data[] = $row['value']; + + //key_features_1 + $sql = "SELECT value from catalog_product_entity_text where entity_id = '".$prod."' and attribute_id = '536'"; + $query = mysql_query($sql); + $row=mysql_fetch_array($query); + $data[] = $row['value']; + + //key_features_2 + $sql = "SELECT value from catalog_product_entity_text where entity_id = '".$prod."' and attribute_id = '537'"; + $query = mysql_query($sql); + $row=mysql_fetch_array($query); + $data[] = $row['value']; + + //key_features_3 + $sql = "SELECT value from catalog_product_entity_text where entity_id = '".$prod."' and attribute_id = '538'"; + $query = mysql_query($sql); + $row=mysql_fetch_array($query); + $data[] = $row['value']; + + //key_features_4 + $sql = "SELECT value from catalog_product_entity_text where entity_id = '".$prod."' and attribute_id = '539'"; + $query = mysql_query($sql); + $row=mysql_fetch_array($query); + $data[] = $row['value']; + + //key_features_5 + $sql = "SELECT value from catalog_product_entity_text where entity_id = '".$prod."' and attribute_id = '540'"; + $query = mysql_query($sql); + $row=mysql_fetch_array($query); + $data[] = $row['value']; + + //Special_Price + $sql = "SELECT value from catalog_product_entity_decimal where entity_id = '".$prod."' and attribute_id = '76'"; + $query = mysql_query($sql); + $row=mysql_fetch_array($query); + $data[] = $row['value']; + + //Special_Base_Price + $sql = "SELECT value from catalog_product_entity_decimal where entity_id = '".$prod."' and attribute_id = '1648'"; + $query = mysql_query($sql); + $row=mysql_fetch_array($query); + $data[] = $row['value']; + + //Special_Price_from_date + $sql = "SELECT value from catalog_product_entity_datetime where entity_id = '".$prod."' and attribute_id = '77'"; + $query = mysql_query($sql); + $row=mysql_fetch_array($query); + $data[] = $row['value']; + + //Special_Price_to_date + $sql = "SELECT value from catalog_product_entity_datetime where entity_id = '".$prod."' and attribute_id = '78'"; + $query = mysql_query($sql); + $row=mysql_fetch_array($query); + $data[] = $row['value']; + + //Special_Base_Price_from_date + $sql = "SELECT value from catalog_product_entity_datetime where entity_id = '".$prod."' and attribute_id = '1650'"; + $query = mysql_query($sql); + $row=mysql_fetch_array($query); + $data[] = $row['value']; + + //Special_Base_Price_to_date + $sql = "SELECT value from catalog_product_entity_datetime where entity_id = '".$prod."' and attribute_id = '1651'"; + $query = mysql_query($sql); + $row=mysql_fetch_array($query); + $data[] = $row['value']; + + + fputcsv($write,$data); + // } + } - - $data[] = $prod; - $data[] = $sku; - $data[] = $visible; - $data[] = $row['status']; - $data[] = $type; - $data[] = $row['vendor_code']; - $data[] = processString($row['name']); - $data[] = $row['is_in_stock']; - $data[] = $row['manage_stock']; - $data[] = $row['use_config_manage_stock']; - $data[] = $row['qty']; - $data[] = $categoryId; - $data[] = processString(implode(" > ", $c3)); - $data[] = processString($row['psku_name']); - $data[] = "http://www.tolexo.com/" . $row['url_path']; - $data[] = "http://img.tolexokit.com/media/catalog/product" . $row['image']; - $data[] = $row['cost_price']; - $data[] = $row['msrp_price']; - $data[] = $row['base_price']; - $data[] = $row['class_name']; - $data[] = $row['num_items']; - $data[] = processString($row['short_desc']); - $data[] = $row['brand_name']; - $data[] = $row['delivery_time']; - $data[] = $row['vol_weight']; - $data[] = $row['ship_weight']; - $data[] = $row['vendor_name']; - $data[] = $row['part_num']; - $data[] = $row['key_feature_1']; - $data[] = $row['key_feature_2']; - $data[] = $row['key_feature_3']; - $data[] = $row['key_feature_4']; - $data[] = $row['key_feature_5']; - $data[] = $row['special_price']; - $data[] = $row['special_base_price']; - $data[] = $row['special_price_fromdate']; - $data[] = $row['special_price_todate']; - $data[] = $row['spc_base_price_fromdate']; - $data[] = $row['spc_base_price_todate']; - $data[] = $row['psku_id']; - fputcsv($write, $data); } - fclose($write); -function processString($str) -{ - return str_replace(array(",", "\n", "\r", "."), " ", $str); -} \ No newline at end of file +$time_end = microtime(true); +$execution_time = ($time_end - $time_start)/60; +$ru = getrusage(); +echo 'Total clock Time: '.$execution_time." Mins\n"; +echo "This process used " . rutime($ru, $rustart, "utime") . " ms for its computations\n"; +echo "It spent " . rutime($ru, $rustart, "stime") . " ms in system calls\n"; +echo 'PLA export Done.'."\n\n"; + + +function rutime($ru, $rus, $index) { + return ($ru["ru_$index.tv_sec"]*1000 + intval($ru["ru_$index.tv_usec"]/1000)) + - ($rus["ru_$index.tv_sec"]*1000 + intval($rus["ru_$index.tv_usec"]/1000)); +} +?> diff --git a/utils/PLAfeedXML.php b/utils/PLAfeedXML.php index 7b25982..ee19786 100755 --- a/utils/PLAfeedXML.php +++ b/utils/PLAfeedXML.php @@ -1,19 +1,6 @@ <?php $data = '<?xml version="1.0"?>'; -$data .= '<rss xmlns:g="http://base.google.com/ns/1.0" xmlns:c="http://base.google.com/cns/1.0" version="2.0">' - . '<channel>' - . '<title>Online Shopping of Industrial Goods, Fasteners,Power Tools, Safety Equipments and More. | Tolexo.com</title>' - . '<description>Buy over 50,000+ industrial products at lowest price and best quality on Tolexo.com. Shop online for fasteners, measuring Instruments,testing instruments, occupational health & safety products,power tools, hand tools,cutting tools and more!</description>' - . '<link>http://www.tolexo.com</link>' - . '<language>en-us</language>' - . '<ttl>60</ttl>' - . '<copyright>2014 Tolexo. All Rights Reserved.</copyright>' - . '<image>' - . '<url>http://d2ulloqlm1pj3b.cloudfront.net/skin/frontend/argento/argento/images/tolexo-logo.gif</url>' - . '<title>Tolexo.com</title>' - . '<link>http://www.tolexo.com</link>' - . '<description>One stop shop for all Industrial Goods</description>' - . '</image>'; +$data .= '<rss xmlns:g="http://base.google.com/ns/1.0" xmlns:c="http://base.google.com/cns/1.0" version="2.0">' . '<channel>' . '<title>Online Shopping of Industrial Goods, Fasteners,Power Tools, Safety Equipments and More. | Tolexo.com</title>' . '<description>Buy over 50,000+ industrial products at lowest price and best quality on Tolexo.com. Shop online for fasteners, measuring Instruments,testing instruments, occupational health & safety products,power tools, hand tools,cutting tools and more!</description>' . '<link>http://www.tolexo.com</link>' . '<language>en-us</language>' . '<ttl>60</ttl>' . '<copyright>2014 Tolexo. All Rights Reserved.</copyright>' . '<image>' . '<url>http://d2ulloqlm1pj3b.cloudfront.net/skin/frontend/argento/argento/images/tolexo-logo.gif</url>' . '<title>Tolexo.com</title>' . '<link>http://www.tolexo.com</link>' . '<description>One stop shop for all Industrial Goods</description>' . '</image>'; require_once 'connection.php'; @@ -21,106 +8,419 @@ $conn = mysql_connect($dbhost, $dbuser, $dbpass) or die('Error connecting to mys $dbname = 'magento'; mysql_select_db($dbname); -$sql = "SELECT DISTINCT(cpe.entity_id), cpet_6.value AS description, csi.qty, csi.is_in_stock, csi.manage_stock, csi.use_config_manage_stock, - cpei_7.value AS top_shopping_nw, cpev_4.value AS product_promo, cpei_6.value AS shopping_nw, eaov_3.value AS part_num, - cpet_5.value AS key_feature_5, cpet_4.value AS key_feature_4, cpet_3.value AS key_feature_3, cpet_2.value AS key_feature_2, - cpet_1.value AS key_feature_1, eaov_2.value AS brand_name, eaov_1.value AS num_items, cped_2.value AS spl_price, type_id, - cpev_3.value AS image_url, cpev_2.value AS name, cpev_1.value AS landingurl, cped_1.value AS price, cpe.sku - FROM catalog_product_entity AS cpe - INNER JOIN catalog_product_entity_int AS cpei_1 ON cpei_1.entity_id = cpe.entity_id AND cpei_1.attribute_id = '102' - AND cpei_1.value = '4' - INNER JOIN catalog_product_entity_int AS cpei_2 ON cpei_2.entity_id = cpe.entity_id AND cpei_2.attribute_id = '96' - AND cpei_2.value = '1' - INNER JOIN catalog_product_entity_decimal AS cped_1 ON cped_1.entity_id = cpe.entity_id AND cped_1.attribute_id = '75' - AND cped_1.value > '0' - INNER JOIN catalog_product_entity_varchar AS cpev_1 ON cpev_1.entity_id = cpe.entity_id AND cpev_1.attribute_id = '98' - AND cpev_1.value IS NOT NULL - LEFT JOIN catalog_product_entity_varchar AS cpev_2 ON cpev_2.entity_id = cpe.entity_id AND cpev_2.attribute_id = '71' - AND cpev_2.value IS NOT NULL - LEFT JOIN catalog_product_entity_varchar AS cpev_3 ON cpev_3.entity_id = cpe.entity_id AND cpev_3.attribute_id = '85' - AND cpev_3.value IS NOT NULL - LEFT JOIN catalog_product_entity_decimal AS cped_2 ON cped_2.entity_id = cpe.entity_id AND cped_2.attribute_id = '120 ' - AND cped_2.value > '0' - LEFT JOIN catalog_product_entity_int AS cpei_3 ON cpei_3.entity_id = cpe.entity_id AND cpei_3.attribute_id = '517' - LEFT JOIN eav_attribute_option_value AS eaov_1 ON eaov_1.option_id = cpei_3.value - LEFT JOIN catalog_product_entity_int AS cpei_4 ON cpei_4.entity_id = cpe.entity_id AND cpei_4.attribute_id = '268' - LEFT JOIN eav_attribute_option_value AS eaov_2 ON eaov_2.option_id = cpei_4.value - LEFT JOIN catalog_product_entity_text AS cpet_1 ON cpet_1.entity_id = cpe.entity_id AND cpet_1.attribute_id = '536' - LEFT JOIN catalog_product_entity_text AS cpet_2 ON cpet_2.entity_id = cpe.entity_id AND cpet_2.attribute_id = '537' - LEFT JOIN catalog_product_entity_text AS cpet_3 ON cpet_3.entity_id = cpe.entity_id AND cpet_3.attribute_id = '538' - LEFT JOIN catalog_product_entity_text AS cpet_4 ON cpet_4.entity_id = cpe.entity_id AND cpet_4.attribute_id = '539' - LEFT JOIN catalog_product_entity_text AS cpet_5 ON cpet_5.entity_id = cpe.entity_id AND cpet_5.attribute_id = '540' - LEFT JOIN catalog_product_entity_int AS cpei_5 ON cpei_5.entity_id = cpe.entity_id AND cpei_5.attribute_id = '413' - LEFT JOIN catalog_product_entity_text AS cpet_6 ON cpet_6.entity_id = cpe.entity_id AND cpet_6.attribute_id = '73' - LEFT JOIN eav_attribute_option_value AS eaov_3 ON eaov_3.option_id = cpei_5.value - LEFT JOIN catalog_product_entity_int AS cpei_6 ON cpei_6.entity_id = cpe.entity_id AND cpei_6.attribute_id = '' - LEFT JOIN catalog_product_entity_varchar AS cpev_4 ON cpev_4.entity_id = cpe.entity_id AND cpev_4.attribute_id = '' - LEFT JOIN catalog_product_entity_int AS cpei_7 ON cpei_7.entity_id = cpe.entity_id AND cpei_7.attribute_id = '774' - LEFT JOIN cataloginventory_stock_item AS csi ON csi.product_id = cpe.entity_id"; +// code for getting attribute code for show in shopping network attribute +$sqlattribute = "SELECT attribute_id FROM eav_attribute WHERE attribute_code = 'show_in_shopping_network'"; +$resultattribute = mysql_query($sqlattribute); +$rowattribute = mysql_fetch_array($resultattribute); +$shop_attr_id = $rowattribute['attribute_id']; + +// code for getting attribute code for Product Promo +$sqlattribute = "SELECT attribute_id FROM eav_attribute WHERE attribute_code = 'product_promo'"; +$resultattribute = mysql_query($sqlattribute); +$rowattribute = mysql_fetch_array($resultattribute); +$product_promo_attr_id = $rowattribute['attribute_id']; + +// code for getting attribute code for Top Products in Shopping Nw +$sqlattribute = "SELECT attribute_id FROM eav_attribute WHERE attribute_code = 'top_prod_shop_nw'"; +$resultattribute = mysql_query($sqlattribute); +$rowattribute = mysql_fetch_array($resultattribute); +$top_prod_shop_nw_attr_id = $rowattribute['attribute_id']; + +$sql = "select entity_id, sku from catalog_product_entity"; $result = mysql_query($sql); -while ($row = mysql_fetch_array($result)) { - $prod = $row['entity_id']; - $price = $row['price']; - $landingUrl = $row['landingurl']; - $splprice = $row['spl_price']; - $brandName = processString($row['brand_name']); - $top_prod_shop_nw = $row['top_shopping_nw']; +while ($row1 = mysql_fetch_array($result)) { + $prod = $row1['entity_id']; - $row1 = mysql_fetch_array(mysql_query("SELECT cce.path FROM catalog_category_product AS ccp - LEFT JOIN catalog_category_entity AS cce ON cce.entity_id = ccp.category_id - WHERE product_id = '" . $prod . "';")); - $categoryIds = $row1['path']; - $categoryIds = str_replace('/', ',', $categoryIds); - $c3 = array(); - $query = mysql_query("SELECT value from catalog_category_entity_varchar where entity_id in (" . $categoryIds . ") and attribute_id = '41'"); - if ($query) { - while ($row1 = mysql_fetch_array($query)) { - $c3[] = $row1['value']; + // visibility check + $sql = "SELECT value from catalog_product_entity_int where entity_id = '" . $prod . "' and attribute_id = '102'"; + $query = mysql_query($sql); + $row2 = mysql_fetch_array($query); + if ($row2['value'] == '4') { + // status check + $sql = "SELECT value from catalog_product_entity_int where entity_id = '" . $prod . "' and attribute_id = '96'"; + $query = mysql_query($sql); + $row = mysql_fetch_array($query); + if ($row['value'] == 1) { + // price check + $sql = "SELECT value from catalog_product_entity_decimal where entity_id = '" . $prod . "' and attribute_id = '75'"; + $query = mysql_query($sql); + $row = mysql_fetch_array($query); + $price = $row['value']; + + if ($price > 0) { + // url check + $sql = "SELECT value from catalog_product_entity_varchar where entity_id = '" . $prod . "' and attribute_id = '98'"; + $query = mysql_query($sql); + $row = mysql_fetch_array($query); + $landingUrl = $row['value']; + + if ($landingUrl) { + $data .= '<item>'; + // id + $data .= '<g:id>'; + $data .= $row1['sku']; + $data .= '</g:id>'; + + // name + $data .= '<title><![CDATA['; + $sql = "SELECT value from catalog_product_entity_varchar where entity_id = '" . $prod . "' and attribute_id = '71'"; + $query = mysql_query($sql); + $row = mysql_fetch_array($query); + $name = $row['value']; + $name = str_replace(",", " ", $name); + $name = str_replace("\n", " ", $name); + $name = str_replace("\r", " ", $name); + $name = str_replace(".", " ", $name); + $name = preg_replace('/\x{00B0}/u', " degrees ", $name); + if (strlen($name) > 150) + $name = substr($name, 0, 149); + $skuName = $name; + $data .= $name; + $data .= ']]></title>'; + + // category + // $data .='<categoryId><![CDATA['; + $sql = "SELECT category_id from catalog_category_product where product_id = '" . $prod . "'"; + $query = mysql_query($sql); + $row = mysql_fetch_array($query); + $categoryId = $row['category_id']; + // $data .= $categoryId; + // $data .=']]></categoryId>'; + + // categoryPath + $data .= '<g:product_type><![CDATA['; + $sql = "SELECT path from catalog_category_entity where entity_id = '" . $categoryId . "'"; + $query = mysql_query($sql); + $row = mysql_fetch_array($query); + $categoryIds = $row['path']; + $c1 = explode("/", $categoryIds); + $categoryIds = str_replace('/', ',', $categoryIds); + $c3 = array(); + $sql = "SELECT value from catalog_category_entity_varchar where entity_id in (" . $categoryIds . ") and attribute_id = '41'"; + $query = mysql_query($sql); + while ($row = mysql_fetch_array($query)) { + $c3[] = $row['value']; + } + unset($c3[0]); + unset($c3[1]); + unset($c3[2]); + $categoryPath = implode(" > ", $c3); + $categoryPath = str_replace(",", " ", $categoryPath); + $categoryPath = str_replace("\n", " ", $categoryPath); + $categoryPath = str_replace("\r", " ", $categoryPath); + $categoryPath = str_replace(".", " ", $categoryPath); + $data .= $categoryPath; + $data .= ']]></g:product_type>'; + + $data .= '<g:google_product_category></g:google_product_category>'; + + // url_path + $data .= '<link><![CDATA['; + $data .= "http://www.tolexo.com/" . $landingUrl; + $data .= ']]></link>'; + + $data .= '<mobile_link>' . "http://www.tolexo.com/" . $landingUrl . '</mobile_link>' . '<g:adwords_redirect/>' . '<c:drlp type="url">' . "http://www.tolexo.com/" . $landingUrl . '</c:drlp>'; + + // Image + $data .= '<g:image_link><![CDATA['; + $sql = "SELECT value from catalog_product_entity_varchar where entity_id = '" . $prod . "' and attribute_id = '85'"; + $query = mysql_query($sql); + $row = mysql_fetch_array($query); + $data .= "http://img.tolexokit.com/media/catalog/product" . $row['value']; + $data .= ']]></g:image_link>'; + + // condition + $data .= '<g:condition>New</g:condition>'; + + // availability + // $data .='<g:availability>In stock</g:availability>'; + $data .= '<g:availability>'; + $sql = "select type_id from catalog_product_entity where entity_id = '" . $prod . "'"; + $res = mysql_query($sql); + $res = mysql_fetch_array($res); + + $sql = "SELECT csi.qty,csi.is_in_stock,csi.manage_stock, csi.use_config_manage_stock from cataloginventory_stock_item as csi where csi.product_id = '" . $prod . "'"; + $query = mysql_query($sql); + $row = mysql_fetch_array($query); + if ($res['type_id'] == 'simple') { + if ($row['use_config_manage_stock'] == 1) { + $data .= 'In Stock'; + } else { + if ($row['manage_stock'] == 1) { + if ($row['qty'] <= 0 || $row['is_in_stock'] == 0) { + $data .= 'Out of Stock'; + } else { + $data .= 'In Stock'; + } + } else { + $data .= 'In Stock'; + } + } + } else { + // configureable products + $sql = "SELECT child_id FROM catalog_product_relation where parent_id = '" . $prod . "'"; + $query = mysql_query($sql); + $childArr = array(); + while ($row = mysql_fetch_array($query)) { + $childArr[] = $row['child_id']; + } + if (! empty($childArr)) { + $flag = false; + foreach ($childArr as $key => $value) { + $sql = "SELECT value from catalog_product_entity_int where entity_id ='" . $value . "'and attribute_id = '96'"; + $query = mysql_query($sql); + $row3 = mysql_fetch_array($query); + if ($row3['value'] == 1) { + $sql = "SELECT csi.qty,csi.is_in_stock,csi.manage_stock, csi.use_config_manage_stock from cataloginventory_stock_item as csi where csi.product_id = '" . $value . "'"; + $query = mysql_query($sql); + $row = mysql_fetch_array($query); + if ($row['use_config_manage_stock'] == 1) { + $flag = true; + } else { + if ($row['manage_stock'] == 1) { + if ($row['qty'] <= 0 || $row['is_in_stock'] == 0) { + $flag = false; + } else { + $flag = true; + } + } else { + $flag = true; + } + } + } else { + $flag = false; + } + if ($flag) + break; + } + if ($flag) { + $data .= 'In Stock'; + } else { + $data .= 'Out of Stock'; + } + } else { + $data .= 'Out of Stock'; + } + } + $data .= '</g:availability>'; + + // cost_price + $data .= '<g:sale_price>'; + $data .= $price; + $data .= '</g:sale_price>'; + + // Tag For MSRP + + $data .= '<g:price>'; + + $sql = "SELECT value from catalog_product_entity_decimal where entity_id = '" . $prod . "' and attribute_id = '120'"; + $query = mysql_query($sql); + $row = mysql_fetch_array($query); + $splprice = $row['value']; + + $data .= $splprice; + $data .= '</g:price>'; + + // Tag For Number of Items + + $data .= '<g:multipack>'; + + $sql = "SELECT value from catalog_product_entity_int where entity_id = '" . $prod . "' and attribute_id = '517'"; + $query = mysql_query($sql); + $row = mysql_fetch_array($query); + $atrvalue = $row['value']; + + $sql = "SELECT value from eav_attribute_option_value where option_id = '" . $atrvalue . "'"; + $query = mysql_query($sql); + $row = mysql_fetch_array($query); + $num_items = $row['value']; + + $data .= $num_items; + $data .= '</g:multipack>'; + + $data .= '<g:expiration_date></g:expiration_date>' . '<g:adwords_labels>Warranty:Seller Warranty</g:adwords_labels>' . '<g:adwords_labels></g:adwords_labels>' . '<g:adwords_labels></g:adwords_labels>' . '<g:adwords_labels></g:adwords_labels>'; + + // brand_name + $data .= '<g:brand>'; + $sql = "SELECT eav_attribute_option_value.value from eav_attribute_option_value LEFT JOIN catalog_product_entity_int ON eav_attribute_option_value.option_id = catalog_product_entity_int.value where catalog_product_entity_int.attribute_id=268 AND catalog_product_entity_int.entity_id='" . $prod . "'"; + $query = mysql_query($sql); + $row = mysql_fetch_array($query); + $name = $row['value']; + $name = str_replace(",", " ", $name); + $name = str_replace("\n", " ", $name); + $name = str_replace("\r", " ", $name); + $name = str_replace(".", " ", $name); + $name = str_replace("&", "&", $name); + $name = preg_replace('/\x{00B0}/u', " degrees ", $name); + $brandName = $name; + $data .= $name; + $data .= '</g:brand>'; + + // Description - start + $data .= '<g:description><![CDATA['; + $data .= "Buy " . $skuName . " from Brand: " . $brandName . " having features "; + + // short_description + $sql = "SELECT value from catalog_product_entity_text where entity_id = '" . $prod . "' and attribute_id = '73'"; + $query = mysql_query($sql); + $row = mysql_fetch_array($query); + $name = $row['value']; + $name = str_replace(",", " ", $name); + $name = str_replace("\n", " ", $name); + $name = str_replace("\r", " ", $name); + $name = str_replace(".", " ", $name); + $name = str_replace("&", "&", $name); + $name = preg_replace('/\x{00B0}/u', " degrees ", $name); + $data .= $name; + + // key_features_1 + $sql = "SELECT value from catalog_product_entity_text where entity_id = '" . $prod . "' and attribute_id = '536'"; + $query = mysql_query($sql); + $row = mysql_fetch_array($query); + $name = $row['value']; + $name = str_replace(",", " ", $name); + $name = str_replace("\n", " ", $name); + $name = str_replace("\r", " ", $name); + $name = str_replace(".", " ", $name); + $name = str_replace("&", "&", $name); + $name = preg_replace('/\x{00B0}/u', " degrees ", $name); + if ($name) { + $data .= " and "; + $data .= $name . " "; + } + + // key_features_2 + $sql = "SELECT value from catalog_product_entity_text where entity_id = '" . $prod . "' and attribute_id = '537'"; + $query = mysql_query($sql); + $row = mysql_fetch_array($query); + $name = $row['value']; + $name = str_replace(",", " ", $name); + $name = str_replace("\n", " ", $name); + $name = str_replace("\r", " ", $name); + $name = str_replace(".", " ", $name); + $name = str_replace("&", "&", $name); + $name = preg_replace('/\x{00B0}/u', " degrees ", $name); + if ($name) { + $data .= $name . " "; + } + + // key_features_3 + $sql = "SELECT value from catalog_product_entity_text where entity_id = '" . $prod . "' and attribute_id = '538'"; + $query = mysql_query($sql); + $row = mysql_fetch_array($query); + $name = $row['value']; + $name = str_replace(",", " ", $name); + $name = str_replace("\n", " ", $name); + $name = str_replace("\r", " ", $name); + $name = str_replace(".", " ", $name); + $name = str_replace("&", "&", $name); + $name = preg_replace('/\x{00B0}/u', " degrees ", $name); + if ($name) { + $data .= $name . " "; + } + + // key_features_4 + $sql = "SELECT value from catalog_product_entity_text where entity_id = '" . $prod . "' and attribute_id = '539'"; + $query = mysql_query($sql); + $row = mysql_fetch_array($query); + $name = $row['value']; + $name = str_replace(",", " ", $name); + $name = str_replace("\n", " ", $name); + $name = str_replace("\r", " ", $name); + $name = str_replace(".", " ", $name); + $name = str_replace("&", "&", $name); + $name = preg_replace('/\x{00B0}/u', " degrees ", $name); + if ($name) { + $data .= $name . " "; + } + + // key_features_5 + $sql = "SELECT value from catalog_product_entity_text where entity_id = '" . $prod . "' and attribute_id = '540'"; + $query = mysql_query($sql); + $row = mysql_fetch_array($query); + $name = $row['value']; + $name = str_replace(",", " ", $name); + $name = str_replace("\n", " ", $name); + $name = str_replace("\r", " ", $name); + $name = str_replace(".", " ", $name); + $name = str_replace("&", "&", $name); + $name = preg_replace('/\x{00B0}/u', " degrees ", $name); + if ($name) { + $data .= $name . " "; + } + + // part_number + $sql = "SELECT eav_attribute_option_value.value from eav_attribute_option_value LEFT JOIN catalog_product_entity_int ON eav_attribute_option_value.option_id = catalog_product_entity_int.value where catalog_product_entity_int.attribute_id=413 AND catalog_product_entity_int.entity_id='" . $prod . "'"; + $query = mysql_query($sql); + $row = mysql_fetch_array($query); + if ($row['value']) { + $data .= "with part number " . $row['value'] . ". "; + } + + $data .= "The " . $skuName . " is a " . $c3[3] . " with features of " . $c3[4]; + if (isset($c3[5])) + $data .= " and " . $c3[5]; + $data .= " in category " . $categoryPath; + $data .= ']]></g:description>'; + // Description - end + + // show in shopping network + $data .= '<g:excluded_destination>'; + $sql = "SELECT value from catalog_product_entity_int where entity_id = '" . $prod . "' and attribute_id = '" . $shop_attr_id . "'"; + $query = mysql_query($sql); + $row = mysql_fetch_array($query); + if (isset($row['value'])) { + if ($row['value'] == 0) { + $data .= 'Shopping,Display Ads'; + } else { + $data .= ''; + } + } else { + $data .= ''; + } + + $data .= '</g:excluded_destination>'; + + // Product Promo + $data .= '<g:custom_label_1>'; + $sql = "SELECT value from catalog_product_entity_varchar where entity_id = '" . $prod . "' and attribute_id = '" . $product_promo_attr_id . "'"; + $query = mysql_query($sql); + $row = mysql_fetch_array($query); + $promo = $row['value']; + + $data .= $promo; + $data .= '</g:custom_label_1>'; + + + // Top Products in Shopping Nw + $data .= '<g:custom_label_2>'; + $sql = "SELECT value from catalog_product_entity_int where entity_id = '" . $prod . "' and attribute_id = '" . $top_prod_shop_nw_attr_id . "'"; + $query = mysql_query($sql); + $row = mysql_fetch_array($query); + $atrvalue = $row['value']; + + $sql = "SELECT value from eav_attribute_option_value where option_id = '" . $atrvalue . "'"; + $query = mysql_query($sql); + $row = mysql_fetch_array($query); + $top_prod_shop_nw = $row['value']; + + if (isset($top_prod_shop_nw)) { + $data .= $top_prod_shop_nw; + } + else { + $data .= 'Non-Top'; + } + + $data .= '</g:custom_label_2>'; + + + $data .= '</item>'; + $data .= "\n"; + } + } } - unset($c3[0], $c3[1], $c3[2]); } - - $categoryPath = implode(" > ", $c3); - $categoryPath = str_replace(array(",", "\n", "\r", "."), " ", $categoryPath); - - $flag = $row['type_id'] == 'simple' ? getStockInformation($row) : getChildStockInformation($prod); - - $name = preg_replace('/\x{00B0}/u', " degrees ", str_replace(array(",", "\n", "\r", "."), " ", $row['name'])); - if (strlen($name) > 150) - $name = substr($name, 0, 149); - $skuName = $name; - - $data .= '<item>'; - $data .= '<g:id>' . $row['sku'] . '</g:id>'; - $data .= '<title><![CDATA[' . $name . ']]></title>'; - $data .= '<g:product_type><![CDATA[' . $categoryPath . ']]></g:product_type>'; - $data .= '<g:google_product_category></g:google_product_category>'; - $data .= '<link><![CDATA[' . 'http://www.tolexo.com/' . $landingUrl . ']]></link>'; - $data .= '<mobile_link>' . "http://www.tolexo.com/" . $landingUrl . '</mobile_link>' . '<g:adwords_redirect/>' . '<c:drlp type="url">' . "http://www.tolexo.com/" . $landingUrl . '</c:drlp>'; - $data .= '<g:image_link><![CDATA[' . "http://img.tolexokit.com/media/catalog/product" . $row['image_url'] . ']]></g:image_link>'; - $data .= '<g:condition>New</g:condition>'; - $data .= '<g:availability>'; - $data .= $flag ? "In Stock" : "Out of Stock"; - $data .= '</g:availability>'; - $data .= '<g:sale_price>' . $price . '</g:sale_price>'; - $data .= '<g:price>' . $splprice . '</g:price>'; - $data .= '<g:multipack>' . $row['num_items'] . '</g:multipack>'; - $data .= '<g:expiration_date></g:expiration_date>' . '<g:adwords_labels>Warranty:Seller Warranty</g:adwords_labels>' . '<g:adwords_labels></g:adwords_labels>' . '<g:adwords_labels></g:adwords_labels>' . '<g:adwords_labels></g:adwords_labels>'; - $data .= '<g:brand>' . $brandName . '</g:brand>'; - $data .= '<g:description><![CDATA[' . "Buy " . $skuName . " from Brand: " . $brandName . " having features "; - $data .= getFeaturesString($row); - $data .= "The " . $skuName . " is a " . $c3[3] . " with features of " . $c3[4]; - $data .= ! empty($c3[5]) ? " and " . $c3[5] : ""; - $data .= " in category " . $categoryPath . ']]></g:description>'; - $data .= '<g:excluded_destination>'; - $data .= (! empty($row['shopping_nw']) && $row['shopping_nw'] == 0) ? 'Shopping,Display Ads' : ""; - $data .= '</g:excluded_destination>'; - $data .= '<g:custom_label_1>' . $row['product_promo'] . '</g:custom_label_1>'; - $data .= '<g:custom_label_2>'; - $data .= ! empty($top_prod_shop_nw) ? $top_prod_shop_nw : 'Non-Top'; - $data .= '</g:custom_label_2>'; - $data .= '</item>' . "\n"; } $data .= '</channel>' . '</rss>'; @@ -130,64 +430,6 @@ $write = fopen($outputFile, "w") or die('Cannot open file: ' . $outputFile); fputs($write, $data); fclose($write); -function processString($name) -{ - $name = str_replace(array(",", "\n", "\r", "."), " ", $name); - return preg_replace('/\x{00B0}/u', " degrees ", str_replace("&", "&", $name)); -} - -function getStockInformation($row) -{ - $flag = false; - if ($row['use_config_manage_stock'] == 1) { - $flag = true; - } else { - $flag = $row['manage_stock'] == 1 ? (($row['qty'] <= 0 || $row['is_in_stock'] == 0) ? false : true) : true; - } - - return $flag; -} - -function getChildStockInformation($prod) -{ - $flag = false; - $sql = "SELECT csi.qty,csi.is_in_stock,csi.manage_stock, csi.use_config_manage_stock - FROM catalog_product_relation AS cpr - INNER JOIN catalog_product_entity_int AS cpei ON cpei.entity_id = cpr.child_id AND attribute_id = '96' - AND cpei.value = '1' - LEFT JOIN cataloginventory_stock_item AS csi ON csi.product_id = cpr.child_id - WHERE cpr.parent_id = '" . $prod . "';"; - $query = mysql_query($sql); - $childRows = array(); - - while ($row1 = mysql_fetch_array($query)) { - $flag = getStockInformation($row1); - if ($flag) - break; - } - - return $flag; -} - -function getFeaturesString($row) -{ - $returnStr = ""; - $str = processString($row['description']); - $returnStr .= $str; - $str = processString($row['key_feature_1']); - $returnStr .= ! empty($str) ? " and " . $str . " " : ""; - $str = processString($row['key_feature_2']); - $returnStr .= ! empty($str) ? $str . " " : ""; - $str = processString($row['key_feature_3']); - $returnStr .= ! empty($str) ? $str . " " : ""; - $str = processString($row['key_feature_4']); - $returnStr .= ! empty($str) ? $str . " " : ""; - $str = processString($row['key_feature_5']); - $returnStr .= ! empty($str) ? $str . " " : ""; - $returnStr .= ! empty($row['part_num']) ? "with part number " . $row['part_num'] . ". " : ""; - return $returnStr; -} - // Please Uncomment Below Code for live deployment // set up basic connection @@ -204,4 +446,5 @@ if (ftp_put($conn_id, 'tolexo_pla_rpc.xml', $outputFile, FTP_ASCII)) { } // close the connection -ftp_close($conn_id); \ No newline at end of file +ftp_close($conn_id); + diff --git a/utils/README.txt b/utils/README.txt index e889cf5..fb70486 100644 --- a/utils/README.txt +++ b/utils/README.txt @@ -65,14 +65,3 @@ CSV should look like: vendor_id,tsin,sku,mrp,msrp,price,base_price,number_of_items,special_from_date,special_to_date,special_base_price_from_date,special_base_price_to_date DEL00013,T05REL0096,1247119,200,300,300,300,12346,2015-07-11,2015-07-22,2015-07-10,2015-07-22 DEL00013,T05REL0097,1247120,100,200,200,200,12346,2015-07-11,2015-07-20,2015-07-11,2015-07-22 - -14. updateInventory.php - Responsible for updating product inventory. Execution Syntax: -php updateInventory.php ../var/import/update_product_inventory.csv - -CSV should look like: -sku,manage_stock,qty -T0RC102345-01,no,100 -T0RC102345-02,yes,10 - -15. php add_attribute_top_prod_shop_nw.php Responsible for adding the attribute "Top Products in Shopping Nw" -in all attribute sets. \ No newline at end of file diff --git a/utils/WmsGetSalesStatus.php b/utils/WmsGetSalesStatus.php index 5c81960..fb4afe6 100755 --- a/utils/WmsGetSalesStatus.php +++ b/utils/WmsGetSalesStatus.php @@ -92,13 +92,11 @@ class Tolexo_Utils_Uniwareorder extends Mage_Shell_Abstract { $sql = "SELECT `entity_id`,`status`,`state`,`increment_id` FROM `sales_flat_order` WHERE " . $subsql; $value = $this->readConnection->query($sql); $orderCollection = $value->fetchAll(); - $ordersNotFound = array(); foreach ($orderCollection as $order) { $date = date('Y-m-d H:i:s'); $orderId = $order['entity_id']; $orderStatus = $order['status']; $orderIncId = $order['increment_id']; - $uniwareSaleOrderRequest = new UniwareStructGetSaleOrderRequest($orderIncId); $result = $this->packageService->GetSaleOrder($uniwareSaleOrderRequest); if ($result) { @@ -321,38 +319,33 @@ class Tolexo_Utils_Uniwareorder extends Mage_Shell_Abstract { ); } - if($orderStatus != $status) { - if ($status == 'dispatched' || $status == 'partially_dispatched' || $status == 'delivered' || $status == 'partially_delivered') { - $updateOrder = Mage::getModel('sales/order')->loadByIncrementId($orderIncId); - $this->createShipment($shipment, $updateOrder, $itemDetail, $shipInvoiceMap, $status); - } else { - $this->updateFullFillStatus($itemDetail, $orderId); - } + if ($status == 'dispatched' || $status == 'partially_dispatched' || $status == 'delivered' || $status == 'partially_delivered') { + $updateOrder = Mage::getModel('sales/order')->loadByIncrementId($orderIncId); + $this->createShipment($shipment, $updateOrder, $itemDetail, $shipInvoiceMap, $status); + } else { + $this->updateFullFillStatus($itemDetail, $orderId); + } - if ($flag === 1) { - try { - $sql1 = "UPDATE `sales_flat_order` set state= '$state', status= '$status' where entity_id=" . $orderId; - $this->writeConnection->query($sql1); - $sql2 = "UPDATE `sales_flat_order_grid` set status= '$status' where entity_id=" . $orderId; - $this->writeConnection->query($sql2); - $this->updateCommentStatus($orderId, $status, $comment); - echo "\n $orderIncId Update Status: $orderStatus to $status \n"; - } catch (exception $ex) { - echo "\nCaught Exception while saving order: " . $ex->getMessage(); - } + if ($flag === 1) { + try { + $sql1 = "UPDATE `sales_flat_order` set state= '$state', status= '$status' where entity_id=" . $orderId; + $this->writeConnection->query($sql1); + $sql2 = "UPDATE `sales_flat_order_grid` set status= '$status' where entity_id=" . $orderId; + $this->writeConnection->query($sql2); + $this->updateCommentStatus($orderId, $status, $comment); + echo "\n Update Status: " . $orderStatus; + } catch (exception $ex) { + echo "\nCaught Exception while saving order: " . $ex->getMessage(); } } - echo $orderIncId." "; } else { - echo "\nOrder Not found : " . $orderIncId."\n"; - $ordersNotFound[] = $orderIncId; + echo "\nOrder Not found : " . $orderIncId; } } else { $this->apiLog('Get Order Status', $orderIncId, 1, $this->packageService->getLastRequest(), $this->packageService->getLastResponse(), $date); } } - echo "\n\n==========================================\n\n".implode(' ',$ordersNotFound); } function createShipment($Itemarray, $order, $itemDetail, $shipInvoiceMap, $status) { @@ -442,7 +435,6 @@ class Tolexo_Utils_Uniwareorder extends Mage_Shell_Abstract { function updateDiscreteItem ($orderId, $itemId, $itemCode, $shipmentId, $shipmentStatus, $statusCode, $shipCode, $invoiceId) { $wmsStatus = $this->allWmsStatus[$statusCode]; - if(empty($wmsStatus['id_wms_state'])) $wmsStatus['id_wms_state'] = 1; $this->writeConnection->query("UPDATE `sales_order_single_item` SET `id_wms_state` = '{$wmsStatus['id_wms_state']}', `id_shipment`= '$shipmentId',`id_invoice`= '$invoiceId', `shipment_status` = '{$statusCode}:{$shipCode}:{$shipmentStatus}', `updated_at` = NOW() @@ -577,7 +569,7 @@ class Tolexo_Utils_Uniwareorder extends Mage_Shell_Abstract { function getEmailContent() { $content = ''; - $toDate = date('Y-m-d'); + $toDate = date('Y-m-d', strtotime('-1 day')); $sql = "SELECT * FROM cron_log WHERE `date`='" . $toDate . "'"; $resultSet = $this->readConnection->query($sql); $content .= '<table cellspacing="1" border="0" cellpadding="1" style="border: 1px solid black" bgcolor="white">'; diff --git a/utils/WmsPushOrder.php b/utils/WmsPushOrder.php index 232d1b3..875b967 100644 --- a/utils/WmsPushOrder.php +++ b/utils/WmsPushOrder.php @@ -239,12 +239,11 @@ class Tolexo_Utils_PushSalesOrder extends Mage_Shell_Abstract $orderDetails = $order->getData(); $couponCode = $orderDetails['coupon_code']; - $customerName = trim($shippingAddress->getFirstname()). ' ' . trim($shippingAddress->getMiddlename()) . ' ' . trim($shippingAddress->getLastname()); $orderInfo = array( 'order_id' => $order->getIncrementId(), 'order_date'=> date('Y-m-d\TH:i:s', strtotime($order->getCreatedAt())), 'consignee' => array( - 'shipping_name' => htmlspecialchars($customerName), + 'shipping_name' => htmlspecialchars($shippingAddress->getFirstname() . ' ' . $shippingAddress->getMiddlename() . ' ' . $shippingAddress->getLastname()), 'shipping_add1' => htmlspecialchars($street[0]), 'shipping_add2' => htmlspecialchars($street[1]), 'shipping_city' => htmlspecialchars($shippingAddress->getCity()), @@ -366,11 +365,10 @@ class Tolexo_Utils_PushSalesOrder extends Mage_Shell_Abstract if(strpos(strtolower($street[0]), strtolower($addressCompany)) === false) { $street[0] = $addressCompany.', '.$street[0]; } - $customerName = trim($shippingAddress->getFirstname()). ' ' . trim($shippingAddress->getMiddlename()) . ' ' . trim($shippingAddress->getLastname()); $address = array(); $address[] = array( 'Id' => $shippingAddressId, - 'Name' => htmlspecialchars($customerName), + 'Name' => htmlspecialchars($shippingAddress->getFirstname() . ' ' . $shippingAddress->getMiddlename() . ' ' . $shippingAddress->getLastname()), 'AddressLine1' => htmlspecialchars($street[0]), 'AddressLine2' => htmlspecialchars($street[1]), 'City' => htmlspecialchars($shippingAddress->getCity()), @@ -388,10 +386,9 @@ class Tolexo_Utils_PushSalesOrder extends Mage_Shell_Abstract if(strpos(strtolower($street[0]), strtolower($addressCompany)) === false) { $street[0] = $addressCompany.', '.$street[0]; } - $customerName = trim($billingAddress->getFirstname()). ' ' . trim($billingAddress->getMiddlename()) . ' ' . trim($billingAddress->getLastname()); $address[] = array( 'Id' => $billingAddressId, - 'Name' => htmlspecialchars($customerName), + 'Name' => htmlspecialchars($billingAddress->getFirstname() . ' ' . $billingAddress->getMiddlename() . ' ' . $billingAddress->getLastname()), 'AddressLine1' => htmlspecialchars($street[0]), 'AddressLine2' => htmlspecialchars($street[1]), 'City' => htmlspecialchars($billingAddress->getCity()), @@ -992,7 +989,7 @@ class Tolexo_Utils_PushSalesOrder extends Mage_Shell_Abstract foreach ($orderStatusCollection as $status) { $orderStatus[$status['status']] = $status['label']; } - $toGroupStatus = array('processing', 'fulfillable', 'partially_fulfillable', 'dispatched', 'partially_dispatched', 'delivered', 'partially_delivered'); + $toGroupStatus = array('processing', 'fulfillable', 'partially_fulfillable', 'dispatched', 'partially_dispatched', 'delivered'); $summary = array('day' => array('orders' => 0, 'amount' => 0), 'month' => array('orders' => 0, 'amount' => 0)); foreach ($orderStatus as $status => $detail) { if (in_array($status, $toGroupStatus)) { diff --git a/utils/associateProducts.php b/utils/associateProducts.php index f4a2f25..944b1c4 100755 --- a/utils/associateProducts.php +++ b/utils/associateProducts.php @@ -81,4 +81,36 @@ function associateProduct($cSku, $sSku,$count,$totalcount,$logArray) } return array('logArray'=>$logArray); } + +function do_logging($logArray) { + + $endTime = new DateTime(date("Y:m:d h:i:s")); + $logArray['Completion_Time']=$endTime->format('Y-m-d H:i:s'); + echo "End Time: ".$endTime->format('Y-m-d H:i:s')."\n"; + + //Time Taken by the script (in secods) + $diffTime = $logArray['startTimeObj']->diff($endTime); + $hours = $diffTime->format('%h'); + $minutes = $diffTime->format('%i'); + $seconds = $diffTime->format('%s'); + + $logArray['Execution_Time'] = "$hours hours $minutes minutes $seconds seconds"; + print $logArray['Execution_Time']." in completing the job\n"; + + //Print Detailed Log + $fp = fopen("../var/log/detail_log_file.txt", "a") or die("Unable to open file!"); + fprintf($fp,"\n\n*************************** %s ***********************\n",$logArray['Script_Name']); + fwrite($fp, serialize($logArray)); + fclose($fp); + + //Print Summary Log + $fp = fopen("../var/log/summary_log_file.txt", "a") or die("Unable to open file!"); + fprintf($fp,"\n\n*************************** %s ***********************",$logArray['Script_Name']); + fprintf($fp,"\nScript Name - %s",$logArray['Script_Name']); + fprintf($fp,"\nCSV File - %s",$logArray['CSV_Name']); + fprintf($fp,"\nStart Time - %s",$logArray['Start_Time']); + fprintf($fp,"\nCompetion Time - %s",$logArray['Completion_Time']); + fprintf($fp,"\nExecution Time - %s",$logArray['Execution_Time']); + fprintf($fp,"\nSKUs Checked/Impacted - %d",$logArray['skuImpacted']); +} ?> diff --git a/utils/categoryMetaDescription.php b/utils/categoryMetaDescription.php deleted file mode 100755 index f540a61..0000000 --- a/utils/categoryMetaDescription.php +++ /dev/null @@ -1,18 +0,0 @@ -<?php -$mageFilename = '../app/Mage.php'; -require_once $mageFilename; -Mage::app(); - -$resource = Mage::getSingleton('core/resource'); -//get connection objects to execute direct queries -$WriteConn = $resource->getConnection('core_write'); - -//Clean Category Meta Description -$q = "UPDATE catalog_category_entity_text SET value='' WHERE attribute_id=48"; -$WriteConn->query($q); - -//Clean Category Meta Ttile -$q = "UPDATE catalog_category_entity_varchar SET value='' WHERE attribute_id=46"; -$WriteConn->query($q); - - echo "All categories Meta Description and Meta Title have been set blank. "; \ No newline at end of file diff --git a/utils/checkOptions.php b/utils/checkOptions.php index 5bc5551..b316380 100755 --- a/utils/checkOptions.php +++ b/utils/checkOptions.php @@ -18,12 +18,12 @@ if(!empty($fileName)) { echo "\nReading File : $fileName\n"; $response = getTypeCsv($scriptName,$fileName,$logArray); - do_logging($response['logArray'],'selectAttribCount'); + do_logging($response['logArray']); } else echo "\nNo file found. Please provide file name.\n"; -/*function do_logging($logArray) { +function do_logging($logArray) { $endTime = new DateTime(date("Y:m:d h:i:s")); $logArray['Completion_Time']=$endTime->format('Y-m-d H:i:s'); @@ -54,7 +54,7 @@ else fprintf($fp,"\nExecution Time - %s",$logArray['Execution_Time']); fprintf($fp,"\nImpacted Select Type Attributes - %d",$logArray['selectAttribCount']); } -*/ + function getTypeCsv($scriptName,$fileName,$logArray) { $file = fopen($fileName, "r"); while(!feof($file)) { diff --git a/utils/commonFunctions.php b/utils/commonFunctions.php index be67ed8..4a80332 100644 --- a/utils/commonFunctions.php +++ b/utils/commonFunctions.php @@ -29,7 +29,7 @@ function backupCSV($startTimeObj, $CSVFile,$processName) { * * @return void as writes output in log files */ -function do_logging($logArray, $countIndexName='skuImpacted') { +function do_logging($logArray) { $endTime = new DateTime(date("Y:m:d h:i:s")); $logArray['Completion_Time'] = $endTime->format('Y-m-d H:i:s'); echo "End Time: ".$endTime->format('Y-m-d H:i:s')."\n"; @@ -57,7 +57,7 @@ function do_logging($logArray, $countIndexName='skuImpacted') { fprintf($fp,"\nStart Time - %s",$logArray['Start_Time']); fprintf($fp,"\nCompetion Time - %s",$logArray['Completion_Time']); fprintf($fp,"\nExecution Time - %s",$logArray['Execution_Time']); - fprintf($fp,"\nItems Checked/Impacted - %d",$logArray[$countIndexName]); + fprintf($fp,"\nSKUs Checked/Impacted - %d",$logArray['skuImpacted']); } /** @@ -120,6 +120,7 @@ function validateMsrp(&$data,&$error,$tsinArray) { } } + /** * Validate that all required attributes are there in input CSV file * @@ -136,7 +137,7 @@ function checkMandatoryAttributes($mandatoryAttributes,$csvHeader,&$error,$isCol } else { $missingAttributes = array_diff($mandatoryAttributes, $csvHeader); } - + foreach($missingAttributes as $attribute) { $attributeMissingFlag = 1; $error['Missing Attributes'][] = "$attribute"; @@ -148,6 +149,7 @@ function checkMandatoryAttributes($mandatoryAttributes,$csvHeader,&$error,$isCol return $attributeMissingFlag; } + /** * Validate for date * @@ -159,4 +161,4 @@ function validateDate($date, $format = 'Y-m-d') { $d = DateTime::createFromFormat($format, $date); return $d && $d->format($format) == $date; -} +} \ No newline at end of file diff --git a/utils/export_vendor_data.php b/utils/export_vendor_data.php index 51a686c..0f658f1 100755 --- a/utils/export_vendor_data.php +++ b/utils/export_vendor_data.php @@ -13,7 +13,7 @@ $gluser = $argv[1]; if(isset($gluser)){ $sql = "Select SQL_CACHE vendor_id,vendor_code,company_name,first_name,last_name,email,address,bill_address,contact_number,city,gluser_id from vendor_vendordirectory_vendors WHERE gluser_id IS NOT NULL"; }else{ - $sql = "Select SQL_CACHE vendor_id,vendor_code,company_name,first_name,last_name,email,address,bill_address,contact_number,city,gluser_id from vendor_vendordirectory_vendors WHERE gluser_id IS NULL AND vendor_code !='' AND vendor_code IS NOT NULL "; + $sql = "Select SQL_CACHE vendor_id,vendor_code,company_name,first_name,last_name,email,address,bill_address,contact_number,city,gluser_id from vendor_vendordirectory_vendors WHERE gluser_id IS NULL"; } $value = $read->query($sql); $rows = $value->fetchAll(); diff --git a/utils/fetchOrderQueue.php b/utils/fetchOrderQueue.php deleted file mode 100644 index 447f52a..0000000 --- a/utils/fetchOrderQueue.php +++ /dev/null @@ -1,130 +0,0 @@ -<?php - -require_once '../app/Mage.php'; - -Mage::app(); - -class OrderQueueProcessor { - - private $readConnection; - private $writeConnection; - private $rootUrl; - - public function __construct() { - $resource = Mage::getSingleton('core/resource'); - $this->readConnection = $resource->getConnection('core_read'); - $this->writeConnection = $resource->getConnection('core_write'); - $this->rootUrl = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB); - } - - // Execution - public function run() { - $queueIds = $this->getPossibleOrdersInformation(); - if (!empty($queueIds)) { - $this->deleteOrdersFromQueue($queueIds); - } else { - Mage::log("No record to Delete", null, 'orderQueueProcesss.log'); - } - } - - // Get all information from orderQue Table , Record which can be elegible of refund - public function getPossibleOrdersInformation() { - - $sqlTotal = "SELECT COUNT(id) as total FROM sales_order_queue where tag_order = 0 LIMIT 1 "; - $ordercount = $this->readConnection->query($sqlTotal)->fetchColumn(); - $recordLimit = 20; - Mage::log("Total Record = " . $ordercount, null, 'orderQueueProcesss.log'); - if ($ordercount) { - $totalLoop = ($ordercount - ($ordercount % $recordLimit)) / $recordLimit + 1; - for ($i = 0; $i <= $totalLoop; $i++) { - $orderAll = array(); - $taggedIds = array(); - $refundedIds = array(); - $queueIds = array(); - $sqlOrder = "SELECT id,order_data,order_id FROM sales_order_queue where tag_order = 0 order by id ASC LIMIT ".$recordLimit; - try { - $orderData = $this->readConnection->query($sqlOrder); - $rowOrder = $orderData->fetchAll(PDO::FETCH_ASSOC); - - $orderIdArr = array(); - if (count($rowOrder)) { - $orderJson = json_encode($rowOrder); - - // Supply Json to Refund process - // $refundedIds = $this->refineEligibleRefundOrders($orderJson); - - // Supply Json to Order Tag process - $taggedIds = $this->updateOrderTags($orderJson); - - - if (json_last_error() == JSON_ERROR_NONE && is_array($taggedIds) && is_array($refundedIds)) { - $queueIds = array_unique(array_merge($refundedIds, $taggedIds)); - } - - Mage::log($queueIds, null, 'orderQueueProcesss.log'); - - return $queueIds; - } else { - Mage::log("No data found for queue process.", null, 'orderQueueProcesss.log'); - return false; - } - } catch (PDOException $ex) { - Mage::log($ex, null, 'exception.log'); - Mage::log("error in Order Queue Process", null, 'orderQueueProcesss.log'); - - return false; - } - } - } - } - - public function httpPost($url, $jsonData) { - $ch = curl_init(); - curl_setopt($ch, CURLOPT_URL, $url); - curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); - curl_setopt($ch, CURLOPT_POST, 1); - curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonData); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); - $output = curl_exec($ch); - curl_close($ch); - return $output; - } - - public function refineEligibleRefundOrders($orderJson) { - $refundedIds = array(); - if(isset($orderJson) && $orderJson !=""){ - $url = $this->rootUrl . "mobileapi/api_refund_process.php?route=rest/web_api/refine-elegible"; - $refundedIdJson = $this->httpPost($url, $orderJson); - - $refundedIds = json_decode($refundedIdJson, true); - } - return $refundedIds; - } - - public function updateOrderTags($orderJson) { - $taggedIds = array(); - if(isset($orderJson) && $orderJson !=""){ - $url = $this->rootUrl . "mobileapi/api_order_tag.php?route=rest/web_api/updateOrderTags"; - $taggedIdJson = $this->httpPost($url, $orderJson); - - $taggedIds = json_decode($taggedIdJson, true); - } - return $taggedIds; - } - - public function deleteOrdersFromQueue($queueIds) { - $queueIdsString = implode(',', $queueIds); - - $sql = "DELETE FROM sales_order_queue - WHERE id IN ($queueIdsString) AND refund = '1' ;"; - - $this->writeConnection->query($sql); - return true; - } - -} - -$params = array_slice($argv, 1); -$refundO = new OrderQueueProcessor($params); -$refundO->run(); -?> \ No newline at end of file diff --git a/utils/getBrandDetail.php b/utils/getBrandDetail.php index dfd3e68..c80d67d 100644 --- a/utils/getBrandDetail.php +++ b/utils/getBrandDetail.php @@ -33,12 +33,7 @@ while($row = mysql_fetch_assoc($result)) $row["_id"] = toInt($row["id_brand"]); $row["id_brand"] = $row["_id"]; - try { - $MongoDBCollection->save($row,array("w"=>1)); - } - catch(Exception $e){ - echo $e->getMessage(); - } + $MongoDBCollection->save($row); $c++; } diff --git a/utils/getBrandDetailIncl.php b/utils/getBrandDetailIncl.php index bb433af..91d8d0a 100644 --- a/utils/getBrandDetailIncl.php +++ b/utils/getBrandDetailIncl.php @@ -33,12 +33,7 @@ while($row = mysql_fetch_assoc($result)) $row["_id"] = toInt($row["id_brand"]); $row["id_brand"] = $row["_id"]; - try { - $MongoDBCollection->save($row,array("w"=>1)); - } - catch(Exception $e){ - echo $e->getMessage(); - } + $MongoDBCollection->save($row); $c++; } diff --git a/utils/getCategoryDetail.php b/utils/getCategoryDetail.php index 90f2263..720425c 100644 --- a/utils/getCategoryDetail.php +++ b/utils/getCategoryDetail.php @@ -82,7 +82,6 @@ while($row = mysql_fetch_assoc($result)) $row["is_active"] = toInt($row["is_active"]); $row["is_anchor"] = toInt($row["is_anchor"]); $row["do_uniware_sync"] = toInt($row["do_uniware_sync"]); - $row["description"] = toUtf8($row["description"]); $row["created_at"] = toDate($row["created_at"]); $row["updated_at"] = toDate($row["updated_at"]); @@ -139,12 +138,7 @@ while($row = mysql_fetch_assoc($result)) } unset($row["thumbnail"]); - try { - $MongoDBCollection->save($row,array("w"=>1)); - } - catch(Exception $e){ - echo $e->getMessage(); - } + $MongoDBCollection->save($row); $c++; } diff --git a/utils/getCategoryDetailIncl.php b/utils/getCategoryDetailIncl.php index 5f870e3..f90cf0e 100644 --- a/utils/getCategoryDetailIncl.php +++ b/utils/getCategoryDetailIncl.php @@ -138,12 +138,7 @@ while($row = mysql_fetch_assoc($result)) } unset($row["thumbnail"]); - try { - $MongoDBCollection->save($row,array("w"=>1)); - } - catch(Exception $e){ - echo $e->getMessage(); - } + $MongoDBCollection->save($row); $c++; } diff --git a/utils/getMediaDetail.php b/utils/getMediaDetail.php index ccf0121..2f466a0 100644 --- a/utils/getMediaDetail.php +++ b/utils/getMediaDetail.php @@ -48,12 +48,7 @@ while($row = mysql_fetch_assoc($result)) //$row["is_primary"] = $primary_image["value"].' '.$row["value"]; $row["is_primary"] = false; } - try { - $MongoDBCollection->save($row,array("w"=>1)); - } - catch(Exception $e){ - echo $e->getMessage(); - } + $MongoDBCollection->save($row); unset($row); $c++; } diff --git a/utils/getMediaDetailIncl.php b/utils/getMediaDetailIncl.php index f79f712..40fd598 100755 --- a/utils/getMediaDetailIncl.php +++ b/utils/getMediaDetailIncl.php @@ -48,12 +48,7 @@ while($row = mysql_fetch_assoc($result)) //$row["is_primary"] = $primary_image["value"].' '.$row["value"]; $row["is_primary"] = false; } - try { - $MongoDBCollection->save($row,array("w"=>1)); - } - catch(Exception $e){ - echo $e->getMessage(); - } + $MongoDBCollection->save($row); unset($row); $c++; } diff --git a/utils/getProductDetailArticle.php b/utils/getProductDetailArticle.php index 54c1731..fc54a0b 100644 --- a/utils/getProductDetailArticle.php +++ b/utils/getProductDetailArticle.php @@ -217,12 +217,7 @@ while($row = mysql_fetch_array($result)) //$MongoDBDocument = json_encode($output); //$MongoDBDocumentVariation = json_decode(utf8_encode(json_encode($output))); - try { - $MongoDBCollectionVariation->save($output,array("w"=>1)); - } - catch(Exception $e){ - echo $e->getMessage(); - } + $MongoDBCollectionVariation->save($output); //print_r($MongoDBDocument."\n"); //print_r($output); $c++; diff --git a/utils/getProductDetailArticleIncl.php b/utils/getProductDetailArticleIncl.php index f4fa6f7..e47295a 100755 --- a/utils/getProductDetailArticleIncl.php +++ b/utils/getProductDetailArticleIncl.php @@ -217,12 +217,7 @@ while($row = mysql_fetch_array($result)) //$MongoDBDocument = json_encode($output); //$MongoDBDocumentVariation = json_decode(utf8_encode(json_encode($output))); - try { - $MongoDBCollectionVariation->save($output,array("w"=>1)); - } - catch(Exception $e){ - echo $e->getMessage(); - } + $MongoDBCollectionVariation->save($output); //print_r($MongoDBDocument."\n"); //print_r($output); $c++; diff --git a/utils/getProductDetailCopy.php b/utils/getProductDetailCopy.php index 268b9b6..2801372 100644 --- a/utils/getProductDetailCopy.php +++ b/utils/getProductDetailCopy.php @@ -274,12 +274,7 @@ while($row = mysql_fetch_array($result)) //$MongoDBCollection->insert($MongoDBDocument); //print_r($output); - try { - $MongoDBCollection->save($output,array("w"=>1)); - } - catch(Exception $e){ - echo $e->getMessage(); - } + $MongoDBCollection->save($output); $c++; } //End time diff --git a/utils/getProductDetailCopyIncl.php b/utils/getProductDetailCopyIncl.php index ab08f8e..a011b03 100755 --- a/utils/getProductDetailCopyIncl.php +++ b/utils/getProductDetailCopyIncl.php @@ -274,13 +274,7 @@ while($row = mysql_fetch_array($result)) //$MongoDBCollection->insert($MongoDBDocument); //print_r($output); - try { - $MongoDBCollection->save($output,array("w"=>1)); - } - catch(Exception $e){ - echo $e->getMessage(); - } - + $MongoDBCollection->save($output); $c++; } //End time diff --git a/utils/getProductDetailVariation.php b/utils/getProductDetailVariation.php index 13b792e..7c7489d 100644 --- a/utils/getProductDetailVariation.php +++ b/utils/getProductDetailVariation.php @@ -414,13 +414,7 @@ while($row = mysql_fetch_array($result)) //$MongoDBDocument = json_encode($output); //$MongoDBDocumentVariation = json_decode(utf8_encode(json_encode($output))); //$MongoDBCollectionVariation->save($MongoDBDocumentVariation); - try { - $MongoDBCollectionVariation->save($output,array("w"=>1)); - } - catch(Exception $e){ - echo $e->getMessage(); - } - + $MongoDBCollectionVariation->save($output); //print_r($MongoDBDocument."\n"); //print_r($output); $c++; diff --git a/utils/getProductDetailVariationIncl.php b/utils/getProductDetailVariationIncl.php index 39f04da..5262513 100755 --- a/utils/getProductDetailVariationIncl.php +++ b/utils/getProductDetailVariationIncl.php @@ -438,12 +438,7 @@ while($row = mysql_fetch_array($result)) //$MongoDBDocument = json_encode($output); //$MongoDBDocumentVariation = json_decode(utf8_encode(json_encode($output))); //$MongoDBCollectionVariation->save($MongoDBDocumentVariation); - try { - $MongoDBCollectionVariation->save($output,array("w"=>1)); - } - catch(Exception $e){ - echo $e->getMessage(); - } + $MongoDBCollectionVariation->save($output); //print_r($MongoDBDocument."\n"); //print_r($output); $c++; diff --git a/utils/importTierPrice.php b/utils/importTierPrice.php deleted file mode 100644 index 4fd49f4..0000000 --- a/utils/importTierPrice.php +++ /dev/null @@ -1,68 +0,0 @@ -<?php - -require_once 'connection.php'; -date_default_timezone_set('Asia/Calcutta'); -//Measure start time -$time_start = microtime(true); - -//Read File -$fileTier = fopen("../var/import/".$argv[1], "r") or die("Unable to open file!"); -$headers = fgets($fileTier); -//MySQL Connection -$dbname = 'magento'; -$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die('Error connecting to mysql'); -mysql_select_db($dbname, $conn); - -$info = array(); -$deleted = array(); - -while(!feof($fileTier)) { - $info = explode(",",fgets($fileTier)); - //echo $info[0]." ".$info[1]." ".$info[2]; - $sku = $info[0]; - $sql = "select entity_id from catalog_product_entity where sku='".$sku."'"; - //echo $sql."\n"; - $result = mysql_query($sql); - $row = mysql_fetch_array($result); - if($row['entity_id']!=null) { - $sql_check = "select * from catalog_product_entity_tier_price where entity_id=".$row['entity_id']; - $check_result = mysql_query($sql_check); - $check_row = mysql_fetch_array($check_result); - if(count($check_row) > 0) - { - if(!in_array($sku, $deleted)) { - $sql_delete = "delete from catalog_product_entity_tier_price where entity_id=".$row['entity_id']; - if (mysql_query($sql_delete) === TRUE) { - echo "\nRecord deleted successfully for ".$sku; - array_push($deleted, $sku); - } else { - echo "\nRecord not deleted for ".$sku; - } - } - if(in_array($sku,$deleted)) { - $sql_insert = "insert into catalog_product_entity_tier_price(customer_group_id,all_groups,website_id,entity_id,qty,value) values(1,1,0,'".$row['entity_id']."','".$info[1]."','".$info[2]."')"; - if (mysql_query($sql_insert) === TRUE) { - echo "\nNew record created successfully for ".$sku." with Qty ".$info[1]." and Tier Price ".$info[2]; - $sql_update = "update catalog_product_entity set updated_at=now() where sku='".$sku."'"; - if (mysql_query($sql_update) === TRUE) { - echo "updated_at time updated"; - } - } else { - echo "\nRecord not Pushed for ".$sku." with Qty ".$info[1]." and Tier Price ".$info[2]; - } - } - } - } -} - -//closing the file -fclose($fileTier); -//closing mysql connection -//$conn->close(); - -//End time -$time_end = microtime(true); -echo "\nUploaded in ".($time_end-$time_start)." secs."; - -?> - diff --git a/utils/mapConfigProductAttrib.php b/utils/mapConfigProductAttrib.php index 9aacd48..edc0785 100755 --- a/utils/mapConfigProductAttrib.php +++ b/utils/mapConfigProductAttrib.php @@ -84,4 +84,36 @@ function mapProductAttrib($sku,$attribCodes,$count,$totalcount,$logArray) return array('logArray'=>$logArray); } +function do_logging($logArray) { + + $endTime = new DateTime(date("Y:m:d h:i:s")); + $logArray['Completion_Time']=$endTime->format('Y-m-d H:i:s'); + echo "End Time: ".$endTime->format('Y-m-d H:i:s')."\n"; + + //Time Taken by the script (in secods) + $diffTime = $logArray['startTimeObj']->diff($endTime); + $hours = $diffTime->format('%h'); + $minutes = $diffTime->format('%i'); + $seconds = $diffTime->format('%s'); + + $logArray['Execution_Time'] = "$hours hours $minutes minutes $seconds seconds"; + print $logArray['Execution_Time']." in completing the job\n"; + + //Print Detailed Log + $fp = fopen("../var/log/detail_log_file.txt", "a") or die("Unable to open file!"); + fprintf($fp,"\n\n*************************** %s ***********************\n",$logArray['Script_Name']); + fwrite($fp, serialize($logArray)); + fclose($fp); + + //Print Summary Log + $fp = fopen("../var/log/summary_log_file.txt", "a") or die("Unable to open file!"); + fprintf($fp,"\n\n*************************** %s ***********************",$logArray['Script_Name']); + fprintf($fp,"\nScript Name - %s",$logArray['Script_Name']); + fprintf($fp,"\nCSV File - %s",$logArray['CSV_Name']); + fprintf($fp,"\nStart Time - %s",$logArray['Start_Time']); + fprintf($fp,"\nCompetion Time - %s",$logArray['Completion_Time']); + fprintf($fp,"\nExecution Time - %s",$logArray['Execution_Time']); + fprintf($fp,"\nSKUs Checked/Impacted - %d",$logArray['skuImpacted']); +} + ?> diff --git a/utils/updateInventory.php b/utils/updateInventory.php deleted file mode 100644 index b355d5d..0000000 --- a/utils/updateInventory.php +++ /dev/null @@ -1,248 +0,0 @@ -<?php -require_once ('../app/Mage.php'); -require_once('commonFunctions.php'); - -Mage::app(); - -$scriptName = $argv[0]; -$fileName = $argv[1]; - -$startTime = new DateTime(date("Y:m:d h:i:s")); -$logArray = array ('Script_Name'=>$scriptName,'CSV_Name'=>$fileName,'Start_Time' => $startTime->format('Y-m-d H:i:s'),'startTimeObj'=>$startTime); -echo "Start Time: ".$startTime->format('Y-m-d H:i:s')."\n"; - -//Read The CSV file and convert into array -$responseArray = csv_to_array($fileName); -$dataArray = $responseArray['dataArray']; -$attributeHeader = $responseArray['attributeHeader']; - -$errorArray = $responseArray['errorArray']; -$attributeSetArray = $responseArray['attributeSetArray']; - -//We shall use this to restrict attributes cache limited to attribute set received in CSV -Mage::register('attributeSetArray', array_keys($attributeSetArray)); - -//We shall use this to restrict attribute cache limited to header attribute_code received in CSV -Mage::register('attributeArray', $attributeHeader); - - -$logArray['skuImpacted'] = count($dataArray); -$logArray['errorArray'] = $errorArray; - -/** @var $import AvS_FastSimpleImport_Model_Import */ -$import = Mage::getModel('fastsimpleimport/import'); -try { - $import->processProductImport($dataArray, $attributeHeader); - $errorArray['FinalResult'] = $logArray['skuImpacted']." Products Updated Successfully"; -} catch (Exception $e) { - $errorArray['FinalResult'][] = "Entire Import Failed Due to the following Errors"; - if (count($import->getErrorMessages()) == 0) { - if ($e->getMessage() == 'Can not find required columns: sku') { - $errorArray['FinalResult'][] = 'No row is qualified to import'; - } - } else { - $errorArray['FinalResult'][] = $import->getErrorMessages(); - } -} -//Print Error array on screen -print_r($errorArray); - -$logArray['errorArray'] = $errorArray; -//Log execution summary -do_logging($logArray); - -/** - * Read csv file, have validations and skip rows violating and - * and finally prepare good rows array - * - * @param string $filename - * @return Array() - */ -function csv_to_array($filename='', $delimiter=',') -{ - if(!file_exists($filename) || !is_readable($filename)) { - echo 'File is not available / readable'; - return FALSE; - } - - $header = NULL; - $data = array(); - $error = array(); - $attributeSetArray = array(); - $isInStockIndexSet = 0; - $useConfigManageStockIndexSet = 0; - $attributeMissingFlag = 0; - $isColumnCountStrict = 1; - $mandatoryAttributes = array('sku','qty','manage_stock'); - - if (($handle = fopen($filename, 'r')) !== FALSE) - { - while (($row = fgetcsv($handle, 0, $delimiter)) !== FALSE) - { - if(!$header) { - $orgCsvHeader = $header = $row; - - //Check if mandatory attributes are in input CSV - $attributeMissingFlag = checkMandatoryAttributes($mandatoryAttributes, $header,$error,$isColumnCountStrict); - - //If mandatory attributes are missing then do not iterate for each row of CSV - if ($attributeMissingFlag ==1) { - break; - } - - $filteredHeader = array(); - //store websites is_in_stock manage_stock use_config_manage_stock sku qty - //admin base 1 1 1 1248224 10 - - $updateColumns = array('sku','qty','manage_stock'); - foreach($updateColumns as $column) { - if(in_array($column,$header)) { - switch($column) { - case 'sku': - $skuIndex = array_search($column,$header); - $filteredHeader[$skuIndex] = $column; - break; - case 'qty': - $qtyIndex = array_search($column,$header); - $filteredHeader[$qtyIndex] = $column; - break; - case 'manage_stock': - $manageStockIndex = array_search($column,$header); - $filteredHeader[$manageStockIndex] = $column; - break; - } - - } - } - ksort($filteredHeader); - - } else { - - $filteredData = array(); - if (isset($skuIndex)) { - $filteredData[$skuIndex] = $row[$skuIndex]; - } - if (isset($qtyIndex)) { - $filteredData[$qtyIndex] = (int)$row[$qtyIndex]; - } - if (isset($manageStockIndex)) { - $manageStock = strtolower(trim($row[$manageStockIndex])); - if($manageStock == 'yes') { - $filteredData[$manageStockIndex] = 1; - } else if($manageStock == 'no') { - $filteredData[$manageStockIndex] = 0; - } else { - $filteredData[$manageStockIndex] = $manageStock; - } - } - - //Business Rule - if quantity=0 and manage_stock=yes then product is out of stock (is_in_stock=0) - if ((isset($qtyIndex) && isset($manageStockIndex)) && $filteredData[$qtyIndex]==0 && $filteredData[$manageStockIndex]==1) { - if(!in_array('is_in_stock', $filteredHeader)) { - $filteredHeader[] = 'is_in_stock'; - } - $index = array_search('is_in_stock',$filteredHeader); - $filteredData[$index] = 0; - $isInStockIndexSet = 1; - } else if (isset($qtyIndex) && isset($manageStockIndex) && in_array('is_in_stock', $filteredHeader)) { - $index = array_search('is_in_stock',$filteredHeader); - $filteredData[$index] = ''; - } - - //Business Rule - If manage stock is yes, use config manage stock will automatically be unchecked (use_config_manage_stock = 0) - if (isset($manageStockIndex) && $filteredData[$manageStockIndex]== 1) { - if(!in_array('use_config_manage_stock', $filteredHeader)) { - $filteredHeader[] = 'use_config_manage_stock'; - } - $index = array_search('use_config_manage_stock',$filteredHeader); - $filteredData[$index] = 0; - $useConfigManageStockIndexSet = 1; - } else if (isset($manageStockIndex) && in_array('use_config_manage_stock', $filteredHeader)) { - $index = array_search('use_config_manage_stock',$filteredHeader); - if(!isset($filteredData[$index])) { - $filteredData[$index] = ''; - } - } - - //Business Rule - if quantity>=1 and manage_stock=yes then product should be in stock (is_in_stock=1) - if ((isset($qtyIndex) && isset($manageStockIndex)) && $filteredData[$qtyIndex]>=1 && $filteredData[$manageStockIndex]==1) { - if(!in_array('is_in_stock', $filteredHeader)) { - $filteredHeader[] = 'is_in_stock'; - } - $index = array_search('is_in_stock',$filteredHeader); - $filteredData[$index] = 1; - $isInStockIndexSet = 1; - } else if (isset($qtyIndex) && isset($manageStockIndex) && in_array('is_in_stock', $filteredHeader)) { - $index = array_search('is_in_stock',$filteredHeader); - $filteredData[$index] = ''; - } - - ksort($filteredData); - - $associativeArray = array_combine($filteredHeader, $filteredData); - - //Have script specific validations - $validationResponse = validate($associativeArray); - - $sku = $associativeArray['sku']; - if(count($validationResponse) > 0) { - $error[$sku] = $validationResponse; - } - $data[$sku] = $associativeArray; - } - - } - - //Ensure that use_config_manage_stock and is_in_stock items are available for all rows or none - if($useConfigManageStockIndexSet == 1 || $isInStockIndexSet == 1 ) { - foreach($data as $sku => &$itemArray) { - if($isInStockIndexSet == 1 && !isset($itemArray['is_in_stock'])) { - $itemArray['is_in_stock'] = ''; - } - - if($useConfigManageStockIndexSet == 1 && !isset($itemArray['use_config_manage_stock'])) { - $itemArray['use_config_manage_stock'] = ''; - } - } - } - - if ($attributeMissingFlag !=1) { - // No Insert only Update SKUs - // Set errors to skip rows corresponding to SKUs that do not exist in magento database - checkSkusExist($data,$error,$attributeSetArray); - - //Unset all the items that have any error - $errorSkuArray = array_keys($error); - foreach($errorSkuArray as $sku) { - unset($data[$sku]); - } - - $data = array_values($data); //Convert sku indexed array into integer indexed array - } - - fclose($handle); - } - return array('dataArray'=>$data, 'errorArray' =>$error, 'attributeSetArray' => $attributeSetArray, 'attributeHeader' => $orgCsvHeader); -} - -/** - * Validate product array item - * - * @return Array() - */ -function validate($productArray) { - $errorArray = array(); -print_r($productArray); - //Quantity cannot be less than zero - if (isset($productArray['qty']) && (int)$productArray['qty'] < 0 ) { - $errorArray[] = 'qty cannot be less than 0'; - } - //manage_stock should be yes/no - if (isset($productArray['manage_stock']) && !in_array($productArray['manage_stock'],array(1,0),TRUE)) { - $errorArray[] = 'manage_stock should be yes or no'; - } else { - echo 'Manage Stock passed'; - } - - return $errorArray; -} diff --git a/wms/api/index.php b/wms/api/index.php index cd34502..7be24df 100644 --- a/wms/api/index.php +++ b/wms/api/index.php @@ -32,7 +32,7 @@ if (!empty($_GET) && isset($_GET['module'])) { $insertedId = Log::logApiRequest($_SERVER['REQUEST_URI'], $module, $method, $object_code, $requestId, addslashes($HTTP_RAW_POST_DATA)); } - if(($requestId && $insertedId) || !$requestId || $post['regenerate']) { + if(($requestId && $insertedId) || !$requestId) { $module = ucfirst($module); require_once(WMS_API_PATH . '/module/'.$module.'.php'); $objModule = new $module(); diff --git a/wms/module/Log.php b/wms/module/Log.php index a8f1135..fa4a6f3 100644 --- a/wms/module/Log.php +++ b/wms/module/Log.php @@ -3,16 +3,10 @@ class Log { static function logApiRequest($url, $module, $method, $object_code, $requestId, $request) { - global $mageWrite, $mageRead, $post; + global $mageWrite; $logged = true; $respTxt = '{"error":true, "message":"Duplicate Request and Last Request unprocessed"}'; - $lastRec = $mageRead->query("SELECT id, is_processed, created_at FROM wms_api_request_log WHERE request_id = '$requestId';")->fetch(); - if($lastRec && $lastRec['is_processed'] == 0 && strtotime($lastRec['created_at']) < strtotime('+5 hours +20 minutes')) { - $post['regenerate'] = true; - return $lastRec['id']; - } - $effectedRows = $mageWrite->exec("INSERT IGNORE INTO wms_api_request_log(url, module, method, request_id, object_code, request, is_processed, created_at) VALUES ('$url','$module','$method','$requestId','$object_code','$request',0, NOW());");