FooGallery – Image Gallery WordPress Plugin - Version 2.2.26

Version Description

  • Date Updated : 2022-11-12
  • Fix : import/export include error on some installs.
  • Fix : fixed a few bugs with new edit attachment modal.
Download this release

Release Info

Developer bradvin
Plugin Icon 128x128 FooGallery – Image Gallery WordPress Plugin
Version 2.2.26
Comparing to
See all releases

Code changes from version 2.2.16 to 2.2.26

README.txt CHANGED
@@ -67,9 +67,10 @@ The following free features make FooGallery the **best gallery plugin** on the m
67
  * Yoast SEO sitemap integration
68
  * Rank Math SEO sitemap integration
69
  * AIOSEO sitemap integration
70
- * Albums built-in! (just activate the albums extension)
71
  * Responsive album layout - [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/wordpress-album-gallery/)
72
  * All-in-one Stack album - [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/wordpress-album-gallery/#all-in-one)
 
73
  * Gutenberg ready (Gallery previews inside the new editor!)
74
  * Live previews as you make changes!
75
  * Retina thumbnail support
@@ -108,11 +109,11 @@ There are 3 PRO plans available, that will work with any budget:
108
  * Multi-level filtering for galleries [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/filtering/#multi-level)
109
  * Bulk media tags and category management for attachments
110
  * Dynamic Galleries (load images from other sources):
111
- * Load from a folder on the server
112
- * Load from a collection from Adobe Lightroom (using WP/LR Sync)
113
- * Load all attachments with Media Tags
114
- * Load all attachments with Media Categories
115
- * Load from a folder in Real Media Library
116
  * Load featured images from a post/page/custom post type - [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/post-query-gallery/)
117
  * Advanced Pagination
118
  * Numbered pagination - [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/pagination/#numbered)
@@ -140,6 +141,8 @@ There are 3 PRO plans available, that will work with any budget:
140
  * Supports variations
141
  * Master Galleries
142
  * Set a gallery as a master and then all galleries who use that master will inherit all settings from the master - [docs](https://fooplugins.com/documentation/foogallery/pro-commerce/use-master-gallery/)
 
 
143
 
144
  [See More Demos](https://fooplugins.com/foogallery-wordpress-gallery-plugin/demos/)
145
 
@@ -182,7 +185,7 @@ Sell your photographs online with our full WooCommerce integration, available in
182
 
183
  **Albums Built In**
184
 
185
- Albums are built in as an extension. Simply head over to the extensions page and activate the albums extension. A new menu item will appear that allows you to add albums just as easily as galleries.
186
 
187
  **Built For Developers**
188
 
@@ -265,9 +268,19 @@ You can choose to create a gallery based of your products, or you can link all i
265
  For the Free version of FooGallery - Yes, you will need to install FooBox Image Lightbox.
266
  For the PRO version of FooGallery - No, we have built in a uniquely beautiful lightbox!
267
 
 
 
 
 
 
 
 
 
 
 
268
  = How do I get albums working? =
269
 
270
- Simply go to the FooGallery extensions page and activate the Albums extension. If you do not see a button to activate the albums extension, reload the extensions list by clicking the reload button.
271
 
272
  = Can I add a watermark to my images? =
273
 
@@ -299,8 +312,27 @@ Please update in order to for FooGallery to work in WP 5.5+!
299
 
300
  == Changelog ==
301
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
302
  = 2.2.16 =
303
- * Date Updated : 2022-08-13
304
  * New : Added Import/Export feature, so you can export galleries on one install, and import into another.
305
  * New : Added settings to hide nav/paging/progress for Carousel.
306
  * New : Added filter 'foogallery_render_template_template_override' which allows developers to override the gallery template.
@@ -310,6 +342,7 @@ Please update in order to for FooGallery to work in WP 5.5+!
310
  * Fix : Better integration with FooBox and FooGallery.
311
  * Fix : Removed PHP warnings in albums extension.
312
  * Update : FooGallery client side 2.0.35
 
313
 
314
 
315
  = 2.2.8 =
67
  * Yoast SEO sitemap integration
68
  * Rank Math SEO sitemap integration
69
  * AIOSEO sitemap integration
70
+ * Albums built-in! (just activate the albums feature)
71
  * Responsive album layout - [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/wordpress-album-gallery/)
72
  * All-in-one Stack album - [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/wordpress-album-gallery/#all-in-one)
73
+ * Import / Export galleries between WP installs - [docs](https://fooplugins.com/documentation/foogallery/getting-started-foogallery/import-export/)
74
  * Gutenberg ready (Gallery previews inside the new editor!)
75
  * Live previews as you make changes!
76
  * Retina thumbnail support
109
  * Multi-level filtering for galleries [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/filtering/#multi-level)
110
  * Bulk media tags and category management for attachments
111
  * Dynamic Galleries (load images from other sources):
112
+ * Load from a folder on the server [docs](https://fooplugins.com/documentation/foogallery/pro-expert/loading-galleries-server-folders/)
113
+ * Load from a collection from Adobe Lightroom (using WP/LR Sync) [docs](https://fooplugins.com/documentation/foogallery/pro-expert/dynamic-gallery-from-lightroom-collection/)
114
+ * Load all attachments with Media Tags [docs](https://fooplugins.com/documentation/foogallery/pro-expert/loading-galleries-media-tags/)
115
+ * Load all attachments with Media Categories [docs](https://fooplugins.com/documentation/foogallery/pro-expert/loading-galleries-media-categories/)
116
+ * Load from a folder in Real Media Library [docs](https://fooplugins.com/documentation/foogallery/pro-expert/loading-galleries-real-media-library/)
117
  * Load featured images from a post/page/custom post type - [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/post-query-gallery/)
118
  * Advanced Pagination
119
  * Numbered pagination - [demo](https://fooplugins.com/foogallery-wordpress-gallery-plugin/pagination/#numbered)
141
  * Supports variations
142
  * Master Galleries
143
  * Set a gallery as a master and then all galleries who use that master will inherit all settings from the master - [docs](https://fooplugins.com/documentation/foogallery/pro-commerce/use-master-gallery/)
144
+ * White Labeling
145
+ * Rebrand FooGallery to whatever you like for your clients. Ideal for freelancers and agencies. [docs](https://fooplugins.com/documentation/foogallery/pro-commerce/white-labeling/)
146
 
147
  [See More Demos](https://fooplugins.com/foogallery-wordpress-gallery-plugin/demos/)
148
 
185
 
186
  **Albums Built In**
187
 
188
+ Albums are built in as an feature. Simply head over to the Features page and activate the albums feature. A new menu item will appear that allows you to add albums just as easily as galleries.
189
 
190
  **Built For Developers**
191
 
268
  For the Free version of FooGallery - Yes, you will need to install FooBox Image Lightbox.
269
  For the PRO version of FooGallery - No, we have built in a uniquely beautiful lightbox!
270
 
271
+ = How do I import galleries from another install? =
272
+
273
+ Simply go to the FooGallery Features page and activate the Import/Export feature on your source installation and your destination installation.
274
+ Login into your source WordPress install, and click on the FooGallery -> Import/Export menu item.
275
+ Click the Export tab and select the galleries you want to export and click Export.
276
+ Copy the export data that is generated.
277
+ Login into your destination WordPress install, and click on the FooGallery -> Import/Export menu item.
278
+ Paste the export data and click Import.
279
+ Please note : the images in your source install need to be accessible to your destination install (this means you cannot lock down your source install if you want this to work).
280
+
281
  = How do I get albums working? =
282
 
283
+ Simply go to the FooGallery Features page and activate the Albums feature.
284
 
285
  = Can I add a watermark to my images? =
286
 
312
 
313
  == Changelog ==
314
 
315
+ = 2.2.26 =
316
+ * Date Updated : 2022-11-12
317
+ * Fix : import/export include error on some installs.
318
+ * Fix : fixed a few bugs with new edit attachment modal.
319
+
320
+ = 2.2.22 =
321
+ * Date Updated : 2022-10-22
322
+ * New : Added new BETA attachment modal on gallery edit page, which is an easier way to edit attachment info. (Turned on from settings)
323
+ * Update : FooGallery client side 2.0.39
324
+
325
+
326
+ = 2.2.20 =
327
+ * Date Updated : 2022-09-05
328
+ * Fix : Fixed Justified last row + filter bug.
329
+ * Fix : Fixed iOS swipe bug.
330
+ * Fix : Fixed PHP warning when using taxonomy datasource originating from woocommerce product linking.
331
+ * Update : FooGallery client side 2.0.38
332
+
333
+
334
  = 2.2.16 =
335
+ * Date Updated : 2022-08-16
336
  * New : Added Import/Export feature, so you can export galleries on one install, and import into another.
337
  * New : Added settings to hide nav/paging/progress for Carousel.
338
  * New : Added filter 'foogallery_render_template_template_override' which allows developers to override the gallery template.
342
  * Fix : Better integration with FooBox and FooGallery.
343
  * Fix : Removed PHP warnings in albums extension.
344
  * Update : FooGallery client side 2.0.35
345
+ * Update : Updated to Freemius SDK 2.4.5
346
 
347
 
348
  = 2.2.8 =
css/admin-foogallery.css CHANGED
@@ -732,4 +732,236 @@ button[data-balloon]{overflow:visible}[data-balloon]{position:relative}[data-bal
732
  .foogallery-custom-metabox-header .foogallery-template-selector select {
733
  font-size: 13px;
734
  margin: 0 6px;
735
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
732
  .foogallery-custom-metabox-header .foogallery-template-selector select {
733
  font-size: 13px;
734
  margin: 0 6px;
735
+ }
736
+
737
+ .foogallery-multi-filtering-modal-close {
738
+ float: right;
739
+ margin-left: 5px !important;
740
+ }
741
+
742
+ #foogallery-image-edit-modal .foogallery-image-edit-main {
743
+ text-align: center;
744
+ padding: 0 0 20px;
745
+ }
746
+ #foogallery-image-edit-modal .foogallery-image-edit-meta{
747
+ padding: 10px 0px;
748
+ position: relative;
749
+ }
750
+ #foogallery-image-edit-modal .attachment-details {
751
+ display: grid;
752
+ grid-template-columns: 1fr 2fr;
753
+ /*grid-gap: 15px;*/
754
+ padding: 0;
755
+ background: #f0f0f1;
756
+ }
757
+ #foogallery-image-edit-modal .foogallery-image-edit-view {
758
+ margin-bottom: 15px;
759
+ }
760
+ /*
761
+ CSS for the main interaction
762
+ */
763
+ #foogallery-image-edit-modal .tabset .foogallery-img-modal-tab-wrapper > input[type="radio"] {
764
+ position: absolute;
765
+ left: -200vw;
766
+ }
767
+
768
+ #foogallery-image-edit-modal .tab-panel {
769
+ display: none;
770
+ padding: 30px 0;
771
+ /* border-top: 1px solid #ccc; */
772
+ }
773
+ #foogallery-image-edit-modal .tab-panel.active {
774
+ display: block;
775
+ }
776
+ #foogallery-image-edit-modal .tabset .foogallery-img-modal-tab-wrapper > label {
777
+ position: relative;
778
+ display: inline-block;
779
+ padding: 5px 10px 5px;
780
+ border: 1px solid transparent;
781
+ border-bottom: 0;
782
+ cursor: pointer;
783
+ font-weight: 600;
784
+ }
785
+ #foogallery-image-edit-modal .tabset .foogallery-img-modal-tab-wrapper > label:hover,
786
+ #foogallery-image-edit-modal .tabset .foogallery-img-modal-tab-wrapper > input:focus + label {
787
+ color: #06c;
788
+ }
789
+ #foogallery-image-edit-modal .tabset .foogallery-img-modal-tab-wrapper > input:checked + label {
790
+ border-color: #ccc;
791
+ border-bottom-color: rgb(204, 204, 204);
792
+ border-bottom: 2px solid #fff !important;
793
+ margin-bottom: -1.7px;
794
+ cursor: pointer;
795
+ }
796
+ .foogallery-image-edit-meta {
797
+ background-color: #fff;
798
+ padding: 10px;
799
+ }
800
+ #foogallery-image-edit-modal .tabset{
801
+ max-width: 100%;
802
+ padding: 0px 10px;
803
+ border-bottom: 1px solid #ccc;
804
+ }
805
+ #foogallery-panel-main select {
806
+ margin: 0px 8px;
807
+ }
808
+ #foogallery-panel-taxonomies label{
809
+ margin-bottom: 10px;
810
+ display: block;
811
+ }
812
+ .foogallery_woocommerce_tags li {
813
+ position: relative;
814
+ float: left;
815
+ margin-right: 8px;
816
+ margin-bottom: 10px;
817
+ }
818
+ #foogallery-panel-thumbnails label {
819
+ display: inline-block;
820
+ vertical-align: text-bottom;
821
+ margin-right: 30px;
822
+ }
823
+ #foogallery-panel-thumbnails #foogallery_crop_pos {
824
+ display: inline-block;
825
+ vertical-align: text-top;
826
+ margin-bottom: 20px;
827
+ }
828
+ #foogallery-panel-watermark-preview {
829
+ margin-bottom: 20px;
830
+ display: none;
831
+ }
832
+ #foogallery-panel-watermark-preview label {
833
+ margin-bottom: 10px;
834
+ display: block;
835
+ }
836
+ .foogallery-panel-info-inner{
837
+ background: #f6f7f7;
838
+ padding: 10px;;
839
+ }
840
+ #foogallery-image-edit-modal .attachment-details .setting .name {
841
+ font-weight: 600;
842
+ }
843
+ #foogallery-image-edit-modal .attachment-details .copy-to-clipboard-container {
844
+ margin-left: 0;
845
+ margin-bottom: 15px;
846
+ padding: 0;
847
+ }
848
+ #foogallery-image-edit-modal .foogallery-attachments-list-bar {
849
+ margin-top: 20px;
850
+ }
851
+ #foogallery-image-edit-modal .foogallery-attachments-list-bar.clear-thumbnail {
852
+ margin-top: 0;
853
+ }
854
+ #foogallery-image-edit-modal .foogallery-attachments-list-bar.clear-thumbnail .button, #foogallery-img-modal-alternate-image-delete {
855
+ background: #d63638;
856
+ border-color: #d63638;
857
+ }
858
+ #foogallery-image-edit-modal .spinner.is-active{
859
+ float: unset;
860
+ height: 300px;
861
+ background-position: center center;
862
+ margin: 0 auto;
863
+ display: block;
864
+ }
865
+ .foogallery-img-modal-tab-wrapper {
866
+ display: inline-block;
867
+ }
868
+ #foogallery-image-edit-modal .tab-panels .settings span.setting {
869
+ display: grid;
870
+ grid-template-columns: 35% auto;
871
+ grid-gap: 30px;
872
+ }
873
+ #foogallery-image-edit-modal .tab-panels .settings span.setting input, #foogallery-image-edit-modal .tab-panels .settings span.setting select, #foogallery-image-edit-modal .tab-panels .settings span.setting textarea {
874
+ width: calc(100% - 10px);
875
+ box-sizing: border-box;
876
+ max-width: 100%;
877
+ margin-left: 0px !important;
878
+ margin-right: 0px !important;
879
+ }
880
+ #foogallery-image-edit-modal .tab-panels {
881
+ padding: 0px 10px;
882
+ }
883
+ #foogallery-image-edit-modal .tab-panels .settings span.setting input[type="radio"] {
884
+ width: auto;
885
+ margin: 8px 3px 0 !important;
886
+ }
887
+ #foogallery-panel-thumbnails .button-large, #foogallery-panel-watermark .attachment_protection_generate {
888
+ max-width: 225px;
889
+ width: 100%;
890
+ }
891
+ #foogallery-image-edit-modal .attachment-details #foogallery-panel-taxonomies .setting .name {
892
+ padding-top: 5px;
893
+ }
894
+ #foogallery-panel-watermark .attachment_protection_generate {
895
+ float: left;
896
+ }
897
+ .foogallery-modal-footer-wrap {
898
+ text-align: right;
899
+ margin-bottom: 10px;
900
+ margin-right: 20px;
901
+ }
902
+ #foogallery-panel-watermark-preview.watermark-preview-show {
903
+ display: block;
904
+ }
905
+ .foogallery-modal-footer-wrap {
906
+ text-align: right;
907
+ margin-bottom: 10px;
908
+ margin-right: 20px;
909
+ }
910
+ .foogallery-image-edit-footer {
911
+ position: absolute;
912
+ bottom: 10px;
913
+ width: 100%;
914
+ right: 20px;
915
+ text-align: right;
916
+ }
917
+ #foogallery-panel-taxonomies .foogallery_woocommerce_tags, #foogallery-panel-taxonomies .foogallery_woocommerce_categories {
918
+ margin: 0;
919
+ padding: 0;
920
+ }
921
+ #foogallery-image-edit-modal .media-modal-close {
922
+ border-left: 1px solid #dcdcde;
923
+ }
924
+ #foogallery-panel-info .foogallery-panel-info-inner {
925
+ text-align: left;
926
+ padding: 10px 20px;
927
+ column-count: 2;
928
+ column-rule: 2px solid #000;
929
+ column-gap: 50px;
930
+ margin-bottom: 20px;
931
+ -webkit-column-break-inside: avoid;
932
+ page-break-inside: avoid;
933
+ break-inside: avoid;
934
+ column-fill: balance;
935
+ }
936
+ .foogallery-panel-info-inner > div {
937
+ webkit-column-break-inside: avoid;
938
+ page-break-inside: avoid;
939
+ break-inside: avoid;
940
+ }
941
+ .foogallery-modal-info-fields * {
942
+ font-weight: 600;
943
+ vertical-align: middle;
944
+ font-size: 13px;
945
+ }
946
+ #foogallery-img-modal-alternate-image-delete {
947
+ background-color: #f6f7f7;
948
+ color: #2271b1;
949
+ border: 1px solid #2271b1;
950
+ }
951
+ #foogallery-img-modal-alternate-image-delete:hover {
952
+ color: #0a4b78;
953
+ background-color: #f0f0f1;
954
+ border-color: #0a4b78;
955
+ }
956
+ #foogallery-image-edit-modal .tab-panels .settings span.setting.alternate-image-upload-settings {
957
+ grid-template-columns: 1fr;
958
+ }
959
+ #foogallery-image-edit-modal .tab-panels .alternate-image-upload-wrap {
960
+ margin-left: 43px;
961
+ }
962
+ #foogallery-image-edit-modal .tab-panels .settings span.setting.override-thumbnail, #foogallery-image-edit-modal .tab-panels .settings span.setting.override-thumbnail-preview, #foogallery-image-edit-modal .tab-panels .settings span.setting.alternate-image-delete {
963
+ display: none;
964
+ }
965
+ #foogallery-image-edit-modal .tab-panels .settings span.setting.override-thumbnail.is-override-thumbnail, #foogallery-image-edit-modal .tab-panels .settings span.setting.override-thumbnail-preview.is-override-thumbnail, #foogallery-image-edit-modal .tab-panels .settings span.alternate-image-delete.is-override-thumbnail {
966
+ display: grid;
967
+ }
extensions/default-templates/shared/css/foogallery.css CHANGED
@@ -873,7 +873,7 @@
873
  font-family: -apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
874
  font-size: 12px;
875
  font-weight: 400;
876
- line-height: 1.42857143;
877
  text-align: center;
878
  white-space: nowrap;
879
  vertical-align: middle;
@@ -1463,7 +1463,7 @@
1463
  display: inline-block;
1464
  margin: 3px;
1465
  font-weight: 400;
1466
- line-height: 1.42857143;
1467
  text-align: center;
1468
  white-space: nowrap;
1469
  vertical-align: middle;
@@ -1600,7 +1600,7 @@
1600
  display: inline-block;
1601
  margin: 3px;
1602
  font-weight: 400;
1603
- line-height: 1.42857143;
1604
  text-align: center;
1605
  white-space: nowrap;
1606
  vertical-align: middle;
873
  font-family: -apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
874
  font-size: 12px;
875
  font-weight: 400;
876
+ line-height: 1.4;
877
  text-align: center;
878
  white-space: nowrap;
879
  vertical-align: middle;
1463
  display: inline-block;
1464
  margin: 3px;
1465
  font-weight: 400;
1466
+ line-height: 1.4;
1467
  text-align: center;
1468
  white-space: nowrap;
1469
  vertical-align: middle;
1600
  display: inline-block;
1601
  margin: 3px;
1602
  font-weight: 400;
1603
+ line-height: 1.4;
1604
  text-align: center;
1605
  white-space: nowrap;
1606
  vertical-align: middle;
extensions/default-templates/shared/css/foogallery.min.css CHANGED
@@ -1 +1 @@
1
- .foogallery,.foogallery *{box-sizing:border-box}.foogallery{display:block;z-index:1;font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;position:relative;line-height:0;font-size:0;width:100%;max-width:100%}.foogallery .fg-item{display:inline-block;position:relative;background-color:transparent;z-index:2;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.foogallery .fg-item.fg-hidden{display:none!important}.foogallery .fg-item-inner{display:block;position:relative;visibility:hidden;overflow:hidden;opacity:0;z-index:3;margin:0;border:solid 0 transparent}.foogallery .fg-item.fg-error:before{content:"";display:block;position:absolute;top:50%;left:50%;transform:translateX(-50%) translateY(-50%);width:32px;height:32px;background-image:url('../img/icons.svg#image');background-color:transparent;background-repeat:no-repeat;background-position:center center;background-size:32px 32px}.foogallery .fg-item.fg-loaded{z-index:4}.foogallery .fg-loaded .fg-item-inner{visibility:visible;opacity:1;z-index:5}.foogallery .fg-error .fg-item-inner{pointer-events:none;cursor:default}.foogallery .fg-thumb{display:block;position:relative;border:none;outline:0;text-decoration:none;z-index:4;box-shadow:none}.foogallery .fg-thumb:focus,.foogallery .fg-thumb:hover{border:none;outline:0;text-decoration:none;box-shadow:none}.foogallery .fg-image-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:8;visibility:hidden;opacity:0}.foogallery .fg-image-wrap{display:block;position:relative}.foogallery .fg-image{display:block;position:relative;border:none;outline:0;text-decoration:none;z-index:5;max-width:100%;height:auto;margin:0;width:auto}.foogallery picture.fg-image>img{display:block;position:relative;border:none;outline:0;text-decoration:none;max-width:100%;height:auto;margin:0;width:auto}.foogallery .fg-loaded .fg-thumb{z-index:6}.foogallery .fg-loaded .fg-image{z-index:7}.fg-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.foogallery.fg-light .fg-item-inner{background-color:#fff;color:#333;border-color:#fff}.foogallery.fg-dark .fg-item-inner{background-color:#333;color:#fff;border-color:#333}.foogallery.fg-light .fg-item.fg-error,.foogallery.fg-light .fg-item.fg-idle,.foogallery.fg-light .fg-item.fg-loading{background-color:#eee;box-shadow:inset 0 0 0 1px #ddd}.foogallery.fg-dark .fg-item.fg-error,.foogallery.fg-dark .fg-item.fg-idle,.foogallery.fg-dark .fg-item.fg-loading{background-color:#444;box-shadow:inset 0 0 0 1px #333}.foogallery .fg-caption{background-color:rgba(0,0,0,.6);color:#fff}.foogallery .fg-caption a{color:#fff;border-bottom:1px solid #fff}.foogallery.fg-light-overlays .fg-caption{background-color:rgba(255,255,255,.8);color:#333}.foogallery.fg-light-overlays .fg-caption a{color:#333;border-bottom-color:#333}.foogallery.fg-transparent-overlays .fg-caption{background-color:transparent;color:#fff}.foogallery.fg-transparent-overlays .fg-caption a{color:#fff;border-bottom-color:#fff}.foogallery .fg-image-overlay{background-color:rgba(0,0,0,.6);color:#fff}.foogallery.fg-light-overlays .fg-image-overlay{background-color:rgba(255,255,255,.8);color:#333}.foogallery.fg-transparent-overlays .fg-image-overlay{background-color:transparent;color:#fff}.fg-exif-light .fg-item.fg-item-exif .fg-image-wrap:after{background-color:#fff;color:#333}.fg-exif-dark .fg-item.fg-item-exif .fg-image-wrap:after{background-color:#333;color:#fff}.fg-exif-rounded .fg-item.fg-item-exif .fg-image-wrap:after{border-radius:3px}.fg-exif-bottom-left .fg-item.fg-item-exif .fg-image-wrap:after,.fg-exif-bottom-right .fg-item.fg-item-exif .fg-image-wrap:after,.fg-exif-top-left .fg-item.fg-item-exif .fg-image-wrap:after,.fg-exif-top-right .fg-item.fg-item-exif .fg-image-wrap:after{display:inline-block;position:absolute;content:'EXIF';font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:11px;line-height:10px;padding:3px 4px;z-index:7}.fg-exif-bottom-right .fg-item.fg-item-exif .fg-image-wrap:after{bottom:5px;right:5px}.fg-exif-bottom-left .fg-item.fg-item-exif .fg-image-wrap:after{bottom:5px;left:5px}.fg-exif-top-right .fg-item.fg-item-exif .fg-image-wrap:after{top:5px;right:5px}.fg-exif-top-left .fg-item.fg-item-exif .fg-image-wrap:after{top:5px;left:5px}.foogallery.fg-border-thin .fg-item-inner{border-width:4px}.foogallery.fg-border-medium .fg-item-inner{border-width:10px}.foogallery.fg-border-thick .fg-item-inner{border-width:16px}.foogallery.fg-light.fg-shadow-outline .fg-item-inner{box-shadow:0 0 0 1px #ddd}.foogallery.fg-dark.fg-shadow-outline .fg-item-inner{box-shadow:0 0 0 1px #222}.foogallery.fg-dark.fg-shadow-small .fg-item-inner,.foogallery.fg-light.fg-shadow-small .fg-item-inner{box-shadow:0 1px 4px 0 rgba(0,0,0,.5)}.foogallery.fg-dark.fg-shadow-medium .fg-item-inner,.foogallery.fg-light.fg-shadow-medium .fg-item-inner{box-shadow:0 1px 10px 0 rgba(0,0,0,.5)}.foogallery.fg-dark.fg-shadow-large .fg-item-inner,.foogallery.fg-light.fg-shadow-large .fg-item-inner{box-shadow:0 1px 16px 0 rgba(0,0,0,.5)}.foogallery.fg-shadow-inset-large .fg-thumb:after,.foogallery.fg-shadow-inset-medium .fg-thumb:after,.foogallery.fg-shadow-inset-small .fg-thumb:after{display:block;content:"";position:absolute;top:0;left:0;right:0;bottom:0;z-index:7}.foogallery.fg-dark.fg-shadow-inset-small .fg-thumb:after,.foogallery.fg-light.fg-shadow-inset-small .fg-thumb:after{box-shadow:inset 0 1px 4px 0 rgba(0,0,0,.3)}.foogallery.fg-dark.fg-shadow-inset-medium .fg-thumb:after,.foogallery.fg-light.fg-shadow-inset-medium .fg-thumb:after{box-shadow:inset 0 1px 10px 0 rgba(0,0,0,.3)}.foogallery.fg-dark.fg-shadow-inset-large .fg-thumb:after,.foogallery.fg-light.fg-shadow-inset-large .fg-thumb:after{box-shadow:inset 0 1px 16px 0 rgba(0,0,0,.3)}.foogallery.fg-round-full.fg-shadow-inset-large .fg-thumb:after,.foogallery.fg-round-full.fg-shadow-inset-medium .fg-thumb:after,.foogallery.fg-round-full.fg-shadow-inset-small .fg-thumb:after{border-radius:50%}.foogallery.fg-round-small .fg-item,.foogallery.fg-round-small .fg-item-inner{border-radius:5px}.foogallery.fg-round-medium .fg-item,.foogallery.fg-round-medium .fg-item-inner{border-radius:10px}.foogallery.fg-round-large .fg-item,.foogallery.fg-round-large .fg-item-inner{border-radius:15px}.foogallery.fg-round-full .fg-item,.foogallery.fg-round-full .fg-item-inner{border-radius:50%}.foogallery .fg-loader{position:absolute;top:50%;left:50%;margin-top:-.5em;margin-left:-.5em;width:1em;height:1em;font-size:5px;visibility:hidden;opacity:0;pointer-events:none}.foogallery .fg-loading .fg-loader{visibility:visible;opacity:1}.fg-loading-default .fg-loader{border-radius:50%;text-indent:-9999em;box-shadow:0 -2.6em 0 0 #828282,1.8em -1.8em 0 0 rgba(130,130,130,.2),2.5em 0 0 0 rgba(130,130,130,.2),1.75em 1.75em 0 0 rgba(130,130,130,.2),0 2.5em 0 0 rgba(130,130,130,.2),-1.8em 1.8em 0 0 rgba(130,130,130,.2),-2.6em 0 0 0 rgba(130,130,130,.5),-1.8em -1.8em 0 0 rgba(130,130,130,.7);-webkit-animation:loading-default 1.1s infinite paused steps(8,start);animation:loading-default 1.1s infinite paused steps(8,start)}.fg-loading-default .fg-loading .fg-loader{-webkit-animation-play-state:running;animation-play-state:running}@-webkit-keyframes loading-default{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes loading-default{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.fg-loading-bars .fg-loader,.fg-loading-bars .fg-loader:after,.fg-loading-bars .fg-loader:before{background:#828282;width:1em;height:4em;-webkit-animation:loading-bars 1s infinite paused ease-in-out;animation:loading-bars 1s infinite paused ease-in-out}.fg-loading-bars .fg-loading .fg-loader,.fg-loading-bars .fg-loading .fg-loader:after,.fg-loading-bars .fg-loading .fg-loader:before{-webkit-animation-play-state:running;animation-play-state:running}.fg-loading-bars .fg-loader{color:#828282;text-indent:-9999em;font-size:4px;margin-top:-2em;margin-left:-.5em;-webkit-animation-delay:-.16s;animation-delay:-.16s}.fg-loading-bars .fg-loader:after,.fg-loading-bars .fg-loader:before{position:absolute;top:0;content:''}.fg-loading-bars .fg-loader:before{left:-1.5em;-webkit-animation-delay:-.32s;animation-delay:-.32s}.fg-loading-bars .fg-loader:after{left:1.5em}@-webkit-keyframes loading-bars{0%,100%,80%{box-shadow:0 0;height:4em}40%{box-shadow:0 -2em;height:5em}}@keyframes loading-bars{0%,100%,80%{box-shadow:0 0;height:4em}40%{box-shadow:0 -2em;height:5em}}.fg-loading-trail .fg-loader{color:#828282;margin-top:0;margin-left:0;font-size:20px;text-indent:-9999em;overflow:hidden;border-radius:50%;-webkit-animation:loading-trail-1 1.7s infinite paused ease,loading-trail-2 1.7s infinite paused ease;animation:loading-trail-1 1.7s infinite paused ease,loading-trail-2 1.7s infinite paused ease}.fg-loading-trail .fg-loading .fg-loader{-webkit-animation-play-state:running;animation-play-state:running}@-webkit-keyframes loading-trail-1{0%{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}5%,95%{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}10%,59%{box-shadow:0 -.83em 0 -.4em,-.087em -.825em 0 -.42em,-.173em -.812em 0 -.44em,-.256em -.789em 0 -.46em,-.297em -.775em 0 -.477em}20%{box-shadow:0 -.83em 0 -.4em,-.338em -.758em 0 -.42em,-.555em -.617em 0 -.44em,-.671em -.488em 0 -.46em,-.749em -.34em 0 -.477em}38%{box-shadow:0 -.83em 0 -.4em,-.377em -.74em 0 -.42em,-.645em -.522em 0 -.44em,-.775em -.297em 0 -.46em,-.82em -.09em 0 -.477em}100%{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}}@keyframes loading-trail-1{0%{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}5%,95%{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}10%,59%{box-shadow:0 -.83em 0 -.4em,-.087em -.825em 0 -.42em,-.173em -.812em 0 -.44em,-.256em -.789em 0 -.46em,-.297em -.775em 0 -.477em}20%{box-shadow:0 -.83em 0 -.4em,-.338em -.758em 0 -.42em,-.555em -.617em 0 -.44em,-.671em -.488em 0 -.46em,-.749em -.34em 0 -.477em}38%{box-shadow:0 -.83em 0 -.4em,-.377em -.74em 0 -.42em,-.645em -.522em 0 -.44em,-.775em -.297em 0 -.46em,-.82em -.09em 0 -.477em}100%{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}}@-webkit-keyframes loading-trail-2{0%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(0);transform:translateX(-50%) translateY(-50%) rotate(0)}100%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(360deg);transform:translateX(-50%) translateY(-50%) rotate(360deg)}}@keyframes loading-trail-2{0%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(0);transform:translateX(-50%) translateY(-50%) rotate(0)}100%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(360deg);transform:translateX(-50%) translateY(-50%) rotate(360deg)}}.fg-loading-pulse .fg-loader,.fg-loading-pulse .fg-loader:after,.fg-loading-pulse .fg-loader:before{border-radius:50%;width:2.5em;height:2.5em;-webkit-animation:loading-pulse 1.8s infinite both paused ease-in-out;animation:loading-pulse 1.8s infinite both paused ease-in-out}.fg-loading-pulse .fg-loading .fg-loader,.fg-loading-pulse .fg-loading .fg-loader:after,.fg-loading-pulse .fg-loading .fg-loader:before{-webkit-animation-play-state:running;animation-play-state:running}.fg-loading-pulse .fg-loader{color:#828282;font-size:4px;margin-top:-3.75em;margin-left:-1.25em;text-indent:-9999em;-webkit-animation-delay:-.16s;animation-delay:-.16s}.fg-loading-pulse .fg-loader:after,.fg-loading-pulse .fg-loader:before{content:'';position:absolute;top:0}.fg-loading-pulse .fg-loader:before{left:-3.5em;-webkit-animation-delay:-.32s;animation-delay:-.32s}.fg-loading-pulse .fg-loader:after{left:3.5em}@-webkit-keyframes loading-pulse{0%,100%,80%{box-shadow:0 2.5em 0 -1.3em}40%{box-shadow:0 2.5em 0 0}}@keyframes loading-pulse{0%,100%,80%{box-shadow:0 2.5em 0 -1.3em}40%{box-shadow:0 2.5em 0 0}}.fg-loading-dots .fg-loader{color:#828282;font-size:5px;border-radius:50%;text-indent:-9999em;-webkit-animation:loading-dots 1.3s infinite paused linear;animation:loading-dots 1.3s infinite paused linear}.fg-loading-dots .fg-loading .fg-loader{-webkit-animation-play-state:running;animation-play-state:running}@-webkit-keyframes loading-dots{0%,100%{box-shadow:0 -3em 0 .2em,2em -2em 0 0,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 0}12.5%{box-shadow:0 -3em 0 0,2em -2em 0 .2em,3em 0 0 0,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}25%{box-shadow:0 -3em 0 -.5em,2em -2em 0 0,3em 0 0 .2em,2em 2em 0 0,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}37.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 0,2em 2em 0 .2em,0 3em 0 0,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}50%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 0,0 3em 0 .2em,-2em 2em 0 0,-3em 0 0 -1em,-2em -2em 0 -1em}62.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 0,-2em 2em 0 .2em,-3em 0 0 0,-2em -2em 0 -1em}75%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 .2em,-2em -2em 0 0}87.5%{box-shadow:0 -3em 0 0,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 0,-2em -2em 0 .2em}}@keyframes loading-dots{0%,100%{box-shadow:0 -3em 0 .2em,2em -2em 0 0,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 0}12.5%{box-shadow:0 -3em 0 0,2em -2em 0 .2em,3em 0 0 0,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}25%{box-shadow:0 -3em 0 -.5em,2em -2em 0 0,3em 0 0 .2em,2em 2em 0 0,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}37.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 0,2em 2em 0 .2em,0 3em 0 0,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}50%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 0,0 3em 0 .2em,-2em 2em 0 0,-3em 0 0 -1em,-2em -2em 0 -1em}62.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 0,-2em 2em 0 .2em,-3em 0 0 0,-2em -2em 0 -1em}75%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 .2em,-2em -2em 0 0}87.5%{box-shadow:0 -3em 0 0,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 0,-2em -2em 0 .2em}}.fg-loading-partial .fg-loader,.fg-loading-partial .fg-loader:after{border-radius:50%;width:10em;height:10em}.fg-loading-partial .fg-loader{font-size:4px;text-indent:-9999em;margin-top:0;margin-left:0;border-top:1.1em solid rgba(130,130,130,.2);border-right:1.1em solid rgba(130,130,130,.2);border-bottom:1.1em solid rgba(130,130,130,.2);border-left:1.1em solid #828282;-webkit-animation:loading-partial 1.1s infinite paused linear;animation:loading-partial 1.1s infinite paused linear}.fg-loading-partial .fg-loading .fg-loader{-webkit-animation-play-state:running;animation-play-state:running}@-webkit-keyframes loading-partial{0%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(0);transform:translateX(-50%) translateY(-50%) rotate(0)}100%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(360deg);transform:translateX(-50%) translateY(-50%) rotate(360deg)}}@keyframes loading-partial{0%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(0);transform:translateX(-50%) translateY(-50%) rotate(0)}100%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(360deg);transform:translateX(-50%) translateY(-50%) rotate(360deg)}}.foogallery.fg-loaded-drop .fg-item.fg-loaded,.foogallery.fg-loaded-fade-in .fg-item.fg-loaded,.foogallery.fg-loaded-flip .fg-item.fg-loaded,.foogallery.fg-loaded-fly .fg-item.fg-loaded,.foogallery.fg-loaded-scale-up .fg-item.fg-loaded,.foogallery.fg-loaded-slide-down .fg-item.fg-loaded,.foogallery.fg-loaded-slide-left .fg-item.fg-loaded,.foogallery.fg-loaded-slide-right .fg-item.fg-loaded,.foogallery.fg-loaded-slide-up .fg-item.fg-loaded,.foogallery.fg-loaded-swing-down .fg-item.fg-loaded{transition-timing-function:ease;transition-duration:650ms;transition-property:background-color,transform}.foogallery.fg-loaded-drop .fg-loaded .fg-item-inner,.foogallery.fg-loaded-fade-in .fg-loaded .fg-item-inner,.foogallery.fg-loaded-flip .fg-loaded .fg-item-inner,.foogallery.fg-loaded-fly .fg-loaded .fg-item-inner,.foogallery.fg-loaded-scale-up .fg-loaded .fg-item-inner,.foogallery.fg-loaded-slide-down .fg-loaded .fg-item-inner,.foogallery.fg-loaded-slide-left .fg-loaded .fg-item-inner,.foogallery.fg-loaded-slide-right .fg-loaded .fg-item-inner,.foogallery.fg-loaded-slide-up .fg-loaded .fg-item-inner,.foogallery.fg-loaded-swing-down .fg-loaded .fg-item-inner{transition-timing-function:ease;transition-duration:650ms}.foogallery.fg-loaded-drop .fg-item.fg-loaded,.foogallery.fg-loaded-flip .fg-item.fg-loaded,.foogallery.fg-loaded-fly .fg-item.fg-loaded,.foogallery.fg-loaded-swing-down .fg-item.fg-loaded{perspective:1300px}.foogallery.fg-loaded-drop .fg-item-inner{transition-property:visibility,opacity,transform;transform-style:preserve-3d;transform:translateZ(400px) translateY(100%) rotateX(-90deg)}.foogallery.fg-loaded-drop .fg-loaded .fg-item-inner{transform:translateZ(0) translateY(0) rotateX(0)}.foogallery.fg-loaded-fade-in .fg-item-inner{transition-property:visibility,opacity}.foogallery.fg-loaded-flip .fg-item-inner{transition-property:visibility,opacity,transform;backface-visibility:hidden;transform-style:preserve-3d;transform:rotateY(-180deg)}.foogallery.fg-loaded-flip .fg-loaded .fg-item-inner{transform:rotateY(0)}.foogallery.fg-loaded-fly .fg-item-inner{transition-property:visibility,opacity,transform;transform-style:preserve-3d;transform-origin:50% 50% -300px;transform:rotateX(-180deg)}.foogallery.fg-loaded-fly .fg-loaded .fg-item-inner{transform:rotateX(0)}.foogallery.fg-loaded-scale-up .fg-item-inner{transition-property:visibility,opacity,transform;transform:scale(.6)}.foogallery.fg-loaded-scale-up .fg-loaded .fg-item-inner{transform:scale(1)}.foogallery.fg-loaded-slide-up .fg-item-inner{transition-property:visibility,opacity,transform;transform:translateY(50%)}.foogallery.fg-loaded-slide-up .fg-loaded .fg-item-inner{transform:translateY(0)}.foogallery.fg-loaded-slide-down .fg-item-inner{transition-property:visibility,opacity,transform;transform:translateY(-50%)}.foogallery.fg-loaded-slide-down .fg-loaded .fg-item-inner{transform:translateY(0)}.foogallery.fg-loaded-slide-left .fg-item-inner{transition-property:visibility,opacity,transform;transform:translateX(50%)}.foogallery.fg-loaded-slide-left .fg-loaded .fg-item-inner{transform:translateX(0)}.foogallery.fg-loaded-slide-right .fg-item-inner{transition-property:visibility,opacity,transform;transform:translateX(-50%)}.foogallery.fg-loaded-slide-right .fg-loaded .fg-item-inner{transform:translateX(0)}.foogallery.fg-loaded-swing-down .fg-item-inner{transition-property:visibility,opacity,transform;transform-style:preserve-3d;transform-origin:0 0;transform:rotateX(-80deg)}.foogallery.fg-loaded-swing-down .fg-loaded .fg-item-inner{transform:rotateX(0)}.foogallery .fg-caption{visibility:hidden;opacity:0;position:absolute;z-index:8;width:100%;max-height:100%;overflow:hidden;font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:13px;font-weight:400;line-height:1.3;border:none;text-align:center;cursor:pointer;margin:0}.foogallery .fg-caption a{text-decoration:none}.foogallery .fg-caption a:hover{border-bottom:none}.foogallery .fg-caption-title{box-sizing:content-box;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:16px;font-weight:400;padding:0;margin:.4em;height:1.3em;min-height:1.3em;line-height:1.3em}.foogallery .fg-caption-desc{padding:0;margin:.4em;overflow:hidden;height:100%;max-height:100%}.foogallery .fg-caption-title+.fg-caption-desc{margin-top:0}.foogallery .fg-caption-buttons{display:flex;position:relative;flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:center;width:100%;padding:5px;margin:0}.foogallery .fg-caption-buttons>a{display:inline-block;position:relative;padding:.4em .8em;margin:1px;max-width:100%;font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:12px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;user-select:none;background-image:none;text-decoration:none!important;border:1px solid transparent;border-radius:4px;box-shadow:none;outline:0;opacity:1;transition-timing-function:ease-out;transition-duration:.3s;transition-property:color,opacity,border-color,background-color}@media only screen and (max-width:600px){.foogallery .fg-caption-buttons{align-items:stretch}.foogallery .fg-caption-buttons>a{flex:1}}.foogallery .fg-caption .fg-caption-buttons>a{color:#333;background-color:#fff;border-color:#ccc}.foogallery .fg-caption .fg-caption-buttons>a:not(.fg-disabled):hover{color:#333;background-color:#e6e6e6;border-color:#adadad;border-bottom:solid 1px}.foogallery .fg-caption .fg-caption-buttons>a.fg-disabled{color:#9d9d9d}.foogallery .fg-caption .fg-caption-buttons>a.fg-disabled:hover{border-bottom:solid 1px}.foogallery.fg-light-overlays .fg-caption .fg-caption-buttons>a{color:#fff;background-color:#444;border-color:#333}.foogallery.fg-light-overlays .fg-caption .fg-caption-buttons>a:not(.fg-disabled):hover{color:#9d9d9d;background-color:#333;border-color:#222}.foogallery.fg-light-overlays .fg-caption .fg-caption-buttons>a.fg-disabled{color:#9d9d9d}.foogallery.fg-light-overlays .fg-caption .fg-caption-buttons>a.fg-disabled:hover{border-bottom:solid 1px}.foogallery.fg-caption-always .fg-item .fg-caption .fg-caption-inner:before{display:none}.foogallery.fg-caption-always .fg-item.fg-loaded .fg-caption{left:0;bottom:0;transition-timing-function:ease;transition-duration:.3s;transition-property:visibility,opacity;visibility:visible;opacity:1}.foogallery.fg-caption-always .fg-caption{text-align:left}.foogallery.fg-caption-hover .fg-caption .fg-caption-inner{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;max-height:100%;position:absolute;top:50%;left:0;transform:translateY(-50%);padding:.4em}.foogallery.fg-caption-hover .fg-item.fg-loaded .fg-image-overlay{display:none}.foogallery.fg-c-l .fg-caption,.foogallery.fg-caption-always.fg-c-l .fg-caption{text-align:left}.foogallery.fg-c-c .fg-caption,.foogallery.fg-caption-always.fg-c-c .fg-caption{text-align:center}.foogallery.fg-c-r .fg-caption,.foogallery.fg-caption-always.fg-c-r .fg-caption{text-align:right}.foogallery.fg-c-j .fg-caption,.foogallery.fg-caption-always.fg-c-j .fg-caption{text-align:justify}.foogallery .fg-image-overlay:before{content:"";display:block;position:absolute;top:50%;left:50%;transform:translateX(-50%) translateY(-50%);width:32px;height:32px;background-size:32px 32px;background-position:center center;background-repeat:no-repeat;min-width:32px;min-height:32px}.foogallery .fg-caption-inner:before{content:"";display:none;position:relative;width:32px;height:32px;margin:.4em;background-size:32px 32px;vertical-align:middle;background-position:center center;background-repeat:no-repeat;min-width:32px;min-height:32px}.foogallery.fg-hover-cart:not(.fg-preset) .fg-caption-inner:before,.foogallery.fg-hover-circle-plus:not(.fg-preset) .fg-caption-inner:before,.foogallery.fg-hover-external:not(.fg-preset) .fg-caption-inner:before,.foogallery.fg-hover-eye:not(.fg-preset) .fg-caption-inner:before,.foogallery.fg-hover-plus:not(.fg-preset) .fg-caption-inner:before,.foogallery.fg-hover-tint:not(.fg-preset) .fg-caption-inner:before,.foogallery.fg-hover-zoom2:not(.fg-preset) .fg-caption-inner:before,.foogallery.fg-hover-zoom3:not(.fg-preset) .fg-caption-inner:before,.foogallery.fg-hover-zoom:not(.fg-preset) .fg-caption-inner:before,.foogallery.fg-video-1:not(.fg-preset) .fg-caption-inner:before,.foogallery.fg-video-2:not(.fg-preset) .fg-caption-inner:before,.foogallery.fg-video-3:not(.fg-preset) .fg-caption-inner:before,.foogallery.fg-video-4:not(.fg-preset) .fg-caption-inner:before,.foogallery.fg-video-default:not(.fg-preset) .fg-caption-inner:before{display:block}.foogallery.fg-hover-cart:not(.fg-preset) .fg-item-inner:hover .fg-image-overlay,.foogallery.fg-hover-circle-plus:not(.fg-preset) .fg-item-inner:hover .fg-image-overlay,.foogallery.fg-hover-external:not(.fg-preset) .fg-item-inner:hover .fg-image-overlay,.foogallery.fg-hover-eye:not(.fg-preset) .fg-item-inner:hover .fg-image-overlay,.foogallery.fg-hover-plus:not(.fg-preset) .fg-item-inner:hover .fg-image-overlay,.foogallery.fg-hover-tint:not(.fg-preset) .fg-item-inner:hover .fg-image-overlay,.foogallery.fg-hover-zoom2:not(.fg-preset) .fg-item-inner:hover .fg-image-overlay,.foogallery.fg-hover-zoom3:not(.fg-preset) .fg-item-inner:hover .fg-image-overlay,.foogallery.fg-hover-zoom:not(.fg-preset) .fg-item-inner:hover .fg-image-overlay,.foogallery.fg-video-1:not(.fg-preset) .fg-type-video .fg-item-inner:hover .fg-image-overlay,.foogallery.fg-video-2:not(.fg-preset) .fg-type-video .fg-item-inner:hover .fg-image-overlay,.foogallery.fg-video-3:not(.fg-preset) .fg-type-video .fg-item-inner:hover .fg-image-overlay,.foogallery.fg-video-4:not(.fg-preset) .fg-type-video .fg-item-inner:hover .fg-image-overlay,.foogallery.fg-video-default:not(.fg-preset) .fg-type-video .fg-item-inner:hover .fg-image-overlay{visibility:visible;opacity:1}.foogallery.fg-video-sticky .fg-type-video.fg-loaded .fg-item-inner .fg-image-overlay{background-color:transparent;visibility:visible;opacity:1;display:block}.foogallery.fg-video-sticky .fg-type-video .fg-caption-inner:before{display:none}.foogallery.fg-hover-zoom .fg-caption-inner:before,.foogallery.fg-hover-zoom .fg-image-overlay:before{background-image:url('../img/icons.svg#zoom-light')}.foogallery.fg-light-overlays.fg-hover-zoom .fg-caption-inner:before,.foogallery.fg-light-overlays.fg-hover-zoom .fg-image-overlay:before{background-image:url('../img/icons.svg#zoom-dark')}.foogallery.fg-hover-zoom2 .fg-caption-inner:before,.foogallery.fg-hover-zoom2 .fg-image-overlay:before{background-image:url('../img/icons.svg#zoom2-light')}.foogallery.fg-light-overlays.fg-hover-zoom2 .fg-caption-inner:before,.foogallery.fg-light-overlays.fg-hover-zoom2 .fg-image-overlay:before{background-image:url('../img/icons.svg#zoom2-dark')}.foogallery.fg-hover-zoom3 .fg-caption-inner:before,.foogallery.fg-hover-zoom3 .fg-image-overlay:before{background-image:url('../img/icons.svg#zoom3-light')}.foogallery.fg-light-overlays.fg-hover-zoom3 .fg-caption-inner:before,.foogallery.fg-light-overlays.fg-hover-zoom3 .fg-image-overlay:before{background-image:url('../img/icons.svg#zoom3-dark')}.foogallery.fg-hover-plus .fg-caption-inner:before,.foogallery.fg-hover-plus .fg-image-overlay:before{background-image:url('../img/icons.svg#plus-light')}.foogallery.fg-light-overlays.fg-hover-plus .fg-caption-inner:before,.foogallery.fg-light-overlays.fg-hover-plus .fg-image-overlay:before{background-image:url('../img/icons.svg#plus-dark')}.foogallery.fg-hover-circle-plus .fg-caption-inner:before,.foogallery.fg-hover-circle-plus .fg-image-overlay:before{background-image:url('../img/icons.svg#circle-plus-light')}.foogallery.fg-light-overlays.fg-hover-circle-plus .fg-caption-inner:before,.foogallery.fg-light-overlays.fg-hover-circle-plus .fg-image-overlay:before{background-image:url('../img/icons.svg#circle-plus-dark')}.foogallery.fg-hover-eye .fg-caption-inner:before,.foogallery.fg-hover-eye .fg-image-overlay:before{background-image:url('../img/icons.svg#eye-light')}.foogallery.fg-light-overlays.fg-hover-eye .fg-caption-inner:before,.foogallery.fg-light-overlays.fg-hover-eye .fg-image-overlay:before{background-image:url('../img/icons.svg#eye-dark')}.foogallery.fg-hover-external .fg-caption-inner:before,.foogallery.fg-hover-external .fg-image-overlay:before{background-image:url('../img/icons.svg#external-light')}.foogallery.fg-light-overlays.fg-hover-external .fg-caption-inner:before,.foogallery.fg-light-overlays.fg-hover-external .fg-image-overlay:before{background-image:url('../img/icons.svg#external-dark')}.foogallery.fg-hover-cart .fg-caption-inner:before,.foogallery.fg-hover-cart .fg-image-overlay:before{background-image:url('../img/icons.svg#cart-light')}.foogallery.fg-light-overlays.fg-hover-cart .fg-caption-inner:before,.foogallery.fg-light-overlays.fg-hover-cart .fg-image-overlay:before{background-image:url('../img/icons.svg#cart-dark')}.foogallery.fg-video-default .fg-type-video .fg-caption-inner:before,.foogallery.fg-video-default .fg-type-video .fg-image-overlay:before{background-image:url('../img/icons.svg#video-default-light')}.foogallery.fg-light-overlays.fg-video-default .fg-type-video .fg-caption-inner:before,.foogallery.fg-light-overlays.fg-video-default .fg-type-video .fg-image-overlay:before{background-image:url('../img/icons.svg#video-default-dark')}.foogallery.fg-video-1 .fg-type-video .fg-caption-inner:before,.foogallery.fg-video-1 .fg-type-video .fg-image-overlay:before{background-image:url('../img/icons.svg#video-1-light')}.foogallery.fg-light-overlays.fg-video-1 .fg-type-video .fg-caption-inner:before,.foogallery.fg-light-overlays.fg-video-1 .fg-type-video .fg-image-overlay:before{background-image:url('../img/icons.svg#video-1-dark')}.foogallery.fg-video-2 .fg-type-video .fg-caption-inner:before,.foogallery.fg-video-2 .fg-type-video .fg-image-overlay:before{background-image:url('../img/icons.svg#video-2-light')}.foogallery.fg-light-overlays.fg-video-2 .fg-type-video .fg-caption-inner:before,.foogallery.fg-light-overlays.fg-video-2 .fg-type-video .fg-image-overlay:before{background-image:url('../img/icons.svg#video-2-dark')}.foogallery.fg-video-3 .fg-type-video .fg-caption-inner:before,.foogallery.fg-video-3 .fg-type-video .fg-image-overlay:before{background-image:url('../img/icons.svg#video-3-light')}.foogallery.fg-light-overlays.fg-video-3 .fg-type-video .fg-caption-inner:before,.foogallery.fg-light-overlays.fg-video-3 .fg-type-video .fg-image-overlay:before{background-image:url('../img/icons.svg#video-3-dark')}.foogallery.fg-video-4 .fg-type-video .fg-caption-inner:before,.foogallery.fg-video-4 .fg-type-video .fg-image-overlay:before{background-image:url('../img/icons.svg#video-4-light')}.foogallery.fg-light-overlays.fg-video-4 .fg-type-video .fg-caption-inner:before,.foogallery.fg-light-overlays.fg-video-4 .fg-type-video .fg-image-overlay:before{background-image:url('../img/icons.svg#video-4-dark')}.foogallery.fg-caption-hover.fg-hover-colorize .fg-loaded .fg-caption,.foogallery.fg-caption-hover.fg-hover-fade .fg-loaded .fg-caption,.foogallery.fg-caption-hover.fg-hover-grayscale .fg-loaded .fg-caption,.foogallery.fg-caption-hover.fg-hover-instant .fg-loaded .fg-caption,.foogallery.fg-caption-hover.fg-hover-push .fg-loaded .fg-caption,.foogallery.fg-caption-hover.fg-hover-scale .fg-loaded .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-down .fg-loaded .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-left .fg-loaded .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-right .fg-loaded .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-up .fg-loaded .fg-caption,.foogallery.fg-hover-colorize .fg-loaded .fg-image,.foogallery.fg-hover-colorize .fg-loaded .fg-image-overlay,.foogallery.fg-hover-fade .fg-loaded .fg-image-overlay,.foogallery.fg-hover-grayscale .fg-loaded .fg-image,.foogallery.fg-hover-grayscale .fg-loaded .fg-image-overlay,.foogallery.fg-hover-instant .fg-loaded .fg-image-overlay,.foogallery.fg-hover-push .fg-loaded .fg-thumb,.foogallery.fg-hover-scale .fg-item.fg-loaded,.foogallery.fg-hover-scale .fg-loaded .fg-image-overlay,.foogallery.fg-hover-slide-down .fg-loaded .fg-image-overlay,.foogallery.fg-hover-slide-left .fg-loaded .fg-image-overlay,.foogallery.fg-hover-slide-right .fg-loaded .fg-image-overlay,.foogallery.fg-hover-slide-up .fg-loaded .fg-image-overlay,.foogallery.fg-hover-zoomed .fg-loaded .fg-image{transition-timing-function:ease;transition-duration:.3s;backface-visibility:hidden}.foogallery.fg-hover-colorize .fg-image{filter:grayscale(100%);transition-property:filter}.foogallery.fg-hover-colorize .fg-item-inner:focus-within .fg-image,.foogallery.fg-hover-colorize .fg-item-inner:hover .fg-image{filter:grayscale(0%)}.foogallery.fg-caption-hover.fg-hover-colorize .fg-caption,.foogallery.fg-hover-colorize .fg-image-overlay{display:block;left:0;top:0;bottom:0;transition-property:visibility,opacity,background-color}.foogallery.fg-caption-hover.fg-hover-colorize .fg-item-inner:focus-within .fg-caption,.foogallery.fg-caption-hover.fg-hover-colorize .fg-item-inner:hover .fg-caption,.foogallery.fg-hover-colorize .fg-item-inner:focus-within .fg-image-overlay,.foogallery.fg-hover-colorize .fg-item-inner:hover .fg-image-overlay{visibility:visible;opacity:1}.foogallery.fg-caption-hover.fg-hover-fade .fg-loaded .fg-caption,.foogallery.fg-hover-fade .fg-loaded .fg-image-overlay{display:block;left:0;top:0;bottom:0;transition-property:visibility,opacity,background-color}.foogallery.fg-caption-hover.fg-hover-fade .fg-loaded .fg-item-inner:focus-within .fg-caption,.foogallery.fg-caption-hover.fg-hover-fade .fg-loaded .fg-item-inner:hover .fg-caption,.foogallery.fg-hover-fade .fg-loaded .fg-item-inner:focus-within .fg-image-overlay,.foogallery.fg-hover-fade .fg-loaded .fg-item-inner:hover .fg-image-overlay{visibility:visible;opacity:1}.foogallery.fg-hover-grayscale .fg-image{filter:grayscale(0%);transition-property:filter}.foogallery.fg-hover-grayscale .fg-item-inner:focus-within .fg-image,.foogallery.fg-hover-grayscale .fg-item-inner:hover .fg-image{filter:grayscale(100%)}.foogallery.fg-caption-hover.fg-hover-grayscale .fg-caption,.foogallery.fg-hover-grayscale .fg-image-overlay{display:block;left:0;top:0;bottom:0;transition-property:visibility,opacity,background-color}.foogallery.fg-caption-hover.fg-hover-grayscale .fg-item-inner:focus-within .fg-caption,.foogallery.fg-caption-hover.fg-hover-grayscale .fg-item-inner:hover .fg-caption,.foogallery.fg-hover-grayscale .fg-item-inner:focus-within .fg-image-overlay,.foogallery.fg-hover-grayscale .fg-item-inner:hover .fg-image-overlay{visibility:visible;opacity:1}.foogallery.fg-caption-hover.fg-hover-instant .fg-loaded .fg-caption,.foogallery.fg-hover-instant .fg-loaded .fg-image-overlay{display:block;left:0;top:0;bottom:0;transition-property:none}.foogallery.fg-caption-hover.fg-hover-instant .fg-loaded .fg-item-inner:focus-within .fg-caption,.foogallery.fg-caption-hover.fg-hover-instant .fg-loaded .fg-item-inner:hover .fg-caption,.foogallery.fg-hover-instant .fg-loaded .fg-item-inner:focus-within .fg-image-overlay,.foogallery.fg-hover-instant .fg-loaded .fg-item-inner:hover .fg-image-overlay{visibility:visible;opacity:1}.foogallery.fg-caption-hover.fg-hover-push .fg-loaded .fg-caption,.foogallery.fg-hover-push .fg-loaded .fg-image-overlay{display:block;left:0;top:0;bottom:0;transform:translateX(100%);visibility:visible;opacity:1}.foogallery.fg-caption-hover.fg-hover-push .fg-loaded .fg-caption,.foogallery.fg-hover-push .fg-loaded .fg-thumb{transition-property:transform}.foogallery.fg-caption-hover.fg-hover-push .fg-loaded .fg-item-inner:focus-within .fg-caption,.foogallery.fg-caption-hover.fg-hover-push .fg-loaded .fg-item-inner:hover .fg-caption{transform:translateY(0)}.foogallery.fg-caption-hover.fg-hover-push .fg-loaded .fg-item-inner .fg-thumb:focus,.foogallery.fg-caption-hover.fg-hover-push .fg-loaded .fg-item-inner:hover .fg-thumb,.foogallery.fg-hover-push .fg-loaded .fg-item-inner .fg-thumb:focus,.foogallery.fg-hover-push .fg-loaded .fg-item-inner:hover .fg-thumb{transform:translateX(-100%)}.foogallery.fg-hover-scale .fg-item{transition-property:transform;z-index:4}.foogallery.fg-hover-scale .fg-item:focus-within,.foogallery.fg-hover-scale .fg-item:hover{transform:scale(1.048);z-index:10}.foogallery.fg-caption-hover.fg-hover-scale .fg-caption,.foogallery.fg-hover-scale .fg-image-overlay{display:block;left:0;top:0;bottom:0;transition-property:visibility,opacity,background-color}.foogallery.fg-caption-hover.fg-hover-scale .fg-item-inner:focus-within .fg-caption,.foogallery.fg-caption-hover.fg-hover-scale .fg-item-inner:hover .fg-caption,.foogallery.fg-hover-scale .fg-item-inner:focus-within .fg-image-overlay,.foogallery.fg-hover-scale .fg-item-inner:hover .fg-image-overlay{visibility:visible;opacity:1}.foogallery.fg-hover-zoomed .fg-image{transition-property:transform;z-index:4}.foogallery.fg-hover-zoomed .fg-item:focus-within .fg-image,.foogallery.fg-hover-zoomed .fg-item:hover .fg-image{transform:scale(1.15)}.foogallery.fg-hover-zoomed .fg-image-wrap{overflow:hidden}.foogallery.fg-caption-hover.fg-hover-zoomed .fg-caption,.foogallery.fg-hover-zoomed .fg-image-overlay{display:block;left:0;top:0;bottom:0;transition-property:visibility,opacity,background-color}.foogallery.fg-caption-hover.fg-hover-zoomed .fg-item-inner:focus-within .fg-caption,.foogallery.fg-caption-hover.fg-hover-zoomed .fg-item-inner:hover .fg-caption,.foogallery.fg-hover-zoomed .fg-item-inner:focus-within .fg-image-overlay,.foogallery.fg-hover-zoomed .fg-item-inner:hover .fg-image-overlay{visibility:visible;opacity:1}.foogallery.fg-caption-hover.fg-hover-slide-down .fg-loaded .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-left .fg-loaded .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-right .fg-loaded .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-up .fg-loaded .fg-caption,.foogallery.fg-hover-slide-down .fg-loaded .fg-image-overlay,.foogallery.fg-hover-slide-left .fg-loaded .fg-image-overlay,.foogallery.fg-hover-slide-right .fg-loaded .fg-image-overlay,.foogallery.fg-hover-slide-up .fg-loaded .fg-image-overlay{display:block;left:0;top:0;bottom:0;transition-property:transform,background-color,opacity,visibility;visibility:visible;opacity:1}.foogallery.fg-caption-hover.fg-hover-slide-down .fg-loaded .fg-item-inner:focus-within .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-down .fg-loaded .fg-item-inner:hover .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-left .fg-loaded .fg-item-inner:focus-within .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-left .fg-loaded .fg-item-inner:hover .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-right .fg-loaded .fg-item-inner:focus-within .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-right .fg-loaded .fg-item-inner:hover .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-up .fg-loaded .fg-item-inner:focus-within .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-up .fg-loaded .fg-item-inner:hover .fg-caption,.foogallery.fg-hover-slide-down .fg-loaded .fg-item-inner:focus-within .fg-image-overlay,.foogallery.fg-hover-slide-down .fg-loaded .fg-item-inner:hover .fg-image-overlay,.foogallery.fg-hover-slide-left .fg-loaded .fg-item-inner:focus-within .fg-image-overlay,.foogallery.fg-hover-slide-left .fg-loaded .fg-item-inner:hover .fg-image-overlay,.foogallery.fg-hover-slide-right .fg-loaded .fg-item-inner:focus-within .fg-image-overlay,.foogallery.fg-hover-slide-right .fg-loaded .fg-item-inner:hover .fg-image-overlay,.foogallery.fg-hover-slide-up .fg-loaded .fg-item-inner:focus-within .fg-image-overlay,.foogallery.fg-hover-slide-up .fg-loaded .fg-item-inner:hover .fg-image-overlay{transform:translateY(0) translateX(0)}.foogallery.fg-caption-hover.fg-hover-slide-up .fg-loaded .fg-caption,.foogallery.fg-hover-slide-up .fg-loaded .fg-image-overlay{transform:translateY(100%)}.foogallery.fg-caption-hover.fg-hover-slide-down .fg-loaded .fg-caption,.foogallery.fg-hover-slide-down .fg-loaded .fg-image-overlay{transform:translateY(-100%)}.foogallery.fg-caption-hover.fg-hover-slide-left .fg-loaded .fg-caption,.foogallery.fg-hover-slide-left .fg-loaded .fg-image-overlay{transform:translateX(100%)}.foogallery.fg-caption-hover.fg-hover-slide-right .fg-loaded .fg-caption,.foogallery.fg-hover-slide-right .fg-loaded .fg-image-overlay{transform:translateX(-100%)}.fg-paging-container,.fg-paging-container *,.fg-paging-container :after,.fg-paging-container :before{box-sizing:border-box}.fg-paging-container{display:block;padding:15px;margin-top:0!important;margin-bottom:0!important;margin-left:auto;margin-right:auto;text-align:center;font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.fg-ph-dots:after{display:block;content:'';width:0;height:22px}.fg-paging-container .fg-dot-item,.fg-paging-container .fg-dots{display:inline-block;margin:0;padding:0;outline:0;list-style:none}.fg-paging-container .fg-dot-item .fg-dot-link{display:inline-block;margin:3px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;user-select:none;background-image:none;text-decoration:none;border:1px solid transparent;position:relative;border-radius:50%;padding:0;font-size:0;outline:0;color:transparent;box-shadow:none}.fg-paging-container .fg-dot-item .fg-dot-link:before{content:"";background-color:transparent;border:1px solid transparent;display:block;border-radius:50%;width:9px;height:9px;padding:0;margin:2px}.fg-paging-container .fg-dot-item .fg-dot-link:active,.fg-paging-container .fg-dot-item .fg-dot-link:focus,.fg-paging-container .fg-dot-item .fg-dot-link:hover{text-decoration:none;box-shadow:none;outline:0}.fg-paging-container .fg-dot-item.fg-disabled .fg-dot-link,.fg-paging-container .fg-dot-item.fg-selected .fg-dot-link{cursor:not-allowed;pointer-events:none}.fg-paging-container .fg-dot-item.fg-disabled .fg-dot-link{cursor:not-allowed;pointer-events:none;outline:0}.fg-paging-container.fg-light .fg-dot-item .fg-dot-link,.fg-paging-container.fg-light .fg-dot-item .fg-dot-link:before{transition-timing-function:ease-out;transition-duration:.3s;transition-property:color,border-color,background-color}.fg-paging-container.fg-light .fg-dot-item .fg-dot-link{background-color:#eee;border-color:#9d9d9d}.fg-paging-container.fg-light .fg-dot-item.fg-selected .fg-dot-link{border-color:#888}.fg-paging-container.fg-light .fg-dot-item .fg-dot-link:focus:before,.fg-paging-container.fg-light .fg-dot-item .fg-dot-link:hover:before,.fg-paging-container.fg-light .fg-dot-item.fg-selected .fg-dot-link:before{background-color:#666;border-color:#888}.fg-paging-container.fg-light .fg-dot-item.fg-disabled .fg-dot-link,.fg-paging-container.fg-light .fg-dot-item.fg-disabled .fg-dot-link:focus,.fg-paging-container.fg-light .fg-dot-item.fg-disabled .fg-dot-link:hover{background-color:#eee;border-color:#9d9d9d;opacity:.5}.fg-paging-container.fg-dark .fg-dot-item .fg-dot-link,.fg-paging-container.fg-dark .fg-dot-item .fg-dot-link:before{transition-timing-function:ease-out;transition-duration:.3s;transition-property:color,border-color,background-color}.fg-paging-container.fg-dark .fg-dot-item .fg-dot-link{background-color:#666;border-color:#333}.fg-paging-container.fg-dark .fg-dot-item.fg-selected .fg-dot-link{border-color:#444}.fg-paging-container.fg-dark .fg-dot-item .fg-dot-link:focus:before,.fg-paging-container.fg-dark .fg-dot-item .fg-dot-link:hover:before,.fg-paging-container.fg-dark .fg-dot-item.fg-selected .fg-dot-link:before{background-color:#333;border-color:#444}.fg-paging-container.fg-dark .fg-dot-item.fg-disabled .fg-dot-link,.fg-paging-container.fg-dark .fg-dot-item.fg-disabled .fg-dot-link:focus,.fg-paging-container.fg-dark .fg-dot-item.fg-disabled .fg-dot-link:hover{background-color:#666;border-color:#333;opacity:.5}.fg-paging-container,.fg-paging-container *,.fg-paging-container :after,.fg-paging-container :before{box-sizing:border-box}.fg-paging-container{display:block;padding:15px;margin-top:0!important;margin-bottom:0!important;margin-left:auto;margin-right:auto;text-align:center;font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.fg-ph-dots:after{display:block;content:'';width:0;height:22px}.fg-paging-container .fg-dot-item,.fg-paging-container .fg-dots{display:inline-block;margin:0;padding:0;outline:0;list-style:none}.fg-paging-container .fg-dot-item .fg-dot-link{display:inline-block;margin:3px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;user-select:none;background-image:none;text-decoration:none;border:1px solid transparent;position:relative;border-radius:50%;padding:0;font-size:0;outline:0;color:transparent;box-shadow:none}.fg-paging-container .fg-dot-item .fg-dot-link:before{content:"";background-color:transparent;border:1px solid transparent;display:block;border-radius:50%;width:9px;height:9px;padding:0;margin:2px}.fg-paging-container .fg-dot-item .fg-dot-link:active,.fg-paging-container .fg-dot-item .fg-dot-link:focus,.fg-paging-container .fg-dot-item .fg-dot-link:hover{text-decoration:none;box-shadow:none;outline:0}.fg-paging-container .fg-dot-item.fg-disabled .fg-dot-link,.fg-paging-container .fg-dot-item.fg-selected .fg-dot-link{cursor:not-allowed;pointer-events:none}.fg-paging-container .fg-dot-item.fg-disabled .fg-dot-link{cursor:not-allowed;pointer-events:none;outline:0}.fg-paging-container.fg-light .fg-dot-item .fg-dot-link,.fg-paging-container.fg-light .fg-dot-item .fg-dot-link:before{transition-timing-function:ease-out;transition-duration:.3s;transition-property:color,border-color,background-color}.fg-paging-container.fg-light .fg-dot-item .fg-dot-link{background-color:#eee;border-color:#9d9d9d}.fg-paging-container.fg-light .fg-dot-item.fg-selected .fg-dot-link{border-color:#888}.fg-paging-container.fg-light .fg-dot-item .fg-dot-link:focus:before,.fg-paging-container.fg-light .fg-dot-item .fg-dot-link:hover:before,.fg-paging-container.fg-light .fg-dot-item.fg-selected .fg-dot-link:before{background-color:#666;border-color:#888}.fg-paging-container.fg-light .fg-dot-item.fg-disabled .fg-dot-link,.fg-paging-container.fg-light .fg-dot-item.fg-disabled .fg-dot-link:focus,.fg-paging-container.fg-light .fg-dot-item.fg-disabled .fg-dot-link:hover{background-color:#eee;border-color:#9d9d9d;opacity:.5}.fg-paging-container.fg-dark .fg-dot-item .fg-dot-link,.fg-paging-container.fg-dark .fg-dot-item .fg-dot-link:before{transition-timing-function:ease-out;transition-duration:.3s;transition-property:color,border-color,background-color}.fg-paging-container.fg-dark .fg-dot-item .fg-dot-link{background-color:#666;border-color:#333}.fg-paging-container.fg-dark .fg-dot-item.fg-selected .fg-dot-link{border-color:#444}.fg-paging-container.fg-dark .fg-dot-item .fg-dot-link:focus:before,.fg-paging-container.fg-dark .fg-dot-item .fg-dot-link:hover:before,.fg-paging-container.fg-dark .fg-dot-item.fg-selected .fg-dot-link:before{background-color:#333;border-color:#444}.fg-paging-container.fg-dark .fg-dot-item.fg-disabled .fg-dot-link,.fg-paging-container.fg-dark .fg-dot-item.fg-disabled .fg-dot-link:focus,.fg-paging-container.fg-dark .fg-dot-item.fg-disabled .fg-dot-link:hover{background-color:#666;border-color:#333;opacity:.5}.fg-default:after{content:'';display:block;clear:both}.fg-default .fg-item{display:inline-block;vertical-align:top;max-width:100%}.fg-default .fg-item-inner,.fg-default .fg-thumb{display:block;vertical-align:top;max-width:100%}.fg-default .fg-image{border-radius:0;display:block;max-width:100%;height:auto;margin:0;padding:0}.fg-default .fg-image{vertical-align:top}.fg-default.fg-left{text-align:left}.fg-default.fg-center{text-align:center}.fg-default.fg-right{text-align:right}.fg-default.fg-gutter-5{padding-left:5px;margin-bottom:-5px}.fg-default.fg-gutter-5 .fg-item{margin-right:5px;margin-bottom:5px}.fg-default.fg-gutter-10{padding-left:10px;margin-bottom:-10px}.fg-default.fg-gutter-10 .fg-item{margin-right:10px;margin-bottom:10px}.fg-default.fg-gutter-15{padding-left:15px;margin-bottom:-15px}.fg-default.fg-gutter-15 .fg-item{margin-right:15px;margin-bottom:15px}.fg-default.fg-gutter-20{padding-left:20px;margin-bottom:-20px}.fg-default.fg-gutter-20 .fg-item{margin-right:20px;margin-bottom:20px}.fg-default.fg-gutter-25{padding-left:25px;margin-bottom:-25px}.fg-default.fg-gutter-25 .fg-item{margin-right:25px;margin-bottom:25px}@media only screen and (max-width:600px){.fg-default.fg-m-col1 .fg-image,.fg-default.fg-m-col2 .fg-image,.fg-default.fg-m-col3 .fg-image{width:100%}.fg-default.fg-m-col1.fg-gutter-5 .fg-item{width:calc(100% - 10px);min-width:calc(100% - 10px);max-width:calc(100% - 10px)}.fg-default.fg-m-col2.fg-gutter-5 .fg-item{width:calc(50% - 10px);min-width:calc(50% - 10px);max-width:calc(50% - 10px)}.fg-default.fg-m-col3.fg-gutter-5 .fg-item{width:calc(33.33% - 10px);min-width:calc(33.33% - 10px);max-width:calc(33.33% - 10px)}.fg-default.fg-m-col1.fg-gutter-10 .fg-item{width:calc(100% - 20px);min-width:calc(100% - 20px);max-width:calc(100% - 20px)}.fg-default.fg-m-col2.fg-gutter-10 .fg-item{width:calc(50% - 20px);min-width:calc(50% - 20px);max-width:calc(50% - 20px)}.fg-default.fg-m-col3.fg-gutter-10 .fg-item{width:calc(33.33% - 20px);min-width:calc(33.33% - 20px);max-width:calc(33.33% - 20px)}.fg-default.fg-m-col1.fg-gutter-15 .fg-item{width:calc(100% - 30px);min-width:calc(100% - 30px);max-width:calc(100% - 30px)}.fg-default.fg-m-col2.fg-gutter-15 .fg-item{width:calc(50% - 30px);min-width:calc(50% - 30px);max-width:calc(50% - 30px)}.fg-default.fg-m-col3.fg-gutter-15 .fg-item{width:calc(33.33% - 30px);min-width:calc(33.33% - 30px);max-width:calc(33.33% - 30px)}.fg-default.fg-m-col1.fg-gutter-20 .fg-item{width:calc(100% - 40px);min-width:calc(100% - 40px);max-width:calc(100% - 40px)}.fg-default.fg-m-col2.fg-gutter-20 .fg-item{width:calc(50% - 40px);min-width:calc(50% - 40px);max-width:calc(50% - 40px)}.fg-default.fg-m-col3.fg-gutter-20 .fg-item{width:calc(33.33% - 40px);min-width:calc(33.33% - 40px);max-width:calc(33.33% - 40px)}.fg-default.fg-m-col1.fg-gutter-25 .fg-item{width:calc(100% - 50px);min-width:calc(100% - 50px);max-width:calc(100% - 50px)}.fg-default.fg-m-col2.fg-gutter-25 .fg-item{width:calc(50% - 50px);min-width:calc(50% - 50px);max-width:calc(50% - 50px)}.fg-default.fg-m-col3.fg-gutter-25 .fg-item{width:calc(33.33% - 50px);min-width:calc(33.33% - 50px);max-width:calc(33.33% - 50px)}}.fg-masonry *{box-sizing:border-box}.foogallery.fg-masonry{margin:0 auto;text-align:center}.fg-masonry .fg-thumb{display:block}.fg-masonry.fg-fixed .fg-column-width,.fg-masonry.fg-fixed .fg-image,.fg-masonry.fg-fixed .fg-item{max-width:100%}.fg-masonry .fg-column-width{display:inline-block;border:solid 0 transparent}.fg-masonry .fg-column-width,.fg-masonry .fg-gutter-width{position:absolute;height:0;visibility:hidden;opacity:0;pointer-events:none}.fg-masonry.fg-col2 .fg-item .fg-image,.fg-masonry.fg-col3 .fg-item .fg-image,.fg-masonry.fg-col4 .fg-item .fg-image,.fg-masonry.fg-col5 .fg-item .fg-image,.fg-masonry.fg-col6 .fg-item .fg-image,.fg-masonry.fg-fixed .fg-item .fg-image{width:100%;height:auto;max-width:100%}.fg-masonry .fg-item{line-height:0;font-size:0;vertical-align:top}.fg-masonry.fg-col2 .fg-item{margin-bottom:1%;width:49.5%}.fg-masonry.fg-col2 .fg-column-width{width:49.5%}.fg-masonry.fg-col2 .fg-gutter-width{width:1%}.fg-masonry.fg-col2.fg-gutter-none .fg-item{margin-bottom:0;width:50%}.fg-masonry.fg-col2.fg-gutter-none .fg-column-width{width:50%}.fg-masonry.fg-col2.fg-gutter-none .fg-gutter-width{width:0}.fg-masonry.fg-col2.fg-gutter-large .fg-item{margin-bottom:3%;width:48.5%}.fg-masonry.fg-col2.fg-gutter-large .fg-column-width{width:48.5%}.fg-masonry.fg-col2.fg-gutter-large .fg-gutter-width{width:3%}.fg-masonry.fg-col3 .fg-item{margin-bottom:1%;width:32.66%}.fg-masonry.fg-col3 .fg-column-width{width:32.66%}.fg-masonry.fg-col3 .fg-gutter-width{width:1%}.fg-masonry.fg-col3.fg-gutter-none .fg-item{margin-bottom:0;width:33.33%}.fg-masonry.fg-col3.fg-gutter-none .fg-column-width{width:33.33%}.fg-masonry.fg-col3.fg-gutter-none .fg-gutter-width{width:0}.fg-masonry.fg-col3.fg-gutter-large .fg-item{margin-bottom:3%;width:31.33%}.fg-masonry.fg-col3.fg-gutter-large .fg-column-width{width:31.33%}.fg-masonry.fg-col3.fg-gutter-large .fg-gutter-width{width:3%}.fg-masonry.fg-col4 .fg-item{margin-bottom:1%;width:24.25%}.fg-masonry.fg-col4 .fg-column-width{width:24.25%}.fg-masonry.fg-col4 .fg-gutter-width{width:1%}.fg-masonry.fg-col4.fg-gutter-none .fg-item{margin-bottom:0;width:25%}.fg-masonry.fg-col4.fg-gutter-none .fg-column-width{width:25%}.fg-masonry.fg-col4.fg-gutter-none .fg-gutter-width{width:0}.fg-masonry.fg-col4.fg-gutter-large .fg-item{margin-bottom:3%;width:22.75%}.fg-masonry.fg-col4.fg-gutter-large .fg-column-width{width:22.75%}.fg-masonry.fg-col4.fg-gutter-large .fg-gutter-width{width:3%}.fg-masonry.fg-col5 .fg-item{margin-bottom:1%;width:19.2%}.fg-masonry.fg-col5 .fg-column-width{width:19.2%}.fg-masonry.fg-col5 .fg-gutter-width{width:1%}.fg-masonry.fg-col5.fg-gutter-none .fg-item{margin-bottom:0;width:20%}.fg-masonry.fg-col5.fg-gutter-none .fg-column-width{width:20%}.fg-masonry.fg-col5.fg-gutter-none .fg-gutter-width{width:0}.fg-masonry.fg-col5.fg-gutter-large .fg-item{margin-bottom:3%;width:17.6%}.fg-masonry.fg-col5.fg-gutter-large .fg-column-width{width:17.6%}.fg-masonry.fg-col5.fg-gutter-large .fg-gutter-width{width:3%}.fg-masonry.fg-col6 .fg-item{margin-bottom:1%;width:15.83%}.fg-masonry.fg-col6 .fg-column-width{width:15.83%}.fg-masonry.fg-col6 .fg-gutter-width{width:1%}.fg-masonry.fg-col6.fg-gutter-none .fg-item{margin-bottom:0;width:16.66%}.fg-masonry.fg-col6.fg-gutter-none .fg-column-width{width:16.66%}.fg-masonry.fg-col6.fg-gutter-none .fg-gutter-width{width:0}.fg-masonry.fg-col6.fg-gutter-large .fg-item{margin-bottom:3%;width:14.16%}.fg-masonry.fg-col6.fg-gutter-large .fg-column-width{width:14.16%}.fg-masonry.fg-col6.fg-gutter-large .fg-gutter-width{width:3%}@media screen and (max-width:1280px){.fg-masonry.fg-col6 .fg-item{margin-bottom:1%;width:19.2%}.fg-masonry.fg-col6 .fg-column-width{width:19.2%}.fg-masonry.fg-col6 .fg-gutter-width{width:1%}.fg-masonry.fg-col6.fg-gutter-none .fg-item{margin-bottom:0;width:20%}.fg-masonry.fg-col6.fg-gutter-none .fg-column-width{width:20%}.fg-masonry.fg-col6.fg-gutter-none .fg-gutter-width{width:0}.fg-masonry.fg-col6.fg-gutter-large .fg-item{margin-bottom:3%;width:17.6%}.fg-masonry.fg-col6.fg-gutter-large .fg-column-width{width:17.6%}.fg-masonry.fg-col6.fg-gutter-large .fg-gutter-width{width:3%}}@media screen and (max-width:1024px){.fg-masonry.fg-col5 .fg-item,.fg-masonry.fg-col6 .fg-item{margin-bottom:1%;width:24.25%}.fg-masonry.fg-col5 .fg-column-width,.fg-masonry.fg-col6 .fg-column-width{width:24.25%}.fg-masonry.fg-col5 .fg-gutter-width,.fg-masonry.fg-col6 .fg-gutter-width{width:1%}.fg-masonry.fg-col5.fg-gutter-none .fg-item,.fg-masonry.fg-col6.fg-gutter-none .fg-item{margin-bottom:0;width:25%}.fg-masonry.fg-col5.fg-gutter-none .fg-column-width,.fg-masonry.fg-col6.fg-gutter-none .fg-column-width{width:25%}.fg-masonry.fg-col5.fg-gutter-none .fg-gutter-width,.fg-masonry.fg-col6.fg-gutter-none .fg-gutter-width{width:0}.fg-masonry.fg-col5.fg-gutter-large .fg-item,.fg-masonry.fg-col6.fg-gutter-large .fg-item{margin-bottom:3%;width:22.75%}.fg-masonry.fg-col5.fg-gutter-large .fg-column-width,.fg-masonry.fg-col6.fg-gutter-large .fg-column-width{width:22.75%}.fg-masonry.fg-col5.fg-gutter-large .fg-gutter-width,.fg-masonry.fg-col6.fg-gutter-large .fg-gutter-width{width:3%}}@media screen and (max-width:720px){.fg-masonry.fg-col4 .fg-item,.fg-masonry.fg-col5 .fg-item,.fg-masonry.fg-col6 .fg-item{margin-bottom:1%;width:32.66%}.fg-masonry.fg-col4 .fg-column-width,.fg-masonry.fg-col5 .fg-column-width,.fg-masonry.fg-col6 .fg-column-width{width:32.66%}.fg-masonry.fg-col4 .fg-gutter-width,.fg-masonry.fg-col5 .fg-gutter-width,.fg-masonry.fg-col6 .fg-gutter-width{width:1%}.fg-masonry.fg-col4.fg-gutter-none .fg-item,.fg-masonry.fg-col5.fg-gutter-none .fg-item,.fg-masonry.fg-col6.fg-gutter-none .fg-item{margin-bottom:0;width:33.33%}.fg-masonry.fg-col4.fg-gutter-none .fg-column-width,.fg-masonry.fg-col5.fg-gutter-none .fg-column-width,.fg-masonry.fg-col6.fg-gutter-none .fg-column-width{width:33.33%}.fg-masonry.fg-col4.fg-gutter-none .fg-gutter-width,.fg-masonry.fg-col5.fg-gutter-none .fg-gutter-width,.fg-masonry.fg-col6.fg-gutter-none .fg-gutter-width{width:0}.fg-masonry.fg-col4.fg-gutter-large .fg-item,.fg-masonry.fg-col5.fg-gutter-large .fg-item,.fg-masonry.fg-col6.fg-gutter-large .fg-item{margin-bottom:3%;width:31.33%}.fg-masonry.fg-col4.fg-gutter-large .fg-column-width,.fg-masonry.fg-col5.fg-gutter-large .fg-column-width,.fg-masonry.fg-col6.fg-gutter-large .fg-column-width{width:31.33%}.fg-masonry.fg-col4.fg-gutter-large .fg-gutter-width,.fg-masonry.fg-col5.fg-gutter-large .fg-gutter-width,.fg-masonry.fg-col6.fg-gutter-large .fg-gutter-width{width:3%}}@media screen and (max-width:480px){.fg-masonry.fg-col3 .fg-item,.fg-masonry.fg-col4 .fg-item,.fg-masonry.fg-col5 .fg-item,.fg-masonry.fg-col6 .fg-item{margin-bottom:1%;width:49.5%}.fg-masonry.fg-col3 .fg-column-width,.fg-masonry.fg-col4 .fg-column-width,.fg-masonry.fg-col5 .fg-column-width,.fg-masonry.fg-col6 .fg-column-width{width:49.5%}.fg-masonry.fg-col3 .fg-gutter-width,.fg-masonry.fg-col4 .fg-gutter-width,.fg-masonry.fg-col5 .fg-gutter-width,.fg-masonry.fg-col6 .fg-gutter-width{width:1%}.fg-masonry.fg-col3.fg-gutter-none .fg-item,.fg-masonry.fg-col4.fg-gutter-none .fg-item,.fg-masonry.fg-col5.fg-gutter-none .fg-item,.fg-masonry.fg-col6.fg-gutter-none .fg-item{margin-bottom:0;width:50%}.fg-masonry.fg-col3.fg-gutter-none .fg-column-width,.fg-masonry.fg-col4.fg-gutter-none .fg-column-width,.fg-masonry.fg-col5.fg-gutter-none .fg-column-width,.fg-masonry.fg-col6.fg-gutter-none .fg-column-width{width:50%}.fg-masonry.fg-col3.fg-gutter-none .fg-gutter-width,.fg-masonry.fg-col4.fg-gutter-none .fg-gutter-width,.fg-masonry.fg-col5.fg-gutter-none .fg-gutter-width,.fg-masonry.fg-col6.fg-gutter-none .fg-gutter-width{width:0}.fg-masonry.fg-col3.fg-gutter-large .fg-item,.fg-masonry.fg-col4.fg-gutter-large .fg-item,.fg-masonry.fg-col5.fg-gutter-large .fg-item,.fg-masonry.fg-col6.fg-gutter-large .fg-item{margin-bottom:3%;width:48.5%}.fg-masonry.fg-col3.fg-gutter-large .fg-column-width,.fg-masonry.fg-col4.fg-gutter-large .fg-column-width,.fg-masonry.fg-col5.fg-gutter-large .fg-column-width,.fg-masonry.fg-col6.fg-gutter-large .fg-column-width{width:48.5%}.fg-masonry.fg-col3.fg-gutter-large .fg-gutter-width,.fg-masonry.fg-col4.fg-gutter-large .fg-gutter-width,.fg-masonry.fg-col5.fg-gutter-large .fg-gutter-width,.fg-masonry.fg-col6.fg-gutter-large .fg-gutter-width{width:3%}}@media screen and (max-width:320px){.fg-masonry.fg-col2 .fg-item,.fg-masonry.fg-col3 .fg-item,.fg-masonry.fg-col4 .fg-item,.fg-masonry.fg-col5 .fg-item,.fg-masonry.fg-col6 .fg-item{margin-bottom:1%;width:100%}.fg-masonry.fg-col2 .fg-column-width,.fg-masonry.fg-col3 .fg-column-width,.fg-masonry.fg-col4 .fg-column-width,.fg-masonry.fg-col5 .fg-column-width,.fg-masonry.fg-col6 .fg-column-width{width:100%}.fg-masonry.fg-col2 .fg-gutter-width,.fg-masonry.fg-col3 .fg-gutter-width,.fg-masonry.fg-col4 .fg-gutter-width,.fg-masonry.fg-col5 .fg-gutter-width,.fg-masonry.fg-col6 .fg-gutter-width{width:0}.fg-masonry.fg-col2.fg-gutter-none .fg-item,.fg-masonry.fg-col3.fg-gutter-none .fg-item,.fg-masonry.fg-col4.fg-gutter-none .fg-item,.fg-masonry.fg-col5.fg-gutter-none .fg-item,.fg-masonry.fg-col6.fg-gutter-none .fg-item{margin-bottom:0;width:100%}.fg-masonry.fg-col2.fg-gutter-none .fg-column-width,.fg-masonry.fg-col3.fg-gutter-none .fg-column-width,.fg-masonry.fg-col4.fg-gutter-none .fg-column-width,.fg-masonry.fg-col5.fg-gutter-none .fg-column-width,.fg-masonry.fg-col6.fg-gutter-none .fg-column-width{width:100%}.fg-masonry.fg-col2.fg-gutter-none .fg-gutter-width,.fg-masonry.fg-col3.fg-gutter-none .fg-gutter-width,.fg-masonry.fg-col4.fg-gutter-none .fg-gutter-width,.fg-masonry.fg-col5.fg-gutter-none .fg-gutter-width,.fg-masonry.fg-col6.fg-gutter-none .fg-gutter-width{width:0}.fg-masonry.fg-col2.fg-gutter-large .fg-item,.fg-masonry.fg-col3.fg-gutter-large .fg-item,.fg-masonry.fg-col4.fg-gutter-large .fg-item,.fg-masonry.fg-col5.fg-gutter-large .fg-item,.fg-masonry.fg-col6.fg-gutter-large .fg-item{margin-bottom:3%;width:100%}.fg-masonry.fg-col2.fg-gutter-large .fg-column-width,.fg-masonry.fg-col3.fg-gutter-large .fg-column-width,.fg-masonry.fg-col4.fg-gutter-large .fg-column-width,.fg-masonry.fg-col5.fg-gutter-large .fg-column-width,.fg-masonry.fg-col6.fg-gutter-large .fg-column-width{width:100%}.fg-masonry.fg-col2.fg-gutter-large .fg-gutter-width,.fg-masonry.fg-col3.fg-gutter-large .fg-gutter-width,.fg-masonry.fg-col4.fg-gutter-large .fg-gutter-width,.fg-masonry.fg-col5.fg-gutter-large .fg-gutter-width,.fg-masonry.fg-col6.fg-gutter-large .fg-gutter-width{width:0}}.foogallery.fg-border-thin .fg-column-width{border-width:4px}.foogallery.fg-border-medium .fg-column-width{border-width:10px}.foogallery.fg-border-thick .fg-column-width{border-width:16px}.foogallery.fg-masonry.fg-captions-bottom .fg-item-inner .fg-caption{visibility:visible;opacity:1;font-size:13px;position:relative;display:block;top:auto;bottom:auto;left:auto;right:auto;width:auto;height:auto;text-transform:none;transform:none;transition:none;background-color:transparent;border-style:solid;border-color:transparent;text-align:left}.foogallery.fg-masonry.fg-captions-bottom.fg-c-l .fg-item-inner .fg-caption{text-align:left}.foogallery.fg-masonry.fg-captions-bottom.fg-c-c .fg-item-inner .fg-caption{text-align:center}.foogallery.fg-masonry.fg-captions-bottom.fg-c-r .fg-item-inner .fg-caption{text-align:right}.foogallery.fg-masonry.fg-captions-bottom.fg-c-j .fg-item-inner .fg-caption{text-align:justify}.foogallery.fg-masonry.fg-captions-bottom .fg-item-inner:hover .fg-caption{transform:none;transition:none}.foogallery.fg-masonry.fg-captions-bottom .fg-item-inner .fg-caption-inner{display:block;position:relative;max-height:none;top:auto;bottom:auto;left:auto;right:auto;width:auto;height:auto;border:none;transform:none;transition:none}.foogallery.fg-masonry.fg-captions-bottom .fg-item-inner .fg-caption-inner:before{display:none}.foogallery.fg-masonry.fg-captions-bottom.fg-caption-hover .fg-item-inner .fg-image-overlay{display:block}.foogallery.fg-masonry.fg-captions-bottom.fg-caption-always .fg-item-inner:hover .fg-caption{visibility:visible;opacity:1}.fg-masonry.fg-captions-bottom.fg-dark .fg-caption,.fg-masonry.fg-captions-bottom.fg-light .fg-caption{color:#828282}.fg-masonry.fg-captions-bottom.fg-dark .fg-caption a,.fg-masonry.fg-captions-bottom.fg-light .fg-caption a{color:#828282;border-bottom:1px solid #828282}.fg-masonry.fg-captions-bottom.fg-dark .fg-caption a:hover,.fg-masonry.fg-captions-bottom.fg-light .fg-caption a:hover{border-bottom:none}.fg-masonry.fg-captions-bottom.fg-light .fg-caption-title,.fg-masonry.fg-captions-bottom.fg-light .fg-caption-title a{color:#222}.fg-masonry.fg-captions-bottom.fg-dark .fg-caption-title,.fg-masonry.fg-captions-bottom.fg-dark .fg-caption-title a{color:#fff}.fg-masonry.fg-captions-bottom.fg-light .fg-caption-title a{border-bottom:1px solid #222}.fg-masonry.fg-captions-bottom.fg-dark .fg-caption-title a{border-bottom:1px solid #fff}.fg-masonry.fg-captions-bottom .fg-caption{border-width:10px}.fg-masonry.fg-captions-bottom .fg-caption-title+.fg-caption-desc{margin-top:4px}.fg-masonry.fg-captions-bottom.fg-border-thin .fg-caption{border-width:10px 4px 4px 4px}.fg-masonry.fg-captions-bottom.fg-border-medium .fg-caption{border-width:10px 0 0 0}.fg-masonry.fg-captions-bottom.fg-border-thick .fg-caption{border-width:16px 0 0 0}.fg-masonry.fg-captions-bottom.fg-border-thick .fg-caption-title+.fg-caption-desc{margin-top:10px}.fg-masonry.fg-transparent .fg-item-inner{background-color:transparent;color:#333;border-color:transparent}.fg-masonry.fg-transparent .fg-caption{color:#7f7f7f}.fg-masonry.fg-transparent.fg-captions-bottom .fg-caption{border-width:0;border-top-width:10px;border-bottom-width:10px}.fg-masonry.fg-transparent .fg-caption a{color:#7f7f7f;border-bottom:1px solid #7f7f7f}.fg-masonry.fg-transparent .fg-caption a:hover{border-bottom:none}.fg-masonry.fg-transparent .fg-caption-title,.fg-masonry.fg-transparent .fg-caption-title a{color:#333}.fg-masonry.fg-transparent .fg-caption-title a{border-bottom:1px solid #333}.fg-masonry.fg-transparent.fg-round-full .fg-item,.fg-masonry.fg-transparent.fg-round-full .fg-item-inner{border-radius:15px}.fg-masonry.fg-transparent.fg-round-full .fg-image-overlay,.fg-masonry.fg-transparent.fg-round-full .fg-image-wrap,.fg-masonry.fg-transparent.fg-round-full.fg-shadow-inset-large .fg-thumb:after,.fg-masonry.fg-transparent.fg-round-full.fg-shadow-inset-medium .fg-thumb:after,.fg-masonry.fg-transparent.fg-round-full.fg-shadow-inset-small .fg-thumb:after{border-radius:50%;overflow:hidden}.fg-masonry.fg-transparent.fg-round-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-overlay,.fg-masonry.fg-transparent.fg-round-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-wrap,.fg-masonry.fg-transparent.fg-round-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-overlay,.fg-masonry.fg-transparent.fg-round-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-wrap,.fg-masonry.fg-transparent.fg-round-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-overlay,.fg-masonry.fg-transparent.fg-round-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-wrap{overflow:hidden}.fg-masonry.fg-transparent.fg-round-small.fg-shadow-inset-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,.fg-masonry.fg-transparent.fg-round-small.fg-shadow-inset-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,.fg-masonry.fg-transparent.fg-round-small.fg-shadow-inset-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,.fg-masonry.fg-transparent.fg-round-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-overlay,.fg-masonry.fg-transparent.fg-round-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-wrap{border-radius:5px}.fg-masonry.fg-transparent.fg-round-medium.fg-shadow-inset-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,.fg-masonry.fg-transparent.fg-round-medium.fg-shadow-inset-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,.fg-masonry.fg-transparent.fg-round-medium.fg-shadow-inset-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,.fg-masonry.fg-transparent.fg-round-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-overlay,.fg-masonry.fg-transparent.fg-round-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-wrap{border-radius:10px}.fg-masonry.fg-transparent.fg-round-large.fg-shadow-inset-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,.fg-masonry.fg-transparent.fg-round-large.fg-shadow-inset-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,.fg-masonry.fg-transparent.fg-round-large.fg-shadow-inset-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,.fg-masonry.fg-transparent.fg-round-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-overlay,.fg-masonry.fg-transparent.fg-round-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-wrap{border-radius:15px}.fg-masonry.fg-transparent.fg-shadow-inset-small .fg-thumb:after{box-shadow:inset 0 1px 4px 0 rgba(0,0,0,.3)}.fg-masonry.fg-transparent.fg-shadow-inset-medium .fg-thumb:after{box-shadow:inset 0 1px 10px 0 rgba(0,0,0,.3)}.fg-masonry.fg-transparent.fg-shadow-inset-large .fg-thumb:after{box-shadow:inset 0 1px 16px 0 rgba(0,0,0,.3)}.fg-masonry.fg-transparent.fg-shadow-outline .fg-item-inner{box-shadow:0 0 0 1px rgba(128,128,128,.5)}.fg-masonry.fg-transparent.fg-shadow-small .fg-item-inner{box-shadow:0 1px 4px 0 rgba(128,128,128,.5)}.fg-masonry.fg-transparent.fg-shadow-medium .fg-item-inner{box-shadow:0 1px 10px 0 rgba(128,128,128,.5)}.fg-masonry.fg-transparent.fg-shadow-large .fg-item-inner{box-shadow:0 1px 16px 0 rgba(128,128,128,.5)}.fg-justified{box-sizing:border-box;position:relative;text-align:center}.foogallery.fg-justified .fg-item{box-sizing:border-box;display:inline-block;margin:0;padding:0}.foogallery.fg-justified .fg-image,.foogallery.fg-justified .fg-item-inner,.foogallery.fg-justified .fg-thumb{box-sizing:border-box;display:block;margin:0;padding:0}.fg-justified .fg-item{visibility:visible;position:relative}.fg-justified .fg-item-inner{position:relative;width:100%;height:100%}.fg-justified .fg-thumb{position:relative;overflow:hidden}.fg-justified .fg-image{z-index:1}.fg-justified .fg-item.fg-positioned .fg-image-wrap,.fg-justified .fg-item.fg-positioned .fg-thumb{width:100%;height:100%}.fg-justified .fg-item.fg-positioned .fg-image{width:100%!important;height:auto!important;min-height:100%}.fg-simple_portfolio{display:flex;flex-wrap:wrap;justify-content:center;align-items:stretch;align-content:center}.fg-simple_portfolio .fg-item{position:relative;flex-grow:0;flex-shrink:0;flex-basis:auto;margin:10px;max-width:100%}.fg-simple_portfolio .fg-item-inner{display:flex;flex-direction:column;margin:0;height:100%}.fg-simple_portfolio.fg-captions-top .fg-item-inner{flex-direction:column-reverse}.fg-simple_portfolio .fg-image{height:auto;width:100%}.fg-simple_portfolio .fg-thumb{min-width:auto;min-height:auto}.foogallery.fg-simple_portfolio .fg-item-inner .fg-caption{visibility:visible;opacity:1;font-size:13px;position:relative;display:block;top:auto;bottom:auto;left:auto;right:auto;width:100%;height:100%;text-transform:none;transform:none;transition:none;background-color:transparent;border-style:solid;border-color:transparent;text-align:left}.foogallery.fg-simple_portfolio.fg-c-l .fg-item-inner .fg-caption{text-align:left}.foogallery.fg-simple_portfolio.fg-c-c .fg-item-inner .fg-caption{text-align:center}.foogallery.fg-simple_portfolio.fg-c-r .fg-item-inner .fg-caption{text-align:right}.foogallery.fg-simple_portfolio.fg-c-j .fg-item-inner .fg-caption{text-align:justify}.foogallery.fg-simple_portfolio .fg-item-inner:hover .fg-caption{transform:none;transition:none}.foogallery.fg-simple_portfolio .fg-item-inner .fg-caption-inner{display:block;top:auto;bottom:auto;left:auto;right:auto;width:auto;height:auto;border:none;transform:none;transition:none}.foogallery.fg-simple_portfolio .fg-item-inner .fg-caption-inner:before{display:none}.foogallery.fg-simple_portfolio.fg-caption-hover .fg-item-inner .fg-image-overlay{display:block}.foogallery.fg-simple_portfolio.fg-caption-always .fg-item-inner:hover .fg-caption{visibility:visible;opacity:1}.fg-simple_portfolio .fg-caption-title{white-space:normal;height:auto}.fg-simple_portfolio.fg-dark .fg-caption,.fg-simple_portfolio.fg-light .fg-caption{color:#828282}.fg-simple_portfolio.fg-dark .fg-caption a,.fg-simple_portfolio.fg-light .fg-caption a{color:#828282;border-bottom:1px solid #828282}.fg-simple_portfolio.fg-dark .fg-caption a:hover,.fg-simple_portfolio.fg-light .fg-caption a:hover{border-bottom:none}.fg-simple_portfolio.fg-light .fg-caption-title,.fg-simple_portfolio.fg-light .fg-caption-title a{color:#222}.fg-simple_portfolio.fg-dark .fg-caption-title,.fg-simple_portfolio.fg-dark .fg-caption-title a{color:#fff}.fg-simple_portfolio.fg-light .fg-caption-title a{border-bottom:1px solid #222}.fg-simple_portfolio.fg-dark .fg-caption-title a{border-bottom:1px solid #fff}.fg-simple_portfolio .fg-caption{border-width:0}.fg-simple_portfolio .fg-caption-title+.fg-caption-desc{margin-top:4px}.fg-simple_portfolio.fg-border-thin .fg-caption{border-width:10px 4px 4px 4px}.fg-simple_portfolio.fg-captions-top.fg-border-thin .fg-caption{border-width:4px 4px 10px 4px}.fg-simple_portfolio.fg-border-medium .fg-caption{border-width:10px 0 0 0}.fg-simple_portfolio.fg-captions-top.fg-border-medium .fg-caption{border-width:0 0 10px 0}.fg-simple_portfolio.fg-border-thick .fg-caption{border-width:16px 0 0 0}.fg-simple_portfolio.fg-captions-top.fg-border-thick .fg-caption{border-width:0 0 16px 0}.fg-simple_portfolio.fg-border-thick .fg-caption-title+.fg-caption-desc{margin-top:10px}.fg-simple_portfolio.fg-transparent .fg-item-inner{background-color:transparent;color:#333;border-color:transparent}.fg-simple_portfolio.fg-transparent .fg-caption{color:#7f7f7f}.fg-simple_portfolio.fg-transparent .fg-caption a{color:#7f7f7f;border-bottom:1px solid #7f7f7f}.fg-simple_portfolio.fg-transparent .fg-caption a:hover{border-bottom:none}.fg-simple_portfolio.fg-transparent .fg-caption-title,.fg-simple_portfolio.fg-transparent .fg-caption-title a{color:#333}.fg-simple_portfolio.fg-transparent .fg-caption-title a{border-bottom:1px solid #333}.fg-simple_portfolio.fg-transparent.fg-round-full .fg-item,.fg-simple_portfolio.fg-transparent.fg-round-full .fg-item-inner{border-radius:15px}.fg-simple_portfolio.fg-transparent.fg-round-full .fg-image-overlay,.fg-simple_portfolio.fg-transparent.fg-round-full .fg-image-wrap,.fg-simple_portfolio.fg-transparent.fg-round-full.fg-shadow-inset-large .fg-thumb:after,.fg-simple_portfolio.fg-transparent.fg-round-full.fg-shadow-inset-medium .fg-thumb:after,.fg-simple_portfolio.fg-transparent.fg-round-full.fg-shadow-inset-small .fg-thumb:after{border-radius:50%;overflow:hidden}.fg-simple_portfolio.fg-transparent.fg-round-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-overlay,.fg-simple_portfolio.fg-transparent.fg-round-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-wrap,.fg-simple_portfolio.fg-transparent.fg-round-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-overlay,.fg-simple_portfolio.fg-transparent.fg-round-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-wrap,.fg-simple_portfolio.fg-transparent.fg-round-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-overlay,.fg-simple_portfolio.fg-transparent.fg-round-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-wrap{overflow:hidden}.fg-simple_portfolio.fg-transparent.fg-round-small.fg-shadow-inset-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,.fg-simple_portfolio.fg-transparent.fg-round-small.fg-shadow-inset-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,.fg-simple_portfolio.fg-transparent.fg-round-small.fg-shadow-inset-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,.fg-simple_portfolio.fg-transparent.fg-round-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-overlay,.fg-simple_portfolio.fg-transparent.fg-round-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-wrap{border-radius:5px}.fg-simple_portfolio.fg-transparent.fg-round-medium.fg-shadow-inset-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,.fg-simple_portfolio.fg-transparent.fg-round-medium.fg-shadow-inset-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,.fg-simple_portfolio.fg-transparent.fg-round-medium.fg-shadow-inset-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,.fg-simple_portfolio.fg-transparent.fg-round-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-overlay,.fg-simple_portfolio.fg-transparent.fg-round-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-wrap{border-radius:10px}.fg-simple_portfolio.fg-transparent.fg-round-large.fg-shadow-inset-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,.fg-simple_portfolio.fg-transparent.fg-round-large.fg-shadow-inset-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,.fg-simple_portfolio.fg-transparent.fg-round-large.fg-shadow-inset-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,.fg-simple_portfolio.fg-transparent.fg-round-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-overlay,.fg-simple_portfolio.fg-transparent.fg-round-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-wrap{border-radius:15px}.fg-simple_portfolio.fg-transparent.fg-shadow-inset-small .fg-thumb:after{box-shadow:inset 0 1px 4px 0 rgba(0,0,0,.3)}.fg-simple_portfolio.fg-transparent.fg-shadow-inset-medium .fg-thumb:after{box-shadow:inset 0 1px 10px 0 rgba(0,0,0,.3)}.fg-simple_portfolio.fg-transparent.fg-shadow-inset-large .fg-thumb:after{box-shadow:inset 0 1px 16px 0 rgba(0,0,0,.3)}.fg-simple_portfolio.fg-transparent.fg-shadow-outline .fg-item-inner{box-shadow:0 0 0 1px rgba(128,128,128,.5)}.fg-simple_portfolio.fg-transparent.fg-shadow-small .fg-item-inner{box-shadow:0 1px 4px 0 rgba(128,128,128,.5)}.fg-simple_portfolio.fg-transparent.fg-shadow-medium .fg-item-inner{box-shadow:0 1px 10px 0 rgba(128,128,128,.5)}.fg-simple_portfolio.fg-transparent.fg-shadow-large .fg-item-inner{box-shadow:0 1px 16px 0 rgba(128,128,128,.5)}.foogallery.fg-preset.fg-polaroid .fg-item{-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform .35s,background-color .65s}.foogallery.fg-preset.fg-polaroid .fg-item:nth-child(2n+1){-webkit-transform:rotate(3deg);transform:rotate(3deg)}.foogallery.fg-preset.fg-polaroid .fg-item:nth-child(2n){-webkit-transform:rotate(-3deg);transform:rotate(-3deg)}.foogallery.fg-preset.fg-polaroid .fg-item:nth-child(3n){-webkit-transform:rotate(1deg);transform:rotate(1deg)}.foogallery.fg-preset.fg-polaroid .fg-item:nth-child(5n){-webkit-transform:rotate(-2deg);transform:rotate(-2deg)}.foogallery.fg-preset.fg-polaroid .fg-item:hover{-webkit-transform:rotate(0);transform:rotate(0)}.foogallery.fg-preset.fg-polaroid .fg-caption{position:relative;width:auto;font-family:"Segoe Print Regular",-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif}.foogallery.fg-preset.fg-polaroid .fg-caption-inner,.foogallery.fg-preset.fg-polaroid .fg-caption-title{position:relative;width:auto}.foogallery.fg-preset.fg-polaroid .fg-caption-title{text-align:center}.foogallery.fg-preset.fg-polaroid .fg-caption-desc{display:none}.foogallery.fg-light.fg-preset.fg-polaroid .fg-caption-title,.foogallery.fg-preset.fg-polaroid .fg-caption-title{color:#333}.foogallery.fg-dark.fg-preset.fg-polaroid .fg-caption-title{color:#fff}.foogallery.fg-preset.fg-polaroid .fg-caption{border-style:solid;border-color:transparent;border-width:10px}.foogallery.fg-preset.fg-polaroid .fg-caption-title+.fg-caption-desc{margin-top:4px}.foogallery.fg-preset.fg-polaroid.fg-border-thin .fg-caption{border-width:10px 4px 4px 4px}.foogallery.fg-preset.fg-polaroid.fg-captions-top.fg-border-thin .fg-caption{border-width:4px 4px 10px 4px}.foogallery.fg-preset.fg-polaroid.fg-border-medium .fg-caption{border-width:10px 0 0 0}.foogallery.fg-preset.fg-polaroid.fg-captions-top.fg-border-medium .fg-caption{border-width:0 0 10px 0}.foogallery.fg-preset.fg-polaroid.fg-border-thick .fg-caption{border-width:16px 0 0 0}.foogallery.fg-preset.fg-polaroid.fg-captions-top.fg-border-thick .fg-caption{border-width:0 0 16px 0}.foogallery.fg-preset.fg-polaroid.fg-border-thick .fg-caption-title+.fg-caption-desc{margin-top:10px}.fg-image-viewer{display:block;font-family:'Open Sans','Helvetica Neue',Arial,sans-serif}.fg-image-viewer.fg-left{text-align:left}.fg-image-viewer.fg-center{text-align:center}.fg-image-viewer.fg-right{text-align:right}.fiv-inner{position:relative;display:inline-block;max-width:100%;overflow:hidden;z-index:6}.fiv-inner .fiv-inner-container{position:relative;overflow:hidden;max-width:100%;border-style:solid;border-width:0;border-bottom-width:4px;z-index:5}.fg-image-viewer .fiv-inner .fiv-inner-container .fg-item .fg-thumb,.fg-image-viewer .fiv-inner .fiv-inner-container .fg-item .fg-thumb:active,.fg-image-viewer .fiv-inner .fiv-inner-container .fg-item .fg-thumb:hover,.fg-image-viewer .fiv-inner .fiv-inner-container .fg-item .fg-thumb:visited{position:relative;display:block;border:none;outline:0;text-decoration:none;box-shadow:none;max-width:100%}.fg-image-viewer .fiv-inner .fiv-inner-container .fg-item{position:absolute;visibility:visible;opacity:1;border:none;outline:0;text-decoration:none;box-shadow:none;max-width:100%}.fg-image-viewer .fiv-inner .fiv-inner-container .fg-item:first-of-type{position:relative}.fg-image-viewer .fiv-inner .fiv-inner-container .fg-item .fg-thumb img{display:block;max-width:100%;height:auto;border:none;outline:0;text-decoration:none}.fg-image-viewer .fiv-inner .fiv-ctrls{display:block;text-align:center;font-size:14px;border-style:solid;line-height:34px}.fg-image-viewer .fiv-inner .fiv-ctrls:after{content:'';display:block;clear:both}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-count{display:inline-block;font-weight:400;margin:0}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next,.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:none;min-width:80px;position:relative;overflow:hidden;transition:background-color .3s}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next:before,.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev:before{display:block;position:absolute;font-size:24px;line-height:30px;top:0;left:0;width:100%;transform:translateY(0);transition:transform .3s}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next:hover:before,.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev:hover:before{transform:translateY(-100%)}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next span,.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev span{display:block;width:100%;transform:translateY(100%);transition:transform .3s}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next:hover span,.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev:hover span{transform:translateY(0)}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev{float:left}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev:before{content:'\2190'}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next{float:right}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next:before{content:'\2192'}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-count span{margin:0 4px}.rtl .fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev{float:right}.rtl .fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev:before{content:'\2192'}.rtl .fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next{float:left}.rtl .fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next:before{content:'\2190'}.foogallery.fg-image-viewer.fg-caption-always .fg-item-inner .fg-caption{padding:0;border:none}.foogallery.fg-image-viewer.fg-caption-always .fg-caption-title{padding:10px 10px 10px 10px}.foogallery.fg-image-viewer.fg-caption-always .fg-caption-desc{padding:10px 10px 10px 10px}.foogallery.fg-image-viewer.fg-caption-always .fg-caption-title+.fg-caption-desc{padding:0 10px 10px 10px}.fg-image-viewer.fg-light .fiv-inner .fiv-ctrls,.fg-image-viewer.fg-light .fiv-inner .fiv-ctrls .fiv-count,.fg-image-viewer.fg-light .fiv-inner .fiv-ctrls .fiv-next,.fg-image-viewer.fg-light .fiv-inner .fiv-ctrls .fiv-prev,.fg-image-viewer.fg-light .fiv-inner .fiv-inner-container{background-color:#fff;color:#333;border-color:#fff}.fg-image-viewer.fg-light .fiv-inner .fiv-ctrls .fiv-next:hover,.fg-image-viewer.fg-light .fiv-inner .fiv-ctrls .fiv-prev:hover{background-color:#f2f2f2}.fg-image-viewer.fg-light .fiv-next,.fg-image-viewer.fg-light .fiv-prev{box-shadow:inset 0 0 0 1px #ddd}.fg-image-viewer.fg-dark .fiv-inner .fiv-ctrls,.fg-image-viewer.fg-dark .fiv-inner .fiv-ctrls .fiv-count,.fg-image-viewer.fg-dark .fiv-inner .fiv-ctrls .fiv-next,.fg-image-viewer.fg-dark .fiv-inner .fiv-ctrls .fiv-prev,.fg-image-viewer.fg-dark .fiv-inner .fiv-inner-container{background-color:#333;color:#fff;border-color:#333}.fg-image-viewer.fg-dark .fiv-inner .fiv-ctrls .fiv-next:hover,.fg-image-viewer.fg-dark .fiv-inner .fiv-ctrls .fiv-prev:hover{background-color:#444}.fg-image-viewer.fg-dark .fiv-next,.fg-image-viewer.fg-dark .fiv-prev{box-shadow:inset 0 0 0 1px #222}.foogallery.fg-image-viewer.fg-border-medium .fg-item-inner,.foogallery.fg-image-viewer.fg-border-thick .fg-item-inner,.foogallery.fg-image-viewer.fg-border-thin .fg-item-inner{border-width:0}.foogallery.fg-image-viewer .fiv-ctrls,.foogallery.fg-image-viewer.fg-border-thin .fiv-inner-container{border-width:4px}.foogallery.fg-image-viewer.fg-border-medium .fiv-ctrls,.foogallery.fg-image-viewer.fg-border-medium .fiv-inner-container{border-width:10px}.foogallery.fg-image-viewer.fg-border-thick .fiv-ctrls,.foogallery.fg-image-viewer.fg-border-thick .fiv-inner-container{border-width:16px}.foogallery.fg-image-viewer .fiv-ctrls,.foogallery.fg-image-viewer.fg-border-medium .fiv-ctrls,.foogallery.fg-image-viewer.fg-border-thick .fiv-ctrls,.foogallery.fg-image-viewer.fg-border-thin .fiv-ctrls{border-top-width:1px}.foogallery.fg-image-viewer.fg-round-small .fg-item,.foogallery.fg-image-viewer.fg-round-small .fg-item-inner,.foogallery.fg-image-viewer.fg-round-small .fiv-inner{border-radius:5px}.foogallery.fg-image-viewer.fg-round-small .fg-item,.foogallery.fg-image-viewer.fg-round-small .fg-item-inner{border-bottom-left-radius:0;border-bottom-right-radius:0}.foogallery.fg-image-viewer.fg-round-small .fiv-next,.foogallery.fg-image-viewer.fg-round-small .fiv-prev{border-radius:3px}.foogallery.fg-image-viewer.fg-border-medium.fg-round-small .fg-item,.foogallery.fg-image-viewer.fg-border-medium.fg-round-small .fg-item-inner,.foogallery.fg-image-viewer.fg-border-medium.fg-round-small .fiv-next,.foogallery.fg-image-viewer.fg-border-medium.fg-round-small .fiv-prev,.foogallery.fg-image-viewer.fg-border-thick.fg-round-small .fg-item,.foogallery.fg-image-viewer.fg-border-thick.fg-round-small .fg-item-inner,.foogallery.fg-image-viewer.fg-border-thick.fg-round-small .fiv-next,.foogallery.fg-image-viewer.fg-border-thick.fg-round-small .fiv-prev,.foogallery.fg-image-viewer.fg-border-thin.fg-round-small .fg-item,.foogallery.fg-image-viewer.fg-border-thin.fg-round-small .fg-item-inner,.foogallery.fg-image-viewer.fg-border-thin.fg-round-small .fiv-next,.foogallery.fg-image-viewer.fg-border-thin.fg-round-small .fiv-prev{border-radius:3px}.foogallery.fg-image-viewer.fg-round-medium .fg-item,.foogallery.fg-image-viewer.fg-round-medium .fg-item-inner,.foogallery.fg-image-viewer.fg-round-medium .fiv-inner{border-radius:10px}.foogallery.fg-image-viewer.fg-round-medium .fg-item,.foogallery.fg-image-viewer.fg-round-medium .fg-item-inner{border-bottom-left-radius:0;border-bottom-right-radius:0}.foogallery.fg-image-viewer.fg-round-medium .fiv-next,.foogallery.fg-image-viewer.fg-round-medium .fiv-prev{border-radius:5px}.foogallery.fg-image-viewer.fg-border-thin.fg-round-medium .fg-item,.foogallery.fg-image-viewer.fg-border-thin.fg-round-medium .fg-item-inner,.foogallery.fg-image-viewer.fg-border-thin.fg-round-medium .fiv-next,.foogallery.fg-image-viewer.fg-border-thin.fg-round-medium .fiv-prev{border-radius:5px}.foogallery.fg-image-viewer.fg-border-medium.fg-round-medium .fg-item,.foogallery.fg-image-viewer.fg-border-medium.fg-round-medium .fg-item-inner,.foogallery.fg-image-viewer.fg-border-medium.fg-round-medium .fiv-next,.foogallery.fg-image-viewer.fg-border-medium.fg-round-medium .fiv-prev,.foogallery.fg-image-viewer.fg-border-thick.fg-round-medium .fg-item,.foogallery.fg-image-viewer.fg-border-thick.fg-round-medium .fg-item-inner,.foogallery.fg-image-viewer.fg-border-thick.fg-round-medium .fiv-next,.foogallery.fg-image-viewer.fg-border-thick.fg-round-medium .fiv-prev{border-radius:3px}.foogallery.fg-image-viewer.fg-round-large .fg-item,.foogallery.fg-image-viewer.fg-round-large .fg-item-inner,.foogallery.fg-image-viewer.fg-round-large .fiv-inner{border-radius:15px}.foogallery.fg-image-viewer.fg-round-large .fg-item,.foogallery.fg-image-viewer.fg-round-large .fg-item-inner{border-bottom-left-radius:0;border-bottom-right-radius:0}.foogallery.fg-image-viewer.fg-round-large .fiv-next,.foogallery.fg-image-viewer.fg-round-large .fiv-prev{border-radius:11px}.foogallery.fg-image-viewer.fg-border-thin.fg-round-large .fg-item,.foogallery.fg-image-viewer.fg-border-thin.fg-round-large .fg-item-inner,.foogallery.fg-image-viewer.fg-border-thin.fg-round-large .fiv-next,.foogallery.fg-image-viewer.fg-border-thin.fg-round-large .fiv-prev{border-radius:11px}.foogallery.fg-image-viewer.fg-border-medium.fg-round-large .fg-item,.foogallery.fg-image-viewer.fg-border-medium.fg-round-large .fg-item-inner,.foogallery.fg-image-viewer.fg-border-medium.fg-round-large .fiv-next,.foogallery.fg-image-viewer.fg-border-medium.fg-round-large .fiv-prev{border-radius:5px}.foogallery.fg-image-viewer.fg-border-thick.fg-round-large .fg-item,.foogallery.fg-image-viewer.fg-border-thick.fg-round-large .fg-item-inner,.foogallery.fg-image-viewer.fg-border-thick.fg-round-large .fiv-next,.foogallery.fg-image-viewer.fg-border-thick.fg-round-large .fiv-prev{border-radius:3px}.foogallery.fg-image-viewer.fg-round-full .fiv-inner,.foogallery.fg-image-viewer.fg-round-full .fiv-next,.foogallery.fg-image-viewer.fg-round-full .fiv-prev{border-radius:50%}.foogallery.fg-image-viewer.fg-dark.fg-shadow-large .fg-item-inner,.foogallery.fg-image-viewer.fg-dark.fg-shadow-medium .fg-item-inner,.foogallery.fg-image-viewer.fg-dark.fg-shadow-outline .fg-item-inner,.foogallery.fg-image-viewer.fg-dark.fg-shadow-small .fg-item-inner,.foogallery.fg-image-viewer.fg-light.fg-shadow-large .fg-item-inner,.foogallery.fg-image-viewer.fg-light.fg-shadow-medium .fg-item-inner,.foogallery.fg-image-viewer.fg-light.fg-shadow-outline .fg-item-inner,.foogallery.fg-image-viewer.fg-light.fg-shadow-small .fg-item-inner{box-shadow:none}.foogallery.fg-image-viewer.fg-light.fg-shadow-outline .fiv-inner{box-shadow:0 0 0 1px #ddd}.foogallery.fg-image-viewer.fg-dark.fg-shadow-outline .fiv-inner{box-shadow:0 0 0 1px #222}.foogallery.fg-image-viewer.fg-dark.fg-shadow-small .fiv-inner,.foogallery.fg-image-viewer.fg-light.fg-shadow-small .fiv-inner{box-shadow:0 1px 4px 0 rgba(0,0,0,.5)}.foogallery.fg-image-viewer.fg-dark.fg-shadow-medium .fiv-inner,.foogallery.fg-image-viewer.fg-light.fg-shadow-medium .fiv-inner{box-shadow:0 1px 10px 0 rgba(0,0,0,.5)}.foogallery.fg-image-viewer.fg-dark.fg-shadow-large .fiv-inner,.foogallery.fg-image-viewer.fg-light.fg-shadow-large .fiv-inner{box-shadow:0 1px 16px 0 rgba(0,0,0,.5)}.foogallery.fg-thumbnail,.foogallery.fg-thumbnail.fg-center{text-align:center}.foogallery.fg-thumbnail.fg-left{text-align:left}.foogallery.fg-thumbnail.fg-right{text-align:right}.foogallery.fg-thumbnail.fg-float-left{float:left;width:auto}.foogallery.fg-thumbnail.fg-float-right{float:right;width:auto}.foogallery.fg-thumbnail .fg-item{display:inline-block;vertical-align:top;max-width:100%}.foogallery.fg-thumbnail .fg-image{max-width:100%}.foogallery.fg-thumbnail .fg-st-hidden{display:none}.foogallery-stack-album{text-align:center;overflow:hidden;font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:13px;font-weight:400;line-height:1.3}.foogallery-stack-album,.foogallery-stack-album *{box-sizing:border-box}.foogallery-stack-album.fg-align-left{text-align:left}.foogallery-stack-album.fg-align-center{text-align:center}.foogallery-stack-album.fg-align-right{text-align:right}.foogallery-stack-album.fg-disable-transitions,.foogallery-stack-album.fg-disable-transitions *{transition:none!important}.fg-header{display:flex;flex-wrap:nowrap;justify-content:space-between;align-items:center;position:relative;padding:0;margin:0;border-top:solid 1px #aaa;border-bottom:solid 1px #aaa}.fg-header-title{display:block;margin:0;padding:0 20px;width:100%;text-align:left}.fg-header-active{display:block;margin:0;padding:0 20px;visibility:hidden;opacity:0;width:100%;text-align:right;transition-property:opacity,visibility;transition-duration:.3s;transition-timing-function:ease-in-out}.fg-header-back{display:block;padding:0;margin:5px;visibility:hidden;opacity:0;min-width:40px;width:40px;height:40px;border-radius:50%;text-align:center;line-height:38px;color:#999;background:#ddd;background:rgba(200,200,200,.5);cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;transition-property:opacity,visibility;transition-duration:.3s;transition-timing-function:ease-in-out}.fg-has-active .fg-header-active,.fg-has-active .fg-header-back{visibility:visible;opacity:1}.fg-piles{display:inline-block;position:relative;transition-property:width,height;transition-duration:.3s;transition-timing-function:ease-in-out}.fg-pile{display:block;position:absolute;top:0;left:0;list-style:none;padding:0;margin:0;visibility:visible;opacity:1;transition-property:opacity,visibility,top,left,width,height;transition-duration:.3s;transition-timing-function:ease-in-out}.fg-pile.fg-hidden{visibility:hidden;opacity:0}.fg-pile-item{display:block;position:absolute;top:25px;left:25px;visibility:visible;opacity:1;cursor:pointer;border:10px solid #fff;background-color:#fff;box-shadow:0 1px 4px rgba(0,0,0,.2);transition-property:opacity,visibility,top,left,transform;transition-duration:.3s;transition-timing-function:ease-in-out;z-index:1;transform:rotate(0)}.fg-expanded .fg-pile-item{z-index:2;transform:rotate(0)!important}.fg-pile-item.fg-has-cover{z-index:10;transform:rotate(0)!important}.fg-pile-item:nth-child(2){z-index:9}.fg-pile-item:nth-child(3){z-index:8}.fg-pile-item:nth-child(4){z-index:7}.fg-pile-item:nth-child(1n+5){visibility:hidden;opacity:0}.fg-expanded .fg-pile-item:nth-child(1n+4){visibility:visible;opacity:1}.fg-pile-item-thumb{display:block}.fg-pile-item-image{display:block}.fg-pile-item-caption{display:flex;justify-content:center;flex-direction:column;position:absolute;top:0;left:0;bottom:0;right:0;width:100%;height:100%;margin:0;padding:10px;background-color:rgba(68,68,68,.5);color:#fff;text-align:center;visibility:hidden;opacity:0;transition-property:opacity,visibility;transition-duration:.3s;transition-timing-function:ease-in-out}.fg-pile-item-title{display:block;width:100%;padding:0 0 10px}.fg-pile-item-desc{display:block;width:100%;max-height:100%;border-top:solid 1px currentColor;padding:10px 0 0;overflow:hidden}.fg-pile-item-thumb:hover .fg-pile-item-caption{visibility:visible;opacity:1}.fg-pile-cover{display:flex;justify-content:left;align-items:center;position:absolute;top:0;left:0;bottom:0;right:0;width:100%;height:100%;visibility:visible;opacity:1;cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;transition-property:opacity,visibility;transition-duration:.3s;transition-timing-function:ease-in-out}.fg-expanded .fg-pile-cover{visibility:hidden;opacity:0;pointer-events:none}.fg-pile-cover-content{display:flex;position:relative;background:#fff;color:#333;width:75%;font-weight:700;box-shadow:1px 1px 1px rgba(0,0,0,.1),5px 0 5px -3px rgba(0,0,0,.4),inset 0 0 5px rgba(0,0,0,.04)}.fg-pile-cover-title{text-align:center;padding:10px;width:100%}.fg-pile-cover-count{color:#aaa;padding:10px 5px;background:#f7f7f7;height:100%}:root{--fg-carousel-perspective:150px;--fg-carousel-navigation-size:48px;--fg-carousel-pagination-size:14px;--fg-carousel-progress-size:4px;--fg-carousel-navigation-opacity:0.3;--fg-carousel-transition-speed:650ms;--fg-carousel-ui-speed:300ms}.foogallery.fg-carousel{--fg-carousel-inverse-perspective:calc( -1 * var(--fg-carousel-perspective) );position:relative;overflow:hidden;display:grid;grid-template-columns:var(--fg-carousel-navigation-size) auto var(--fg-carousel-navigation-size);grid-template-rows:auto auto;grid-template-areas:"prev inner next" "bottom bottom bottom"}.fg-carousel-inner{position:relative;grid-area:inner;display:grid;grid-template-columns:1fr auto 1fr;grid-template-rows:auto;grid-template-areas:"left center right";padding:10px 0;perspective:var(--fg-carousel-perspective);transform:translate3d(0,0,0);transform-style:preserve-3d;backface-visibility:hidden;will-change:contents}.foogallery_preview_container .fg-carousel-inner{transform-style:unset}.fg-carousel-center{position:relative;z-index:-1;pointer-events:none;visibility:hidden}.fg-carousel-center{grid-area:center}.fg-carousel-progress{display:block;position:absolute;visibility:visible;bottom:0;left:0;width:0;height:var(--fg-carousel-progress-size);border-radius:calc(var(--fg-carousel-progress-size)/ 2);transition:width .1s linear;opacity:var(--fg-carousel-navigation-opacity)}.rtl .fg-carousel-progress{left:auto;right:0}.fg-carousel-bottom{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;position:relative;grid-area:bottom;font-size:var(--fg-carousel-pagination-size);padding:0;margin-bottom:10px}.fg-carousel-bullet{width:1em;height:1em;display:block;padding:0;margin:.3em;border-radius:50%;border:solid 1px transparent;background:0 0;box-shadow:none;outline:0;opacity:var(--fg-carousel-navigation-opacity);cursor:pointer;font-size:inherit;transition:opacity var(--fg-carousel-ui-speed) ease-in}@media only screen and (max-width:782px){.fg-carousel-bullet{width:1.25em;height:1.25em}}.fg-carousel-bullet:hover{background:0 0;box-shadow:none;outline:0;opacity:1}.fg-carousel-bullet.fg-bullet-active{opacity:1}button.fg-carousel-next,button.fg-carousel-prev{position:relative;height:100%;width:100%;display:flex;align-items:center;justify-content:center;font-size:var(--fg-carousel-navigation-size);background:0 0;border:none;box-shadow:none;outline:0;z-index:11;cursor:pointer;opacity:var(--fg-carousel-navigation-opacity);transition:opacity var(--fg-carousel-ui-speed) ease-in;padding:0;margin:0}button.fg-carousel-next:hover,button.fg-carousel-prev:hover{background:0 0;border:none;box-shadow:none;outline:0;opacity:1}.fg-carousel-next .fg-icon,.fg-carousel-prev .fg-icon{width:1em;height:1em}.rtl .fg-carousel-next .fg-icon,.rtl .fg-carousel-prev .fg-icon{transform:rotate(180deg)}.fg-carousel-prev{grid-area:prev}.fg-carousel-next{grid-area:next}.foogallery.fg-carousel .fg-item{display:block;opacity:0;visibility:hidden;grid-area:center;transform-origin:center center;transform:translate3d(0,200%,var(--fg-carousel-inverse-perspective));transition-timing-function:ease-in-out;transition-duration:0s;transition-property:background-color,transform,transform-origin,opacity,visibility;backface-visibility:hidden}.foogallery.fg-carousel .fg-item.fg-loaded{transform:translate3d(0,0,var(--fg-carousel-inverse-perspective));transition-timing-function:ease-in-out;transition-duration:calc( var(--fg-carousel-transition-speed) / 2 );transition-property:background-color,transform,transform-origin,opacity,visibility}.foogallery.fg-carousel .fg-item.fg-item-active,.foogallery.fg-carousel .fg-item.fg-item-next,.foogallery.fg-carousel .fg-item.fg-item-prev{opacity:1;visibility:visible}.foogallery.fg-carousel .fg-item.fg-item-active{transform:translate3d(0,0,0)}.foogallery.fg-carousel.fg-dark .fg-carousel-progress,.foogallery.fg-carousel.fg-light.fg-inverted .fg-carousel-progress{background-color:#fff;box-shadow:inset 0 0 0 1px #9d9d9d}.foogallery.fg-carousel.fg-dark button.fg-carousel-bullet,.foogallery.fg-carousel.fg-light.fg-inverted button.fg-carousel-bullet{background-color:#fff;border-color:#ccc}.foogallery.fg-carousel.fg-dark button.fg-carousel-next,.foogallery.fg-carousel.fg-dark button.fg-carousel-prev,.foogallery.fg-carousel.fg-light.fg-inverted button.fg-carousel-next,.foogallery.fg-carousel.fg-light.fg-inverted button.fg-carousel-prev{color:#fff;background-color:transparent}.foogallery.fg-carousel.fg-dark.fg-inverted .fg-carousel-progress,.foogallery.fg-carousel.fg-light .fg-carousel-progress{background-color:#444;box-shadow:inset 0 0 0 1px #333}.foogallery.fg-carousel.fg-dark.fg-inverted button.fg-carousel-bullet,.foogallery.fg-carousel.fg-light button.fg-carousel-bullet{background-color:#444;border-color:#333}.foogallery.fg-carousel.fg-dark.fg-inverted button.fg-carousel-next,.foogallery.fg-carousel.fg-dark.fg-inverted button.fg-carousel-prev,.foogallery.fg-carousel.fg-light button.fg-carousel-next,.foogallery.fg-carousel.fg-light button.fg-carousel-prev{color:#444;background-color:transparent}.fg-shadow-outline .fg-carousel-inner{padding:1px}.fg-shadow-small .fg-carousel-inner{padding:4px}.fg-shadow-medium .fg-carousel-inner{padding:10px}.fg-shadow-large .fg-carousel-inner{padding:16px}.foogallery.fg-carousel-hide-nav-arrows{--fg-carousel-navigation-size:0px}.foogallery.fg-carousel-hide-nav-arrows .fg-carousel-next,.foogallery.fg-carousel-hide-nav-arrows .fg-carousel-prev,.foogallery.fg-carousel-hide-pagination .fg-carousel-bottom,.foogallery.fg-carousel-hide-progress-bar .fg-carousel-progress{display:none}
1
+ .foogallery,.foogallery *{box-sizing:border-box}.foogallery{display:block;z-index:1;font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;position:relative;line-height:0;font-size:0;width:100%;max-width:100%}.foogallery .fg-item{display:inline-block;position:relative;background-color:transparent;z-index:2;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.foogallery .fg-item.fg-hidden{display:none!important}.foogallery .fg-item-inner{display:block;position:relative;visibility:hidden;overflow:hidden;opacity:0;z-index:3;margin:0;border:solid 0 transparent}.foogallery .fg-item.fg-error:before{content:"";display:block;position:absolute;top:50%;left:50%;transform:translateX(-50%) translateY(-50%);width:32px;height:32px;background-image:url('../img/icons.svg#image');background-color:transparent;background-repeat:no-repeat;background-position:center center;background-size:32px 32px}.foogallery .fg-item.fg-loaded{z-index:4}.foogallery .fg-loaded .fg-item-inner{visibility:visible;opacity:1;z-index:5}.foogallery .fg-error .fg-item-inner{pointer-events:none;cursor:default}.foogallery .fg-thumb{display:block;position:relative;border:none;outline:0;text-decoration:none;z-index:4;box-shadow:none}.foogallery .fg-thumb:focus,.foogallery .fg-thumb:hover{border:none;outline:0;text-decoration:none;box-shadow:none}.foogallery .fg-image-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:8;visibility:hidden;opacity:0}.foogallery .fg-image-wrap{display:block;position:relative}.foogallery .fg-image{display:block;position:relative;border:none;outline:0;text-decoration:none;z-index:5;max-width:100%;height:auto;margin:0;width:auto}.foogallery picture.fg-image>img{display:block;position:relative;border:none;outline:0;text-decoration:none;max-width:100%;height:auto;margin:0;width:auto}.foogallery .fg-loaded .fg-thumb{z-index:6}.foogallery .fg-loaded .fg-image{z-index:7}.fg-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.foogallery.fg-light .fg-item-inner{background-color:#fff;color:#333;border-color:#fff}.foogallery.fg-dark .fg-item-inner{background-color:#333;color:#fff;border-color:#333}.foogallery.fg-light .fg-item.fg-error,.foogallery.fg-light .fg-item.fg-idle,.foogallery.fg-light .fg-item.fg-loading{background-color:#eee;box-shadow:inset 0 0 0 1px #ddd}.foogallery.fg-dark .fg-item.fg-error,.foogallery.fg-dark .fg-item.fg-idle,.foogallery.fg-dark .fg-item.fg-loading{background-color:#444;box-shadow:inset 0 0 0 1px #333}.foogallery .fg-caption{background-color:rgba(0,0,0,.6);color:#fff}.foogallery .fg-caption a{color:#fff;border-bottom:1px solid #fff}.foogallery.fg-light-overlays .fg-caption{background-color:rgba(255,255,255,.8);color:#333}.foogallery.fg-light-overlays .fg-caption a{color:#333;border-bottom-color:#333}.foogallery.fg-transparent-overlays .fg-caption{background-color:transparent;color:#fff}.foogallery.fg-transparent-overlays .fg-caption a{color:#fff;border-bottom-color:#fff}.foogallery .fg-image-overlay{background-color:rgba(0,0,0,.6);color:#fff}.foogallery.fg-light-overlays .fg-image-overlay{background-color:rgba(255,255,255,.8);color:#333}.foogallery.fg-transparent-overlays .fg-image-overlay{background-color:transparent;color:#fff}.fg-exif-light .fg-item.fg-item-exif .fg-image-wrap:after{background-color:#fff;color:#333}.fg-exif-dark .fg-item.fg-item-exif .fg-image-wrap:after{background-color:#333;color:#fff}.fg-exif-rounded .fg-item.fg-item-exif .fg-image-wrap:after{border-radius:3px}.fg-exif-bottom-left .fg-item.fg-item-exif .fg-image-wrap:after,.fg-exif-bottom-right .fg-item.fg-item-exif .fg-image-wrap:after,.fg-exif-top-left .fg-item.fg-item-exif .fg-image-wrap:after,.fg-exif-top-right .fg-item.fg-item-exif .fg-image-wrap:after{display:inline-block;position:absolute;content:'EXIF';font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:11px;line-height:10px;padding:3px 4px;z-index:7}.fg-exif-bottom-right .fg-item.fg-item-exif .fg-image-wrap:after{bottom:5px;right:5px}.fg-exif-bottom-left .fg-item.fg-item-exif .fg-image-wrap:after{bottom:5px;left:5px}.fg-exif-top-right .fg-item.fg-item-exif .fg-image-wrap:after{top:5px;right:5px}.fg-exif-top-left .fg-item.fg-item-exif .fg-image-wrap:after{top:5px;left:5px}.foogallery.fg-border-thin .fg-item-inner{border-width:4px}.foogallery.fg-border-medium .fg-item-inner{border-width:10px}.foogallery.fg-border-thick .fg-item-inner{border-width:16px}.foogallery.fg-light.fg-shadow-outline .fg-item-inner{box-shadow:0 0 0 1px #ddd}.foogallery.fg-dark.fg-shadow-outline .fg-item-inner{box-shadow:0 0 0 1px #222}.foogallery.fg-dark.fg-shadow-small .fg-item-inner,.foogallery.fg-light.fg-shadow-small .fg-item-inner{box-shadow:0 1px 4px 0 rgba(0,0,0,.5)}.foogallery.fg-dark.fg-shadow-medium .fg-item-inner,.foogallery.fg-light.fg-shadow-medium .fg-item-inner{box-shadow:0 1px 10px 0 rgba(0,0,0,.5)}.foogallery.fg-dark.fg-shadow-large .fg-item-inner,.foogallery.fg-light.fg-shadow-large .fg-item-inner{box-shadow:0 1px 16px 0 rgba(0,0,0,.5)}.foogallery.fg-shadow-inset-large .fg-thumb:after,.foogallery.fg-shadow-inset-medium .fg-thumb:after,.foogallery.fg-shadow-inset-small .fg-thumb:after{display:block;content:"";position:absolute;top:0;left:0;right:0;bottom:0;z-index:7}.foogallery.fg-dark.fg-shadow-inset-small .fg-thumb:after,.foogallery.fg-light.fg-shadow-inset-small .fg-thumb:after{box-shadow:inset 0 1px 4px 0 rgba(0,0,0,.3)}.foogallery.fg-dark.fg-shadow-inset-medium .fg-thumb:after,.foogallery.fg-light.fg-shadow-inset-medium .fg-thumb:after{box-shadow:inset 0 1px 10px 0 rgba(0,0,0,.3)}.foogallery.fg-dark.fg-shadow-inset-large .fg-thumb:after,.foogallery.fg-light.fg-shadow-inset-large .fg-thumb:after{box-shadow:inset 0 1px 16px 0 rgba(0,0,0,.3)}.foogallery.fg-round-full.fg-shadow-inset-large .fg-thumb:after,.foogallery.fg-round-full.fg-shadow-inset-medium .fg-thumb:after,.foogallery.fg-round-full.fg-shadow-inset-small .fg-thumb:after{border-radius:50%}.foogallery.fg-round-small .fg-item,.foogallery.fg-round-small .fg-item-inner{border-radius:5px}.foogallery.fg-round-medium .fg-item,.foogallery.fg-round-medium .fg-item-inner{border-radius:10px}.foogallery.fg-round-large .fg-item,.foogallery.fg-round-large .fg-item-inner{border-radius:15px}.foogallery.fg-round-full .fg-item,.foogallery.fg-round-full .fg-item-inner{border-radius:50%}.foogallery .fg-loader{position:absolute;top:50%;left:50%;margin-top:-.5em;margin-left:-.5em;width:1em;height:1em;font-size:5px;visibility:hidden;opacity:0;pointer-events:none}.foogallery .fg-loading .fg-loader{visibility:visible;opacity:1}.fg-loading-default .fg-loader{border-radius:50%;text-indent:-9999em;box-shadow:0 -2.6em 0 0 #828282,1.8em -1.8em 0 0 rgba(130,130,130,.2),2.5em 0 0 0 rgba(130,130,130,.2),1.75em 1.75em 0 0 rgba(130,130,130,.2),0 2.5em 0 0 rgba(130,130,130,.2),-1.8em 1.8em 0 0 rgba(130,130,130,.2),-2.6em 0 0 0 rgba(130,130,130,.5),-1.8em -1.8em 0 0 rgba(130,130,130,.7);-webkit-animation:loading-default 1.1s infinite paused steps(8,start);animation:loading-default 1.1s infinite paused steps(8,start)}.fg-loading-default .fg-loading .fg-loader{-webkit-animation-play-state:running;animation-play-state:running}@-webkit-keyframes loading-default{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes loading-default{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.fg-loading-bars .fg-loader,.fg-loading-bars .fg-loader:after,.fg-loading-bars .fg-loader:before{background:#828282;width:1em;height:4em;-webkit-animation:loading-bars 1s infinite paused ease-in-out;animation:loading-bars 1s infinite paused ease-in-out}.fg-loading-bars .fg-loading .fg-loader,.fg-loading-bars .fg-loading .fg-loader:after,.fg-loading-bars .fg-loading .fg-loader:before{-webkit-animation-play-state:running;animation-play-state:running}.fg-loading-bars .fg-loader{color:#828282;text-indent:-9999em;font-size:4px;margin-top:-2em;margin-left:-.5em;-webkit-animation-delay:-.16s;animation-delay:-.16s}.fg-loading-bars .fg-loader:after,.fg-loading-bars .fg-loader:before{position:absolute;top:0;content:''}.fg-loading-bars .fg-loader:before{left:-1.5em;-webkit-animation-delay:-.32s;animation-delay:-.32s}.fg-loading-bars .fg-loader:after{left:1.5em}@-webkit-keyframes loading-bars{0%,100%,80%{box-shadow:0 0;height:4em}40%{box-shadow:0 -2em;height:5em}}@keyframes loading-bars{0%,100%,80%{box-shadow:0 0;height:4em}40%{box-shadow:0 -2em;height:5em}}.fg-loading-trail .fg-loader{color:#828282;margin-top:0;margin-left:0;font-size:20px;text-indent:-9999em;overflow:hidden;border-radius:50%;-webkit-animation:loading-trail-1 1.7s infinite paused ease,loading-trail-2 1.7s infinite paused ease;animation:loading-trail-1 1.7s infinite paused ease,loading-trail-2 1.7s infinite paused ease}.fg-loading-trail .fg-loading .fg-loader{-webkit-animation-play-state:running;animation-play-state:running}@-webkit-keyframes loading-trail-1{0%{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}5%,95%{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}10%,59%{box-shadow:0 -.83em 0 -.4em,-.087em -.825em 0 -.42em,-.173em -.812em 0 -.44em,-.256em -.789em 0 -.46em,-.297em -.775em 0 -.477em}20%{box-shadow:0 -.83em 0 -.4em,-.338em -.758em 0 -.42em,-.555em -.617em 0 -.44em,-.671em -.488em 0 -.46em,-.749em -.34em 0 -.477em}38%{box-shadow:0 -.83em 0 -.4em,-.377em -.74em 0 -.42em,-.645em -.522em 0 -.44em,-.775em -.297em 0 -.46em,-.82em -.09em 0 -.477em}100%{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}}@keyframes loading-trail-1{0%{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}5%,95%{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}10%,59%{box-shadow:0 -.83em 0 -.4em,-.087em -.825em 0 -.42em,-.173em -.812em 0 -.44em,-.256em -.789em 0 -.46em,-.297em -.775em 0 -.477em}20%{box-shadow:0 -.83em 0 -.4em,-.338em -.758em 0 -.42em,-.555em -.617em 0 -.44em,-.671em -.488em 0 -.46em,-.749em -.34em 0 -.477em}38%{box-shadow:0 -.83em 0 -.4em,-.377em -.74em 0 -.42em,-.645em -.522em 0 -.44em,-.775em -.297em 0 -.46em,-.82em -.09em 0 -.477em}100%{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}}@-webkit-keyframes loading-trail-2{0%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(0);transform:translateX(-50%) translateY(-50%) rotate(0)}100%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(360deg);transform:translateX(-50%) translateY(-50%) rotate(360deg)}}@keyframes loading-trail-2{0%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(0);transform:translateX(-50%) translateY(-50%) rotate(0)}100%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(360deg);transform:translateX(-50%) translateY(-50%) rotate(360deg)}}.fg-loading-pulse .fg-loader,.fg-loading-pulse .fg-loader:after,.fg-loading-pulse .fg-loader:before{border-radius:50%;width:2.5em;height:2.5em;-webkit-animation:loading-pulse 1.8s infinite both paused ease-in-out;animation:loading-pulse 1.8s infinite both paused ease-in-out}.fg-loading-pulse .fg-loading .fg-loader,.fg-loading-pulse .fg-loading .fg-loader:after,.fg-loading-pulse .fg-loading .fg-loader:before{-webkit-animation-play-state:running;animation-play-state:running}.fg-loading-pulse .fg-loader{color:#828282;font-size:4px;margin-top:-3.75em;margin-left:-1.25em;text-indent:-9999em;-webkit-animation-delay:-.16s;animation-delay:-.16s}.fg-loading-pulse .fg-loader:after,.fg-loading-pulse .fg-loader:before{content:'';position:absolute;top:0}.fg-loading-pulse .fg-loader:before{left:-3.5em;-webkit-animation-delay:-.32s;animation-delay:-.32s}.fg-loading-pulse .fg-loader:after{left:3.5em}@-webkit-keyframes loading-pulse{0%,100%,80%{box-shadow:0 2.5em 0 -1.3em}40%{box-shadow:0 2.5em 0 0}}@keyframes loading-pulse{0%,100%,80%{box-shadow:0 2.5em 0 -1.3em}40%{box-shadow:0 2.5em 0 0}}.fg-loading-dots .fg-loader{color:#828282;font-size:5px;border-radius:50%;text-indent:-9999em;-webkit-animation:loading-dots 1.3s infinite paused linear;animation:loading-dots 1.3s infinite paused linear}.fg-loading-dots .fg-loading .fg-loader{-webkit-animation-play-state:running;animation-play-state:running}@-webkit-keyframes loading-dots{0%,100%{box-shadow:0 -3em 0 .2em,2em -2em 0 0,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 0}12.5%{box-shadow:0 -3em 0 0,2em -2em 0 .2em,3em 0 0 0,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}25%{box-shadow:0 -3em 0 -.5em,2em -2em 0 0,3em 0 0 .2em,2em 2em 0 0,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}37.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 0,2em 2em 0 .2em,0 3em 0 0,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}50%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 0,0 3em 0 .2em,-2em 2em 0 0,-3em 0 0 -1em,-2em -2em 0 -1em}62.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 0,-2em 2em 0 .2em,-3em 0 0 0,-2em -2em 0 -1em}75%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 .2em,-2em -2em 0 0}87.5%{box-shadow:0 -3em 0 0,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 0,-2em -2em 0 .2em}}@keyframes loading-dots{0%,100%{box-shadow:0 -3em 0 .2em,2em -2em 0 0,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 0}12.5%{box-shadow:0 -3em 0 0,2em -2em 0 .2em,3em 0 0 0,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}25%{box-shadow:0 -3em 0 -.5em,2em -2em 0 0,3em 0 0 .2em,2em 2em 0 0,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}37.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 0,2em 2em 0 .2em,0 3em 0 0,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}50%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 0,0 3em 0 .2em,-2em 2em 0 0,-3em 0 0 -1em,-2em -2em 0 -1em}62.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 0,-2em 2em 0 .2em,-3em 0 0 0,-2em -2em 0 -1em}75%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 .2em,-2em -2em 0 0}87.5%{box-shadow:0 -3em 0 0,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 0,-2em -2em 0 .2em}}.fg-loading-partial .fg-loader,.fg-loading-partial .fg-loader:after{border-radius:50%;width:10em;height:10em}.fg-loading-partial .fg-loader{font-size:4px;text-indent:-9999em;margin-top:0;margin-left:0;border-top:1.1em solid rgba(130,130,130,.2);border-right:1.1em solid rgba(130,130,130,.2);border-bottom:1.1em solid rgba(130,130,130,.2);border-left:1.1em solid #828282;-webkit-animation:loading-partial 1.1s infinite paused linear;animation:loading-partial 1.1s infinite paused linear}.fg-loading-partial .fg-loading .fg-loader{-webkit-animation-play-state:running;animation-play-state:running}@-webkit-keyframes loading-partial{0%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(0);transform:translateX(-50%) translateY(-50%) rotate(0)}100%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(360deg);transform:translateX(-50%) translateY(-50%) rotate(360deg)}}@keyframes loading-partial{0%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(0);transform:translateX(-50%) translateY(-50%) rotate(0)}100%{-webkit-transform:translateX(-50%) translateY(-50%) rotate(360deg);transform:translateX(-50%) translateY(-50%) rotate(360deg)}}.foogallery.fg-loaded-drop .fg-item.fg-loaded,.foogallery.fg-loaded-fade-in .fg-item.fg-loaded,.foogallery.fg-loaded-flip .fg-item.fg-loaded,.foogallery.fg-loaded-fly .fg-item.fg-loaded,.foogallery.fg-loaded-scale-up .fg-item.fg-loaded,.foogallery.fg-loaded-slide-down .fg-item.fg-loaded,.foogallery.fg-loaded-slide-left .fg-item.fg-loaded,.foogallery.fg-loaded-slide-right .fg-item.fg-loaded,.foogallery.fg-loaded-slide-up .fg-item.fg-loaded,.foogallery.fg-loaded-swing-down .fg-item.fg-loaded{transition-timing-function:ease;transition-duration:650ms;transition-property:background-color,transform}.foogallery.fg-loaded-drop .fg-loaded .fg-item-inner,.foogallery.fg-loaded-fade-in .fg-loaded .fg-item-inner,.foogallery.fg-loaded-flip .fg-loaded .fg-item-inner,.foogallery.fg-loaded-fly .fg-loaded .fg-item-inner,.foogallery.fg-loaded-scale-up .fg-loaded .fg-item-inner,.foogallery.fg-loaded-slide-down .fg-loaded .fg-item-inner,.foogallery.fg-loaded-slide-left .fg-loaded .fg-item-inner,.foogallery.fg-loaded-slide-right .fg-loaded .fg-item-inner,.foogallery.fg-loaded-slide-up .fg-loaded .fg-item-inner,.foogallery.fg-loaded-swing-down .fg-loaded .fg-item-inner{transition-timing-function:ease;transition-duration:650ms}.foogallery.fg-loaded-drop .fg-item.fg-loaded,.foogallery.fg-loaded-flip .fg-item.fg-loaded,.foogallery.fg-loaded-fly .fg-item.fg-loaded,.foogallery.fg-loaded-swing-down .fg-item.fg-loaded{perspective:1300px}.foogallery.fg-loaded-drop .fg-item-inner{transition-property:visibility,opacity,transform;transform-style:preserve-3d;transform:translateZ(400px) translateY(100%) rotateX(-90deg)}.foogallery.fg-loaded-drop .fg-loaded .fg-item-inner{transform:translateZ(0) translateY(0) rotateX(0)}.foogallery.fg-loaded-fade-in .fg-item-inner{transition-property:visibility,opacity}.foogallery.fg-loaded-flip .fg-item-inner{transition-property:visibility,opacity,transform;backface-visibility:hidden;transform-style:preserve-3d;transform:rotateY(-180deg)}.foogallery.fg-loaded-flip .fg-loaded .fg-item-inner{transform:rotateY(0)}.foogallery.fg-loaded-fly .fg-item-inner{transition-property:visibility,opacity,transform;transform-style:preserve-3d;transform-origin:50% 50% -300px;transform:rotateX(-180deg)}.foogallery.fg-loaded-fly .fg-loaded .fg-item-inner{transform:rotateX(0)}.foogallery.fg-loaded-scale-up .fg-item-inner{transition-property:visibility,opacity,transform;transform:scale(.6)}.foogallery.fg-loaded-scale-up .fg-loaded .fg-item-inner{transform:scale(1)}.foogallery.fg-loaded-slide-up .fg-item-inner{transition-property:visibility,opacity,transform;transform:translateY(50%)}.foogallery.fg-loaded-slide-up .fg-loaded .fg-item-inner{transform:translateY(0)}.foogallery.fg-loaded-slide-down .fg-item-inner{transition-property:visibility,opacity,transform;transform:translateY(-50%)}.foogallery.fg-loaded-slide-down .fg-loaded .fg-item-inner{transform:translateY(0)}.foogallery.fg-loaded-slide-left .fg-item-inner{transition-property:visibility,opacity,transform;transform:translateX(50%)}.foogallery.fg-loaded-slide-left .fg-loaded .fg-item-inner{transform:translateX(0)}.foogallery.fg-loaded-slide-right .fg-item-inner{transition-property:visibility,opacity,transform;transform:translateX(-50%)}.foogallery.fg-loaded-slide-right .fg-loaded .fg-item-inner{transform:translateX(0)}.foogallery.fg-loaded-swing-down .fg-item-inner{transition-property:visibility,opacity,transform;transform-style:preserve-3d;transform-origin:0 0;transform:rotateX(-80deg)}.foogallery.fg-loaded-swing-down .fg-loaded .fg-item-inner{transform:rotateX(0)}.foogallery .fg-caption{visibility:hidden;opacity:0;position:absolute;z-index:8;width:100%;max-height:100%;overflow:hidden;font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:13px;font-weight:400;line-height:1.3;border:none;text-align:center;cursor:pointer;margin:0}.foogallery .fg-caption a{text-decoration:none}.foogallery .fg-caption a:hover{border-bottom:none}.foogallery .fg-caption-title{box-sizing:content-box;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:16px;font-weight:400;padding:0;margin:.4em;height:1.3em;min-height:1.3em;line-height:1.3em}.foogallery .fg-caption-desc{padding:0;margin:.4em;overflow:hidden;height:100%;max-height:100%}.foogallery .fg-caption-title+.fg-caption-desc{margin-top:0}.foogallery .fg-caption-buttons{display:flex;position:relative;flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:center;width:100%;padding:5px;margin:0}.foogallery .fg-caption-buttons>a{display:inline-block;position:relative;padding:.4em .8em;margin:1px;max-width:100%;font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:12px;font-weight:400;line-height:1.4;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;user-select:none;background-image:none;text-decoration:none!important;border:1px solid transparent;border-radius:4px;box-shadow:none;outline:0;opacity:1;transition-timing-function:ease-out;transition-duration:.3s;transition-property:color,opacity,border-color,background-color}@media only screen and (max-width:600px){.foogallery .fg-caption-buttons{align-items:stretch}.foogallery .fg-caption-buttons>a{flex:1}}.foogallery .fg-caption .fg-caption-buttons>a{color:#333;background-color:#fff;border-color:#ccc}.foogallery .fg-caption .fg-caption-buttons>a:not(.fg-disabled):hover{color:#333;background-color:#e6e6e6;border-color:#adadad;border-bottom:solid 1px}.foogallery .fg-caption .fg-caption-buttons>a.fg-disabled{color:#9d9d9d}.foogallery .fg-caption .fg-caption-buttons>a.fg-disabled:hover{border-bottom:solid 1px}.foogallery.fg-light-overlays .fg-caption .fg-caption-buttons>a{color:#fff;background-color:#444;border-color:#333}.foogallery.fg-light-overlays .fg-caption .fg-caption-buttons>a:not(.fg-disabled):hover{color:#9d9d9d;background-color:#333;border-color:#222}.foogallery.fg-light-overlays .fg-caption .fg-caption-buttons>a.fg-disabled{color:#9d9d9d}.foogallery.fg-light-overlays .fg-caption .fg-caption-buttons>a.fg-disabled:hover{border-bottom:solid 1px}.foogallery.fg-caption-always .fg-item .fg-caption .fg-caption-inner:before{display:none}.foogallery.fg-caption-always .fg-item.fg-loaded .fg-caption{left:0;bottom:0;transition-timing-function:ease;transition-duration:.3s;transition-property:visibility,opacity;visibility:visible;opacity:1}.foogallery.fg-caption-always .fg-caption{text-align:left}.foogallery.fg-caption-hover .fg-caption .fg-caption-inner{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;max-height:100%;position:absolute;top:50%;left:0;transform:translateY(-50%);padding:.4em}.foogallery.fg-caption-hover .fg-item.fg-loaded .fg-image-overlay{display:none}.foogallery.fg-c-l .fg-caption,.foogallery.fg-caption-always.fg-c-l .fg-caption{text-align:left}.foogallery.fg-c-c .fg-caption,.foogallery.fg-caption-always.fg-c-c .fg-caption{text-align:center}.foogallery.fg-c-r .fg-caption,.foogallery.fg-caption-always.fg-c-r .fg-caption{text-align:right}.foogallery.fg-c-j .fg-caption,.foogallery.fg-caption-always.fg-c-j .fg-caption{text-align:justify}.foogallery .fg-image-overlay:before{content:"";display:block;position:absolute;top:50%;left:50%;transform:translateX(-50%) translateY(-50%);width:32px;height:32px;background-size:32px 32px;background-position:center center;background-repeat:no-repeat;min-width:32px;min-height:32px}.foogallery .fg-caption-inner:before{content:"";display:none;position:relative;width:32px;height:32px;margin:.4em;background-size:32px 32px;vertical-align:middle;background-position:center center;background-repeat:no-repeat;min-width:32px;min-height:32px}.foogallery.fg-hover-cart:not(.fg-preset) .fg-caption-inner:before,.foogallery.fg-hover-circle-plus:not(.fg-preset) .fg-caption-inner:before,.foogallery.fg-hover-external:not(.fg-preset) .fg-caption-inner:before,.foogallery.fg-hover-eye:not(.fg-preset) .fg-caption-inner:before,.foogallery.fg-hover-plus:not(.fg-preset) .fg-caption-inner:before,.foogallery.fg-hover-tint:not(.fg-preset) .fg-caption-inner:before,.foogallery.fg-hover-zoom2:not(.fg-preset) .fg-caption-inner:before,.foogallery.fg-hover-zoom3:not(.fg-preset) .fg-caption-inner:before,.foogallery.fg-hover-zoom:not(.fg-preset) .fg-caption-inner:before,.foogallery.fg-video-1:not(.fg-preset) .fg-caption-inner:before,.foogallery.fg-video-2:not(.fg-preset) .fg-caption-inner:before,.foogallery.fg-video-3:not(.fg-preset) .fg-caption-inner:before,.foogallery.fg-video-4:not(.fg-preset) .fg-caption-inner:before,.foogallery.fg-video-default:not(.fg-preset) .fg-caption-inner:before{display:block}.foogallery.fg-hover-cart:not(.fg-preset) .fg-item-inner:hover .fg-image-overlay,.foogallery.fg-hover-circle-plus:not(.fg-preset) .fg-item-inner:hover .fg-image-overlay,.foogallery.fg-hover-external:not(.fg-preset) .fg-item-inner:hover .fg-image-overlay,.foogallery.fg-hover-eye:not(.fg-preset) .fg-item-inner:hover .fg-image-overlay,.foogallery.fg-hover-plus:not(.fg-preset) .fg-item-inner:hover .fg-image-overlay,.foogallery.fg-hover-tint:not(.fg-preset) .fg-item-inner:hover .fg-image-overlay,.foogallery.fg-hover-zoom2:not(.fg-preset) .fg-item-inner:hover .fg-image-overlay,.foogallery.fg-hover-zoom3:not(.fg-preset) .fg-item-inner:hover .fg-image-overlay,.foogallery.fg-hover-zoom:not(.fg-preset) .fg-item-inner:hover .fg-image-overlay,.foogallery.fg-video-1:not(.fg-preset) .fg-type-video .fg-item-inner:hover .fg-image-overlay,.foogallery.fg-video-2:not(.fg-preset) .fg-type-video .fg-item-inner:hover .fg-image-overlay,.foogallery.fg-video-3:not(.fg-preset) .fg-type-video .fg-item-inner:hover .fg-image-overlay,.foogallery.fg-video-4:not(.fg-preset) .fg-type-video .fg-item-inner:hover .fg-image-overlay,.foogallery.fg-video-default:not(.fg-preset) .fg-type-video .fg-item-inner:hover .fg-image-overlay{visibility:visible;opacity:1}.foogallery.fg-video-sticky .fg-type-video.fg-loaded .fg-item-inner .fg-image-overlay{background-color:transparent;visibility:visible;opacity:1;display:block}.foogallery.fg-video-sticky .fg-type-video .fg-caption-inner:before{display:none}.foogallery.fg-hover-zoom .fg-caption-inner:before,.foogallery.fg-hover-zoom .fg-image-overlay:before{background-image:url('../img/icons.svg#zoom-light')}.foogallery.fg-light-overlays.fg-hover-zoom .fg-caption-inner:before,.foogallery.fg-light-overlays.fg-hover-zoom .fg-image-overlay:before{background-image:url('../img/icons.svg#zoom-dark')}.foogallery.fg-hover-zoom2 .fg-caption-inner:before,.foogallery.fg-hover-zoom2 .fg-image-overlay:before{background-image:url('../img/icons.svg#zoom2-light')}.foogallery.fg-light-overlays.fg-hover-zoom2 .fg-caption-inner:before,.foogallery.fg-light-overlays.fg-hover-zoom2 .fg-image-overlay:before{background-image:url('../img/icons.svg#zoom2-dark')}.foogallery.fg-hover-zoom3 .fg-caption-inner:before,.foogallery.fg-hover-zoom3 .fg-image-overlay:before{background-image:url('../img/icons.svg#zoom3-light')}.foogallery.fg-light-overlays.fg-hover-zoom3 .fg-caption-inner:before,.foogallery.fg-light-overlays.fg-hover-zoom3 .fg-image-overlay:before{background-image:url('../img/icons.svg#zoom3-dark')}.foogallery.fg-hover-plus .fg-caption-inner:before,.foogallery.fg-hover-plus .fg-image-overlay:before{background-image:url('../img/icons.svg#plus-light')}.foogallery.fg-light-overlays.fg-hover-plus .fg-caption-inner:before,.foogallery.fg-light-overlays.fg-hover-plus .fg-image-overlay:before{background-image:url('../img/icons.svg#plus-dark')}.foogallery.fg-hover-circle-plus .fg-caption-inner:before,.foogallery.fg-hover-circle-plus .fg-image-overlay:before{background-image:url('../img/icons.svg#circle-plus-light')}.foogallery.fg-light-overlays.fg-hover-circle-plus .fg-caption-inner:before,.foogallery.fg-light-overlays.fg-hover-circle-plus .fg-image-overlay:before{background-image:url('../img/icons.svg#circle-plus-dark')}.foogallery.fg-hover-eye .fg-caption-inner:before,.foogallery.fg-hover-eye .fg-image-overlay:before{background-image:url('../img/icons.svg#eye-light')}.foogallery.fg-light-overlays.fg-hover-eye .fg-caption-inner:before,.foogallery.fg-light-overlays.fg-hover-eye .fg-image-overlay:before{background-image:url('../img/icons.svg#eye-dark')}.foogallery.fg-hover-external .fg-caption-inner:before,.foogallery.fg-hover-external .fg-image-overlay:before{background-image:url('../img/icons.svg#external-light')}.foogallery.fg-light-overlays.fg-hover-external .fg-caption-inner:before,.foogallery.fg-light-overlays.fg-hover-external .fg-image-overlay:before{background-image:url('../img/icons.svg#external-dark')}.foogallery.fg-hover-cart .fg-caption-inner:before,.foogallery.fg-hover-cart .fg-image-overlay:before{background-image:url('../img/icons.svg#cart-light')}.foogallery.fg-light-overlays.fg-hover-cart .fg-caption-inner:before,.foogallery.fg-light-overlays.fg-hover-cart .fg-image-overlay:before{background-image:url('../img/icons.svg#cart-dark')}.foogallery.fg-video-default .fg-type-video .fg-caption-inner:before,.foogallery.fg-video-default .fg-type-video .fg-image-overlay:before{background-image:url('../img/icons.svg#video-default-light')}.foogallery.fg-light-overlays.fg-video-default .fg-type-video .fg-caption-inner:before,.foogallery.fg-light-overlays.fg-video-default .fg-type-video .fg-image-overlay:before{background-image:url('../img/icons.svg#video-default-dark')}.foogallery.fg-video-1 .fg-type-video .fg-caption-inner:before,.foogallery.fg-video-1 .fg-type-video .fg-image-overlay:before{background-image:url('../img/icons.svg#video-1-light')}.foogallery.fg-light-overlays.fg-video-1 .fg-type-video .fg-caption-inner:before,.foogallery.fg-light-overlays.fg-video-1 .fg-type-video .fg-image-overlay:before{background-image:url('../img/icons.svg#video-1-dark')}.foogallery.fg-video-2 .fg-type-video .fg-caption-inner:before,.foogallery.fg-video-2 .fg-type-video .fg-image-overlay:before{background-image:url('../img/icons.svg#video-2-light')}.foogallery.fg-light-overlays.fg-video-2 .fg-type-video .fg-caption-inner:before,.foogallery.fg-light-overlays.fg-video-2 .fg-type-video .fg-image-overlay:before{background-image:url('../img/icons.svg#video-2-dark')}.foogallery.fg-video-3 .fg-type-video .fg-caption-inner:before,.foogallery.fg-video-3 .fg-type-video .fg-image-overlay:before{background-image:url('../img/icons.svg#video-3-light')}.foogallery.fg-light-overlays.fg-video-3 .fg-type-video .fg-caption-inner:before,.foogallery.fg-light-overlays.fg-video-3 .fg-type-video .fg-image-overlay:before{background-image:url('../img/icons.svg#video-3-dark')}.foogallery.fg-video-4 .fg-type-video .fg-caption-inner:before,.foogallery.fg-video-4 .fg-type-video .fg-image-overlay:before{background-image:url('../img/icons.svg#video-4-light')}.foogallery.fg-light-overlays.fg-video-4 .fg-type-video .fg-caption-inner:before,.foogallery.fg-light-overlays.fg-video-4 .fg-type-video .fg-image-overlay:before{background-image:url('../img/icons.svg#video-4-dark')}.foogallery.fg-caption-hover.fg-hover-colorize .fg-loaded .fg-caption,.foogallery.fg-caption-hover.fg-hover-fade .fg-loaded .fg-caption,.foogallery.fg-caption-hover.fg-hover-grayscale .fg-loaded .fg-caption,.foogallery.fg-caption-hover.fg-hover-instant .fg-loaded .fg-caption,.foogallery.fg-caption-hover.fg-hover-push .fg-loaded .fg-caption,.foogallery.fg-caption-hover.fg-hover-scale .fg-loaded .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-down .fg-loaded .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-left .fg-loaded .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-right .fg-loaded .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-up .fg-loaded .fg-caption,.foogallery.fg-hover-colorize .fg-loaded .fg-image,.foogallery.fg-hover-colorize .fg-loaded .fg-image-overlay,.foogallery.fg-hover-fade .fg-loaded .fg-image-overlay,.foogallery.fg-hover-grayscale .fg-loaded .fg-image,.foogallery.fg-hover-grayscale .fg-loaded .fg-image-overlay,.foogallery.fg-hover-instant .fg-loaded .fg-image-overlay,.foogallery.fg-hover-push .fg-loaded .fg-thumb,.foogallery.fg-hover-scale .fg-item.fg-loaded,.foogallery.fg-hover-scale .fg-loaded .fg-image-overlay,.foogallery.fg-hover-slide-down .fg-loaded .fg-image-overlay,.foogallery.fg-hover-slide-left .fg-loaded .fg-image-overlay,.foogallery.fg-hover-slide-right .fg-loaded .fg-image-overlay,.foogallery.fg-hover-slide-up .fg-loaded .fg-image-overlay,.foogallery.fg-hover-zoomed .fg-loaded .fg-image{transition-timing-function:ease;transition-duration:.3s;backface-visibility:hidden}.foogallery.fg-hover-colorize .fg-image{filter:grayscale(100%);transition-property:filter}.foogallery.fg-hover-colorize .fg-item-inner:focus-within .fg-image,.foogallery.fg-hover-colorize .fg-item-inner:hover .fg-image{filter:grayscale(0%)}.foogallery.fg-caption-hover.fg-hover-colorize .fg-caption,.foogallery.fg-hover-colorize .fg-image-overlay{display:block;left:0;top:0;bottom:0;transition-property:visibility,opacity,background-color}.foogallery.fg-caption-hover.fg-hover-colorize .fg-item-inner:focus-within .fg-caption,.foogallery.fg-caption-hover.fg-hover-colorize .fg-item-inner:hover .fg-caption,.foogallery.fg-hover-colorize .fg-item-inner:focus-within .fg-image-overlay,.foogallery.fg-hover-colorize .fg-item-inner:hover .fg-image-overlay{visibility:visible;opacity:1}.foogallery.fg-caption-hover.fg-hover-fade .fg-loaded .fg-caption,.foogallery.fg-hover-fade .fg-loaded .fg-image-overlay{display:block;left:0;top:0;bottom:0;transition-property:visibility,opacity,background-color}.foogallery.fg-caption-hover.fg-hover-fade .fg-loaded .fg-item-inner:focus-within .fg-caption,.foogallery.fg-caption-hover.fg-hover-fade .fg-loaded .fg-item-inner:hover .fg-caption,.foogallery.fg-hover-fade .fg-loaded .fg-item-inner:focus-within .fg-image-overlay,.foogallery.fg-hover-fade .fg-loaded .fg-item-inner:hover .fg-image-overlay{visibility:visible;opacity:1}.foogallery.fg-hover-grayscale .fg-image{filter:grayscale(0%);transition-property:filter}.foogallery.fg-hover-grayscale .fg-item-inner:focus-within .fg-image,.foogallery.fg-hover-grayscale .fg-item-inner:hover .fg-image{filter:grayscale(100%)}.foogallery.fg-caption-hover.fg-hover-grayscale .fg-caption,.foogallery.fg-hover-grayscale .fg-image-overlay{display:block;left:0;top:0;bottom:0;transition-property:visibility,opacity,background-color}.foogallery.fg-caption-hover.fg-hover-grayscale .fg-item-inner:focus-within .fg-caption,.foogallery.fg-caption-hover.fg-hover-grayscale .fg-item-inner:hover .fg-caption,.foogallery.fg-hover-grayscale .fg-item-inner:focus-within .fg-image-overlay,.foogallery.fg-hover-grayscale .fg-item-inner:hover .fg-image-overlay{visibility:visible;opacity:1}.foogallery.fg-caption-hover.fg-hover-instant .fg-loaded .fg-caption,.foogallery.fg-hover-instant .fg-loaded .fg-image-overlay{display:block;left:0;top:0;bottom:0;transition-property:none}.foogallery.fg-caption-hover.fg-hover-instant .fg-loaded .fg-item-inner:focus-within .fg-caption,.foogallery.fg-caption-hover.fg-hover-instant .fg-loaded .fg-item-inner:hover .fg-caption,.foogallery.fg-hover-instant .fg-loaded .fg-item-inner:focus-within .fg-image-overlay,.foogallery.fg-hover-instant .fg-loaded .fg-item-inner:hover .fg-image-overlay{visibility:visible;opacity:1}.foogallery.fg-caption-hover.fg-hover-push .fg-loaded .fg-caption,.foogallery.fg-hover-push .fg-loaded .fg-image-overlay{display:block;left:0;top:0;bottom:0;transform:translateX(100%);visibility:visible;opacity:1}.foogallery.fg-caption-hover.fg-hover-push .fg-loaded .fg-caption,.foogallery.fg-hover-push .fg-loaded .fg-thumb{transition-property:transform}.foogallery.fg-caption-hover.fg-hover-push .fg-loaded .fg-item-inner:focus-within .fg-caption,.foogallery.fg-caption-hover.fg-hover-push .fg-loaded .fg-item-inner:hover .fg-caption{transform:translateY(0)}.foogallery.fg-caption-hover.fg-hover-push .fg-loaded .fg-item-inner .fg-thumb:focus,.foogallery.fg-caption-hover.fg-hover-push .fg-loaded .fg-item-inner:hover .fg-thumb,.foogallery.fg-hover-push .fg-loaded .fg-item-inner .fg-thumb:focus,.foogallery.fg-hover-push .fg-loaded .fg-item-inner:hover .fg-thumb{transform:translateX(-100%)}.foogallery.fg-hover-scale .fg-item{transition-property:transform;z-index:4}.foogallery.fg-hover-scale .fg-item:focus-within,.foogallery.fg-hover-scale .fg-item:hover{transform:scale(1.048);z-index:10}.foogallery.fg-caption-hover.fg-hover-scale .fg-caption,.foogallery.fg-hover-scale .fg-image-overlay{display:block;left:0;top:0;bottom:0;transition-property:visibility,opacity,background-color}.foogallery.fg-caption-hover.fg-hover-scale .fg-item-inner:focus-within .fg-caption,.foogallery.fg-caption-hover.fg-hover-scale .fg-item-inner:hover .fg-caption,.foogallery.fg-hover-scale .fg-item-inner:focus-within .fg-image-overlay,.foogallery.fg-hover-scale .fg-item-inner:hover .fg-image-overlay{visibility:visible;opacity:1}.foogallery.fg-hover-zoomed .fg-image{transition-property:transform;z-index:4}.foogallery.fg-hover-zoomed .fg-item:focus-within .fg-image,.foogallery.fg-hover-zoomed .fg-item:hover .fg-image{transform:scale(1.15)}.foogallery.fg-hover-zoomed .fg-image-wrap{overflow:hidden}.foogallery.fg-caption-hover.fg-hover-zoomed .fg-caption,.foogallery.fg-hover-zoomed .fg-image-overlay{display:block;left:0;top:0;bottom:0;transition-property:visibility,opacity,background-color}.foogallery.fg-caption-hover.fg-hover-zoomed .fg-item-inner:focus-within .fg-caption,.foogallery.fg-caption-hover.fg-hover-zoomed .fg-item-inner:hover .fg-caption,.foogallery.fg-hover-zoomed .fg-item-inner:focus-within .fg-image-overlay,.foogallery.fg-hover-zoomed .fg-item-inner:hover .fg-image-overlay{visibility:visible;opacity:1}.foogallery.fg-caption-hover.fg-hover-slide-down .fg-loaded .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-left .fg-loaded .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-right .fg-loaded .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-up .fg-loaded .fg-caption,.foogallery.fg-hover-slide-down .fg-loaded .fg-image-overlay,.foogallery.fg-hover-slide-left .fg-loaded .fg-image-overlay,.foogallery.fg-hover-slide-right .fg-loaded .fg-image-overlay,.foogallery.fg-hover-slide-up .fg-loaded .fg-image-overlay{display:block;left:0;top:0;bottom:0;transition-property:transform,background-color,opacity,visibility;visibility:visible;opacity:1}.foogallery.fg-caption-hover.fg-hover-slide-down .fg-loaded .fg-item-inner:focus-within .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-down .fg-loaded .fg-item-inner:hover .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-left .fg-loaded .fg-item-inner:focus-within .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-left .fg-loaded .fg-item-inner:hover .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-right .fg-loaded .fg-item-inner:focus-within .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-right .fg-loaded .fg-item-inner:hover .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-up .fg-loaded .fg-item-inner:focus-within .fg-caption,.foogallery.fg-caption-hover.fg-hover-slide-up .fg-loaded .fg-item-inner:hover .fg-caption,.foogallery.fg-hover-slide-down .fg-loaded .fg-item-inner:focus-within .fg-image-overlay,.foogallery.fg-hover-slide-down .fg-loaded .fg-item-inner:hover .fg-image-overlay,.foogallery.fg-hover-slide-left .fg-loaded .fg-item-inner:focus-within .fg-image-overlay,.foogallery.fg-hover-slide-left .fg-loaded .fg-item-inner:hover .fg-image-overlay,.foogallery.fg-hover-slide-right .fg-loaded .fg-item-inner:focus-within .fg-image-overlay,.foogallery.fg-hover-slide-right .fg-loaded .fg-item-inner:hover .fg-image-overlay,.foogallery.fg-hover-slide-up .fg-loaded .fg-item-inner:focus-within .fg-image-overlay,.foogallery.fg-hover-slide-up .fg-loaded .fg-item-inner:hover .fg-image-overlay{transform:translateY(0) translateX(0)}.foogallery.fg-caption-hover.fg-hover-slide-up .fg-loaded .fg-caption,.foogallery.fg-hover-slide-up .fg-loaded .fg-image-overlay{transform:translateY(100%)}.foogallery.fg-caption-hover.fg-hover-slide-down .fg-loaded .fg-caption,.foogallery.fg-hover-slide-down .fg-loaded .fg-image-overlay{transform:translateY(-100%)}.foogallery.fg-caption-hover.fg-hover-slide-left .fg-loaded .fg-caption,.foogallery.fg-hover-slide-left .fg-loaded .fg-image-overlay{transform:translateX(100%)}.foogallery.fg-caption-hover.fg-hover-slide-right .fg-loaded .fg-caption,.foogallery.fg-hover-slide-right .fg-loaded .fg-image-overlay{transform:translateX(-100%)}.fg-paging-container,.fg-paging-container *,.fg-paging-container :after,.fg-paging-container :before{box-sizing:border-box}.fg-paging-container{display:block;padding:15px;margin-top:0!important;margin-bottom:0!important;margin-left:auto;margin-right:auto;text-align:center;font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.fg-ph-dots:after{display:block;content:'';width:0;height:22px}.fg-paging-container .fg-dot-item,.fg-paging-container .fg-dots{display:inline-block;margin:0;padding:0;outline:0;list-style:none}.fg-paging-container .fg-dot-item .fg-dot-link{display:inline-block;margin:3px;font-weight:400;line-height:1.4;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;user-select:none;background-image:none;text-decoration:none;border:1px solid transparent;position:relative;border-radius:50%;padding:0;font-size:0;outline:0;color:transparent;box-shadow:none}.fg-paging-container .fg-dot-item .fg-dot-link:before{content:"";background-color:transparent;border:1px solid transparent;display:block;border-radius:50%;width:9px;height:9px;padding:0;margin:2px}.fg-paging-container .fg-dot-item .fg-dot-link:active,.fg-paging-container .fg-dot-item .fg-dot-link:focus,.fg-paging-container .fg-dot-item .fg-dot-link:hover{text-decoration:none;box-shadow:none;outline:0}.fg-paging-container .fg-dot-item.fg-disabled .fg-dot-link,.fg-paging-container .fg-dot-item.fg-selected .fg-dot-link{cursor:not-allowed;pointer-events:none}.fg-paging-container .fg-dot-item.fg-disabled .fg-dot-link{cursor:not-allowed;pointer-events:none;outline:0}.fg-paging-container.fg-light .fg-dot-item .fg-dot-link,.fg-paging-container.fg-light .fg-dot-item .fg-dot-link:before{transition-timing-function:ease-out;transition-duration:.3s;transition-property:color,border-color,background-color}.fg-paging-container.fg-light .fg-dot-item .fg-dot-link{background-color:#eee;border-color:#9d9d9d}.fg-paging-container.fg-light .fg-dot-item.fg-selected .fg-dot-link{border-color:#888}.fg-paging-container.fg-light .fg-dot-item .fg-dot-link:focus:before,.fg-paging-container.fg-light .fg-dot-item .fg-dot-link:hover:before,.fg-paging-container.fg-light .fg-dot-item.fg-selected .fg-dot-link:before{background-color:#666;border-color:#888}.fg-paging-container.fg-light .fg-dot-item.fg-disabled .fg-dot-link,.fg-paging-container.fg-light .fg-dot-item.fg-disabled .fg-dot-link:focus,.fg-paging-container.fg-light .fg-dot-item.fg-disabled .fg-dot-link:hover{background-color:#eee;border-color:#9d9d9d;opacity:.5}.fg-paging-container.fg-dark .fg-dot-item .fg-dot-link,.fg-paging-container.fg-dark .fg-dot-item .fg-dot-link:before{transition-timing-function:ease-out;transition-duration:.3s;transition-property:color,border-color,background-color}.fg-paging-container.fg-dark .fg-dot-item .fg-dot-link{background-color:#666;border-color:#333}.fg-paging-container.fg-dark .fg-dot-item.fg-selected .fg-dot-link{border-color:#444}.fg-paging-container.fg-dark .fg-dot-item .fg-dot-link:focus:before,.fg-paging-container.fg-dark .fg-dot-item .fg-dot-link:hover:before,.fg-paging-container.fg-dark .fg-dot-item.fg-selected .fg-dot-link:before{background-color:#333;border-color:#444}.fg-paging-container.fg-dark .fg-dot-item.fg-disabled .fg-dot-link,.fg-paging-container.fg-dark .fg-dot-item.fg-disabled .fg-dot-link:focus,.fg-paging-container.fg-dark .fg-dot-item.fg-disabled .fg-dot-link:hover{background-color:#666;border-color:#333;opacity:.5}.fg-paging-container,.fg-paging-container *,.fg-paging-container :after,.fg-paging-container :before{box-sizing:border-box}.fg-paging-container{display:block;padding:15px;margin-top:0!important;margin-bottom:0!important;margin-left:auto;margin-right:auto;text-align:center;font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.fg-ph-dots:after{display:block;content:'';width:0;height:22px}.fg-paging-container .fg-dot-item,.fg-paging-container .fg-dots{display:inline-block;margin:0;padding:0;outline:0;list-style:none}.fg-paging-container .fg-dot-item .fg-dot-link{display:inline-block;margin:3px;font-weight:400;line-height:1.4;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;user-select:none;background-image:none;text-decoration:none;border:1px solid transparent;position:relative;border-radius:50%;padding:0;font-size:0;outline:0;color:transparent;box-shadow:none}.fg-paging-container .fg-dot-item .fg-dot-link:before{content:"";background-color:transparent;border:1px solid transparent;display:block;border-radius:50%;width:9px;height:9px;padding:0;margin:2px}.fg-paging-container .fg-dot-item .fg-dot-link:active,.fg-paging-container .fg-dot-item .fg-dot-link:focus,.fg-paging-container .fg-dot-item .fg-dot-link:hover{text-decoration:none;box-shadow:none;outline:0}.fg-paging-container .fg-dot-item.fg-disabled .fg-dot-link,.fg-paging-container .fg-dot-item.fg-selected .fg-dot-link{cursor:not-allowed;pointer-events:none}.fg-paging-container .fg-dot-item.fg-disabled .fg-dot-link{cursor:not-allowed;pointer-events:none;outline:0}.fg-paging-container.fg-light .fg-dot-item .fg-dot-link,.fg-paging-container.fg-light .fg-dot-item .fg-dot-link:before{transition-timing-function:ease-out;transition-duration:.3s;transition-property:color,border-color,background-color}.fg-paging-container.fg-light .fg-dot-item .fg-dot-link{background-color:#eee;border-color:#9d9d9d}.fg-paging-container.fg-light .fg-dot-item.fg-selected .fg-dot-link{border-color:#888}.fg-paging-container.fg-light .fg-dot-item .fg-dot-link:focus:before,.fg-paging-container.fg-light .fg-dot-item .fg-dot-link:hover:before,.fg-paging-container.fg-light .fg-dot-item.fg-selected .fg-dot-link:before{background-color:#666;border-color:#888}.fg-paging-container.fg-light .fg-dot-item.fg-disabled .fg-dot-link,.fg-paging-container.fg-light .fg-dot-item.fg-disabled .fg-dot-link:focus,.fg-paging-container.fg-light .fg-dot-item.fg-disabled .fg-dot-link:hover{background-color:#eee;border-color:#9d9d9d;opacity:.5}.fg-paging-container.fg-dark .fg-dot-item .fg-dot-link,.fg-paging-container.fg-dark .fg-dot-item .fg-dot-link:before{transition-timing-function:ease-out;transition-duration:.3s;transition-property:color,border-color,background-color}.fg-paging-container.fg-dark .fg-dot-item .fg-dot-link{background-color:#666;border-color:#333}.fg-paging-container.fg-dark .fg-dot-item.fg-selected .fg-dot-link{border-color:#444}.fg-paging-container.fg-dark .fg-dot-item .fg-dot-link:focus:before,.fg-paging-container.fg-dark .fg-dot-item .fg-dot-link:hover:before,.fg-paging-container.fg-dark .fg-dot-item.fg-selected .fg-dot-link:before{background-color:#333;border-color:#444}.fg-paging-container.fg-dark .fg-dot-item.fg-disabled .fg-dot-link,.fg-paging-container.fg-dark .fg-dot-item.fg-disabled .fg-dot-link:focus,.fg-paging-container.fg-dark .fg-dot-item.fg-disabled .fg-dot-link:hover{background-color:#666;border-color:#333;opacity:.5}.fg-default:after{content:'';display:block;clear:both}.fg-default .fg-item{display:inline-block;vertical-align:top;max-width:100%}.fg-default .fg-item-inner,.fg-default .fg-thumb{display:block;vertical-align:top;max-width:100%}.fg-default .fg-image{border-radius:0;display:block;max-width:100%;height:auto;margin:0;padding:0}.fg-default .fg-image{vertical-align:top}.fg-default.fg-left{text-align:left}.fg-default.fg-center{text-align:center}.fg-default.fg-right{text-align:right}.fg-default.fg-gutter-5{padding-left:5px;margin-bottom:-5px}.fg-default.fg-gutter-5 .fg-item{margin-right:5px;margin-bottom:5px}.fg-default.fg-gutter-10{padding-left:10px;margin-bottom:-10px}.fg-default.fg-gutter-10 .fg-item{margin-right:10px;margin-bottom:10px}.fg-default.fg-gutter-15{padding-left:15px;margin-bottom:-15px}.fg-default.fg-gutter-15 .fg-item{margin-right:15px;margin-bottom:15px}.fg-default.fg-gutter-20{padding-left:20px;margin-bottom:-20px}.fg-default.fg-gutter-20 .fg-item{margin-right:20px;margin-bottom:20px}.fg-default.fg-gutter-25{padding-left:25px;margin-bottom:-25px}.fg-default.fg-gutter-25 .fg-item{margin-right:25px;margin-bottom:25px}@media only screen and (max-width:600px){.fg-default.fg-m-col1 .fg-image,.fg-default.fg-m-col2 .fg-image,.fg-default.fg-m-col3 .fg-image{width:100%}.fg-default.fg-m-col1.fg-gutter-5 .fg-item{width:calc(100% - 10px);min-width:calc(100% - 10px);max-width:calc(100% - 10px)}.fg-default.fg-m-col2.fg-gutter-5 .fg-item{width:calc(50% - 10px);min-width:calc(50% - 10px);max-width:calc(50% - 10px)}.fg-default.fg-m-col3.fg-gutter-5 .fg-item{width:calc(33.33% - 10px);min-width:calc(33.33% - 10px);max-width:calc(33.33% - 10px)}.fg-default.fg-m-col1.fg-gutter-10 .fg-item{width:calc(100% - 20px);min-width:calc(100% - 20px);max-width:calc(100% - 20px)}.fg-default.fg-m-col2.fg-gutter-10 .fg-item{width:calc(50% - 20px);min-width:calc(50% - 20px);max-width:calc(50% - 20px)}.fg-default.fg-m-col3.fg-gutter-10 .fg-item{width:calc(33.33% - 20px);min-width:calc(33.33% - 20px);max-width:calc(33.33% - 20px)}.fg-default.fg-m-col1.fg-gutter-15 .fg-item{width:calc(100% - 30px);min-width:calc(100% - 30px);max-width:calc(100% - 30px)}.fg-default.fg-m-col2.fg-gutter-15 .fg-item{width:calc(50% - 30px);min-width:calc(50% - 30px);max-width:calc(50% - 30px)}.fg-default.fg-m-col3.fg-gutter-15 .fg-item{width:calc(33.33% - 30px);min-width:calc(33.33% - 30px);max-width:calc(33.33% - 30px)}.fg-default.fg-m-col1.fg-gutter-20 .fg-item{width:calc(100% - 40px);min-width:calc(100% - 40px);max-width:calc(100% - 40px)}.fg-default.fg-m-col2.fg-gutter-20 .fg-item{width:calc(50% - 40px);min-width:calc(50% - 40px);max-width:calc(50% - 40px)}.fg-default.fg-m-col3.fg-gutter-20 .fg-item{width:calc(33.33% - 40px);min-width:calc(33.33% - 40px);max-width:calc(33.33% - 40px)}.fg-default.fg-m-col1.fg-gutter-25 .fg-item{width:calc(100% - 50px);min-width:calc(100% - 50px);max-width:calc(100% - 50px)}.fg-default.fg-m-col2.fg-gutter-25 .fg-item{width:calc(50% - 50px);min-width:calc(50% - 50px);max-width:calc(50% - 50px)}.fg-default.fg-m-col3.fg-gutter-25 .fg-item{width:calc(33.33% - 50px);min-width:calc(33.33% - 50px);max-width:calc(33.33% - 50px)}}.fg-masonry *{box-sizing:border-box}.foogallery.fg-masonry{margin:0 auto;text-align:center}.fg-masonry .fg-thumb{display:block}.fg-masonry.fg-fixed .fg-column-width,.fg-masonry.fg-fixed .fg-image,.fg-masonry.fg-fixed .fg-item{max-width:100%}.fg-masonry .fg-column-width{display:inline-block;border:solid 0 transparent}.fg-masonry .fg-column-width,.fg-masonry .fg-gutter-width{position:absolute;height:0;visibility:hidden;opacity:0;pointer-events:none}.fg-masonry.fg-col2 .fg-item .fg-image,.fg-masonry.fg-col3 .fg-item .fg-image,.fg-masonry.fg-col4 .fg-item .fg-image,.fg-masonry.fg-col5 .fg-item .fg-image,.fg-masonry.fg-col6 .fg-item .fg-image,.fg-masonry.fg-fixed .fg-item .fg-image{width:100%;height:auto;max-width:100%}.fg-masonry .fg-item{line-height:0;font-size:0;vertical-align:top}.fg-masonry.fg-col2 .fg-item{margin-bottom:1%;width:49.5%}.fg-masonry.fg-col2 .fg-column-width{width:49.5%}.fg-masonry.fg-col2 .fg-gutter-width{width:1%}.fg-masonry.fg-col2.fg-gutter-none .fg-item{margin-bottom:0;width:50%}.fg-masonry.fg-col2.fg-gutter-none .fg-column-width{width:50%}.fg-masonry.fg-col2.fg-gutter-none .fg-gutter-width{width:0}.fg-masonry.fg-col2.fg-gutter-large .fg-item{margin-bottom:3%;width:48.5%}.fg-masonry.fg-col2.fg-gutter-large .fg-column-width{width:48.5%}.fg-masonry.fg-col2.fg-gutter-large .fg-gutter-width{width:3%}.fg-masonry.fg-col3 .fg-item{margin-bottom:1%;width:32.66%}.fg-masonry.fg-col3 .fg-column-width{width:32.66%}.fg-masonry.fg-col3 .fg-gutter-width{width:1%}.fg-masonry.fg-col3.fg-gutter-none .fg-item{margin-bottom:0;width:33.33%}.fg-masonry.fg-col3.fg-gutter-none .fg-column-width{width:33.33%}.fg-masonry.fg-col3.fg-gutter-none .fg-gutter-width{width:0}.fg-masonry.fg-col3.fg-gutter-large .fg-item{margin-bottom:3%;width:31.33%}.fg-masonry.fg-col3.fg-gutter-large .fg-column-width{width:31.33%}.fg-masonry.fg-col3.fg-gutter-large .fg-gutter-width{width:3%}.fg-masonry.fg-col4 .fg-item{margin-bottom:1%;width:24.25%}.fg-masonry.fg-col4 .fg-column-width{width:24.25%}.fg-masonry.fg-col4 .fg-gutter-width{width:1%}.fg-masonry.fg-col4.fg-gutter-none .fg-item{margin-bottom:0;width:25%}.fg-masonry.fg-col4.fg-gutter-none .fg-column-width{width:25%}.fg-masonry.fg-col4.fg-gutter-none .fg-gutter-width{width:0}.fg-masonry.fg-col4.fg-gutter-large .fg-item{margin-bottom:3%;width:22.75%}.fg-masonry.fg-col4.fg-gutter-large .fg-column-width{width:22.75%}.fg-masonry.fg-col4.fg-gutter-large .fg-gutter-width{width:3%}.fg-masonry.fg-col5 .fg-item{margin-bottom:1%;width:19.2%}.fg-masonry.fg-col5 .fg-column-width{width:19.2%}.fg-masonry.fg-col5 .fg-gutter-width{width:1%}.fg-masonry.fg-col5.fg-gutter-none .fg-item{margin-bottom:0;width:20%}.fg-masonry.fg-col5.fg-gutter-none .fg-column-width{width:20%}.fg-masonry.fg-col5.fg-gutter-none .fg-gutter-width{width:0}.fg-masonry.fg-col5.fg-gutter-large .fg-item{margin-bottom:3%;width:17.6%}.fg-masonry.fg-col5.fg-gutter-large .fg-column-width{width:17.6%}.fg-masonry.fg-col5.fg-gutter-large .fg-gutter-width{width:3%}.fg-masonry.fg-col6 .fg-item{margin-bottom:1%;width:15.83%}.fg-masonry.fg-col6 .fg-column-width{width:15.83%}.fg-masonry.fg-col6 .fg-gutter-width{width:1%}.fg-masonry.fg-col6.fg-gutter-none .fg-item{margin-bottom:0;width:16.66%}.fg-masonry.fg-col6.fg-gutter-none .fg-column-width{width:16.66%}.fg-masonry.fg-col6.fg-gutter-none .fg-gutter-width{width:0}.fg-masonry.fg-col6.fg-gutter-large .fg-item{margin-bottom:3%;width:14.16%}.fg-masonry.fg-col6.fg-gutter-large .fg-column-width{width:14.16%}.fg-masonry.fg-col6.fg-gutter-large .fg-gutter-width{width:3%}@media screen and (max-width:1280px){.fg-masonry.fg-col6 .fg-item{margin-bottom:1%;width:19.2%}.fg-masonry.fg-col6 .fg-column-width{width:19.2%}.fg-masonry.fg-col6 .fg-gutter-width{width:1%}.fg-masonry.fg-col6.fg-gutter-none .fg-item{margin-bottom:0;width:20%}.fg-masonry.fg-col6.fg-gutter-none .fg-column-width{width:20%}.fg-masonry.fg-col6.fg-gutter-none .fg-gutter-width{width:0}.fg-masonry.fg-col6.fg-gutter-large .fg-item{margin-bottom:3%;width:17.6%}.fg-masonry.fg-col6.fg-gutter-large .fg-column-width{width:17.6%}.fg-masonry.fg-col6.fg-gutter-large .fg-gutter-width{width:3%}}@media screen and (max-width:1024px){.fg-masonry.fg-col5 .fg-item,.fg-masonry.fg-col6 .fg-item{margin-bottom:1%;width:24.25%}.fg-masonry.fg-col5 .fg-column-width,.fg-masonry.fg-col6 .fg-column-width{width:24.25%}.fg-masonry.fg-col5 .fg-gutter-width,.fg-masonry.fg-col6 .fg-gutter-width{width:1%}.fg-masonry.fg-col5.fg-gutter-none .fg-item,.fg-masonry.fg-col6.fg-gutter-none .fg-item{margin-bottom:0;width:25%}.fg-masonry.fg-col5.fg-gutter-none .fg-column-width,.fg-masonry.fg-col6.fg-gutter-none .fg-column-width{width:25%}.fg-masonry.fg-col5.fg-gutter-none .fg-gutter-width,.fg-masonry.fg-col6.fg-gutter-none .fg-gutter-width{width:0}.fg-masonry.fg-col5.fg-gutter-large .fg-item,.fg-masonry.fg-col6.fg-gutter-large .fg-item{margin-bottom:3%;width:22.75%}.fg-masonry.fg-col5.fg-gutter-large .fg-column-width,.fg-masonry.fg-col6.fg-gutter-large .fg-column-width{width:22.75%}.fg-masonry.fg-col5.fg-gutter-large .fg-gutter-width,.fg-masonry.fg-col6.fg-gutter-large .fg-gutter-width{width:3%}}@media screen and (max-width:720px){.fg-masonry.fg-col4 .fg-item,.fg-masonry.fg-col5 .fg-item,.fg-masonry.fg-col6 .fg-item{margin-bottom:1%;width:32.66%}.fg-masonry.fg-col4 .fg-column-width,.fg-masonry.fg-col5 .fg-column-width,.fg-masonry.fg-col6 .fg-column-width{width:32.66%}.fg-masonry.fg-col4 .fg-gutter-width,.fg-masonry.fg-col5 .fg-gutter-width,.fg-masonry.fg-col6 .fg-gutter-width{width:1%}.fg-masonry.fg-col4.fg-gutter-none .fg-item,.fg-masonry.fg-col5.fg-gutter-none .fg-item,.fg-masonry.fg-col6.fg-gutter-none .fg-item{margin-bottom:0;width:33.33%}.fg-masonry.fg-col4.fg-gutter-none .fg-column-width,.fg-masonry.fg-col5.fg-gutter-none .fg-column-width,.fg-masonry.fg-col6.fg-gutter-none .fg-column-width{width:33.33%}.fg-masonry.fg-col4.fg-gutter-none .fg-gutter-width,.fg-masonry.fg-col5.fg-gutter-none .fg-gutter-width,.fg-masonry.fg-col6.fg-gutter-none .fg-gutter-width{width:0}.fg-masonry.fg-col4.fg-gutter-large .fg-item,.fg-masonry.fg-col5.fg-gutter-large .fg-item,.fg-masonry.fg-col6.fg-gutter-large .fg-item{margin-bottom:3%;width:31.33%}.fg-masonry.fg-col4.fg-gutter-large .fg-column-width,.fg-masonry.fg-col5.fg-gutter-large .fg-column-width,.fg-masonry.fg-col6.fg-gutter-large .fg-column-width{width:31.33%}.fg-masonry.fg-col4.fg-gutter-large .fg-gutter-width,.fg-masonry.fg-col5.fg-gutter-large .fg-gutter-width,.fg-masonry.fg-col6.fg-gutter-large .fg-gutter-width{width:3%}}@media screen and (max-width:480px){.fg-masonry.fg-col3 .fg-item,.fg-masonry.fg-col4 .fg-item,.fg-masonry.fg-col5 .fg-item,.fg-masonry.fg-col6 .fg-item{margin-bottom:1%;width:49.5%}.fg-masonry.fg-col3 .fg-column-width,.fg-masonry.fg-col4 .fg-column-width,.fg-masonry.fg-col5 .fg-column-width,.fg-masonry.fg-col6 .fg-column-width{width:49.5%}.fg-masonry.fg-col3 .fg-gutter-width,.fg-masonry.fg-col4 .fg-gutter-width,.fg-masonry.fg-col5 .fg-gutter-width,.fg-masonry.fg-col6 .fg-gutter-width{width:1%}.fg-masonry.fg-col3.fg-gutter-none .fg-item,.fg-masonry.fg-col4.fg-gutter-none .fg-item,.fg-masonry.fg-col5.fg-gutter-none .fg-item,.fg-masonry.fg-col6.fg-gutter-none .fg-item{margin-bottom:0;width:50%}.fg-masonry.fg-col3.fg-gutter-none .fg-column-width,.fg-masonry.fg-col4.fg-gutter-none .fg-column-width,.fg-masonry.fg-col5.fg-gutter-none .fg-column-width,.fg-masonry.fg-col6.fg-gutter-none .fg-column-width{width:50%}.fg-masonry.fg-col3.fg-gutter-none .fg-gutter-width,.fg-masonry.fg-col4.fg-gutter-none .fg-gutter-width,.fg-masonry.fg-col5.fg-gutter-none .fg-gutter-width,.fg-masonry.fg-col6.fg-gutter-none .fg-gutter-width{width:0}.fg-masonry.fg-col3.fg-gutter-large .fg-item,.fg-masonry.fg-col4.fg-gutter-large .fg-item,.fg-masonry.fg-col5.fg-gutter-large .fg-item,.fg-masonry.fg-col6.fg-gutter-large .fg-item{margin-bottom:3%;width:48.5%}.fg-masonry.fg-col3.fg-gutter-large .fg-column-width,.fg-masonry.fg-col4.fg-gutter-large .fg-column-width,.fg-masonry.fg-col5.fg-gutter-large .fg-column-width,.fg-masonry.fg-col6.fg-gutter-large .fg-column-width{width:48.5%}.fg-masonry.fg-col3.fg-gutter-large .fg-gutter-width,.fg-masonry.fg-col4.fg-gutter-large .fg-gutter-width,.fg-masonry.fg-col5.fg-gutter-large .fg-gutter-width,.fg-masonry.fg-col6.fg-gutter-large .fg-gutter-width{width:3%}}@media screen and (max-width:320px){.fg-masonry.fg-col2 .fg-item,.fg-masonry.fg-col3 .fg-item,.fg-masonry.fg-col4 .fg-item,.fg-masonry.fg-col5 .fg-item,.fg-masonry.fg-col6 .fg-item{margin-bottom:1%;width:100%}.fg-masonry.fg-col2 .fg-column-width,.fg-masonry.fg-col3 .fg-column-width,.fg-masonry.fg-col4 .fg-column-width,.fg-masonry.fg-col5 .fg-column-width,.fg-masonry.fg-col6 .fg-column-width{width:100%}.fg-masonry.fg-col2 .fg-gutter-width,.fg-masonry.fg-col3 .fg-gutter-width,.fg-masonry.fg-col4 .fg-gutter-width,.fg-masonry.fg-col5 .fg-gutter-width,.fg-masonry.fg-col6 .fg-gutter-width{width:0}.fg-masonry.fg-col2.fg-gutter-none .fg-item,.fg-masonry.fg-col3.fg-gutter-none .fg-item,.fg-masonry.fg-col4.fg-gutter-none .fg-item,.fg-masonry.fg-col5.fg-gutter-none .fg-item,.fg-masonry.fg-col6.fg-gutter-none .fg-item{margin-bottom:0;width:100%}.fg-masonry.fg-col2.fg-gutter-none .fg-column-width,.fg-masonry.fg-col3.fg-gutter-none .fg-column-width,.fg-masonry.fg-col4.fg-gutter-none .fg-column-width,.fg-masonry.fg-col5.fg-gutter-none .fg-column-width,.fg-masonry.fg-col6.fg-gutter-none .fg-column-width{width:100%}.fg-masonry.fg-col2.fg-gutter-none .fg-gutter-width,.fg-masonry.fg-col3.fg-gutter-none .fg-gutter-width,.fg-masonry.fg-col4.fg-gutter-none .fg-gutter-width,.fg-masonry.fg-col5.fg-gutter-none .fg-gutter-width,.fg-masonry.fg-col6.fg-gutter-none .fg-gutter-width{width:0}.fg-masonry.fg-col2.fg-gutter-large .fg-item,.fg-masonry.fg-col3.fg-gutter-large .fg-item,.fg-masonry.fg-col4.fg-gutter-large .fg-item,.fg-masonry.fg-col5.fg-gutter-large .fg-item,.fg-masonry.fg-col6.fg-gutter-large .fg-item{margin-bottom:3%;width:100%}.fg-masonry.fg-col2.fg-gutter-large .fg-column-width,.fg-masonry.fg-col3.fg-gutter-large .fg-column-width,.fg-masonry.fg-col4.fg-gutter-large .fg-column-width,.fg-masonry.fg-col5.fg-gutter-large .fg-column-width,.fg-masonry.fg-col6.fg-gutter-large .fg-column-width{width:100%}.fg-masonry.fg-col2.fg-gutter-large .fg-gutter-width,.fg-masonry.fg-col3.fg-gutter-large .fg-gutter-width,.fg-masonry.fg-col4.fg-gutter-large .fg-gutter-width,.fg-masonry.fg-col5.fg-gutter-large .fg-gutter-width,.fg-masonry.fg-col6.fg-gutter-large .fg-gutter-width{width:0}}.foogallery.fg-border-thin .fg-column-width{border-width:4px}.foogallery.fg-border-medium .fg-column-width{border-width:10px}.foogallery.fg-border-thick .fg-column-width{border-width:16px}.foogallery.fg-masonry.fg-captions-bottom .fg-item-inner .fg-caption{visibility:visible;opacity:1;font-size:13px;position:relative;display:block;top:auto;bottom:auto;left:auto;right:auto;width:auto;height:auto;text-transform:none;transform:none;transition:none;background-color:transparent;border-style:solid;border-color:transparent;text-align:left}.foogallery.fg-masonry.fg-captions-bottom.fg-c-l .fg-item-inner .fg-caption{text-align:left}.foogallery.fg-masonry.fg-captions-bottom.fg-c-c .fg-item-inner .fg-caption{text-align:center}.foogallery.fg-masonry.fg-captions-bottom.fg-c-r .fg-item-inner .fg-caption{text-align:right}.foogallery.fg-masonry.fg-captions-bottom.fg-c-j .fg-item-inner .fg-caption{text-align:justify}.foogallery.fg-masonry.fg-captions-bottom .fg-item-inner:hover .fg-caption{transform:none;transition:none}.foogallery.fg-masonry.fg-captions-bottom .fg-item-inner .fg-caption-inner{display:block;position:relative;max-height:none;top:auto;bottom:auto;left:auto;right:auto;width:auto;height:auto;border:none;transform:none;transition:none}.foogallery.fg-masonry.fg-captions-bottom .fg-item-inner .fg-caption-inner:before{display:none}.foogallery.fg-masonry.fg-captions-bottom.fg-caption-hover .fg-item-inner .fg-image-overlay{display:block}.foogallery.fg-masonry.fg-captions-bottom.fg-caption-always .fg-item-inner:hover .fg-caption{visibility:visible;opacity:1}.fg-masonry.fg-captions-bottom.fg-dark .fg-caption,.fg-masonry.fg-captions-bottom.fg-light .fg-caption{color:#828282}.fg-masonry.fg-captions-bottom.fg-dark .fg-caption a,.fg-masonry.fg-captions-bottom.fg-light .fg-caption a{color:#828282;border-bottom:1px solid #828282}.fg-masonry.fg-captions-bottom.fg-dark .fg-caption a:hover,.fg-masonry.fg-captions-bottom.fg-light .fg-caption a:hover{border-bottom:none}.fg-masonry.fg-captions-bottom.fg-light .fg-caption-title,.fg-masonry.fg-captions-bottom.fg-light .fg-caption-title a{color:#222}.fg-masonry.fg-captions-bottom.fg-dark .fg-caption-title,.fg-masonry.fg-captions-bottom.fg-dark .fg-caption-title a{color:#fff}.fg-masonry.fg-captions-bottom.fg-light .fg-caption-title a{border-bottom:1px solid #222}.fg-masonry.fg-captions-bottom.fg-dark .fg-caption-title a{border-bottom:1px solid #fff}.fg-masonry.fg-captions-bottom .fg-caption{border-width:10px}.fg-masonry.fg-captions-bottom .fg-caption-title+.fg-caption-desc{margin-top:4px}.fg-masonry.fg-captions-bottom.fg-border-thin .fg-caption{border-width:10px 4px 4px 4px}.fg-masonry.fg-captions-bottom.fg-border-medium .fg-caption{border-width:10px 0 0 0}.fg-masonry.fg-captions-bottom.fg-border-thick .fg-caption{border-width:16px 0 0 0}.fg-masonry.fg-captions-bottom.fg-border-thick .fg-caption-title+.fg-caption-desc{margin-top:10px}.fg-masonry.fg-transparent .fg-item-inner{background-color:transparent;color:#333;border-color:transparent}.fg-masonry.fg-transparent .fg-caption{color:#7f7f7f}.fg-masonry.fg-transparent.fg-captions-bottom .fg-caption{border-width:0;border-top-width:10px;border-bottom-width:10px}.fg-masonry.fg-transparent .fg-caption a{color:#7f7f7f;border-bottom:1px solid #7f7f7f}.fg-masonry.fg-transparent .fg-caption a:hover{border-bottom:none}.fg-masonry.fg-transparent .fg-caption-title,.fg-masonry.fg-transparent .fg-caption-title a{color:#333}.fg-masonry.fg-transparent .fg-caption-title a{border-bottom:1px solid #333}.fg-masonry.fg-transparent.fg-round-full .fg-item,.fg-masonry.fg-transparent.fg-round-full .fg-item-inner{border-radius:15px}.fg-masonry.fg-transparent.fg-round-full .fg-image-overlay,.fg-masonry.fg-transparent.fg-round-full .fg-image-wrap,.fg-masonry.fg-transparent.fg-round-full.fg-shadow-inset-large .fg-thumb:after,.fg-masonry.fg-transparent.fg-round-full.fg-shadow-inset-medium .fg-thumb:after,.fg-masonry.fg-transparent.fg-round-full.fg-shadow-inset-small .fg-thumb:after{border-radius:50%;overflow:hidden}.fg-masonry.fg-transparent.fg-round-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-overlay,.fg-masonry.fg-transparent.fg-round-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-wrap,.fg-masonry.fg-transparent.fg-round-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-overlay,.fg-masonry.fg-transparent.fg-round-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-wrap,.fg-masonry.fg-transparent.fg-round-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-overlay,.fg-masonry.fg-transparent.fg-round-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-wrap{overflow:hidden}.fg-masonry.fg-transparent.fg-round-small.fg-shadow-inset-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,.fg-masonry.fg-transparent.fg-round-small.fg-shadow-inset-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,.fg-masonry.fg-transparent.fg-round-small.fg-shadow-inset-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,.fg-masonry.fg-transparent.fg-round-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-overlay,.fg-masonry.fg-transparent.fg-round-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-wrap{border-radius:5px}.fg-masonry.fg-transparent.fg-round-medium.fg-shadow-inset-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,.fg-masonry.fg-transparent.fg-round-medium.fg-shadow-inset-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,.fg-masonry.fg-transparent.fg-round-medium.fg-shadow-inset-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,.fg-masonry.fg-transparent.fg-round-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-overlay,.fg-masonry.fg-transparent.fg-round-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-wrap{border-radius:10px}.fg-masonry.fg-transparent.fg-round-large.fg-shadow-inset-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,.fg-masonry.fg-transparent.fg-round-large.fg-shadow-inset-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,.fg-masonry.fg-transparent.fg-round-large.fg-shadow-inset-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,.fg-masonry.fg-transparent.fg-round-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-overlay,.fg-masonry.fg-transparent.fg-round-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-wrap{border-radius:15px}.fg-masonry.fg-transparent.fg-shadow-inset-small .fg-thumb:after{box-shadow:inset 0 1px 4px 0 rgba(0,0,0,.3)}.fg-masonry.fg-transparent.fg-shadow-inset-medium .fg-thumb:after{box-shadow:inset 0 1px 10px 0 rgba(0,0,0,.3)}.fg-masonry.fg-transparent.fg-shadow-inset-large .fg-thumb:after{box-shadow:inset 0 1px 16px 0 rgba(0,0,0,.3)}.fg-masonry.fg-transparent.fg-shadow-outline .fg-item-inner{box-shadow:0 0 0 1px rgba(128,128,128,.5)}.fg-masonry.fg-transparent.fg-shadow-small .fg-item-inner{box-shadow:0 1px 4px 0 rgba(128,128,128,.5)}.fg-masonry.fg-transparent.fg-shadow-medium .fg-item-inner{box-shadow:0 1px 10px 0 rgba(128,128,128,.5)}.fg-masonry.fg-transparent.fg-shadow-large .fg-item-inner{box-shadow:0 1px 16px 0 rgba(128,128,128,.5)}.fg-justified{box-sizing:border-box;position:relative;text-align:center}.foogallery.fg-justified .fg-item{box-sizing:border-box;display:inline-block;margin:0;padding:0}.foogallery.fg-justified .fg-image,.foogallery.fg-justified .fg-item-inner,.foogallery.fg-justified .fg-thumb{box-sizing:border-box;display:block;margin:0;padding:0}.fg-justified .fg-item{visibility:visible;position:relative}.fg-justified .fg-item-inner{position:relative;width:100%;height:100%}.fg-justified .fg-thumb{position:relative;overflow:hidden}.fg-justified .fg-image{z-index:1}.fg-justified .fg-item.fg-positioned .fg-image-wrap,.fg-justified .fg-item.fg-positioned .fg-thumb{width:100%;height:100%}.fg-justified .fg-item.fg-positioned .fg-image{width:100%!important;height:auto!important;min-height:100%}.fg-simple_portfolio{display:flex;flex-wrap:wrap;justify-content:center;align-items:stretch;align-content:center}.fg-simple_portfolio .fg-item{position:relative;flex-grow:0;flex-shrink:0;flex-basis:auto;margin:10px;max-width:100%}.fg-simple_portfolio .fg-item-inner{display:flex;flex-direction:column;margin:0;height:100%}.fg-simple_portfolio.fg-captions-top .fg-item-inner{flex-direction:column-reverse}.fg-simple_portfolio .fg-image{height:auto;width:100%}.fg-simple_portfolio .fg-thumb{min-width:auto;min-height:auto}.foogallery.fg-simple_portfolio .fg-item-inner .fg-caption{visibility:visible;opacity:1;font-size:13px;position:relative;display:block;top:auto;bottom:auto;left:auto;right:auto;width:100%;height:100%;text-transform:none;transform:none;transition:none;background-color:transparent;border-style:solid;border-color:transparent;text-align:left}.foogallery.fg-simple_portfolio.fg-c-l .fg-item-inner .fg-caption{text-align:left}.foogallery.fg-simple_portfolio.fg-c-c .fg-item-inner .fg-caption{text-align:center}.foogallery.fg-simple_portfolio.fg-c-r .fg-item-inner .fg-caption{text-align:right}.foogallery.fg-simple_portfolio.fg-c-j .fg-item-inner .fg-caption{text-align:justify}.foogallery.fg-simple_portfolio .fg-item-inner:hover .fg-caption{transform:none;transition:none}.foogallery.fg-simple_portfolio .fg-item-inner .fg-caption-inner{display:block;top:auto;bottom:auto;left:auto;right:auto;width:auto;height:auto;border:none;transform:none;transition:none}.foogallery.fg-simple_portfolio .fg-item-inner .fg-caption-inner:before{display:none}.foogallery.fg-simple_portfolio.fg-caption-hover .fg-item-inner .fg-image-overlay{display:block}.foogallery.fg-simple_portfolio.fg-caption-always .fg-item-inner:hover .fg-caption{visibility:visible;opacity:1}.fg-simple_portfolio .fg-caption-title{white-space:normal;height:auto}.fg-simple_portfolio.fg-dark .fg-caption,.fg-simple_portfolio.fg-light .fg-caption{color:#828282}.fg-simple_portfolio.fg-dark .fg-caption a,.fg-simple_portfolio.fg-light .fg-caption a{color:#828282;border-bottom:1px solid #828282}.fg-simple_portfolio.fg-dark .fg-caption a:hover,.fg-simple_portfolio.fg-light .fg-caption a:hover{border-bottom:none}.fg-simple_portfolio.fg-light .fg-caption-title,.fg-simple_portfolio.fg-light .fg-caption-title a{color:#222}.fg-simple_portfolio.fg-dark .fg-caption-title,.fg-simple_portfolio.fg-dark .fg-caption-title a{color:#fff}.fg-simple_portfolio.fg-light .fg-caption-title a{border-bottom:1px solid #222}.fg-simple_portfolio.fg-dark .fg-caption-title a{border-bottom:1px solid #fff}.fg-simple_portfolio .fg-caption{border-width:0}.fg-simple_portfolio .fg-caption-title+.fg-caption-desc{margin-top:4px}.fg-simple_portfolio.fg-border-thin .fg-caption{border-width:10px 4px 4px 4px}.fg-simple_portfolio.fg-captions-top.fg-border-thin .fg-caption{border-width:4px 4px 10px 4px}.fg-simple_portfolio.fg-border-medium .fg-caption{border-width:10px 0 0 0}.fg-simple_portfolio.fg-captions-top.fg-border-medium .fg-caption{border-width:0 0 10px 0}.fg-simple_portfolio.fg-border-thick .fg-caption{border-width:16px 0 0 0}.fg-simple_portfolio.fg-captions-top.fg-border-thick .fg-caption{border-width:0 0 16px 0}.fg-simple_portfolio.fg-border-thick .fg-caption-title+.fg-caption-desc{margin-top:10px}.fg-simple_portfolio.fg-transparent .fg-item-inner{background-color:transparent;color:#333;border-color:transparent}.fg-simple_portfolio.fg-transparent .fg-caption{color:#7f7f7f}.fg-simple_portfolio.fg-transparent .fg-caption a{color:#7f7f7f;border-bottom:1px solid #7f7f7f}.fg-simple_portfolio.fg-transparent .fg-caption a:hover{border-bottom:none}.fg-simple_portfolio.fg-transparent .fg-caption-title,.fg-simple_portfolio.fg-transparent .fg-caption-title a{color:#333}.fg-simple_portfolio.fg-transparent .fg-caption-title a{border-bottom:1px solid #333}.fg-simple_portfolio.fg-transparent.fg-round-full .fg-item,.fg-simple_portfolio.fg-transparent.fg-round-full .fg-item-inner{border-radius:15px}.fg-simple_portfolio.fg-transparent.fg-round-full .fg-image-overlay,.fg-simple_portfolio.fg-transparent.fg-round-full .fg-image-wrap,.fg-simple_portfolio.fg-transparent.fg-round-full.fg-shadow-inset-large .fg-thumb:after,.fg-simple_portfolio.fg-transparent.fg-round-full.fg-shadow-inset-medium .fg-thumb:after,.fg-simple_portfolio.fg-transparent.fg-round-full.fg-shadow-inset-small .fg-thumb:after{border-radius:50%;overflow:hidden}.fg-simple_portfolio.fg-transparent.fg-round-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-overlay,.fg-simple_portfolio.fg-transparent.fg-round-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-wrap,.fg-simple_portfolio.fg-transparent.fg-round-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-overlay,.fg-simple_portfolio.fg-transparent.fg-round-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-wrap,.fg-simple_portfolio.fg-transparent.fg-round-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-overlay,.fg-simple_portfolio.fg-transparent.fg-round-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-wrap{overflow:hidden}.fg-simple_portfolio.fg-transparent.fg-round-small.fg-shadow-inset-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,.fg-simple_portfolio.fg-transparent.fg-round-small.fg-shadow-inset-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,.fg-simple_portfolio.fg-transparent.fg-round-small.fg-shadow-inset-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,.fg-simple_portfolio.fg-transparent.fg-round-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-overlay,.fg-simple_portfolio.fg-transparent.fg-round-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-wrap{border-radius:5px}.fg-simple_portfolio.fg-transparent.fg-round-medium.fg-shadow-inset-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,.fg-simple_portfolio.fg-transparent.fg-round-medium.fg-shadow-inset-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,.fg-simple_portfolio.fg-transparent.fg-round-medium.fg-shadow-inset-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,.fg-simple_portfolio.fg-transparent.fg-round-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-overlay,.fg-simple_portfolio.fg-transparent.fg-round-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-wrap{border-radius:10px}.fg-simple_portfolio.fg-transparent.fg-round-large.fg-shadow-inset-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,.fg-simple_portfolio.fg-transparent.fg-round-large.fg-shadow-inset-medium:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,.fg-simple_portfolio.fg-transparent.fg-round-large.fg-shadow-inset-small:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-thumb:after,.fg-simple_portfolio.fg-transparent.fg-round-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-overlay,.fg-simple_portfolio.fg-transparent.fg-round-large:not(.fg-shadow-outline):not(.fg-shadow-small):not(.fg-shadow-medium):not(.fg-shadow-large) .fg-image-wrap{border-radius:15px}.fg-simple_portfolio.fg-transparent.fg-shadow-inset-small .fg-thumb:after{box-shadow:inset 0 1px 4px 0 rgba(0,0,0,.3)}.fg-simple_portfolio.fg-transparent.fg-shadow-inset-medium .fg-thumb:after{box-shadow:inset 0 1px 10px 0 rgba(0,0,0,.3)}.fg-simple_portfolio.fg-transparent.fg-shadow-inset-large .fg-thumb:after{box-shadow:inset 0 1px 16px 0 rgba(0,0,0,.3)}.fg-simple_portfolio.fg-transparent.fg-shadow-outline .fg-item-inner{box-shadow:0 0 0 1px rgba(128,128,128,.5)}.fg-simple_portfolio.fg-transparent.fg-shadow-small .fg-item-inner{box-shadow:0 1px 4px 0 rgba(128,128,128,.5)}.fg-simple_portfolio.fg-transparent.fg-shadow-medium .fg-item-inner{box-shadow:0 1px 10px 0 rgba(128,128,128,.5)}.fg-simple_portfolio.fg-transparent.fg-shadow-large .fg-item-inner{box-shadow:0 1px 16px 0 rgba(128,128,128,.5)}.foogallery.fg-preset.fg-polaroid .fg-item{-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform .35s,background-color .65s}.foogallery.fg-preset.fg-polaroid .fg-item:nth-child(2n+1){-webkit-transform:rotate(3deg);transform:rotate(3deg)}.foogallery.fg-preset.fg-polaroid .fg-item:nth-child(2n){-webkit-transform:rotate(-3deg);transform:rotate(-3deg)}.foogallery.fg-preset.fg-polaroid .fg-item:nth-child(3n){-webkit-transform:rotate(1deg);transform:rotate(1deg)}.foogallery.fg-preset.fg-polaroid .fg-item:nth-child(5n){-webkit-transform:rotate(-2deg);transform:rotate(-2deg)}.foogallery.fg-preset.fg-polaroid .fg-item:hover{-webkit-transform:rotate(0);transform:rotate(0)}.foogallery.fg-preset.fg-polaroid .fg-caption{position:relative;width:auto;font-family:"Segoe Print Regular",-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif}.foogallery.fg-preset.fg-polaroid .fg-caption-inner,.foogallery.fg-preset.fg-polaroid .fg-caption-title{position:relative;width:auto}.foogallery.fg-preset.fg-polaroid .fg-caption-title{text-align:center}.foogallery.fg-preset.fg-polaroid .fg-caption-desc{display:none}.foogallery.fg-light.fg-preset.fg-polaroid .fg-caption-title,.foogallery.fg-preset.fg-polaroid .fg-caption-title{color:#333}.foogallery.fg-dark.fg-preset.fg-polaroid .fg-caption-title{color:#fff}.foogallery.fg-preset.fg-polaroid .fg-caption{border-style:solid;border-color:transparent;border-width:10px}.foogallery.fg-preset.fg-polaroid .fg-caption-title+.fg-caption-desc{margin-top:4px}.foogallery.fg-preset.fg-polaroid.fg-border-thin .fg-caption{border-width:10px 4px 4px 4px}.foogallery.fg-preset.fg-polaroid.fg-captions-top.fg-border-thin .fg-caption{border-width:4px 4px 10px 4px}.foogallery.fg-preset.fg-polaroid.fg-border-medium .fg-caption{border-width:10px 0 0 0}.foogallery.fg-preset.fg-polaroid.fg-captions-top.fg-border-medium .fg-caption{border-width:0 0 10px 0}.foogallery.fg-preset.fg-polaroid.fg-border-thick .fg-caption{border-width:16px 0 0 0}.foogallery.fg-preset.fg-polaroid.fg-captions-top.fg-border-thick .fg-caption{border-width:0 0 16px 0}.foogallery.fg-preset.fg-polaroid.fg-border-thick .fg-caption-title+.fg-caption-desc{margin-top:10px}.fg-image-viewer{display:block;font-family:'Open Sans','Helvetica Neue',Arial,sans-serif}.fg-image-viewer.fg-left{text-align:left}.fg-image-viewer.fg-center{text-align:center}.fg-image-viewer.fg-right{text-align:right}.fiv-inner{position:relative;display:inline-block;max-width:100%;overflow:hidden;z-index:6}.fiv-inner .fiv-inner-container{position:relative;overflow:hidden;max-width:100%;border-style:solid;border-width:0;border-bottom-width:4px;z-index:5}.fg-image-viewer .fiv-inner .fiv-inner-container .fg-item .fg-thumb,.fg-image-viewer .fiv-inner .fiv-inner-container .fg-item .fg-thumb:active,.fg-image-viewer .fiv-inner .fiv-inner-container .fg-item .fg-thumb:hover,.fg-image-viewer .fiv-inner .fiv-inner-container .fg-item .fg-thumb:visited{position:relative;display:block;border:none;outline:0;text-decoration:none;box-shadow:none;max-width:100%}.fg-image-viewer .fiv-inner .fiv-inner-container .fg-item{position:absolute;visibility:visible;opacity:1;border:none;outline:0;text-decoration:none;box-shadow:none;max-width:100%}.fg-image-viewer .fiv-inner .fiv-inner-container .fg-item:first-of-type{position:relative}.fg-image-viewer .fiv-inner .fiv-inner-container .fg-item .fg-thumb img{display:block;max-width:100%;height:auto;border:none;outline:0;text-decoration:none}.fg-image-viewer .fiv-inner .fiv-ctrls{display:block;text-align:center;font-size:14px;border-style:solid;line-height:34px}.fg-image-viewer .fiv-inner .fiv-ctrls:after{content:'';display:block;clear:both}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-count{display:inline-block;font-weight:400;margin:0}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next,.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:none;min-width:80px;position:relative;overflow:hidden;transition:background-color .3s}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next:before,.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev:before{display:block;position:absolute;font-size:24px;line-height:30px;top:0;left:0;width:100%;transform:translateY(0);transition:transform .3s}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next:hover:before,.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev:hover:before{transform:translateY(-100%)}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next span,.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev span{display:block;width:100%;transform:translateY(100%);transition:transform .3s}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next:hover span,.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev:hover span{transform:translateY(0)}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev{float:left}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev:before{content:'\2190'}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next{float:right}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next:before{content:'\2192'}.fg-image-viewer .fiv-inner .fiv-ctrls .fiv-count span{margin:0 4px}.rtl .fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev{float:right}.rtl .fg-image-viewer .fiv-inner .fiv-ctrls .fiv-prev:before{content:'\2192'}.rtl .fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next{float:left}.rtl .fg-image-viewer .fiv-inner .fiv-ctrls .fiv-next:before{content:'\2190'}.foogallery.fg-image-viewer.fg-caption-always .fg-item-inner .fg-caption{padding:0;border:none}.foogallery.fg-image-viewer.fg-caption-always .fg-caption-title{padding:10px 10px 10px 10px}.foogallery.fg-image-viewer.fg-caption-always .fg-caption-desc{padding:10px 10px 10px 10px}.foogallery.fg-image-viewer.fg-caption-always .fg-caption-title+.fg-caption-desc{padding:0 10px 10px 10px}.fg-image-viewer.fg-light .fiv-inner .fiv-ctrls,.fg-image-viewer.fg-light .fiv-inner .fiv-ctrls .fiv-count,.fg-image-viewer.fg-light .fiv-inner .fiv-ctrls .fiv-next,.fg-image-viewer.fg-light .fiv-inner .fiv-ctrls .fiv-prev,.fg-image-viewer.fg-light .fiv-inner .fiv-inner-container{background-color:#fff;color:#333;border-color:#fff}.fg-image-viewer.fg-light .fiv-inner .fiv-ctrls .fiv-next:hover,.fg-image-viewer.fg-light .fiv-inner .fiv-ctrls .fiv-prev:hover{background-color:#f2f2f2}.fg-image-viewer.fg-light .fiv-next,.fg-image-viewer.fg-light .fiv-prev{box-shadow:inset 0 0 0 1px #ddd}.fg-image-viewer.fg-dark .fiv-inner .fiv-ctrls,.fg-image-viewer.fg-dark .fiv-inner .fiv-ctrls .fiv-count,.fg-image-viewer.fg-dark .fiv-inner .fiv-ctrls .fiv-next,.fg-image-viewer.fg-dark .fiv-inner .fiv-ctrls .fiv-prev,.fg-image-viewer.fg-dark .fiv-inner .fiv-inner-container{background-color:#333;color:#fff;border-color:#333}.fg-image-viewer.fg-dark .fiv-inner .fiv-ctrls .fiv-next:hover,.fg-image-viewer.fg-dark .fiv-inner .fiv-ctrls .fiv-prev:hover{background-color:#444}.fg-image-viewer.fg-dark .fiv-next,.fg-image-viewer.fg-dark .fiv-prev{box-shadow:inset 0 0 0 1px #222}.foogallery.fg-image-viewer.fg-border-medium .fg-item-inner,.foogallery.fg-image-viewer.fg-border-thick .fg-item-inner,.foogallery.fg-image-viewer.fg-border-thin .fg-item-inner{border-width:0}.foogallery.fg-image-viewer .fiv-ctrls,.foogallery.fg-image-viewer.fg-border-thin .fiv-inner-container{border-width:4px}.foogallery.fg-image-viewer.fg-border-medium .fiv-ctrls,.foogallery.fg-image-viewer.fg-border-medium .fiv-inner-container{border-width:10px}.foogallery.fg-image-viewer.fg-border-thick .fiv-ctrls,.foogallery.fg-image-viewer.fg-border-thick .fiv-inner-container{border-width:16px}.foogallery.fg-image-viewer .fiv-ctrls,.foogallery.fg-image-viewer.fg-border-medium .fiv-ctrls,.foogallery.fg-image-viewer.fg-border-thick .fiv-ctrls,.foogallery.fg-image-viewer.fg-border-thin .fiv-ctrls{border-top-width:1px}.foogallery.fg-image-viewer.fg-round-small .fg-item,.foogallery.fg-image-viewer.fg-round-small .fg-item-inner,.foogallery.fg-image-viewer.fg-round-small .fiv-inner{border-radius:5px}.foogallery.fg-image-viewer.fg-round-small .fg-item,.foogallery.fg-image-viewer.fg-round-small .fg-item-inner{border-bottom-left-radius:0;border-bottom-right-radius:0}.foogallery.fg-image-viewer.fg-round-small .fiv-next,.foogallery.fg-image-viewer.fg-round-small .fiv-prev{border-radius:3px}.foogallery.fg-image-viewer.fg-border-medium.fg-round-small .fg-item,.foogallery.fg-image-viewer.fg-border-medium.fg-round-small .fg-item-inner,.foogallery.fg-image-viewer.fg-border-medium.fg-round-small .fiv-next,.foogallery.fg-image-viewer.fg-border-medium.fg-round-small .fiv-prev,.foogallery.fg-image-viewer.fg-border-thick.fg-round-small .fg-item,.foogallery.fg-image-viewer.fg-border-thick.fg-round-small .fg-item-inner,.foogallery.fg-image-viewer.fg-border-thick.fg-round-small .fiv-next,.foogallery.fg-image-viewer.fg-border-thick.fg-round-small .fiv-prev,.foogallery.fg-image-viewer.fg-border-thin.fg-round-small .fg-item,.foogallery.fg-image-viewer.fg-border-thin.fg-round-small .fg-item-inner,.foogallery.fg-image-viewer.fg-border-thin.fg-round-small .fiv-next,.foogallery.fg-image-viewer.fg-border-thin.fg-round-small .fiv-prev{border-radius:3px}.foogallery.fg-image-viewer.fg-round-medium .fg-item,.foogallery.fg-image-viewer.fg-round-medium .fg-item-inner,.foogallery.fg-image-viewer.fg-round-medium .fiv-inner{border-radius:10px}.foogallery.fg-image-viewer.fg-round-medium .fg-item,.foogallery.fg-image-viewer.fg-round-medium .fg-item-inner{border-bottom-left-radius:0;border-bottom-right-radius:0}.foogallery.fg-image-viewer.fg-round-medium .fiv-next,.foogallery.fg-image-viewer.fg-round-medium .fiv-prev{border-radius:5px}.foogallery.fg-image-viewer.fg-border-thin.fg-round-medium .fg-item,.foogallery.fg-image-viewer.fg-border-thin.fg-round-medium .fg-item-inner,.foogallery.fg-image-viewer.fg-border-thin.fg-round-medium .fiv-next,.foogallery.fg-image-viewer.fg-border-thin.fg-round-medium .fiv-prev{border-radius:5px}.foogallery.fg-image-viewer.fg-border-medium.fg-round-medium .fg-item,.foogallery.fg-image-viewer.fg-border-medium.fg-round-medium .fg-item-inner,.foogallery.fg-image-viewer.fg-border-medium.fg-round-medium .fiv-next,.foogallery.fg-image-viewer.fg-border-medium.fg-round-medium .fiv-prev,.foogallery.fg-image-viewer.fg-border-thick.fg-round-medium .fg-item,.foogallery.fg-image-viewer.fg-border-thick.fg-round-medium .fg-item-inner,.foogallery.fg-image-viewer.fg-border-thick.fg-round-medium .fiv-next,.foogallery.fg-image-viewer.fg-border-thick.fg-round-medium .fiv-prev{border-radius:3px}.foogallery.fg-image-viewer.fg-round-large .fg-item,.foogallery.fg-image-viewer.fg-round-large .fg-item-inner,.foogallery.fg-image-viewer.fg-round-large .fiv-inner{border-radius:15px}.foogallery.fg-image-viewer.fg-round-large .fg-item,.foogallery.fg-image-viewer.fg-round-large .fg-item-inner{border-bottom-left-radius:0;border-bottom-right-radius:0}.foogallery.fg-image-viewer.fg-round-large .fiv-next,.foogallery.fg-image-viewer.fg-round-large .fiv-prev{border-radius:11px}.foogallery.fg-image-viewer.fg-border-thin.fg-round-large .fg-item,.foogallery.fg-image-viewer.fg-border-thin.fg-round-large .fg-item-inner,.foogallery.fg-image-viewer.fg-border-thin.fg-round-large .fiv-next,.foogallery.fg-image-viewer.fg-border-thin.fg-round-large .fiv-prev{border-radius:11px}.foogallery.fg-image-viewer.fg-border-medium.fg-round-large .fg-item,.foogallery.fg-image-viewer.fg-border-medium.fg-round-large .fg-item-inner,.foogallery.fg-image-viewer.fg-border-medium.fg-round-large .fiv-next,.foogallery.fg-image-viewer.fg-border-medium.fg-round-large .fiv-prev{border-radius:5px}.foogallery.fg-image-viewer.fg-border-thick.fg-round-large .fg-item,.foogallery.fg-image-viewer.fg-border-thick.fg-round-large .fg-item-inner,.foogallery.fg-image-viewer.fg-border-thick.fg-round-large .fiv-next,.foogallery.fg-image-viewer.fg-border-thick.fg-round-large .fiv-prev{border-radius:3px}.foogallery.fg-image-viewer.fg-round-full .fiv-inner,.foogallery.fg-image-viewer.fg-round-full .fiv-next,.foogallery.fg-image-viewer.fg-round-full .fiv-prev{border-radius:50%}.foogallery.fg-image-viewer.fg-dark.fg-shadow-large .fg-item-inner,.foogallery.fg-image-viewer.fg-dark.fg-shadow-medium .fg-item-inner,.foogallery.fg-image-viewer.fg-dark.fg-shadow-outline .fg-item-inner,.foogallery.fg-image-viewer.fg-dark.fg-shadow-small .fg-item-inner,.foogallery.fg-image-viewer.fg-light.fg-shadow-large .fg-item-inner,.foogallery.fg-image-viewer.fg-light.fg-shadow-medium .fg-item-inner,.foogallery.fg-image-viewer.fg-light.fg-shadow-outline .fg-item-inner,.foogallery.fg-image-viewer.fg-light.fg-shadow-small .fg-item-inner{box-shadow:none}.foogallery.fg-image-viewer.fg-light.fg-shadow-outline .fiv-inner{box-shadow:0 0 0 1px #ddd}.foogallery.fg-image-viewer.fg-dark.fg-shadow-outline .fiv-inner{box-shadow:0 0 0 1px #222}.foogallery.fg-image-viewer.fg-dark.fg-shadow-small .fiv-inner,.foogallery.fg-image-viewer.fg-light.fg-shadow-small .fiv-inner{box-shadow:0 1px 4px 0 rgba(0,0,0,.5)}.foogallery.fg-image-viewer.fg-dark.fg-shadow-medium .fiv-inner,.foogallery.fg-image-viewer.fg-light.fg-shadow-medium .fiv-inner{box-shadow:0 1px 10px 0 rgba(0,0,0,.5)}.foogallery.fg-image-viewer.fg-dark.fg-shadow-large .fiv-inner,.foogallery.fg-image-viewer.fg-light.fg-shadow-large .fiv-inner{box-shadow:0 1px 16px 0 rgba(0,0,0,.5)}.foogallery.fg-thumbnail,.foogallery.fg-thumbnail.fg-center{text-align:center}.foogallery.fg-thumbnail.fg-left{text-align:left}.foogallery.fg-thumbnail.fg-right{text-align:right}.foogallery.fg-thumbnail.fg-float-left{float:left;width:auto}.foogallery.fg-thumbnail.fg-float-right{float:right;width:auto}.foogallery.fg-thumbnail .fg-item{display:inline-block;vertical-align:top;max-width:100%}.foogallery.fg-thumbnail .fg-image{max-width:100%}.foogallery.fg-thumbnail .fg-st-hidden{display:none}.foogallery-stack-album{text-align:center;overflow:hidden;font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:13px;font-weight:400;line-height:1.3}.foogallery-stack-album,.foogallery-stack-album *{box-sizing:border-box}.foogallery-stack-album.fg-align-left{text-align:left}.foogallery-stack-album.fg-align-center{text-align:center}.foogallery-stack-album.fg-align-right{text-align:right}.foogallery-stack-album.fg-disable-transitions,.foogallery-stack-album.fg-disable-transitions *{transition:none!important}.fg-header{display:flex;flex-wrap:nowrap;justify-content:space-between;align-items:center;position:relative;padding:0;margin:0;border-top:solid 1px #aaa;border-bottom:solid 1px #aaa}.fg-header-title{display:block;margin:0;padding:0 20px;width:100%;text-align:left}.fg-header-active{display:block;margin:0;padding:0 20px;visibility:hidden;opacity:0;width:100%;text-align:right;transition-property:opacity,visibility;transition-duration:.3s;transition-timing-function:ease-in-out}.fg-header-back{display:block;padding:0;margin:5px;visibility:hidden;opacity:0;min-width:40px;width:40px;height:40px;border-radius:50%;text-align:center;line-height:38px;color:#999;background:#ddd;background:rgba(200,200,200,.5);cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;transition-property:opacity,visibility;transition-duration:.3s;transition-timing-function:ease-in-out}.fg-has-active .fg-header-active,.fg-has-active .fg-header-back{visibility:visible;opacity:1}.fg-piles{display:inline-block;position:relative;transition-property:width,height;transition-duration:.3s;transition-timing-function:ease-in-out}.fg-pile{display:block;position:absolute;top:0;left:0;list-style:none;padding:0;margin:0;visibility:visible;opacity:1;transition-property:opacity,visibility,top,left,width,height;transition-duration:.3s;transition-timing-function:ease-in-out}.fg-pile.fg-hidden{visibility:hidden;opacity:0}.fg-pile-item{display:block;position:absolute;top:25px;left:25px;visibility:visible;opacity:1;cursor:pointer;border:10px solid #fff;background-color:#fff;box-shadow:0 1px 4px rgba(0,0,0,.2);transition-property:opacity,visibility,top,left,transform;transition-duration:.3s;transition-timing-function:ease-in-out;z-index:1;transform:rotate(0)}.fg-expanded .fg-pile-item{z-index:2;transform:rotate(0)!important}.fg-pile-item.fg-has-cover{z-index:10;transform:rotate(0)!important}.fg-pile-item:nth-child(2){z-index:9}.fg-pile-item:nth-child(3){z-index:8}.fg-pile-item:nth-child(4){z-index:7}.fg-pile-item:nth-child(1n+5){visibility:hidden;opacity:0}.fg-expanded .fg-pile-item:nth-child(1n+4){visibility:visible;opacity:1}.fg-pile-item-thumb{display:block}.fg-pile-item-image{display:block}.fg-pile-item-caption{display:flex;justify-content:center;flex-direction:column;position:absolute;top:0;left:0;bottom:0;right:0;width:100%;height:100%;margin:0;padding:10px;background-color:rgba(68,68,68,.5);color:#fff;text-align:center;visibility:hidden;opacity:0;transition-property:opacity,visibility;transition-duration:.3s;transition-timing-function:ease-in-out}.fg-pile-item-title{display:block;width:100%;padding:0 0 10px}.fg-pile-item-desc{display:block;width:100%;max-height:100%;border-top:solid 1px currentColor;padding:10px 0 0;overflow:hidden}.fg-pile-item-thumb:hover .fg-pile-item-caption{visibility:visible;opacity:1}.fg-pile-cover{display:flex;justify-content:left;align-items:center;position:absolute;top:0;left:0;bottom:0;right:0;width:100%;height:100%;visibility:visible;opacity:1;cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;transition-property:opacity,visibility;transition-duration:.3s;transition-timing-function:ease-in-out}.fg-expanded .fg-pile-cover{visibility:hidden;opacity:0;pointer-events:none}.fg-pile-cover-content{display:flex;position:relative;background:#fff;color:#333;width:75%;font-weight:700;box-shadow:1px 1px 1px rgba(0,0,0,.1),5px 0 5px -3px rgba(0,0,0,.4),inset 0 0 5px rgba(0,0,0,.04)}.fg-pile-cover-title{text-align:center;padding:10px;width:100%}.fg-pile-cover-count{color:#aaa;padding:10px 5px;background:#f7f7f7;height:100%}:root{--fg-carousel-perspective:150px;--fg-carousel-navigation-size:48px;--fg-carousel-pagination-size:14px;--fg-carousel-progress-size:4px;--fg-carousel-navigation-opacity:0.3;--fg-carousel-transition-speed:650ms;--fg-carousel-ui-speed:300ms}.foogallery.fg-carousel{--fg-carousel-inverse-perspective:calc( -1 * var(--fg-carousel-perspective) );position:relative;overflow:hidden;display:grid;grid-template-columns:var(--fg-carousel-navigation-size) auto var(--fg-carousel-navigation-size);grid-template-rows:auto auto;grid-template-areas:"prev inner next" "bottom bottom bottom"}.fg-carousel-inner{position:relative;grid-area:inner;display:grid;grid-template-columns:1fr auto 1fr;grid-template-rows:auto;grid-template-areas:"left center right";padding:10px 0;perspective:var(--fg-carousel-perspective);transform:translate3d(0,0,0);transform-style:preserve-3d;backface-visibility:hidden;will-change:contents}.foogallery_preview_container .fg-carousel-inner{transform-style:unset}.fg-carousel-center{position:relative;z-index:-1;pointer-events:none;visibility:hidden}.fg-carousel-center{grid-area:center}.fg-carousel-progress{display:block;position:absolute;visibility:visible;bottom:0;left:0;width:0;height:var(--fg-carousel-progress-size);border-radius:calc(var(--fg-carousel-progress-size)/ 2);transition:width .1s linear;opacity:var(--fg-carousel-navigation-opacity)}.rtl .fg-carousel-progress{left:auto;right:0}.fg-carousel-bottom{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;position:relative;grid-area:bottom;font-size:var(--fg-carousel-pagination-size);padding:0;margin-bottom:10px}.fg-carousel-bullet{width:1em;height:1em;display:block;padding:0;margin:.3em;border-radius:50%;border:solid 1px transparent;background:0 0;box-shadow:none;outline:0;opacity:var(--fg-carousel-navigation-opacity);cursor:pointer;font-size:inherit;transition:opacity var(--fg-carousel-ui-speed) ease-in}@media only screen and (max-width:782px){.fg-carousel-bullet{width:1.25em;height:1.25em}}.fg-carousel-bullet:hover{background:0 0;box-shadow:none;outline:0;opacity:1}.fg-carousel-bullet.fg-bullet-active{opacity:1}button.fg-carousel-next,button.fg-carousel-prev{position:relative;height:100%;width:100%;display:flex;align-items:center;justify-content:center;font-size:var(--fg-carousel-navigation-size);background:0 0;border:none;box-shadow:none;outline:0;z-index:11;cursor:pointer;opacity:var(--fg-carousel-navigation-opacity);transition:opacity var(--fg-carousel-ui-speed) ease-in;padding:0;margin:0}button.fg-carousel-next:hover,button.fg-carousel-prev:hover{background:0 0;border:none;box-shadow:none;outline:0;opacity:1}.fg-carousel-next .fg-icon,.fg-carousel-prev .fg-icon{width:1em;height:1em}.rtl .fg-carousel-next .fg-icon,.rtl .fg-carousel-prev .fg-icon{transform:rotate(180deg)}.fg-carousel-prev{grid-area:prev}.fg-carousel-next{grid-area:next}.foogallery.fg-carousel .fg-item{display:block;opacity:0;visibility:hidden;grid-area:center;transform-origin:center center;transform:translate3d(0,200%,var(--fg-carousel-inverse-perspective));transition-timing-function:ease-in-out;transition-duration:0s;transition-property:background-color,transform,transform-origin,opacity,visibility;backface-visibility:hidden}.foogallery.fg-carousel .fg-item.fg-loaded{transform:translate3d(0,0,var(--fg-carousel-inverse-perspective));transition-timing-function:ease-in-out;transition-duration:calc( var(--fg-carousel-transition-speed) / 2 );transition-property:background-color,transform,transform-origin,opacity,visibility}.foogallery.fg-carousel .fg-item.fg-item-active,.foogallery.fg-carousel .fg-item.fg-item-next,.foogallery.fg-carousel .fg-item.fg-item-prev{opacity:1;visibility:visible}.foogallery.fg-carousel .fg-item.fg-item-active{transform:translate3d(0,0,0)}.foogallery.fg-carousel.fg-dark .fg-carousel-progress,.foogallery.fg-carousel.fg-light.fg-inverted .fg-carousel-progress{background-color:#fff;box-shadow:inset 0 0 0 1px #9d9d9d}.foogallery.fg-carousel.fg-dark button.fg-carousel-bullet,.foogallery.fg-carousel.fg-light.fg-inverted button.fg-carousel-bullet{background-color:#fff;border-color:#ccc}.foogallery.fg-carousel.fg-dark button.fg-carousel-next,.foogallery.fg-carousel.fg-dark button.fg-carousel-prev,.foogallery.fg-carousel.fg-light.fg-inverted button.fg-carousel-next,.foogallery.fg-carousel.fg-light.fg-inverted button.fg-carousel-prev{color:#fff;background-color:transparent}.foogallery.fg-carousel.fg-dark.fg-inverted .fg-carousel-progress,.foogallery.fg-carousel.fg-light .fg-carousel-progress{background-color:#444;box-shadow:inset 0 0 0 1px #333}.foogallery.fg-carousel.fg-dark.fg-inverted button.fg-carousel-bullet,.foogallery.fg-carousel.fg-light button.fg-carousel-bullet{background-color:#444;border-color:#333}.foogallery.fg-carousel.fg-dark.fg-inverted button.fg-carousel-next,.foogallery.fg-carousel.fg-dark.fg-inverted button.fg-carousel-prev,.foogallery.fg-carousel.fg-light button.fg-carousel-next,.foogallery.fg-carousel.fg-light button.fg-carousel-prev{color:#444;background-color:transparent}.fg-shadow-outline .fg-carousel-inner{padding:1px}.fg-shadow-small .fg-carousel-inner{padding:4px}.fg-shadow-medium .fg-carousel-inner{padding:10px}.fg-shadow-large .fg-carousel-inner{padding:16px}.foogallery.fg-carousel-hide-nav-arrows{--fg-carousel-navigation-size:0px}.foogallery.fg-carousel-hide-nav-arrows .fg-carousel-next,.foogallery.fg-carousel-hide-nav-arrows .fg-carousel-prev,.foogallery.fg-carousel-hide-pagination .fg-carousel-bottom,.foogallery.fg-carousel-hide-progress-bar .fg-carousel-progress{display:none}
extensions/default-templates/shared/js/foogallery.js CHANGED
@@ -4646,11 +4646,10 @@ FooGallery.utils, FooGallery.utils.is, FooGallery.utils.str);
4646
  * @memberof FooGallery.utils.
4647
  * @class Timer
4648
  * @param {number} [interval=1000] - The internal tick interval of the timer.
4649
- * @augments FooGallery.utils.EventClass
4650
  */
4651
 
4652
  _.Timer = _.EventClass.extend(
4653
- /** @lends FooGallery.utils.Timer.prototype */
4654
  {
4655
  /**
4656
  * @ignore
@@ -4937,7 +4936,6 @@ FooGallery.utils, FooGallery.utils.is, FooGallery.utils.str);
4937
  if (self.isRunning) {
4938
  self.isRunning = false;
4939
  self.isPaused = true;
4940
- self.canResume = self.__remaining > 0;
4941
  self.trigger("pause", self.__eventArgs());
4942
  }
4943
 
@@ -6289,7 +6287,7 @@ FooGallery.utils.$, FooGallery.utils, FooGallery.utils.is, FooGallery.utils.fn);
6289
  FooGallery.utils.is,
6290
  FooGallery.utils.obj
6291
  );
6292
- (function($, _, _utils, _is, _fn){
6293
 
6294
  /**
6295
  * @summary A factory for classes allowing them to be registered and created using a friendly name.
@@ -6483,6 +6481,23 @@ FooGallery.utils.$, FooGallery.utils, FooGallery.utils.is, FooGallery.utils.fn);
6483
  result.push(self.make(r.name));
6484
  });
6485
  return result;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6486
  }
6487
  });
6488
 
@@ -6492,7 +6507,8 @@ FooGallery.utils.$, FooGallery.utils, FooGallery.utils.is, FooGallery.utils.fn);
6492
  FooGallery,
6493
  FooGallery.utils,
6494
  FooGallery.utils.is,
6495
- FooGallery.utils.fn
 
6496
  );
6497
  (function ($, _, _utils, _is, _fn, _obj) {
6498
 
@@ -6588,23 +6604,6 @@ FooGallery.utils.$, FooGallery.utils, FooGallery.utils.is, FooGallery.utils.fn);
6588
  }
6589
  return type;
6590
  },
6591
- /**
6592
- * @memberof FooGallery.TemplateFactory#
6593
- * @function configure
6594
- * @param {string} name
6595
- * @param {object} options
6596
- * @param {object} classes
6597
- * @param {object} il8n
6598
- */
6599
- configure: function (name, options, classes, il8n) {
6600
- var self = this;
6601
- if (self.contains(name)) {
6602
- var reg = self.registered;
6603
- _obj.extend(reg[name].opt, options);
6604
- _obj.extend(reg[name].cls, classes);
6605
- _obj.extend(reg[name].il8n, il8n);
6606
- }
6607
- },
6608
  options: function (name, options) {
6609
  options = _obj.extend({type: name}, options);
6610
  var self = this, reg = self.registered,
@@ -10090,15 +10089,6 @@ FooGallery.utils.$, FooGallery.utils, FooGallery.utils.is, FooGallery.utils.fn);
10090
  }
10091
  return options;
10092
  },
10093
- configure: function(name, options, classes, il8n){
10094
- var self = this;
10095
- if (self.contains(name)){
10096
- var reg = self.registered;
10097
- _obj.extend(reg[name].opt, options);
10098
- _obj.extend(reg[name].cls, classes);
10099
- _obj.extend(reg[name].il8n, il8n);
10100
- }
10101
- },
10102
  /**
10103
  * @summary Checks if the factory contains a control registered using the supplied `name`.
10104
  * @memberof FooGallery.PagingFactory#
@@ -10849,7 +10839,7 @@ FooGallery.utils.$, FooGallery.utils, FooGallery.utils.is, FooGallery.utils.fn);
10849
  break;
10850
  case "hide":
10851
  height = self.justify(row, top_start, maxWidth, self.maxRowHeight);
10852
- if (row.width < maxWidth){
10853
  row.visible = false;
10854
  }
10855
  break;
@@ -11828,6 +11818,15 @@ FooGallery.utils.$, FooGallery.utils, FooGallery.utils.is, FooGallery.utils.fn);
11828
  scaleToZ: function( value, vectorZ, perspective ){
11829
  return value * ( 1 - vectorZ / ( perspective + vectorZ ) );
11830
  },
 
 
 
 
 
 
 
 
 
11831
 
11832
  //#endregion
11833
 
@@ -11910,7 +11909,7 @@ FooGallery.utils.$, FooGallery.utils, FooGallery.utils.is, FooGallery.utils.fn);
11910
  },
11911
  initSwipe: function(){
11912
  const self = this;
11913
- let startX = 0, endX = 0;
11914
  self._listeners.add( self.elem.inner, "touchstart", function( event ){
11915
  self.interacted = true;
11916
  startX = event.changedTouches[0].screenX;
@@ -11918,10 +11917,13 @@ FooGallery.utils.$, FooGallery.utils, FooGallery.utils.is, FooGallery.utils.fn);
11918
 
11919
  self._listeners.add( self.elem.inner, "touchend", function( event ){
11920
  endX = event.changedTouches[0].screenX;
11921
- if ( endX < startX ){ // swipe left
11922
- self.next();
11923
- } else { // swipe right
11924
- self.previous();
 
 
 
11925
  }
11926
  endX = 0;
11927
  startX = 0;
@@ -12347,16 +12349,67 @@ FooGallery.utils.$, FooGallery.utils, FooGallery.utils.is, FooGallery.utils.fn);
12347
  );
12348
  (function ($, _, _utils, _obj, _is) {
12349
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12350
  _.triggerPostLoad = function (e, current, prev, isFilter) {
12351
- var tmpl = e.target;
12352
  if (tmpl instanceof _.Template){
12353
  if (tmpl.initialized && (e.type === "ready" || (e.type === "after-page-change" && !isFilter) || e.type === "after-filter-change")) {
12354
  try {
12355
- // if the gallery is displayed within a FooBox do not trigger the post-load which would cause the lightbox to re-init
12356
- if (tmpl.$el.parents(".fbx-item").length > 0) return;
12357
- if (tmpl.$el.hasClass("fbx-instance") && !!window.FOOBOX && !!$.fn.foobox){
12358
- var opts = $.extend({}, window.FOOBOX.o, (tmpl.opt.protected ? { images: { noRightClick: true } } : {}));
12359
- tmpl.$el.foobox(opts);
12360
  } else {
12361
  $("body").trigger("post-load");
12362
  }
@@ -12367,43 +12420,98 @@ FooGallery.utils.$, FooGallery.utils, FooGallery.utils.is, FooGallery.utils.fn);
12367
  }
12368
  };
12369
 
 
 
 
 
 
 
 
12370
  _.autoDefaults = {
12371
  on: {
12372
  "ready after-page-change after-filter-change": _.triggerPostLoad
12373
  }
12374
  };
12375
 
 
 
 
 
 
 
 
 
 
12376
  _.autoEnabled = true;
12377
 
 
 
 
 
 
 
 
 
12378
  _.auto = function (options) {
12379
- _.autoDefaults = _obj.merge(_.autoDefaults, options);
12380
  };
12381
 
 
 
 
 
 
 
 
 
 
12382
  _.globalsMerged = false;
12383
 
 
 
 
12384
  _.mergeGlobals = function(){
12385
- if (_.globalsMerged === true) return;
12386
- if (window.FooGallery_il8n && _is.object(window.FooGallery_il8n)){
12387
- var il8n = window.FooGallery_il8n;
12388
- for (var factory in il8n){
12389
- if (!il8n.hasOwnProperty(factory) || !(_[factory] instanceof _.Factory) || !_is.object(il8n[factory])) continue;
12390
- for (var component in il8n[factory]){
12391
- if (il8n[factory].hasOwnProperty(component)){
12392
- _[factory].configure(component, null, null, il8n[factory][component]);
12393
- }
12394
- }
12395
- }
12396
  _.globalsMerged = true;
12397
  }
12398
  };
12399
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12400
  _.load = _.reload = function(){
 
12401
  // this automatically initializes all templates on page load
12402
  $(function () {
12403
  _.mergeGlobals();
12404
  if (_.autoEnabled){
12405
  $('[id^="foogallery-gallery-"]:not(.fg-ready)').foogallery(_.autoDefaults);
12406
  }
 
 
 
 
12407
  });
12408
 
12409
  _utils.ready(function () {
@@ -12411,9 +12519,15 @@ FooGallery.utils.$, FooGallery.utils, FooGallery.utils.is, FooGallery.utils.fn);
12411
  if (_.autoEnabled){
12412
  $('[id^="foogallery-gallery-"].fg-ready').foogallery(_.autoDefaults);
12413
  }
 
 
 
 
12414
  });
12415
  };
12416
 
 
 
12417
  _.load();
12418
 
12419
  })(
4646
  * @memberof FooGallery.utils.
4647
  * @class Timer
4648
  * @param {number} [interval=1000] - The internal tick interval of the timer.
 
4649
  */
4650
 
4651
  _.Timer = _.EventClass.extend(
4652
+ /** @lends FooGallery.utils.Timer */
4653
  {
4654
  /**
4655
  * @ignore
4936
  if (self.isRunning) {
4937
  self.isRunning = false;
4938
  self.isPaused = true;
 
4939
  self.trigger("pause", self.__eventArgs());
4940
  }
4941
 
6287
  FooGallery.utils.is,
6288
  FooGallery.utils.obj
6289
  );
6290
+ (function($, _, _utils, _is, _fn, _obj){
6291
 
6292
  /**
6293
  * @summary A factory for classes allowing them to be registered and created using a friendly name.
6481
  result.push(self.make(r.name));
6482
  });
6483
  return result;
6484
+ },
6485
+ /**
6486
+ * @memberof FooGallery.Factory#
6487
+ * @function configure
6488
+ * @param {string} name
6489
+ * @param {object} options
6490
+ * @param {object} classes
6491
+ * @param {object} il8n
6492
+ */
6493
+ configure: function(name, options, classes, il8n){
6494
+ var self = this;
6495
+ if (self.contains(name)) {
6496
+ var reg = self.registered;
6497
+ _obj.extend(reg[name].opt, options);
6498
+ _obj.extend(reg[name].cls, classes);
6499
+ _obj.extend(reg[name].il8n, il8n);
6500
+ }
6501
  }
6502
  });
6503
 
6507
  FooGallery,
6508
  FooGallery.utils,
6509
  FooGallery.utils.is,
6510
+ FooGallery.utils.fn,
6511
+ FooGallery.utils.obj
6512
  );
6513
  (function ($, _, _utils, _is, _fn, _obj) {
6514
 
6604
  }
6605
  return type;
6606
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6607
  options: function (name, options) {
6608
  options = _obj.extend({type: name}, options);
6609
  var self = this, reg = self.registered,
10089
  }
10090
  return options;
10091
  },
 
 
 
 
 
 
 
 
 
10092
  /**
10093
  * @summary Checks if the factory contains a control registered using the supplied `name`.
10094
  * @memberof FooGallery.PagingFactory#
10839
  break;
10840
  case "hide":
10841
  height = self.justify(row, top_start, maxWidth, self.maxRowHeight);
10842
+ if (row.width < maxWidth && rows.length > 1){
10843
  row.visible = false;
10844
  }
10845
  break;
11818
  scaleToZ: function( value, vectorZ, perspective ){
11819
  return value * ( 1 - vectorZ / ( perspective + vectorZ ) );
11820
  },
11821
+ /**
11822
+ * @summary Returns the absolute difference between 2 numbers.
11823
+ * @param {number} num1
11824
+ * @param {number} num2
11825
+ * @returns {number}
11826
+ */
11827
+ getDiff: function( num1, num2 ){
11828
+ return num1 > num2 ? num1 - num2 : num2 - num1;
11829
+ },
11830
 
11831
  //#endregion
11832
 
11909
  },
11910
  initSwipe: function(){
11911
  const self = this;
11912
+ let startX = 0, endX = 0, min = 25 * (window.devicePixelRatio || 1);
11913
  self._listeners.add( self.elem.inner, "touchstart", function( event ){
11914
  self.interacted = true;
11915
  startX = event.changedTouches[0].screenX;
11917
 
11918
  self._listeners.add( self.elem.inner, "touchend", function( event ){
11919
  endX = event.changedTouches[0].screenX;
11920
+ const diff = self.getDiff( startX, endX );
11921
+ if ( diff > min ){
11922
+ if ( endX < startX ){ // swipe left
11923
+ self.next();
11924
+ } else { // swipe right
11925
+ self.previous();
11926
+ }
11927
  }
11928
  endX = 0;
11929
  startX = 0;
12349
  );
12350
  (function ($, _, _utils, _obj, _is) {
12351
 
12352
+ /**
12353
+ * Contains any FooBox specific integration code.
12354
+ *
12355
+ * @namespace FooGallery.__foobox__
12356
+ * @private
12357
+ */
12358
+ _.__foobox__ = {
12359
+ /**
12360
+ * Check if the element is displayed within FooBox.
12361
+ *
12362
+ * @param {jQuery} $element
12363
+ * @return {boolean}
12364
+ */
12365
+ owns: function( $element ){
12366
+ return $element.parents(".fbx-item").length > 0;
12367
+ },
12368
+ /**
12369
+ * Check if the template can be handled by FooBox.
12370
+ *
12371
+ * @param {FooGallery.Template} template
12372
+ * @return {boolean}
12373
+ */
12374
+ handles: function( template ){
12375
+ return template.$el.hasClass("fbx-instance") && _is.object( window[ 'FOOBOX' ] ) && !!$.fn[ 'foobox' ];
12376
+ },
12377
+ /**
12378
+ * Updates the template's FooBox.
12379
+ *
12380
+ * @param {FooGallery.Template} template
12381
+ */
12382
+ update: function( template ){
12383
+ const opts = [{}];
12384
+ if ( _is.object( window[ 'FOOBOX' ][ 'o' ] ) ) {
12385
+ opts.push( window[ 'FOOBOX' ][ 'o' ] );
12386
+ }
12387
+ if ( template.opt.protected ) {
12388
+ opts.push( { images: { noRightClick: true } } );
12389
+ }
12390
+ if ( _is.fn( template.$el[ 'foobox' ] ) ) {
12391
+ template.$el[ 'foobox' ]( _obj.extend.apply( null, opts ) );
12392
+ }
12393
+ }
12394
+ };
12395
+
12396
+ /**
12397
+ * Handles the ready, after-page-change and after-filter-change events and conditional raises a post-load event
12398
+ * on the document body to notify other plugins that content has changed.
12399
+ * @param e
12400
+ * @param current
12401
+ * @param prev
12402
+ * @param isFilter
12403
+ */
12404
  _.triggerPostLoad = function (e, current, prev, isFilter) {
12405
+ const tmpl = e.target;
12406
  if (tmpl instanceof _.Template){
12407
  if (tmpl.initialized && (e.type === "ready" || (e.type === "after-page-change" && !isFilter) || e.type === "after-filter-change")) {
12408
  try {
12409
+ if ( _.__foobox__.owns( tmpl.$el ) ) return;
12410
+
12411
+ if ( _.__foobox__.handles( tmpl ) ){
12412
+ _.__foobox__.update( tmpl );
 
12413
  } else {
12414
  $("body").trigger("post-load");
12415
  }
12420
  }
12421
  };
12422
 
12423
+ /**
12424
+ * The options applied to all galleries initialized using the auto mechanism.
12425
+ *
12426
+ * @memberof FooGallery.
12427
+ * @name autoDefaults
12428
+ * @type {object}
12429
+ */
12430
  _.autoDefaults = {
12431
  on: {
12432
  "ready after-page-change after-filter-change": _.triggerPostLoad
12433
  }
12434
  };
12435
 
12436
+ /**
12437
+ * If set to FALSE then FooGallery will not automatically initialize itself on all valid elements
12438
+ * with an ID starting with 'foogallery-gallery-'.
12439
+ *
12440
+ * @memberof FooGallery.
12441
+ * @name autoEnabled
12442
+ * @type {boolean}
12443
+ * @default true
12444
+ */
12445
  _.autoEnabled = true;
12446
 
12447
+ /**
12448
+ * Allows you to merge options into the FooGallery.autoDefaults object.
12449
+ *
12450
+ * @memberof FooGallery.
12451
+ * @function auto
12452
+ * @param {object} options
12453
+ * @returns {object} The result of the merged options.
12454
+ */
12455
  _.auto = function (options) {
12456
+ return _.autoDefaults = _obj.merge(_.autoDefaults, options);
12457
  };
12458
 
12459
+ /**
12460
+ * Indicates if any globally supplied variables such as the FooGallery_il8n object have been merged.
12461
+ *
12462
+ * @memberof FooGallery.
12463
+ * @name globalsMerged
12464
+ * @type {boolean}
12465
+ * @default false
12466
+ * @readonly
12467
+ */
12468
  _.globalsMerged = false;
12469
 
12470
+ /**
12471
+ * Merges any globally supplied variables such as the FooGallery_il8n object into the various component configurations for the plugin.
12472
+ */
12473
  _.mergeGlobals = function(){
12474
+ // if this has already been done, don't do it again
12475
+ if ( _.globalsMerged === true ) return;
12476
+
12477
+ if ( _is.object( window[ 'FooGallery_il8n' ] ) ){
12478
+ _.merge_il8n( window[ 'FooGallery_il8n' ] );
 
 
 
 
 
 
12479
  _.globalsMerged = true;
12480
  }
12481
  };
12482
 
12483
+ /**
12484
+ * Merges an "il8n" configuration object into the various component configurations for the plugin.
12485
+ * @param configuration
12486
+ */
12487
+ _.merge_il8n = function( configuration ){
12488
+ if ( !_is.object( configuration ) ) return;
12489
+ Object.keys( configuration ).forEach( ( factoryName ) => {
12490
+ if ( _is.object( configuration[ factoryName ] ) && _[ factoryName ] instanceof _.Factory ) {
12491
+ const factory = /** @type FooGallery.Factory */ _[ factoryName ],
12492
+ componentConfiguration = configuration[ factoryName ];
12493
+
12494
+ Object.keys( componentConfiguration ).forEach( ( componentName ) => {
12495
+ if ( _is.object( componentConfiguration[ componentName ] ) ) {
12496
+ factory.configure( componentName, null, null, componentConfiguration[ componentName ] );
12497
+ }
12498
+ } );
12499
+ }
12500
+ } );
12501
+ };
12502
+
12503
  _.load = _.reload = function(){
12504
+ let jqReady = false, customReady = false;
12505
  // this automatically initializes all templates on page load
12506
  $(function () {
12507
  _.mergeGlobals();
12508
  if (_.autoEnabled){
12509
  $('[id^="foogallery-gallery-"]:not(.fg-ready)').foogallery(_.autoDefaults);
12510
  }
12511
+ jqReady = true;
12512
+ if ( jqReady && customReady ){
12513
+ document.dispatchEvent( new CustomEvent( 'foogallery-loaded', { detail: _ } ) );
12514
+ }
12515
  });
12516
 
12517
  _utils.ready(function () {
12519
  if (_.autoEnabled){
12520
  $('[id^="foogallery-gallery-"].fg-ready').foogallery(_.autoDefaults);
12521
  }
12522
+ customReady = true;
12523
+ if ( jqReady && customReady ){
12524
+ document.dispatchEvent( new CustomEvent( 'foogallery-loaded', { detail: _ } ) );
12525
+ }
12526
  });
12527
  };
12528
 
12529
+ document.dispatchEvent( new CustomEvent( 'foogallery-ready', { detail: _ } ) );
12530
+
12531
  _.load();
12532
 
12533
  })(
extensions/default-templates/shared/js/foogallery.min.js CHANGED
@@ -1,8 +1,8 @@
1
  /*
2
  * FooGallery - The Most Intuitive and Extensible Gallery Creation and Management Tool Ever Created for WordPress
3
- * @version 2.0.35
4
  * @link
5
  * @copyright Steven Usher & Brad Vincent 2015
6
  * @license Released under the GPLv3 license.
7
  */
8
- function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}!function(){"use strict";var h,t;function l(e){this.time=e.time,this.target=e.target,this.rootBounds=e.rootBounds,this.boundingClientRect=e.boundingClientRect,this.intersectionRect=e.intersectionRect||r(),this.isIntersecting=!!e.intersectionRect;var e=this.boundingClientRect,e=e.width*e.height,t=this.intersectionRect,t=t.width*t.height;this.intersectionRatio=e?Number((t/e).toFixed(4)):this.isIntersecting?1:0}function e(e,t){var n,i,r,t=t||{};if("function"!=typeof e)throw new Error("callback must be a function");if(t.root&&1!=t.root.nodeType)throw new Error("root must be an Element");this._checkForIntersections=(n=this._checkForIntersections.bind(this),i=this.THROTTLE_TIMEOUT,r=null,function(){r=r||setTimeout(function(){n(),r=null},i)}),this._callback=e,this._observationTargets=[],this._queuedEntries=[],this._rootMarginValues=this._parseRootMargin(t.rootMargin),this.thresholds=this._initThresholds(t.threshold),this.root=t.root||null,this.rootMargin=this._rootMarginValues.map(function(e){return e.value+e.unit}).join(" ")}function n(e,t,n,i){"function"==typeof e.addEventListener?e.addEventListener(t,n,i||!1):"function"==typeof e.attachEvent&&e.attachEvent("on"+t,n)}function i(e,t,n,i){"function"==typeof e.removeEventListener?e.removeEventListener(t,n,i||!1):"function"==typeof e.detatchEvent&&e.detatchEvent("on"+t,n)}function p(e){var t;try{t=e.getBoundingClientRect()}catch(e){}return t?t.width&&t.height?t:{top:t.top,right:t.right,bottom:t.bottom,left:t.left,width:t.right-t.left,height:t.bottom-t.top}:r()}function r(){return{top:0,bottom:0,left:0,right:0,width:0,height:0}}function o(e,t){for(var n=t;n;){if(n==e)return!0;n=d(n)}return!1}function d(e){e=e.parentNode;return e&&11==e.nodeType&&e.host?e.host:e&&e.assignedSlot?e.assignedSlot.parentNode:e}"object"==typeof window&&("IntersectionObserver"in window&&"IntersectionObserverEntry"in window&&"intersectionRatio"in window.IntersectionObserverEntry.prototype?"isIntersecting"in window.IntersectionObserverEntry.prototype||Object.defineProperty(window.IntersectionObserverEntry.prototype,"isIntersecting",{get:function(){return 0<this.intersectionRatio}}):(h=window.document,t=[],e.prototype.THROTTLE_TIMEOUT=100,e.prototype.POLL_INTERVAL=null,e.prototype.USE_MUTATION_OBSERVER=!0,e.prototype.observe=function(t){if(!this._observationTargets.some(function(e){return e.element==t})){if(!t||1!=t.nodeType)throw new Error("target must be an Element");this._registerInstance(),this._observationTargets.push({element:t,entry:null}),this._monitorIntersections(),this._checkForIntersections()}},e.prototype.unobserve=function(t){this._observationTargets=this._observationTargets.filter(function(e){return e.element!=t}),this._observationTargets.length||(this._unmonitorIntersections(),this._unregisterInstance())},e.prototype.disconnect=function(){this._observationTargets=[],this._unmonitorIntersections(),this._unregisterInstance()},e.prototype.takeRecords=function(){var e=this._queuedEntries.slice();return this._queuedEntries=[],e},e.prototype._initThresholds=function(e){e=e||[0];return(e=!Array.isArray(e)?[e]:e).sort().filter(function(e,t,n){if("number"!=typeof e||isNaN(e)||e<0||1<e)throw new Error("threshold must be a number between 0 and 1 inclusively");return e!==n[t-1]})},e.prototype._parseRootMargin=function(e){e=(e||"0px").split(/\s+/).map(function(e){e=/^(-?\d*\.?\d+)(px|%)$/.exec(e);if(!e)throw new Error("rootMargin must be specified in pixels or percent");return{value:parseFloat(e[1]),unit:e[2]}});return e[1]=e[1]||e[0],e[2]=e[2]||e[0],e[3]=e[3]||e[1],e},e.prototype._monitorIntersections=function(){this._monitoringIntersections||(this._monitoringIntersections=!0,this.POLL_INTERVAL?this._monitoringInterval=setInterval(this._checkForIntersections,this.POLL_INTERVAL):(n(window,"resize",this._checkForIntersections,!0),n(h,"scroll",this._checkForIntersections,!0),this.USE_MUTATION_OBSERVER&&"MutationObserver"in window&&(this._domObserver=new MutationObserver(this._checkForIntersections),this._domObserver.observe(h,{attributes:!0,childList:!0,characterData:!0,subtree:!0}))))},e.prototype._unmonitorIntersections=function(){this._monitoringIntersections&&(this._monitoringIntersections=!1,clearInterval(this._monitoringInterval),this._monitoringInterval=null,i(window,"resize",this._checkForIntersections,!0),i(h,"scroll",this._checkForIntersections,!0),this._domObserver&&(this._domObserver.disconnect(),this._domObserver=null))},e.prototype._checkForIntersections=function(){var s=this._rootIsInDom(),a=s?this._getRootRect():r();this._observationTargets.forEach(function(e){var t=e.element,n=p(t),i=this._rootContainsTarget(t),r=e.entry,o=s&&i&&this._computeTargetAndRootIntersection(t,a),e=e.entry=new l({time:window.performance&&performance.now&&performance.now(),target:t,boundingClientRect:n,rootBounds:a,intersectionRect:o});r?s&&i?this._hasCrossedThreshold(r,e)&&this._queuedEntries.push(e):r&&r.isIntersecting&&this._queuedEntries.push(e):this._queuedEntries.push(e)},this),this._queuedEntries.length&&this._callback(this.takeRecords(),this)},e.prototype._computeTargetAndRootIntersection=function(e,u){if("none"!=window.getComputedStyle(e).display){for(var t,n,i,r,o=p(e),s=d(e),a=!1;!a;){var l=null,c=1==s.nodeType?window.getComputedStyle(s):{};if("none"==c.display)return;if(s==this.root||s==h?(a=!0,l=u):s!=h.body&&s!=h.documentElement&&"visible"!=c.overflow&&(l=p(s)),l&&(c=l,l=o,r=i=n=t=void 0,t=Math.max(c.top,l.top),n=Math.min(c.bottom,l.bottom),i=Math.max(c.left,l.left),c=Math.min(c.right,l.right),r=n-t,!(o=0<=(l=c-i)&&0<=r&&{top:t,bottom:n,left:i,right:c,width:l,height:r})))break;s=d(s)}return o}},e.prototype._getRootRect=function(){var e,t;return t=this.root?p(this.root):(t=h.documentElement,e=h.body,{top:0,left:0,right:t.clientWidth||e.clientWidth,width:t.clientWidth||e.clientWidth,bottom:t.clientHeight||e.clientHeight,height:t.clientHeight||e.clientHeight}),this._expandRectByRootMargin(t)},e.prototype._expandRectByRootMargin=function(n){var e=this._rootMarginValues.map(function(e,t){return"px"==e.unit?e.value:e.value*(t%2?n.width:n.height)/100}),e={top:n.top-e[0],right:n.right+e[1],bottom:n.bottom+e[2],left:n.left-e[3]};return e.width=e.right-e.left,e.height=e.bottom-e.top,e},e.prototype._hasCrossedThreshold=function(e,t){var n=e&&e.isIntersecting?e.intersectionRatio||0:-1,i=t.isIntersecting?t.intersectionRatio||0:-1;if(n!==i)for(var r=0;r<this.thresholds.length;r++){var o=this.thresholds[r];if(o==n||o==i||o<n!=o<i)return!0}},e.prototype._rootIsInDom=function(){return!this.root||o(h,this.root)},e.prototype._rootContainsTarget=function(e){return o(this.root||h,e)},e.prototype._registerInstance=function(){t.indexOf(this)<0&&t.push(this)},e.prototype._unregisterInstance=function(){var e=t.indexOf(this);-1!=e&&t.splice(e,1)},window.IntersectionObserver=e,window.IntersectionObserverEntry=l))}(),function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.ResizeObserver=t()}(this,function(){"use strict";var a="undefined"!=typeof Map?Map:(Object.defineProperty(e.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),e.prototype.get=function(e){e=i(this.__entries__,e),e=this.__entries__[e];return e&&e[1]},e.prototype.set=function(e,t){var n=i(this.__entries__,e);~n?this.__entries__[n][1]=t:this.__entries__.push([e,t])},e.prototype.delete=function(e){var t=this.__entries__,e=i(t,e);~e&&t.splice(e,1)},e.prototype.has=function(e){return!!~i(this.__entries__,e)},e.prototype.clear=function(){this.__entries__.splice(0)},e.prototype.forEach=function(e,t){void 0===t&&(t=null);for(var n=0,i=this.__entries__;n<i.length;n++){var r=i[n];e.call(t,r[1],r[0])}},e);function i(e,n){var i=-1;return e.some(function(e,t){return e[0]===n&&(i=t,!0)}),i}function e(){this.__entries__=[]}var n="undefined"!=typeof window&&"undefined"!=typeof document&&window.document===document,t="undefined"!=typeof global&&global.Math===Math?global:"undefined"!=typeof self&&self.Math===Math?self:"undefined"!=typeof window&&window.Math===Math?window:Function("return this")(),l="function"==typeof requestAnimationFrame?requestAnimationFrame.bind(t):function(e){return setTimeout(function(){return e(Date.now())},1e3/60)},p=2;var d=["top","right","bottom","left","width","height","size","weight"],f="undefined"!=typeof MutationObserver,g=(r.prototype.addObserver=function(e){~this.observers_.indexOf(e)||this.observers_.push(e),this.connected_||this.connect_()},r.prototype.removeObserver=function(e){var t=this.observers_,e=t.indexOf(e);~e&&t.splice(e,1),!t.length&&this.connected_&&this.disconnect_()},r.prototype.refresh=function(){this.updateObservers_()&&this.refresh()},r.prototype.updateObservers_=function(){var e=this.observers_.filter(function(e){return e.gatherActive(),e.hasActive()});return e.forEach(function(e){return e.broadcastActive()}),0<e.length},r.prototype.connect_=function(){n&&!this.connected_&&(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),f?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},r.prototype.disconnect_=function(){n&&this.connected_&&(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},r.prototype.onTransitionEnd_=function(e){var e=e.propertyName,t=void 0===e?"":e;d.some(function(e){return!!~t.indexOf(e)})&&this.refresh()},r.getInstance=function(){return this.instance_||(this.instance_=new r),this.instance_},r.instance_=null,r);function r(){function e(){o&&(o=!1,i()),s&&n()}function t(){l(e)}function n(){var e=Date.now();if(o){if(e-a<p)return;s=!0}else s=!(o=!0),setTimeout(t,r);a=e}var i,r,o,s,a;this.connected_=!1,this.mutationEventsAdded_=!1,this.mutationsObserver_=null,this.observers_=[],this.onTransitionEnd_=this.onTransitionEnd_.bind(this),this.refresh=(i=this.refresh.bind(this),s=o=!(r=20),a=0,n)}var m=function(e,t){for(var n=0,i=Object.keys(t);n<i.length;n++){var r=i[n];Object.defineProperty(e,r,{value:t[r],enumerable:!1,writable:!1,configurable:!0})}return e},c=function(e){return e&&e.ownerDocument&&e.ownerDocument.defaultView||t},v=h(0,0,0,0);function u(e){return parseFloat(e)||0}function y(n){for(var e=[],t=1;t<arguments.length;t++)e[t-1]=arguments[t];return e.reduce(function(e,t){return e+u(n["border-"+t+"-width"])},0)}function b(e){var t=e.clientWidth,n=e.clientHeight;if(!t&&!n)return v;var i=c(e).getComputedStyle(e),r=function(e){for(var t={},n=0,i=["top","right","bottom","left"];n<i.length;n++){var r=i[n],o=e["padding-"+r];t[r]=u(o)}return t}(i),o=r.left+r.right,s=r.top+r.bottom,a=u(i.width),l=u(i.height);return"border-box"===i.boxSizing&&(Math.round(a+o)!==t&&(a-=y(i,"left","right")+o),Math.round(l+s)!==n&&(l-=y(i,"top","bottom")+s)),e!==c(e).document.documentElement&&(i=Math.round(a+o)-t,e=Math.round(l+s)-n,1!==Math.abs(i)&&(a-=i),1!==Math.abs(e)&&(l-=e)),h(r.left,r.top,a,l)}var _="undefined"!=typeof SVGGraphicsElement?function(e){return e instanceof c(e).SVGGraphicsElement}:function(e){return e instanceof c(e).SVGElement&&"function"==typeof e.getBBox};function w(e){return n?_(e)?h(0,0,(t=(t=e).getBBox()).width,t.height):b(e):v;var t}function h(e,t,n,i){return{x:e,y:t,width:n,height:i}}o.prototype.isActive=function(){var e=w(this.target);return(this.contentRect_=e).width!==this.broadcastWidth||e.height!==this.broadcastHeight},o.prototype.broadcastRect=function(){var e=this.contentRect_;return this.broadcastWidth=e.width,this.broadcastHeight=e.height,e};var x=o;function o(e){this.broadcastWidth=0,this.broadcastHeight=0,this.contentRect_=h(0,0,0,0),this.target=e}var C=function(e,t){n=(t=t).x,i=t.y,o=t.width,t=t.height,r="undefined"!=typeof DOMRectReadOnly?DOMRectReadOnly:Object,r=Object.create(r.prototype),m(r,{x:n,y:i,width:o,height:t,top:i,right:n+o,bottom:t+i,left:n});var n,i,r,o=r;m(this,{target:e,contentRect:o})},F=(s.prototype.observe=function(e){if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");if("undefined"!=typeof Element&&Element instanceof Object){if(!(e instanceof c(e).Element))throw new TypeError('parameter 1 is not of type "Element".');var t=this.observations_;t.has(e)||(t.set(e,new x(e)),this.controller_.addObserver(this),this.controller_.refresh())}},s.prototype.unobserve=function(e){if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");if("undefined"!=typeof Element&&Element instanceof Object){if(!(e instanceof c(e).Element))throw new TypeError('parameter 1 is not of type "Element".');var t=this.observations_;t.has(e)&&(t.delete(e),t.size||this.controller_.removeObserver(this))}},s.prototype.disconnect=function(){this.clearActive(),this.observations_.clear(),this.controller_.removeObserver(this)},s.prototype.gatherActive=function(){var t=this;this.clearActive(),this.observations_.forEach(function(e){e.isActive()&&t.activeObservations_.push(e)})},s.prototype.broadcastActive=function(){var e,t;this.hasActive()&&(e=this.callbackCtx_,t=this.activeObservations_.map(function(e){return new C(e.target,e.broadcastRect())}),this.callback_.call(e,t,e),this.clearActive())},s.prototype.clearActive=function(){this.activeObservations_.splice(0)},s.prototype.hasActive=function(){return 0<this.activeObservations_.length},s);function s(e,t,n){if(this.activeObservations_=[],this.observations_=new a,"function"!=typeof e)throw new TypeError("The callback provided as parameter 1 is not a function.");this.callback_=e,this.controller_=t,this.callbackCtx_=n}var E=new("undefined"!=typeof WeakMap?WeakMap:a),$=function e(t){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var n=g.getInstance(),t=new F(t,n,this);E.set(this,t)};return["observe","unobserve","disconnect"].forEach(function(t){$.prototype[t]=function(){var e;return(e=E.get(this))[t].apply(e,arguments)}}),void 0!==t.ResizeObserver?t.ResizeObserver:$}),function(e){(window.FooGallery=window.FooGallery||{}).$=e}(jQuery),function(e){e?function(){try{return window.FooGallery.utils}catch(e){return}}()||(window.FooGallery.utils={$:e,version:"1.0.0"}):console.warn("jQuery must be included in the page prior to the FooGallery.utils library.")}(jQuery),function(t,n){"1.0.0"===n.version&&(n.is={},n.is.array=function(e){return"[object Array]"===Object.prototype.toString.call(e)},n.is.boolean=function(e){return"[object Boolean]"===Object.prototype.toString.call(e)},n.is.element=function(e){return"object"===("undefined"==typeof HTMLElement?"undefined":_typeof(HTMLElement))?e instanceof HTMLElement:!!e&&"object"===_typeof(e)&&1===e.nodeType&&"string"==typeof e.nodeName},n.is.empty=function(e){if(n.is.undef(e)||null===e)return!0;if(n.is.number(e)&&0===e)return!0;if(n.is.boolean(e)&&!1===e)return!0;if(n.is.string(e)&&0===e.length)return!0;if(n.is.array(e)&&0===e.length)return!0;if(n.is.jq(e)&&0===e.length)return!0;if(n.is.hash(e)){for(var t in e)if(e.hasOwnProperty(t))return!1;return!0}return!1},n.is.error=function(e){return"[object Error]"===Object.prototype.toString.call(e)},n.is.fn=function(e){return e===window.alert||"[object Function]"===Object.prototype.toString.call(e)},n.is.hash=function(e){return n.is.object(e)&&e.constructor===Object&&!e.nodeType&&!e.setInterval},n.is.jq=function(e){return!n.is.undef(t)&&e instanceof t},n.is.number=function(e){return"[object Number]"===Object.prototype.toString.call(e)&&!isNaN(e)},n.is.object=function(e){return"[object Object]"===Object.prototype.toString.call(e)&&!n.is.undef(e)&&null!==e},n.is.promise=function(e){return n.is.object(e)&&n.is.fn(e.then)&&n.is.fn(e.promise)},n.is.size=function(e){return!!(n.is.string(e)&&!n.is.empty(e)||n.is.number(e))&&/^(auto|none|(?:[\d.]*)+?(?:%|px|mm|q|cm|in|pt|pc|em|ex|ch|rem|vh|vw|vmin|vmax)?)$/.test(e)},n.is.string=function(e){return"[object String]"===Object.prototype.toString.call(e)},n.is.undef=function(e){return void 0===e})}(FooGallery.utils.$,FooGallery.utils),function(l,c,u){var a;"1.0.0"===c.version&&(c.fn={},a=Function.prototype.toString,c.fn.CONTAINS_SUPER=/xyz/.test(a.call(function(){xyz}))?/\b_super\b/:/.*/,c.fn.noop=function(){},c.fn.addOrOverride=function(e,t,n){var i,r,o,s;u.object(e)&&u.string(t)&&!u.empty(t)&&u.fn(n)&&(i=e[t],r=u.fn(i)&&c.fn.CONTAINS_SUPER.test(a.call(n)),e[t]=r?(o=i,s=n,function(){var e=this._super,t=(this._super=o,s.apply(this,arguments));return this._super=e,t}):n)},c.fn.expose=function(t,n,e,i){u.object(t)&&u.object(n)&&u.array(e)&&(i=u.undef(i)?t:i,e.forEach(function(e){u.string(e)&&u.fn(t[e])&&(n[e]=t[e].bind(i))}))},c.fn.apply=function(e,t){return t.unshift(e),new(Function.prototype.bind.apply(e,t))},c.fn.arg2arr=function(e){return Array.prototype.slice.call(e)},c.fn.debounce=function(n,i){var r;return function(){var e=this,t=c.fn.arg2arr(arguments);clearTimeout(r),r=setTimeout(function(){n.apply(e,t)},i)}},c.fn.throttle=function(n,i){var r,o;return function(){var e=this,t=c.fn.arg2arr(arguments);r?(clearTimeout(o),o=setTimeout(function(){Date.now()-r>=i&&(n.apply(e,t),r=Date.now())},i-(Date.now()-r))):(n.apply(e,t),r=Date.now())}},c.fn.resolved=l.Deferred().resolve().promise(),c.fn.rejected=l.Deferred().reject().promise(),c.fn.reject=function(e,t){var n=l.Deferred(),i=c.fn.arg2arr(arguments);return n.reject.apply(n,i).promise()},c.fn.resolve=function(e,t){var n=l.Deferred(),i=c.fn.arg2arr(arguments);return n.resolve.apply(n,i).promise()},c.fn.rejectWith=function(e,t,n){var i=l.Deferred(),r=c.fn.arg2arr(arguments);return r.shift(),i.rejectWith(e,r).promise()},c.fn.resolveWith=function(e,t,n){var i=l.Deferred(),r=c.fn.arg2arr(arguments);return r.shift(),i.resolveWith(e,r).promise()},c.fn.all=function(t){var n=l.Deferred(),i=[];if(u.array(t)&&0<t.length){function r(e,t){s||(i[e]=0===t.length?void 0:1===t.length?t[0]:t,--o||n.resolve(i))}for(var o=t.length,s=!1,a=0,e=t.length;a<e&&"break"!==function(){if(s)return"break";var e=a;u.promise(t[e])?t[e].then(function(){r(e,c.fn.arg2arr(arguments))},function(){s||(s=!0,n.reject.apply(n,c.fn.arg2arr(arguments)))}):r(e,[t[e]])}();a++);}else n.resolve(i);return n.promise()},c.fn.allSettled=function(t){var i=l.Deferred(),r=[];if(u.array(t)&&0<t.length){function n(e,t,n){r[e]={status:t},0<n.length&&(r[e]["rejected"===t?"reason":"value"]=1===n.length?n[0]:n),--o||i.resolve(r)}for(var o=t.length,s=0,e=t.length;s<e;s++)!function(){var e=s;u.promise(t[e])?t[e].then(function(){n(e,"fulfilled",c.fn.arg2arr(arguments))},function(){n(e,"rejected",c.fn.arg2arr(arguments))}):n(e,"fulfilled",[t[e]])}()}else i.resolve(r);return i.promise()})}(FooGallery.utils.$,FooGallery.utils,FooGallery.utils.is),function(e,o){var r;"1.0.0"===e.version&&(e.url={},r=document.createElement("a"),e.url.parts=function(e){r.href=e;var e=r.port||(-1!==["http:","https:"].indexOf(r.protocol)?"https:"===r.protocol?"443":"80":""),t=r.hostname+(e?":"+e:""),n=r.origin||r.protocol+"//"+t,i="/"===r.pathname.slice(0,1)?r.pathname:"/"+r.pathname;return{hash:r.hash,host:t,hostname:r.hostname,href:r.href,origin:n,pathname:i,port:e,protocol:r.protocol,search:r.search}},e.url.full=function(e){return!o.string(e)||o.empty(e)?null:(r.href=e,r.href)},e.url.param=function(e,t,n){return o.string(e)&&o.string(t)&&!o.empty(t)?o.undef(n)?(r=((i=new RegExp("[?|&]"+t+"=([^&;]+?)(&|#|;|$)")).exec(e)||["",""])[1].replace(/\+/g,"%20"),o.string(r)&&!o.empty(r)?decodeURIComponent(r):null):(o.empty(n)?(i=new RegExp("^([^#]*?)(([^#]*)&)?"+t+"(=[^&#]*)?(&|#|$)"),r=e.replace(i,"$1$3$5").replace(/^([^#]*)((\?)&|\?(#|$))/,"$1$3$4")):(i=new RegExp("([?&])"+t+"[^&]*"),t=t+"="+encodeURIComponent(n),(r=e.replace(i,"$1"+t))!==e||i.test(r)||(r+=(-1!==r.indexOf("?")?"&":"?")+t)),r):e;var i,r})}(FooGallery.utils,FooGallery.utils.is),function(a,l,c){"1.0.0"===a.version&&(a.str={},a.str.trim=function(e){return l.string(e)?e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,""):null},a.str.camel=function(e){return l.string(e)?e.toUpperCase()===e?e.toLowerCase():e.replace(/^([A-Z])|[-\s_]+(\w)/g,function(e,t,n){return l.string(n)?n.toUpperCase():t.toLowerCase()}):e},a.str.kebab=function(e){return l.string(e)?e.match(/[A-Z]{2,}(?=[A-Z][a-z0-9]*|\b)|[A-Z]?[a-z0-9]*|[A-Z]|[0-9]+/g).filter(Boolean).map(function(e){return e.toLowerCase()}).join("-"):e},a.str.contains=function(e,t,n){return!(!l.string(e)||l.empty(e)||!l.string(t)||l.empty(t))&&(t.length<=e.length&&-1!==(n?e.toUpperCase().indexOf(t.toUpperCase()):e.indexOf(t)))},a.str.containsWord=function(e,t,n){if(!l.string(e)||l.empty(e)||!l.string(t)||l.empty(t)||e.length<t.length)return!1;for(var i=e.split(/\W/),r=0,o=i.length;r<o;r++)if(n?i[r].toUpperCase()===t.toUpperCase():i[r]===t)return!0;return!1},a.str.endsWith=function(e,t){return!(!l.string(e)||!l.string(t)||t.length>e.length)&&e.slice(e.length-t.length)===t},a.str.startsWith=function(e,t){return!l.empty(e)&&!l.empty(t)&&e.slice(0,t.length)===t},a.str.escapeRegExp=function(e){return l.string(e)?e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"):e},a.str.fnv1a=function(e){if(!l.string(e)||l.empty(e))return null;for(var t=2166136261,n=0,i=e.length;n<i;n++)t=(t^=e.charCodeAt(n))+((t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24));return t>>>0},a.str.from=function(e,t){return a.str.contains(e,t)?e.substring(e.indexOf(t)+t.length):null},a.str.join=function(e,t,n){if(!l.string(e)||!l.string(t))return null;var i=c.arg2arr(arguments);e=i.shift();for(var r=i.shift(),o=0,s=i.length;o<s;o++)t=i[o],l.empty(t)||(a.str.endsWith(r,e)&&(r=r.slice(0,r.length-e.length)),r+=e+(t=a.str.startsWith(t,e)?t.slice(e.length):t));return r},a.str.until=function(e,t){return a.str.contains(e,t)?e.substring(0,e.indexOf(t)):e},a.str.format=function(n,e,t){var i=c.arg2arr(arguments);return n=i.shift(),l.string(n)&&0<i.length&&(1===i.length&&(l.array(i[0])||l.object(i[0]))&&(i=i[0]),a.each(i,function(e,t){n=n.replace(new RegExp("\\{"+t+"\\}","gi"),e+"")})),n})}(FooGallery.utils,FooGallery.utils.is,FooGallery.utils.fn),function(a,l,r,o){"1.0.0"===a.version&&(a.obj={},a.obj.create=function(e){if(!l.object(e))throw TypeError("Argument must be an object");function t(){}return t.prototype=e,new t},a.obj.extend=function(t,e,n){t=l.object(t)?t:{};var i=r.arg2arr(arguments);return i.shift(),a.each(i,function(e){a.obj.merge(t,e)}),t},a.obj.merge=function(e,t){for(var n in e=l.hash(e)?e:{},t=l.hash(t)?t:{})t.hasOwnProperty(n)&&(l.hash(t[n])?(e[n]=l.hash(e[n])?e[n]:{},a.obj.merge(e[n],t[n])):l.array(t[n])?e[n]=t[n].slice():e[n]=t[n]);return e},a.obj.mergeValid=function(t,n,i,e){if(!l.hash(i)||!l.hash(n))return t;var r,o,s;for(r in n=l.hash(n)?n:{},e=l.hash(e)?e:{},n)n.hasOwnProperty(r)&&l.fn(n[r])&&(o=l.array(e[r])?e[r]:l.string(e[r])?[e[r]]:[r],a.each(o,function(e){if(s=a.obj.prop(i,e),!l.undef(s))return n[r](s)?(a.obj.prop(t,r,s),!1):void 0}));return t},a.obj.prop=function(n,e,i){var t,r;if(l.object(n)&&!l.empty(e))return l.undef(i)?(o.contains(e,".")?(t=e.split("."),r=t.length-1,a.each(t,function(e,t){if(t===r)i=n[e];else{if(!l.hash(n[e]))return!1;n=n[e]}})):l.undef(n[e])||(i=n[e]),i):void(o.contains(e,".")?(t=e.split("."),r=t.length-1,a.each(t,function(e,t){t===r?n[e]=i:n=l.hash(n[e])?n[e]:n[e]={}})):l.undef(n[e])||(n[e]=i))})}((FooGallery.utils.$,FooGallery.utils),FooGallery.utils.is,FooGallery.utils.fn,FooGallery.utils.str),function(t,r,s){"1.0.0"===r.version&&(r.ready=function(e){function t(){try{e.call(window,r.$)}catch(e){console.error(e)}}(Function("/*@cc_on return true@*/")()?"complete"===document.readyState:"loading"!==document.readyState)?t():document.addEventListener("DOMContentLoaded",t,!1)},r.find=function(e,t,n){if(s.fn(t))if(n=s.undef(n)?t:n,s.array(e)){for(r=0,o=e.length;r<o;r++)if(t.call(n,e[r],r,e))return e[r]}else if(s.object(e))for(var i=Object.keys(e),r=0,o=i.length;r<o;r++)if(t.call(n,e[i[r]],i[r],e))return e[i[r]]},r.each=function(e,t,n){if(s.fn(t))if(n=s.undef(n)?t:n,s.array(e))for(r=0,o=e.length;r<o&&!1!==t.call(n,e[r],r,e);r++);else if(s.object(e))for(var i=Object.keys(e),r=0,o=i.length;r<o&&!1!==t.call(n,e[i[r]],i[r],e);r++);},r.inArray=function(e,t){return s.array(t)?t.indexOf(e):-1},r.selectify=function(e){if(s.empty(e))return null;if(s.hash(e)){var t,n,i={};for(n in e)e.hasOwnProperty(n)&&(t=r.selectify(e[n]))&&(i[n]=t);return i}return s.string(e)||s.array(e)?(e=s.string(e)?[e]:e).map(function(e){return s.string(e)?"."+e.split(/\s/g).join("."):null}).join(","):null},r.requestFrame=(window.requestAnimationFrame||window.webkitRequestAnimationFrame||function(e){return setTimeout(e,1e3/60)}).bind(window),r.cancelFrame=(window.cancelAnimationFrame||window.webkitCancelAnimationFrame||function(e){clearTimeout(e)}).bind(window),r.nextFrame=function(e,n){return t.Deferred(function(t){s.fn(e)?(n=s.undef(n)?e:n,r.requestFrame(function(){try{t.resolve(e.call(n))}catch(e){t.reject(e)}})):t.reject(new Error("Provided callback is not a function."))}).promise()})}(FooGallery.utils.$,FooGallery.utils,FooGallery.utils.is),function(r,o,s,a){"1.0.0"===r.version&&(r.Class=function(){},r.Class.extend=function(e){e=o.hash(e)?e:{};var t,n=s.create(this.prototype);for(t in e)e.hasOwnProperty(t)&&a.addOrOverride(n,t,e[t]);function i(){if(!o.fn(this.construct))throw new SyntaxError('FooGallery.utils.Class objects must be constructed with the "new" keyword.');this.construct.apply(this,arguments)}return n.construct=o.fn(n.construct)?n.construct:function(){},(i.prototype=n).constructor=o.fn(n.__ctor__)?n.__ctor__:i,i.extend=r.Class.extend,i.override=r.Class.override,i.getBaseClasses=r.Class.getBaseClasses,i.__baseClass__=this,i},r.Class.override=function(e,t){a.addOrOverride(this.prototype,e,t)},r.Class.__baseClass__=null,r.Class.getBaseClasses=function(){return function e(t,n){return o.array(n)||(n=[]),o.fn(t)&&null!==t.__baseClass__?(n.unshift(t.__baseClass__),e(t.__baseClass__,n)):n}(this,[])})}((FooGallery.utils.$,FooGallery.utils),FooGallery.utils.is,FooGallery.utils.obj,FooGallery.utils.fn),function(e,a,l,r){e.ClassRegistry=e.Class.extend({construct:function(e){this.opt=r.extend({allowBase:!0,beforeCreate:null},e),this.registered={}},register:function(e,t,n,i){var r;return!(!a.string(e)||a.empty(e)||!a.fn(t))&&(i=a.number(i)?i:0,r=this.registered[e],this.registered[e]={name:e,ctor:t,config:a.hash(n)?n:{},priority:a.undef(r)?i:r.priority},!0)},each:function(e,t,n){t=!!a.boolean(t)&&t,n=a.undef(n)?e:n;for(var i=this,r=Object.keys(i.registered).map(function(e){return i.registered[e]}),o=(t&&r.sort(function(e,t){return t.priority-e.priority}),0),s=r.length;o<s&&!1!==e.call(n,r[o],o);o++);},find:function(e,t,n){t=!!a.boolean(t)&&t,n=a.undef(n)?e:n;for(var i=this,r=Object.keys(i.registered).map(function(e){return i.registered[e]}),o=(t&&r.sort(function(e,t){return t.priority-e.priority}),0),s=r.length;o<s;o++)if(e.call(n,r[o],o))return r[o];return null},create:function(e,t,n){var i=this,r=l.arg2arr(arguments);if(e=r.shift(),a.string(e)&&i.registered.hasOwnProperty(e)){var o=i.registered[e],s=!0;if((s=o.priority<0&&!i.opt.allowBase?!1:s)&&a.fn(o.ctor))return t=r.shift(),t=i.mergeConfigurations(o.name,t),r.unshift.apply(r,[o.name,t]),l.apply(o.ctor,i.onBeforeCreate(o,r))}return null},onBeforeCreate:function(e,t){return null!==this.opt.beforeCreate&&a.fn(this.opt.beforeCreate)?this.opt.beforeCreate.call(this,e,t):t},mergeConfigurations:function(e,t){var n,i;return a.string(e)&&this.registered.hasOwnProperty(e)?(t=a.hash(t)?t:{},n=this.getBaseClasses(e),i=[{}],n.push(this.registered[e]),n.forEach(function(e){i.push(e.config)}),i.push(t),r.extend.apply(r,i)):{}},getBaseClass:function(){return this.find(function(e){return e.priority<0},!0)},getBaseClasses:function(e){var t=this,e=t.registered[e],n=[];return a.undef(e)||e.ctor.getBaseClasses().forEach(function(e){e=t.fromType(e);a.hash(e)&&n.push(e)}),n},fromType:function(t){if(a.fn(t))return this.find(function(e){return e.ctor===t})}})}((FooGallery.utils.$,FooGallery.utils),FooGallery.utils.is,FooGallery.utils.fn,FooGallery.utils.obj),function(o,s,n){"1.0.0"===o.version&&(o.Event=o.Class.extend({construct:function(e){if(s.empty(e))throw new SyntaxError("FooGallery.utils.Event objects must be supplied a `type`.");e=o.Event.parse(e);this.type=e.type,this.namespace=e.namespace,this.defaultPrevented=!1,this.target=null},preventDefault:function(){this.defaultPrevented=!0},isDefaultPrevented:function(){return this.defaultPrevented}}),o.Event.parse=function(e){e=s.string(e)&&!s.empty(e)?e:null;var t=n.contains(e,".");return{namespaced:t,type:t?n.startsWith(e,".")?null:n.until(e,"."):e,namespace:t?n.from(e,"."):null}},o.EventClass=o.Class.extend({construct:function(){this.events={}},destroy:function(){this.events={}},on:function(n,t,i){var r=this;return s.object(n)?(i=t,Object.keys(n).forEach(function(t){s.fn(n[t])&&t.split(" ").forEach(function(e){r.addListener(e,n[t],i)})})):s.string(n)&&s.fn(t)&&n.split(" ").forEach(function(e){r.addListener(e,t,i)}),r},addListener:function(e,t,n){if(!s.string(e)||/\s/.test(e)||!s.fn(t))return!1;var i=this,r=o.Event.parse(e);return n=s.undef(n)?i:n,s.array(i.events[r.type])||(i.events[r.type]=[]),!i.events[r.type].some(function(e){return e.namespace===r.namespace&&e.fn===t&&e.thisArg===n})&&(i.events[r.type].push({namespace:r.namespace,fn:t,thisArg:n}),!0)},off:function(n,t,i){var r=this;return s.object(n)?(i=t,Object.keys(n).forEach(function(t){t.split(" ").forEach(function(e){r.removeListener(e,n[t],i)})})):s.string(n)&&n.split(" ").forEach(function(e){r.removeListener(e,t,i)}),r},removeListener:function(e,t,n){if(!s.string(e)||/\s/.test(e))return!1;var i=this,r=o.Event.parse(e),e=[];return n=s.undef(n)?i:n,s.empty(r.type)?s.empty(r.namespace)||e.push.apply(e,Object.keys(i.events)):e.push(r.type),e.forEach(function(e){s.array(i.events[e])&&(i.events[e]=i.events[e].filter(function(e){return null!=t?!(e.namespace===r.namespace&&e.fn===t&&e.thisArg===n):null!=r.namespace&&e.namespace!==r.namespace}),0===i.events[e].length&&delete i.events[e])}),!0},trigger:function(e,t){t=s.array(t)?t:[];var n=this,i=[];return e instanceof o.Event?(i.push(e),n.emit(e,t)):s.string(e)&&e.split(" ").forEach(function(e){e=new o.Event(e);i.push(e),n.emit(e,t)}),s.empty(i)?null:1===i.length?i[0]:i},emit:function(t,n){var e;t instanceof FooGallery.utils.Event&&(e=this,n=s.array(n)?n:[],null===t.target&&(t.target=e),s.array(e.events[t.type])&&e.events[t.type].forEach(function(e){null!=t.namespace&&e.namespace!==t.namespace||e.fn.apply(e.thisArg,[t].concat(n))}),s.array(e.events.__all__)&&e.events.__all__.forEach(function(e){e.fn.apply(e.thisArg,[t].concat(n))}))}}))}(FooGallery.utils,FooGallery.utils.is,FooGallery.utils.str),function(e,i,t){"1.0.0"===e.version&&(e.Timer=e.EventClass.extend({construct:function(e){var t=this;t._super(),t.interval=i.number(e)?e:1e3,t.isRunning=!1,t.isPaused=!1,t.canResume=!1,t.canRestart=!1,t.__timeout=null,t.__decrement=!1,t.__time=0,t.__remaining=0,t.__current=0,t.__finish=0,t.__restart=[]},__reset:function(){var e=this;clearTimeout(e.__timeout),e.__timeout=null,e.__decrement=!1,e.__time=0,e.__remaining=0,e.__current=0,e.__finish=0,e.isRunning=!1,e.isPaused=!1,e.canResume=!1},__eventArgs:function(e){return[this.__current,this.__time,this.__decrement].concat(t.arg2arr(arguments))},__tick:function(){var e=this;e.trigger("tick",e.__eventArgs()),e.__current===e.__finish?(e.trigger("complete",e.__eventArgs()),e.__reset()):(e.__decrement?e.__current--:e.__current++,e.__remaining--,e.canResume=0<e.__remaining,e.__timeout=setTimeout(function(){e.__tick()},e.interval))},start:function(e,t){var n=this;n.isRunning||(t=!!i.boolean(t)&&t,n.__restart=[e,t],n.__decrement=t,n.__time=e,n.__remaining=e,n.__current=t?e:0,n.__finish=t?0:e,n.canRestart=!0,n.isRunning=!0,n.isPaused=!1,n.trigger("start",n.__eventArgs()),n.__tick())},countdown:function(e){this.start(e,!0)},countup:function(e){this.start(e,!1)},restart:function(){var e=this;e.stop(),e.canRestart&&e.start.apply(e,e.__restart)},stop:function(){var e=this;(e.isRunning||e.isPaused)&&(e.__reset(),e.trigger("stop",e.__eventArgs()))},pause:function(){var e=this;return null!=e.__timeout&&(clearTimeout(e.__timeout),e.__timeout=null),e.isRunning&&(e.isRunning=!1,e.isPaused=!0,e.canResume=0<e.__remaining,e.trigger("pause",e.__eventArgs())),e.__remaining},resume:function(){var e=this;e.canResume&&(e.isRunning=!0,e.isPaused=!1,e.trigger("resume",e.__eventArgs()),e.__tick())},reset:function(){this.__reset(),this.trigger("reset",this.__eventArgs())}}))}((FooGallery.utils.$,FooGallery.utils),FooGallery.utils.is,FooGallery.utils.fn,FooGallery.utils.obj),function(o,e,t){"1.0.0"===e.version&&(e.FullscreenAPI=e.EventClass.extend({construct:function(){this._super(),this.apis={w3:{enabled:"fullscreenEnabled",element:"fullscreenElement",request:"requestFullscreen",exit:"exitFullscreen",events:{change:"fullscreenchange",error:"fullscreenerror"}},webkit:{enabled:"webkitFullscreenEnabled",element:"webkitCurrentFullScreenElement",request:"webkitRequestFullscreen",exit:"webkitExitFullscreen",events:{change:"webkitfullscreenchange",error:"webkitfullscreenerror"}},moz:{enabled:"mozFullScreenEnabled",element:"mozFullScreenElement",request:"mozRequestFullScreen",exit:"mozCancelFullScreen",events:{change:"mozfullscreenchange",error:"mozfullscreenerror"}},ms:{enabled:"msFullscreenEnabled",element:"msFullscreenElement",request:"msRequestFullscreen",exit:"msExitFullscreen",events:{change:"MSFullscreenChange",error:"MSFullscreenError"}}},this.api=this.getAPI(),this.supported=null!=this.api,this.__listen()},destroy:function(){return this.__stopListening(),this._super()},getAPI:function(){for(var e in this.apis)if(this.apis.hasOwnProperty(e)&&this.apis[e].enabled in document)return this.apis[e];return null},element:function(){return this.supported?document[this.api.element]:null},request:function(e){return this.supported&&e[this.api.request]?e[this.api.request]()||o.Deferred(this.__resolver(this.api.request)).promise():t.rejected},exit:function(){return this.supported&&this.element()?document[this.api.exit]()||o.Deferred(this.__resolver(this.api.exit)).promise():t.rejected},toggle:function(e){return this.element()?this.exit():this.request(e)},__listen:function(){var e=this;e.supported&&o(document).on(e.api.events.change+".utils",function(){e.trigger("change")}).on(e.api.events.error+".utils",function(){e.trigger("error")})},__stopListening:function(){this.supported&&o(document).off(this.api.events.change+".utils").off(this.api.events.error+".utils")},__resolver:function(i){var r=this;return function(e){function t(){e.resolve(),o(document).off(r.api.events.change,t).off(r.api.events.error,n)}function n(){e.reject(new TypeError),o(document).off(r.api.events.change,t).off(r.api.events.error,n)}i===r.api.exit&&r.element()?setTimeout(function(){e.reject(new TypeError)},1):o(document).on(r.api.events.change,t).on(r.api.events.error,n)}}}))}(FooGallery.utils.$,FooGallery.utils,FooGallery.utils.fn),function(l,c,u,a){"1.0.0"===c.version&&(c.transition={},c.transition.dataName="__foo-transition__",c.transition.disableClassName=null,c.transition.timeout=3e3,c.transition.disable=function(e,t){var n,i,r,e=u.jq(e)?e:l(e);0<e.length&&u.fn(t)&&(n=e.get(0),r=null,(i=u.string(c.transition.disableClassName))?e.addClass(c.transition.disableClassName):(r={value:n.style.getPropertyValue("transition"),priority:n.style.getPropertyPriority("transition")},n.style.setProperty("transition","none","important")),t.call(t,e),e.prop("offsetWidth"),i?e.removeClass(c.transition.disableClassName):(n.style.removeProperty("transition"),u.string(r.value)&&0<r.value.length&&n.style.setProperty("transition",r.value,r.priority)))},c.transition.stop=function(e){var t=l.Deferred(),n=u.jq(e)?e:l(e);return 0<n.length?(e=n.data(c.transition.dataName),u.promise(e)?e.always(function(){c.requestFrame(function(){t.resolve(n)})}).reject(new Error("Transition cancelled.")):t.resolve(n)):t.reject(new Error("Unable to stop transition. Make sure the element exists.")),t.promise()},c.transition.createListener=function(e,t,n){var i=e,r=t,o=n,s=u.string(n);return function(e){var t=e.originalEvent instanceof TransitionEvent?e.originalEvent:e,n=!1;(n=t.target===i?!s||t.propertyName===o:n)&&r.apply(r,a.arg2arr(arguments))}},c.transition.start=function(e,n,i,r){var o,s=l.Deferred(),a=u.jq(e)?e:l(e);return 0<a.length&&u.fn(n)?(o=a.get(0),c.transition.stop(a).always(function(){var t=c.transition.createListener(o,function(){s.resolve(a)},i);a.data(c.transition.dataName,s).on("transitionend.foo-utils",t).prop("offsetWidth"),c.requestFrame(function(){var e=setTimeout(function(){s.reject(new Error("Transition safety timeout triggered."))},u.number(r)?r:c.transition.timeout);s.always(function(){clearTimeout(e),a.removeData(c.transition.dataName).off("transitionend.foo-utils",t)}),n.call(n,a)})})):s.reject(new Error("Unable to perform transition. Make sure the element exists and a trigger function is supplied.")),s.promise()},c.transition.modify=function(e,t,n,i){e=u.jq(e)?e:l(e);return 0<e.length&&u.fn(t)?n?(c.transition.disable(e,t),a.resolve()):c.transition.start(e,t,i):a.reject(new Error("Unable to perform modification. Make sure the element exists and a modify function is supplied."))})}(FooGallery.utils.$,FooGallery.utils,FooGallery.utils.is,FooGallery.utils.fn),function(o,s,e,a,i,t){s.DATA_TEMPLATE="__FooGallery__",s.DATA_ITEM="__FooGalleryItem__",s.get=function(e){return o(e).data(s.DATA_TEMPLATE)},s.init=function(t,n){if(0<(n=a.jq(n)?n:o(n)).length){var e=n.data(s.DATA_TEMPLATE);if(e instanceof s.Template)return e.destroy(!0).then(function(){var e=s.template.make(t,n);return e instanceof s.Template?e.initialize():i.rejected})}e=s.template.make(t,n);return e instanceof s.Template?e.initialize():i.rejected},o.fn.foogallery=function(i,r){return r=a.fn(r)?r:o.noop,this.each(function(e,t){if(a.string(i)){var n=o.data(t,s.DATA_TEMPLATE);if(n instanceof s.Template)switch(i){case"layout":return void n.layout();case"destroy":return void n.destroy()}}else s.init(i,t).then(r)})},s.isCached=function(e){var t=new Image,e=(t.src=e,t.complete);return t.src="",t=null,e},s.supportedExifProperties=["camera","aperture","created_timestamp","shutter_speed","focal_length","iso","orientation"],a.exif=function(t){var e;return!!a.object(t)&&(0<(e=Object.keys(t)).length&&e.some(function(e){return-1!==s.supportedExifProperties.indexOf(e)&&!a.empty(t[e])}))},t.trimTo=function(e,t,n){return a.string(e)&&a.number(t)&&0<t&&e.length>t?e.substr(0,t)+(a.string(n)?n:"&hellip;"):e},e.getResizeObserverSize=function(e){var t,e=e.contentBoxSize?e.contentBoxSize[0]?(t=e.contentBoxSize[0].inlineSize,e.contentBoxSize[0].blockSize):(t=e.contentBoxSize.inlineSize,e.contentBoxSize.blockSize):(t=e.contentRect.width,e.contentRect.height);return{width:t,height:e}},s.supportsWebP=!1;var n=new Image;n.onload=function(){s.supportsWebP=0<n.width&&0<n.height},n.onerror=function(){s.supportsWebP=!1},n.src="data:image/webp;base64,UklGRhoAAABXRUJQVlA4TA0AAAAvAAAAEAcQERGIiP4HAA==",s.supportsPicture=!!window.HTMLPictureElement,e.DOMEventListeners=e.Class.extend({construct:function(){this.eventTargets=new Map},add:function(e,t,n,i){e.addEventListener(t,n,i);let r=this.eventTargets.get(e);return r||(r=new Map,this.eventTargets.set(e,r)),!r.get(t)&&(r.set(t,{listener:n,options:i}),!0)},remove:function(e,t){let n=this.eventTargets.get(e);var i;!n||(i=n.get(t))&&(e.removeEventListener(t,i.listener,i.options),n.delete(t),0===n.size&&this.eventTargets.delete(e))},clear:function(){this.eventTargets.forEach(function(e,n){e.forEach(function(e,t){n.removeEventListener(t,e.listener,e.options)})}),this.eventTargets.clear()}}),e.Timeouts=e.Class.extend({construct:function(){this.instances=new Map},has:function(e){return this.instances.has(e)},get:function(e){return this.instances.get(e)},set:function(e,t,n){const i=this;i.delete(e);n={id:setTimeout(function(){i.instances.delete(e),t.call(i)},n),delay:n,fn:t};return this.instances.set(e,n),i},delete:function(e){var t;return!!this.instances.has(e)&&(t=this.instances.get(e),clearTimeout(t.id),this.instances.delete(e))},clear:function(){this.instances.forEach(function(e){clearTimeout(e.id)}),this.instances.clear()}})}(FooGallery.$,FooGallery,FooGallery.utils,FooGallery.utils.is,FooGallery.utils.fn,FooGallery.utils.str),function(o,e,t,a,l){e.Icons=t.Class.extend({construct:function(){this.className="fg-icon",this.registered={default:{close:'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M13.957 3.457l-1.414-1.414-4.543 4.543-4.543-4.543-1.414 1.414 4.543 4.543-4.543 4.543 1.414 1.414 4.543-4.543 4.543 4.543 1.414-1.414-4.543-4.543z"></path></svg>',"arrow-left":'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M10.5 16l1.5-1.5-6.5-6.5 6.5-6.5-1.5-1.5-8 8 8 8z"></path></svg>',"arrow-right":'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M5.5 0l-1.5 1.5 6.5 6.5-6.5 6.5 1.5 1.5 8-8-8-8z"></path></svg>',maximize:'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M2 2v4h-2v-5c0-0.552 0.448-1 1-1h14c0.552 0 1 0.448 1 1v14c0 0.552-0.448 1-1 1h-14c-0.552 0-1-0.448-1-1v-9h9c0.552 0 1 0.448 1 1v7h4v-12h-12z"/></svg>',expand:'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M2 5h-2v-4c0-0.552 0.448-1 1-1h4v2h-3v3z"></path><path d="M16 5h-2v-3h-3v-2h4c0.552 0 1 0.448 1 1v4z"></path><path d="M15 16h-4v-2h3v-3h2v4c0 0.552-0.448 1-1 1z"></path><path d="M5 16h-4c-0.552 0-1-0.448-1-1v-4h2v3h3v2z"></path></svg>',shrink:'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M3 0h2v4c0 0.552-0.448 1-1 1h-4v-2h3v-3z"></path><path d="M11 0h2v3h3v2h-4c-0.552 0-1-0.448-1-1v-4z"></path><path d="M12 11h4v2h-3v3h-2v-4c0-0.552 0.448-1 1-1z"></path><path d="M0 11h4c0.552 0 1 0.448 1 1v4h-2v-3h-3v-2z"></path></svg>',info:'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M7 4.75c0-0.412 0.338-0.75 0.75-0.75h0.5c0.412 0 0.75 0.338 0.75 0.75v0.5c0 0.412-0.338 0.75-0.75 0.75h-0.5c-0.412 0-0.75-0.338-0.75-0.75v-0.5z"></path><path d="M10 12h-4v-1h1v-3h-1v-1h3v4h1z"></path><path d="M8 0c-4.418 0-8 3.582-8 8s3.582 8 8 8 8-3.582 8-8-3.582-8-8-8zM8 14.5c-3.59 0-6.5-2.91-6.5-6.5s2.91-6.5 6.5-6.5 6.5 2.91 6.5 6.5-2.91 6.5-6.5 6.5z"></path></svg>',comment:'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M3 4h10v1h-10zM3 6h8v1h-8zM3 8h4v1h-4zM14.5 1h-13c-0.825 0-1.5 0.675-1.5 1.5v8c0 0.825 0.675 1.5 1.5 1.5h2.5v4l4.8-4h5.7c0.825 0 1.5-0.675 1.5-1.5v-8c0-0.825-0.675-1.5-1.5-1.5zM14 10h-5.924l-3.076 2.73v-2.73h-3v-7h12v7z"></path></svg>',thumbs:'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M3 3v10h-2v-11c0-0.552 0.448-1 1-1h12c0.552 0 1 0.448 1 1v12c0 0.552-0.448 1-1 1h-12c-0.552 0-1-0.448-1-1v-1h4v-2h-2v-2h2v-2h-2v-2h2v-2h2v10h6v-10h-10z"></path></svg>',cart:'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M13.238 9c0.55 0 1.124-0.433 1.275-0.962l1.451-5.077c0.151-0.529-0.175-0.962-0.725-0.962h-10.238c0-1.105-0.895-2-2-2h-3v2h3v8.5c0 0.828 0.672 1.5 1.5 1.5h9.5c0.552 0 1-0.448 1-1s-0.448-1-1-1h-9v-1h8.238zM5 4h9.044l-0.857 3h-8.187v-3z"></path><path d="M6 14.5c0 0.828-0.672 1.5-1.5 1.5s-1.5-0.672-1.5-1.5c0-0.828 0.672-1.5 1.5-1.5s1.5 0.672 1.5 1.5z"></path><path d="M15 14.5c0 0.828-0.672 1.5-1.5 1.5s-1.5-0.672-1.5-1.5c0-0.828 0.672-1.5 1.5-1.5s1.5 0.672 1.5 1.5z"></path></svg>',"circle-close":'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M8 0c-4.418 0-8 3.582-8 8s3.582 8 8 8 8-3.582 8-8-3.582-8-8-8zM8 14.5c-3.59 0-6.5-2.91-6.5-6.5s2.91-6.5 6.5-6.5 6.5 2.91 6.5 6.5-2.91 6.5-6.5 6.5z"></path><path d="M10.5 4l-2.5 2.5-2.5-2.5-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 2.5-2.5 2.5 2.5 1.5-1.5-2.5-2.5 2.5-2.5z"></path></svg>',"auto-progress":'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path class="[ICON_CLASS]-idle" d="M11.39 8c2.152-1.365 3.61-3.988 3.61-7 0-0.339-0.019-0.672-0.054-1h-13.891c-0.036 0.328-0.054 0.661-0.054 1 0 3.012 1.457 5.635 3.609 7-2.152 1.365-3.609 3.988-3.609 7 0 0.339 0.019 0.672 0.054 1h13.891c0.036-0.328 0.054-0.661 0.054-1 0-3.012-1.457-5.635-3.609-7zM2.5 15c0-2.921 1.253-5.397 3.5-6.214v-1.572c-2.247-0.817-3.5-3.294-3.5-6.214v0h11c0 2.921-1.253 5.397-3.5 6.214v1.572c2.247 0.817 3.5 3.294 3.5 6.214h-11zM9.462 10.462c-1.12-0.635-1.181-1.459-1.182-1.959v-1.004c0-0.5 0.059-1.327 1.184-1.963 0.602-0.349 1.122-0.88 1.516-1.537h-6.4c0.395 0.657 0.916 1.188 1.518 1.538 1.12 0.635 1.181 1.459 1.182 1.959v1.004c0 0.5-0.059 1.327-1.184 1.963-1.135 0.659-1.98 1.964-2.236 3.537h7.839c-0.256-1.574-1.102-2.879-2.238-3.538z"/><circle class="[ICON_CLASS]-circle" r="4" cx="8" cy="8"/><path class="[ICON_CLASS]-play" d="M3 2l10 6-10 6z"/><path class="[ICON_CLASS]-pause" d="M2 2h5v12h-5zM9 2h5v12h-5z"/></svg>',search:'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M16 13.5l-4.695-4.695c0.444-0.837 0.695-1.792 0.695-2.805 0-3.314-2.686-6-6-6s-6 2.686-6 6 2.686 6 6 6c1.013 0 1.968-0.252 2.805-0.695l4.695 4.695 2.5-2.5zM2 6c0-2.209 1.791-4 4-4s4 1.791 4 4-1.791 4-4 4-4-1.791-4-4z"></path></svg>',"exif-aperture":'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M 8,0 C 3.5876443,0 0,3.5876443 0,8 c 0,4.412356 3.5876443,8 8,8 4.412356,0 8,-3.587644 8,-8 C 16,3.5876443 12.412356,0 8,0 Z m 0,1 c 3.871916,0 7,3.1280844 7,7 0,3.871916 -3.128084,7 -7,7 C 4.1280844,15 1,11.871916 1,8 1,4.1280844 4.1280844,1 8,1 Z M 7.53125,2.0214844 A 6,6 0 0 0 3.1835938,4.4335938 H 8.9257812 Z M 8.6132812,2.03125 C 9.5587451,3.6702105 10.504247,5.3091484 11.451172,6.9472656 L 12.863281,4.5 A 6,6 0 0 0 8.6132812,2.03125 Z M 2.5957031,5.4101562 A 6,6 0 0 0 2,8 6,6 0 0 0 2.5273438,10.439453 L 5.4296875,5.4101562 Z m 10.8261719,0.033203 -2.855469,4.9433598 h 2.935547 A 6,6 0 0 0 14,8 6,6 0 0 0 13.421875,5.4433592 Z M 4.5722656,8.8945312 3.0996094,11.449219 a 6,6 0 0 0 4.40625,2.527343 z m 2.5820313,2.4707028 1.4960937,2.591797 a 6,6 0 0 0 4.3144534,-2.591797 z"></path></svg>',"exif-camera":'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="m 8.0000002,5 a 4,4 0 0 0 -4,4 4,4 0 0 0 4,4 A 4,4 0 0 0 12,9 4,4 0 0 0 8.0000002,5 Z m 0.019531,1.015625 a 3,2.9814477 0 0 1 2.9804688,3 l -1,-0.00586 a 2,2 0 0 0 0,-0.00976 2,2 0 0 0 -1.9863279,-2 z M 5.125,1 C 4.5,1 4,1.5 4,2.125 V 3.0000004 L 1.125,3 C 0.5,2.9999999 0,3.5 0,4.125 v 9.75 C 0,14.5 0.5,15 1.125,15 h 13.75 C 15.5,15 16,14.5 16,13.875 V 4.125 C 16,3.5 15.5,3 14.875,3 H 12 V 2.125 C 12,1.5 11.5,1 10.875,1 Z M 5.25,2.0000004 h 5.5 c 0.125,0 0.25,0.1249996 0.25,0.25 v 1.75 h 3.75 c 0.125,0 0.25,0.1249996 0.25,0.25 V 13.75 C 15,13.875 14.875,14 14.75,14 H 1.25 C 1.125,14 1,13.875 1,13.75 V 4.25 C 1,4.125 1.125,4 1.25,4 l 3.75,4e-7 v -1.75 c 0,-0.1250004 0.125,-0.25 0.25,-0.25 z"></path></svg>',"exif-created-timestamp":'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M 3,1 V 2 H 1 V 15 H 16 V 2 H 14 V 1 H 13 V 2 H 4 V 1 Z M 2,4 H 15 V 14 H 2 Z M 6,5 V 7 H 8 V 5 Z m 3,0 v 2 h 2 V 5 Z m 3,0 v 2 h 2 V 5 Z M 3,8 v 2 H 5 V 8 Z m 3,0 v 2 H 8 V 8 Z m 3,0 v 2 h 2 V 8 Z m 3,0 v 2 h 2 V 8 Z m -9,3 v 2 h 2 v -2 z m 3,0 v 2 h 2 v -2 z m 3,0 v 2 h 2 v -2 z"></path></svg>',"exif-shutter-speed":'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M 8,0 C 3.5876443,0 -2.9415707e-8,3.5876443 0,8 c 2.3532563e-7,4.412356 3.5876445,8 8,8 4.412356,0 8,-3.587644 8,-8 C 16,3.5876443 12.412356,0 8,0 Z m 0,1 c 3.871916,0 7,3.1280844 7,7 0,3.871915 -3.128085,7 -7,7 -3.8719154,0 -6.9999998,-3.128085 -7,-7 -3e-8,-3.8719156 3.1280844,-7 7,-7 z M 11.646484,3.6464844 8.6445312,6.6484375 A 1.5,1.5 0 0 0 8,6.5 1.5,1.5 0 0 0 6.5,8 1.5,1.5 0 0 0 8,9.5 1.5,1.5 0 0 0 9.5,8 1.5,1.5 0 0 0 9.3515625,7.3554688 L 12.353516,4.3535156 Z M 2,7.5 v 1 h 2 v -1 z M 7.5,12 v 2 h 1 V 12 Z M 12,7.5 v 1 h 2 v -1 z M 7.5,2 v 2 h 1 V 2 Z"></path></svg>',"exif-focal-length":'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="m 1,4.125 -1,0.25 v 7.25 l 1,0.25 z M 5,1 2,4 v 8 l 3,3 h 6.875 C 12.500003,15 13,14.5 13,13.875 V 2.125 C 13,1.4999986 12.5,1 11.875,1 9.576807,0.99914375 7.1414067,0.96597644 5,1 Z M 5.5,2 H 6 V 14 H 5.5 L 3,11.5 v -7 z M 7,2 h 4.75 C 11.875,2 12,2.1249997 12,2.25 v 11.5 c 0,0.125 -0.125,0.250622 -0.25,0.25 H 7 Z m 7,0 c 1,2.2 1.5,4.35 1.5,6 0,1.65 -0.5,3.8 -1.5,6"></path></svg>',"exif-iso":'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M 7.5,0 V 1.6015625 C 6.0969201,1.7146076 4.8392502,2.256185 3.828125,3.1210938 L 2.6035156,1.8964844 1.8964844,2.6035156 3.1210938,3.828125 C 2.256185,4.8392502 1.7146076,6.0969201 1.6015625,7.5 H 0 v 1 h 1.6015625 c 0.1130451,1.4030799 0.6546225,2.66075 1.5195313,3.671875 l -1.2246094,1.224609 0.7070312,0.707032 1.2246094,-1.22461 C 4.8392502,13.743815 6.0969201,14.285392 7.5,14.398438 V 16 h 1 v -1.601562 c 1.4030799,-0.113046 2.66075,-0.654623 3.671875,-1.519532 l 1.224609,1.22461 0.707032,-0.707032 -1.22461,-1.224609 C 13.743815,11.16075 14.285392,9.9030799 14.398438,8.5 H 16 v -1 H 14.398438 C 14.285392,6.0969201 13.743815,4.8392502 12.878906,3.828125 L 14.103516,2.6035156 13.396484,1.8964844 12.171875,3.1210938 C 11.16075,2.256185 9.9030799,1.7146076 8.5,1.6015625 V 0 Z M 8,2.5 c 3.043488,0 5.5,2.4565116 5.5,5.5 0,3.043488 -2.456512,5.5 -5.5,5.5 C 4.9565116,13.5 2.5,11.043488 2.5,8 2.5,4.9565116 4.9565116,2.5 8,2.5 Z"></path></svg>',"exif-orientation":'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M 1.25,0 C 0.625,0 0,0.625 0,1.25 V 5 H 1 V 3 h 8 v 2 h 1 V 1.25 C 10,0.625 9.375,0 8.75,0 Z m 0,1 h 7.5 C 8.875,1 9,1.125 9,1.25 V 2 H 1 V 1.25 C 1,1.125 1.125,1 1.25,1 Z m 0,5 C 0.625,6 0,6.625 0,7.25 v 7.5 C 0,15.375 0.625,16 1.25,16 h 13.5 C 15.375,16 16,15.375 16,14.75 V 7.25 C 16,6.625 15.375,6 14.75,6 Z m 0,1 H 2 v 3 H 1 V 7.25 C 1,7.125 1.125,7 1.25,7 Z M 3,7 h 10 v 8 H 3 Z m 11,0 h 0.75 C 14.875,7 15,7.125 15,7.25 v 7.5 C 15,14.875 14.875,15 14.75,15 H 14 Z M 1,12 h 1 v 3 H 1.25 C 1.125,15 1,14.875 1,14.75 Z"></path></svg>'}}},register:function(e,t){return!(a.empty(e)||a.empty(t)||!a.string(e)||!a.hash(t))&&(this.registered[e]=l.extend({},this.registered.default,t),!0)},get:function(e,t){var n=this,i="default",r=l.extend({},n.registered.default),t=(a.string(t)&&"default"!==t?r=l.extend(r,n.registered[i=t]):a.hash(t)&&(i="custom",r=l.extend(r,t)),a.string(e)&&r.hasOwnProperty(e)?r[e].replace(/\[ICON_CLASS]/g,n.className+"-"+e):null),r=[!1,e,i].map(function(e){return!1===e?n.className:n.className+"-"+e}).join(" ");return o(t).addClass(r)},element:function(e,t){const n=this;let i="default",r=l.extend({},n.registered.default);a.string(t)&&"default"!==t?(i=t,r=l.extend(r,n.registered[t])):a.hash(t)&&(i="custom",r=l.extend(r,t));t=a.string(e)&&r.hasOwnProperty(e)?r[e].replace(/\[ICON_CLASS]/g,n.className+"-"+e):null;if(null!==t){const o=document.createRange().createContextualFragment(t),s=o.querySelector("svg");if(s)return["","-"+e,"-"+i].forEach(function(e){s.classList.add(n.className+e)}),s}return null}}),e.icons=new e.Icons}(FooGallery.$,FooGallery,FooGallery.utils,FooGallery.utils.is,FooGallery.utils.obj),function(r,n,i,o,s){var a="__FooGallerySwipe__",e="ontouchstart"in window,l=window.navigator.msPointerEnabled&&!window.navigator.pointerEnabled&&!e,c=(window.navigator.pointerEnabled||window.navigator.msPointerEnabled)&&!e,u=e||c;n.Swipe=i.Class.extend({construct:function(e,t){var n=this,i=".fgswipe";n.$el=r(e),n.opt=s.extend({threshold:20,allowPageScroll:!1,swipe:r.noop,data:{}},t),n.active=!1,n.startPoint=null,n.endPoint=null,n.events={start:(u?c?l?"MSPointerDown":"pointerdown":"touchstart":"mousedown")+i,move:(u?c?l?"MSPointerMove":"pointermove":"touchmove":"mousemove")+i,end:(u?c?l?"MSPointerUp":"pointerup":"touchend":"mouseup")+i,leave:(!u||c?"mouseleave":null)+i}},init:function(){var e=this;e.$el.on(e.events.start,{self:e},e.onStart),e.$el.on(e.events.move,{self:e},e.onMove),e.$el.on(e.events.end,{self:e},e.onEnd),o.string(e.events.leave)&&e.$el.on(e.events.leave,{self:e},e.onEnd),e.$el.data(a,e)},destroy:function(){var e=this;e.$el.off(e.events.start,e.onStart),e.$el.off(e.events.move,e.onMove),e.$el.off(e.events.end,e.onEnd),o.string(e.events.leave)&&e.$el.off(e.events.leave,e.onEnd),e.$el.removeData(a)},getAngle:function(e,t){e=Math.atan2(e.x-t.x,e.y-t.y),t=Math.round(180*e/Math.PI);return 360-(t<0?360-Math.abs(t):t)},getDistance:function(e,t){var n=t.x-e.x,t=t.y-e.y;return n*=n,t*=t,Math.sqrt(n+t)},getDirection:function(e,t){e=this.getAngle(e,t);return 337.5<e||e<=22.5?"N":22.5<e&&e<=67.5?"NE":67.5<e&&e<=112.5?"E":112.5<e&&e<=157.5?"SE":157.5<e&&e<=202.5?"S":202.5<e&&e<=247.5?"SW":247.5<e&&e<=292.5?"W":292.5<e&&e<=337.5?"NW":"NONE"},getPoint:function(e){var t;return u&&!o.empty(t=e.originalEvent.touches||e.touches)?{x:t[0].pageX,y:t[0].pageY}:o.number(e.pageX)&&o.number(e.pageY)?{x:e.pageX,y:e.pageY}:null},getOffset:function(e){var t=this.$el.offset();return{left:e.x-t.left,top:e.y-t.top}},onStart:function(e){var t=e.data.self,e=t.getPoint(e);o.empty(e)||(t.active=!0,t.startPoint=t.endPoint=e)},onMove:function(e){var t=e.data.self,n=t.getPoint(e);t.active&&!o.empty(n)&&(t.endPoint=n,t.opt.allowPageScroll?o.hash(t.opt.allowPageScroll)&&(n=t.getDirection(t.startPoint,t.endPoint),t.opt.allowPageScroll.x||-1===i.inArray(n,["NE","E","SE","NW","W","SW"])||e.preventDefault(),t.opt.allowPageScroll.y||-1===i.inArray(n,["NW","N","NE","SW","S","SE"])||e.preventDefault()):e.preventDefault())},onEnd:function(e){var t,e=e.data.self;e.active&&(e.active=!1,t={startPoint:e.startPoint,endPoint:e.endPoint,startOffset:e.getOffset(e.startPoint),endOffset:e.getOffset(e.endPoint),angle:e.getAngle(e.startPoint,e.endPoint),distance:e.getDistance(e.startPoint,e.endPoint),direction:e.getDirection(e.startPoint,e.endPoint)},0<e.opt.threshold&&t.distance<e.opt.threshold||(e.opt.swipe.apply(this,[t,e.opt.data]),e.startPoint=null,e.endPoint=null))}}),r.fn.fgswipe=function(t){return this.each(function(){var e=r(this).data(a);if(e instanceof n.Swipe){if(o.string(t)&&o.fn(e[t]))return void e[t]();e.destroy()}o.hash(t)&&(e=new n.Swipe(this,t)).init()})}}(FooGallery.$,FooGallery,FooGallery.utils,FooGallery.utils.is,FooGallery.utils.obj),function(r,e,t,o,s){e.Factory=t.Class.extend({construct:function(){this.registered={}},contains:function(e){return!o.undef(this.registered[e])},make:function(e,t,n){var i,r=s.arg2arr(arguments);return e=r.shift(),i=this.registered[e],o.hash(i)&&o.fn(i.klass)?s.apply(i.klass,r):null},names:function(e){e=!!o.boolean(e)&&e;var t,n=[];if(e){var i=[];for(t in this.registered)this.registered.hasOwnProperty(t)&&i.push(this.registered[t]);i.sort(function(e,t){return t.priority-e.priority}),r.each(i,function(e,t){n.push(t.name)})}else for(t in this.registered)this.registered.hasOwnProperty(t)&&n.push(t);return n},register:function(e,t,n){if(!o.string(e)||o.empty(e)||!o.fn(t))return!1;n=o.number(n)?n:0;var i=this.registered[e];return this.registered[e]={name:e,klass:t,priority:o.undef(i)?n:i.priority},!0},load:function(){var e,n=this,i=[],t=[];for(e in n.registered)n.registered.hasOwnProperty(e)&&t.push(n.registered[e]);return t.sort(function(e,t){return t.priority-e.priority}),r.each(t,function(e,t){i.push(n.make(t.name))}),i}})}(FooGallery.$,FooGallery,FooGallery.utils,FooGallery.utils.is,FooGallery.utils.fn),function(l,s,c,u,a){s.TemplateFactory=s.Factory.extend({construct:function(){this.registered={}},register:function(e,t,n,i,r,o){t=this._super(e,t,o);return t&&((o=this.registered)[e].opt=u.hash(n)?n:{},o[e].cls=u.hash(i)?i:{},o[e].il8n=u.hash(r)?r:{}),t},make:function(e,t){t=u.jq(t)?t:l(t),e=a.extend({},e,t.data("foogallery"));var n=this.type(e,t);return this.contains(n)?(e=this.options(n,e),this._super(n,e,t)):null},type:function(e,t){t=u.jq(t)?t:l(t);var n=u.hash(e)&&u.hash(e)&&u.string(e.type)&&this.contains(e.type)?e.type:null;if(null===n&&0<t.length)for(var i=this.registered,r=this.names(!0),o=0,s=r.length;o<s;o++)if(i.hasOwnProperty(r[o])&&"core"!==r[o]){var a=i[r[o]].cls;if(u.string(a.container)){a=c.selectify(a.container);if(t.is(a)){n=r[o];break}}}return n},configure:function(e,t,n,i){var r;this.contains(e)&&(r=this.registered,a.extend(r[e].opt,t),a.extend(r[e].cls,n),a.extend(r[e].il8n,i))},options:function(e,t){t=a.extend({type:e},t);var n=this.registered,i=n.core.opt,r=n.core.cls,o=n.core.il8n;return u.hash(t.cls)||(t.cls={}),u.hash(t.il8n)||(t.il8n={}),u.undef(s.filtering)||(t=s.filtering.merge(t)),u.undef(s.paging)||(t=s.paging.merge(t)),"core"!==e&&this.contains(e)?((t=a.extend({},i,n[e].opt,t)).cls=a.extend({},r,n[e].cls,t.cls),t.il8n=a.extend({},o,n[e].il8n,t.il8n)):((t=a.extend({},i,t)).cls=a.extend({},r,t.cls),t.il8n=a.extend({},o,t.il8n)),t}}),s.template=new s.TemplateFactory}(FooGallery.$,FooGallery,FooGallery.utils,FooGallery.utils.is,(FooGallery.utils.fn,FooGallery.utils.obj)),function(i,r,o,s,a){var l=0;r.Template=o.EventClass.extend({construct:function(e,t){var n=this;n._super(),n.namespace=".foogallery-"+ ++l,n.$el=s.jq(t)?t:i(t),n.el=n.$el.get(0)||null,n.$scrollParent=null,n.opt=e,n.template=e.template,n.id=n.$el.prop("id")||e.id,n.cls=e.cls,n.il8n=e.il8n,n.sel=o.selectify(n.cls),n.items=r.components.make("items",n),n.pages=s.undef(r.paging)?null:r.paging.make(e.paging.type,n),n.filter=s.undef(r.filtering)?null:r.filtering.make(e.filtering.type,n),n.state=r.components.make("state",n),n._initialize=null,n._layoutTimeout=null,n._layoutWidths=[],n.lastWidth=0,n.initializing=!1,n.initialized=!1,n.destroying=!1,n.destroyed=!1,n._undo={classes:"",style:"",create:!1,children:!1},n.robserver=new ResizeObserver(a.throttle(function(e){n.destroying||n.destroyed||1!==e.length||e[0].target!==n.el||(e=o.getResizeObserverSize(e[0]),n.layout(e.width))},50))},initialize:function(t){var n=this;return s.promise(n._initialize)?n._initialize:n._initialize=i.Deferred(function(e){n.preInit(t)?n.init().then(function(){n.postInit()?(n.ready(),e.resolve(n)):e.reject("post-init failed")}).fail(e.reject):e.reject("pre-init failed")}).fail(function(e){return console.log("initialize failed",n,e),n.destroy()}).promise()},preInit:function(e){var t,n=this;if(n.destroying)return!1;if(e=s.jq(e)?e:i(e),n.initializing=!0,0===e.length&&0===n.$el.parent().length)return!1;0===n.$el.length&&(n.$el=n.create(),n.el=n.$el.get(0),n._undo.create=!0),0<e.length&&n.$el.appendTo(e),s.empty(n.opt.scrollParent)||0===(t=i(n.opt.scrollParent)).length?n.$scrollParent=i(document):n.$scrollParent=t.is("html")?i(document):t,n.$el.data(r.DATA_TEMPLATE,n),s.empty(n.opt.on)||n.on(n.opt.on),n._undo.classes=n.$el.attr("class"),n._undo.style=n.$el.attr("style"),n.$el.is(n.sel.container)||n.$el.addClass(n.cls.container);e=o.selectify(n.opt.classes);return null==e||n.$el.is(e)||n.$el.addClass(n.opt.classes),0===n.$el.children().not(n.sel.item.elem).length&&(n.$el.append(n.createChildren()),n._undo.children=!0),n.opt.protected&&(n.el.oncontextmenu=function(e){return e.preventDefault(),!1}),!n.trigger("pre-init").isDefaultPrevented()},init:function(){return this.trigger("init").isDefaultPrevented()?a.reject("init default prevented"):this.items.fetch()},postInit:function(){var e=this;return!e.destroying&&(!e.trigger("post-init").isDefaultPrevented()&&(e.state.init(),e.pages&&e.pages.init(),i(window).on("popstate"+e.namespace,{self:e},e.onWindowPopState),e.robserver.observe(e.el),!0))},ready:function(){return!this.destroying&&(this.initializing=!1,this.initialized=!0,this.trigger("ready"),!0)},create:function(){return i("<div/>",{id:this.id,class:this.cls.container}).addClass(this.opt.classes)},createChildren:function(){return i()},destroy:function(t){var n=this,e=n._super.bind(n);return n.destroyed?a.resolved:(n.destroying=!0,i.Deferred(function(e){n.initializing&&s.promise(n._initialize)?n._initialize.always(function(){n.destroying=!1,n.doDestroy(t),e.resolve()}):(n.destroying=!1,n.doDestroy(t),e.resolve())}).then(function(){e()}).promise())},doDestroy:function(e){var t=this;t.destroyed||(t.trigger("destroy"),t.robserver.disconnect(),i(window).off(t.namespace),t.state.destroy(e),t.filter&&t.filter.destroy(),t.pages&&t.pages.destroy(),t.items.destroy(),s.empty(t.opt.on)||t.$el.off(t.opt.on),t.trigger("destroyed"),t.$el.removeData(r.DATA_TEMPLATE),s.empty(t._undo.classes)?t.$el.removeAttr("class"):t.$el.attr("class",t._undo.classes),s.empty(t._undo.style)?t.$el.removeAttr("style"):t.$el.attr("style",t._undo.style),t._undo.children&&t.destroyChildren(),t._undo.create&&t.$el.remove(),t.$el=t.state=t.items=t.pages=null,t.destroyed=!0,t.initializing=!1,t.initialized=!1)},destroyChildren:function(){},getAvailable:function(){return(this.pages||this.items).available()},layout:function(e){var t=this;null!==t._initialize&&(0===(e=!s.number(e)?t.el.getBoundingClientRect().width:e)||t._checkWidth(e)||(t.lastWidth=e,t.trigger("layout",[e])))},_checkWidth:function(e){var t,n=this;return(t=-1!==n._layoutWidths.indexOf(e))||(n._layoutWidths.unshift(e),n._layoutWidths.splice(2,n._layoutWidths.length-2),null!=n._layoutTimeout&&clearTimeout(n._layoutTimeout),n._layoutTimeout=setTimeout(function(){n._layoutWidths.splice(0,n._layoutWidths.length)},100)),t},getCSSClass:function(e,t){t=s.empty(t)?"":t;var e=e instanceof RegExp?e:s.string(e)&&this.opt.regex.hasOwnProperty(e)?this.opt.regex[e]:null,n=this.$el.prop("className")||"",n=null!=e?n.match(e):null;return null!=n&&2<=n.length?n[1]:t},onWindowPopState:function(e){var t=e.data.self,e=e.originalEvent.state;s.empty(e)||e.id!==t.id||t.state.set(e)}}),r.template.register("core",r.Template,{id:null,type:"core",classes:"",on:{},lazy:!0,items:[],scrollParent:null,delay:0,throttle:50,shortpixel:!1,srcset:"data-srcset-fg",src:"data-src-fg",protected:!1,template:{},regex:{theme:/(?:\s|^)(fg-(?:light|dark|custom))(?:\s|$)/,loadingIcon:/(?:\s|^)(fg-loading-(?:default|bars|dots|partial|pulse|trail))(?:\s|$)/,hoverIcon:/(?:\s|^)(fg-hover-(?:zoom|zoom2|zoom3|plus|circle-plus|eye|external|tint))(?:\s|$)/,videoIcon:/(?:\s|^)(fg-video-(?:default|1|2|3|4))(?:\s|$)/,border:/(?:\s|^)(fg-border-(?:thin|medium|thick))(?:\s|$)/,hoverColor:/(?:\s|^)(fg-hover-(?:colorize|grayscale))(?:\s|$)/,hoverScale:/(?:\s|^)(fg-hover-scale)(?:\s|$)/,stickyVideoIcon:/(?:\s|^)(fg-video-sticky)(?:\s|$)/,insetShadow:/(?:\s|^)(fg-shadow-inset-(?:small|medium|large))(?:\s|$)/,filter:/(?:\s|^)(fg-filter-(?:1977|amaro|brannan|clarendon|earlybird|lofi|poprocket|reyes|toaster|walden|xpro2|xtreme))(?:\s|$)/}},{container:"foogallery"},{},-100)}(FooGallery.$,FooGallery,FooGallery.utils,FooGallery.utils.is,FooGallery.utils.fn,FooGallery.utils.str),function(e,t){e.Component=t.EventClass.extend({construct:function(e){this._super(),this.tmpl=e},destroy:function(){this.tmpl=null,this._super()}}),e.components=new e.Factory}(FooGallery,FooGallery.utils,FooGallery.utils.is),function(t,o,n,s,a,l){o.State=o.Component.extend({construct:function(e){var t=this,e=(t._super(e),t.apiEnabled=!!window.history&&!!history.replaceState,t.opt=t.tmpl.opt.state,t.enabled=t.opt.enabled,t.current={filter:[],page:0,item:null},t.pushOrReplace=t.isPushOrReplace(t.opt.pushOrReplace)?t.opt.pushOrReplace:"replace",t.defaultMask="foogallery-gallery-{id}",a.escapeRegExp(t.tmpl.id)),n=a.escapeRegExp(t.getMasked()),i=a.escapeRegExp(t.opt.values),r=a.escapeRegExp(t.opt.pair);t.regex={exists:new RegExp("^#"+e+"\\"+i+".+?"),masked:new RegExp("^#"+n+"\\"+i+".+?"),values:new RegExp("(\\w+)"+r+"([^"+i+"]+)","g")}},destroy:function(e){e||this.clear(),this.opt=this.regex={},this._super()},init:function(){this.set(this.initial())},getIdNumber:function(){return this.tmpl.id.match(/\d+/g)[0]},getMasked:function(){var e=a.contains(this.opt.mask,"{id}")?this.opt.mask:this.defaultMask;return a.format(e,{id:this.getIdNumber()})},isPushOrReplace:function(e){return-1!==n.inArray(e,["push","replace"])},exists:function(){return this.regex.values.lastIndex=0,(this.regex.exists.test(location.hash)||this.regex.masked.test(location.hash))&&this.regex.values.test(location.hash)},parse:function(){var e,r=this,o=r.tmpl,s={};return r.exists()&&(r.enabled?(s.id=r.tmpl.id,r.regex.values.lastIndex=0,e=location.hash.match(r.regex.values),t.each(e,function(e,t){var n,i=t.split(r.opt.pair);if(2===i.length)switch(i[0]){case r.opt.itemKey:null!==(n=o.items.fromHash(i[1]))&&(s.item=n);break;case r.opt.pageKey:o.pages&&null!==(n=o.pages.fromHash(i[1]))&&(s.page=n);break;case r.opt.filterKey:o.filter&&null!==(n=o.filter.fromHash(i[1]))&&(s.filter=n)}})):r.apiEnabled?history.replaceState(null,"",location.pathname+location.search):location.hash="#"),s},hashify:function(e){var t,n,i=this,r=i.tmpl;return s.hash(e)?(t=[],null!==(n=r.items.toHash(e.item))&&t.push(i.opt.itemKey+i.opt.pair+n),r.filter&&null!==(n=r.filter.toHash(e.filter))&&t.push(i.opt.filterKey+i.opt.pair+n),r.pages&&null!==(n=r.pages.toHash(e.page))&&t.push(i.opt.pageKey+i.opt.pair+n),0<t.length&&t.unshift("#"+i.getMasked()),t.join(i.opt.values)):""},replace:function(e){var t,n;this.enabled&&this.apiEnabled&&(e.id=this.tmpl.id,t=this.hashify(e),n=s.empty(t),e=l.extend({},e,{item:e.item instanceof o.Item?e.item.id:e.item}),history.replaceState(n?null:e,"",n?location.pathname+location.search:t))},push:function(e){var t,n;this.enabled&&this.apiEnabled&&(e.id=this.tmpl.id,t=this.hashify(e),n=s.empty(t),e=l.extend({},e,{item:e.item instanceof o.Item?e.item.id:e.item}),history.pushState(n?null:e,"",n?location.pathname+location.search:t))},update:function(e,t){var n=this;n.enabled&&n.apiEnabled&&(t=n.isPushOrReplace(t)?t:n.pushOrReplace,n[t](e))},clear:function(){this.exists()&&this.replace({})},initial:function(){var e=this.parse();return s.empty(e)?this.get():l.extend({filter:[],page:1,item:null},e)},get:function(e){var t,n=this.tmpl,i={};return e instanceof o.Item&&(i.item=e),n.filter&&null!==(t=n.filter.getState())&&(i.filter=t),n.pages&&null!==(t=n.pages.getState())&&(i.page=t),l.extend({filter:[],page:1,item:null},i)},set:function(e){var t,n,i,r=this.tmpl;s.hash(e)&&(t=l.extend({filter:[],page:1,item:null},e),r.items.reset(),r.trigger("before-state",[t]).isDefaultPrevented()||(r.filter&&r.filter.setState(t),r.pages?r.pages.setState(t):(n=r.items.available(),r.items.isAll(n)||(i=r.items.not(n),r.items.detach(i)),r.items.create(n,!0)),t.item instanceof o.Item&&(this.opt.scrollTo&&t.item.scrollTo(),s.empty(e.item)||(e.item=null,this.replace(e))),this.current=t,r.trigger("after-state",[t])))}}),o.template.configure("core",{state:{enabled:!1,scrollTo:!0,pushOrReplace:"replace",mask:"foogallery-gallery-{id}",values:"/",pair:":",array:"+",arraySeparator:",",itemKey:"i",filterKey:"f",pageKey:"p"}}),o.components.register("state",o.State)}(FooGallery.$,FooGallery,FooGallery.utils,FooGallery.utils.is,FooGallery.utils.str,FooGallery.utils.obj),function(s,o,n,a,i,l){o.Items=o.Component.extend({construct:function(e){var t=this,e=(t.ALLOW_CREATE=!0,t.ALLOW_APPEND=!0,t.LAYOUT_AFTER_LOAD=!0,t._super(e),t._typeRegex=/(?:^|\s)?fg-type-(.*?)(?:$|\s)/,t._fetched=null,t._all=[],t._available=[],t._unavailable=[],t._observed=new Map,t.tmpl.cls.item.caption);t.tmpl.sel.item.caption.all=n.selectify([e.elem,e.inner,e.title,e.description]),t._wait=[],t._layoutTimeout=null,t.iobserver=new IntersectionObserver(function(e){t.tmpl.destroying||t.tmpl.destroyed||(t.LAYOUT_AFTER_LOAD&&clearTimeout(t._layoutTimeout),e.forEach(function(e){!e.isIntersecting||(e=t._observed.get(e.target))instanceof o.Item&&t._wait.push(e.load())}),t.LAYOUT_AFTER_LOAD&&(t._layoutTimeout=setTimeout(function(){0<t._wait.length&&i.allSettled(t._wait.splice(0)).then(function(){t.tmpl.layout()})},100)))})},fromHash:function(t){return this.find(this._all,function(e){return e.id===t})},toHash:function(e){return e instanceof o.Item?e.id:null},destroy:function(){var e=this,t=e.all();e.iobserver.disconnect(),0<t.length&&(e.tmpl.trigger("destroy-items",[t]),0<(t=s.map(t,function(e){return e.destroy()?e:null})).length&&e.tmpl.trigger("destroyed-items",[t])),e._fetched=null,e._all=[],e._available=[],e._unavailable=[],e._observed.clear(),e._super()},fetch:function(e){var t=this;if(!e&&a.promise(t._fetched))return t._fetched;var e=t.tmpl.id+"_items",n=t.tmpl.sel,i=t.tmpl.opt.items,r=s.Deferred(),o=t.make(t.tmpl.$el.find(n.item.elem));return a.empty(i)?(a.array(window[e])&&o.push.apply(o,t.make(window[e])),r.resolve(o)):a.array(i)?(o.push.apply(o,t.make(i)),r.resolve(o)):a.string(i)?s.get(i).then(function(e){o.push.apply(o,t.make(e)),r.resolve(o)},function(e,t,n){console.log("FooGallery: GET items error.",i,e,t,n),r.resolve(o)}):r.resolve(o),r.then(function(e){t.setAll(e)}),t._fetched=r.promise()},toJSON:function(e){return(e?this.all():this.available()).map(function(e){return e.toJSON()})},all:function(){return this._all.slice()},count:function(e){return(e?this.all():this.available()).length},available:function(e){return a.fn(e)?this._available.filter(e,this):this._available.slice()},unavailable:function(e){return a.fn(e)?this._unavailable.filter(e,this):this._unavailable.slice()},setAll:function(e){this._all=a.array(e)?e:[],this._all.forEach(function(e,t){e.index=t,a.empty(e.id)&&(e.id=t+1+"")}),this._available=this.all(),this._unavailable=[]},setAvailable:function(e){var t=this;t._available=a.array(e)?e:[],t._all.length!==t._available.length?t._unavailable=t._all.filter(function(e){return-1===t._available.indexOf(e)}):t._unavailable=[]},reset:function(){this.setAvailable(this.all())},find:function(e,t){if(t=a.fn(t)?t:function(){return!0},a.array(e))for(var n=0,i=e.length;n<i;n++)if(!0===t.call(this,e[n]))return e[n];return null},not:function(t){var e=this.all();return a.array(t)?e.filter(function(e){return-1===t.indexOf(e)}):e},isAll:function(e){return!!a.array(e)&&this._all.length===e.length},first:function(e){return this.find(this._available,e)},last:function(e){return this.find(this._available.slice().reverse(),e)},next:function(e,t,n){if(!(e instanceof o.Item))return null;n=!!a.boolean(n)&&n;var i,r=this._available.slice(),e=r.indexOf(e);return-1!==e?(i=r.slice(0,e),r=r.slice(e+1),n&&(r=r.concat(i)),this.find(r,t)):null},prev:function(e,t,n){if(!(e instanceof o.Item))return null;n=!!a.boolean(n)&&n;var i,r=this._available.slice().reverse(),e=r.indexOf(e);return-1!==e?(i=r.slice(0,e),r=r.slice(e+1),n&&(r=r.concat(i)),this.find(r,t)):null},get:function(t,e){e=e?this._all:this._available;return a.number(t)?0<=t&&t<this._all.length?e[t]:null:this.find(e,function(e){return e.el===t})},indexOf:function(e,t){return(t?this._all:this._available).indexOf(e)},creatable:function(e){return this.ALLOW_CREATE&&a.array(e)?s.map(e,function(e){return e instanceof o.Item&&!e.isCreated?e:null}):[]},appendable:function(e){return this.ALLOW_APPEND&&a.array(e)?s.map(e,function(e){return e instanceof o.Item&&e.isCreated&&!e.isAttached?e:null}):[]},detachable:function(e){return a.array(e)?s.map(e,function(e){return e instanceof o.Item&&e.isCreated&&e.isAttached?e:null}):[]},jquerify:function(e){return s(s.map(e,function(e){return e.$el.get()}))},make:function(e){var i=this,t=[];if(a.jq(e)||a.array(e)){var r=[],e=s.makeArray(e);if(0===e.length)return t;0<(t=!i.tmpl.trigger("make-items",[e]).isDefaultPrevented()?s.map(e,function(e){var t=i.type(e),n=l.extend(a.hash(e)?e:{},{type:t}),t=o.components.make(t,i.tmpl,n);return a.element(e)?t.parse(e)?(r.push(t),i.ALLOW_APPEND||t.detach(),t):null:t}):t).length&&i.tmpl.trigger("made-items",[t]),0<r.length&&i.tmpl.trigger("parsed-items",[r])}return t},type:function(e){var t;return a.hash(e)?t=e.type:!a.element(e)||null!==(e=e.className.match(this._typeRegex))&&2===e.length&&(t=e[1]),a.string(t)&&o.components.contains(t)?t:"image"},create:function(e,t){var n=[],i=this.creatable(e);return 0<i.length&&0<(n=!this.tmpl.trigger("create-items",[i]).isDefaultPrevented()?s.map(i,function(e){return e.create()?e:null}):n).length&&this.tmpl.trigger("created-items",[n]),a.boolean(t)&&t?this.append(e):n},append:function(e){var t=[],e=this.appendable(e);return 0<e.length&&0<(t=!this.tmpl.trigger("append-items",[e]).isDefaultPrevented()?s.map(e,function(e){return e.append()?e:null}):t).length&&this.tmpl.trigger("appended-items",[t]),t},detach:function(e){var t=[],e=this.detachable(e);return 0<e.length&&0<(t=!this.tmpl.trigger("detach-items",[e]).isDefaultPrevented()?s.map(e,function(e){return e.detach()?e:null}):t).length&&this.tmpl.trigger("detached-items",[t]),t},observe:function(e){!(this.iobserver&&e.isCreated&&e.isAttached)||e.isLoading&&e.isLoaded||(this.iobserver.observe(e.el),this._observed.set(e.el,e))},unobserve:function(e){this.iobserver&&(this.iobserver.unobserve(e.el),this._observed.delete(e.el))}}),o.components.register("items",o.Items)}(FooGallery.$,FooGallery,FooGallery.utils,FooGallery.utils.is,FooGallery.utils.fn,FooGallery.utils.obj),function(y,b,_,w,o,x){b.Item=b.Component.extend({construct:function(e,t){var n=this;n._super(e),n.cls=e.cls.item,n.il8n=e.il8n.item,n.sel=e.sel.item,n.opt=o.extend({},e.opt.item,t),n.isAttached=!1,n.isCreated=!1,n.isDestroyed=!1,n.isLoading=!1,n.isLoaded=!1,n.isError=!1,n.isParsed=!1,n.isPicture=!1,n.$el=null,n.el=null,n.$inner=null,n.$anchor=null,n.$overlay=null,n.$wrap=null,n.$image=null,n.$caption=null,n.$loader=null,n.index=-1,n.type=n.opt.type,n.id=n.opt.id,n.productId=n.opt.productId,n.href=n.opt.href,n.placeholder=n.opt.placeholder,n.src=n.opt.src,n.srcset=n.opt.srcset,n.sources=n.opt.sources,n.width=n.opt.width,n.height=n.opt.height,n.title=n.opt.title,n.alt=n.opt.alt,n.caption=n.opt.caption,n.description=n.opt.description,n.attr=n.opt.attr,n.tags=n.opt.tags,n.maxCaptionLength=n.opt.maxCaptionLength,n.maxDescriptionLength=n.opt.maxDescriptionLength,n.showCaptionTitle=n.opt.showCaptionTitle,n.showCaptionDescription=n.opt.showCaptionDescription,n.noLightbox=n.opt.noLightbox,n.panelHide=n.opt.panelHide,n.exif=n.opt.exif,n.hasExif=w.exif(n.exif),n.ribbon=n.opt.ribbon,n.hasRibbon=w.hash(n.ribbon)&&w.string(n.ribbon.text)&&w.string(n.ribbon.type),n.buttons=n.opt.buttons,n._load=null,n._undo={classes:"",style:"",placeholder:!1}},destroy:function(){var e=this;return e.tmpl.trigger("destroy-item",[e]).isDefaultPrevented()||(e.isDestroyed=e.doDestroyItem()),e.isDestroyed&&(e.tmpl.trigger("destroyed-item",[e]),e._super()),e.isDestroyed},doDestroyItem:function(){var e=this;return e.isParsed?(e.$anchor.add(e.$caption).off("click.foogallery"),e.append(),e.tmpl.items.unobserve(e),w.empty(e._undo.classes)?e.$el.removeAttr("class"):e.$el.attr("class",e._undo.classes),w.empty(e._undo.style)?e.$el.removeAttr("style"):e.$el.attr("style",e._undo.style),e._undo.placeholder&&e.$image.prop("src")===e.placeholder&&e.$image.removeAttr("src")):e.isCreated&&(e.detach(),e.$el.remove()),!0},parse:function(e){var t=this,e=y(e);return!t.tmpl.trigger("parse-item",[t,e]).isDefaultPrevented()&&(t.isCreated=e.is(t.sel.elem))&&(t.isParsed=t.doParseItem(e)),t.isParsed&&(t.isLoaded||t.tmpl.items.observe(t),t.tmpl.trigger("parsed-item",[t])),t.isParsed},doParseItem:function(e){var n=this,t=n.cls,i=n.sel,r=e.get(0);if(n._undo.classes=e.attr("class")||"",n._undo.style=e.attr("style")||"",n.$el=e.data(b.DATA_ITEM,n),n.el=r,n.$inner=y(r.querySelector(i.inner)),n.$anchor=y(r.querySelector(i.anchor)).on("click.foogallery",{self:n},n.onAnchorClick),n.$image=y(r.querySelector(i.image)),n.$caption=y(r.querySelector(i.caption.elem)).on("click.foogallery",{self:n},n.onCaptionClick),n.$overlay=y(r.querySelector(i.overlay)),n.$wrap=y(r.querySelector(i.wrap)),n.$loader=y(r.querySelector(i.loader)),!(n.$el.length&&n.$inner.length&&n.$anchor.length&&n.$image.length))return console.error("FooGallery Error: Invalid HTML markup. Check the item markup for additional elements or malformed HTML in the title or description.",n),n.isError=!0,n.tmpl.trigger("error-item",[n]),0!==n.$el.length&&n.$el.remove(),!1;n.isAttached=null!==r.parentNode,n.isLoading=n.$el.hasClass(t.loading),n.isLoaded=n.$el.hasClass(t.loaded),n.isError=n.$el.hasClass(t.error);var e=n.$anchor.data(),i=(n.id=e.id||n.id,n.productId=e.productId||n.productId,n.tags=e.tags||n.tags,n.href=e.href||n.$anchor.attr("href")||n.href,r=n.$image.is("picture")?(n.isPicture=!0,n.sources=n.$image.find("source").map(function(e,t){return{srcset:t.getAttribute(n.tmpl.opt.srcset),type:t.getAttribute("type"),media:t.getAttribute("media"),sizes:t.getAttribute("sizes")}}).get(),n.$image.find("img")):n.$image,n.src=r.attr(n.tmpl.opt.src)||n.src,n.srcset=r.attr(n.tmpl.opt.srcset)||n.srcset,n.width=parseInt(r.attr("width"))||n.width,n.height=parseInt(r.attr("height"))||n.height,n.title=r.attr("title")||n.title,n.alt=r.attr("alt")||n.alt,n.caption=e.title||e.captionTitle||n.caption,n.description=e.description||e.captionDesc||n.description,n.noLightbox=n.$anchor.hasClass(t.noLightbox),n.panelHide=n.$anchor.hasClass(t.panelHide),w.exif(e.exif)&&(n.exif=o.extend(n.exif,e.exif),n.hasExif=!0),0<n.maxCaptionLength&&((e=x.trimTo(n.caption,n.maxCaptionLength))!==n.caption&&n.$caption.find(i.caption.title).html(e)),!n.maxDescriptionLength||(e=x.trimTo(n.description,n.maxDescriptionLength))!==n.description&&n.$caption.find(i.caption.description).html(e),r.get(0)),e=(w.string(i.src)&&0!==i.src.length||(w.string(n.placeholder)&&0!==n.placeholder.length||(n.placeholder=n.createPlaceholder(n.width,n.height)),0<n.placeholder.length&&(i.src=n.placeholder,n._undo.placeholder=!0)),n.getTypeClass());return n.$el.hasClass(e)||n.$el.addClass(e),n.hasExif&&!n.$el.hasClass(t.exif)&&n.$el.addClass(t.exif),!n.isCreated||!n.isAttached||n.isLoading||n.isLoaded||n.isError||n.$el.hasClass(t.idle)||n.$el.addClass(t.idle),n.doShortPixel(),!0},create:function(){var e=this;return!e.isCreated&&w.string(e.href)&&w.string(e.src)&&w.number(e.width)&&w.number(e.height)&&(e.tmpl.trigger("create-item",[e]).isDefaultPrevented()||(e.isCreated=e.doCreateItem()),e.isCreated&&e.tmpl.trigger("created-item",[e])),e.isCreated},_setAttributes:function(t,n){Object.keys(n).forEach(function(e){w.empty(n[e])||t.setAttribute(e,w.string(n[e])?n[e]:JSON.stringify(n[e]))})},doShortPixel:function(){var e,t=this;function n(e,t,n){return"/"===t||"/"===n?"/":t}t.tmpl.opt.shortpixel&&!b.supportsWebP&&(t.href=t.href.replace(e=/([\/,+])to_webp([\/,+])/i,n),t.src=t.src.replace(e,n),t.srcset=t.srcset.replace(e,n))},doCreateItem:function(){var i,u,r=this,e=r.cls,t=r.attr,n=r.hasExif?e.exif:"",o=(r.isLoaded=!r.tmpl.opt.lazy,r.isPicture=0<r.sources.length,r.doShortPixel(),document.createElement("div")),n=(r._setAttributes(o,t.elem),o.className=[e.elem,r.getTypeClass(),n,r.isLoaded?e.loaded:e.idle].join(" "),document.createElement("figure")),s=(r._setAttributes(n,t.inner),n.className=e.inner,[e.anchor]),a=(r.noLightbox&&s.push(e.noLightbox),r.panelHide&&s.push(e.panelHide),document.createElement("a")),s=(r._setAttributes(a,t.anchor),r._setAttributes(a,{class:s.join(" "),href:r.href,"data-id":r.id,"data-type":r.type,"data-title":r.caption,"data-description":r.description,"data-tags":r.tags,"data-exif":r.exif,"data-product-id":r.productId}),w.string(r.placeholder)&&0!==r.placeholder.length||(r.placeholder=r.createPlaceholder(r.width,r.height)),document.createElement("img")),l=(r._setAttributes(s,t.image),{class:e.image,src:r.placeholder,width:r.width+"",height:r.height+"",title:r.title,alt:r.alt}),l=(r.isLoaded?(l.src=r.src,l.srcset=r.srcset):(l[r.tmpl.opt.src]=r.src,l[r.tmpl.opt.srcset]=r.srcset),r._setAttributes(s,l),r.isPicture&&(i=document.createElement("picture"),r._setAttributes(i,t.picture),r.sources.forEach(function(e){var t=document.createElement("source"),n={media:e.media,sizes:e.sizes,type:e.type};r.isLoaded?n.srcset=e.srcset:n[r.tmpl.opt.srcset]=e.srcset,r._setAttributes(t,n),i.appendChild(t)}),i.appendChild(s)),r.hasRibbon&&((u=document.createElement("div")).className=r.ribbon.type,(l=document.createElement("span")).innerHTML=r.ribbon.text,u.appendChild(l)),document.createElement("span")),h=(l.className=e.overlay,document.createElement("span")),p=(h.className=e.wrap,document.createElement("div")),d=(p.className=e.loader,document.createElement("figcaption")),f=(r._setAttributes(d,t.caption.elem),d.className=e.caption.elem,document.createElement("div")),c=(r._setAttributes(f,t.caption.inner),f.className=e.caption.inner,null),g=r.showCaptionTitle&&w.string(r.caption)&&0<r.caption.length,c=(g&&(c=document.createElement("div"),r._setAttributes(c,t.caption.title),c.className=e.caption.title,c.innerHTML=0<r.maxCaptionLength?x.trimTo(r.caption,r.maxCaptionLength):r.caption,f.appendChild(c)),null),m=r.showCaptionDescription&&w.string(r.description)&&0<r.description.length,v=(m&&(c=document.createElement("div"),r._setAttributes(c,t.caption.description),c.className=e.caption.description,c.innerHTML=0<r.maxDescriptionLength?x.trimTo(r.description,r.maxDescriptionLength):r.description,f.appendChild(c)),null),t=w.array(r.buttons)&&0<r.buttons.length;return t&&((v=document.createElement("div")).className=e.caption.buttons,_.each(r.buttons,function(e){var t;w.hash(e)&&w.string(e.text)&&((t=document.createElement("a")).innerHTML=e.text,w.string(e.url)&&0<e.url.length&&(t.href=e.url),w.string(e.rel)&&0<e.rel.length&&(t.rel=e.rel),w.string(e.target)&&0<e.target.length&&(t.target=e.target),w.string(e.classes)&&0<e.classes.length&&(t.className=e.classes),w.hash(e.attr)&&r._setAttributes(t,e.attr),v.appendChild(t))}),f.appendChild(v)),d.appendChild(f),r.isPicture?h.appendChild(i):h.appendChild(s),a.appendChild(l),a.appendChild(h),n.appendChild(a),(g||m||t)&&n.appendChild(d),r.hasRibbon&&o.appendChild(u),o.appendChild(n),o.appendChild(p),r.$el=y(o).data(b.DATA_ITEM,r),r.el=o,r.$inner=y(n),r.$anchor=y(a).on("click.foogallery",{self:r},r.onAnchorClick),r.$overlay=y(l),r.$wrap=y(h),r.isPicture?r.$image=y(i):r.$image=y(s),r.$caption=y(d).on("click.foogallery",{self:r},r.onCaptionClick),r.$loader=y(p),!0},append:function(){var e=this;return e.isCreated&&!e.isAttached&&(e.tmpl.trigger("append-item",[e]).isDefaultPrevented()||(e.tmpl.$el.append(e.$el.removeClass(e.cls.hidden)),e.isAttached=!0),e.isAttached&&(e.isLoaded||e.tmpl.items.observe(e),e.tmpl.trigger("appended-item",[e]))),e.isAttached},detach:function(){var e=this;return e.isCreated&&e.isAttached&&(e.tmpl.items.unobserve(e),e.tmpl.trigger("detach-item",[e]).isDefaultPrevented()||(e.$el.detach().removeClass(e.cls.hidden),e.isAttached=!1),e.isAttached||e.tmpl.trigger("detached-item",[e])),!e.isAttached},load:function(){var n=this;return w.promise(n._load)?n._load:n._load=y.Deferred(function(t){return n.isLoaded?t.resolve(n):n.isCreated&&n.isAttached?n.tmpl.trigger("load-item",[n]).isDefaultPrevented()?t.reject("default prevented"):(n.isLoading=!0,n.tmpl.items.unobserve(n),n.$el.removeClass(n.cls.idle).removeClass(n.cls.hidden).removeClass(n.cls.loaded).removeClass(n.cls.error).addClass(n.cls.loading),void n.loadIMG().then(function(){n.isLoading=!1,n.isLoaded=!0,n.$el.removeClass(n.cls.loading).addClass(n.cls.loaded),n.tmpl.trigger("loaded-item",[n]),t.resolve(n)},function(e){n.isLoading=!1,n.isError=!0,n.$el.removeClass(n.cls.loading).addClass(n.cls.error),n.tmpl.trigger("error-item",[n]),t.reject(e)})):t.reject("not created or attached")}).promise()},loadIMG:function(){var o=this;return new y.Deferred(function(e){var t=(o.isPicture?o.$image.find("img"):o.$image).get(0);if(!t)return e.reject("Unable to find img element.");var n=t.src,i=t.srcset,r=(t.onload=function(){t.onload=t.onerror=null,t.style.removeProperty("width"),t.style.removeProperty("height"),e.resolve(t)},t.onerror=function(){t.onload=t.onerror=null,w.empty(n)?t.removeAttribute("src"):t.src=n,w.empty(i)?t.removeAttribute("srcset"):t.srcset=i,e.reject(t)},o.isPicture&&o.$image.find("source").each(function(e,t){var n=t.getAttribute(o.tmpl.opt.srcset);w.empty(n)||(t.srcset=n)}),t.getBoundingClientRect());t.style.width=r.width,t.style.height=r.height,t.src=o.src,w.empty(o.srcset)||(t.srcset=o.srcset),t.complete&&t.onload()}).promise()},createPlaceholder:function(e,t){return w.number(e)&&w.number(t)?"data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22"+e+"%22%20height=%22"+t+"%22%20viewBox=%220%200%20"+e+"%20"+t+"%22%3E%3C/svg%3E":""},getTypeClass:function(){return this.cls.types[this.type]||""},scrollTo:function(e){var t;return this.isAttached&&((t=this.$el.get(0)).scrollIntoViewIfNeeded?t.scrollIntoViewIfNeeded():t.scrollIntoView("top"===e)),this},updateState:function(){this.tmpl.state.update(this.tmpl.state.get(this))},toJSON:function(){return{type:this.type,id:this.id,productId:this.productId,href:this.href,src:this.src,srcset:this.srcset,width:this.width,height:this.height,alt:this.alt,title:this.title,caption:this.caption,description:this.description,tags:this.tags.slice(),maxCaptionLength:this.maxCaptionLength,maxDescriptionLength:this.maxDescriptionLength,showCaptionTitle:this.showCaptionTitle,showCaptionDescription:this.showCaptionDescription,noLightbox:this.noLightbox,panelHide:this.panelHide,attr:o.extend({},this.attr)}},onAnchorClick:function(e){var t=e.data.self;t.tmpl.trigger("anchor-click-item",[t]).isDefaultPrevented()?e.preventDefault():t.updateState()},onCaptionClick:function(e){var t=e.data.self;!t.tmpl.trigger("caption-click-item",[t]).isDefaultPrevented()&&0<t.$anchor.length&&!y(e.target).is("a[href],:input")&&t.$anchor.get(0).click()}}),b.template.configure("core",{item:{type:"item",id:"",href:"",placeholder:"",src:"",srcset:"",sources:[],width:0,height:0,title:"",alt:"",caption:"",description:"",tags:[],maxCaptionLength:0,maxDescriptionLength:0,showCaptionTitle:!0,showCaptionDescription:!0,noLightbox:!1,panelHide:!1,buttons:[],ribbon:{type:null,text:null},exif:{aperture:null,camera:null,created_timestamp:null,shutter_speed:null,focal_length:null,iso:null,orientation:null},attr:{elem:{},inner:{},anchor:{},image:{},picture:{},caption:{elem:{},inner:{},title:{},description:{}}}}},{item:{elem:"fg-item",inner:"fg-item-inner",exif:"fg-item-exif",anchor:"fg-thumb",overlay:"fg-image-overlay",wrap:"fg-image-wrap",image:"fg-image",loader:"fg-loader",idle:"fg-idle",loading:"fg-loading",loaded:"fg-loaded",error:"fg-error",hidden:"fg-hidden",noLightbox:"fg-no-lightbox",panelHide:"fg-panel-hide",types:{item:"fg-type-unknown"},caption:{elem:"fg-caption",inner:"fg-caption-inner",title:"fg-caption-title",description:"fg-caption-desc",buttons:"fg-caption-buttons",button:"fg-caption-button"}}},{item:{exif:{aperture:"Aperture",camera:"Camera",created_timestamp:"Date",shutter_speed:"Exposure",focal_length:"Focal Length",iso:"ISO",orientation:"Orientation"}}}),b.components.register("item",b.Item)}(FooGallery.$,FooGallery,FooGallery.utils,FooGallery.utils.is,(FooGallery.utils.fn,FooGallery.utils.obj),FooGallery.utils.str),function(e){e.Image=e.Item.extend({}),e.template.configure("core",null,{item:{types:{image:"fg-type-image"}}}),e.components.register("image",e.Image)}((FooGallery.$,FooGallery),(FooGallery.utils,FooGallery.utils.is)),function(e,c,u){e.PagingFactory=e.Factory.extend({construct:function(){this.registered={}},register:function(e,t,n,i,r,o,s){t=this._super(e,t,s);return t&&((s=this.registered)[e].ctrl=c.fn(n)?n:null,s[e].opt=c.hash(i)?i:{},s[e].cls=c.hash(r)?r:{},s[e].il8n=c.hash(o)?o:{}),t},type:function(e){var t;return c.hash(e)&&c.hash(t=e.paging)&&c.string(t.type)&&this.contains(t.type)?t.type:null},merge:function(e){e=u.extend({},e);var t=this.type(e),n=this.registered,i=n.default.opt,r=n.default.cls,o=n.default.il8n,s=c.hash(e.paging)?e.paging:{},a=c.hash(e.cls)&&c.hash(e.cls.paging)?u.extend({},e.cls.paging):{},l=c.hash(e.il8n)&&c.hash(e.il8n.paging)?u.extend({},e.il8n.paging):{};return c.hash(e.cls)||(e.cls={}),c.hash(e.il8n)||(e.il8n={}),"default"!==t&&this.contains(t)?(e.paging=u.extend({},i,n[t].opt,s,{type:t}),e.cls=u.extend(e.cls,{paging:r},{paging:n[t].cls},{paging:a}),e.il8n=u.extend(e.il8n,{paging:o},{paging:n[t].il8n},{paging:l})):(e.paging=u.extend({},i,s,{type:t}),e.cls=u.extend(e.cls,{paging:r},{paging:a}),e.il8n=u.extend(e.il8n,{paging:o},{paging:l})),e},configure:function(e,t,n,i){var r;this.contains(e)&&(r=this.registered,u.extend(r[e].opt,t),u.extend(r[e].cls,n),u.extend(r[e].il8n,i))},hasCtrl:function(e){e=this.registered[e];return c.hash(e)&&c.fn(e.ctrl)},makeCtrl:function(e,t,n,i){e=this.registered[e];return c.hash(e)&&c.fn(e.ctrl)?new e.ctrl(t,n,i):null}}),e.paging=new e.PagingFactory}(FooGallery,FooGallery.utils.is,(FooGallery.utils.fn,FooGallery.utils.obj)),function(t,o,i,l){o.Paging=o.Component.extend({construct:function(e){var t=this;t._super(e),t.opt=t.tmpl.opt.paging,t.cls=t.tmpl.cls.paging,t.il8n=t.tmpl.il8n.paging,t.sel=t.tmpl.sel.paging,t.pushOrReplace=t.opt.pushOrReplace,t.type=t.opt.type,t.theme=t.opt.theme,t.size=t.opt.size,t.position=t.opt.position,t.scrollToTop=t.opt.scrollToTop,t.current=0,t.total=0,t.ctrls=[],t._pages=[]},init:function(){},fromHash:function(e){e=parseInt(e);return isNaN(e)?null:e},toHash:function(e){return l.number(e)&&0<e?e.toString():null},getState:function(){return this.isValid(this.current)?this.current:null},setState:function(e){this.rebuild();var t=!1;e.item&&!this.contains(e.page,e.item)&&(e.page=this.find(e.item),e.page=0!==e.page?e.page:1,t=!0),this.set(e.page,t,!1,!1)},destroy:function(){var e=this;e._pages.splice(0,e._pages.length),t.each(e.ctrls.splice(0,e.ctrls.length),function(e,t){t.destroy()}),e._super()},build:function(){var e=this,t=e.tmpl.items.available();e.total=0<e.size&&0<t.length?Math.ceil(t.length/e.size):1;for(var n,i,r=0;r<e.total;r++)e._pages.push(t.splice(0,e.size));1<e.total&&o.paging.hasCtrl(e.type)&&("both"!==(n=e.position)&&"top"!==n||(i=o.paging.makeCtrl(e.type,e.tmpl,e,"top")).create()&&(i.append(),e.ctrls.push(i)),"both"!==n&&"bottom"!==n||(i=o.paging.makeCtrl(e.type,e.tmpl,e,"bottom")).create()&&(i.append(),e.ctrls.push(i)))},rebuild:function(){var e=this;e.current=0,e.total=0,e._pages.splice(0,e._pages.length),t.each(e.ctrls.splice(0,e.ctrls.length),function(e,t){t.destroy()}),e.build()},all:function(){return this._pages.slice()},available:function(){return this.get(this.current)},controls:function(n){this.isValid(n)&&t.each(this.ctrls,function(e,t){t.update(n)})},isValid:function(e){return l.number(e)&&0<e&&e<=this.total},number:function(e){return this.isValid(e)?e:0===this.current?1:this.current},create:function(e,t){var n=this,i=(e=n.number(e))-1,r=n._pages[i],t=t?n.tmpl.items.all():n._pages.reduce(function(e,t,n){return n===i?e:e.concat(t)},n.tmpl.items.unavailable());n.current=e,n.tmpl.items.detach(t),n.tmpl.items.create(r,!0)},get:function(e){return this.isValid(e)?(e=this.number(e),this._pages[e-1]):[]},set:function(e,t,n,i){var r=this;if(r.isValid(e)){r.controls(e);var o,s,a=r.number(e);if(a!==r.current)return s=r.current,!r.tmpl.trigger("before-page-change",[r.current,a,e=function(){var e;n=!l.boolean(n)||n,i=!!l.boolean(i)&&i,n&&1===r.current&&!r.tmpl.state.exists()&&(o=r.tmpl.state.get(),r.tmpl.state.update(o,r.pushOrReplace)),r.create(a,i),n&&(o=r.tmpl.state.get(),r.tmpl.state.update(o,r.pushOrReplace)),r.tmpl.trigger("page-change",[r.current,s,i]),r.scrollToTop&&l.boolean(t)&&t&&(0<(e=r.get(r.current)).length&&e[0].scrollTo("top")),r.tmpl.trigger("after-page-change",[r.current,s,i])},i]).isDefaultPrevented()&&(e(),!0)}return!1},find:function(e){for(var t=0,n=this._pages.length;t<n;t++)if(-1!==i.inArray(e,this._pages[t]))return t+1;return 0},contains:function(e,t){e=this.get(e);return-1!==i.inArray(t,e)},first:function(){this.goto(1)},last:function(){this.goto(this._pages.length)},prev:function(){this.goto(this.current-1)},next:function(){this.goto(this.current+1)},goto:function(e){this.set(e,!0)}}),o.PagingControl=o.Component.extend({construct:function(e,t,n){var i=this;i._super(e),i.pages=t,i.position=n,i.$container=null,i._containerExisted=!1,i._placeholderClasses=[]},create:function(){var n=this;return n.$container=t("#"+n.tmpl.id+"_paging-"+n.position),0<n.$container.length?(n._containerExisted=!0,n.$container.removeClass(function(e,t){return n._placeholderClasses=t.match(/(^|\s)fg-ph-\S+/g)||[],n._placeholderClasses.join(" ")}).addClass([n.pages.cls.container,n.pages.theme].join(" "))):n.$container=t("<nav/>",{class:[n.pages.cls.container,n.pages.theme].join(" ")}),!0},destroy:function(){var e=this;e._containerExisted?e.$container.empty().removeClass().addClass(e._placeholderClasses.join(" ")):e.$container.remove(),e.$container=null},append:function(){var e=this;e._containerExisted||("top"===e.position?e.$container.insertBefore(e.tmpl.$el):e.$container.insertAfter(e.tmpl.$el))},update:function(e){}}),o.paging.register("default",o.Paging,null,{type:"none",theme:"fg-light",size:30,pushOrReplace:"push",position:"none",scrollToTop:!0},{container:"fg-paging-container"},null,-100)}(FooGallery.$,FooGallery,FooGallery.utils,FooGallery.utils.is),function(l,e,a){e.Dots=e.Paging.extend({}),e.DotsControl=e.PagingControl.extend({construct:function(e,t,n){this._super(e,t,n),this.$list=null,this.$items=null},create:function(){var e=this;if(e._super()){for(var t,n=e.pages.cls,i=e.pages.il8n,r=[],o=l("<ul/>",{class:n.list}),s=0,a=e.pages.total;s<a;s++)r.push(t=e.createItem(s+1,i.page)),o.append(t);return e.$list=o,e.$items=l(l.map(r,function(e){return e.get()})),e.$container.append(o),!0}return!1},destroy:function(){var e=this,t=e.pages.sel;e.$list.find(t.link).off("click.foogallery",e.onLinkClick),e.$list=l(),e.$items=l(),e._super()},update:function(e){this.setSelected(e-1)},setSelected:function(e){var t=this,n=t.pages.cls,r=t.pages.il8n,o=t.pages.sel;t.$items.filter(o.selected).removeClass(n.selected).each(function(e,t){var t=l(t),n=t.data("label"),t=t.find(o.reader);a.string(n)&&0!==t.length&&t.html(n)}),t.$items.eq(e).addClass(n.selected).each(function(e,t){var t=l(t),n=t.find(o.reader),i=n.html();a.string(i)&&0!==n.length&&(t.data("label",i),n.html(r.current))})},createItem:function(e,t,n,i,r){n=a.string(n)?n:e,t=a.string(t)?t:"";var o=this.pages.opt,s=this.pages.cls,n=l("<a/>",{class:s.link,href:"#page-"+e}).html(n).on("click.foogallery",{self:this,page:e},this.onLinkClick),e=(a.empty(t)||n.attr("title",t.replace(/\{PAGE}/g,e).replace(/\{LIMIT}/g,o.limit+"")),r=a.string(r)?r:t,a.empty(r)||n.prepend(l("<span/>",{class:s.reader,text:r.replace(/\{PAGE}/g,"").replace(/\{LIMIT}/g,o.limit+"")})),l("<li/>",{class:s.item}).append(n));return i=a.string(i)?i:"",a.empty(i)||e.addClass(i),e},onLinkClick:function(e){e.preventDefault();var t=e.data.self,e=e.data.page,n=t.pages.sel;l(this).closest(n.item).is(n.disabled)||t.pages.set(e,!0)}}),e.paging.register("dots",e.Dots,e.DotsControl,{type:"dots",position:"both",pushOrReplace:"push"},{list:"fg-dots",item:"fg-dot-item",link:"fg-dot-link",disabled:"fg-disabled",selected:"fg-selected",visible:"fg-visible",reader:"fg-sr-only"},{current:"Current page",page:"Page {PAGE}"})}(FooGallery.$,FooGallery,(FooGallery.utils,FooGallery.utils.is)),function(e){e.DefaultTemplate=e.Template.extend({}),e.template.register("default",e.DefaultTemplate,null,{container:"foogallery fg-default"})}((FooGallery.$,FooGallery),FooGallery.utils),function(e){e.MasonryTemplate=e.Template.extend({construct:function(e,t){var n=this;n._super(e,t),n.masonry=null,n.on({"pre-init":n.onPreInit,destroyed:n.onDestroyed,"appended-items":n.onAppendedItems,"detach-item":n.onDetachItem,"layout after-filter-change":n.onLayoutRequired,"page-change":n.onPageChange},n)},onPreInit:function(){var e=this,t=e.sel,n=e.$el.hasClass("fg-fixed");e.template.isFitWidth=n,e.template.percentPosition=!n,e.template.transitionDuration=0,e.template.itemSelector=t.item.elem,n||(e.template.gutter=t.gutterWidth,e.template.columnWidth=t.columnWidth),e.masonry=new Masonry(e.el,e.template)},onDestroyed:function(){this.masonry instanceof Masonry&&this.masonry.destroy()},onLayoutRequired:function(){this.masonry.layout()},onPageChange:function(e,t,n,i){i||this.masonry.layout()},onAppendedItems:function(e,t){t=t.map(function(e){return e.el}),t=this.masonry.addItems(t);this.masonry.layoutItems(t,!0)},onDetachItem:function(e,t){e.isDefaultPrevented()||(e.preventDefault(),this.masonry.remove(t.el),t.$el.removeClass(this.cls.hidden),t.isAttached=!1)}}),e.template.register("masonry",e.MasonryTemplate,{template:{}},{container:"foogallery fg-masonry",columnWidth:"fg-column-width",gutterWidth:"fg-gutter-width"})}((FooGallery.$,FooGallery),(FooGallery.utils,FooGallery.utils.is)),function(i,r,e,o){r.Justified=e.Class.extend({construct:function(e,t){var n=this;n.tmpl=e,n.$el=e.$el,n.options=i.extend(!0,{},r.Justified.defaults,t),n._items=[],n.maxRowHeight=0,n.borderSize=0,n.align=-1!==["left","center","right"].indexOf(n.options.align)?n.options.align:"center"},init:function(){var e=this;e.maxRowHeight=e.getMaxRowHeight(e.options.maxRowHeight,e.options.rowHeight),e.borderSize=e.getBorderSize()},destroy:function(){this.$el.removeAttr("style")},getBorderSize:function(){switch(this.tmpl.getCSSClass("border","")){case"fg-border-thin":return 4;case"fg-border-medium":return 10;case"fg-border-thick":return 16;default:return 0}},getMaxRowHeight:function(e,t){var n;return o.string(e)?(n=parseInt(e),isNaN(n)?t:n<=0?1/0:-1!==e.indexOf("%")?t*(n/100):n):o.number(e)?e<=0?1/0:e:t},layout:function(e){var n,i=this;0<(e=!o.number(e)?i.$el.width():e)&&(0!==(n=i.createRows(e)).height&&0<n.rows.length&&(i.$el.height(n.height),n.rows.forEach(function(e,t){i.render(e,t===n.rows.length-1)})))},render:function(t,e){var n=this,i=!e&&"justify"!==n.options.lastRow;t.items.forEach(function(e){e.elem&&(t.visible?(e.elem.style.setProperty("position","absolute"),e.elem.style.setProperty("width",e.width+"px"),e.elem.style.setProperty("height",e.height+"px"),e.elem.style.setProperty("top",e.top+"px"),e.elem.style.setProperty("left",e.left+"px"),e.elem.style.setProperty("margin","0"),e.elem.style.removeProperty("display"),0<n.maxRowHeight&&i?e.elem.style.setProperty("max-height",n.maxRowHeight+2*n.borderSize+"px"):e.elem.style.removeProperty("max-height"),e.elem.classList.contains("fg-positioned")||e.elem.classList.add("fg-positioned")):e.elem.style.setProperty("display","none"))})},justify:function(n,i,e,t){var r=this,o=r.options.margins,s=o*(n.items.length-1),e=e-s,a=n.width-s,l=e/a,c=(n.width=a*l,n.height=n.height*l,n.height>t+2*r.borderSize&&(a=(t+2*r.borderSize)/n.height,n.width=n.width*a,n.height=n.height*a),n.top=i,n.left=0,"left"!==r.align&&n.width<e&&("right"===r.align?n.left=e-n.width:n.left=(e-n.width)/2),n.width+=s,n.left);return n.items.forEach(function(e,t){0<t&&(c+=o),e.left=c,e.top=i;t=n.height/e.height;e.width=e.width*t,e.height=e.height*t,c+=e.width}),n.height},createRows:function(o){var s=this,a=s.options.margins,i=s.tmpl.getAvailable(),l=[],r=-1;function p(){return{index:++r,visible:!0,width:0,height:s.options.rowHeight+2*s.borderSize,top:0,left:0,items:[]}}var c=p(),u=0,h=0;if(i.forEach(function(e){r=c.height,t=e.width,(n=e.height)!==r&&(n*=i=r/n,t*=i),i=s.maxRowHeight/r;var t,n,i,r={__item:e,elem:e.el,width:t,height:n,maxWidth:t*i,maxHeight:n*i,top:0,left:0};c.width+r.width>o&&0<c.items.length&&(0<l.length&&(u+=a),e=s.justify(c,u,o,s.maxRowHeight),h<e&&(h=e),u+=e,l.push(c),c=p()),0<c.items.length&&(c.width+=a),c.width+=r.width,c.items.push(r)}),0<c.items.length){var e=u+a;switch(s.options.lastRow){case"smart":var t,d,n=s.justify(c,e,o,s.maxRowHeight);0!==h&&h<n&&(t=h/n,d=c.width*t/o,(t<.9||d<.9)&&(n=s.justify(c,e,o,h-2*s.borderSize)));break;case"justify":n=s.justify(c,e,o,99999);break;case"hide":n=s.justify(c,e,o,s.maxRowHeight),c.width<o&&(c.visible=!1)}c.visible&&(u+=n+a),l.push(c)}return{height:u,rows:l}}}),r.Justified.defaults={rowHeight:150,maxRowHeight:"200%",margins:0,align:"center",lastRow:"smart"}}(FooGallery.$,FooGallery,FooGallery.utils,FooGallery.utils.is),function(e){e.JustifiedTemplate=e.Template.extend({construct:function(e,t){var n=this;n._super(e,t),n.justified=null,n.on({"pre-init":n.onPreInit,init:n.onInit,destroyed:n.onDestroyed,"layout after-filter-change":n.onLayoutRequired,"page-change":n.onPageChange},n)},onPreInit:function(){this.justified=new e.Justified(this,this.template)},onInit:function(){this.justified.init()},onDestroyed:function(){this.justified instanceof e.Justified&&this.justified.destroy()},onLayoutRequired:function(){this.justified.layout(this.lastWidth)},onPageChange:function(e,t,n,i){i||this.justified.layout(this.lastWidth)}}),e.template.register("justified",e.JustifiedTemplate,null,{container:"foogallery fg-justified"})}((FooGallery.$,FooGallery)),function(e){e.PortfolioTemplate=e.Template.extend({}),e.template.register("simple_portfolio",e.PortfolioTemplate,{},{container:"foogallery fg-simple_portfolio"})}((FooGallery.$,FooGallery),(FooGallery.utils,FooGallery.utils.is,FooGallery.utils.fn)),function(i,e,r){e.ImageViewerTemplate=e.Template.extend({construct:function(e,t){var n=this;n._super(r.extend({},e,{paging:{pushOrReplace:"replace",theme:"fg-light",type:"default",size:1,position:"none",scrollToTop:!1}}),t),n.$inner=i(),n.$current=i(),n.$total=i(),n.$prev=i(),n.$next=i(),n.on({"pre-init":n.onPreInit,init:n.onInit,destroy:n.onDestroy,"append-item":n.onAppendItem,"after-page-change":n.onAfterPageChange,"after-filter-change":n.onAfterFilterChange},n)},createChildren:function(){var e=this;return i("<div/>",{class:e.cls.inner}).append(i("<div/>",{class:e.cls.innerContainer}),i("<div/>",{class:e.cls.controls}).append(i("<div/>",{class:e.cls.prev}).append(i("<span/>",{text:e.il8n.prev})),i("<label/>",{class:e.cls.count,text:e.il8n.count}).prepend(i("<span/>",{class:e.cls.countCurrent,text:"0"})).append(i("<span/>",{class:e.cls.countTotal,text:"0"})),i("<div/>",{class:e.cls.next}).append(i("<span/>",{text:e.il8n.next}))))},destroyChildren:function(){this.$el.find(this.sel.inner).remove()},onPreInit:function(e){var t=this;t.$inner=t.$el.find(t.sel.innerContainer),t.$current=t.$el.find(t.sel.countCurrent),t.$total=t.$el.find(t.sel.countTotal),t.$prev=t.$el.find(t.sel.prev),t.$next=t.$el.find(t.sel.next)},onInit:function(e){var t=this;t.template.attachFooBox&&t.$el.on("foobox.previous",{self:t},t.onFooBoxPrev).on("foobox.next",{self:t},t.onFooBoxNext),t.$prev.on("click",{self:t},t.onPrevClick),t.$next.on("click",{self:t},t.onNextClick)},onDestroy:function(e){var t=this;t.template.attachFooBox&&t.$el.off({"foobox.previous":t.onFooBoxPrev,"foobox.next":t.onFooBoxNext}),t.$prev.off("click",t.onPrevClick),t.$next.off("click",t.onNextClick)},onAppendItem:function(e,t){e.preventDefault(),this.$inner.append(t.$el),t.isAttached=!0},onAfterPageChange:function(e,t,n,i){i||this.update()},onAfterFilterChange:function(e){this.update()},update:function(){this.pages&&(this.$current.text(this.pages.current),this.$total.text(this.pages.total))},prev:function(){this.pages&&(this.template.loop&&1===this.pages.current?this.pages.last():this.pages.prev(),this.update())},next:function(){this.pages&&(this.template.loop&&this.pages.current===this.pages.total?this.pages.first():this.pages.next(),this.update())},onFooBoxPrev:function(e){e.data.self.prev()},onFooBoxNext:function(e){e.data.self.next()},onPrevClick:function(e){e.preventDefault(),e.stopPropagation(),e.data.self.prev()},onNextClick:function(e){e.preventDefault(),e.stopPropagation(),e.data.self.next()}}),e.template.register("image-viewer",e.ImageViewerTemplate,{template:{attachFooBox:!1,loop:!1}},{container:"foogallery fg-image-viewer",inner:"fiv-inner",innerContainer:"fiv-inner-container",controls:"fiv-ctrls",prev:"fiv-prev",next:"fiv-next",count:"fiv-count",countCurrent:"fiv-count-current",countTotal:"fiv-count-total"},{prev:"Prev",next:"Next",count:"of"})}(FooGallery.$,FooGallery,(FooGallery.utils,FooGallery.utils.obj)),function(e,n){e.ThumbnailTemplate=e.Template.extend({construct:function(e,t){this._super(n.extend({},e,{filtering:{type:"none"},paging:{pushOrReplace:"replace",theme:"fg-light",type:"default",size:1,position:"none",scrollToTop:!1}}),t)}}),e.template.register("thumbnail",e.ThumbnailTemplate,null,{container:"foogallery fg-thumbnail"})}((FooGallery.$,FooGallery),FooGallery.utils.obj),function(i,o,e,l,r,s){o.StackAlbum=e.Class.extend({construct:function(e,t){var n=this;n.$el=l.jq(e)?e:i(e),n.el=n.$el.get(0),n.opt=r.extend({},o.StackAlbum.defaults,t,n.$el.data("foogallery")),n.$back=n.$el.find(".fg-header-back"),n.$active=n.$el.find(".fg-header-active"),n.$piles=n.$el.find(".fg-piles"),n.piles=n.$piles.find(".fg-pile").map(function(e,t){return new o.StackAlbum.Pile(n,t,{index:e})}).get(),n.ignoreResize=!1,n.robserver=new ResizeObserver(function(){!n.ignoreResize&&n.$el.is(":visible")&&n.layout(!0)})},init:function(){var e=this;e.piles.forEach(function(e){e.init()}),e.$back.on("click.foogallery",{self:e},e.onBackClick),e.robserver.observe(e.el)},destroy:function(){this.robserver.disconnect(),this.$back.off(".foogallery"),this.piles.forEach(function(e){e.destroy()})},getLayoutInfo:function(){var e=this,t=e.opt.gutter+2*e.opt.border;return{maxWidth:e.$el.width(),space:t,halfSpace:t/2,itemWidth:e.opt.itemWidth,itemHeight:e.opt.itemHeight,itemOuterWidth:e.opt.itemWidth+2*e.opt.border,itemOuterHeight:e.opt.itemHeight+2*e.opt.border,blockWidth:e.opt.itemWidth+t,blockHeight:e.opt.itemHeight+t,border:e.opt.border,doubleBorder:2*e.opt.border,gutter:e.opt.gutter,halfGutter:e.opt.gutter/2}},layout:function(e){var t,n=this;e&&(n.$el.addClass("fg-disable-transitions"),n.$el.prop("offsetWidth")),n.hasActive?(t=n.activePile.layout(),n.activePile.setPosition(0,0,t.width,t.height)):t=n.layoutPiles(),n.$piles.css({width:t.width+"px",height:t.height+"px"}),e&&n.$el.removeClass("fg-disable-transitions")},layoutPiles:function(i){var r=this.getLayoutInfo(),o=0,s=1,a=0;return i=l.fn(i)?i:function(){},this.piles.forEach(function(e){var t=o,n=((o+=r.blockWidth)>r.maxWidth&&(t=0,o=r.blockWidth,s++),r.blockHeight*(s-1));i(e,n,t,r.blockWidth,r.blockHeight),e.setPosition(n,t,r.blockWidth,r.blockHeight),a<o&&(a=o)}),{width:a,height:r.blockHeight*s}},setActive:function(t){var n,i=this,e=i.activePile,r=e instanceof o.StackAlbum.Pile;t=t instanceof o.StackAlbum.Pile?t:null,i.activePile=t,i.hasActive=null!==t,r&&e.collapse(),i.ignoreResize=!0,i.hasActive?(i.piles.forEach(function(e){e!==t&&e.hide(i.activePile)}),n=i.activePile.expand(),i.$active.text(t.title),i.$el.addClass("fg-has-active")):(n=i.layoutPiles(function(e){e.show()}),i.$el.removeClass("fg-has-active")),s.start(i.$piles,function(e){e.css({width:n.width+"px",height:n.height+"px"})},null,350).then(function(){i.ignoreResize=!1})},onBackClick:function(e){e.preventDefault(),e.stopPropagation(),e.data.self.setActive(null)}}),o.StackAlbum.defaults={gutter:50,itemWidth:150,itemHeight:150,border:10,angleStep:1,randomAngle:!1}}(FooGallery.$,FooGallery,FooGallery.utils,FooGallery.utils.is,FooGallery.utils.obj,FooGallery.utils.transition),function(r,o,e,s,a){o.StackAlbum.Pile=e.Class.extend({construct:function(e,t,n){var i=this;i.album=e,i.$el=s.jq(t)?t:r(t),i.opt=a.extend({},o.StackAlbum.Pile.defaults,n,i.$el.data()),i.title=i.opt.title,i.items=i.$el.find(".fg-pile-item").map(function(e,t){return new o.StackAlbum.Item(i,t,{index:e})}).get(),i.$cover=r("<div/>",{class:"fg-pile-cover"}).append(r("<div/>",{class:"fg-pile-cover-content"}).append(r("<span/>",{class:"fg-pile-cover-title",text:i.opt.title}),r("<span/>",{class:"fg-pile-cover-count",text:i.items.length}))),i.top=0,i.left=0,i.isExpanded=!1},init:function(){var n=this,i=n.album.opt,r=n.getAngles(i.angleStep),o=i.randomAngle?n.randomAngle(r):i.angleStep;n.$cover.on("click.foogallery",{self:n},n.onCoverClick),n.items.forEach(function(e,t){e.init(),3<t||(0===t?(e.$el.addClass("fg-has-cover").append(n.$cover),e.load()):(t%2==0?e.setAngle(-o):e.setAngle(o),i.randomAngle?o=n.randomAngle(r):o+=i.angleStep))})},destroy:function(){this.$cover.remove(),this.items.forEach(function(e,t){0===t&&e.$el.removeClass("fg-has-cover"),e.destroy()})},getAngles:function(e){for(var t=[],n=1;n<=3;n++)t.push(n*e);return t},randomAngle:function(e){var t=e.length,t=Math.floor(Math.random()*+t+0),e=e.splice(t,1);return 1===e.length?e[0]:0},setPosition:function(e,t,n,i){this.top=e,this.left=t,s.number(n)&&s.number(i)?this.$el.css({top:e+"px",left:t+"px",width:n+"px",height:i+"px"}):this.$el.css({top:e+"px",left:t+"px"})},layout:function(){var i=this.album.getLayoutInfo(),r=0,o=1,s=!1,a=0;return this.items.forEach(function(e){(r+=i.halfGutter)>i.maxWidth&&(r=i.halfGutter,o++,s=!0);var t=r,n=(r+=i.itemOuterWidth+i.halfGutter,!s&&r>i.maxWidth&&(t=i.halfGutter,r=i.blockWidth,o++),i.blockHeight*(o-1)+i.halfGutter);s=!1,e.setPosition(n,t,i.itemOuterWidth,i.itemOuterHeight),e.isLoaded||e.load(),a<r&&(a=r)}),{width:a,height:i.blockHeight*o}},expand:function(){var e;return this.$el.removeClass("fg-collapsed").addClass("fg-expanded"),e=this.layout(),this.setPosition(0,0,e.width,e.height),this.isExpanded=!0,e},collapse:function(){var e=this,t=e.album.getLayoutInfo(),n=(e.$el.removeClass("fg-expanded").addClass("fg-collapsed"),e.items.forEach(function(e){e.setPosition(t.halfGutter,t.halfGutter,t.itemOuterWidth,t.itemOuterHeight)}),{width:t.blockWidth,height:t.blockHeight});return e.setPosition(0,0,n.width,n.height),e.isExpanded=!1,n},show:function(){this.$el.removeClass("fg-hidden fg-expanded fg-collapsed")},hide:function(e){e instanceof o.StackAlbum.Pile&&this.setPosition(e.top,e.left),this.$el.addClass("fg-hidden")},onCoverClick:function(e){e.preventDefault(),e.stopPropagation();e=e.data.self;e.album.setActive(e)}}),o.StackAlbum.Pile.defaults={index:-1,title:null}}(FooGallery.$,FooGallery,FooGallery.utils,FooGallery.utils.is,FooGallery.utils.obj),function(r,o,e,s,a){o.StackAlbum.Item=e.Class.extend({construct:function(e,t,n){var i=this;i.$el=s.jq(t)?t:r(t),i.opt=a.extend({},o.StackAlbum.Item.defaults,n,i.$el.data()),i.$thumb=i.$el.find(".fg-pile-item-thumb"),i.$image=i.$el.find(".fg-pile-item-image"),i.isLoaded=!1,i.isLoading=!1,i._loading=null},init:function(){},destroy:function(){},setAngle:function(e){this.$el.css({transform:"rotate("+e+"deg)"})},setPosition:function(e,t,n,i){this.$el.css({top:e+"px",left:t+"px",width:n+"px",height:i+"px"})},load:function(){var t=this;return s.promise(t._loading)?t._loading:t._loading=r.Deferred(function(e){t.$el.addClass("fg-loading"),t.isLoading=!0,t.$image.on({"load.foogallery":function(){t.$image.off(".foogallery"),t.$el.removeClass("fg-loading"),t.isLoading=!1,t.isLoaded=!0,e.resolve()},"error.foogallery":function(){t.$image.off(".foogallery"),t.$el.removeClass("fg-loading"),t.isLoading=!1,t.isLoaded=!0,e.reject()}}),t.$image.prop("src",t.$image.attr(t.opt.src)).prop("srcset",t.$image.attr(t.opt.srcset))}).promise()}}),o.StackAlbum.Item.defaults={index:-1,src:"data-src-fg",srcset:"data-srcset-fg"}}(FooGallery.$,FooGallery,FooGallery.utils,FooGallery.utils.is,FooGallery.utils.obj),function(i,r,e){i.fn.foogalleryStackAlbum=function(e){return this.each(function(e,t){var t=i(t),n=t.data("__FooGalleryAlbum__");n instanceof r.StackAlbum&&n.destroy(),(n=new r.StackAlbum(t)).init(),t.data("__FooGalleryAlbum__",n)})},r.loadStackAlbums=r.reloadStackAlbums=function(){i(function(){i(".foogallery-stack-album:not(.fg-ready)").foogalleryStackAlbum()}),e.ready(function(){i(".foogallery-stack-album.fg-ready").foogalleryStackAlbum()})},r.loadStackAlbums()}(FooGallery.$,FooGallery,FooGallery.utils),function(u,e,o,d){o.Progress=o.EventClass.extend({construct:function(e){var t=this;t._super(),t.percent=0,t.tickRate=d.number(e)?e:100,t.isPaused=!1,t.isActive=!1,t._intervalId=null,t._total=0,t._target=null,t.onTick=t.onTick.bind(t)},destroy:function(){this._reset(),this._super()},_reset:function(){var e=this;null!==e._intervalId&&clearInterval(e._intervalId),e.percent=0,e._total=0,e._intervalId=null,e._target=null,e.isActive=!1,e.isPaused=!1},stop:function(){this.isActive&&(this._reset(),this.trigger("stop"))},start:function(e){var t=this;t.stop(),!t.isActive&&d.number(e)&&0<e&&(t._total=1e3*e,t._target=Date.now()+t._total,t._intervalId=setInterval(t.onTick,t.tickRate),t.isActive=!0,t.trigger("start"))},pause:function(){var e=this;e.isActive&&!e.isPaused&&e.percent<100&&(null!==e._intervalId&&clearInterval(e._intervalId),e._intervalId=null,e._target=null,e.isPaused=!0,e.trigger("pause"))},resume:function(){var e,t=this;t.isActive&&t.isPaused?(e=t._total-t._total*t.percent/100,t._target=Date.now()+e,t._intervalId=setInterval(t.onTick,t.tickRate),t.isPaused=!1,t.trigger("resume")):0<t._total&&t.start(t._total/1e3)},onTick:function(){var e=this,t=e._total-Math.max(e._target-Date.now(),0);e.percent=Math.min(t/e._total*100,100),e.trigger("tick",[e.percent]),100<=e.percent&&(null!==e._intervalId&&clearInterval(e._intervalId),e._intervalId=null,e._target=null,e.isActive=!1,e.trigger("complete"))}}),u.Carousel=o.Class.extend({construct:function(e,t,n,i){var r=this;r.tmpl=e,r.el=e.el,r.opt=t,r.cls=n,r.sel=i,r.elem={inner:null,center:null,bottom:null,prev:null,next:null,progress:null},r.activeItem=null,r._itemWidth=0,r._leftExclude=[r.sel.activeItem,r.sel.nextItem].join(","),r._rightExclude=[r.sel.activeItem,r.sel.prevItem].join(","),r._centerListeners=new o.DOMEventListeners,r._listeners=new o.DOMEventListeners,r._progress=new o.Progress,r._canHover=window.matchMedia("(hover: hover)").matches,r.cache=new Map,r.timeouts=new o.Timeouts,r.interacted=!1,r.isRTL=!1,r._firstLayout=!0},getScreenX:function(e,t,n){return n/(n+t)*e},getVectorX:function(e,t,n){return(n+t)/n*e},getSequentialZFromScale:function(e,t,n){return n*(t*(e+1))},scaleToZ:function(e,t,n){return e*(1-t/(n+t))},pause:function(){this._progress.pause()},resume:function(){this._progress.resume()},start:function(){"disable"===this.opt.autoplay.interaction&&this.interacted||this._progress.start(this.opt.autoplay.time)},stop:function(){this._progress.stop()},init:function(){var e=this;e.isRTL="rtl"===window.getComputedStyle(e.el).direction,e.elem={inner:e.el.querySelector(e.sel.inner),center:e.el.querySelector(e.sel.center),bottom:e.el.querySelector(e.sel.bottom),prev:e.el.querySelector(e.sel.prev),next:e.el.querySelector(e.sel.next),progress:e.el.querySelector(e.sel.progress)},150!==e.opt.perspective&&e.el.style.setProperty("--fg-carousel-perspective",e.opt.perspective+"px")},postInit:function(){var e=this;e.activeItem=e.tmpl.items.first(),e.initNavigation(),e.initPagination(),e.initSwipe(),e.initAutoplay()},initNavigation:function(){const t=this;t._listeners.add(t.elem.prev,"click",function(e){e.preventDefault(),t.interacted=!0,t.previous()}),"button"!==t.elem.prev.type&&(t.elem.prev.type="button"),t.elem.prev.appendChild(e.element("arrow-left")),t._listeners.add(t.elem.next,"click",function(e){e.preventDefault(),t.interacted=!0,t.next()}),"button"!==t.elem.next.type&&(t.elem.next.type="button"),t.elem.next.appendChild(e.element("arrow-right"))},initPagination:function(){const n=this;var e=n.tmpl.items.count();for(let t=0;t<e;t++){const i=document.createElement("button");i.type="button",i.classList.add(n.cls.bullet),0===t&&i.classList.add(n.cls.activeBullet),n._listeners.add(i,"click",function(e){e.preventDefault(),n.interacted=!0,n.goto(n.tmpl.items.get(t))}),n.elem.bottom.appendChild(i)}},initSwipe:function(){const t=this;let n=0,i;t._listeners.add(t.elem.inner,"touchstart",function(e){t.interacted=!0,n=e.changedTouches[0].screenX},{passive:!0}),t._listeners.add(t.elem.inner,"touchend",function(e){i=e.changedTouches[0].screenX,i<n?t.next():t.previous(),n=0},{passive:!0})},initAutoplay:function(){const n=this,t=n.opt.autoplay;if(!(t.time<=0)&&n.elem.progress instanceof HTMLElement){const i=n.elem.progress.style;function e(e,t){o.cancelFrame(null),o.requestFrame(function(){i.setProperty("width",e+"%"),t?i.setProperty("transition-duration","0s"):i.setProperty("transition-duration",n._progress.tickRate+"ms")})}n._progress.on({"start stop":function(){e(0,!0)},"pause resume":function(){e(n._progress.percent,!0)},tick:function(){e(n._progress.percent,!1)},complete:function(){n.next(function(){n._progress.start(t.time)})}}),"pause"===t.interaction&&(n._canHover?(n._listeners.add(n.el,"mouseenter",function(e){n._progress.pause()},{passive:!0}),n._listeners.add(n.el,"mouseleave",function(e){n._progress.resume()},{passive:!0})):(n._listeners.add(n.el,"touchstart",function(e){n.timeouts.delete("autoplay"),n._progress.pause()},{passive:!0}),n._listeners.add(n.el,"touchend",function(e){n.timeouts.set("autoplay",function(){n._progress.resume()},1e3*t.time)},{passive:!0}))),n._progress.start(t.time)}},getFirst:function(){return this.tmpl.items.first()},getNext:function(e){return this.tmpl.items.next(e instanceof u.Item?e:this.activeItem,null,!0)},getPrev:function(e){return this.tmpl.items.prev(e instanceof u.Item?e:this.activeItem,null,!0)},goto:function(e,t){const n=this;if(e instanceof u.Item){const i=n.opt.autoplay,r=!n._canHover&&n.timeouts.has("autoplay"),o=(n.timeouts.delete("autoplay"),n.timeouts.delete("navigation"),n._progress.isPaused);n._progress.isActive&&n._progress.stop(),n.activeItem=e,n.layout(),n.timeouts.set("navigation",function(){0<i.time&&("pause"===i.interaction||"disable"===i.interaction&&!n.interacted)&&(n._progress.start(i.time),o&&n._progress.pause(),r&&n.timeouts.set("autoplay",function(){n._progress.resume()},1e3*i.time)),d.fn(t)&&t.call(n)},n.opt.speed)}},next:function(e){this.goto(this.getNext(),e)},previous:function(e){this.goto(this.getPrev(),e)},destroy:function(){var e=this;e.cache.clear(),e.timeouts.clear(),e._listeners.clear(),e._centerListeners.clear(),150!==e.opt.perspective&&e.el.style.removeProperty("--fg-carousel-perspective")},getSize:function(e,t){var n=e.getBoundingClientRect();const i={width:n.width,height:n.height};return t&&(n=getComputedStyle(e),i.width-=parseFloat(n.paddingLeft)+parseFloat(n.paddingRight)+parseFloat(n.borderLeftWidth)+parseFloat(n.borderRightWidth),i.height-=parseFloat(n.paddingTop)+parseFloat(n.paddingBottom)+parseFloat(n.borderTopWidth)+parseFloat(n.borderBottomWidth)),i},layout:function(e){const t=this;if(null===t.activeItem&&(t.activeItem=t.tmpl.items.first()),!d.number(e)&&t.cache.has("width")&&(e=t.cache.get("width")),d.number(e)){const n=t.getLayout(e);null!==t._layoutFrame&&o.cancelFrame(t._layoutFrame),t._layoutFrame=o.requestFrame(function(){t._layoutFrame=null,t.renderActive(n)&&(t.renderSide("left",t.sel.prevItem,t._leftExclude,t.cls.prevItem,n),t.renderSide("right",t.sel.nextItem,t._rightExclude,t.cls.nextItem,n),t._firstLayout=!1)})}},getLayout:function(e){var t=this;if(t.cache.has("layout")&&t.cache.get("width")===e)return t.cache.get("layout");var n=t.getSize(t.elem.center).width,i=t.getSize(t.elem.inner,!0).width/2+n/2,n=t.calculate(n,i);return t.cache.set("width",e),t.cache.set("layout",n),n},round:function(e,t){t=Math.pow(10,t||0);return Math.round(e*t)/t},getShowPerSide:function(){var e=this.tmpl.items.count();let t=this.opt.maxItems;return("auto"===t||t<=0)&&(t=e%2==0?e-1:e),t%2==0&&--t,t<1&&(t=1),t>e&&(t=e%2==0?e-1:e),(t-1)/2},calculate:function(t,n,i,r){var o=this;d.number(i)||(i=o.opt.gutter.max);const s={zIndex:(r=!d.number(r)?o.getShowPerSide():r)+10,gutter:i,perSide:r,side:[]};let a=t,h=s.zIndex-1;for(let e=0;e<r;e++,h--){var l=o.getSequentialZFromScale(e,o.opt.scale,o.opt.perspective),c=o.scaleToZ(t,l,o.opt.perspective),p=(t-c)/2,u=(a-=p,"%"===o.opt.gutter.unit?t*Math.abs(i/100):Math.abs(i)),u="%"===o.opt.gutter.unit?o.scaleToZ(u,l,o.opt.perspective):u;if(0<i?a+=u:a-=u,a+c+p>n)return i-1<o.opt.gutter.min?o.calculate(t,n,o.opt.gutter.max,r-1):o.calculate(t,n,i-1,r);u=o.getVectorX(a,l,o.opt.perspective);a+=c+p,s.side.push({x:u,z:l,zIndex:h})}return s},cleanup:function(e,t,n){const i=this,r=d.string(n);Array.from(i.el.querySelectorAll(e)).forEach(function(e){e.classList.remove(t),i.opt.centerOnClick&&i._centerListeners.remove(e,"click"),r&&e.matches(n)||(e.style.removeProperty("transition-duration"),e.style.removeProperty("transform"),e.style.removeProperty("z-index"))})},renderActive:function(e){const n=this;if(!(n.activeItem instanceof u.Item))return!1;const t=n.activeItem.el,i=(n.cleanup(n.sel.activeItem,n.cls.activeItem),t.classList.add(n.cls.activeItem),t.style.setProperty("transition-duration",n.opt.speed+"ms"),t.style.setProperty("z-index",e.zIndex),t.style.removeProperty("transform"),n.tmpl.items.indexOf(n.activeItem));return Array.from(n.el.querySelectorAll(n.sel.bullet)).forEach(function(e,t){e.classList.remove(n.cls.activeBullet),t===i&&e.classList.add(n.cls.activeBullet)}),!0},renderSide:function(n,e,i,r,o){const s=this;if(-1!==["left","right"].indexOf(n)){s.cleanup(e,r,i);let t=s.activeItem;for(let e=0;e<o.side.length;e++){var a=o.side[e];const c="left"===n?s.getPrev(t):s.getNext(t);if(!(c instanceof u.Item))break;var l="translate3d("+("left"===n&&!s.isRTL||"right"===n&&s.isRTL?"-":"")+a.x+"px, 0,-"+a.z+"px)";c.el.classList.add(r),c.isLoaded||(c.el.style.setProperty("transition-duration","0ms"),c.el.style.setProperty("transform","translate3d(0,0,-"+s.opt.perspective+"px)"),c.el.offsetHeight),c.el.style.setProperty("transition-duration",(s._firstLayout?0:s.opt.speed)+"ms"),c.el.style.setProperty("transform",l),c.el.style.setProperty("z-index",a.zIndex),s.opt.centerOnClick&&s._centerListeners.add(c.el,"click",function(e){e.preventDefault(),e.stopPropagation(),s.interacted=!0,s.goto(c)},!0),t=c}}}})}((FooGallery.$,FooGallery),FooGallery.icons,FooGallery.utils,FooGallery.utils.is),function(i,r){i.CarouselTemplate=i.Template.extend({construct:function(e,t){var n=this;n._super(r.extend({},e,{paging:{type:"none"}}),t),n.items.LAYOUT_AFTER_LOAD=!1,n.carousel=null,n.on({"pre-init":n.onPreInit,init:n.onInit,"post-init":n.onPostInit,destroyed:n.onDestroyed,"append-item":n.onAppendItem,"after-filter-change":n.onAfterFilterChange,layout:n.onLayout},n),i.Panel&&n.lightbox instanceof i.Panel&&n.lightbox.on({open:n.onLightboxOpen,closed:n.onLightboxClosed,next:n.onLightboxNext,prev:n.onLightboxPrev},n)},onPreInit:function(){var e=this;e.carousel=new i.Carousel(e,e.template,e.cls.carousel,e.sel.carousel)},onInit:function(){this.carousel.init()},onPostInit:function(){this.carousel.postInit()},onDestroyed:function(){this.carousel instanceof i.Carousel&&this.carousel.destroy()},onAppendItem:function(e,t){e.preventDefault(),this.carousel.elem.inner.appendChild(t.el),t.isAttached=!0},onAfterFilterChange:function(){this.carousel.cache.delete("layout"),this.carousel.interacted=!0,this.carousel.goto(this.carousel.getFirst())},onLayout:function(){this.carousel.layout(this.lastWidth)},onLightboxOpen:function(){this.carousel.interacted=!0,this.carousel.stop()},onLightboxClosed:function(){this.carousel.start()},onLightboxNext:function(){this.carousel.next()},onLightboxPrev:function(){this.carousel.previous()}}),i.template.register("carousel",i.CarouselTemplate,{template:{maxItems:0,perspective:150,scale:.12,speed:300,centerOnClick:!0,gutter:{min:-40,max:-20,unit:"%"},autoplay:{time:0,interaction:"pause"}}},{container:"foogallery fg-carousel",carousel:{inner:"fg-carousel-inner",center:"fg-carousel-center",bottom:"fg-carousel-bottom",prev:"fg-carousel-prev",next:"fg-carousel-next",bullet:"fg-carousel-bullet",activeBullet:"fg-bullet-active",activeItem:"fg-item-active",prevItem:"fg-item-prev",nextItem:"fg-item-next",progress:"fg-carousel-progress"}})}((FooGallery.$,FooGallery),FooGallery.utils.obj),function(s,a,e,t,i){a.triggerPostLoad=function(e,t,n,i){var r,o=e.target;if(o instanceof a.Template&&o.initialized&&("ready"===e.type||"after-page-change"===e.type&&!i||"after-filter-change"===e.type))try{if(0<o.$el.parents(".fbx-item").length)return;o.$el.hasClass("fbx-instance")&&window.FOOBOX&&s.fn.foobox?(r=s.extend({},window.FOOBOX.o,o.opt.protected?{images:{noRightClick:!0}}:{}),o.$el.foobox(r)):s("body").trigger("post-load")}catch(e){console.error(e)}},a.autoDefaults={on:{"ready after-page-change after-filter-change":a.triggerPostLoad}},a.autoEnabled=!0,a.auto=function(e){a.autoDefaults=t.merge(a.autoDefaults,e)},a.globalsMerged=!1,a.mergeGlobals=function(){if(!0!==a.globalsMerged&&window.FooGallery_il8n&&i.object(window.FooGallery_il8n)){var e,t=window.FooGallery_il8n;for(e in t)if(t.hasOwnProperty(e)&&a[e]instanceof a.Factory&&i.object(t[e]))for(var n in t[e])t[e].hasOwnProperty(n)&&a[e].configure(n,null,null,t[e][n]);a.globalsMerged=!0}},a.load=a.reload=function(){s(function(){a.mergeGlobals(),a.autoEnabled&&s('[id^="foogallery-gallery-"]:not(.fg-ready)').foogallery(a.autoDefaults)}),e.ready(function(){a.mergeGlobals(),a.autoEnabled&&s('[id^="foogallery-gallery-"].fg-ready').foogallery(a.autoDefaults)})},a.load()}(FooGallery.$,FooGallery,FooGallery.utils,FooGallery.utils.obj,FooGallery.utils.is);
1
  /*
2
  * FooGallery - The Most Intuitive and Extensible Gallery Creation and Management Tool Ever Created for WordPress
3
+ * @version 2.0.39
4
  * @link
5
  * @copyright Steven Usher & Brad Vincent 2015
6
  * @license Released under the GPLv3 license.
7
  */
8
+ function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}!function(){"use strict";var h,t;function l(e){this.time=e.time,this.target=e.target,this.rootBounds=e.rootBounds,this.boundingClientRect=e.boundingClientRect,this.intersectionRect=e.intersectionRect||r(),this.isIntersecting=!!e.intersectionRect;var e=this.boundingClientRect,e=e.width*e.height,t=this.intersectionRect,t=t.width*t.height;this.intersectionRatio=e?Number((t/e).toFixed(4)):this.isIntersecting?1:0}function e(e,t){var n,i,r,t=t||{};if("function"!=typeof e)throw new Error("callback must be a function");if(t.root&&1!=t.root.nodeType)throw new Error("root must be an Element");this._checkForIntersections=(n=this._checkForIntersections.bind(this),i=this.THROTTLE_TIMEOUT,r=null,function(){r=r||setTimeout(function(){n(),r=null},i)}),this._callback=e,this._observationTargets=[],this._queuedEntries=[],this._rootMarginValues=this._parseRootMargin(t.rootMargin),this.thresholds=this._initThresholds(t.threshold),this.root=t.root||null,this.rootMargin=this._rootMarginValues.map(function(e){return e.value+e.unit}).join(" ")}function n(e,t,n,i){"function"==typeof e.addEventListener?e.addEventListener(t,n,i||!1):"function"==typeof e.attachEvent&&e.attachEvent("on"+t,n)}function i(e,t,n,i){"function"==typeof e.removeEventListener?e.removeEventListener(t,n,i||!1):"function"==typeof e.detatchEvent&&e.detatchEvent("on"+t,n)}function p(e){var t;try{t=e.getBoundingClientRect()}catch(e){}return t?t.width&&t.height?t:{top:t.top,right:t.right,bottom:t.bottom,left:t.left,width:t.right-t.left,height:t.bottom-t.top}:r()}function r(){return{top:0,bottom:0,left:0,right:0,width:0,height:0}}function o(e,t){for(var n=t;n;){if(n==e)return!0;n=d(n)}return!1}function d(e){e=e.parentNode;return e&&11==e.nodeType&&e.host?e.host:e&&e.assignedSlot?e.assignedSlot.parentNode:e}"object"==typeof window&&("IntersectionObserver"in window&&"IntersectionObserverEntry"in window&&"intersectionRatio"in window.IntersectionObserverEntry.prototype?"isIntersecting"in window.IntersectionObserverEntry.prototype||Object.defineProperty(window.IntersectionObserverEntry.prototype,"isIntersecting",{get:function(){return 0<this.intersectionRatio}}):(h=window.document,t=[],e.prototype.THROTTLE_TIMEOUT=100,e.prototype.POLL_INTERVAL=null,e.prototype.USE_MUTATION_OBSERVER=!0,e.prototype.observe=function(t){var e=this._observationTargets.some(function(e){return e.element==t});if(!e){if(!t||1!=t.nodeType)throw new Error("target must be an Element");this._registerInstance(),this._observationTargets.push({element:t,entry:null}),this._monitorIntersections(),this._checkForIntersections()}},e.prototype.unobserve=function(t){this._observationTargets=this._observationTargets.filter(function(e){return e.element!=t}),this._observationTargets.length||(this._unmonitorIntersections(),this._unregisterInstance())},e.prototype.disconnect=function(){this._observationTargets=[],this._unmonitorIntersections(),this._unregisterInstance()},e.prototype.takeRecords=function(){var e=this._queuedEntries.slice();return this._queuedEntries=[],e},e.prototype._initThresholds=function(e){e=e||[0];return(e=Array.isArray(e)?e:[e]).sort().filter(function(e,t,n){if("number"!=typeof e||isNaN(e)||e<0||1<e)throw new Error("threshold must be a number between 0 and 1 inclusively");return e!==n[t-1]})},e.prototype._parseRootMargin=function(e){e=(e||"0px").split(/\s+/).map(function(e){e=/^(-?\d*\.?\d+)(px|%)$/.exec(e);if(e)return{value:parseFloat(e[1]),unit:e[2]};throw new Error("rootMargin must be specified in pixels or percent")});return e[1]=e[1]||e[0],e[2]=e[2]||e[0],e[3]=e[3]||e[1],e},e.prototype._monitorIntersections=function(){this._monitoringIntersections||(this._monitoringIntersections=!0,this.POLL_INTERVAL?this._monitoringInterval=setInterval(this._checkForIntersections,this.POLL_INTERVAL):(n(window,"resize",this._checkForIntersections,!0),n(h,"scroll",this._checkForIntersections,!0),this.USE_MUTATION_OBSERVER&&"MutationObserver"in window&&(this._domObserver=new MutationObserver(this._checkForIntersections),this._domObserver.observe(h,{attributes:!0,childList:!0,characterData:!0,subtree:!0}))))},e.prototype._unmonitorIntersections=function(){this._monitoringIntersections&&(this._monitoringIntersections=!1,clearInterval(this._monitoringInterval),this._monitoringInterval=null,i(window,"resize",this._checkForIntersections,!0),i(h,"scroll",this._checkForIntersections,!0),this._domObserver&&(this._domObserver.disconnect(),this._domObserver=null))},e.prototype._checkForIntersections=function(){var s=this._rootIsInDom(),a=s?this._getRootRect():r();this._observationTargets.forEach(function(e){var t=e.element,n=p(t),i=this._rootContainsTarget(t),r=e.entry,o=s&&i&&this._computeTargetAndRootIntersection(t,a),e=e.entry=new l({time:window.performance&&performance.now&&performance.now(),target:t,boundingClientRect:n,rootBounds:a,intersectionRect:o});r?s&&i?this._hasCrossedThreshold(r,e)&&this._queuedEntries.push(e):r&&r.isIntersecting&&this._queuedEntries.push(e):this._queuedEntries.push(e)},this),this._queuedEntries.length&&this._callback(this.takeRecords(),this)},e.prototype._computeTargetAndRootIntersection=function(e,t){if("none"!=window.getComputedStyle(e).display){for(var n,i,r,o,s=p(e),a=d(e),l=!1;!l;){var c=null,u=1==a.nodeType?window.getComputedStyle(a):{};if("none"==u.display)return;if(a==this.root||a==h?(l=!0,c=t):a!=h.body&&a!=h.documentElement&&"visible"!=u.overflow&&(c=p(a)),c&&(u=c,c=s,o=r=i=n=void 0,n=Math.max(u.top,c.top),i=Math.min(u.bottom,c.bottom),r=Math.max(u.left,c.left),u=Math.min(u.right,c.right),o=i-n,!(s=0<=(c=u-r)&&0<=o&&{top:n,bottom:i,left:r,right:u,width:c,height:o})))break;a=d(a)}return s}},e.prototype._getRootRect=function(){var e,t;return t=this.root?p(this.root):(t=h.documentElement,e=h.body,{top:0,left:0,right:t.clientWidth||e.clientWidth,width:t.clientWidth||e.clientWidth,bottom:t.clientHeight||e.clientHeight,height:t.clientHeight||e.clientHeight}),this._expandRectByRootMargin(t)},e.prototype._expandRectByRootMargin=function(n){var e=this._rootMarginValues.map(function(e,t){return"px"==e.unit?e.value:e.value*(t%2?n.width:n.height)/100}),e={top:n.top-e[0],right:n.right+e[1],bottom:n.bottom+e[2],left:n.left-e[3]};return e.width=e.right-e.left,e.height=e.bottom-e.top,e},e.prototype._hasCrossedThreshold=function(e,t){var n=e&&e.isIntersecting?e.intersectionRatio||0:-1,i=t.isIntersecting?t.intersectionRatio||0:-1;if(n!==i)for(var r=0;r<this.thresholds.length;r++){var o=this.thresholds[r];if(o==n||o==i||o<n!=o<i)return!0}},e.prototype._rootIsInDom=function(){return!this.root||o(h,this.root)},e.prototype._rootContainsTarget=function(e){return o(this.root||h,e)},e.prototype._registerInstance=function(){t.indexOf(this)<0&&t.push(this)},e.prototype._unregisterInstance=function(){var e=t.indexOf(this);-1!=e&&t.splice(e,1)},window.IntersectionObserver=e,window.IntersectionObserverEntry=l))}(),function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.ResizeObserver=t()}(this,function(){"use strict";var i="undefined"!=typeof Map?Map:(Object.defineProperty(e.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),e.prototype.get=function(e){e=r(this.__entries__,e),e=this.__entries__[e];return e&&e[1]},e.prototype.set=function(e,t){var n=r(this.__entries__,e);~n?this.__entries__[n][1]=t:this.__entries__.push([e,t])},e.prototype.delete=function(e){var t=this.__entries__,e=r(t,e);~e&&t.splice(e,1)},e.prototype.has=function(e){return!!~r(this.__entries__,e)},e.prototype.clear=function(){this.__entries__.splice(0)},e.prototype.forEach=function(e,t){void 0===t&&(t=null);for(var n=0,i=this.__entries__;n<i.length;n++){var r=i[n];e.call(t,r[1],r[0])}},e);function e(){this.__entries__=[]}function r(e,n){var i=-1;return e.some(function(e,t){return e[0]===n&&(i=t,!0)}),i}var n="undefined"!=typeof window&&"undefined"!=typeof document&&window.document===document,t="undefined"!=typeof global&&global.Math===Math?global:"undefined"!=typeof self&&self.Math===Math?self:"undefined"!=typeof window&&window.Math===Math?window:Function("return this")(),l="function"==typeof requestAnimationFrame?requestAnimationFrame.bind(t):function(e){return setTimeout(function(){return e(Date.now())},1e3/60)},c=2;var o=["top","right","bottom","left","width","height","size","weight"],s="undefined"!=typeof MutationObserver,a=(u.prototype.addObserver=function(e){~this.observers_.indexOf(e)||this.observers_.push(e),this.connected_||this.connect_()},u.prototype.removeObserver=function(e){var t=this.observers_,e=t.indexOf(e);~e&&t.splice(e,1),!t.length&&this.connected_&&this.disconnect_()},u.prototype.refresh=function(){this.updateObservers_()&&this.refresh()},u.prototype.updateObservers_=function(){var e=this.observers_.filter(function(e){return e.gatherActive(),e.hasActive()});return e.forEach(function(e){return e.broadcastActive()}),0<e.length},u.prototype.connect_=function(){n&&!this.connected_&&(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),s?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},u.prototype.disconnect_=function(){n&&this.connected_&&(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},u.prototype.onTransitionEnd_=function(e){var e=e.propertyName,t=void 0===e?"":e;o.some(function(e){return!!~t.indexOf(e)})&&this.refresh()},u.getInstance=function(){return this.instance_||(this.instance_=new u),this.instance_},u.instance_=null,u);function u(){function e(){o&&(o=!1,i()),s&&n()}function t(){l(e)}function n(){var e=Date.now();if(o){if(e-a<c)return;s=!0}else s=!(o=!0),setTimeout(t,r);a=e}var i,r,o,s,a;this.connected_=!1,this.mutationEventsAdded_=!1,this.mutationsObserver_=null,this.observers_=[],this.onTransitionEnd_=this.onTransitionEnd_.bind(this),this.refresh=(i=this.refresh.bind(this),s=o=!(r=20),a=0,n)}var h=function(e,t){for(var n=0,i=Object.keys(t);n<i.length;n++){var r=i[n];Object.defineProperty(e,r,{value:t[r],enumerable:!1,writable:!1,configurable:!0})}return e},p=function(e){return e&&e.ownerDocument&&e.ownerDocument.defaultView||t},d=b(0,0,0,0);function f(e){return parseFloat(e)||0}function g(n){for(var e=[],t=1;t<arguments.length;t++)e[t-1]=arguments[t];return e.reduce(function(e,t){return e+f(n["border-"+t+"-width"])},0)}function m(e){var t,n,i,r,o,s,a=e.clientWidth,l=e.clientHeight;return a||l?(n=(t=function(e){for(var t={},n=0,i=["top","right","bottom","left"];n<i.length;n++){var r=i[n],o=e["padding-"+r];t[r]=f(o)}return t}(s=p(e).getComputedStyle(e))).left+t.right,i=t.top+t.bottom,r=f(s.width),o=f(s.height),"border-box"===s.boxSizing&&(Math.round(r+n)!==a&&(r-=g(s,"left","right")+n),Math.round(o+i)!==l&&(o-=g(s,"top","bottom")+i)),e!==p(e).document.documentElement&&(s=Math.round(r+n)-a,e=Math.round(o+i)-l,1!==Math.abs(s)&&(r-=s),1!==Math.abs(e)&&(o-=e)),b(t.left,t.top,r,o)):d}var v="undefined"!=typeof SVGGraphicsElement?function(e){return e instanceof p(e).SVGGraphicsElement}:function(e){return e instanceof p(e).SVGElement&&"function"==typeof e.getBBox};function y(e){var t;return n?v(e)?b(0,0,(t=(t=e).getBBox()).width,t.height):m(e):d}function b(e,t,n,i){return{x:e,y:t,width:n,height:i}}w.prototype.isActive=function(){var e=y(this.target);return(this.contentRect_=e).width!==this.broadcastWidth||e.height!==this.broadcastHeight},w.prototype.broadcastRect=function(){var e=this.contentRect_;return this.broadcastWidth=e.width,this.broadcastHeight=e.height,e};var _=w;function w(e){this.broadcastWidth=0,this.broadcastHeight=0,this.contentRect_=b(0,0,0,0),this.target=e}var x=function(e,t){n=(t=t).x,i=t.y,o=t.width,t=t.height,r="undefined"!=typeof DOMRectReadOnly?DOMRectReadOnly:Object,r=Object.create(r.prototype),h(r,{x:n,y:i,width:o,height:t,top:i,right:n+o,bottom:t+i,left:n});var n,i,r,o=r;h(this,{target:e,contentRect:o})},C=(E.prototype.observe=function(e){if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");if("undefined"!=typeof Element&&Element instanceof Object){if(!(e instanceof p(e).Element))throw new TypeError('parameter 1 is not of type "Element".');var t=this.observations_;t.has(e)||(t.set(e,new _(e)),this.controller_.addObserver(this),this.controller_.refresh())}},E.prototype.unobserve=function(e){if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");if("undefined"!=typeof Element&&Element instanceof Object){if(!(e instanceof p(e).Element))throw new TypeError('parameter 1 is not of type "Element".');var t=this.observations_;t.has(e)&&(t.delete(e),t.size||this.controller_.removeObserver(this))}},E.prototype.disconnect=function(){this.clearActive(),this.observations_.clear(),this.controller_.removeObserver(this)},E.prototype.gatherActive=function(){var t=this;this.clearActive(),this.observations_.forEach(function(e){e.isActive()&&t.activeObservations_.push(e)})},E.prototype.broadcastActive=function(){var e,t;this.hasActive()&&(e=this.callbackCtx_,t=this.activeObservations_.map(function(e){return new x(e.target,e.broadcastRect())}),this.callback_.call(e,t,e),this.clearActive())},E.prototype.clearActive=function(){this.activeObservations_.splice(0)},E.prototype.hasActive=function(){return 0<this.activeObservations_.length},E);function E(e,t,n){if(this.activeObservations_=[],this.observations_=new i,"function"!=typeof e)throw new TypeError("The callback provided as parameter 1 is not a function.");this.callback_=e,this.controller_=t,this.callbackCtx_=n}var F=new("undefined"!=typeof WeakMap?WeakMap:i),$=function e(t){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var n=a.getInstance(),t=new C(t,n,this);F.set(this,t)};return["observe","unobserve","disconnect"].forEach(function(t){$.prototype[t]=function(){var e;return(e=F.get(this))[t].apply(e,arguments)}}),void 0!==t.ResizeObserver?t.ResizeObserver:$}),function(e){(window.FooGallery=window.FooGallery||{}).$=e}(jQuery),function(e){e?function(){try{return window.FooGallery.utils}catch(e){}}()||(window.FooGallery.utils={$:e,version:"1.0.0"}):console.warn("jQuery must be included in the page prior to the FooGallery.utils library.")}(jQuery),function(t,n){"1.0.0"===n.version&&(n.is={},n.is.array=function(e){return"[object Array]"===Object.prototype.toString.call(e)},n.is.boolean=function(e){return"[object Boolean]"===Object.prototype.toString.call(e)},n.is.element=function(e){return"object"===("undefined"==typeof HTMLElement?"undefined":_typeof(HTMLElement))?e instanceof HTMLElement:!!e&&"object"===_typeof(e)&&1===e.nodeType&&"string"==typeof e.nodeName},n.is.empty=function(e){if(n.is.undef(e)||null===e)return!0;if(n.is.number(e)&&0===e)return!0;if(n.is.boolean(e)&&!1===e)return!0;if(n.is.string(e)&&0===e.length)return!0;if(n.is.array(e)&&0===e.length)return!0;if(n.is.jq(e)&&0===e.length)return!0;if(n.is.hash(e)){for(var t in e)if(e.hasOwnProperty(t))return!1;return!0}return!1},n.is.error=function(e){return"[object Error]"===Object.prototype.toString.call(e)},n.is.fn=function(e){return e===window.alert||"[object Function]"===Object.prototype.toString.call(e)},n.is.hash=function(e){return n.is.object(e)&&e.constructor===Object&&!e.nodeType&&!e.setInterval},n.is.jq=function(e){return!n.is.undef(t)&&e instanceof t},n.is.number=function(e){return"[object Number]"===Object.prototype.toString.call(e)&&!isNaN(e)},n.is.object=function(e){return"[object Object]"===Object.prototype.toString.call(e)&&!n.is.undef(e)&&null!==e},n.is.promise=function(e){return n.is.object(e)&&n.is.fn(e.then)&&n.is.fn(e.promise)},n.is.size=function(e){return!!(n.is.string(e)&&!n.is.empty(e)||n.is.number(e))&&/^(auto|none|(?:[\d.]*)+?(?:%|px|mm|q|cm|in|pt|pc|em|ex|ch|rem|vh|vw|vmin|vmax)?)$/.test(e)},n.is.string=function(e){return"[object String]"===Object.prototype.toString.call(e)},n.is.undef=function(e){return void 0===e})}(FooGallery.utils.$,FooGallery.utils),function(l,c,u){var a;"1.0.0"===c.version&&(c.fn={},a=Function.prototype.toString,c.fn.CONTAINS_SUPER=/xyz/.test(a.call(function(){xyz}))?/\b_super\b/:/.*/,c.fn.noop=function(){},c.fn.addOrOverride=function(e,t,n){var i,r,o,s;u.object(e)&&u.string(t)&&!u.empty(t)&&u.fn(n)&&(i=e[t],r=u.fn(i)&&c.fn.CONTAINS_SUPER.test(a.call(n)),e[t]=r?(o=i,s=n,function(){var e=this._super,t=(this._super=o,s.apply(this,arguments));return this._super=e,t}):n)},c.fn.expose=function(t,n,e,i){u.object(t)&&u.object(n)&&u.array(e)&&(i=u.undef(i)?t:i,e.forEach(function(e){u.string(e)&&u.fn(t[e])&&(n[e]=t[e].bind(i))}))},c.fn.apply=function(e,t){return t.unshift(e),new(Function.prototype.bind.apply(e,t))},c.fn.arg2arr=function(e){return Array.prototype.slice.call(e)},c.fn.debounce=function(n,i){var r;return function(){var e=this,t=c.fn.arg2arr(arguments);clearTimeout(r),r=setTimeout(function(){n.apply(e,t)},i)}},c.fn.throttle=function(n,i){var r,o;return function(){var e=this,t=c.fn.arg2arr(arguments);r?(clearTimeout(o),o=setTimeout(function(){Date.now()-r>=i&&(n.apply(e,t),r=Date.now())},i-(Date.now()-r))):(n.apply(e,t),r=Date.now())}},c.fn.resolved=l.Deferred().resolve().promise(),c.fn.rejected=l.Deferred().reject().promise(),c.fn.reject=function(e,t){var n=l.Deferred(),i=c.fn.arg2arr(arguments);return n.reject.apply(n,i).promise()},c.fn.resolve=function(e,t){var n=l.Deferred(),i=c.fn.arg2arr(arguments);return n.resolve.apply(n,i).promise()},c.fn.rejectWith=function(e,t,n){var i=l.Deferred(),r=c.fn.arg2arr(arguments);return r.shift(),i.rejectWith(e,r).promise()},c.fn.resolveWith=function(e,t,n){var i=l.Deferred(),r=c.fn.arg2arr(arguments);return r.shift(),i.resolveWith(e,r).promise()},c.fn.all=function(t){var n=l.Deferred(),i=[];if(u.array(t)&&0<t.length){function r(e,t){s||(i[e]=0===t.length?void 0:1===t.length?t[0]:t,--o||n.resolve(i))}for(var o=t.length,s=!1,a=0,e=t.length;a<e&&"break"!==function(){if(s)return"break";var e=a;u.promise(t[e])?t[e].then(function(){r(e,c.fn.arg2arr(arguments))},function(){s||(s=!0,n.reject.apply(n,c.fn.arg2arr(arguments)))}):r(e,[t[e]])}();a++);}else n.resolve(i);return n.promise()},c.fn.allSettled=function(t){var i=l.Deferred(),r=[];if(u.array(t)&&0<t.length){function n(e,t,n){r[e]={status:t},0<n.length&&(r[e]["rejected"===t?"reason":"value"]=1===n.length?n[0]:n),--o||i.resolve(r)}for(var o=t.length,s=0,e=t.length;s<e;s++)!function(){var e=s;u.promise(t[e])?t[e].then(function(){n(e,"fulfilled",c.fn.arg2arr(arguments))},function(){n(e,"rejected",c.fn.arg2arr(arguments))}):n(e,"fulfilled",[t[e]])}()}else i.resolve(r);return i.promise()})}(FooGallery.utils.$,FooGallery.utils,FooGallery.utils.is),function(e,o){var r;"1.0.0"===e.version&&(e.url={},r=document.createElement("a"),e.url.parts=function(e){r.href=e;var e=r.port||(-1!==["http:","https:"].indexOf(r.protocol)?"https:"===r.protocol?"443":"80":""),t=r.hostname+(e?":"+e:""),n=r.origin||r.protocol+"//"+t,i="/"===r.pathname.slice(0,1)?r.pathname:"/"+r.pathname;return{hash:r.hash,host:t,hostname:r.hostname,href:r.href,origin:n,pathname:i,port:e,protocol:r.protocol,search:r.search}},e.url.full=function(e){return!o.string(e)||o.empty(e)?null:(r.href=e,r.href)},e.url.param=function(e,t,n){var i,r;return o.string(e)&&o.string(t)&&!o.empty(t)?o.undef(n)?(r=((i=new RegExp("[?|&]"+t+"=([^&;]+?)(&|#|;|$)")).exec(e)||["",""])[1].replace(/\+/g,"%20"),o.string(r)&&!o.empty(r)?decodeURIComponent(r):null):(o.empty(n)?(i=new RegExp("^([^#]*?)(([^#]*)&)?"+t+"(=[^&#]*)?(&|#|$)"),r=e.replace(i,"$1$3$5").replace(/^([^#]*)((\?)&|\?(#|$))/,"$1$3$4")):(i=new RegExp("([?&])"+t+"[^&]*"),t=t+"="+encodeURIComponent(n),(r=e.replace(i,"$1"+t))!==e||i.test(r)||(r+=(-1!==r.indexOf("?")?"&":"?")+t)),r):e})}(FooGallery.utils,FooGallery.utils.is),function(a,l,c){"1.0.0"===a.version&&(a.str={},a.str.trim=function(e){return l.string(e)?e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,""):null},a.str.camel=function(e){return l.string(e)?e.toUpperCase()===e?e.toLowerCase():e.replace(/^([A-Z])|[-\s_]+(\w)/g,function(e,t,n){return l.string(n)?n.toUpperCase():t.toLowerCase()}):e},a.str.kebab=function(e){return l.string(e)?e.match(/[A-Z]{2,}(?=[A-Z][a-z0-9]*|\b)|[A-Z]?[a-z0-9]*|[A-Z]|[0-9]+/g).filter(Boolean).map(function(e){return e.toLowerCase()}).join("-"):e},a.str.contains=function(e,t,n){return!(!l.string(e)||l.empty(e)||!l.string(t)||l.empty(t))&&(t.length<=e.length&&-1!==(n?e.toUpperCase().indexOf(t.toUpperCase()):e.indexOf(t)))},a.str.containsWord=function(e,t,n){if(!(!l.string(e)||l.empty(e)||!l.string(t)||l.empty(t)||e.length<t.length))for(var i=e.split(/\W/),r=0,o=i.length;r<o;r++)if(n?i[r].toUpperCase()===t.toUpperCase():i[r]===t)return!0;return!1},a.str.endsWith=function(e,t){return!(!l.string(e)||!l.string(t)||t.length>e.length)&&e.slice(e.length-t.length)===t},a.str.startsWith=function(e,t){return!l.empty(e)&&!l.empty(t)&&e.slice(0,t.length)===t},a.str.escapeRegExp=function(e){return l.string(e)?e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"):e},a.str.fnv1a=function(e){if(!l.string(e)||l.empty(e))return null;for(var t=2166136261,n=0,i=e.length;n<i;n++)t=(t^=e.charCodeAt(n))+((t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24));return t>>>0},a.str.from=function(e,t){return a.str.contains(e,t)?e.substring(e.indexOf(t)+t.length):null},a.str.join=function(e,t,n){if(!l.string(e)||!l.string(t))return null;var i=c.arg2arr(arguments);e=i.shift();for(var r=i.shift(),o=0,s=i.length;o<s;o++)t=i[o],l.empty(t)||(a.str.endsWith(r,e)&&(r=r.slice(0,r.length-e.length)),r+=e+(t=a.str.startsWith(t,e)?t.slice(e.length):t));return r},a.str.until=function(e,t){return a.str.contains(e,t)?e.substring(0,e.indexOf(t)):e},a.str.format=function(n,e,t){var i=c.arg2arr(arguments);return n=i.shift(),l.string(n)&&0<i.length&&(1===i.length&&(l.array(i[0])||l.object(i[0]))&&(i=i[0]),a.each(i,function(e,t){n=n.replace(new RegExp("\\{"+t+"\\}","gi"),e+"")})),n})}(FooGallery.utils,FooGallery.utils.is,FooGallery.utils.fn),function(a,l,r,o){"1.0.0"===a.version&&(a.obj={},a.obj.create=function(e){if(l.object(e))return t.prototype=e,new t;throw TypeError("Argument must be an object");function t(){}},a.obj.extend=function(t,e,n){t=l.object(t)?t:{};var i=r.arg2arr(arguments);return i.shift(),a.each(i,function(e){a.obj.merge(t,e)}),t},a.obj.merge=function(e,t){for(var n in e=l.hash(e)?e:{},t=l.hash(t)?t:{})t.hasOwnProperty(n)&&(l.hash(t[n])?(e[n]=l.hash(e[n])?e[n]:{},a.obj.merge(e[n],t[n])):l.array(t[n])?e[n]=t[n].slice():e[n]=t[n]);return e},a.obj.mergeValid=function(t,n,i,e){var r,o,s;if(l.hash(i)&&l.hash(n))for(r in n=l.hash(n)?n:{},e=l.hash(e)?e:{},n)n.hasOwnProperty(r)&&l.fn(n[r])&&(o=l.array(e[r])?e[r]:l.string(e[r])?[e[r]]:[r],a.each(o,function(e){return s=a.obj.prop(i,e),!l.undef(s)&&n[r](s)?(a.obj.prop(t,r,s),!1):void 0}));return t},a.obj.prop=function(n,e,i){var t,r;if(l.object(n)&&!l.empty(e))return l.undef(i)?(o.contains(e,".")?(t=e.split("."),r=t.length-1,a.each(t,function(e,t){if(t===r)i=n[e];else{if(!l.hash(n[e]))return!1;n=n[e]}})):l.undef(n[e])||(i=n[e]),i):void(o.contains(e,".")?(t=e.split("."),r=t.length-1,a.each(t,function(e,t){t===r?n[e]=i:n=l.hash(n[e])?n[e]:n[e]={}})):l.undef(n[e])||(n[e]=i))})}((FooGallery.utils.$,FooGallery.utils),FooGallery.utils.is,FooGallery.utils.fn,FooGallery.utils.str),function(t,r,s){"1.0.0"===r.version&&(r.ready=function(e){function t(){try{e.call(window,r.$)}catch(e){console.error(e)}}(Function("/*@cc_on return true@*/")()?"complete"===document.readyState:"loading"!==document.readyState)?t():document.addEventListener("DOMContentLoaded",t,!1)},r.find=function(e,t,n){if(s.fn(t))if(n=s.undef(n)?t:n,s.array(e)){for(r=0,o=e.length;r<o;r++)if(t.call(n,e[r],r,e))return e[r]}else if(s.object(e))for(var i=Object.keys(e),r=0,o=i.length;r<o;r++)if(t.call(n,e[i[r]],i[r],e))return e[i[r]]},r.each=function(e,t,n){if(s.fn(t))if(n=s.undef(n)?t:n,s.array(e))for(r=0,o=e.length;r<o&&!1!==t.call(n,e[r],r,e);r++);else if(s.object(e))for(var i=Object.keys(e),r=0,o=i.length;r<o&&!1!==t.call(n,e[i[r]],i[r],e);r++);},r.inArray=function(e,t){return s.array(t)?t.indexOf(e):-1},r.selectify=function(e){if(s.empty(e))return null;if(s.hash(e)){var t,n,i={};for(n in e)e.hasOwnProperty(n)&&(t=r.selectify(e[n]))&&(i[n]=t);return i}return s.string(e)||s.array(e)?(e=s.string(e)?[e]:e).map(function(e){return s.string(e)?"."+e.split(/\s/g).join("."):null}).join(","):null},r.requestFrame=(window.requestAnimationFrame||window.webkitRequestAnimationFrame||function(e){return setTimeout(e,1e3/60)}).bind(window),r.cancelFrame=(window.cancelAnimationFrame||window.webkitCancelAnimationFrame||function(e){clearTimeout(e)}).bind(window),r.nextFrame=function(e,n){return t.Deferred(function(t){s.fn(e)?(n=s.undef(n)?e:n,r.requestFrame(function(){try{t.resolve(e.call(n))}catch(e){t.reject(e)}})):t.reject(new Error("Provided callback is not a function."))}).promise()})}(FooGallery.utils.$,FooGallery.utils,FooGallery.utils.is),function(r,o,s,a){"1.0.0"===r.version&&(r.Class=function(){},r.Class.extend=function(e){e=o.hash(e)?e:{};var t,n=s.create(this.prototype);for(t in e)e.hasOwnProperty(t)&&a.addOrOverride(n,t,e[t]);function i(){if(!o.fn(this.construct))throw new SyntaxError('FooGallery.utils.Class objects must be constructed with the "new" keyword.');this.construct.apply(this,arguments)}return n.construct=o.fn(n.construct)?n.construct:function(){},(i.prototype=n).constructor=o.fn(n.__ctor__)?n.__ctor__:i,i.extend=r.Class.extend,i.override=r.Class.override,i.getBaseClasses=r.Class.getBaseClasses,i.__baseClass__=this,i},r.Class.override=function(e,t){a.addOrOverride(this.prototype,e,t)},r.Class.__baseClass__=null,r.Class.getBaseClasses=function(){return function e(t,n){return o.array(n)||(n=[]),o.fn(t)&&null!==t.__baseClass__?(n.unshift(t.__baseClass__),e(t.__baseClass__,n)):n}(this,[])})}((FooGallery.utils.$,FooGallery.utils),FooGallery.utils.is,FooGallery.utils.obj,FooGallery.utils.fn),function(e,a,l,r){e.ClassRegistry=e.Class.extend({construct:function(e){this.opt=r.extend({allowBase:!0,beforeCreate:null},e),this.registered={}},register:function(e,t,n,i){var r;return!(!a.string(e)||a.empty(e)||!a.fn(t))&&(i=a.number(i)?i:0,r=this.registered[e],this.registered[e]={name:e,ctor:t,config:a.hash(n)?n:{},priority:a.undef(r)?i:r.priority},!0)},each:function(e,t,n){t=!!a.boolean(t)&&t,n=a.undef(n)?e:n;for(var i=this,r=Object.keys(i.registered).map(function(e){return i.registered[e]}),o=(t&&r.sort(function(e,t){return t.priority-e.priority}),0),s=r.length;o<s&&!1!==e.call(n,r[o],o);o++);},find:function(e,t,n){t=!!a.boolean(t)&&t,n=a.undef(n)?e:n;for(var i=this,r=Object.keys(i.registered).map(function(e){return i.registered[e]}),o=(t&&r.sort(function(e,t){return t.priority-e.priority}),0),s=r.length;o<s;o++)if(e.call(n,r[o],o))return r[o];return null},create:function(e,t,n){var i=this,r=l.arg2arr(arguments);if(e=r.shift(),a.string(e)&&i.registered.hasOwnProperty(e)){var o=i.registered[e],s=!0;if((s=o.priority<0&&!i.opt.allowBase?!1:s)&&a.fn(o.ctor))return t=r.shift(),t=i.mergeConfigurations(o.name,t),r.unshift.apply(r,[o.name,t]),l.apply(o.ctor,i.onBeforeCreate(o,r))}return null},onBeforeCreate:function(e,t){return null!==this.opt.beforeCreate&&a.fn(this.opt.beforeCreate)?this.opt.beforeCreate.call(this,e,t):t},mergeConfigurations:function(e,t){var n,i;return a.string(e)&&this.registered.hasOwnProperty(e)?(t=a.hash(t)?t:{},n=this.getBaseClasses(e),i=[{}],n.push(this.registered[e]),n.forEach(function(e){i.push(e.config)}),i.push(t),r.extend.apply(r,i)):{}},getBaseClass:function(){return this.find(function(e){return e.priority<0},!0)},getBaseClasses:function(e){var t=this,e=t.registered[e],n=[];return a.undef(e)||e.ctor.getBaseClasses().forEach(function(e){e=t.fromType(e);a.hash(e)&&n.push(e)}),n},fromType:function(t){if(a.fn(t))return this.find(function(e){return e.ctor===t})}})}((FooGallery.utils.$,FooGallery.utils),FooGallery.utils.is,FooGallery.utils.fn,FooGallery.utils.obj),function(o,s,n){"1.0.0"===o.version&&(o.Event=o.Class.extend({construct:function(e){if(s.empty(e))throw new SyntaxError("FooGallery.utils.Event objects must be supplied a `type`.");e=o.Event.parse(e);this.type=e.type,this.namespace=e.namespace,this.defaultPrevented=!1,this.target=null},preventDefault:function(){this.defaultPrevented=!0},isDefaultPrevented:function(){return this.defaultPrevented}}),o.Event.parse=function(e){e=s.string(e)&&!s.empty(e)?e:null;var t=n.contains(e,".");return{namespaced:t,type:t?n.startsWith(e,".")?null:n.until(e,"."):e,namespace:t?n.from(e,"."):null}},o.EventClass=o.Class.extend({construct:function(){this.events={}},destroy:function(){this.events={}},on:function(n,t,i){var r=this;return s.object(n)?(i=t,Object.keys(n).forEach(function(t){s.fn(n[t])&&t.split(" ").forEach(function(e){r.addListener(e,n[t],i)})})):s.string(n)&&s.fn(t)&&n.split(" ").forEach(function(e){r.addListener(e,t,i)}),r},addListener:function(e,t,n){var i,r;return!(!s.string(e)||/\s/.test(e)||!s.fn(t))&&(i=this,r=o.Event.parse(e),n=s.undef(n)?i:n,s.array(i.events[r.type])||(i.events[r.type]=[]),!i.events[r.type].some(function(e){return e.namespace===r.namespace&&e.fn===t&&e.thisArg===n})&&(i.events[r.type].push({namespace:r.namespace,fn:t,thisArg:n}),!0))},off:function(n,t,i){var r=this;return s.object(n)?(i=t,Object.keys(n).forEach(function(t){t.split(" ").forEach(function(e){r.removeListener(e,n[t],i)})})):s.string(n)&&n.split(" ").forEach(function(e){r.removeListener(e,t,i)}),r},removeListener:function(e,t,n){var i,r;return!(!s.string(e)||/\s/.test(e))&&(i=this,r=o.Event.parse(e),e=[],n=s.undef(n)?i:n,s.empty(r.type)?s.empty(r.namespace)||e.push.apply(e,Object.keys(i.events)):e.push(r.type),e.forEach(function(e){s.array(i.events[e])&&(i.events[e]=i.events[e].filter(function(e){return null!=t?!(e.namespace===r.namespace&&e.fn===t&&e.thisArg===n):null!=r.namespace&&e.namespace!==r.namespace}),0===i.events[e].length&&delete i.events[e])}),!0)},trigger:function(e,t){t=s.array(t)?t:[];var n=this,i=[];return e instanceof o.Event?(i.push(e),n.emit(e,t)):s.string(e)&&e.split(" ").forEach(function(e){e=new o.Event(e);i.push(e),n.emit(e,t)}),s.empty(i)?null:1===i.length?i[0]:i},emit:function(t,n){var e;t instanceof FooGallery.utils.Event&&(e=this,n=s.array(n)?n:[],null===t.target&&(t.target=e),s.array(e.events[t.type])&&e.events[t.type].forEach(function(e){null!=t.namespace&&e.namespace!==t.namespace||e.fn.apply(e.thisArg,[t].concat(n))}),s.array(e.events.__all__)&&e.events.__all__.forEach(function(e){e.fn.apply(e.thisArg,[t].concat(n))}))}}))}(FooGallery.utils,FooGallery.utils.is,FooGallery.utils.str),function(e,i,t){"1.0.0"===e.version&&(e.Timer=e.EventClass.extend({construct:function(e){var t=this;t._super(),t.interval=i.number(e)?e:1e3,t.isRunning=!1,t.isPaused=!1,t.canResume=!1,t.canRestart=!1,t.__timeout=null,t.__decrement=!1,t.__time=0,t.__remaining=0,t.__current=0,t.__finish=0,t.__restart=[]},__reset:function(){var e=this;clearTimeout(e.__timeout),e.__timeout=null,e.__decrement=!1,e.__time=0,e.__remaining=0,e.__current=0,e.__finish=0,e.isRunning=!1,e.isPaused=!1,e.canResume=!1},__eventArgs:function(e){return[this.__current,this.__time,this.__decrement].concat(t.arg2arr(arguments))},__tick:function(){var e=this;e.trigger("tick",e.__eventArgs()),e.__current===e.__finish?(e.trigger("complete",e.__eventArgs()),e.__reset()):(e.__decrement?e.__current--:e.__current++,e.__remaining--,e.canResume=0<e.__remaining,e.__timeout=setTimeout(function(){e.__tick()},e.interval))},start:function(e,t){var n=this;n.isRunning||(t=!!i.boolean(t)&&t,n.__restart=[e,t],n.__decrement=t,n.__time=e,n.__remaining=e,n.__current=t?e:0,n.__finish=t?0:e,n.canRestart=!0,n.isRunning=!0,n.isPaused=!1,n.trigger("start",n.__eventArgs()),n.__tick())},countdown:function(e){this.start(e,!0)},countup:function(e){this.start(e,!1)},restart:function(){var e=this;e.stop(),e.canRestart&&e.start.apply(e,e.__restart)},stop:function(){var e=this;(e.isRunning||e.isPaused)&&(e.__reset(),e.trigger("stop",e.__eventArgs()))},pause:function(){var e=this;return null!=e.__timeout&&(clearTimeout(e.__timeout),e.__timeout=null),e.isRunning&&(e.isRunning=!1,e.isPaused=!0,e.trigger("pause",e.__eventArgs())),e.__remaining},resume:function(){var e=this;e.canResume&&(e.isRunning=!0,e.isPaused=!1,e.trigger("resume",e.__eventArgs()),e.__tick())},reset:function(){this.__reset(),this.trigger("reset",this.__eventArgs())}}))}((FooGallery.utils.$,FooGallery.utils),FooGallery.utils.is,FooGallery.utils.fn,FooGallery.utils.obj),function(o,e,t){"1.0.0"===e.version&&(e.FullscreenAPI=e.EventClass.extend({construct:function(){this._super(),this.apis={w3:{enabled:"fullscreenEnabled",element:"fullscreenElement",request:"requestFullscreen",exit:"exitFullscreen",events:{change:"fullscreenchange",error:"fullscreenerror"}},webkit:{enabled:"webkitFullscreenEnabled",element:"webkitCurrentFullScreenElement",request:"webkitRequestFullscreen",exit:"webkitExitFullscreen",events:{change:"webkitfullscreenchange",error:"webkitfullscreenerror"}},moz:{enabled:"mozFullScreenEnabled",element:"mozFullScreenElement",request:"mozRequestFullScreen",exit:"mozCancelFullScreen",events:{change:"mozfullscreenchange",error:"mozfullscreenerror"}},ms:{enabled:"msFullscreenEnabled",element:"msFullscreenElement",request:"msRequestFullscreen",exit:"msExitFullscreen",events:{change:"MSFullscreenChange",error:"MSFullscreenError"}}},this.api=this.getAPI(),this.supported=null!=this.api,this.__listen()},destroy:function(){return this.__stopListening(),this._super()},getAPI:function(){for(var e in this.apis)if(this.apis.hasOwnProperty(e)&&this.apis[e].enabled in document)return this.apis[e];return null},element:function(){return this.supported?document[this.api.element]:null},request:function(e){return this.supported&&e[this.api.request]?e[this.api.request]()||o.Deferred(this.__resolver(this.api.request)).promise():t.rejected},exit:function(){return this.supported&&this.element()?document[this.api.exit]()||o.Deferred(this.__resolver(this.api.exit)).promise():t.rejected},toggle:function(e){return this.element()?this.exit():this.request(e)},__listen:function(){var e=this;e.supported&&o(document).on(e.api.events.change+".utils",function(){e.trigger("change")}).on(e.api.events.error+".utils",function(){e.trigger("error")})},__stopListening:function(){this.supported&&o(document).off(this.api.events.change+".utils").off(this.api.events.error+".utils")},__resolver:function(i){var r=this;return function(e){function t(){e.resolve(),o(document).off(r.api.events.change,t).off(r.api.events.error,n)}function n(){e.reject(new TypeError),o(document).off(r.api.events.change,t).off(r.api.events.error,n)}i===r.api.exit&&r.element()?setTimeout(function(){e.reject(new TypeError)},1):o(document).on(r.api.events.change,t).on(r.api.events.error,n)}}}))}(FooGallery.utils.$,FooGallery.utils,FooGallery.utils.fn),function(l,c,u,a){"1.0.0"===c.version&&(c.transition={},c.transition.dataName="__foo-transition__",c.transition.disableClassName=null,c.transition.timeout=3e3,c.transition.disable=function(e,t){var n,i,r,e=u.jq(e)?e:l(e);0<e.length&&u.fn(t)&&(n=e.get(0),r=null,(i=u.string(c.transition.disableClassName))?e.addClass(c.transition.disableClassName):(r={value:n.style.getPropertyValue("transition"),priority:n.style.getPropertyPriority("transition")},n.style.setProperty("transition","none","important")),t.call(t,e),e.prop("offsetWidth"),i?e.removeClass(c.transition.disableClassName):(n.style.removeProperty("transition"),u.string(r.value)&&0<r.value.length&&n.style.setProperty("transition",r.value,r.priority)))},c.transition.stop=function(e){var t=l.Deferred(),n=u.jq(e)?e:l(e);return 0<n.length?(e=n.data(c.transition.dataName),u.promise(e)?e.always(function(){c.requestFrame(function(){t.resolve(n)})}).reject(new Error("Transition cancelled.")):t.resolve(n)):t.reject(new Error("Unable to stop transition. Make sure the element exists.")),t.promise()},c.transition.createListener=function(e,t,n){var i=e,r=t,o=n,s=u.string(n);return function(e){var t=e.originalEvent instanceof TransitionEvent?e.originalEvent:e,n=!1;(n=t.target===i?!s||t.propertyName===o:n)&&r.apply(r,a.arg2arr(arguments))}},c.transition.start=function(e,n,i,r){var o,s=l.Deferred(),a=u.jq(e)?e:l(e);return 0<a.length&&u.fn(n)?(o=a.get(0),c.transition.stop(a).always(function(){var t=c.transition.createListener(o,function(){s.resolve(a)},i);a.data(c.transition.dataName,s).on("transitionend.foo-utils",t).prop("offsetWidth"),c.requestFrame(function(){var e=setTimeout(function(){s.reject(new Error("Transition safety timeout triggered."))},u.number(r)?r:c.transition.timeout);s.always(function(){clearTimeout(e),a.removeData(c.transition.dataName).off("transitionend.foo-utils",t)}),n.call(n,a)})})):s.reject(new Error("Unable to perform transition. Make sure the element exists and a trigger function is supplied.")),s.promise()},c.transition.modify=function(e,t,n,i){e=u.jq(e)?e:l(e);return 0<e.length&&u.fn(t)?n?(c.transition.disable(e,t),a.resolve()):c.transition.start(e,t,i):a.reject(new Error("Unable to perform modification. Make sure the element exists and a modify function is supplied."))})}(FooGallery.utils.$,FooGallery.utils,FooGallery.utils.is,FooGallery.utils.fn),function(o,s,e,a,i,t){s.DATA_TEMPLATE="__FooGallery__",s.DATA_ITEM="__FooGalleryItem__",s.get=function(e){return o(e).data(s.DATA_TEMPLATE)},s.init=function(t,n){if(0<(n=a.jq(n)?n:o(n)).length){var e=n.data(s.DATA_TEMPLATE);if(e instanceof s.Template)return e.destroy(!0).then(function(){var e=s.template.make(t,n);return e instanceof s.Template?e.initialize():i.rejected})}e=s.template.make(t,n);return e instanceof s.Template?e.initialize():i.rejected},o.fn.foogallery=function(i,r){return r=a.fn(r)?r:o.noop,this.each(function(e,t){if(a.string(i)){var n=o.data(t,s.DATA_TEMPLATE);if(n instanceof s.Template)switch(i){case"layout":return void n.layout();case"destroy":return void n.destroy()}}else s.init(i,t).then(r)})},s.isCached=function(e){var t=new Image,e=(t.src=e,t.complete);return t.src="",t=null,e},s.supportedExifProperties=["camera","aperture","created_timestamp","shutter_speed","focal_length","iso","orientation"],a.exif=function(t){var e;return!!a.object(t)&&(0<(e=Object.keys(t)).length&&e.some(function(e){return-1!==s.supportedExifProperties.indexOf(e)&&!a.empty(t[e])}))},t.trimTo=function(e,t,n){return a.string(e)&&a.number(t)&&0<t&&e.length>t?e.substr(0,t)+(a.string(n)?n:"&hellip;"):e},e.getResizeObserverSize=function(e){var t,e=e.contentBoxSize?(e.contentBoxSize[0]?(t=e.contentBoxSize[0].inlineSize,e.contentBoxSize[0]):(t=e.contentBoxSize.inlineSize,e.contentBoxSize)).blockSize:(t=e.contentRect.width,e.contentRect.height);return{width:t,height:e}},s.supportsWebP=!1;var n=new Image;n.onload=function(){s.supportsWebP=0<n.width&&0<n.height},n.onerror=function(){s.supportsWebP=!1},n.src="data:image/webp;base64,UklGRhoAAABXRUJQVlA4TA0AAAAvAAAAEAcQERGIiP4HAA==",s.supportsPicture=!!window.HTMLPictureElement,e.DOMEventListeners=e.Class.extend({construct:function(){this.eventTargets=new Map},add:function(e,t,n,i){e.addEventListener(t,n,i);let r=this.eventTargets.get(e);return r||(r=new Map,this.eventTargets.set(e,r)),!r.get(t)&&(r.set(t,{listener:n,options:i}),!0)},remove:function(e,t){let n=this.eventTargets.get(e);var i;!n||(i=n.get(t))&&(e.removeEventListener(t,i.listener,i.options),n.delete(t),0===n.size&&this.eventTargets.delete(e))},clear:function(){this.eventTargets.forEach(function(e,n){e.forEach(function(e,t){n.removeEventListener(t,e.listener,e.options)})}),this.eventTargets.clear()}}),e.Timeouts=e.Class.extend({construct:function(){this.instances=new Map},has:function(e){return this.instances.has(e)},get:function(e){return this.instances.get(e)},set:function(e,t,n){const i=this;i.delete(e);n={id:setTimeout(function(){i.instances.delete(e),t.call(i)},n),delay:n,fn:t};return this.instances.set(e,n),i},delete:function(e){var t;return!!this.instances.has(e)&&(t=this.instances.get(e),clearTimeout(t.id),this.instances.delete(e))},clear:function(){this.instances.forEach(function(e){clearTimeout(e.id)}),this.instances.clear()}})}(FooGallery.$,FooGallery,FooGallery.utils,FooGallery.utils.is,FooGallery.utils.fn,FooGallery.utils.str),function(o,e,t,a,l){e.Icons=t.Class.extend({construct:function(){this.className="fg-icon",this.registered={default:{close:'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M13.957 3.457l-1.414-1.414-4.543 4.543-4.543-4.543-1.414 1.414 4.543 4.543-4.543 4.543 1.414 1.414 4.543-4.543 4.543 4.543 1.414-1.414-4.543-4.543z"></path></svg>',"arrow-left":'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M10.5 16l1.5-1.5-6.5-6.5 6.5-6.5-1.5-1.5-8 8 8 8z"></path></svg>',"arrow-right":'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M5.5 0l-1.5 1.5 6.5 6.5-6.5 6.5 1.5 1.5 8-8-8-8z"></path></svg>',maximize:'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M2 2v4h-2v-5c0-0.552 0.448-1 1-1h14c0.552 0 1 0.448 1 1v14c0 0.552-0.448 1-1 1h-14c-0.552 0-1-0.448-1-1v-9h9c0.552 0 1 0.448 1 1v7h4v-12h-12z"/></svg>',expand:'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M2 5h-2v-4c0-0.552 0.448-1 1-1h4v2h-3v3z"></path><path d="M16 5h-2v-3h-3v-2h4c0.552 0 1 0.448 1 1v4z"></path><path d="M15 16h-4v-2h3v-3h2v4c0 0.552-0.448 1-1 1z"></path><path d="M5 16h-4c-0.552 0-1-0.448-1-1v-4h2v3h3v2z"></path></svg>',shrink:'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M3 0h2v4c0 0.552-0.448 1-1 1h-4v-2h3v-3z"></path><path d="M11 0h2v3h3v2h-4c-0.552 0-1-0.448-1-1v-4z"></path><path d="M12 11h4v2h-3v3h-2v-4c0-0.552 0.448-1 1-1z"></path><path d="M0 11h4c0.552 0 1 0.448 1 1v4h-2v-3h-3v-2z"></path></svg>',info:'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M7 4.75c0-0.412 0.338-0.75 0.75-0.75h0.5c0.412 0 0.75 0.338 0.75 0.75v0.5c0 0.412-0.338 0.75-0.75 0.75h-0.5c-0.412 0-0.75-0.338-0.75-0.75v-0.5z"></path><path d="M10 12h-4v-1h1v-3h-1v-1h3v4h1z"></path><path d="M8 0c-4.418 0-8 3.582-8 8s3.582 8 8 8 8-3.582 8-8-3.582-8-8-8zM8 14.5c-3.59 0-6.5-2.91-6.5-6.5s2.91-6.5 6.5-6.5 6.5 2.91 6.5 6.5-2.91 6.5-6.5 6.5z"></path></svg>',comment:'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M3 4h10v1h-10zM3 6h8v1h-8zM3 8h4v1h-4zM14.5 1h-13c-0.825 0-1.5 0.675-1.5 1.5v8c0 0.825 0.675 1.5 1.5 1.5h2.5v4l4.8-4h5.7c0.825 0 1.5-0.675 1.5-1.5v-8c0-0.825-0.675-1.5-1.5-1.5zM14 10h-5.924l-3.076 2.73v-2.73h-3v-7h12v7z"></path></svg>',thumbs:'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M3 3v10h-2v-11c0-0.552 0.448-1 1-1h12c0.552 0 1 0.448 1 1v12c0 0.552-0.448 1-1 1h-12c-0.552 0-1-0.448-1-1v-1h4v-2h-2v-2h2v-2h-2v-2h2v-2h2v10h6v-10h-10z"></path></svg>',cart:'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M13.238 9c0.55 0 1.124-0.433 1.275-0.962l1.451-5.077c0.151-0.529-0.175-0.962-0.725-0.962h-10.238c0-1.105-0.895-2-2-2h-3v2h3v8.5c0 0.828 0.672 1.5 1.5 1.5h9.5c0.552 0 1-0.448 1-1s-0.448-1-1-1h-9v-1h8.238zM5 4h9.044l-0.857 3h-8.187v-3z"></path><path d="M6 14.5c0 0.828-0.672 1.5-1.5 1.5s-1.5-0.672-1.5-1.5c0-0.828 0.672-1.5 1.5-1.5s1.5 0.672 1.5 1.5z"></path><path d="M15 14.5c0 0.828-0.672 1.5-1.5 1.5s-1.5-0.672-1.5-1.5c0-0.828 0.672-1.5 1.5-1.5s1.5 0.672 1.5 1.5z"></path></svg>',"circle-close":'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M8 0c-4.418 0-8 3.582-8 8s3.582 8 8 8 8-3.582 8-8-3.582-8-8-8zM8 14.5c-3.59 0-6.5-2.91-6.5-6.5s2.91-6.5 6.5-6.5 6.5 2.91 6.5 6.5-2.91 6.5-6.5 6.5z"></path><path d="M10.5 4l-2.5 2.5-2.5-2.5-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 2.5-2.5 2.5 2.5 1.5-1.5-2.5-2.5 2.5-2.5z"></path></svg>',"auto-progress":'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path class="[ICON_CLASS]-idle" d="M11.39 8c2.152-1.365 3.61-3.988 3.61-7 0-0.339-0.019-0.672-0.054-1h-13.891c-0.036 0.328-0.054 0.661-0.054 1 0 3.012 1.457 5.635 3.609 7-2.152 1.365-3.609 3.988-3.609 7 0 0.339 0.019 0.672 0.054 1h13.891c0.036-0.328 0.054-0.661 0.054-1 0-3.012-1.457-5.635-3.609-7zM2.5 15c0-2.921 1.253-5.397 3.5-6.214v-1.572c-2.247-0.817-3.5-3.294-3.5-6.214v0h11c0 2.921-1.253 5.397-3.5 6.214v1.572c2.247 0.817 3.5 3.294 3.5 6.214h-11zM9.462 10.462c-1.12-0.635-1.181-1.459-1.182-1.959v-1.004c0-0.5 0.059-1.327 1.184-1.963 0.602-0.349 1.122-0.88 1.516-1.537h-6.4c0.395 0.657 0.916 1.188 1.518 1.538 1.12 0.635 1.181 1.459 1.182 1.959v1.004c0 0.5-0.059 1.327-1.184 1.963-1.135 0.659-1.98 1.964-2.236 3.537h7.839c-0.256-1.574-1.102-2.879-2.238-3.538z"/><circle class="[ICON_CLASS]-circle" r="4" cx="8" cy="8"/><path class="[ICON_CLASS]-play" d="M3 2l10 6-10 6z"/><path class="[ICON_CLASS]-pause" d="M2 2h5v12h-5zM9 2h5v12h-5z"/></svg>',search:'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M16 13.5l-4.695-4.695c0.444-0.837 0.695-1.792 0.695-2.805 0-3.314-2.686-6-6-6s-6 2.686-6 6 2.686 6 6 6c1.013 0 1.968-0.252 2.805-0.695l4.695 4.695 2.5-2.5zM2 6c0-2.209 1.791-4 4-4s4 1.791 4 4-1.791 4-4 4-4-1.791-4-4z"></path></svg>',"exif-aperture":'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M 8,0 C 3.5876443,0 0,3.5876443 0,8 c 0,4.412356 3.5876443,8 8,8 4.412356,0 8,-3.587644 8,-8 C 16,3.5876443 12.412356,0 8,0 Z m 0,1 c 3.871916,0 7,3.1280844 7,7 0,3.871916 -3.128084,7 -7,7 C 4.1280844,15 1,11.871916 1,8 1,4.1280844 4.1280844,1 8,1 Z M 7.53125,2.0214844 A 6,6 0 0 0 3.1835938,4.4335938 H 8.9257812 Z M 8.6132812,2.03125 C 9.5587451,3.6702105 10.504247,5.3091484 11.451172,6.9472656 L 12.863281,4.5 A 6,6 0 0 0 8.6132812,2.03125 Z M 2.5957031,5.4101562 A 6,6 0 0 0 2,8 6,6 0 0 0 2.5273438,10.439453 L 5.4296875,5.4101562 Z m 10.8261719,0.033203 -2.855469,4.9433598 h 2.935547 A 6,6 0 0 0 14,8 6,6 0 0 0 13.421875,5.4433592 Z M 4.5722656,8.8945312 3.0996094,11.449219 a 6,6 0 0 0 4.40625,2.527343 z m 2.5820313,2.4707028 1.4960937,2.591797 a 6,6 0 0 0 4.3144534,-2.591797 z"></path></svg>',"exif-camera":'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="m 8.0000002,5 a 4,4 0 0 0 -4,4 4,4 0 0 0 4,4 A 4,4 0 0 0 12,9 4,4 0 0 0 8.0000002,5 Z m 0.019531,1.015625 a 3,2.9814477 0 0 1 2.9804688,3 l -1,-0.00586 a 2,2 0 0 0 0,-0.00976 2,2 0 0 0 -1.9863279,-2 z M 5.125,1 C 4.5,1 4,1.5 4,2.125 V 3.0000004 L 1.125,3 C 0.5,2.9999999 0,3.5 0,4.125 v 9.75 C 0,14.5 0.5,15 1.125,15 h 13.75 C 15.5,15 16,14.5 16,13.875 V 4.125 C 16,3.5 15.5,3 14.875,3 H 12 V 2.125 C 12,1.5 11.5,1 10.875,1 Z M 5.25,2.0000004 h 5.5 c 0.125,0 0.25,0.1249996 0.25,0.25 v 1.75 h 3.75 c 0.125,0 0.25,0.1249996 0.25,0.25 V 13.75 C 15,13.875 14.875,14 14.75,14 H 1.25 C 1.125,14 1,13.875 1,13.75 V 4.25 C 1,4.125 1.125,4 1.25,4 l 3.75,4e-7 v -1.75 c 0,-0.1250004 0.125,-0.25 0.25,-0.25 z"></path></svg>',"exif-created-timestamp":'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M 3,1 V 2 H 1 V 15 H 16 V 2 H 14 V 1 H 13 V 2 H 4 V 1 Z M 2,4 H 15 V 14 H 2 Z M 6,5 V 7 H 8 V 5 Z m 3,0 v 2 h 2 V 5 Z m 3,0 v 2 h 2 V 5 Z M 3,8 v 2 H 5 V 8 Z m 3,0 v 2 H 8 V 8 Z m 3,0 v 2 h 2 V 8 Z m 3,0 v 2 h 2 V 8 Z m -9,3 v 2 h 2 v -2 z m 3,0 v 2 h 2 v -2 z m 3,0 v 2 h 2 v -2 z"></path></svg>',"exif-shutter-speed":'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M 8,0 C 3.5876443,0 -2.9415707e-8,3.5876443 0,8 c 2.3532563e-7,4.412356 3.5876445,8 8,8 4.412356,0 8,-3.587644 8,-8 C 16,3.5876443 12.412356,0 8,0 Z m 0,1 c 3.871916,0 7,3.1280844 7,7 0,3.871915 -3.128085,7 -7,7 -3.8719154,0 -6.9999998,-3.128085 -7,-7 -3e-8,-3.8719156 3.1280844,-7 7,-7 z M 11.646484,3.6464844 8.6445312,6.6484375 A 1.5,1.5 0 0 0 8,6.5 1.5,1.5 0 0 0 6.5,8 1.5,1.5 0 0 0 8,9.5 1.5,1.5 0 0 0 9.5,8 1.5,1.5 0 0 0 9.3515625,7.3554688 L 12.353516,4.3535156 Z M 2,7.5 v 1 h 2 v -1 z M 7.5,12 v 2 h 1 V 12 Z M 12,7.5 v 1 h 2 v -1 z M 7.5,2 v 2 h 1 V 2 Z"></path></svg>',"exif-focal-length":'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="m 1,4.125 -1,0.25 v 7.25 l 1,0.25 z M 5,1 2,4 v 8 l 3,3 h 6.875 C 12.500003,15 13,14.5 13,13.875 V 2.125 C 13,1.4999986 12.5,1 11.875,1 9.576807,0.99914375 7.1414067,0.96597644 5,1 Z M 5.5,2 H 6 V 14 H 5.5 L 3,11.5 v -7 z M 7,2 h 4.75 C 11.875,2 12,2.1249997 12,2.25 v 11.5 c 0,0.125 -0.125,0.250622 -0.25,0.25 H 7 Z m 7,0 c 1,2.2 1.5,4.35 1.5,6 0,1.65 -0.5,3.8 -1.5,6"></path></svg>',"exif-iso":'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M 7.5,0 V 1.6015625 C 6.0969201,1.7146076 4.8392502,2.256185 3.828125,3.1210938 L 2.6035156,1.8964844 1.8964844,2.6035156 3.1210938,3.828125 C 2.256185,4.8392502 1.7146076,6.0969201 1.6015625,7.5 H 0 v 1 h 1.6015625 c 0.1130451,1.4030799 0.6546225,2.66075 1.5195313,3.671875 l -1.2246094,1.224609 0.7070312,0.707032 1.2246094,-1.22461 C 4.8392502,13.743815 6.0969201,14.285392 7.5,14.398438 V 16 h 1 v -1.601562 c 1.4030799,-0.113046 2.66075,-0.654623 3.671875,-1.519532 l 1.224609,1.22461 0.707032,-0.707032 -1.22461,-1.224609 C 13.743815,11.16075 14.285392,9.9030799 14.398438,8.5 H 16 v -1 H 14.398438 C 14.285392,6.0969201 13.743815,4.8392502 12.878906,3.828125 L 14.103516,2.6035156 13.396484,1.8964844 12.171875,3.1210938 C 11.16075,2.256185 9.9030799,1.7146076 8.5,1.6015625 V 0 Z M 8,2.5 c 3.043488,0 5.5,2.4565116 5.5,5.5 0,3.043488 -2.456512,5.5 -5.5,5.5 C 4.9565116,13.5 2.5,11.043488 2.5,8 2.5,4.9565116 4.9565116,2.5 8,2.5 Z"></path></svg>',"exif-orientation":'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M 1.25,0 C 0.625,0 0,0.625 0,1.25 V 5 H 1 V 3 h 8 v 2 h 1 V 1.25 C 10,0.625 9.375,0 8.75,0 Z m 0,1 h 7.5 C 8.875,1 9,1.125 9,1.25 V 2 H 1 V 1.25 C 1,1.125 1.125,1 1.25,1 Z m 0,5 C 0.625,6 0,6.625 0,7.25 v 7.5 C 0,15.375 0.625,16 1.25,16 h 13.5 C 15.375,16 16,15.375 16,14.75 V 7.25 C 16,6.625 15.375,6 14.75,6 Z m 0,1 H 2 v 3 H 1 V 7.25 C 1,7.125 1.125,7 1.25,7 Z M 3,7 h 10 v 8 H 3 Z m 11,0 h 0.75 C 14.875,7 15,7.125 15,7.25 v 7.5 C 15,14.875 14.875,15 14.75,15 H 14 Z M 1,12 h 1 v 3 H 1.25 C 1.125,15 1,14.875 1,14.75 Z"></path></svg>'}}},register:function(e,t){return!(a.empty(e)||a.empty(t)||!a.string(e)||!a.hash(t))&&(this.registered[e]=l.extend({},this.registered.default,t),!0)},get:function(e,t){var n=this,i="default",r=l.extend({},n.registered.default),t=(a.string(t)&&"default"!==t?r=l.extend(r,n.registered[i=t]):a.hash(t)&&(i="custom",r=l.extend(r,t)),a.string(e)&&r.hasOwnProperty(e)?r[e].replace(/\[ICON_CLASS]/g,n.className+"-"+e):null),r=[!1,e,i].map(function(e){return!1===e?n.className:n.className+"-"+e}).join(" ");return o(t).addClass(r)},element:function(e,t){const n=this;let i="default",r=l.extend({},n.registered.default);a.string(t)&&"default"!==t?(i=t,r=l.extend(r,n.registered[t])):a.hash(t)&&(i="custom",r=l.extend(r,t));t=a.string(e)&&r.hasOwnProperty(e)?r[e].replace(/\[ICON_CLASS]/g,n.className+"-"+e):null;if(null!==t){const o=document.createRange().createContextualFragment(t),s=o.querySelector("svg");if(s)return["","-"+e,"-"+i].forEach(function(e){s.classList.add(n.className+e)}),s}return null}}),e.icons=new e.Icons}(FooGallery.$,FooGallery,FooGallery.utils,FooGallery.utils.is,FooGallery.utils.obj),function(r,n,i,o,s){var a="__FooGallerySwipe__",e="ontouchstart"in window,l=window.navigator.msPointerEnabled&&!window.navigator.pointerEnabled&&!e,c=(window.navigator.pointerEnabled||window.navigator.msPointerEnabled)&&!e,u=e||c;n.Swipe=i.Class.extend({construct:function(e,t){var n=this,i=".fgswipe";n.$el=r(e),n.opt=s.extend({threshold:20,allowPageScroll:!1,swipe:r.noop,data:{}},t),n.active=!1,n.startPoint=null,n.endPoint=null,n.events={start:(u?c?l?"MSPointerDown":"pointerdown":"touchstart":"mousedown")+i,move:(u?c?l?"MSPointerMove":"pointermove":"touchmove":"mousemove")+i,end:(u?c?l?"MSPointerUp":"pointerup":"touchend":"mouseup")+i,leave:(!u||c?"mouseleave":null)+i}},init:function(){var e=this;e.$el.on(e.events.start,{self:e},e.onStart),e.$el.on(e.events.move,{self:e},e.onMove),e.$el.on(e.events.end,{self:e},e.onEnd),o.string(e.events.leave)&&e.$el.on(e.events.leave,{self:e},e.onEnd),e.$el.data(a,e)},destroy:function(){var e=this;e.$el.off(e.events.start,e.onStart),e.$el.off(e.events.move,e.onMove),e.$el.off(e.events.end,e.onEnd),o.string(e.events.leave)&&e.$el.off(e.events.leave,e.onEnd),e.$el.removeData(a)},getAngle:function(e,t){e=Math.atan2(e.x-t.x,e.y-t.y),t=Math.round(180*e/Math.PI);return 360-(t<0?360-Math.abs(t):t)},getDistance:function(e,t){var n=t.x-e.x,t=t.y-e.y;return n*=n,t*=t,Math.sqrt(n+t)},getDirection:function(e,t){e=this.getAngle(e,t);return 337.5<e||e<=22.5?"N":22.5<e&&e<=67.5?"NE":67.5<e&&e<=112.5?"E":112.5<e&&e<=157.5?"SE":157.5<e&&e<=202.5?"S":202.5<e&&e<=247.5?"SW":247.5<e&&e<=292.5?"W":292.5<e&&e<=337.5?"NW":"NONE"},getPoint:function(e){var t;return u&&!o.empty(t=e.originalEvent.touches||e.touches)?{x:t[0].pageX,y:t[0].pageY}:o.number(e.pageX)&&o.number(e.pageY)?{x:e.pageX,y:e.pageY}:null},getOffset:function(e){var t=this.$el.offset();return{left:e.x-t.left,top:e.y-t.top}},onStart:function(e){var t=e.data.self,e=t.getPoint(e);o.empty(e)||(t.active=!0,t.startPoint=t.endPoint=e)},onMove:function(e){var t=e.data.self,n=t.getPoint(e);t.active&&!o.empty(n)&&(t.endPoint=n,t.opt.allowPageScroll?o.hash(t.opt.allowPageScroll)&&(n=t.getDirection(t.startPoint,t.endPoint),t.opt.allowPageScroll.x||-1===i.inArray(n,["NE","E","SE","NW","W","SW"])||e.preventDefault(),t.opt.allowPageScroll.y||-1===i.inArray(n,["NW","N","NE","SW","S","SE"])||e.preventDefault()):e.preventDefault())},onEnd:function(e){var t,e=e.data.self;e.active&&(e.active=!1,t={startPoint:e.startPoint,endPoint:e.endPoint,startOffset:e.getOffset(e.startPoint),endOffset:e.getOffset(e.endPoint),angle:e.getAngle(e.startPoint,e.endPoint),distance:e.getDistance(e.startPoint,e.endPoint),direction:e.getDirection(e.startPoint,e.endPoint)},0<e.opt.threshold&&t.distance<e.opt.threshold||(e.opt.swipe.apply(this,[t,e.opt.data]),e.startPoint=null,e.endPoint=null))}}),r.fn.fgswipe=function(t){return this.each(function(){var e=r(this).data(a);if(e instanceof n.Swipe){if(o.string(t)&&o.fn(e[t]))return void e[t]();e.destroy()}o.hash(t)&&(e=new n.Swipe(this,t)).init()})}}(FooGallery.$,FooGallery,FooGallery.utils,FooGallery.utils.is,FooGallery.utils.obj),function(r,e,t,o,s,a){e.Factory=t.Class.extend({construct:function(){this.registered={}},contains:function(e){return!o.undef(this.registered[e])},make:function(e,t,n){var i,r=s.arg2arr(arguments);return e=r.shift(),i=this.registered[e],o.hash(i)&&o.fn(i.klass)?s.apply(i.klass,r):null},names:function(e){e=!!o.boolean(e)&&e;var t,n=[];if(e){var i=[];for(t in this.registered)this.registered.hasOwnProperty(t)&&i.push(this.registered[t]);i.sort(function(e,t){return t.priority-e.priority}),r.each(i,function(e,t){n.push(t.name)})}else for(t in this.registered)this.registered.hasOwnProperty(t)&&n.push(t);return n},register:function(e,t,n){if(!o.string(e)||o.empty(e)||!o.fn(t))return!1;n=o.number(n)?n:0;var i=this.registered[e];return this.registered[e]={name:e,klass:t,priority:o.undef(i)?n:i.priority},!0},load:function(){var e,n=this,i=[],t=[];for(e in n.registered)n.registered.hasOwnProperty(e)&&t.push(n.registered[e]);return t.sort(function(e,t){return t.priority-e.priority}),r.each(t,function(e,t){i.push(n.make(t.name))}),i},configure:function(e,t,n,i){var r;this.contains(e)&&(r=this.registered,a.extend(r[e].opt,t),a.extend(r[e].cls,n),a.extend(r[e].il8n,i))}})}(FooGallery.$,FooGallery,FooGallery.utils,FooGallery.utils.is,FooGallery.utils.fn,FooGallery.utils.obj),function(l,s,c,u,a){s.TemplateFactory=s.Factory.extend({construct:function(){this.registered={}},register:function(e,t,n,i,r,o){t=this._super(e,t,o);return t&&((o=this.registered)[e].opt=u.hash(n)?n:{},o[e].cls=u.hash(i)?i:{},o[e].il8n=u.hash(r)?r:{}),t},make:function(e,t){t=u.jq(t)?t:l(t),e=a.extend({},e,t.data("foogallery"));var n=this.type(e,t);return this.contains(n)?(e=this.options(n,e),this._super(n,e,t)):null},type:function(e,t){t=u.jq(t)?t:l(t);var n=u.hash(e)&&u.hash(e)&&u.string(e.type)&&this.contains(e.type)?e.type:null;if(null===n&&0<t.length)for(var i=this.registered,r=this.names(!0),o=0,s=r.length;o<s;o++)if(i.hasOwnProperty(r[o])&&"core"!==r[o]){var a=i[r[o]].cls;if(u.string(a.container)){a=c.selectify(a.container);if(t.is(a)){n=r[o];break}}}return n},options:function(e,t){t=a.extend({type:e},t);var n=this.registered,i=n.core.opt,r=n.core.cls,o=n.core.il8n;return u.hash(t.cls)||(t.cls={}),u.hash(t.il8n)||(t.il8n={}),u.undef(s.filtering)||(t=s.filtering.merge(t)),u.undef(s.paging)||(t=s.paging.merge(t)),"core"!==e&&this.contains(e)?((t=a.extend({},i,n[e].opt,t)).cls=a.extend({},r,n[e].cls,t.cls),t.il8n=a.extend({},o,n[e].il8n,t.il8n)):((t=a.extend({},i,t)).cls=a.extend({},r,t.cls),t.il8n=a.extend({},o,t.il8n)),t}}),s.template=new s.TemplateFactory}(FooGallery.$,FooGallery,FooGallery.utils,FooGallery.utils.is,(FooGallery.utils.fn,FooGallery.utils.obj)),function(i,r,o,s,a){var l=0;r.Template=o.EventClass.extend({construct:function(e,t){var n=this;n._super(),n.namespace=".foogallery-"+ ++l,n.$el=s.jq(t)?t:i(t),n.el=n.$el.get(0)||null,n.$scrollParent=null,n.opt=e,n.template=e.template,n.id=n.$el.prop("id")||e.id,n.cls=e.cls,n.il8n=e.il8n,n.sel=o.selectify(n.cls),n.items=r.components.make("items",n),n.pages=s.undef(r.paging)?null:r.paging.make(e.paging.type,n),n.filter=s.undef(r.filtering)?null:r.filtering.make(e.filtering.type,n),n.state=r.components.make("state",n),n._initialize=null,n._layoutTimeout=null,n._layoutWidths=[],n.lastWidth=0,n.initializing=!1,n.initialized=!1,n.destroying=!1,n.destroyed=!1,n._undo={classes:"",style:"",create:!1,children:!1},n.robserver=new ResizeObserver(a.throttle(function(e){n.destroying||n.destroyed||1!==e.length||e[0].target!==n.el||(e=o.getResizeObserverSize(e[0]),n.layout(e.width))},50))},initialize:function(t){var n=this;return s.promise(n._initialize)?n._initialize:n._initialize=i.Deferred(function(e){n.preInit(t)?n.init().then(function(){n.postInit()?(n.ready(),e.resolve(n)):e.reject("post-init failed")}).fail(e.reject):e.reject("pre-init failed")}).fail(function(e){return console.log("initialize failed",n,e),n.destroy()}).promise()},preInit:function(e){var t=this;if(t.destroying)return!1;if(e=s.jq(e)?e:i(e),t.initializing=!0,0===e.length&&0===t.$el.parent().length)return!1;0===t.$el.length&&(t.$el=t.create(),t.el=t.$el.get(0),t._undo.create=!0),0<e.length&&t.$el.appendTo(e),s.empty(t.opt.scrollParent)||0===(e=i(t.opt.scrollParent)).length?t.$scrollParent=i(document):t.$scrollParent=e.is("html")?i(document):e,t.$el.data(r.DATA_TEMPLATE,t),s.empty(t.opt.on)||t.on(t.opt.on),t._undo.classes=t.$el.attr("class"),t._undo.style=t.$el.attr("style"),t.$el.is(t.sel.container)||t.$el.addClass(t.cls.container);e=o.selectify(t.opt.classes);return null==e||t.$el.is(e)||t.$el.addClass(t.opt.classes),0===t.$el.children().not(t.sel.item.elem).length&&(t.$el.append(t.createChildren()),t._undo.children=!0),t.opt.protected&&(t.el.oncontextmenu=function(e){return e.preventDefault(),!1}),!t.trigger("pre-init").isDefaultPrevented()},init:function(){return this.trigger("init").isDefaultPrevented()?a.reject("init default prevented"):this.items.fetch()},postInit:function(){var e=this;return!e.destroying&&(!e.trigger("post-init").isDefaultPrevented()&&(e.state.init(),e.pages&&e.pages.init(),i(window).on("popstate"+e.namespace,{self:e},e.onWindowPopState),e.robserver.observe(e.el),!0))},ready:function(){return!this.destroying&&(this.initializing=!1,this.initialized=!0,this.trigger("ready"),!0)},create:function(){return i("<div/>",{id:this.id,class:this.cls.container}).addClass(this.opt.classes)},createChildren:function(){return i()},destroy:function(t){var n=this,e=n._super.bind(n);return n.destroyed?a.resolved:(n.destroying=!0,i.Deferred(function(e){n.initializing&&s.promise(n._initialize)?n._initialize.always(function(){n.destroying=!1,n.doDestroy(t),e.resolve()}):(n.destroying=!1,n.doDestroy(t),e.resolve())}).then(function(){e()}).promise())},doDestroy:function(e){var t=this;t.destroyed||(t.trigger("destroy"),t.robserver.disconnect(),i(window).off(t.namespace),t.state.destroy(e),t.filter&&t.filter.destroy(),t.pages&&t.pages.destroy(),t.items.destroy(),s.empty(t.opt.on)||t.$el.off(t.opt.on),t.trigger("destroyed"),t.$el.removeData(r.DATA_TEMPLATE),s.empty(t._undo.classes)?t.$el.removeAttr("class"):t.$el.attr("class",t._undo.classes),s.empty(t._undo.style)?t.$el.removeAttr("style"):t.$el.attr("style",t._undo.style),t._undo.children&&t.destroyChildren(),t._undo.create&&t.$el.remove(),t.$el=t.state=t.items=t.pages=null,t.destroyed=!0,t.initializing=!1,t.initialized=!1)},destroyChildren:function(){},getAvailable:function(){return(this.pages||this.items).available()},layout:function(e){var t=this;null===t._initialize||0===(e=s.number(e)?e:t.el.getBoundingClientRect().width)||t._checkWidth(e)||(t.lastWidth=e,t.trigger("layout",[e]))},_checkWidth:function(e){var t,n=this;return(t=-1!==n._layoutWidths.indexOf(e))||(n._layoutWidths.unshift(e),n._layoutWidths.splice(2,n._layoutWidths.length-2),null!=n._layoutTimeout&&clearTimeout(n._layoutTimeout),n._layoutTimeout=setTimeout(function(){n._layoutWidths.splice(0,n._layoutWidths.length)},100)),t},getCSSClass:function(e,t){t=s.empty(t)?"":t;var e=e instanceof RegExp?e:s.string(e)&&this.opt.regex.hasOwnProperty(e)?this.opt.regex[e]:null,n=this.$el.prop("className")||"",n=null!=e?n.match(e):null;return null!=n&&2<=n.length?n[1]:t},onWindowPopState:function(e){var t=e.data.self,e=e.originalEvent.state;s.empty(e)||e.id!==t.id||t.state.set(e)}}),r.template.register("core",r.Template,{id:null,type:"core",classes:"",on:{},lazy:!0,items:[],scrollParent:null,delay:0,throttle:50,shortpixel:!1,srcset:"data-srcset-fg",src:"data-src-fg",protected:!1,template:{},regex:{theme:/(?:\s|^)(fg-(?:light|dark|custom))(?:\s|$)/,loadingIcon:/(?:\s|^)(fg-loading-(?:default|bars|dots|partial|pulse|trail))(?:\s|$)/,hoverIcon:/(?:\s|^)(fg-hover-(?:zoom|zoom2|zoom3|plus|circle-plus|eye|external|tint))(?:\s|$)/,videoIcon:/(?:\s|^)(fg-video-(?:default|1|2|3|4))(?:\s|$)/,border:/(?:\s|^)(fg-border-(?:thin|medium|thick))(?:\s|$)/,hoverColor:/(?:\s|^)(fg-hover-(?:colorize|grayscale))(?:\s|$)/,hoverScale:/(?:\s|^)(fg-hover-scale)(?:\s|$)/,stickyVideoIcon:/(?:\s|^)(fg-video-sticky)(?:\s|$)/,insetShadow:/(?:\s|^)(fg-shadow-inset-(?:small|medium|large))(?:\s|$)/,filter:/(?:\s|^)(fg-filter-(?:1977|amaro|brannan|clarendon|earlybird|lofi|poprocket|reyes|toaster|walden|xpro2|xtreme))(?:\s|$)/}},{container:"foogallery"},{},-100)}(FooGallery.$,FooGallery,FooGallery.utils,FooGallery.utils.is,FooGallery.utils.fn,FooGallery.utils.str),function(e,t){e.Component=t.EventClass.extend({construct:function(e){this._super(),this.tmpl=e},destroy:function(){this.tmpl=null,this._super()}}),e.components=new e.Factory}(FooGallery,FooGallery.utils,FooGallery.utils.is),function(t,o,n,s,a,l){o.State=o.Component.extend({construct:function(e){var t=this,e=(t._super(e),t.apiEnabled=!!window.history&&!!history.replaceState,t.opt=t.tmpl.opt.state,t.enabled=t.opt.enabled,t.current={filter:[],page:0,item:null},t.pushOrReplace=t.isPushOrReplace(t.opt.pushOrReplace)?t.opt.pushOrReplace:"replace",t.defaultMask="foogallery-gallery-{id}",a.escapeRegExp(t.tmpl.id)),n=a.escapeRegExp(t.getMasked()),i=a.escapeRegExp(t.opt.values),r=a.escapeRegExp(t.opt.pair);t.regex={exists:new RegExp("^#"+e+"\\"+i+".+?"),masked:new RegExp("^#"+n+"\\"+i+".+?"),values:new RegExp("(\\w+)"+r+"([^"+i+"]+)","g")}},destroy:function(e){e||this.clear(),this.opt=this.regex={},this._super()},init:function(){this.set(this.initial())},getIdNumber:function(){return this.tmpl.id.match(/\d+/g)[0]},getMasked:function(){var e=a.contains(this.opt.mask,"{id}")?this.opt.mask:this.defaultMask;return a.format(e,{id:this.getIdNumber()})},isPushOrReplace:function(e){return-1!==n.inArray(e,["push","replace"])},exists:function(){return this.regex.values.lastIndex=0,(this.regex.exists.test(location.hash)||this.regex.masked.test(location.hash))&&this.regex.values.test(location.hash)},parse:function(){var e,r=this,o=r.tmpl,s={};return r.exists()&&(r.enabled?(s.id=r.tmpl.id,r.regex.values.lastIndex=0,e=location.hash.match(r.regex.values),t.each(e,function(e,t){var n,i=t.split(r.opt.pair);if(2===i.length)switch(i[0]){case r.opt.itemKey:null!==(n=o.items.fromHash(i[1]))&&(s.item=n);break;case r.opt.pageKey:o.pages&&null!==(n=o.pages.fromHash(i[1]))&&(s.page=n);break;case r.opt.filterKey:o.filter&&null!==(n=o.filter.fromHash(i[1]))&&(s.filter=n)}})):r.apiEnabled?history.replaceState(null,"",location.pathname+location.search):location.hash="#"),s},hashify:function(e){var t,n,i=this,r=i.tmpl;return s.hash(e)?(t=[],null!==(n=r.items.toHash(e.item))&&t.push(i.opt.itemKey+i.opt.pair+n),r.filter&&null!==(n=r.filter.toHash(e.filter))&&t.push(i.opt.filterKey+i.opt.pair+n),r.pages&&null!==(n=r.pages.toHash(e.page))&&t.push(i.opt.pageKey+i.opt.pair+n),0<t.length&&t.unshift("#"+i.getMasked()),t.join(i.opt.values)):""},replace:function(e){var t,n;this.enabled&&this.apiEnabled&&(e.id=this.tmpl.id,t=this.hashify(e),n=s.empty(t),e=l.extend({},e,{item:e.item instanceof o.Item?e.item.id:e.item}),history.replaceState(n?null:e,"",n?location.pathname+location.search:t))},push:function(e){var t,n;this.enabled&&this.apiEnabled&&(e.id=this.tmpl.id,t=this.hashify(e),n=s.empty(t),e=l.extend({},e,{item:e.item instanceof o.Item?e.item.id:e.item}),history.pushState(n?null:e,"",n?location.pathname+location.search:t))},update:function(e,t){var n=this;n.enabled&&n.apiEnabled&&(t=n.isPushOrReplace(t)?t:n.pushOrReplace,n[t](e))},clear:function(){this.exists()&&this.replace({})},initial:function(){var e=this.parse();return s.empty(e)?this.get():l.extend({filter:[],page:1,item:null},e)},get:function(e){var t,n=this.tmpl,i={};return e instanceof o.Item&&(i.item=e),n.filter&&null!==(t=n.filter.getState())&&(i.filter=t),n.pages&&null!==(t=n.pages.getState())&&(i.page=t),l.extend({filter:[],page:1,item:null},i)},set:function(e){var t,n,i,r=this.tmpl;s.hash(e)&&(t=l.extend({filter:[],page:1,item:null},e),r.items.reset(),r.trigger("before-state",[t]).isDefaultPrevented()||(r.filter&&r.filter.setState(t),r.pages?r.pages.setState(t):(n=r.items.available(),r.items.isAll(n)||(i=r.items.not(n),r.items.detach(i)),r.items.create(n,!0)),t.item instanceof o.Item&&(this.opt.scrollTo&&t.item.scrollTo(),s.empty(e.item)||(e.item=null,this.replace(e))),this.current=t,r.trigger("after-state",[t])))}}),o.template.configure("core",{state:{enabled:!1,scrollTo:!0,pushOrReplace:"replace",mask:"foogallery-gallery-{id}",values:"/",pair:":",array:"+",arraySeparator:",",itemKey:"i",filterKey:"f",pageKey:"p"}}),o.components.register("state",o.State)}(FooGallery.$,FooGallery,FooGallery.utils,FooGallery.utils.is,FooGallery.utils.str,FooGallery.utils.obj),function(s,o,n,a,i,l){o.Items=o.Component.extend({construct:function(e){var t=this,e=(t.ALLOW_CREATE=!0,t.ALLOW_APPEND=!0,t.LAYOUT_AFTER_LOAD=!0,t._super(e),t._typeRegex=/(?:^|\s)?fg-type-(.*?)(?:$|\s)/,t._fetched=null,t._all=[],t._available=[],t._unavailable=[],t._observed=new Map,t.tmpl.cls.item.caption);t.tmpl.sel.item.caption.all=n.selectify([e.elem,e.inner,e.title,e.description]),t._wait=[],t._layoutTimeout=null,t.iobserver=new IntersectionObserver(function(e){t.tmpl.destroying||t.tmpl.destroyed||(t.LAYOUT_AFTER_LOAD&&clearTimeout(t._layoutTimeout),e.forEach(function(e){e.isIntersecting&&(e=t._observed.get(e.target))instanceof o.Item&&t._wait.push(e.load())}),t.LAYOUT_AFTER_LOAD&&(t._layoutTimeout=setTimeout(function(){0<t._wait.length&&i.allSettled(t._wait.splice(0)).then(function(){t.tmpl.layout()})},100)))})},fromHash:function(t){return this.find(this._all,function(e){return e.id===t})},toHash:function(e){return e instanceof o.Item?e.id:null},destroy:function(){var e=this,t=e.all();e.iobserver.disconnect(),0<t.length&&(e.tmpl.trigger("destroy-items",[t]),0<(t=s.map(t,function(e){return e.destroy()?e:null})).length&&e.tmpl.trigger("destroyed-items",[t])),e._fetched=null,e._all=[],e._available=[],e._unavailable=[],e._observed.clear(),e._super()},fetch:function(e){var t,i,r,o,n=this;return!e&&a.promise(n._fetched)?n._fetched:(e=n.tmpl.id+"_items",t=n.tmpl.sel,i=n.tmpl.opt.items,r=s.Deferred(),o=n.make(n.tmpl.$el.find(t.item.elem)),a.empty(i)?(a.array(window[e])&&o.push.apply(o,n.make(window[e])),r.resolve(o)):a.array(i)?(o.push.apply(o,n.make(i)),r.resolve(o)):a.string(i)?s.get(i).then(function(e){o.push.apply(o,n.make(e)),r.resolve(o)},function(e,t,n){console.log("FooGallery: GET items error.",i,e,t,n),r.resolve(o)}):r.resolve(o),r.then(function(e){n.setAll(e)}),n._fetched=r.promise())},toJSON:function(e){return(e?this.all():this.available()).map(function(e){return e.toJSON()})},all:function(){return this._all.slice()},count:function(e){return(e?this.all():this.available()).length},available:function(e){return a.fn(e)?this._available.filter(e,this):this._available.slice()},unavailable:function(e){return a.fn(e)?this._unavailable.filter(e,this):this._unavailable.slice()},setAll:function(e){this._all=a.array(e)?e:[],this._all.forEach(function(e,t){e.index=t,a.empty(e.id)&&(e.id=t+1+"")}),this._available=this.all(),this._unavailable=[]},setAvailable:function(e){var t=this;t._available=a.array(e)?e:[],t._all.length!==t._available.length?t._unavailable=t._all.filter(function(e){return-1===t._available.indexOf(e)}):t._unavailable=[]},reset:function(){this.setAvailable(this.all())},find:function(e,t){if(t=a.fn(t)?t:function(){return!0},a.array(e))for(var n=0,i=e.length;n<i;n++)if(!0===t.call(this,e[n]))return e[n];return null},not:function(t){var e=this.all();return a.array(t)?e.filter(function(e){return-1===t.indexOf(e)}):e},isAll:function(e){return!!a.array(e)&&this._all.length===e.length},first:function(e){return this.find(this._available,e)},last:function(e){return this.find(this._available.slice().reverse(),e)},next:function(e,t,n){if(!(e instanceof o.Item))return null;n=!!a.boolean(n)&&n;var i,r=this._available.slice(),e=r.indexOf(e);return-1!==e?(i=r.slice(0,e),r=r.slice(e+1),n&&(r=r.concat(i)),this.find(r,t)):null},prev:function(e,t,n){if(!(e instanceof o.Item))return null;n=!!a.boolean(n)&&n;var i,r=this._available.slice().reverse(),e=r.indexOf(e);return-1!==e?(i=r.slice(0,e),r=r.slice(e+1),n&&(r=r.concat(i)),this.find(r,t)):null},get:function(t,e){e=e?this._all:this._available;return a.number(t)?0<=t&&t<this._all.length?e[t]:null:this.find(e,function(e){return e.el===t})},indexOf:function(e,t){return(t?this._all:this._available).indexOf(e)},creatable:function(e){return this.ALLOW_CREATE&&a.array(e)?s.map(e,function(e){return e instanceof o.Item&&!e.isCreated?e:null}):[]},appendable:function(e){return this.ALLOW_APPEND&&a.array(e)?s.map(e,function(e){return e instanceof o.Item&&e.isCreated&&!e.isAttached?e:null}):[]},detachable:function(e){return a.array(e)?s.map(e,function(e){return e instanceof o.Item&&e.isCreated&&e.isAttached?e:null}):[]},jquerify:function(e){return s(s.map(e,function(e){return e.$el.get()}))},make:function(e){var i=this,t=[];if(a.jq(e)||a.array(e)){var r=[],e=s.makeArray(e);if(0===e.length)return t;0<(t=i.tmpl.trigger("make-items",[e]).isDefaultPrevented()?t:s.map(e,function(e){var t=i.type(e),n=l.extend(a.hash(e)?e:{},{type:t}),t=o.components.make(t,i.tmpl,n);return a.element(e)?t.parse(e)?(r.push(t),i.ALLOW_APPEND||t.detach(),t):null:t})).length&&i.tmpl.trigger("made-items",[t]),0<r.length&&i.tmpl.trigger("parsed-items",[r])}return t},type:function(e){var t;return a.hash(e)?t=e.type:a.element(e)&&null!==(e=e.className.match(this._typeRegex))&&2===e.length&&(t=e[1]),a.string(t)&&o.components.contains(t)?t:"image"},create:function(e,t){var n=[],i=this.creatable(e);return 0<i.length&&0<(n=this.tmpl.trigger("create-items",[i]).isDefaultPrevented()?n:s.map(i,function(e){return e.create()?e:null})).length&&this.tmpl.trigger("created-items",[n]),a.boolean(t)&&t?this.append(e):n},append:function(e){var t=[],e=this.appendable(e);return 0<e.length&&0<(t=this.tmpl.trigger("append-items",[e]).isDefaultPrevented()?t:s.map(e,function(e){return e.append()?e:null})).length&&this.tmpl.trigger("appended-items",[t]),t},detach:function(e){var t=[],e=this.detachable(e);return 0<e.length&&0<(t=this.tmpl.trigger("detach-items",[e]).isDefaultPrevented()?t:s.map(e,function(e){return e.detach()?e:null})).length&&this.tmpl.trigger("detached-items",[t]),t},observe:function(e){!(this.iobserver&&e.isCreated&&e.isAttached)||e.isLoading&&e.isLoaded||(this.iobserver.observe(e.el),this._observed.set(e.el,e))},unobserve:function(e){this.iobserver&&(this.iobserver.unobserve(e.el),this._observed.delete(e.el))}}),o.components.register("items",o.Items)}(FooGallery.$,FooGallery,FooGallery.utils,FooGallery.utils.is,FooGallery.utils.fn,FooGallery.utils.obj),function(y,b,_,w,o,x){b.Item=b.Component.extend({construct:function(e,t){var n=this;n._super(e),n.cls=e.cls.item,n.il8n=e.il8n.item,n.sel=e.sel.item,n.opt=o.extend({},e.opt.item,t),n.isAttached=!1,n.isCreated=!1,n.isDestroyed=!1,n.isLoading=!1,n.isLoaded=!1,n.isError=!1,n.isParsed=!1,n.isPicture=!1,n.$el=null,n.el=null,n.$inner=null,n.$anchor=null,n.$overlay=null,n.$wrap=null,n.$image=null,n.$caption=null,n.$loader=null,n.index=-1,n.type=n.opt.type,n.id=n.opt.id,n.productId=n.opt.productId,n.href=n.opt.href,n.placeholder=n.opt.placeholder,n.src=n.opt.src,n.srcset=n.opt.srcset,n.sources=n.opt.sources,n.width=n.opt.width,n.height=n.opt.height,n.title=n.opt.title,n.alt=n.opt.alt,n.caption=n.opt.caption,n.description=n.opt.description,n.attr=n.opt.attr,n.tags=n.opt.tags,n.maxCaptionLength=n.opt.maxCaptionLength,n.maxDescriptionLength=n.opt.maxDescriptionLength,n.showCaptionTitle=n.opt.showCaptionTitle,n.showCaptionDescription=n.opt.showCaptionDescription,n.noLightbox=n.opt.noLightbox,n.panelHide=n.opt.panelHide,n.exif=n.opt.exif,n.hasExif=w.exif(n.exif),n.ribbon=n.opt.ribbon,n.hasRibbon=w.hash(n.ribbon)&&w.string(n.ribbon.text)&&w.string(n.ribbon.type),n.buttons=n.opt.buttons,n._load=null,n._undo={classes:"",style:"",placeholder:!1}},destroy:function(){var e=this;return e.tmpl.trigger("destroy-item",[e]).isDefaultPrevented()||(e.isDestroyed=e.doDestroyItem()),e.isDestroyed&&(e.tmpl.trigger("destroyed-item",[e]),e._super()),e.isDestroyed},doDestroyItem:function(){var e=this;return e.isParsed?(e.$anchor.add(e.$caption).off("click.foogallery"),e.append(),e.tmpl.items.unobserve(e),w.empty(e._undo.classes)?e.$el.removeAttr("class"):e.$el.attr("class",e._undo.classes),w.empty(e._undo.style)?e.$el.removeAttr("style"):e.$el.attr("style",e._undo.style),e._undo.placeholder&&e.$image.prop("src")===e.placeholder&&e.$image.removeAttr("src")):e.isCreated&&(e.detach(),e.$el.remove()),!0},parse:function(e){var t=this,e=y(e);return!t.tmpl.trigger("parse-item",[t,e]).isDefaultPrevented()&&(t.isCreated=e.is(t.sel.elem))&&(t.isParsed=t.doParseItem(e)),t.isParsed&&(t.isLoaded||t.tmpl.items.observe(t),t.tmpl.trigger("parsed-item",[t])),t.isParsed},doParseItem:function(e){var n=this,t=n.cls,i=n.sel,r=e.get(0);if(n._undo.classes=e.attr("class")||"",n._undo.style=e.attr("style")||"",n.$el=e.data(b.DATA_ITEM,n),n.el=r,n.$inner=y(r.querySelector(i.inner)),n.$anchor=y(r.querySelector(i.anchor)).on("click.foogallery",{self:n},n.onAnchorClick),n.$image=y(r.querySelector(i.image)),n.$caption=y(r.querySelector(i.caption.elem)).on("click.foogallery",{self:n},n.onCaptionClick),n.$overlay=y(r.querySelector(i.overlay)),n.$wrap=y(r.querySelector(i.wrap)),n.$loader=y(r.querySelector(i.loader)),!(n.$el.length&&n.$inner.length&&n.$anchor.length&&n.$image.length))return console.error("FooGallery Error: Invalid HTML markup. Check the item markup for additional elements or malformed HTML in the title or description.",n),n.isError=!0,n.tmpl.trigger("error-item",[n]),0!==n.$el.length&&n.$el.remove(),!1;n.isAttached=null!==r.parentNode,n.isLoading=n.$el.hasClass(t.loading),n.isLoaded=n.$el.hasClass(t.loaded),n.isError=n.$el.hasClass(t.error);var e=n.$anchor.data(),i=(n.id=e.id||n.id,n.productId=e.productId||n.productId,n.tags=e.tags||n.tags,n.href=e.href||n.$anchor.attr("href")||n.href,r=n.$image.is("picture")?(n.isPicture=!0,n.sources=n.$image.find("source").map(function(e,t){return{srcset:t.getAttribute(n.tmpl.opt.srcset),type:t.getAttribute("type"),media:t.getAttribute("media"),sizes:t.getAttribute("sizes")}}).get(),n.$image.find("img")):n.$image,n.src=r.attr(n.tmpl.opt.src)||n.src,n.srcset=r.attr(n.tmpl.opt.srcset)||n.srcset,n.width=parseInt(r.attr("width"))||n.width,n.height=parseInt(r.attr("height"))||n.height,n.title=r.attr("title")||n.title,n.alt=r.attr("alt")||n.alt,n.caption=e.title||e.captionTitle||n.caption,n.description=e.description||e.captionDesc||n.description,n.noLightbox=n.$anchor.hasClass(t.noLightbox),n.panelHide=n.$anchor.hasClass(t.panelHide),w.exif(e.exif)&&(n.exif=o.extend(n.exif,e.exif),n.hasExif=!0),0<n.maxCaptionLength&&((e=x.trimTo(n.caption,n.maxCaptionLength))!==n.caption&&n.$caption.find(i.caption.title).html(e)),!n.maxDescriptionLength||(e=x.trimTo(n.description,n.maxDescriptionLength))!==n.description&&n.$caption.find(i.caption.description).html(e),r.get(0)),e=(w.string(i.src)&&0!==i.src.length||(w.string(n.placeholder)&&0!==n.placeholder.length||(n.placeholder=n.createPlaceholder(n.width,n.height)),0<n.placeholder.length&&(i.src=n.placeholder,n._undo.placeholder=!0)),n.getTypeClass());return n.$el.hasClass(e)||n.$el.addClass(e),n.hasExif&&!n.$el.hasClass(t.exif)&&n.$el.addClass(t.exif),!n.isCreated||!n.isAttached||n.isLoading||n.isLoaded||n.isError||n.$el.hasClass(t.idle)||n.$el.addClass(t.idle),n.doShortPixel(),!0},create:function(){var e=this;return!e.isCreated&&w.string(e.href)&&w.string(e.src)&&w.number(e.width)&&w.number(e.height)&&(e.tmpl.trigger("create-item",[e]).isDefaultPrevented()||(e.isCreated=e.doCreateItem()),e.isCreated&&e.tmpl.trigger("created-item",[e])),e.isCreated},_setAttributes:function(t,n){Object.keys(n).forEach(function(e){w.empty(n[e])||t.setAttribute(e,w.string(n[e])?n[e]:JSON.stringify(n[e]))})},doShortPixel:function(){var e,t=this;function n(e,t,n){return"/"===t||"/"===n?"/":t}t.tmpl.opt.shortpixel&&!b.supportsWebP&&(t.href=t.href.replace(e=/([\/,+])to_webp([\/,+])/i,n),t.src=t.src.replace(e,n),t.srcset=t.srcset.replace(e,n))},doCreateItem:function(){var i,e,r=this,t=r.cls,n=r.attr,o=r.hasExif?t.exif:"",s=(r.isLoaded=!r.tmpl.opt.lazy,r.isPicture=0<r.sources.length,r.doShortPixel(),document.createElement("div")),o=(r._setAttributes(s,n.elem),s.className=[t.elem,r.getTypeClass(),o,r.isLoaded?t.loaded:t.idle].join(" "),document.createElement("figure")),a=(r._setAttributes(o,n.inner),o.className=t.inner,[t.anchor]),l=(r.noLightbox&&a.push(t.noLightbox),r.panelHide&&a.push(t.panelHide),document.createElement("a")),a=(r._setAttributes(l,n.anchor),r._setAttributes(l,{class:a.join(" "),href:r.href,"data-id":r.id,"data-type":r.type,"data-title":r.caption,"data-description":r.description,"data-tags":r.tags,"data-exif":r.exif,"data-product-id":r.productId}),w.string(r.placeholder)&&0!==r.placeholder.length||(r.placeholder=r.createPlaceholder(r.width,r.height)),document.createElement("img")),c=(r._setAttributes(a,n.image),{class:t.image,src:r.placeholder,width:r.width+"",height:r.height+"",title:r.title,alt:r.alt}),c=(r.isLoaded?(c.src=r.src,c.srcset=r.srcset):(c[r.tmpl.opt.src]=r.src,c[r.tmpl.opt.srcset]=r.srcset),r._setAttributes(a,c),r.isPicture&&(i=document.createElement("picture"),r._setAttributes(i,n.picture),r.sources.forEach(function(e){var t=document.createElement("source"),n={media:e.media,sizes:e.sizes,type:e.type};r.isLoaded?n.srcset=e.srcset:n[r.tmpl.opt.srcset]=e.srcset,r._setAttributes(t,n),i.appendChild(t)}),i.appendChild(a)),r.hasRibbon&&((e=document.createElement("div")).className=r.ribbon.type,(c=document.createElement("span")).innerHTML=r.ribbon.text,e.appendChild(c)),document.createElement("span")),u=(c.className=t.overlay,document.createElement("span")),h=(u.className=t.wrap,document.createElement("div")),p=(h.className=t.loader,document.createElement("figcaption")),d=(r._setAttributes(p,n.caption.elem),p.className=t.caption.elem,document.createElement("div")),f=(r._setAttributes(d,n.caption.inner),d.className=t.caption.inner,null),g=r.showCaptionTitle&&w.string(r.caption)&&0<r.caption.length,f=(g&&(f=document.createElement("div"),r._setAttributes(f,n.caption.title),f.className=t.caption.title,f.innerHTML=0<r.maxCaptionLength?x.trimTo(r.caption,r.maxCaptionLength):r.caption,d.appendChild(f)),null),m=r.showCaptionDescription&&w.string(r.description)&&0<r.description.length,v=(m&&(f=document.createElement("div"),r._setAttributes(f,n.caption.description),f.className=t.caption.description,f.innerHTML=0<r.maxDescriptionLength?x.trimTo(r.description,r.maxDescriptionLength):r.description,d.appendChild(f)),null),n=w.array(r.buttons)&&0<r.buttons.length;return n&&((v=document.createElement("div")).className=t.caption.buttons,_.each(r.buttons,function(e){var t;w.hash(e)&&w.string(e.text)&&((t=document.createElement("a")).innerHTML=e.text,w.string(e.url)&&0<e.url.length&&(t.href=e.url),w.string(e.rel)&&0<e.rel.length&&(t.rel=e.rel),w.string(e.target)&&0<e.target.length&&(t.target=e.target),w.string(e.classes)&&0<e.classes.length&&(t.className=e.classes),w.hash(e.attr)&&r._setAttributes(t,e.attr),v.appendChild(t))}),d.appendChild(v)),p.appendChild(d),r.isPicture?u.appendChild(i):u.appendChild(a),l.appendChild(c),l.appendChild(u),o.appendChild(l),(g||m||n)&&o.appendChild(p),r.hasRibbon&&s.appendChild(e),s.appendChild(o),s.appendChild(h),r.$el=y(s).data(b.DATA_ITEM,r),r.el=s,r.$inner=y(o),r.$anchor=y(l).on("click.foogallery",{self:r},r.onAnchorClick),r.$overlay=y(c),r.$wrap=y(u),r.isPicture?r.$image=y(i):r.$image=y(a),r.$caption=y(p).on("click.foogallery",{self:r},r.onCaptionClick),r.$loader=y(h),!0},append:function(){var e=this;return e.isCreated&&!e.isAttached&&(e.tmpl.trigger("append-item",[e]).isDefaultPrevented()||(e.tmpl.$el.append(e.$el.removeClass(e.cls.hidden)),e.isAttached=!0),e.isAttached&&(e.isLoaded||e.tmpl.items.observe(e),e.tmpl.trigger("appended-item",[e]))),e.isAttached},detach:function(){var e=this;return e.isCreated&&e.isAttached&&(e.tmpl.items.unobserve(e),e.tmpl.trigger("detach-item",[e]).isDefaultPrevented()||(e.$el.detach().removeClass(e.cls.hidden),e.isAttached=!1),e.isAttached||e.tmpl.trigger("detached-item",[e])),!e.isAttached},load:function(){var n=this;return w.promise(n._load)?n._load:n._load=y.Deferred(function(t){return n.isLoaded?t.resolve(n):n.isCreated&&n.isAttached?n.tmpl.trigger("load-item",[n]).isDefaultPrevented()?t.reject("default prevented"):(n.isLoading=!0,n.tmpl.items.unobserve(n),n.$el.removeClass(n.cls.idle).removeClass(n.cls.hidden).removeClass(n.cls.loaded).removeClass(n.cls.error).addClass(n.cls.loading),void n.loadIMG().then(function(){n.isLoading=!1,n.isLoaded=!0,n.$el.removeClass(n.cls.loading).addClass(n.cls.loaded),n.tmpl.trigger("loaded-item",[n]),t.resolve(n)},function(e){n.isLoading=!1,n.isError=!0,n.$el.removeClass(n.cls.loading).addClass(n.cls.error),n.tmpl.trigger("error-item",[n]),t.reject(e)})):t.reject("not created or attached")}).promise()},loadIMG:function(){var o=this;return new y.Deferred(function(e){var t=(o.isPicture?o.$image.find("img"):o.$image).get(0);if(!t)return e.reject("Unable to find img element.");var n=t.src,i=t.srcset,r=(t.onload=function(){t.onload=t.onerror=null,t.style.removeProperty("width"),t.style.removeProperty("height"),e.resolve(t)},t.onerror=function(){t.onload=t.onerror=null,w.empty(n)?t.removeAttribute("src"):t.src=n,w.empty(i)?t.removeAttribute("srcset"):t.srcset=i,e.reject(t)},o.isPicture&&o.$image.find("source").each(function(e,t){var n=t.getAttribute(o.tmpl.opt.srcset);w.empty(n)||(t.srcset=n)}),t.getBoundingClientRect());t.style.width=r.width,t.style.height=r.height,t.src=o.src,w.empty(o.srcset)||(t.srcset=o.srcset),t.complete&&t.onload()}).promise()},createPlaceholder:function(e,t){return w.number(e)&&w.number(t)?"data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22"+e+"%22%20height=%22"+t+"%22%20viewBox=%220%200%20"+e+"%20"+t+"%22%3E%3C/svg%3E":""},getTypeClass:function(){return this.cls.types[this.type]||""},scrollTo:function(e){var t;return this.isAttached&&((t=this.$el.get(0)).scrollIntoViewIfNeeded?t.scrollIntoViewIfNeeded():t.scrollIntoView("top"===e)),this},updateState:function(){this.tmpl.state.update(this.tmpl.state.get(this))},toJSON:function(){return{type:this.type,id:this.id,productId:this.productId,href:this.href,src:this.src,srcset:this.srcset,width:this.width,height:this.height,alt:this.alt,title:this.title,caption:this.caption,description:this.description,tags:this.tags.slice(),maxCaptionLength:this.maxCaptionLength,maxDescriptionLength:this.maxDescriptionLength,showCaptionTitle:this.showCaptionTitle,showCaptionDescription:this.showCaptionDescription,noLightbox:this.noLightbox,panelHide:this.panelHide,attr:o.extend({},this.attr)}},onAnchorClick:function(e){var t=e.data.self;t.tmpl.trigger("anchor-click-item",[t]).isDefaultPrevented()?e.preventDefault():t.updateState()},onCaptionClick:function(e){var t=e.data.self;!t.tmpl.trigger("caption-click-item",[t]).isDefaultPrevented()&&0<t.$anchor.length&&!y(e.target).is("a[href],:input")&&t.$anchor.get(0).click()}}),b.template.configure("core",{item:{type:"item",id:"",href:"",placeholder:"",src:"",srcset:"",sources:[],width:0,height:0,title:"",alt:"",caption:"",description:"",tags:[],maxCaptionLength:0,maxDescriptionLength:0,showCaptionTitle:!0,showCaptionDescription:!0,noLightbox:!1,panelHide:!1,buttons:[],ribbon:{type:null,text:null},exif:{aperture:null,camera:null,created_timestamp:null,shutter_speed:null,focal_length:null,iso:null,orientation:null},attr:{elem:{},inner:{},anchor:{},image:{},picture:{},caption:{elem:{},inner:{},title:{},description:{}}}}},{item:{elem:"fg-item",inner:"fg-item-inner",exif:"fg-item-exif",anchor:"fg-thumb",overlay:"fg-image-overlay",wrap:"fg-image-wrap",image:"fg-image",loader:"fg-loader",idle:"fg-idle",loading:"fg-loading",loaded:"fg-loaded",error:"fg-error",hidden:"fg-hidden",noLightbox:"fg-no-lightbox",panelHide:"fg-panel-hide",types:{item:"fg-type-unknown"},caption:{elem:"fg-caption",inner:"fg-caption-inner",title:"fg-caption-title",description:"fg-caption-desc",buttons:"fg-caption-buttons",button:"fg-caption-button"}}},{item:{exif:{aperture:"Aperture",camera:"Camera",created_timestamp:"Date",shutter_speed:"Exposure",focal_length:"Focal Length",iso:"ISO",orientation:"Orientation"}}}),b.components.register("item",b.Item)}(FooGallery.$,FooGallery,FooGallery.utils,FooGallery.utils.is,(FooGallery.utils.fn,FooGallery.utils.obj),FooGallery.utils.str),function(e){e.Image=e.Item.extend({}),e.template.configure("core",null,{item:{types:{image:"fg-type-image"}}}),e.components.register("image",e.Image)}((FooGallery.$,FooGallery),(FooGallery.utils,FooGallery.utils.is)),function(e,c,u){e.PagingFactory=e.Factory.extend({construct:function(){this.registered={}},register:function(e,t,n,i,r,o,s){t=this._super(e,t,s);return t&&((s=this.registered)[e].ctrl=c.fn(n)?n:null,s[e].opt=c.hash(i)?i:{},s[e].cls=c.hash(r)?r:{},s[e].il8n=c.hash(o)?o:{}),t},type:function(e){return c.hash(e)&&c.hash(e=e.paging)&&c.string(e.type)&&this.contains(e.type)?e.type:null},merge:function(e){e=u.extend({},e);var t=this.type(e),n=this.registered,i=n.default.opt,r=n.default.cls,o=n.default.il8n,s=c.hash(e.paging)?e.paging:{},a=c.hash(e.cls)&&c.hash(e.cls.paging)?u.extend({},e.cls.paging):{},l=c.hash(e.il8n)&&c.hash(e.il8n.paging)?u.extend({},e.il8n.paging):{};return c.hash(e.cls)||(e.cls={}),c.hash(e.il8n)||(e.il8n={}),"default"!==t&&this.contains(t)?(e.paging=u.extend({},i,n[t].opt,s,{type:t}),e.cls=u.extend(e.cls,{paging:r},{paging:n[t].cls},{paging:a}),e.il8n=u.extend(e.il8n,{paging:o},{paging:n[t].il8n},{paging:l})):(e.paging=u.extend({},i,s,{type:t}),e.cls=u.extend(e.cls,{paging:r},{paging:a}),e.il8n=u.extend(e.il8n,{paging:o},{paging:l})),e},hasCtrl:function(e){e=this.registered[e];return c.hash(e)&&c.fn(e.ctrl)},makeCtrl:function(e,t,n,i){e=this.registered[e];return c.hash(e)&&c.fn(e.ctrl)?new e.ctrl(t,n,i):null}}),e.paging=new e.PagingFactory}(FooGallery,FooGallery.utils.is,(FooGallery.utils.fn,FooGallery.utils.obj)),function(t,o,i,l){o.Paging=o.Component.extend({construct:function(e){var t=this;t._super(e),t.opt=t.tmpl.opt.paging,t.cls=t.tmpl.cls.paging,t.il8n=t.tmpl.il8n.paging,t.sel=t.tmpl.sel.paging,t.pushOrReplace=t.opt.pushOrReplace,t.type=t.opt.type,t.theme=t.opt.theme,t.size=t.opt.size,t.position=t.opt.position,t.scrollToTop=t.opt.scrollToTop,t.current=0,t.total=0,t.ctrls=[],t._pages=[]},init:function(){},fromHash:function(e){e=parseInt(e);return isNaN(e)?null:e},toHash:function(e){return l.number(e)&&0<e?e.toString():null},getState:function(){return this.isValid(this.current)?this.current:null},setState:function(e){this.rebuild();var t=!1;e.item&&!this.contains(e.page,e.item)&&(e.page=this.find(e.item),e.page=0!==e.page?e.page:1,t=!0),this.set(e.page,t,!1,!1)},destroy:function(){var e=this;e._pages.splice(0,e._pages.length),t.each(e.ctrls.splice(0,e.ctrls.length),function(e,t){t.destroy()}),e._super()},build:function(){var e=this,t=e.tmpl.items.available();e.total=0<e.size&&0<t.length?Math.ceil(t.length/e.size):1;for(var n,i,r=0;r<e.total;r++)e._pages.push(t.splice(0,e.size));1<e.total&&o.paging.hasCtrl(e.type)&&("both"!==(n=e.position)&&"top"!==n||(i=o.paging.makeCtrl(e.type,e.tmpl,e,"top")).create()&&(i.append(),e.ctrls.push(i)),"both"!==n&&"bottom"!==n||(i=o.paging.makeCtrl(e.type,e.tmpl,e,"bottom")).create()&&(i.append(),e.ctrls.push(i)))},rebuild:function(){var e=this;e.current=0,e.total=0,e._pages.splice(0,e._pages.length),t.each(e.ctrls.splice(0,e.ctrls.length),function(e,t){t.destroy()}),e.build()},all:function(){return this._pages.slice()},available:function(){return this.get(this.current)},controls:function(n){this.isValid(n)&&t.each(this.ctrls,function(e,t){t.update(n)})},isValid:function(e){return l.number(e)&&0<e&&e<=this.total},number:function(e){return this.isValid(e)?e:0===this.current?1:this.current},create:function(e,t){var n=this,i=(e=n.number(e))-1,r=n._pages[i],t=t?n.tmpl.items.all():n._pages.reduce(function(e,t,n){return n===i?e:e.concat(t)},n.tmpl.items.unavailable());n.current=e,n.tmpl.items.detach(t),n.tmpl.items.create(r,!0)},get:function(e){return this.isValid(e)?(e=this.number(e),this._pages[e-1]):[]},set:function(e,t,n,i){var r=this;if(r.isValid(e)){r.controls(e);var o,s,a=r.number(e);if(a!==r.current)return s=r.current,!r.tmpl.trigger("before-page-change",[r.current,a,e=function(){var e;n=!l.boolean(n)||n,i=!!l.boolean(i)&&i,n&&1===r.current&&!r.tmpl.state.exists()&&(o=r.tmpl.state.get(),r.tmpl.state.update(o,r.pushOrReplace)),r.create(a,i),n&&(o=r.tmpl.state.get(),r.tmpl.state.update(o,r.pushOrReplace)),r.tmpl.trigger("page-change",[r.current,s,i]),r.scrollToTop&&l.boolean(t)&&t&&(0<(e=r.get(r.current)).length&&e[0].scrollTo("top")),r.tmpl.trigger("after-page-change",[r.current,s,i])},i]).isDefaultPrevented()&&(e(),!0)}return!1},find:function(e){for(var t=0,n=this._pages.length;t<n;t++)if(-1!==i.inArray(e,this._pages[t]))return t+1;return 0},contains:function(e,t){e=this.get(e);return-1!==i.inArray(t,e)},first:function(){this.goto(1)},last:function(){this.goto(this._pages.length)},prev:function(){this.goto(this.current-1)},next:function(){this.goto(this.current+1)},goto:function(e){this.set(e,!0)}}),o.PagingControl=o.Component.extend({construct:function(e,t,n){var i=this;i._super(e),i.pages=t,i.position=n,i.$container=null,i._containerExisted=!1,i._placeholderClasses=[]},create:function(){var n=this;return n.$container=t("#"+n.tmpl.id+"_paging-"+n.position),0<n.$container.length?(n._containerExisted=!0,n.$container.removeClass(function(e,t){return n._placeholderClasses=t.match(/(^|\s)fg-ph-\S+/g)||[],n._placeholderClasses.join(" ")}).addClass([n.pages.cls.container,n.pages.theme].join(" "))):n.$container=t("<nav/>",{class:[n.pages.cls.container,n.pages.theme].join(" ")}),!0},destroy:function(){var e=this;e._containerExisted?e.$container.empty().removeClass().addClass(e._placeholderClasses.join(" ")):e.$container.remove(),e.$container=null},append:function(){var e=this;e._containerExisted||("top"===e.position?e.$container.insertBefore(e.tmpl.$el):e.$container.insertAfter(e.tmpl.$el))},update:function(e){}}),o.paging.register("default",o.Paging,null,{type:"none",theme:"fg-light",size:30,pushOrReplace:"push",position:"none",scrollToTop:!0},{container:"fg-paging-container"},null,-100)}(FooGallery.$,FooGallery,FooGallery.utils,FooGallery.utils.is),function(l,e,a){e.Dots=e.Paging.extend({}),e.DotsControl=e.PagingControl.extend({construct:function(e,t,n){this._super(e,t,n),this.$list=null,this.$items=null},create:function(){var e=this;if(e._super()){for(var t,n=e.pages.cls,i=e.pages.il8n,r=[],o=l("<ul/>",{class:n.list}),s=0,a=e.pages.total;s<a;s++)r.push(t=e.createItem(s+1,i.page)),o.append(t);return e.$list=o,e.$items=l(l.map(r,function(e){return e.get()})),e.$container.append(o),!0}return!1},destroy:function(){var e=this,t=e.pages.sel;e.$list.find(t.link).off("click.foogallery",e.onLinkClick),e.$list=l(),e.$items=l(),e._super()},update:function(e){this.setSelected(e-1)},setSelected:function(e){var t=this,n=t.pages.cls,r=t.pages.il8n,o=t.pages.sel;t.$items.filter(o.selected).removeClass(n.selected).each(function(e,t){var t=l(t),n=t.data("label"),t=t.find(o.reader);a.string(n)&&0!==t.length&&t.html(n)}),t.$items.eq(e).addClass(n.selected).each(function(e,t){var t=l(t),n=t.find(o.reader),i=n.html();a.string(i)&&0!==n.length&&(t.data("label",i),n.html(r.current))})},createItem:function(e,t,n,i,r){n=a.string(n)?n:e,t=a.string(t)?t:"";var o=this.pages.opt,s=this.pages.cls,n=l("<a/>",{class:s.link,href:"#page-"+e}).html(n).on("click.foogallery",{self:this,page:e},this.onLinkClick),e=(a.empty(t)||n.attr("title",t.replace(/\{PAGE}/g,e).replace(/\{LIMIT}/g,o.limit+"")),r=a.string(r)?r:t,a.empty(r)||n.prepend(l("<span/>",{class:s.reader,text:r.replace(/\{PAGE}/g,"").replace(/\{LIMIT}/g,o.limit+"")})),l("<li/>",{class:s.item}).append(n));return i=a.string(i)?i:"",a.empty(i)||e.addClass(i),e},onLinkClick:function(e){e.preventDefault();var t=e.data.self,e=e.data.page,n=t.pages.sel;l(this).closest(n.item).is(n.disabled)||t.pages.set(e,!0)}}),e.paging.register("dots",e.Dots,e.DotsControl,{type:"dots",position:"both",pushOrReplace:"push"},{list:"fg-dots",item:"fg-dot-item",link:"fg-dot-link",disabled:"fg-disabled",selected:"fg-selected",visible:"fg-visible",reader:"fg-sr-only"},{current:"Current page",page:"Page {PAGE}"})}(FooGallery.$,FooGallery,(FooGallery.utils,FooGallery.utils.is)),function(e){e.DefaultTemplate=e.Template.extend({}),e.template.register("default",e.DefaultTemplate,null,{container:"foogallery fg-default"})}((FooGallery.$,FooGallery),FooGallery.utils),function(e){e.MasonryTemplate=e.Template.extend({construct:function(e,t){var n=this;n._super(e,t),n.masonry=null,n.on({"pre-init":n.onPreInit,destroyed:n.onDestroyed,"appended-items":n.onAppendedItems,"detach-item":n.onDetachItem,"layout after-filter-change":n.onLayoutRequired,"page-change":n.onPageChange},n)},onPreInit:function(){var e=this,t=e.sel,n=e.$el.hasClass("fg-fixed");e.template.isFitWidth=n,e.template.percentPosition=!n,e.template.transitionDuration=0,e.template.itemSelector=t.item.elem,n||(e.template.gutter=t.gutterWidth,e.template.columnWidth=t.columnWidth),e.masonry=new Masonry(e.el,e.template)},onDestroyed:function(){this.masonry instanceof Masonry&&this.masonry.destroy()},onLayoutRequired:function(){this.masonry.layout()},onPageChange:function(e,t,n,i){i||this.masonry.layout()},onAppendedItems:function(e,t){t=t.map(function(e){return e.el}),t=this.masonry.addItems(t);this.masonry.layoutItems(t,!0)},onDetachItem:function(e,t){e.isDefaultPrevented()||(e.preventDefault(),this.masonry.remove(t.el),t.$el.removeClass(this.cls.hidden),t.isAttached=!1)}}),e.template.register("masonry",e.MasonryTemplate,{template:{}},{container:"foogallery fg-masonry",columnWidth:"fg-column-width",gutterWidth:"fg-gutter-width"})}((FooGallery.$,FooGallery),(FooGallery.utils,FooGallery.utils.is)),function(i,r,e,o){r.Justified=e.Class.extend({construct:function(e,t){var n=this;n.tmpl=e,n.$el=e.$el,n.options=i.extend(!0,{},r.Justified.defaults,t),n._items=[],n.maxRowHeight=0,n.borderSize=0,n.align=-1!==["left","center","right"].indexOf(n.options.align)?n.options.align:"center"},init:function(){var e=this;e.maxRowHeight=e.getMaxRowHeight(e.options.maxRowHeight,e.options.rowHeight),e.borderSize=e.getBorderSize()},destroy:function(){this.$el.removeAttr("style")},getBorderSize:function(){switch(this.tmpl.getCSSClass("border","")){case"fg-border-thin":return 4;case"fg-border-medium":return 10;case"fg-border-thick":return 16;default:return 0}},getMaxRowHeight:function(e,t){var n;return o.string(e)?(n=parseInt(e),isNaN(n)?t:n<=0?1/0:-1!==e.indexOf("%")?t*(n/100):n):o.number(e)?e<=0?1/0:e:t},layout:function(e){var n,i=this;0<(e=o.number(e)?e:i.$el.width())&&(0!==(n=i.createRows(e)).height&&0<n.rows.length&&(i.$el.height(n.height),n.rows.forEach(function(e,t){i.render(e,t===n.rows.length-1)})))},render:function(t,e){var n=this,i=!e&&"justify"!==n.options.lastRow;t.items.forEach(function(e){e.elem&&(t.visible?(e.elem.style.setProperty("position","absolute"),e.elem.style.setProperty("width",e.width+"px"),e.elem.style.setProperty("height",e.height+"px"),e.elem.style.setProperty("top",e.top+"px"),e.elem.style.setProperty("left",e.left+"px"),e.elem.style.setProperty("margin","0"),e.elem.style.removeProperty("display"),0<n.maxRowHeight&&i?e.elem.style.setProperty("max-height",n.maxRowHeight+2*n.borderSize+"px"):e.elem.style.removeProperty("max-height"),e.elem.classList.contains("fg-positioned")||e.elem.classList.add("fg-positioned")):e.elem.style.setProperty("display","none"))})},justify:function(n,i,e,t){var r=this,o=r.options.margins,s=o*(n.items.length-1),e=e-s,a=n.width-s,l=e/a,c=(n.width=a*l,n.height=n.height*l,n.height>t+2*r.borderSize&&(a=(t+2*r.borderSize)/n.height,n.width=n.width*a,n.height=n.height*a),n.top=i,n.left=0,"left"!==r.align&&n.width<e&&("right"===r.align?n.left=e-n.width:n.left=(e-n.width)/2),n.width+=s,n.left);return n.items.forEach(function(e,t){0<t&&(c+=o),e.left=c,e.top=i;t=n.height/e.height;e.width=e.width*t,e.height=e.height*t,c+=e.width}),n.height},createRows:function(o){var s=this,a=s.options.margins,e=s.tmpl.getAvailable(),l=[],t=-1;function c(){return{index:++t,visible:!0,width:0,height:s.options.rowHeight+2*s.borderSize,top:0,left:0,items:[]}}var u=c(),h=0,p=0;if(e.forEach(function(e){r=u.height,t=e.width,(n=e.height)!==r&&(n*=i=r/n,t*=i),i=s.maxRowHeight/r;var t,n,i,r={__item:e,elem:e.el,width:t,height:n,maxWidth:t*i,maxHeight:n*i,top:0,left:0};u.width+r.width>o&&0<u.items.length&&(0<l.length&&(h+=a),e=s.justify(u,h,o,s.maxRowHeight),p<e&&(p=e),h+=e,l.push(u),u=c()),0<u.items.length&&(u.width+=a),u.width+=r.width,u.items.push(r)}),0<u.items.length){var n=h+a;switch(s.options.lastRow){case"smart":var i,r,d=s.justify(u,n,o,s.maxRowHeight);0!==p&&p<d&&(i=p/d,r=u.width*i/o,(i<.9||r<.9)&&(d=s.justify(u,n,o,p-2*s.borderSize)));break;case"justify":d=s.justify(u,n,o,99999);break;case"hide":d=s.justify(u,n,o,s.maxRowHeight),u.width<o&&1<l.length&&(u.visible=!1)}u.visible&&(h+=d+a),l.push(u)}return{height:h,rows:l}}}),r.Justified.defaults={rowHeight:150,maxRowHeight:"200%",margins:0,align:"center",lastRow:"smart"}}(FooGallery.$,FooGallery,FooGallery.utils,FooGallery.utils.is),function(e){e.JustifiedTemplate=e.Template.extend({construct:function(e,t){var n=this;n._super(e,t),n.justified=null,n.on({"pre-init":n.onPreInit,init:n.onInit,destroyed:n.onDestroyed,"layout after-filter-change":n.onLayoutRequired,"page-change":n.onPageChange},n)},onPreInit:function(){this.justified=new e.Justified(this,this.template)},onInit:function(){this.justified.init()},onDestroyed:function(){this.justified instanceof e.Justified&&this.justified.destroy()},onLayoutRequired:function(){this.justified.layout(this.lastWidth)},onPageChange:function(e,t,n,i){i||this.justified.layout(this.lastWidth)}}),e.template.register("justified",e.JustifiedTemplate,null,{container:"foogallery fg-justified"})}((FooGallery.$,FooGallery)),function(e){e.PortfolioTemplate=e.Template.extend({}),e.template.register("simple_portfolio",e.PortfolioTemplate,{},{container:"foogallery fg-simple_portfolio"})}((FooGallery.$,FooGallery),(FooGallery.utils,FooGallery.utils.is,FooGallery.utils.fn)),function(i,e,r){e.ImageViewerTemplate=e.Template.extend({construct:function(e,t){var n=this;n._super(r.extend({},e,{paging:{pushOrReplace:"replace",theme:"fg-light",type:"default",size:1,position:"none",scrollToTop:!1}}),t),n.$inner=i(),n.$current=i(),n.$total=i(),n.$prev=i(),n.$next=i(),n.on({"pre-init":n.onPreInit,init:n.onInit,destroy:n.onDestroy,"append-item":n.onAppendItem,"after-page-change":n.onAfterPageChange,"after-filter-change":n.onAfterFilterChange},n)},createChildren:function(){var e=this;return i("<div/>",{class:e.cls.inner}).append(i("<div/>",{class:e.cls.innerContainer}),i("<div/>",{class:e.cls.controls}).append(i("<div/>",{class:e.cls.prev}).append(i("<span/>",{text:e.il8n.prev})),i("<label/>",{class:e.cls.count,text:e.il8n.count}).prepend(i("<span/>",{class:e.cls.countCurrent,text:"0"})).append(i("<span/>",{class:e.cls.countTotal,text:"0"})),i("<div/>",{class:e.cls.next}).append(i("<span/>",{text:e.il8n.next}))))},destroyChildren:function(){this.$el.find(this.sel.inner).remove()},onPreInit:function(e){var t=this;t.$inner=t.$el.find(t.sel.innerContainer),t.$current=t.$el.find(t.sel.countCurrent),t.$total=t.$el.find(t.sel.countTotal),t.$prev=t.$el.find(t.sel.prev),t.$next=t.$el.find(t.sel.next)},onInit:function(e){var t=this;t.template.attachFooBox&&t.$el.on("foobox.previous",{self:t},t.onFooBoxPrev).on("foobox.next",{self:t},t.onFooBoxNext),t.$prev.on("click",{self:t},t.onPrevClick),t.$next.on("click",{self:t},t.onNextClick)},onDestroy:function(e){var t=this;t.template.attachFooBox&&t.$el.off({"foobox.previous":t.onFooBoxPrev,"foobox.next":t.onFooBoxNext}),t.$prev.off("click",t.onPrevClick),t.$next.off("click",t.onNextClick)},onAppendItem:function(e,t){e.preventDefault(),this.$inner.append(t.$el),t.isAttached=!0},onAfterPageChange:function(e,t,n,i){i||this.update()},onAfterFilterChange:function(e){this.update()},update:function(){this.pages&&(this.$current.text(this.pages.current),this.$total.text(this.pages.total))},prev:function(){this.pages&&(this.template.loop&&1===this.pages.current?this.pages.last():this.pages.prev(),this.update())},next:function(){this.pages&&(this.template.loop&&this.pages.current===this.pages.total?this.pages.first():this.pages.next(),this.update())},onFooBoxPrev:function(e){e.data.self.prev()},onFooBoxNext:function(e){e.data.self.next()},onPrevClick:function(e){e.preventDefault(),e.stopPropagation(),e.data.self.prev()},onNextClick:function(e){e.preventDefault(),e.stopPropagation(),e.data.self.next()}}),e.template.register("image-viewer",e.ImageViewerTemplate,{template:{attachFooBox:!1,loop:!1}},{container:"foogallery fg-image-viewer",inner:"fiv-inner",innerContainer:"fiv-inner-container",controls:"fiv-ctrls",prev:"fiv-prev",next:"fiv-next",count:"fiv-count",countCurrent:"fiv-count-current",countTotal:"fiv-count-total"},{prev:"Prev",next:"Next",count:"of"})}(FooGallery.$,FooGallery,(FooGallery.utils,FooGallery.utils.obj)),function(e,n){e.ThumbnailTemplate=e.Template.extend({construct:function(e,t){this._super(n.extend({},e,{filtering:{type:"none"},paging:{pushOrReplace:"replace",theme:"fg-light",type:"default",size:1,position:"none",scrollToTop:!1}}),t)}}),e.template.register("thumbnail",e.ThumbnailTemplate,null,{container:"foogallery fg-thumbnail"})}((FooGallery.$,FooGallery),FooGallery.utils.obj),function(i,o,e,l,r,s){o.StackAlbum=e.Class.extend({construct:function(e,t){var n=this;n.$el=l.jq(e)?e:i(e),n.el=n.$el.get(0),n.opt=r.extend({},o.StackAlbum.defaults,t,n.$el.data("foogallery")),n.$back=n.$el.find(".fg-header-back"),n.$active=n.$el.find(".fg-header-active"),n.$piles=n.$el.find(".fg-piles"),n.piles=n.$piles.find(".fg-pile").map(function(e,t){return new o.StackAlbum.Pile(n,t,{index:e})}).get(),n.ignoreResize=!1,n.robserver=new ResizeObserver(function(){!n.ignoreResize&&n.$el.is(":visible")&&n.layout(!0)})},init:function(){var e=this;e.piles.forEach(function(e){e.init()}),e.$back.on("click.foogallery",{self:e},e.onBackClick),e.robserver.observe(e.el)},destroy:function(){this.robserver.disconnect(),this.$back.off(".foogallery"),this.piles.forEach(function(e){e.destroy()})},getLayoutInfo:function(){var e=this,t=e.opt.gutter+2*e.opt.border;return{maxWidth:e.$el.width(),space:t,halfSpace:t/2,itemWidth:e.opt.itemWidth,itemHeight:e.opt.itemHeight,itemOuterWidth:e.opt.itemWidth+2*e.opt.border,itemOuterHeight:e.opt.itemHeight+2*e.opt.border,blockWidth:e.opt.itemWidth+t,blockHeight:e.opt.itemHeight+t,border:e.opt.border,doubleBorder:2*e.opt.border,gutter:e.opt.gutter,halfGutter:e.opt.gutter/2}},layout:function(e){var t,n=this;e&&(n.$el.addClass("fg-disable-transitions"),n.$el.prop("offsetWidth")),n.hasActive?(t=n.activePile.layout(),n.activePile.setPosition(0,0,t.width,t.height)):t=n.layoutPiles(),n.$piles.css({width:t.width+"px",height:t.height+"px"}),e&&n.$el.removeClass("fg-disable-transitions")},layoutPiles:function(i){var r=this.getLayoutInfo(),o=0,s=1,a=0;return i=l.fn(i)?i:function(){},this.piles.forEach(function(e){var t=o,n=((o+=r.blockWidth)>r.maxWidth&&(t=0,o=r.blockWidth,s++),r.blockHeight*(s-1));i(e,n,t,r.blockWidth,r.blockHeight),e.setPosition(n,t,r.blockWidth,r.blockHeight),a<o&&(a=o)}),{width:a,height:r.blockHeight*s}},setActive:function(t){var n,i=this,e=i.activePile,r=e instanceof o.StackAlbum.Pile;t=t instanceof o.StackAlbum.Pile?t:null,i.activePile=t,i.hasActive=null!==t,r&&e.collapse(),i.ignoreResize=!0,i.hasActive?(i.piles.forEach(function(e){e!==t&&e.hide(i.activePile)}),n=i.activePile.expand(),i.$active.text(t.title),i.$el.addClass("fg-has-active")):(n=i.layoutPiles(function(e){e.show()}),i.$el.removeClass("fg-has-active")),s.start(i.$piles,function(e){e.css({width:n.width+"px",height:n.height+"px"})},null,350).then(function(){i.ignoreResize=!1})},onBackClick:function(e){e.preventDefault(),e.stopPropagation(),e.data.self.setActive(null)}}),o.StackAlbum.defaults={gutter:50,itemWidth:150,itemHeight:150,border:10,angleStep:1,randomAngle:!1}}(FooGallery.$,FooGallery,FooGallery.utils,FooGallery.utils.is,FooGallery.utils.obj,FooGallery.utils.transition),function(r,o,e,s,a){o.StackAlbum.Pile=e.Class.extend({construct:function(e,t,n){var i=this;i.album=e,i.$el=s.jq(t)?t:r(t),i.opt=a.extend({},o.StackAlbum.Pile.defaults,n,i.$el.data()),i.title=i.opt.title,i.items=i.$el.find(".fg-pile-item").map(function(e,t){return new o.StackAlbum.Item(i,t,{index:e})}).get(),i.$cover=r("<div/>",{class:"fg-pile-cover"}).append(r("<div/>",{class:"fg-pile-cover-content"}).append(r("<span/>",{class:"fg-pile-cover-title",text:i.opt.title}),r("<span/>",{class:"fg-pile-cover-count",text:i.items.length}))),i.top=0,i.left=0,i.isExpanded=!1},init:function(){var n=this,i=n.album.opt,r=n.getAngles(i.angleStep),o=i.randomAngle?n.randomAngle(r):i.angleStep;n.$cover.on("click.foogallery",{self:n},n.onCoverClick),n.items.forEach(function(e,t){e.init(),3<t||(0===t?(e.$el.addClass("fg-has-cover").append(n.$cover),e.load()):(t%2==0?e.setAngle(-o):e.setAngle(o),i.randomAngle?o=n.randomAngle(r):o+=i.angleStep))})},destroy:function(){this.$cover.remove(),this.items.forEach(function(e,t){0===t&&e.$el.removeClass("fg-has-cover"),e.destroy()})},getAngles:function(e){for(var t=[],n=1;n<=3;n++)t.push(n*e);return t},randomAngle:function(e){var t=e.length,t=Math.floor(Math.random()*+t+0),e=e.splice(t,1);return 1===e.length?e[0]:0},setPosition:function(e,t,n,i){this.top=e,this.left=t,s.number(n)&&s.number(i)?this.$el.css({top:e+"px",left:t+"px",width:n+"px",height:i+"px"}):this.$el.css({top:e+"px",left:t+"px"})},layout:function(){var i=this.album.getLayoutInfo(),r=0,o=1,s=!1,a=0;return this.items.forEach(function(e){(r+=i.halfGutter)>i.maxWidth&&(r=i.halfGutter,o++,s=!0);var t=r,n=(r+=i.itemOuterWidth+i.halfGutter,!s&&r>i.maxWidth&&(t=i.halfGutter,r=i.blockWidth,o++),i.blockHeight*(o-1)+i.halfGutter);s=!1,e.setPosition(n,t,i.itemOuterWidth,i.itemOuterHeight),e.isLoaded||e.load(),a<r&&(a=r)}),{width:a,height:i.blockHeight*o}},expand:function(){var e;return this.$el.removeClass("fg-collapsed").addClass("fg-expanded"),e=this.layout(),this.setPosition(0,0,e.width,e.height),this.isExpanded=!0,e},collapse:function(){var e=this,t=e.album.getLayoutInfo(),n=(e.$el.removeClass("fg-expanded").addClass("fg-collapsed"),e.items.forEach(function(e){e.setPosition(t.halfGutter,t.halfGutter,t.itemOuterWidth,t.itemOuterHeight)}),{width:t.blockWidth,height:t.blockHeight});return e.setPosition(0,0,n.width,n.height),e.isExpanded=!1,n},show:function(){this.$el.removeClass("fg-hidden fg-expanded fg-collapsed")},hide:function(e){e instanceof o.StackAlbum.Pile&&this.setPosition(e.top,e.left),this.$el.addClass("fg-hidden")},onCoverClick:function(e){e.preventDefault(),e.stopPropagation();e=e.data.self;e.album.setActive(e)}}),o.StackAlbum.Pile.defaults={index:-1,title:null}}(FooGallery.$,FooGallery,FooGallery.utils,FooGallery.utils.is,FooGallery.utils.obj),function(r,o,e,s,a){o.StackAlbum.Item=e.Class.extend({construct:function(e,t,n){var i=this;i.$el=s.jq(t)?t:r(t),i.opt=a.extend({},o.StackAlbum.Item.defaults,n,i.$el.data()),i.$thumb=i.$el.find(".fg-pile-item-thumb"),i.$image=i.$el.find(".fg-pile-item-image"),i.isLoaded=!1,i.isLoading=!1,i._loading=null},init:function(){},destroy:function(){},setAngle:function(e){this.$el.css({transform:"rotate("+e+"deg)"})},setPosition:function(e,t,n,i){this.$el.css({top:e+"px",left:t+"px",width:n+"px",height:i+"px"})},load:function(){var t=this;return s.promise(t._loading)?t._loading:t._loading=r.Deferred(function(e){t.$el.addClass("fg-loading"),t.isLoading=!0,t.$image.on({"load.foogallery":function(){t.$image.off(".foogallery"),t.$el.removeClass("fg-loading"),t.isLoading=!1,t.isLoaded=!0,e.resolve()},"error.foogallery":function(){t.$image.off(".foogallery"),t.$el.removeClass("fg-loading"),t.isLoading=!1,t.isLoaded=!0,e.reject()}}),t.$image.prop("src",t.$image.attr(t.opt.src)).prop("srcset",t.$image.attr(t.opt.srcset))}).promise()}}),o.StackAlbum.Item.defaults={index:-1,src:"data-src-fg",srcset:"data-srcset-fg"}}(FooGallery.$,FooGallery,FooGallery.utils,FooGallery.utils.is,FooGallery.utils.obj),function(i,r,e){i.fn.foogalleryStackAlbum=function(e){return this.each(function(e,t){var t=i(t),n=t.data("__FooGalleryAlbum__");n instanceof r.StackAlbum&&n.destroy(),(n=new r.StackAlbum(t)).init(),t.data("__FooGalleryAlbum__",n)})},r.loadStackAlbums=r.reloadStackAlbums=function(){i(function(){i(".foogallery-stack-album:not(.fg-ready)").foogalleryStackAlbum()}),e.ready(function(){i(".foogallery-stack-album.fg-ready").foogalleryStackAlbum()})},r.loadStackAlbums()}(FooGallery.$,FooGallery,FooGallery.utils),function(u,e,o,d){o.Progress=o.EventClass.extend({construct:function(e){var t=this;t._super(),t.percent=0,t.tickRate=d.number(e)?e:100,t.isPaused=!1,t.isActive=!1,t._intervalId=null,t._total=0,t._target=null,t.onTick=t.onTick.bind(t)},destroy:function(){this._reset(),this._super()},_reset:function(){var e=this;null!==e._intervalId&&clearInterval(e._intervalId),e.percent=0,e._total=0,e._intervalId=null,e._target=null,e.isActive=!1,e.isPaused=!1},stop:function(){this.isActive&&(this._reset(),this.trigger("stop"))},start:function(e){var t=this;t.stop(),!t.isActive&&d.number(e)&&0<e&&(t._total=1e3*e,t._target=Date.now()+t._total,t._intervalId=setInterval(t.onTick,t.tickRate),t.isActive=!0,t.trigger("start"))},pause:function(){var e=this;e.isActive&&!e.isPaused&&e.percent<100&&(null!==e._intervalId&&clearInterval(e._intervalId),e._intervalId=null,e._target=null,e.isPaused=!0,e.trigger("pause"))},resume:function(){var e,t=this;t.isActive&&t.isPaused?(e=t._total-t._total*t.percent/100,t._target=Date.now()+e,t._intervalId=setInterval(t.onTick,t.tickRate),t.isPaused=!1,t.trigger("resume")):0<t._total&&t.start(t._total/1e3)},onTick:function(){var e=this,t=e._total-Math.max(e._target-Date.now(),0);e.percent=Math.min(t/e._total*100,100),e.trigger("tick",[e.percent]),100<=e.percent&&(null!==e._intervalId&&clearInterval(e._intervalId),e._intervalId=null,e._target=null,e.isActive=!1,e.trigger("complete"))}}),u.Carousel=o.Class.extend({construct:function(e,t,n,i){var r=this;r.tmpl=e,r.el=e.el,r.opt=t,r.cls=n,r.sel=i,r.elem={inner:null,center:null,bottom:null,prev:null,next:null,progress:null},r.activeItem=null,r._itemWidth=0,r._leftExclude=[r.sel.activeItem,r.sel.nextItem].join(","),r._rightExclude=[r.sel.activeItem,r.sel.prevItem].join(","),r._centerListeners=new o.DOMEventListeners,r._listeners=new o.DOMEventListeners,r._progress=new o.Progress,r._canHover=window.matchMedia("(hover: hover)").matches,r.cache=new Map,r.timeouts=new o.Timeouts,r.interacted=!1,r.isRTL=!1,r._firstLayout=!0},getScreenX:function(e,t,n){return n/(n+t)*e},getVectorX:function(e,t,n){return(n+t)/n*e},getSequentialZFromScale:function(e,t,n){return n*(t*(e+1))},scaleToZ:function(e,t,n){return e*(1-t/(n+t))},getDiff:function(e,t){return t<e?e-t:t-e},pause:function(){this._progress.pause()},resume:function(){this._progress.resume()},start:function(){"disable"===this.opt.autoplay.interaction&&this.interacted||this._progress.start(this.opt.autoplay.time)},stop:function(){this._progress.stop()},init:function(){var e=this;e.isRTL="rtl"===window.getComputedStyle(e.el).direction,e.elem={inner:e.el.querySelector(e.sel.inner),center:e.el.querySelector(e.sel.center),bottom:e.el.querySelector(e.sel.bottom),prev:e.el.querySelector(e.sel.prev),next:e.el.querySelector(e.sel.next),progress:e.el.querySelector(e.sel.progress)},150!==e.opt.perspective&&e.el.style.setProperty("--fg-carousel-perspective",e.opt.perspective+"px")},postInit:function(){var e=this;e.activeItem=e.tmpl.items.first(),e.initNavigation(),e.initPagination(),e.initSwipe(),e.initAutoplay()},initNavigation:function(){const t=this;t._listeners.add(t.elem.prev,"click",function(e){e.preventDefault(),t.interacted=!0,t.previous()}),"button"!==t.elem.prev.type&&(t.elem.prev.type="button"),t.elem.prev.appendChild(e.element("arrow-left")),t._listeners.add(t.elem.next,"click",function(e){e.preventDefault(),t.interacted=!0,t.next()}),"button"!==t.elem.next.type&&(t.elem.next.type="button"),t.elem.next.appendChild(e.element("arrow-right"))},initPagination:function(){const n=this;var e=n.tmpl.items.count();for(let t=0;t<e;t++){const i=document.createElement("button");i.type="button",i.classList.add(n.cls.bullet),0===t&&i.classList.add(n.cls.activeBullet),n._listeners.add(i,"click",function(e){e.preventDefault(),n.interacted=!0,n.goto(n.tmpl.items.get(t))}),n.elem.bottom.appendChild(i)}},initSwipe:function(){const t=this;let n=0,i=0,r=25*(window.devicePixelRatio||1);t._listeners.add(t.elem.inner,"touchstart",function(e){t.interacted=!0,n=e.changedTouches[0].screenX},{passive:!0}),t._listeners.add(t.elem.inner,"touchend",function(e){i=e.changedTouches[0].screenX,t.getDiff(n,i)>r&&(i<n?t.next():t.previous()),i=0,n=0},{passive:!0})},initAutoplay:function(){const n=this,t=n.opt.autoplay;if(!(t.time<=0)&&n.elem.progress instanceof HTMLElement){const i=n.elem.progress.style;function e(e,t){o.cancelFrame(null),o.requestFrame(function(){i.setProperty("width",e+"%"),t?i.setProperty("transition-duration","0s"):i.setProperty("transition-duration",n._progress.tickRate+"ms")})}n._progress.on({"start stop":function(){e(0,!0)},"pause resume":function(){e(n._progress.percent,!0)},tick:function(){e(n._progress.percent,!1)},complete:function(){n.next(function(){n._progress.start(t.time)})}}),"pause"===t.interaction&&(n._canHover?(n._listeners.add(n.el,"mouseenter",function(e){n._progress.pause()},{passive:!0}),n._listeners.add(n.el,"mouseleave",function(e){n._progress.resume()},{passive:!0})):(n._listeners.add(n.el,"touchstart",function(e){n.timeouts.delete("autoplay"),n._progress.pause()},{passive:!0}),n._listeners.add(n.el,"touchend",function(e){n.timeouts.set("autoplay",function(){n._progress.resume()},1e3*t.time)},{passive:!0}))),n._progress.start(t.time)}},getFirst:function(){return this.tmpl.items.first()},getNext:function(e){return this.tmpl.items.next(e instanceof u.Item?e:this.activeItem,null,!0)},getPrev:function(e){return this.tmpl.items.prev(e instanceof u.Item?e:this.activeItem,null,!0)},goto:function(e,t){const n=this;if(e instanceof u.Item){const i=n.opt.autoplay,r=!n._canHover&&n.timeouts.has("autoplay"),o=(n.timeouts.delete("autoplay"),n.timeouts.delete("navigation"),n._progress.isPaused);n._progress.isActive&&n._progress.stop(),n.activeItem=e,n.layout(),n.timeouts.set("navigation",function(){0<i.time&&("pause"===i.interaction||"disable"===i.interaction&&!n.interacted)&&(n._progress.start(i.time),o&&n._progress.pause(),r&&n.timeouts.set("autoplay",function(){n._progress.resume()},1e3*i.time)),d.fn(t)&&t.call(n)},n.opt.speed)}},next:function(e){this.goto(this.getNext(),e)},previous:function(e){this.goto(this.getPrev(),e)},destroy:function(){var e=this;e.cache.clear(),e.timeouts.clear(),e._listeners.clear(),e._centerListeners.clear(),150!==e.opt.perspective&&e.el.style.removeProperty("--fg-carousel-perspective")},getSize:function(e,t){var n=e.getBoundingClientRect();const i={width:n.width,height:n.height};return t&&(n=getComputedStyle(e),i.width-=parseFloat(n.paddingLeft)+parseFloat(n.paddingRight)+parseFloat(n.borderLeftWidth)+parseFloat(n.borderRightWidth),i.height-=parseFloat(n.paddingTop)+parseFloat(n.paddingBottom)+parseFloat(n.borderTopWidth)+parseFloat(n.borderBottomWidth)),i},layout:function(e){const t=this;if(null===t.activeItem&&(t.activeItem=t.tmpl.items.first()),!d.number(e)&&t.cache.has("width")&&(e=t.cache.get("width")),d.number(e)){const n=t.getLayout(e);null!==t._layoutFrame&&o.cancelFrame(t._layoutFrame),t._layoutFrame=o.requestFrame(function(){t._layoutFrame=null,t.renderActive(n)&&(t.renderSide("left",t.sel.prevItem,t._leftExclude,t.cls.prevItem,n),t.renderSide("right",t.sel.nextItem,t._rightExclude,t.cls.nextItem,n),t._firstLayout=!1)})}},getLayout:function(e){var t,n,i=this;return i.cache.has("layout")&&i.cache.get("width")===e?i.cache.get("layout"):(n=i.getSize(i.elem.center).width,t=i.getSize(i.elem.inner,!0).width/2+n/2,n=i.calculate(n,t),i.cache.set("width",e),i.cache.set("layout",n),n)},round:function(e,t){t=Math.pow(10,t||0);return Math.round(e*t)/t},getShowPerSide:function(){var e=this.tmpl.items.count();let t=this.opt.maxItems;return(t="auto"===t||t<=0?e%2==0?e-1:e:t)%2==0&&--t,((t=(t=t<1?1:t)>e?e%2==0?e-1:e:t)-1)/2},calculate:function(t,n,i,r){var o=this;d.number(i)||(i=o.opt.gutter.max);const s={zIndex:(r=d.number(r)?r:o.getShowPerSide())+10,gutter:i,perSide:r,side:[]};let a=t,l=s.zIndex-1;for(let e=0;e<r;e++,l--){var c=o.getSequentialZFromScale(e,o.opt.scale,o.opt.perspective),u=o.scaleToZ(t,c,o.opt.perspective),h=(t-u)/2,p=(a-=h,"%"===o.opt.gutter.unit?t*Math.abs(i/100):Math.abs(i)),p="%"===o.opt.gutter.unit?o.scaleToZ(p,c,o.opt.perspective):p;if(0<i?a+=p:a-=p,a+u+h>n)return i-1<o.opt.gutter.min?o.calculate(t,n,o.opt.gutter.max,r-1):o.calculate(t,n,i-1,r);p=o.getVectorX(a,c,o.opt.perspective);a+=u+h,s.side.push({x:p,z:c,zIndex:l})}return s},cleanup:function(e,t,n){const i=this,r=d.string(n);Array.from(i.el.querySelectorAll(e)).forEach(function(e){e.classList.remove(t),i.opt.centerOnClick&&i._centerListeners.remove(e,"click"),r&&e.matches(n)||(e.style.removeProperty("transition-duration"),e.style.removeProperty("transform"),e.style.removeProperty("z-index"))})},renderActive:function(e){const n=this;if(!(n.activeItem instanceof u.Item))return!1;const t=n.activeItem.el,i=(n.cleanup(n.sel.activeItem,n.cls.activeItem),t.classList.add(n.cls.activeItem),t.style.setProperty("transition-duration",n.opt.speed+"ms"),t.style.setProperty("z-index",e.zIndex),t.style.removeProperty("transform"),n.tmpl.items.indexOf(n.activeItem));return Array.from(n.el.querySelectorAll(n.sel.bullet)).forEach(function(e,t){e.classList.remove(n.cls.activeBullet),t===i&&e.classList.add(n.cls.activeBullet)}),!0},renderSide:function(n,e,i,r,o){const s=this;if(-1!==["left","right"].indexOf(n)){s.cleanup(e,r,i);let t=s.activeItem;for(let e=0;e<o.side.length;e++){var a=o.side[e];const c="left"===n?s.getPrev(t):s.getNext(t);if(!(c instanceof u.Item))break;var l="translate3d("+("left"===n&&!s.isRTL||"right"===n&&s.isRTL?"-":"")+a.x+"px, 0,-"+a.z+"px)";c.el.classList.add(r),c.isLoaded||(c.el.style.setProperty("transition-duration","0ms"),c.el.style.setProperty("transform","translate3d(0,0,-"+s.opt.perspective+"px)"),c.el.offsetHeight),c.el.style.setProperty("transition-duration",(s._firstLayout?0:s.opt.speed)+"ms"),c.el.style.setProperty("transform",l),c.el.style.setProperty("z-index",a.zIndex),s.opt.centerOnClick&&s._centerListeners.add(c.el,"click",function(e){e.preventDefault(),e.stopPropagation(),s.interacted=!0,s.goto(c)},!0),t=c}}}})}((FooGallery.$,FooGallery),FooGallery.icons,FooGallery.utils,FooGallery.utils.is),function(i,r){i.CarouselTemplate=i.Template.extend({construct:function(e,t){var n=this;n._super(r.extend({},e,{paging:{type:"none"}}),t),n.items.LAYOUT_AFTER_LOAD=!1,n.carousel=null,n.on({"pre-init":n.onPreInit,init:n.onInit,"post-init":n.onPostInit,destroyed:n.onDestroyed,"append-item":n.onAppendItem,"after-filter-change":n.onAfterFilterChange,layout:n.onLayout},n),i.Panel&&n.lightbox instanceof i.Panel&&n.lightbox.on({open:n.onLightboxOpen,closed:n.onLightboxClosed,next:n.onLightboxNext,prev:n.onLightboxPrev},n)},onPreInit:function(){var e=this;e.carousel=new i.Carousel(e,e.template,e.cls.carousel,e.sel.carousel)},onInit:function(){this.carousel.init()},onPostInit:function(){this.carousel.postInit()},onDestroyed:function(){this.carousel instanceof i.Carousel&&this.carousel.destroy()},onAppendItem:function(e,t){e.preventDefault(),this.carousel.elem.inner.appendChild(t.el),t.isAttached=!0},onAfterFilterChange:function(){this.carousel.cache.delete("layout"),this.carousel.interacted=!0,this.carousel.goto(this.carousel.getFirst())},onLayout:function(){this.carousel.layout(this.lastWidth)},onLightboxOpen:function(){this.carousel.interacted=!0,this.carousel.stop()},onLightboxClosed:function(){this.carousel.start()},onLightboxNext:function(){this.carousel.next()},onLightboxPrev:function(){this.carousel.previous()}}),i.template.register("carousel",i.CarouselTemplate,{template:{maxItems:0,perspective:150,scale:.12,speed:300,centerOnClick:!0,gutter:{min:-40,max:-20,unit:"%"},autoplay:{time:0,interaction:"pause"}}},{container:"foogallery fg-carousel",carousel:{inner:"fg-carousel-inner",center:"fg-carousel-center",bottom:"fg-carousel-bottom",prev:"fg-carousel-prev",next:"fg-carousel-next",bullet:"fg-carousel-bullet",activeBullet:"fg-bullet-active",activeItem:"fg-item-active",prevItem:"fg-item-prev",nextItem:"fg-item-next",progress:"fg-carousel-progress"}})}((FooGallery.$,FooGallery),FooGallery.utils.obj),function(o,s,n,i,r){s.__foobox__={owns:function(e){return 0<e.parents(".fbx-item").length},handles:function(e){return e.$el.hasClass("fbx-instance")&&r.object(window.FOOBOX)&&!!o.fn.foobox},update:function(e){const t=[{}];r.object(window.FOOBOX.o)&&t.push(window.FOOBOX.o),e.opt.protected&&t.push({images:{noRightClick:!0}}),r.fn(e.$el.foobox)&&e.$el.foobox(i.extend.apply(null,t))}},s.triggerPostLoad=function(e,t,n,i){var r=e.target;if(r instanceof s.Template&&r.initialized&&("ready"===e.type||"after-page-change"===e.type&&!i||"after-filter-change"===e.type))try{s.__foobox__.owns(r.$el)||(s.__foobox__.handles(r)?s.__foobox__.update(r):o("body").trigger("post-load"))}catch(e){console.error(e)}},s.autoDefaults={on:{"ready after-page-change after-filter-change":s.triggerPostLoad}},s.autoEnabled=!0,s.auto=function(e){return s.autoDefaults=i.merge(s.autoDefaults,e)},s.globalsMerged=!1,s.mergeGlobals=function(){!0!==s.globalsMerged&&r.object(window.FooGallery_il8n)&&(s.merge_il8n(window.FooGallery_il8n),s.globalsMerged=!0)},s.merge_il8n=function(i){r.object(i)&&Object.keys(i).forEach(e=>{if(r.object(i[e])&&s[e]instanceof s.Factory){const t=s[e],n=i[e];Object.keys(n).forEach(e=>{r.object(n[e])&&t.configure(e,null,null,n[e])})}})},s.load=s.reload=function(){let e=!1,t=!1;o(function(){s.mergeGlobals(),s.autoEnabled&&o('[id^="foogallery-gallery-"]:not(.fg-ready)').foogallery(s.autoDefaults),(e=!0)&&t&&document.dispatchEvent(new CustomEvent("foogallery-loaded",{detail:s}))}),n.ready(function(){s.mergeGlobals(),s.autoEnabled&&o('[id^="foogallery-gallery-"].fg-ready').foogallery(s.autoDefaults),t=!0,e&&t&&document.dispatchEvent(new CustomEvent("foogallery-loaded",{detail:s}))})},document.dispatchEvent(new CustomEvent("foogallery-ready",{detail:s})),s.load()}(FooGallery.$,FooGallery,FooGallery.utils,FooGallery.utils.obj,FooGallery.utils.is);
extensions/import-export/class-foogallery-import-export.php CHANGED
@@ -5,7 +5,7 @@
5
 
6
  if ( ! class_exists( 'FooGallery_Import_Export' ) ) {
7
 
8
- require_once 'functions.php';
9
 
10
  /**
11
  * Class FooGallery_Import_Export
5
 
6
  if ( ! class_exists( 'FooGallery_Import_Export' ) ) {
7
 
8
+ require_once plugin_dir_path( __FILE__ ) . 'functions.php';
9
 
10
  /**
11
  * Class FooGallery_Import_Export
foogallery.php CHANGED
@@ -3,7 +3,7 @@
3
  /*
4
  Plugin Name: FooGallery
5
  Description: FooGallery is the most intuitive and extensible gallery management tool ever created for WordPress
6
- Version: 2.2.16
7
  Author: FooPlugins
8
  Plugin URI: https://fooplugins.com/foogallery-wordpress-gallery-plugin/
9
  Author URI: https://fooplugins.com
@@ -25,7 +25,7 @@ if ( function_exists( 'foogallery_fs' ) ) {
25
  define( 'FOOGALLERY_PATH', plugin_dir_path( __FILE__ ) );
26
  define( 'FOOGALLERY_URL', plugin_dir_url( __FILE__ ) );
27
  define( 'FOOGALLERY_FILE', __FILE__ );
28
- define( 'FOOGALLERY_VERSION', '2.2.16' );
29
  define( 'FOOGALLERY_SETTINGS_VERSION', '2' );
30
  require_once FOOGALLERY_PATH . 'includes/constants.php';
31
  // Create a helper function for easy SDK access.
3
  /*
4
  Plugin Name: FooGallery
5
  Description: FooGallery is the most intuitive and extensible gallery management tool ever created for WordPress
6
+ Version: 2.2.26
7
  Author: FooPlugins
8
  Plugin URI: https://fooplugins.com/foogallery-wordpress-gallery-plugin/
9
  Author URI: https://fooplugins.com
25
  define( 'FOOGALLERY_PATH', plugin_dir_path( __FILE__ ) );
26
  define( 'FOOGALLERY_URL', plugin_dir_url( __FILE__ ) );
27
  define( 'FOOGALLERY_FILE', __FILE__ );
28
+ define( 'FOOGALLERY_VERSION', '2.2.26' );
29
  define( 'FOOGALLERY_SETTINGS_VERSION', '2' );
30
  require_once FOOGALLERY_PATH . 'includes/constants.php';
31
  // Create a helper function for easy SDK access.
freemius/languages/freemius.pot CHANGED
@@ -1,1968 +1,1968 @@
1
- # Copyright (C) 2022 freemius
2
- # This file is distributed under the same license as the freemius package.
3
- msgid ""
4
- msgstr ""
5
- "Project-Id-Version: freemius\n"
6
- "MIME-Version: 1.0\n"
7
- "Content-Type: text/plain; charset=UTF-8\n"
8
- "Content-Transfer-Encoding: 8bit\n"
9
- "Language-Team: Freemius Team <admin@freemius.com>\n"
10
- "Last-Translator: Vova Feldman <vova@freemius.com>\n"
11
- "POT-Creation-Date: 2022-07-06 12:49+0000\n"
12
- "Report-Msgid-Bugs-To: https://github.com/Freemius/wordpress-sdk/issues\n"
13
- "X-Poedit-Basepath: ..\n"
14
- "X-Poedit-KeywordsList: get_text_inline;fs_text_inline;fs_echo_inline;fs_esc_js_inline;fs_esc_attr_inline;fs_esc_attr_echo_inline;fs_esc_html_inline;fs_esc_html_echo_inline;get_text_x_inline:1,2c;fs_text_x_inline:1,2c;fs_echo_x_inline:1,2c;fs_esc_attr_x_inline:1,2c;fs_esc_js_x_inline:1,2c;fs_esc_js_echo_x_inline:1,2c;fs_esc_html_x_inline:1,2c;fs_esc_html_echo_x_inline:1,2c\n"
15
- "X-Poedit-SearchPath-0: .\n"
16
- "X-Poedit-SearchPathExcluded-0: *.js\n"
17
- "X-Poedit-SourceCharset: UTF-8\n"
18
- "Plural-Forms: nplurals=2; plural=(n != 1);\n"
19
-
20
- #: includes/class-freemius.php:1932, templates/account.php:941
21
- msgid "An update to a Beta version will replace your installed version of %s with the latest Beta release - use with caution, and not on production sites. You have been warned."
22
- msgstr ""
23
-
24
- #: includes/class-freemius.php:1939
25
- msgid "Would you like to proceed with the update?"
26
- msgstr ""
27
-
28
- #: includes/class-freemius.php:3751, templates/debug.php:20
29
- msgid "Freemius Debug"
30
- msgstr ""
31
-
32
- #: includes/class-freemius.php:13791
33
- msgid "An unknown error has occurred while trying to toggle the license's white-label mode."
34
- msgstr ""
35
-
36
- #: includes/class-freemius.php:13869
37
- msgid "An unknown error has occurred while trying to set the user's beta mode."
38
- msgstr ""
39
-
40
- #: includes/class-freemius.php:13942
41
- msgid "Invalid new user ID or email address."
42
- msgstr ""
43
-
44
- #: includes/class-freemius.php:23326
45
- msgid "Bundle"
46
- msgstr ""
47
-
48
- #: includes/class-fs-plugin-updater.php:206, templates/forms/premium-versions-upgrade-handler.php:57
49
- msgid "Renew license"
50
- msgstr ""
51
-
52
- #: includes/class-fs-plugin-updater.php:211, templates/forms/premium-versions-upgrade-handler.php:58
53
- msgid "Buy license"
54
- msgstr ""
55
-
56
- #: includes/class-fs-plugin-updater.php:364, includes/class-fs-plugin-updater.php:331
57
- msgid "There is a %s of %s available."
58
- msgstr ""
59
-
60
- #: includes/class-fs-plugin-updater.php:369, includes/class-fs-plugin-updater.php:333
61
- msgid "new Beta version"
62
- msgstr ""
63
-
64
- #: includes/class-fs-plugin-updater.php:370, includes/class-fs-plugin-updater.php:334
65
- msgid "new version"
66
- msgstr ""
67
-
68
- #: includes/class-fs-plugin-updater.php:393
69
- msgid "Important Upgrade Notice:"
70
- msgstr ""
71
-
72
- #: includes/class-fs-plugin-updater.php:1551
73
- msgid "The remote plugin package does not contain a folder with the desired slug and renaming did not work."
74
- msgstr ""
75
-
76
- #: includes/fs-plugin-info-dialog.php:541
77
- msgid "Purchase More"
78
- msgstr ""
79
-
80
- #: includes/fs-plugin-info-dialog.php:542, templates/account/partials/addon.php:390
81
- msgctxt "verb"
82
- msgid "Purchase"
83
- msgstr ""
84
-
85
- #. translators: %s: N-days trial
86
- #: includes/fs-plugin-info-dialog.php:546
87
- msgid "Start my free %s"
88
- msgstr ""
89
-
90
- #: includes/fs-plugin-info-dialog.php:754
91
- msgid "Install Free Version Now"
92
- msgstr ""
93
-
94
- #: includes/fs-plugin-info-dialog.php:755, templates/add-ons.php:323, templates/auto-installation.php:111, templates/account/partials/addon.php:423, templates/account/partials/addon.php:370
95
- msgid "Install Now"
96
- msgstr ""
97
-
98
- #: includes/fs-plugin-info-dialog.php:744
99
- msgid "Install Free Version Update Now"
100
- msgstr ""
101
-
102
- #: includes/fs-plugin-info-dialog.php:745, templates/account.php:650
103
- msgid "Install Update Now"
104
- msgstr ""
105
-
106
- #: includes/fs-plugin-info-dialog.php:771
107
- msgctxt "as download latest version"
108
- msgid "Download Latest Free Version"
109
- msgstr ""
110
-
111
- #: includes/fs-plugin-info-dialog.php:772, templates/account.php:109, templates/add-ons.php:37, templates/account/partials/addon.php:30
112
- msgctxt "as download latest version"
113
- msgid "Download Latest"
114
- msgstr ""
115
-
116
- #: includes/fs-plugin-info-dialog.php:787, templates/add-ons.php:329, templates/account/partials/addon.php:417, templates/account/partials/addon.php:361
117
- msgid "Activate this add-on"
118
- msgstr ""
119
-
120
- #: includes/fs-plugin-info-dialog.php:789, templates/connect.php:483
121
- msgid "Activate Free Version"
122
- msgstr ""
123
-
124
- #: includes/fs-plugin-info-dialog.php:790, templates/account.php:133, templates/add-ons.php:330, templates/account/partials/addon.php:53
125
- msgid "Activate"
126
- msgstr ""
127
-
128
- #: includes/fs-plugin-info-dialog.php:1002
129
- msgctxt "Plugin installer section title"
130
- msgid "Description"
131
- msgstr ""
132
-
133
- #: includes/fs-plugin-info-dialog.php:1003
134
- msgctxt "Plugin installer section title"
135
- msgid "Installation"
136
- msgstr ""
137
-
138
- #: includes/fs-plugin-info-dialog.php:1004
139
- msgctxt "Plugin installer section title"
140
- msgid "FAQ"
141
- msgstr ""
142
-
143
- #: includes/fs-plugin-info-dialog.php:1005, templates/plugin-info/description.php:55
144
- msgid "Screenshots"
145
- msgstr ""
146
-
147
- #: includes/fs-plugin-info-dialog.php:1006
148
- msgctxt "Plugin installer section title"
149
- msgid "Changelog"
150
- msgstr ""
151
-
152
- #: includes/fs-plugin-info-dialog.php:1007
153
- msgctxt "Plugin installer section title"
154
- msgid "Reviews"
155
- msgstr ""
156
-
157
- #: includes/fs-plugin-info-dialog.php:1008
158
- msgctxt "Plugin installer section title"
159
- msgid "Other Notes"
160
- msgstr ""
161
-
162
- #: includes/fs-plugin-info-dialog.php:1023
163
- msgctxt "Plugin installer section title"
164
- msgid "Features & Pricing"
165
- msgstr ""
166
-
167
- #: includes/fs-plugin-info-dialog.php:1033
168
- msgid "Plugin Install"
169
- msgstr ""
170
-
171
- #: includes/fs-plugin-info-dialog.php:1105
172
- msgctxt "e.g. Professional Plan"
173
- msgid "%s Plan"
174
- msgstr ""
175
-
176
- #: includes/fs-plugin-info-dialog.php:1131
177
- msgctxt "e.g. the best product"
178
- msgid "Best"
179
- msgstr ""
180
-
181
- #: includes/fs-plugin-info-dialog.php:1137, includes/fs-plugin-info-dialog.php:1157
182
- msgctxt "as every month"
183
- msgid "Monthly"
184
- msgstr ""
185
-
186
- #: includes/fs-plugin-info-dialog.php:1140
187
- msgctxt "as once a year"
188
- msgid "Annual"
189
- msgstr ""
190
-
191
- #: includes/fs-plugin-info-dialog.php:1143
192
- msgid "Lifetime"
193
- msgstr ""
194
-
195
- #: includes/fs-plugin-info-dialog.php:1157, includes/fs-plugin-info-dialog.php:1159, includes/fs-plugin-info-dialog.php:1161
196
- msgctxt "e.g. billed monthly"
197
- msgid "Billed %s"
198
- msgstr ""
199
-
200
- #: includes/fs-plugin-info-dialog.php:1159
201
- msgctxt "as once a year"
202
- msgid "Annually"
203
- msgstr ""
204
-
205
- #: includes/fs-plugin-info-dialog.php:1161
206
- msgctxt "as once a year"
207
- msgid "Once"
208
- msgstr ""
209
-
210
- #: includes/fs-plugin-info-dialog.php:1167
211
- msgid "Single Site License"
212
- msgstr ""
213
-
214
- #: includes/fs-plugin-info-dialog.php:1169
215
- msgid "Unlimited Licenses"
216
- msgstr ""
217
-
218
- #: includes/fs-plugin-info-dialog.php:1171
219
- msgid "Up to %s Sites"
220
- msgstr ""
221
-
222
- #: includes/fs-plugin-info-dialog.php:1181, templates/plugin-info/features.php:82
223
- msgctxt "as monthly period"
224
- msgid "mo"
225
- msgstr ""
226
-
227
- #: includes/fs-plugin-info-dialog.php:1188, templates/plugin-info/features.php:80
228
- msgctxt "as annual period"
229
- msgid "year"
230
- msgstr ""
231
-
232
- #: includes/fs-plugin-info-dialog.php:1242
233
- msgctxt "noun"
234
- msgid "Price"
235
- msgstr ""
236
-
237
- #. translators: %s: Discount (e.g. discount of $5 or 10%)
238
- #: includes/fs-plugin-info-dialog.php:1290
239
- msgid "Save %s"
240
- msgstr ""
241
-
242
- #: includes/fs-plugin-info-dialog.php:1300
243
- msgid "No commitment for %s - cancel anytime"
244
- msgstr ""
245
-
246
- #: includes/fs-plugin-info-dialog.php:1303
247
- msgid "After your free %s, pay as little as %s"
248
- msgstr ""
249
-
250
- #: includes/fs-plugin-info-dialog.php:1314
251
- msgid "Details"
252
- msgstr ""
253
-
254
- #: includes/fs-plugin-info-dialog.php:1318, templates/account.php:120, templates/debug.php:215, templates/debug.php:252, templates/debug.php:466, templates/account/partials/addon.php:41
255
- msgctxt "product version"
256
- msgid "Version"
257
- msgstr ""
258
-
259
- #: includes/fs-plugin-info-dialog.php:1325
260
- msgctxt "as the plugin author"
261
- msgid "Author"
262
- msgstr ""
263
-
264
- #: includes/fs-plugin-info-dialog.php:1332
265
- msgid "Last Updated"
266
- msgstr ""
267
-
268
- #. translators: %s: time period (e.g. "2 hours" ago)
269
- #: includes/fs-plugin-info-dialog.php:1337, templates/account.php:536
270
- msgctxt "x-ago"
271
- msgid "%s ago"
272
- msgstr ""
273
-
274
- #: includes/fs-plugin-info-dialog.php:1346
275
- msgid "Requires WordPress Version"
276
- msgstr ""
277
-
278
- #: includes/fs-plugin-info-dialog.php:1347
279
- msgid "%s or higher"
280
- msgstr ""
281
-
282
- #: includes/fs-plugin-info-dialog.php:1354
283
- msgid "Compatible up to"
284
- msgstr ""
285
-
286
- #: includes/fs-plugin-info-dialog.php:1362
287
- msgid "Downloaded"
288
- msgstr ""
289
-
290
- #. translators: %s: 1 or One (Number of times downloaded)
291
- #: includes/fs-plugin-info-dialog.php:1366
292
- msgid "%s time"
293
- msgstr ""
294
-
295
- #. translators: %s: Number of times downloaded
296
- #: includes/fs-plugin-info-dialog.php:1368
297
- msgid "%s times"
298
- msgstr ""
299
-
300
- #: includes/fs-plugin-info-dialog.php:1379
301
- msgid "WordPress.org Plugin Page"
302
- msgstr ""
303
-
304
- #: includes/fs-plugin-info-dialog.php:1388
305
- msgid "Plugin Homepage"
306
- msgstr ""
307
-
308
- #: includes/fs-plugin-info-dialog.php:1397, includes/fs-plugin-info-dialog.php:1481
309
- msgid "Donate to this plugin"
310
- msgstr ""
311
-
312
- #: includes/fs-plugin-info-dialog.php:1404
313
- msgid "Average Rating"
314
- msgstr ""
315
-
316
- #: includes/fs-plugin-info-dialog.php:1411
317
- msgid "based on %s"
318
- msgstr ""
319
-
320
- #. translators: %s: 1 or One
321
- #: includes/fs-plugin-info-dialog.php:1415
322
- msgid "%s rating"
323
- msgstr ""
324
-
325
- #. translators: %s: Number larger than 1
326
- #: includes/fs-plugin-info-dialog.php:1417
327
- msgid "%s ratings"
328
- msgstr ""
329
-
330
- #. translators: %s: 1 or One
331
- #: includes/fs-plugin-info-dialog.php:1432
332
- msgid "%s star"
333
- msgstr ""
334
-
335
- #. translators: %s: Number larger than 1
336
- #: includes/fs-plugin-info-dialog.php:1434
337
- msgid "%s stars"
338
- msgstr ""
339
-
340
- #. translators: %s: # of stars (e.g. 5 stars)
341
- #: includes/fs-plugin-info-dialog.php:1446
342
- msgid "Click to see reviews that provided a rating of %s"
343
- msgstr ""
344
-
345
- #: includes/fs-plugin-info-dialog.php:1459
346
- msgid "Contributors"
347
- msgstr ""
348
-
349
- #: includes/fs-plugin-info-dialog.php:1491, includes/fs-plugin-info-dialog.php:1489
350
- msgid "Warning"
351
- msgstr ""
352
-
353
- #: includes/fs-plugin-info-dialog.php:1491
354
- msgid "This plugin has not been marked as compatible with your version of WordPress."
355
- msgstr ""
356
-
357
- #: includes/fs-plugin-info-dialog.php:1489
358
- msgid "This plugin has not been tested with your current version of WordPress."
359
- msgstr ""
360
-
361
- #: includes/fs-plugin-info-dialog.php:1510
362
- msgid "Paid add-on must be deployed to Freemius."
363
- msgstr ""
364
-
365
- #: includes/fs-plugin-info-dialog.php:1511
366
- msgid "Add-on must be deployed to WordPress.org or Freemius."
367
- msgstr ""
368
-
369
- #: includes/fs-plugin-info-dialog.php:1540
370
- msgid "Latest Version Installed"
371
- msgstr ""
372
-
373
- #: includes/fs-plugin-info-dialog.php:1541
374
- msgid "Latest Free Version Installed"
375
- msgstr ""
376
-
377
- #: includes/fs-plugin-info-dialog.php:1532
378
- msgid "Newer Version (%s) Installed"
379
- msgstr ""
380
-
381
- #: includes/fs-plugin-info-dialog.php:1533
382
- msgid "Newer Free Version (%s) Installed"
383
- msgstr ""
384
-
385
- #: templates/account.php:110, templates/forms/subscription-cancellation.php:96, templates/account/partials/addon.php:31, templates/account/partials/site.php:311
386
- msgid "Downgrading your plan"
387
- msgstr ""
388
-
389
- #: templates/account.php:111, templates/forms/subscription-cancellation.php:97, templates/account/partials/addon.php:32, templates/account/partials/site.php:312
390
- msgid "Cancelling the subscription"
391
- msgstr ""
392
-
393
- #. translators: %1$s: Either 'Downgrading your plan' or 'Cancelling the subscription'
394
- #: templates/account.php:113, templates/forms/subscription-cancellation.php:99, templates/account/partials/site.php:314
395
- msgid "%1$s will immediately stop all future recurring payments and your %2$s plan license will expire in %3$s."
396
- msgstr ""
397
-
398
- #: templates/account.php:114, templates/forms/subscription-cancellation.php:100, templates/account/partials/addon.php:35, templates/account/partials/site.php:315
399
- msgid "Please note that we will not be able to grandfather outdated pricing for renewals/new subscriptions after a cancellation. If you choose to renew the subscription manually in the future, after a price increase, which typically occurs once a year, you will be charged the updated price."
400
- msgstr ""
401
-
402
- #: templates/account.php:115, templates/forms/subscription-cancellation.php:106, templates/account/partials/addon.php:36
403
- msgid "Cancelling the trial will immediately block access to all premium features. Are you sure?"
404
- msgstr ""
405
-
406
- #: templates/account.php:116, templates/forms/subscription-cancellation.php:101, templates/account/partials/addon.php:37, templates/account/partials/site.php:316
407
- msgid "You can still enjoy all %s features but you will not have access to %s security & feature updates, nor support."
408
- msgstr ""
409
-
410
- #: templates/account.php:117, templates/forms/subscription-cancellation.php:102, templates/account/partials/addon.php:38, templates/account/partials/site.php:317
411
- msgid "Once your license expires you can still use the Free version but you will NOT have access to the %s features."
412
- msgstr ""
413
-
414
- #. translators: %s: Plan title (e.g. "Professional")
415
- #: templates/account.php:119, templates/account/partials/activate-license-button.php:31, templates/account/partials/addon.php:40
416
- msgid "Activate %s Plan"
417
- msgstr ""
418
-
419
- #. translators: %s: Time period (e.g. Auto renews in "2 months")
420
- #: templates/account.php:122, templates/account/partials/addon.php:43, templates/account/partials/site.php:291
421
- msgid "Auto renews in %s"
422
- msgstr ""
423
-
424
- #. translators: %s: Time period (e.g. Expires in "2 months")
425
- #: templates/account.php:124, templates/account/partials/addon.php:45, templates/account/partials/site.php:293
426
- msgid "Expires in %s"
427
- msgstr ""
428
-
429
- #: templates/account.php:125
430
- msgctxt "as synchronize license"
431
- msgid "Sync License"
432
- msgstr ""
433
-
434
- #: templates/account.php:126, templates/account/partials/addon.php:46
435
- msgid "Cancel Trial"
436
- msgstr ""
437
-
438
- #: templates/account.php:127, templates/account/partials/addon.php:47
439
- msgid "Change Plan"
440
- msgstr ""
441
-
442
- #: templates/account.php:128, templates/account/partials/addon.php:48
443
- msgctxt "verb"
444
- msgid "Upgrade"
445
- msgstr ""
446
-
447
- #: templates/account.php:129, templates/account/partials/addon.php:49
448
- msgid "Add-Ons"
449
- msgstr ""
450
-
451
- #: templates/account.php:130, templates/account/partials/addon.php:50, templates/account/partials/site.php:318
452
- msgctxt "verb"
453
- msgid "Downgrade"
454
- msgstr ""
455
-
456
- #: templates/account.php:131, templates/add-ons.php:250, templates/account/partials/addon.php:51
457
- msgctxt "trial period"
458
- msgid "Trial"
459
- msgstr ""
460
-
461
- #: templates/account.php:132, templates/add-ons.php:246, templates/plugin-info/features.php:72, templates/account/partials/addon.php:52, templates/account/partials/site.php:33
462
- msgid "Free"
463
- msgstr ""
464
-
465
- #: templates/account.php:134, templates/debug.php:385, templates/account/partials/addon.php:54
466
- msgctxt "as product pricing plan"
467
- msgid "Plan"
468
- msgstr ""
469
-
470
- #: templates/account.php:135
471
- msgid "Bundle Plan"
472
- msgstr ""
473
-
474
- #: templates/account.php:251, templates/debug.php:338
475
- msgid "Account"
476
- msgstr ""
477
-
478
- #: templates/account.php:259
479
- msgid "Free Trial"
480
- msgstr ""
481
-
482
- #: templates/account.php:270
483
- msgid "Account Details"
484
- msgstr ""
485
-
486
- #: templates/account.php:279
487
- msgid "Stop Debug"
488
- msgstr ""
489
-
490
- #: templates/account.php:277, templates/forms/data-debug-mode.php:33
491
- msgid "Start Debug"
492
- msgstr ""
493
-
494
- #: templates/account.php:286
495
- msgid "Billing & Invoices"
496
- msgstr ""
497
-
498
- #: templates/account.php:299
499
- msgid "Deletion is not temporary. Only delete if you no longer want to use this %s anymore. Are you sure you would like to continue with the deletion?"
500
- msgstr ""
501
-
502
- #: templates/account.php:297
503
- msgid "Deleting the account will automatically deactivate your %s plan license so you can use it on other sites. If you want to terminate the recurring payments as well, click the \"Cancel\" button, and first \"Downgrade\" your account. Are you sure you would like to continue with the deletion?"
504
- msgstr ""
505
-
506
- #: templates/account.php:302
507
- msgid "Delete Account"
508
- msgstr ""
509
-
510
- #: templates/account.php:314, templates/account/partials/addon.php:236, templates/account/partials/deactivate-license-button.php:35
511
- msgid "Deactivate License"
512
- msgstr ""
513
-
514
- #: templates/account.php:337, templates/forms/subscription-cancellation.php:125
515
- msgid "Are you sure you want to proceed?"
516
- msgstr ""
517
-
518
- #: templates/account.php:337, templates/account/partials/addon.php:260
519
- msgid "Cancel Subscription"
520
- msgstr ""
521
-
522
- #: templates/account.php:366, templates/account/partials/addon.php:345
523
- msgctxt "as synchronize"
524
- msgid "Sync"
525
- msgstr ""
526
-
527
- #: templates/account.php:381, templates/debug.php:523
528
- msgid "Name"
529
- msgstr ""
530
-
531
- #: templates/account.php:387, templates/debug.php:524
532
- msgid "Email"
533
- msgstr ""
534
-
535
- #: templates/account.php:394, templates/debug.php:383, templates/debug.php:573
536
- msgid "User ID"
537
- msgstr ""
538
-
539
- #: templates/account.php:403, templates/account.php:411, templates/debug.php:372, templates/debug.php:567
540
- msgid "Plugin"
541
- msgstr ""
542
-
543
- #: templates/account.php:404, templates/account.php:412, templates/debug.php:372, templates/debug.php:567, templates/forms/deactivation/form.php:107
544
- msgid "Theme"
545
- msgstr ""
546
-
547
- #: templates/account.php:412, templates/account.php:732, templates/account.php:783, templates/debug.php:250, templates/debug.php:377, templates/debug.php:463, templates/debug.php:522, templates/debug.php:571, templates/debug.php:650, templates/account/payments.php:35, templates/debug/logger.php:21
548
- msgid "ID"
549
- msgstr ""
550
-
551
- #: templates/account.php:419
552
- msgid "Site ID"
553
- msgstr ""
554
-
555
- #: templates/account.php:422
556
- msgid "No ID"
557
- msgstr ""
558
-
559
- #: templates/account.php:427, templates/debug.php:257, templates/debug.php:386, templates/debug.php:467, templates/debug.php:526, templates/account/partials/site.php:227
560
- msgid "Public Key"
561
- msgstr ""
562
-
563
- #: templates/account.php:433, templates/debug.php:387, templates/debug.php:468, templates/debug.php:527, templates/account/partials/site.php:239
564
- msgid "Secret Key"
565
- msgstr ""
566
-
567
- #: templates/account.php:436
568
- msgctxt "as secret encryption key missing"
569
- msgid "No Secret"
570
- msgstr ""
571
-
572
- #: templates/account.php:490, templates/debug.php:579, templates/account/partials/site.php:260
573
- msgid "License Key"
574
- msgstr ""
575
-
576
- #: templates/account.php:463, templates/account/partials/site.php:122, templates/account/partials/site.php:120
577
- msgid "Trial"
578
- msgstr ""
579
-
580
- #: templates/account.php:521
581
- msgid "Join the Beta program"
582
- msgstr ""
583
-
584
- #: templates/account.php:527
585
- msgid "not verified"
586
- msgstr ""
587
-
588
- #: templates/account.php:598
589
- msgid "Free version"
590
- msgstr ""
591
-
592
- #: templates/account.php:596
593
- msgid "Premium version"
594
- msgstr ""
595
-
596
- #: templates/account.php:536, templates/account/partials/addon.php:195
597
- msgid "Expired"
598
- msgstr ""
599
-
600
- #: templates/account.php:567, templates/account.php:719, templates/connect.php:198, templates/connect.php:486, includes/managers/class-fs-clone-manager.php:1123, templates/forms/license-activation.php:27, templates/account/partials/addon.php:326
601
- msgid "Activate License"
602
- msgstr ""
603
-
604
- #: templates/account.php:610
605
- msgid "Verify Email"
606
- msgstr ""
607
-
608
- #: templates/account.php:687, templates/forms/user-change.php:27
609
- msgid "Change User"
610
- msgstr ""
611
-
612
- #: templates/account.php:674
613
- msgid "What is your %s?"
614
- msgstr ""
615
-
616
- #: templates/account.php:682, templates/account/billing.php:21
617
- msgctxt "verb"
618
- msgid "Edit"
619
- msgstr ""
620
-
621
- #: templates/account.php:658, templates/account.php:921, templates/account/partials/site.php:248, templates/account/partials/site.php:270
622
- msgctxt "verb"
623
- msgid "Show"
624
- msgstr ""
625
-
626
- #: templates/account.php:661, templates/account.php:718, templates/account/partials/addon.php:327, templates/account/partials/site.php:271
627
- msgid "Change License"
628
- msgstr ""
629
-
630
- #: templates/account.php:624
631
- msgid "Download %s Version"
632
- msgstr ""
633
-
634
- #: templates/account.php:640
635
- msgid "Download Paid Version"
636
- msgstr ""
637
-
638
- #: templates/account.php:711
639
- msgid "Sites"
640
- msgstr ""
641
-
642
- #: templates/account.php:724
643
- msgid "Search by address"
644
- msgstr ""
645
-
646
- #: templates/account.php:733, templates/debug.php:380
647
- msgid "Address"
648
- msgstr ""
649
-
650
- #: templates/account.php:734
651
- msgid "License"
652
- msgstr ""
653
-
654
- #: templates/account.php:735
655
- msgid "Plan"
656
- msgstr ""
657
-
658
- #: templates/account.php:786
659
- msgctxt "as software license"
660
- msgid "License"
661
- msgstr ""
662
-
663
- #: templates/account.php:915
664
- msgctxt "verb"
665
- msgid "Hide"
666
- msgstr ""
667
-
668
- #: templates/account.php:937, templates/forms/data-debug-mode.php:31, templates/forms/deactivation/form.php:358, templates/forms/deactivation/form.php:389
669
- msgid "Processing"
670
- msgstr ""
671
-
672
- #: templates/account.php:940
673
- msgid "Get updates for bleeding edge Beta versions of %s."
674
- msgstr ""
675
-
676
- #: templates/account.php:998
677
- msgid "Cancelling %s"
678
- msgstr ""
679
-
680
- #: templates/account.php:998, templates/account.php:1015, templates/forms/subscription-cancellation.php:27, templates/forms/deactivation/form.php:178
681
- msgid "trial"
682
- msgstr ""
683
-
684
- #: templates/account.php:1013, templates/forms/deactivation/form.php:195
685
- msgid "Cancelling %s..."
686
- msgstr ""
687
-
688
- #: templates/account.php:1016, templates/forms/subscription-cancellation.php:28, templates/forms/deactivation/form.php:179
689
- msgid "subscription"
690
- msgstr ""
691
-
692
- #: templates/account.php:1030
693
- msgid "Deactivating your license will block all premium features, but will enable activating the license on another site. Are you sure you want to proceed?"
694
- msgstr ""
695
-
696
- #: templates/account.php:1104
697
- msgid "Disabling white-label mode"
698
- msgstr ""
699
-
700
- #: templates/account.php:1105
701
- msgid "Enabling white-label mode"
702
- msgstr ""
703
-
704
- #: templates/add-ons.php:38
705
- msgid "View details"
706
- msgstr ""
707
-
708
- #: templates/add-ons.php:48
709
- msgid "Add Ons for %s"
710
- msgstr ""
711
-
712
- #: templates/add-ons.php:57
713
- msgctxt "exclamation"
714
- msgid "Oops"
715
- msgstr ""
716
-
717
- #: templates/add-ons.php:58
718
- msgid "We couldn't load the add-ons list. It's probably an issue on our side, please try to come back in few minutes."
719
- msgstr ""
720
-
721
- #: templates/add-ons.php:186, templates/account/partials/addon.php:386
722
- msgid "More information about %s"
723
- msgstr ""
724
-
725
- #: templates/add-ons.php:229
726
- msgctxt "active add-on"
727
- msgid "Active"
728
- msgstr ""
729
-
730
- #: templates/add-ons.php:230
731
- msgctxt "installed add-on"
732
- msgid "Installed"
733
- msgstr ""
734
-
735
- #: templates/admin-notice.php:13, templates/forms/license-activation.php:250, templates/forms/resend-key.php:80
736
- msgctxt "as close a window"
737
- msgid "Dismiss"
738
- msgstr ""
739
-
740
- #: templates/auto-installation.php:32
741
- msgid "Add-On"
742
- msgstr ""
743
-
744
- #. translators: %s: Number of seconds
745
- #: templates/auto-installation.php:45
746
- msgid "%s sec"
747
- msgstr ""
748
-
749
- #: templates/auto-installation.php:83
750
- msgid "Automatic Installation"
751
- msgstr ""
752
-
753
- #: templates/auto-installation.php:93
754
- msgid "An automated download and installation of %s (paid version) from %s will start in %s. If you would like to do it manually - click the cancellation button now."
755
- msgstr ""
756
-
757
- #: templates/auto-installation.php:104
758
- msgid "The installation process has started and may take a few minutes to complete. Please wait until it is done - do not refresh this page."
759
- msgstr ""
760
-
761
- #: templates/auto-installation.php:109
762
- msgid "Cancel Installation"
763
- msgstr ""
764
-
765
- #. translators: %s: name (e.g. Hey John,)
766
- #: templates/connect.php:121
767
- msgctxt "greeting"
768
- msgid "Hey %s,"
769
- msgstr ""
770
-
771
- #: templates/connect.php:181
772
- msgid "Allow & Continue"
773
- msgstr ""
774
-
775
- #: templates/connect.php:210, templates/connect.php:217
776
- msgid "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s."
777
- msgstr ""
778
-
779
- #: templates/connect.php:211, templates/connect.php:218
780
- msgid "Never miss an important update - opt in to our security & feature updates notifications, and non-sensitive diagnostic tracking with %4$s."
781
- msgstr ""
782
-
783
- #: templates/connect.php:221
784
- msgid "If you skip this, that's okay! %1$s will still work just fine."
785
- msgstr ""
786
-
787
- #: templates/connect.php:199, templates/forms/license-activation.php:46
788
- msgid "Agree & Activate License"
789
- msgstr ""
790
-
791
- #: templates/connect.php:203
792
- msgid "Welcome to %s! To get started, please enter your license key:"
793
- msgstr ""
794
-
795
- #: templates/connect.php:185
796
- msgid "Re-send activation email"
797
- msgstr ""
798
-
799
- #: templates/connect.php:189
800
- msgid "Thanks %s!"
801
- msgstr ""
802
-
803
- #: templates/connect.php:190
804
- msgid "You should receive an activation email for %s to your mailbox at %s. Please make sure you click the activation button in that email to %s."
805
- msgstr ""
806
-
807
- #: templates/connect.php:194
808
- msgid "complete the install"
809
- msgstr ""
810
-
811
- #: templates/connect.php:251
812
- msgid "We're excited to introduce the Freemius network-level integration."
813
- msgstr ""
814
-
815
- #: templates/connect.php:265
816
- msgid "During the update process we detected %s site(s) in the network that are still pending your attention."
817
- msgstr ""
818
-
819
- #: templates/connect.php:254
820
- msgid "During the update process we detected %d site(s) that are still pending license activation."
821
- msgstr ""
822
-
823
- #: templates/connect.php:256
824
- msgid "If you'd like to use the %s on those sites, please enter your license key below and click the activation button."
825
- msgstr ""
826
-
827
- #: templates/connect.php:258
828
- msgid "%s's paid features"
829
- msgstr ""
830
-
831
- #: templates/connect.php:263
832
- msgid "Alternatively, you can skip it for now and activate the license later, in your %s's network-level Account page."
833
- msgstr ""
834
-
835
- #: templates/connect.php:274, templates/forms/data-debug-mode.php:35, templates/forms/license-activation.php:49
836
- msgid "License key"
837
- msgstr ""
838
-
839
- #: templates/connect.php:277, templates/forms/license-activation.php:22
840
- msgid "Can't find your license key?"
841
- msgstr ""
842
-
843
- #: templates/connect.php:308
844
- msgid "Please let us know if you'd like us to contact you for security & feature updates, educational content, and occasional offers:"
845
- msgstr ""
846
-
847
- #: templates/connect.php:340, templates/connect.php:730, templates/forms/deactivation/retry-skip.php:20
848
- msgctxt "verb"
849
- msgid "Skip"
850
- msgstr ""
851
-
852
- #: templates/connect.php:343
853
- msgid "Delegate to Site Admins"
854
- msgstr ""
855
-
856
- #: templates/connect.php:343
857
- msgid "If you click it, this decision will be delegated to the sites administrators."
858
- msgstr ""
859
-
860
- #: templates/connect.php:368
861
- msgid "License issues?"
862
- msgstr ""
863
-
864
- #: templates/connect.php:454
865
- msgid "What permissions are being granted?"
866
- msgstr ""
867
-
868
- #: templates/connect.php:448
869
- msgid "The %1$s will periodically send %2$s to %3$s for security & feature updates delivery, and license management."
870
- msgstr ""
871
-
872
- #: templates/connect.php:450
873
- msgid "diagnostic data"
874
- msgstr ""
875
-
876
- #: templates/connect.php:485
877
- msgid "Have a license key?"
878
- msgstr ""
879
-
880
- #: templates/connect.php:482
881
- msgid "Don't have a license key?"
882
- msgstr ""
883
-
884
- #: templates/connect.php:493
885
- msgid "Privacy Policy"
886
- msgstr ""
887
-
888
- #: templates/connect.php:495
889
- msgid "License Agreement"
890
- msgstr ""
891
-
892
- #: templates/connect.php:495
893
- msgid "Terms of Service"
894
- msgstr ""
895
-
896
- #: templates/connect.php:896
897
- msgctxt "as in the process of sending an email"
898
- msgid "Sending email"
899
- msgstr ""
900
-
901
- #: templates/connect.php:897
902
- msgctxt "as activating plugin"
903
- msgid "Activating"
904
- msgstr ""
905
-
906
- #: templates/debug.php:17
907
- msgctxt "as turned off"
908
- msgid "Off"
909
- msgstr ""
910
-
911
- #: templates/debug.php:18
912
- msgctxt "as turned on"
913
- msgid "On"
914
- msgstr ""
915
-
916
- #: templates/debug.php:20
917
- msgid "SDK"
918
- msgstr ""
919
-
920
- #: templates/debug.php:24
921
- msgctxt "as code debugging"
922
- msgid "Debugging"
923
- msgstr ""
924
-
925
- #: templates/debug.php:54, templates/debug.php:262, templates/debug.php:388, templates/debug.php:528
926
- msgid "Actions"
927
- msgstr ""
928
-
929
- #: templates/debug.php:64
930
- msgid "Are you sure you want to delete all Freemius data?"
931
- msgstr ""
932
-
933
- #: templates/debug.php:64
934
- msgid "Delete All Accounts"
935
- msgstr ""
936
-
937
- #: templates/debug.php:71
938
- msgid "Clear API Cache"
939
- msgstr ""
940
-
941
- #: templates/debug.php:79
942
- msgid "Clear Updates Transients"
943
- msgstr ""
944
-
945
- #: templates/debug.php:88
946
- msgid "Reset Deactivation Snoozing"
947
- msgstr ""
948
-
949
- #: templates/debug.php:96
950
- msgid "Sync Data From Server"
951
- msgstr ""
952
-
953
- #: templates/debug.php:105
954
- msgid "Migrate Options to Network"
955
- msgstr ""
956
-
957
- #: templates/debug.php:110
958
- msgid "Load DB Option"
959
- msgstr ""
960
-
961
- #: templates/debug.php:113
962
- msgid "Set DB Option"
963
- msgstr ""
964
-
965
- #: templates/debug.php:194
966
- msgid "Key"
967
- msgstr ""
968
-
969
- #: templates/debug.php:195
970
- msgid "Value"
971
- msgstr ""
972
-
973
- #: templates/debug.php:211
974
- msgctxt "as software development kit versions"
975
- msgid "SDK Versions"
976
- msgstr ""
977
-
978
- #: templates/debug.php:216
979
- msgid "SDK Path"
980
- msgstr ""
981
-
982
- #: templates/debug.php:217, templates/debug.php:256
983
- msgid "Module Path"
984
- msgstr ""
985
-
986
- #: templates/debug.php:218
987
- msgid "Is Active"
988
- msgstr ""
989
-
990
- #: templates/debug.php:246, templates/debug/plugins-themes-sync.php:35
991
- msgid "Plugins"
992
- msgstr ""
993
-
994
- #: templates/debug.php:246, templates/debug/plugins-themes-sync.php:56
995
- msgid "Themes"
996
- msgstr ""
997
-
998
- #: templates/debug.php:251, templates/debug.php:382, templates/debug.php:465, templates/debug/scheduled-crons.php:80
999
- msgid "Slug"
1000
- msgstr ""
1001
-
1002
- #: templates/debug.php:253, templates/debug.php:464
1003
- msgid "Title"
1004
- msgstr ""
1005
-
1006
- #: templates/debug.php:254
1007
- msgctxt "as application program interface"
1008
- msgid "API"
1009
- msgstr ""
1010
-
1011
- #: templates/debug.php:255
1012
- msgid "Freemius State"
1013
- msgstr ""
1014
-
1015
- #: templates/debug.php:259
1016
- msgid "Network Blog"
1017
- msgstr ""
1018
-
1019
- #: templates/debug.php:260
1020
- msgid "Network User"
1021
- msgstr ""
1022
-
1023
- #: templates/debug.php:297
1024
- msgctxt "as connection was successful"
1025
- msgid "Connected"
1026
- msgstr ""
1027
-
1028
- #: templates/debug.php:298
1029
- msgctxt "as connection blocked"
1030
- msgid "Blocked"
1031
- msgstr ""
1032
-
1033
- #: templates/debug.php:334
1034
- msgid "Simulate Trial Promotion"
1035
- msgstr ""
1036
-
1037
- #: templates/debug.php:346
1038
- msgid "Simulate Network Upgrade"
1039
- msgstr ""
1040
-
1041
- #. translators: %s: 'plugin' or 'theme'
1042
- #: templates/debug.php:371
1043
- msgid "%s Installs"
1044
- msgstr ""
1045
-
1046
- #: templates/debug.php:373
1047
- msgctxt "like websites"
1048
- msgid "Sites"
1049
- msgstr ""
1050
-
1051
- #: templates/debug.php:379, templates/account/partials/site.php:156
1052
- msgid "Blog ID"
1053
- msgstr ""
1054
-
1055
- #: templates/debug.php:384
1056
- msgid "License ID"
1057
- msgstr ""
1058
-
1059
- #: templates/debug.php:445, templates/debug.php:551, templates/account/partials/addon.php:440
1060
- msgctxt "verb"
1061
- msgid "Delete"
1062
- msgstr ""
1063
-
1064
- #: templates/debug.php:459
1065
- msgid "Add Ons of module %s"
1066
- msgstr ""
1067
-
1068
- #: templates/debug.php:518
1069
- msgid "Users"
1070
- msgstr ""
1071
-
1072
- #: templates/debug.php:525
1073
- msgid "Verified"
1074
- msgstr ""
1075
-
1076
- #: templates/debug.php:567
1077
- msgid "%s Licenses"
1078
- msgstr ""
1079
-
1080
- #: templates/debug.php:572
1081
- msgid "Plugin ID"
1082
- msgstr ""
1083
-
1084
- #: templates/debug.php:574
1085
- msgid "Plan ID"
1086
- msgstr ""
1087
-
1088
- #: templates/debug.php:575
1089
- msgid "Quota"
1090
- msgstr ""
1091
-
1092
- #: templates/debug.php:576
1093
- msgid "Activated"
1094
- msgstr ""
1095
-
1096
- #: templates/debug.php:577
1097
- msgid "Blocking"
1098
- msgstr ""
1099
-
1100
- #: templates/debug.php:578, templates/debug.php:649, templates/debug/logger.php:22
1101
- msgid "Type"
1102
- msgstr ""
1103
-
1104
- #: templates/debug.php:580
1105
- msgctxt "as expiration date"
1106
- msgid "Expiration"
1107
- msgstr ""
1108
-
1109
- #: templates/debug.php:608
1110
- msgid "Debug Log"
1111
- msgstr ""
1112
-
1113
- #: templates/debug.php:612
1114
- msgid "All Types"
1115
- msgstr ""
1116
-
1117
- #: templates/debug.php:619
1118
- msgid "All Requests"
1119
- msgstr ""
1120
-
1121
- #: templates/debug.php:624, templates/debug.php:653, templates/debug/logger.php:25
1122
- msgid "File"
1123
- msgstr ""
1124
-
1125
- #: templates/debug.php:625, templates/debug.php:651, templates/debug/logger.php:23
1126
- msgid "Function"
1127
- msgstr ""
1128
-
1129
- #: templates/debug.php:626
1130
- msgid "Process ID"
1131
- msgstr ""
1132
-
1133
- #: templates/debug.php:627
1134
- msgid "Logger"
1135
- msgstr ""
1136
-
1137
- #: templates/debug.php:628, templates/debug.php:652, templates/debug/logger.php:24
1138
- msgid "Message"
1139
- msgstr ""
1140
-
1141
- #: templates/debug.php:630
1142
- msgid "Filter"
1143
- msgstr ""
1144
-
1145
- #: templates/debug.php:638
1146
- msgid "Download"
1147
- msgstr ""
1148
-
1149
- #: templates/debug.php:654, templates/debug/logger.php:26
1150
- msgid "Timestamp"
1151
- msgstr ""
1152
-
1153
- #: includes/debug/class-fs-debug-bar-panel.php:48, templates/debug/api-calls.php:54, templates/debug/logger.php:62
1154
- msgctxt "milliseconds"
1155
- msgid "ms"
1156
- msgstr ""
1157
-
1158
- #: includes/debug/debug-bar-start.php:41
1159
- msgid "Freemius API"
1160
- msgstr ""
1161
-
1162
- #: includes/debug/debug-bar-start.php:42
1163
- msgid "Requests"
1164
- msgstr ""
1165
-
1166
- #: includes/managers/class-fs-clone-manager.php:703
1167
- msgid "Invalid clone resolution action."
1168
- msgstr ""
1169
-
1170
- #: includes/managers/class-fs-clone-manager.php:851
1171
- msgid "products"
1172
- msgstr ""
1173
-
1174
- #: includes/managers/class-fs-clone-manager.php:1039
1175
- msgid "The products below have been placed into safe mode because we noticed that %2$s is an exact copy of %3$s:%1$s"
1176
- msgstr ""
1177
-
1178
- #: includes/managers/class-fs-clone-manager.php:1040
1179
- msgid "The products below have been placed into safe mode because we noticed that %2$s is an exact copy of these sites:%3$s%1$s"
1180
- msgstr ""
1181
-
1182
- #: includes/managers/class-fs-clone-manager.php:1033
1183
- msgid "%1$s has been placed into safe mode because we noticed that %2$s is an exact copy of %3$s."
1184
- msgstr ""
1185
-
1186
- #: includes/managers/class-fs-clone-manager.php:1066
1187
- msgid "the above-mentioned sites"
1188
- msgstr ""
1189
-
1190
- #: includes/managers/class-fs-clone-manager.php:1079
1191
- msgid "Is %2$s a duplicate of %4$s?"
1192
- msgstr ""
1193
-
1194
- #: includes/managers/class-fs-clone-manager.php:1080
1195
- msgid "Yes, %2$s is a duplicate of %4$s for the purpose of testing, staging, or development."
1196
- msgstr ""
1197
-
1198
- #: includes/managers/class-fs-clone-manager.php:1085
1199
- msgid "Long-Term Duplicate"
1200
- msgstr ""
1201
-
1202
- #: includes/managers/class-fs-clone-manager.php:1090
1203
- msgid "Duplicate Website"
1204
- msgstr ""
1205
-
1206
- #: includes/managers/class-fs-clone-manager.php:1096
1207
- msgid "Is %2$s the new home of %4$s?"
1208
- msgstr ""
1209
-
1210
- #: includes/managers/class-fs-clone-manager.php:1098
1211
- msgid "Yes, %%2$s is replacing %%4$s. I would like to migrate my %s from %%4$s to %%2$s."
1212
- msgstr ""
1213
-
1214
- #: includes/managers/class-fs-clone-manager.php:1099, templates/forms/subscription-cancellation.php:52
1215
- msgid "license"
1216
- msgstr ""
1217
-
1218
- #: includes/managers/class-fs-clone-manager.php:1099
1219
- msgid "data"
1220
- msgstr ""
1221
-
1222
- #: includes/managers/class-fs-clone-manager.php:1105
1223
- msgid "Migrate License"
1224
- msgstr ""
1225
-
1226
- #: includes/managers/class-fs-clone-manager.php:1106
1227
- msgid "Migrate"
1228
- msgstr ""
1229
-
1230
- #: includes/managers/class-fs-clone-manager.php:1112
1231
- msgid "Is %2$s a new website?"
1232
- msgstr ""
1233
-
1234
- #: includes/managers/class-fs-clone-manager.php:1113
1235
- msgid "Yes, %2$s is a new and different website that is separate from %4$s."
1236
- msgstr ""
1237
-
1238
- #: includes/managers/class-fs-clone-manager.php:1115
1239
- msgid "It requires license activation."
1240
- msgstr ""
1241
-
1242
- #: includes/managers/class-fs-clone-manager.php:1122
1243
- msgid "New Website"
1244
- msgstr ""
1245
-
1246
- #: includes/managers/class-fs-clone-manager.php:1145
1247
- msgctxt "Clone resolution admin notice products list label"
1248
- msgid "Products"
1249
- msgstr ""
1250
-
1251
- #: includes/managers/class-fs-clone-manager.php:1230
1252
- msgid "You marked this website, %s, as a temporary duplicate of %s."
1253
- msgstr ""
1254
-
1255
- #: includes/managers/class-fs-clone-manager.php:1231
1256
- msgid "You marked this website, %s, as a temporary duplicate of these sites"
1257
- msgstr ""
1258
-
1259
- #: includes/managers/class-fs-clone-manager.php:1245
1260
- msgid "%s automatic security & feature updates and paid functionality will keep working without interruptions until %s (or when your license expires, whatever comes first)."
1261
- msgstr ""
1262
-
1263
- #: includes/managers/class-fs-clone-manager.php:1248
1264
- msgctxt "\"The <product_label>\", e.g.: \"The plugin\""
1265
- msgid "The %s's"
1266
- msgstr ""
1267
-
1268
- #: includes/managers/class-fs-clone-manager.php:1251
1269
- msgid "The following products'"
1270
- msgstr ""
1271
-
1272
- #: includes/managers/class-fs-clone-manager.php:1259
1273
- msgid "If this is a long term duplicate, to keep automatic updates and paid functionality after %s, please %s."
1274
- msgstr ""
1275
-
1276
- #: includes/managers/class-fs-clone-manager.php:1261
1277
- msgid "activate a license here"
1278
- msgstr ""
1279
-
1280
- #: templates/account/billing.php:22
1281
- msgctxt "verb"
1282
- msgid "Update"
1283
- msgstr ""
1284
-
1285
- #: templates/account/billing.php:33
1286
- msgid "Billing"
1287
- msgstr ""
1288
-
1289
- #: templates/account/billing.php:38, templates/account/billing.php:38
1290
- msgid "Business name"
1291
- msgstr ""
1292
-
1293
- #: templates/account/billing.php:39, templates/account/billing.php:39
1294
- msgid "Tax / VAT ID"
1295
- msgstr ""
1296
-
1297
- #: templates/account/billing.php:42, templates/account/billing.php:42, templates/account/billing.php:43, templates/account/billing.php:43
1298
- msgid "Address Line %d"
1299
- msgstr ""
1300
-
1301
- #: templates/account/billing.php:46, templates/account/billing.php:46
1302
- msgid "City"
1303
- msgstr ""
1304
-
1305
- #: templates/account/billing.php:46, templates/account/billing.php:46
1306
- msgid "Town"
1307
- msgstr ""
1308
-
1309
- #: templates/account/billing.php:47, templates/account/billing.php:47
1310
- msgid "ZIP / Postal Code"
1311
- msgstr ""
1312
-
1313
- #: templates/account/billing.php:302
1314
- msgid "Country"
1315
- msgstr ""
1316
-
1317
- #: templates/account/billing.php:304
1318
- msgid "Select Country"
1319
- msgstr ""
1320
-
1321
- #: templates/account/billing.php:311, templates/account/billing.php:312
1322
- msgid "State"
1323
- msgstr ""
1324
-
1325
- #: templates/account/billing.php:311, templates/account/billing.php:312
1326
- msgid "Province"
1327
- msgstr ""
1328
-
1329
- #: templates/account/payments.php:29
1330
- msgid "Payments"
1331
- msgstr ""
1332
-
1333
- #: templates/account/payments.php:36
1334
- msgid "Date"
1335
- msgstr ""
1336
-
1337
- #: templates/account/payments.php:37
1338
- msgid "Amount"
1339
- msgstr ""
1340
-
1341
- #: templates/account/payments.php:38, templates/account/payments.php:50
1342
- msgid "Invoice"
1343
- msgstr ""
1344
-
1345
- #: templates/debug/api-calls.php:56
1346
- msgid "API"
1347
- msgstr ""
1348
-
1349
- #: templates/debug/api-calls.php:68
1350
- msgid "Method"
1351
- msgstr ""
1352
-
1353
- #: templates/debug/api-calls.php:69
1354
- msgid "Code"
1355
- msgstr ""
1356
-
1357
- #: templates/debug/api-calls.php:70
1358
- msgid "Length"
1359
- msgstr ""
1360
-
1361
- #: templates/debug/api-calls.php:71
1362
- msgctxt "as file/folder path"
1363
- msgid "Path"
1364
- msgstr ""
1365
-
1366
- #: templates/debug/api-calls.php:73
1367
- msgid "Body"
1368
- msgstr ""
1369
-
1370
- #: templates/debug/api-calls.php:75
1371
- msgid "Result"
1372
- msgstr ""
1373
-
1374
- #: templates/debug/api-calls.php:76
1375
- msgid "Start"
1376
- msgstr ""
1377
-
1378
- #: templates/debug/api-calls.php:77
1379
- msgid "End"
1380
- msgstr ""
1381
-
1382
- #: templates/debug/logger.php:15
1383
- msgid "Log"
1384
- msgstr ""
1385
-
1386
- #. translators: %s: time period (e.g. In "2 hours")
1387
- #: templates/debug/plugins-themes-sync.php:18, templates/debug/scheduled-crons.php:91
1388
- msgid "In %s"
1389
- msgstr ""
1390
-
1391
- #. translators: %s: time period (e.g. "2 hours" ago)
1392
- #: templates/debug/plugins-themes-sync.php:20, templates/debug/scheduled-crons.php:93
1393
- msgid "%s ago"
1394
- msgstr ""
1395
-
1396
- #: templates/debug/plugins-themes-sync.php:21, templates/debug/scheduled-crons.php:74
1397
- msgctxt "seconds"
1398
- msgid "sec"
1399
- msgstr ""
1400
-
1401
- #: templates/debug/plugins-themes-sync.php:23
1402
- msgid "Plugins & Themes Sync"
1403
- msgstr ""
1404
-
1405
- #: templates/debug/plugins-themes-sync.php:28
1406
- msgid "Total"
1407
- msgstr ""
1408
-
1409
- #: templates/debug/plugins-themes-sync.php:29, templates/debug/scheduled-crons.php:84
1410
- msgid "Last"
1411
- msgstr ""
1412
-
1413
- #: templates/debug/scheduled-crons.php:76
1414
- msgid "Scheduled Crons"
1415
- msgstr ""
1416
-
1417
- #: templates/debug/scheduled-crons.php:81
1418
- msgid "Module"
1419
- msgstr ""
1420
-
1421
- #: templates/debug/scheduled-crons.php:82
1422
- msgid "Module Type"
1423
- msgstr ""
1424
-
1425
- #: templates/debug/scheduled-crons.php:83
1426
- msgid "Cron Type"
1427
- msgstr ""
1428
-
1429
- #: templates/debug/scheduled-crons.php:85
1430
- msgid "Next"
1431
- msgstr ""
1432
-
1433
- #: templates/forms/affiliation.php:83
1434
- msgid "Non-expiring"
1435
- msgstr ""
1436
-
1437
- #: templates/forms/affiliation.php:86
1438
- msgid "Apply to become an affiliate"
1439
- msgstr ""
1440
-
1441
- #: templates/forms/affiliation.php:132
1442
- msgid "Due to violation of our affiliation terms, we decided to temporarily block your affiliation account. If you have any questions, please contact support."
1443
- msgstr ""
1444
-
1445
- #: templates/forms/affiliation.php:129
1446
- msgid "Thank you for applying for our affiliate program, unfortunately, we've decided at this point to reject your application. Please try again in 30 days."
1447
- msgstr ""
1448
-
1449
- #: templates/forms/affiliation.php:126
1450
- msgid "Your affiliation account was temporarily suspended."
1451
- msgstr ""
1452
-
1453
- #: templates/forms/affiliation.php:123
1454
- msgid "Thank you for applying for our affiliate program, we'll review your details during the next 14 days and will get back to you with further information."
1455
- msgstr ""
1456
-
1457
- #: templates/forms/affiliation.php:108
1458
- msgid "Your affiliate application for %s has been accepted! Log in to your affiliate area at: %s."
1459
- msgstr ""
1460
-
1461
- #: templates/forms/affiliation.php:145
1462
- msgid "Like the %s? Become our ambassador and earn cash ;-)"
1463
- msgstr ""
1464
-
1465
- #: templates/forms/affiliation.php:146
1466
- msgid "Refer new customers to our %s and earn %s commission on each successful sale you refer!"
1467
- msgstr ""
1468
-
1469
- #: templates/forms/affiliation.php:149
1470
- msgid "Program Summary"
1471
- msgstr ""
1472
-
1473
- #: templates/forms/affiliation.php:151
1474
- msgid "%s commission when a customer purchases a new license."
1475
- msgstr ""
1476
-
1477
- #: templates/forms/affiliation.php:153
1478
- msgid "Get commission for automated subscription renewals."
1479
- msgstr ""
1480
-
1481
- #: templates/forms/affiliation.php:156
1482
- msgid "%s tracking cookie after the first visit to maximize earnings potential."
1483
- msgstr ""
1484
-
1485
- #: templates/forms/affiliation.php:159
1486
- msgid "Unlimited commissions."
1487
- msgstr ""
1488
-
1489
- #: templates/forms/affiliation.php:161
1490
- msgid "%s minimum payout amount."
1491
- msgstr ""
1492
-
1493
- #: templates/forms/affiliation.php:162
1494
- msgid "Payouts are in USD and processed monthly via PayPal."
1495
- msgstr ""
1496
-
1497
- #: templates/forms/affiliation.php:163
1498
- msgid "As we reserve 30 days for potential refunds, we only pay commissions that are older than 30 days."
1499
- msgstr ""
1500
-
1501
- #: templates/forms/affiliation.php:166
1502
- msgid "Affiliate"
1503
- msgstr ""
1504
-
1505
- #: templates/forms/affiliation.php:169, templates/forms/resend-key.php:23
1506
- msgid "Email address"
1507
- msgstr ""
1508
-
1509
- #: templates/forms/affiliation.php:173
1510
- msgid "Full name"
1511
- msgstr ""
1512
-
1513
- #: templates/forms/affiliation.php:177
1514
- msgid "PayPal account email address"
1515
- msgstr ""
1516
-
1517
- #: templates/forms/affiliation.php:181
1518
- msgid "Where are you going to promote the %s?"
1519
- msgstr ""
1520
-
1521
- #: templates/forms/affiliation.php:183
1522
- msgid "Enter the domain of your website or other websites from where you plan to promote the %s."
1523
- msgstr ""
1524
-
1525
- #: templates/forms/affiliation.php:185
1526
- msgid "Add another domain"
1527
- msgstr ""
1528
-
1529
- #: templates/forms/affiliation.php:189
1530
- msgid "Extra Domains"
1531
- msgstr ""
1532
-
1533
- #: templates/forms/affiliation.php:190
1534
- msgid "Extra domains where you will be marketing the product from."
1535
- msgstr ""
1536
-
1537
- #: templates/forms/affiliation.php:200
1538
- msgid "Promotion methods"
1539
- msgstr ""
1540
-
1541
- #: templates/forms/affiliation.php:203
1542
- msgid "Social media (Facebook, Twitter, etc.)"
1543
- msgstr ""
1544
-
1545
- #: templates/forms/affiliation.php:207
1546
- msgid "Mobile apps"
1547
- msgstr ""
1548
-
1549
- #: templates/forms/affiliation.php:211
1550
- msgid "Website, email, and social media statistics (optional)"
1551
- msgstr ""
1552
-
1553
- #: templates/forms/affiliation.php:214
1554
- msgid "Please feel free to provide any relevant website or social media statistics, e.g. monthly unique site visits, number of email subscribers, followers, etc. (we will keep this information confidential)."
1555
- msgstr ""
1556
-
1557
- #: templates/forms/affiliation.php:218
1558
- msgid "How will you promote us?"
1559
- msgstr ""
1560
-
1561
- #: templates/forms/affiliation.php:221
1562
- msgid "Please provide details on how you intend to promote %s (please be as specific as possible)."
1563
- msgstr ""
1564
-
1565
- #: templates/forms/affiliation.php:233, templates/forms/resend-key.php:22
1566
- msgid "Cancel"
1567
- msgstr ""
1568
-
1569
- #: templates/forms/affiliation.php:235
1570
- msgid "Become an affiliate"
1571
- msgstr ""
1572
-
1573
- #: templates/forms/data-debug-mode.php:25
1574
- msgid "Please enter the license key to enable the debug mode:"
1575
- msgstr ""
1576
-
1577
- #: templates/forms/data-debug-mode.php:27
1578
- msgid "To enter the debug mode, please enter the secret key of the license owner (UserID = %d), which you can find in your \"My Profile\" section of your User Dashboard:"
1579
- msgstr ""
1580
-
1581
- #: templates/forms/data-debug-mode.php:32
1582
- msgid "Submit"
1583
- msgstr ""
1584
-
1585
- #: templates/forms/data-debug-mode.php:36
1586
- msgid "User key"
1587
- msgstr ""
1588
-
1589
- #: templates/forms/data-debug-mode.php:162
1590
- msgid "An unknown error has occurred."
1591
- msgstr ""
1592
-
1593
- #: templates/forms/email-address-update.php:32
1594
- msgid "Email address update"
1595
- msgstr ""
1596
-
1597
- #: templates/forms/email-address-update.php:33, templates/forms/user-change.php:81
1598
- msgctxt "close window"
1599
- msgid "Dismiss"
1600
- msgstr ""
1601
-
1602
- #: templates/forms/email-address-update.php:38
1603
- msgid "Enter the new email address"
1604
- msgstr ""
1605
-
1606
- #: templates/forms/email-address-update.php:42
1607
- msgid "Are both %s and %s your email addresses?"
1608
- msgstr ""
1609
-
1610
- #: templates/forms/email-address-update.php:50
1611
- msgid "Yes - both addresses are mine"
1612
- msgstr ""
1613
-
1614
- #: templates/forms/email-address-update.php:57
1615
- msgid "%s is my client's email address"
1616
- msgstr ""
1617
-
1618
- #: templates/forms/email-address-update.php:66
1619
- msgid "%s is my email address"
1620
- msgstr ""
1621
-
1622
- #: templates/forms/email-address-update.php:75
1623
- msgid "Would you like to merge %s into %s?"
1624
- msgstr ""
1625
-
1626
- #: templates/forms/email-address-update.php:84
1627
- msgid "Yes - move all my data and assets from %s to %s"
1628
- msgstr ""
1629
-
1630
- #: templates/forms/email-address-update.php:94
1631
- msgid "No - only move this site's data to %s"
1632
- msgstr ""
1633
-
1634
- #: templates/forms/email-address-update.php:292, templates/forms/email-address-update.php:298
1635
- msgid "Update"
1636
- msgstr ""
1637
-
1638
- #: templates/forms/license-activation.php:23
1639
- msgid "Please enter the license key that you received in the email right after the purchase:"
1640
- msgstr ""
1641
-
1642
- #: templates/forms/license-activation.php:28
1643
- msgid "Update License"
1644
- msgstr ""
1645
-
1646
- #: templates/forms/license-activation.php:41
1647
- msgid "The %1$s will be periodically sending data to %2$s to check for security and feature updates, and verify the validity of your license."
1648
- msgstr ""
1649
-
1650
- #: templates/forms/license-activation.php:211
1651
- msgid "Associate with the license owner's account."
1652
- msgstr ""
1653
-
1654
- #: templates/forms/optout.php:30
1655
- msgctxt "verb"
1656
- msgid "Opt Out"
1657
- msgstr ""
1658
-
1659
- #: templates/forms/optout.php:31
1660
- msgctxt "verb"
1661
- msgid "Opt In"
1662
- msgstr ""
1663
-
1664
- #: templates/forms/optout.php:41
1665
- msgid "We appreciate your help in making the %s better by letting us track some usage data."
1666
- msgstr ""
1667
-
1668
- #: templates/forms/optout.php:44
1669
- msgid "Usage tracking is done in the name of making %s better. Making a better user experience, prioritizing new features, and more good things. We'd really appreciate if you'll reconsider letting us continue with the tracking."
1670
- msgstr ""
1671
-
1672
- #: templates/forms/optout.php:45
1673
- msgid "On second thought - I want to continue helping"
1674
- msgstr ""
1675
-
1676
- #: templates/forms/optout.php:34
1677
- msgid "Connectivity to the licensing engine was successfully re-established. Automatic security & feature updates are now available through the WP Admin Dashboard."
1678
- msgstr ""
1679
-
1680
- #: templates/forms/optout.php:36
1681
- msgid "Warning: Opting out will block automatic updates"
1682
- msgstr ""
1683
-
1684
- #: templates/forms/optout.php:37
1685
- msgid "Ongoing connectivity with the licensing engine is essential for receiving automatic security & feature updates of the paid product. To receive these updates, data like your license key, %1$s version, and WordPress version, is periodically sent to the server to check for updates. By opting out, you understand that your site won't receive automatic updates for %2$s from within the WP Admin Dashboard. This can put your site at risk, and we highly recommend to keep this connection active. If you do choose to opt-out, you'll need to check for %1$s updates and install them manually."
1686
- msgstr ""
1687
-
1688
- #: templates/forms/optout.php:39
1689
- msgid "I'd like to keep automatic updates"
1690
- msgstr ""
1691
-
1692
- #: templates/forms/optout.php:49
1693
- msgid "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s."
1694
- msgstr ""
1695
-
1696
- #: templates/forms/optout.php:74
1697
- msgid "Plugins & themes tracking"
1698
- msgstr ""
1699
-
1700
- #: templates/forms/optout.php:261
1701
- msgid "Saved"
1702
- msgstr ""
1703
-
1704
- #: templates/forms/premium-versions-upgrade-handler.php:40
1705
- msgid "There is a new version of %s available."
1706
- msgstr ""
1707
-
1708
- #: templates/forms/premium-versions-upgrade-handler.php:41
1709
- msgid " %s to access version %s security & feature updates, and support."
1710
- msgstr ""
1711
-
1712
- #: templates/forms/premium-versions-upgrade-handler.php:46
1713
- msgid "Renew your license now"
1714
- msgstr ""
1715
-
1716
- #: templates/forms/premium-versions-upgrade-handler.php:47
1717
- msgid "Buy a license now"
1718
- msgstr ""
1719
-
1720
- #: templates/forms/premium-versions-upgrade-handler.php:54
1721
- msgid "New Version Available"
1722
- msgstr ""
1723
-
1724
- #: templates/forms/premium-versions-upgrade-handler.php:75
1725
- msgctxt "close a window"
1726
- msgid "Dismiss"
1727
- msgstr ""
1728
-
1729
- #: templates/forms/resend-key.php:21
1730
- msgid "Send License Key"
1731
- msgstr ""
1732
-
1733
- #: templates/forms/resend-key.php:24, templates/forms/user-change.php:29
1734
- msgid "Other"
1735
- msgstr ""
1736
-
1737
- #: templates/forms/resend-key.php:58
1738
- msgid "Enter the email address you've used during the purchase and we will resend you the license key."
1739
- msgstr ""
1740
-
1741
- #: templates/forms/resend-key.php:59
1742
- msgid "Enter the email address you've used for the upgrade below and we will resend you the license key."
1743
- msgstr ""
1744
-
1745
- #: templates/forms/subscription-cancellation.php:37
1746
- msgid "Deactivating or uninstalling the %s will automatically disable the license, which you'll be able to use on another site."
1747
- msgstr ""
1748
-
1749
- #: templates/forms/subscription-cancellation.php:47
1750
- msgid "In case you are NOT planning on using this %s on this site (or any other site) - would you like to cancel the %s as well?"
1751
- msgstr ""
1752
-
1753
- #: templates/forms/subscription-cancellation.php:57
1754
- msgid "Cancel %s - I no longer need any security & feature updates, nor support for %s because I'm not planning to use the %s on this, or any other site."
1755
- msgstr ""
1756
-
1757
- #: templates/forms/subscription-cancellation.php:68
1758
- msgid "Don't cancel %s - I'm still interested in getting security & feature updates, as well as be able to contact support."
1759
- msgstr ""
1760
-
1761
- #: templates/forms/subscription-cancellation.php:103
1762
- msgid "Once your license expires you will no longer be able to use the %s, unless you activate it again with a valid premium license."
1763
- msgstr ""
1764
-
1765
- #: templates/forms/subscription-cancellation.php:136
1766
- msgid "Cancel %s?"
1767
- msgstr ""
1768
-
1769
- #: templates/forms/subscription-cancellation.php:143
1770
- msgid "Proceed"
1771
- msgstr ""
1772
-
1773
- #: templates/forms/subscription-cancellation.php:191, templates/forms/deactivation/form.php:216
1774
- msgid "Cancel %s & Proceed"
1775
- msgstr ""
1776
-
1777
- #. translators: %1$s: Number of trial days; %2$s: Plan name;
1778
- #: templates/forms/trial-start.php:22
1779
- msgid "You are 1-click away from starting your %1$s-day free trial of the %2$s plan."
1780
- msgstr ""
1781
-
1782
- #. translators: %s: Link to freemius.com
1783
- #: templates/forms/trial-start.php:28
1784
- msgid "For compliance with the WordPress.org guidelines, before we start the trial we ask that you opt in with your user and non-sensitive site information, allowing the %s to periodically send data to %s to check for version updates and to validate your trial."
1785
- msgstr ""
1786
-
1787
- #: templates/forms/trial-start.php:53
1788
- msgctxt "call to action"
1789
- msgid "Start free trial"
1790
- msgstr ""
1791
-
1792
- #: templates/forms/user-change.php:26
1793
- msgid "By changing the user, you agree to transfer the account ownership to:"
1794
- msgstr ""
1795
-
1796
- #: templates/forms/user-change.php:28
1797
- msgid "I Agree - Change User"
1798
- msgstr ""
1799
-
1800
- #: templates/forms/user-change.php:30
1801
- msgid "Enter email address"
1802
- msgstr ""
1803
-
1804
- #: templates/partials/network-activation.php:36
1805
- msgid "Activate license on all pending sites."
1806
- msgstr ""
1807
-
1808
- #: templates/partials/network-activation.php:37
1809
- msgid "Apply on all pending sites."
1810
- msgstr ""
1811
-
1812
- #: templates/partials/network-activation.php:32
1813
- msgid "Activate license on all sites in the network."
1814
- msgstr ""
1815
-
1816
- #: templates/partials/network-activation.php:33
1817
- msgid "Apply on all sites in the network."
1818
- msgstr ""
1819
-
1820
- #: templates/partials/network-activation.php:45, templates/partials/network-activation.php:79
1821
- msgid "allow"
1822
- msgstr ""
1823
-
1824
- #: templates/partials/network-activation.php:48, templates/partials/network-activation.php:82
1825
- msgid "delegate"
1826
- msgstr ""
1827
-
1828
- #: templates/partials/network-activation.php:52, templates/partials/network-activation.php:86
1829
- msgid "skip"
1830
- msgstr ""
1831
-
1832
- #: templates/plugin-info/description.php:72, templates/plugin-info/screenshots.php:31
1833
- msgid "Click to view full-size screenshot %d"
1834
- msgstr ""
1835
-
1836
- #: templates/plugin-info/features.php:43
1837
- msgid "Support"
1838
- msgstr ""
1839
-
1840
- #: templates/plugin-info/features.php:56
1841
- msgid "Unlimited Updates"
1842
- msgstr ""
1843
-
1844
- #: templates/account/partials/activate-license-button.php:46
1845
- msgid "Localhost"
1846
- msgstr ""
1847
-
1848
- #: templates/account/partials/activate-license-button.php:50
1849
- msgctxt "as 5 licenses left"
1850
- msgid "%s left"
1851
- msgstr ""
1852
-
1853
- #: templates/account/partials/activate-license-button.php:51
1854
- msgid "Last license"
1855
- msgstr ""
1856
-
1857
- #. translators: %1$s: Either 'Downgrading your plan' or 'Cancelling the subscription'
1858
- #: templates/account/partials/addon.php:34
1859
- msgid "%1$s will immediately stop all future recurring payments and your %s plan license will expire in %s."
1860
- msgstr ""
1861
-
1862
- #: templates/account/partials/addon.php:200
1863
- msgid "No expiration"
1864
- msgstr ""
1865
-
1866
- #: templates/account/partials/addon.php:190
1867
- msgid "Cancelled"
1868
- msgstr ""
1869
-
1870
- #: templates/account/partials/site.php:49, templates/account/partials/site.php:169
1871
- msgid "Opt In"
1872
- msgstr ""
1873
-
1874
- #: templates/account/partials/site.php:169
1875
- msgid "Opt Out"
1876
- msgstr ""
1877
-
1878
- #: templates/account/partials/site.php:189
1879
- msgid "Owner Name"
1880
- msgstr ""
1881
-
1882
- #: templates/account/partials/site.php:201
1883
- msgid "Owner Email"
1884
- msgstr ""
1885
-
1886
- #: templates/account/partials/site.php:213
1887
- msgid "Owner ID"
1888
- msgstr ""
1889
-
1890
- #: templates/account/partials/site.php:286
1891
- msgid "Subscription"
1892
- msgstr ""
1893
-
1894
- #: templates/forms/deactivation/contact.php:19
1895
- msgid "Sorry for the inconvenience and we are here to help if you give us a chance."
1896
- msgstr ""
1897
-
1898
- #: templates/forms/deactivation/contact.php:22
1899
- msgid "Contact Support"
1900
- msgstr ""
1901
-
1902
- #: templates/forms/deactivation/form.php:65
1903
- msgid "Anonymous feedback"
1904
- msgstr ""
1905
-
1906
- #: templates/forms/deactivation/form.php:71
1907
- msgid "hour"
1908
- msgstr ""
1909
-
1910
- #: templates/forms/deactivation/form.php:76
1911
- msgid "hours"
1912
- msgstr ""
1913
-
1914
- #: templates/forms/deactivation/form.php:81, templates/forms/deactivation/form.php:86
1915
- msgid "days"
1916
- msgstr ""
1917
-
1918
- #: templates/forms/deactivation/form.php:106
1919
- msgid "Deactivate"
1920
- msgstr ""
1921
-
1922
- #: templates/forms/deactivation/form.php:108
1923
- msgid "Activate %s"
1924
- msgstr ""
1925
-
1926
- #: templates/forms/deactivation/form.php:111
1927
- msgid "Submit & %s"
1928
- msgstr ""
1929
-
1930
- #: templates/forms/deactivation/form.php:130
1931
- msgid "Quick Feedback"
1932
- msgstr ""
1933
-
1934
- #: templates/forms/deactivation/form.php:134
1935
- msgid "If you have a moment, please let us know why you are %s"
1936
- msgstr ""
1937
-
1938
- #: templates/forms/deactivation/form.php:134
1939
- msgid "deactivating"
1940
- msgstr ""
1941
-
1942
- #: templates/forms/deactivation/form.php:134
1943
- msgid "switching"
1944
- msgstr ""
1945
-
1946
- #: templates/forms/deactivation/form.php:448
1947
- msgid "Kindly tell us the reason so we can improve."
1948
- msgstr ""
1949
-
1950
- #: templates/forms/deactivation/form.php:478
1951
- msgid "Snooze & %s"
1952
- msgstr ""
1953
-
1954
- #: templates/forms/deactivation/form.php:638
1955
- msgid "Yes - %s"
1956
- msgstr ""
1957
-
1958
- #: templates/forms/deactivation/form.php:645
1959
- msgid "Skip & %s"
1960
- msgstr ""
1961
-
1962
- #: templates/forms/deactivation/retry-skip.php:21
1963
- msgid "Click here to use the plugin anonymously"
1964
- msgstr ""
1965
-
1966
- #: templates/forms/deactivation/retry-skip.php:23
1967
- msgid "You might have missed it, but you don't have to share any data and can just %s the opt-in."
1968
- msgstr ""
1
+ # Copyright (C) 2022 freemius
2
+ # This file is distributed under the same license as the freemius package.
3
+ msgid ""
4
+ msgstr ""
5
+ "Project-Id-Version: freemius\n"
6
+ "MIME-Version: 1.0\n"
7
+ "Content-Type: text/plain; charset=UTF-8\n"
8
+ "Content-Transfer-Encoding: 8bit\n"
9
+ "Language-Team: Freemius Team <admin@freemius.com>\n"
10
+ "Last-Translator: Vova Feldman <vova@freemius.com>\n"
11
+ "POT-Creation-Date: 2022-07-06 12:49+0000\n"
12
+ "Report-Msgid-Bugs-To: https://github.com/Freemius/wordpress-sdk/issues\n"
13
+ "X-Poedit-Basepath: ..\n"
14
+ "X-Poedit-KeywordsList: get_text_inline;fs_text_inline;fs_echo_inline;fs_esc_js_inline;fs_esc_attr_inline;fs_esc_attr_echo_inline;fs_esc_html_inline;fs_esc_html_echo_inline;get_text_x_inline:1,2c;fs_text_x_inline:1,2c;fs_echo_x_inline:1,2c;fs_esc_attr_x_inline:1,2c;fs_esc_js_x_inline:1,2c;fs_esc_js_echo_x_inline:1,2c;fs_esc_html_x_inline:1,2c;fs_esc_html_echo_x_inline:1,2c\n"
15
+ "X-Poedit-SearchPath-0: .\n"
16
+ "X-Poedit-SearchPathExcluded-0: *.js\n"
17
+ "X-Poedit-SourceCharset: UTF-8\n"
18
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
19
+
20
+ #: includes/class-freemius.php:1932, templates/account.php:941
21
+ msgid "An update to a Beta version will replace your installed version of %s with the latest Beta release - use with caution, and not on production sites. You have been warned."
22
+ msgstr ""
23
+
24
+ #: includes/class-freemius.php:1939
25
+ msgid "Would you like to proceed with the update?"
26
+ msgstr ""
27
+
28
+ #: includes/class-freemius.php:3751, templates/debug.php:20
29
+ msgid "Freemius Debug"
30
+ msgstr ""
31
+
32
+ #: includes/class-freemius.php:13791
33
+ msgid "An unknown error has occurred while trying to toggle the license's white-label mode."
34
+ msgstr ""
35
+
36
+ #: includes/class-freemius.php:13869
37
+ msgid "An unknown error has occurred while trying to set the user's beta mode."
38
+ msgstr ""
39
+
40
+ #: includes/class-freemius.php:13942
41
+ msgid "Invalid new user ID or email address."
42
+ msgstr ""
43
+
44
+ #: includes/class-freemius.php:23326
45
+ msgid "Bundle"
46
+ msgstr ""
47
+
48
+ #: includes/class-fs-plugin-updater.php:206, templates/forms/premium-versions-upgrade-handler.php:57
49
+ msgid "Renew license"
50
+ msgstr ""
51
+
52
+ #: includes/class-fs-plugin-updater.php:211, templates/forms/premium-versions-upgrade-handler.php:58
53
+ msgid "Buy license"
54
+ msgstr ""
55
+
56
+ #: includes/class-fs-plugin-updater.php:364, includes/class-fs-plugin-updater.php:331
57
+ msgid "There is a %s of %s available."
58
+ msgstr ""
59
+
60
+ #: includes/class-fs-plugin-updater.php:369, includes/class-fs-plugin-updater.php:333
61
+ msgid "new Beta version"
62
+ msgstr ""
63
+
64
+ #: includes/class-fs-plugin-updater.php:370, includes/class-fs-plugin-updater.php:334
65
+ msgid "new version"
66
+ msgstr ""
67
+
68
+ #: includes/class-fs-plugin-updater.php:393
69
+ msgid "Important Upgrade Notice:"
70
+ msgstr ""
71
+
72
+ #: includes/class-fs-plugin-updater.php:1551
73
+ msgid "The remote plugin package does not contain a folder with the desired slug and renaming did not work."
74
+ msgstr ""
75
+
76
+ #: includes/fs-plugin-info-dialog.php:541
77
+ msgid "Purchase More"
78
+ msgstr ""
79
+
80
+ #: includes/fs-plugin-info-dialog.php:542, templates/account/partials/addon.php:390
81
+ msgctxt "verb"
82
+ msgid "Purchase"
83
+ msgstr ""
84
+
85
+ #. translators: %s: N-days trial
86
+ #: includes/fs-plugin-info-dialog.php:546
87
+ msgid "Start my free %s"
88
+ msgstr ""
89
+
90
+ #: includes/fs-plugin-info-dialog.php:754
91
+ msgid "Install Free Version Now"
92
+ msgstr ""
93
+
94
+ #: includes/fs-plugin-info-dialog.php:755, templates/add-ons.php:323, templates/auto-installation.php:111, templates/account/partials/addon.php:423, templates/account/partials/addon.php:370
95
+ msgid "Install Now"
96
+ msgstr ""
97
+
98
+ #: includes/fs-plugin-info-dialog.php:744
99
+ msgid "Install Free Version Update Now"
100
+ msgstr ""
101
+
102
+ #: includes/fs-plugin-info-dialog.php:745, templates/account.php:650
103
+ msgid "Install Update Now"
104
+ msgstr ""
105
+
106
+ #: includes/fs-plugin-info-dialog.php:771
107
+ msgctxt "as download latest version"
108
+ msgid "Download Latest Free Version"
109
+ msgstr ""
110
+
111
+ #: includes/fs-plugin-info-dialog.php:772, templates/account.php:109, templates/add-ons.php:37, templates/account/partials/addon.php:30
112
+ msgctxt "as download latest version"
113
+ msgid "Download Latest"
114
+ msgstr ""
115
+
116
+ #: includes/fs-plugin-info-dialog.php:787, templates/add-ons.php:329, templates/account/partials/addon.php:417, templates/account/partials/addon.php:361
117
+ msgid "Activate this add-on"
118
+ msgstr ""
119
+
120
+ #: includes/fs-plugin-info-dialog.php:789, templates/connect.php:483
121
+ msgid "Activate Free Version"
122
+ msgstr ""
123
+
124
+ #: includes/fs-plugin-info-dialog.php:790, templates/account.php:133, templates/add-ons.php:330, templates/account/partials/addon.php:53
125
+ msgid "Activate"
126
+ msgstr ""
127
+
128
+ #: includes/fs-plugin-info-dialog.php:1002
129
+ msgctxt "Plugin installer section title"
130
+ msgid "Description"
131
+ msgstr ""
132
+
133
+ #: includes/fs-plugin-info-dialog.php:1003
134
+ msgctxt "Plugin installer section title"
135
+ msgid "Installation"
136
+ msgstr ""
137
+
138
+ #: includes/fs-plugin-info-dialog.php:1004
139
+ msgctxt "Plugin installer section title"
140
+ msgid "FAQ"
141
+ msgstr ""
142
+
143
+ #: includes/fs-plugin-info-dialog.php:1005, templates/plugin-info/description.php:55
144
+ msgid "Screenshots"
145
+ msgstr ""
146
+
147
+ #: includes/fs-plugin-info-dialog.php:1006
148
+ msgctxt "Plugin installer section title"
149
+ msgid "Changelog"
150
+ msgstr ""
151
+
152
+ #: includes/fs-plugin-info-dialog.php:1007
153
+ msgctxt "Plugin installer section title"
154
+ msgid "Reviews"
155
+ msgstr ""
156
+
157
+ #: includes/fs-plugin-info-dialog.php:1008
158
+ msgctxt "Plugin installer section title"
159
+ msgid "Other Notes"
160
+ msgstr ""
161
+
162
+ #: includes/fs-plugin-info-dialog.php:1023
163
+ msgctxt "Plugin installer section title"
164
+ msgid "Features & Pricing"
165
+ msgstr ""
166
+
167
+ #: includes/fs-plugin-info-dialog.php:1033
168
+ msgid "Plugin Install"
169
+ msgstr ""
170
+
171
+ #: includes/fs-plugin-info-dialog.php:1105
172
+ msgctxt "e.g. Professional Plan"
173
+ msgid "%s Plan"
174
+ msgstr ""
175
+
176
+ #: includes/fs-plugin-info-dialog.php:1131
177
+ msgctxt "e.g. the best product"
178
+ msgid "Best"
179
+ msgstr ""
180
+
181
+ #: includes/fs-plugin-info-dialog.php:1137, includes/fs-plugin-info-dialog.php:1157
182
+ msgctxt "as every month"
183
+ msgid "Monthly"
184
+ msgstr ""
185
+
186
+ #: includes/fs-plugin-info-dialog.php:1140
187
+ msgctxt "as once a year"
188
+ msgid "Annual"
189
+ msgstr ""
190
+
191
+ #: includes/fs-plugin-info-dialog.php:1143
192
+ msgid "Lifetime"
193
+ msgstr ""
194
+
195
+ #: includes/fs-plugin-info-dialog.php:1157, includes/fs-plugin-info-dialog.php:1159, includes/fs-plugin-info-dialog.php:1161
196
+ msgctxt "e.g. billed monthly"
197
+ msgid "Billed %s"
198
+ msgstr ""
199
+
200
+ #: includes/fs-plugin-info-dialog.php:1159
201
+ msgctxt "as once a year"
202
+ msgid "Annually"
203
+ msgstr ""
204
+
205
+ #: includes/fs-plugin-info-dialog.php:1161
206
+ msgctxt "as once a year"
207
+ msgid "Once"
208
+ msgstr ""
209
+
210
+ #: includes/fs-plugin-info-dialog.php:1167
211
+ msgid "Single Site License"
212
+ msgstr ""
213
+
214
+ #: includes/fs-plugin-info-dialog.php:1169
215
+ msgid "Unlimited Licenses"
216
+ msgstr ""
217
+
218
+ #: includes/fs-plugin-info-dialog.php:1171
219
+ msgid "Up to %s Sites"
220
+ msgstr ""
221
+
222
+ #: includes/fs-plugin-info-dialog.php:1181, templates/plugin-info/features.php:82
223
+ msgctxt "as monthly period"
224
+ msgid "mo"
225
+ msgstr ""
226
+
227
+ #: includes/fs-plugin-info-dialog.php:1188, templates/plugin-info/features.php:80
228
+ msgctxt "as annual period"
229
+ msgid "year"
230
+ msgstr ""
231
+
232
+ #: includes/fs-plugin-info-dialog.php:1242
233
+ msgctxt "noun"
234
+ msgid "Price"
235
+ msgstr ""
236
+
237
+ #. translators: %s: Discount (e.g. discount of $5 or 10%)
238
+ #: includes/fs-plugin-info-dialog.php:1290
239
+ msgid "Save %s"
240
+ msgstr ""
241
+
242
+ #: includes/fs-plugin-info-dialog.php:1300
243
+ msgid "No commitment for %s - cancel anytime"
244
+ msgstr ""
245
+
246
+ #: includes/fs-plugin-info-dialog.php:1303
247
+ msgid "After your free %s, pay as little as %s"
248
+ msgstr ""
249
+
250
+ #: includes/fs-plugin-info-dialog.php:1314
251
+ msgid "Details"
252
+ msgstr ""
253
+
254
+ #: includes/fs-plugin-info-dialog.php:1318, templates/account.php:120, templates/debug.php:215, templates/debug.php:252, templates/debug.php:466, templates/account/partials/addon.php:41
255
+ msgctxt "product version"
256
+ msgid "Version"
257
+ msgstr ""
258
+
259
+ #: includes/fs-plugin-info-dialog.php:1325
260
+ msgctxt "as the plugin author"
261
+ msgid "Author"
262
+ msgstr ""
263
+
264
+ #: includes/fs-plugin-info-dialog.php:1332
265
+ msgid "Last Updated"
266
+ msgstr ""
267
+
268
+ #. translators: %s: time period (e.g. "2 hours" ago)
269
+ #: includes/fs-plugin-info-dialog.php:1337, templates/account.php:536
270
+ msgctxt "x-ago"
271
+ msgid "%s ago"
272
+ msgstr ""
273
+
274
+ #: includes/fs-plugin-info-dialog.php:1346
275
+ msgid "Requires WordPress Version"
276
+ msgstr ""
277
+
278
+ #: includes/fs-plugin-info-dialog.php:1347
279
+ msgid "%s or higher"
280
+ msgstr ""
281
+
282
+ #: includes/fs-plugin-info-dialog.php:1354
283
+ msgid "Compatible up to"
284
+ msgstr ""
285
+
286
+ #: includes/fs-plugin-info-dialog.php:1362
287
+ msgid "Downloaded"
288
+ msgstr ""
289
+
290
+ #. translators: %s: 1 or One (Number of times downloaded)
291
+ #: includes/fs-plugin-info-dialog.php:1366
292
+ msgid "%s time"
293
+ msgstr ""
294
+
295
+ #. translators: %s: Number of times downloaded
296
+ #: includes/fs-plugin-info-dialog.php:1368
297
+ msgid "%s times"
298
+ msgstr ""
299
+
300
+ #: includes/fs-plugin-info-dialog.php:1379
301
+ msgid "WordPress.org Plugin Page"
302
+ msgstr ""
303
+
304
+ #: includes/fs-plugin-info-dialog.php:1388
305
+ msgid "Plugin Homepage"
306
+ msgstr ""
307
+
308
+ #: includes/fs-plugin-info-dialog.php:1397, includes/fs-plugin-info-dialog.php:1481
309
+ msgid "Donate to this plugin"
310
+ msgstr ""
311
+
312
+ #: includes/fs-plugin-info-dialog.php:1404
313
+ msgid "Average Rating"
314
+ msgstr ""
315
+
316
+ #: includes/fs-plugin-info-dialog.php:1411
317
+ msgid "based on %s"
318
+ msgstr ""
319
+
320
+ #. translators: %s: 1 or One
321
+ #: includes/fs-plugin-info-dialog.php:1415
322
+ msgid "%s rating"
323
+ msgstr ""
324
+
325
+ #. translators: %s: Number larger than 1
326
+ #: includes/fs-plugin-info-dialog.php:1417
327
+ msgid "%s ratings"
328
+ msgstr ""
329
+
330
+ #. translators: %s: 1 or One
331
+ #: includes/fs-plugin-info-dialog.php:1432
332
+ msgid "%s star"
333
+ msgstr ""
334
+
335
+ #. translators: %s: Number larger than 1
336
+ #: includes/fs-plugin-info-dialog.php:1434
337
+ msgid "%s stars"
338
+ msgstr ""
339
+
340
+ #. translators: %s: # of stars (e.g. 5 stars)
341
+ #: includes/fs-plugin-info-dialog.php:1446
342
+ msgid "Click to see reviews that provided a rating of %s"
343
+ msgstr ""
344
+
345
+ #: includes/fs-plugin-info-dialog.php:1459
346
+ msgid "Contributors"
347
+ msgstr ""
348
+
349
+ #: includes/fs-plugin-info-dialog.php:1491, includes/fs-plugin-info-dialog.php:1489
350
+ msgid "Warning"
351
+ msgstr ""
352
+
353
+ #: includes/fs-plugin-info-dialog.php:1491
354
+ msgid "This plugin has not been marked as compatible with your version of WordPress."
355
+ msgstr ""
356
+
357
+ #: includes/fs-plugin-info-dialog.php:1489
358
+ msgid "This plugin has not been tested with your current version of WordPress."
359
+ msgstr ""
360
+
361
+ #: includes/fs-plugin-info-dialog.php:1510
362
+ msgid "Paid add-on must be deployed to Freemius."
363
+ msgstr ""
364
+
365
+ #: includes/fs-plugin-info-dialog.php:1511
366
+ msgid "Add-on must be deployed to WordPress.org or Freemius."
367
+ msgstr ""
368
+
369
+ #: includes/fs-plugin-info-dialog.php:1540
370
+ msgid "Latest Version Installed"
371
+ msgstr ""
372
+
373
+ #: includes/fs-plugin-info-dialog.php:1541
374
+ msgid "Latest Free Version Installed"
375
+ msgstr ""
376
+
377
+ #: includes/fs-plugin-info-dialog.php:1532
378
+ msgid "Newer Version (%s) Installed"
379
+ msgstr ""
380
+
381
+ #: includes/fs-plugin-info-dialog.php:1533
382
+ msgid "Newer Free Version (%s) Installed"
383
+ msgstr ""
384
+
385
+ #: templates/account.php:110, templates/forms/subscription-cancellation.php:96, templates/account/partials/addon.php:31, templates/account/partials/site.php:311
386
+ msgid "Downgrading your plan"
387
+ msgstr ""
388
+
389
+ #: templates/account.php:111, templates/forms/subscription-cancellation.php:97, templates/account/partials/addon.php:32, templates/account/partials/site.php:312
390
+ msgid "Cancelling the subscription"
391
+ msgstr ""
392
+
393
+ #. translators: %1$s: Either 'Downgrading your plan' or 'Cancelling the subscription'
394
+ #: templates/account.php:113, templates/forms/subscription-cancellation.php:99, templates/account/partials/site.php:314
395
+ msgid "%1$s will immediately stop all future recurring payments and your %2$s plan license will expire in %3$s."
396
+ msgstr ""
397
+
398
+ #: templates/account.php:114, templates/forms/subscription-cancellation.php:100, templates/account/partials/addon.php:35, templates/account/partials/site.php:315
399
+ msgid "Please note that we will not be able to grandfather outdated pricing for renewals/new subscriptions after a cancellation. If you choose to renew the subscription manually in the future, after a price increase, which typically occurs once a year, you will be charged the updated price."
400
+ msgstr ""
401
+
402
+ #: templates/account.php:115, templates/forms/subscription-cancellation.php:106, templates/account/partials/addon.php:36
403
+ msgid "Cancelling the trial will immediately block access to all premium features. Are you sure?"
404
+ msgstr ""
405
+
406
+ #: templates/account.php:116, templates/forms/subscription-cancellation.php:101, templates/account/partials/addon.php:37, templates/account/partials/site.php:316
407
+ msgid "You can still enjoy all %s features but you will not have access to %s security & feature updates, nor support."
408
+ msgstr ""
409
+
410
+ #: templates/account.php:117, templates/forms/subscription-cancellation.php:102, templates/account/partials/addon.php:38, templates/account/partials/site.php:317
411
+ msgid "Once your license expires you can still use the Free version but you will NOT have access to the %s features."
412
+ msgstr ""
413
+
414
+ #. translators: %s: Plan title (e.g. "Professional")
415
+ #: templates/account.php:119, templates/account/partials/activate-license-button.php:31, templates/account/partials/addon.php:40
416
+ msgid "Activate %s Plan"
417
+ msgstr ""
418
+
419
+ #. translators: %s: Time period (e.g. Auto renews in "2 months")
420
+ #: templates/account.php:122, templates/account/partials/addon.php:43, templates/account/partials/site.php:291
421
+ msgid "Auto renews in %s"
422
+ msgstr ""
423
+
424
+ #. translators: %s: Time period (e.g. Expires in "2 months")
425
+ #: templates/account.php:124, templates/account/partials/addon.php:45, templates/account/partials/site.php:293
426
+ msgid "Expires in %s"
427
+ msgstr ""
428
+
429
+ #: templates/account.php:125
430
+ msgctxt "as synchronize license"
431
+ msgid "Sync License"
432
+ msgstr ""
433
+
434
+ #: templates/account.php:126, templates/account/partials/addon.php:46
435
+ msgid "Cancel Trial"
436
+ msgstr ""
437
+
438
+ #: templates/account.php:127, templates/account/partials/addon.php:47
439
+ msgid "Change Plan"
440
+ msgstr ""
441
+
442
+ #: templates/account.php:128, templates/account/partials/addon.php:48
443
+ msgctxt "verb"
444
+ msgid "Upgrade"
445
+ msgstr ""
446
+
447
+ #: templates/account.php:129, templates/account/partials/addon.php:49
448
+ msgid "Add-Ons"
449
+ msgstr ""
450
+
451
+ #: templates/account.php:130, templates/account/partials/addon.php:50, templates/account/partials/site.php:318
452
+ msgctxt "verb"
453
+ msgid "Downgrade"
454
+ msgstr ""
455
+
456
+ #: templates/account.php:131, templates/add-ons.php:250, templates/account/partials/addon.php:51
457
+ msgctxt "trial period"
458
+ msgid "Trial"
459
+ msgstr ""
460
+
461
+ #: templates/account.php:132, templates/add-ons.php:246, templates/plugin-info/features.php:72, templates/account/partials/addon.php:52, templates/account/partials/site.php:33
462
+ msgid "Free"
463
+ msgstr ""
464
+
465
+ #: templates/account.php:134, templates/debug.php:385, templates/account/partials/addon.php:54
466
+ msgctxt "as product pricing plan"
467
+ msgid "Plan"
468
+ msgstr ""
469
+
470
+ #: templates/account.php:135
471
+ msgid "Bundle Plan"
472
+ msgstr ""
473
+
474
+ #: templates/account.php:251, templates/debug.php:338
475
+ msgid "Account"
476
+ msgstr ""
477
+
478
+ #: templates/account.php:259
479
+ msgid "Free Trial"
480
+ msgstr ""
481
+
482
+ #: templates/account.php:270
483
+ msgid "Account Details"
484
+ msgstr ""
485
+
486
+ #: templates/account.php:279
487
+ msgid "Stop Debug"
488
+ msgstr ""
489
+
490
+ #: templates/account.php:277, templates/forms/data-debug-mode.php:33
491
+ msgid "Start Debug"
492
+ msgstr ""
493
+
494
+ #: templates/account.php:286
495
+ msgid "Billing & Invoices"
496
+ msgstr ""
497
+
498
+ #: templates/account.php:299
499
+ msgid "Deletion is not temporary. Only delete if you no longer want to use this %s anymore. Are you sure you would like to continue with the deletion?"
500
+ msgstr ""
501
+
502
+ #: templates/account.php:297
503
+ msgid "Deleting the account will automatically deactivate your %s plan license so you can use it on other sites. If you want to terminate the recurring payments as well, click the \"Cancel\" button, and first \"Downgrade\" your account. Are you sure you would like to continue with the deletion?"
504
+ msgstr ""
505
+
506
+ #: templates/account.php:302
507
+ msgid "Delete Account"
508
+ msgstr ""
509
+
510
+ #: templates/account.php:314, templates/account/partials/addon.php:236, templates/account/partials/deactivate-license-button.php:35
511
+ msgid "Deactivate License"
512
+ msgstr ""
513
+
514
+ #: templates/account.php:337, templates/forms/subscription-cancellation.php:125
515
+ msgid "Are you sure you want to proceed?"
516
+ msgstr ""
517
+
518
+ #: templates/account.php:337, templates/account/partials/addon.php:260
519
+ msgid "Cancel Subscription"
520
+ msgstr ""
521
+
522
+ #: templates/account.php:366, templates/account/partials/addon.php:345
523
+ msgctxt "as synchronize"
524
+ msgid "Sync"
525
+ msgstr ""
526
+
527
+ #: templates/account.php:381, templates/debug.php:523
528
+ msgid "Name"
529
+ msgstr ""
530
+
531
+ #: templates/account.php:387, templates/debug.php:524
532
+ msgid "Email"
533
+ msgstr ""
534
+
535
+ #: templates/account.php:394, templates/debug.php:383, templates/debug.php:573
536
+ msgid "User ID"
537
+ msgstr ""
538
+
539
+ #: templates/account.php:403, templates/account.php:411, templates/debug.php:372, templates/debug.php:567
540
+ msgid "Plugin"
541
+ msgstr ""
542
+
543
+ #: templates/account.php:404, templates/account.php:412, templates/debug.php:372, templates/debug.php:567, templates/forms/deactivation/form.php:107
544
+ msgid "Theme"
545
+ msgstr ""
546
+
547
+ #: templates/account.php:412, templates/account.php:732, templates/account.php:783, templates/debug.php:250, templates/debug.php:377, templates/debug.php:463, templates/debug.php:522, templates/debug.php:571, templates/debug.php:650, templates/account/payments.php:35, templates/debug/logger.php:21
548
+ msgid "ID"
549
+ msgstr ""
550
+
551
+ #: templates/account.php:419
552
+ msgid "Site ID"
553
+ msgstr ""
554
+
555
+ #: templates/account.php:422
556
+ msgid "No ID"
557
+ msgstr ""
558
+
559
+ #: templates/account.php:427, templates/debug.php:257, templates/debug.php:386, templates/debug.php:467, templates/debug.php:526, templates/account/partials/site.php:227
560
+ msgid "Public Key"
561
+ msgstr ""
562
+
563
+ #: templates/account.php:433, templates/debug.php:387, templates/debug.php:468, templates/debug.php:527, templates/account/partials/site.php:239
564
+ msgid "Secret Key"
565
+ msgstr ""
566
+
567
+ #: templates/account.php:436
568
+ msgctxt "as secret encryption key missing"
569
+ msgid "No Secret"
570
+ msgstr ""
571
+
572
+ #: templates/account.php:490, templates/debug.php:579, templates/account/partials/site.php:260
573
+ msgid "License Key"
574
+ msgstr ""
575
+
576
+ #: templates/account.php:463, templates/account/partials/site.php:122, templates/account/partials/site.php:120
577
+ msgid "Trial"
578
+ msgstr ""
579
+
580
+ #: templates/account.php:521
581
+ msgid "Join the Beta program"
582
+ msgstr ""
583
+
584
+ #: templates/account.php:527
585
+ msgid "not verified"
586
+ msgstr ""
587
+
588
+ #: templates/account.php:598
589
+ msgid "Free version"
590
+ msgstr ""
591
+
592
+ #: templates/account.php:596
593
+ msgid "Premium version"
594
+ msgstr ""
595
+
596
+ #: templates/account.php:536, templates/account/partials/addon.php:195
597
+ msgid "Expired"
598
+ msgstr ""
599
+
600
+ #: templates/account.php:567, templates/account.php:719, templates/connect.php:198, templates/connect.php:486, includes/managers/class-fs-clone-manager.php:1123, templates/forms/license-activation.php:27, templates/account/partials/addon.php:326
601
+ msgid "Activate License"
602
+ msgstr ""
603
+
604
+ #: templates/account.php:610
605
+ msgid "Verify Email"
606
+ msgstr ""
607
+
608
+ #: templates/account.php:687, templates/forms/user-change.php:27
609
+ msgid "Change User"
610
+ msgstr ""
611
+
612
+ #: templates/account.php:674
613
+ msgid "What is your %s?"
614
+ msgstr ""
615
+
616
+ #: templates/account.php:682, templates/account/billing.php:21
617
+ msgctxt "verb"
618
+ msgid "Edit"
619
+ msgstr ""
620
+
621
+ #: templates/account.php:658, templates/account.php:921, templates/account/partials/site.php:248, templates/account/partials/site.php:270
622
+ msgctxt "verb"
623
+ msgid "Show"
624
+ msgstr ""
625
+
626
+ #: templates/account.php:661, templates/account.php:718, templates/account/partials/addon.php:327, templates/account/partials/site.php:271
627
+ msgid "Change License"
628
+ msgstr ""
629
+
630
+ #: templates/account.php:624
631
+ msgid "Download %s Version"
632
+ msgstr ""
633
+
634
+ #: templates/account.php:640
635
+ msgid "Download Paid Version"
636
+ msgstr ""
637
+
638
+ #: templates/account.php:711
639
+ msgid "Sites"
640
+ msgstr ""
641
+
642
+ #: templates/account.php:724
643
+ msgid "Search by address"
644
+ msgstr ""
645
+
646
+ #: templates/account.php:733, templates/debug.php:380
647
+ msgid "Address"
648
+ msgstr ""
649
+
650
+ #: templates/account.php:734
651
+ msgid "License"
652
+ msgstr ""
653
+
654
+ #: templates/account.php:735
655
+ msgid "Plan"
656
+ msgstr ""
657
+
658
+ #: templates/account.php:786
659
+ msgctxt "as software license"
660
+ msgid "License"
661
+ msgstr ""
662
+
663
+ #: templates/account.php:915
664
+ msgctxt "verb"
665
+ msgid "Hide"
666
+ msgstr ""
667
+
668
+ #: templates/account.php:937, templates/forms/data-debug-mode.php:31, templates/forms/deactivation/form.php:358, templates/forms/deactivation/form.php:389
669
+ msgid "Processing"
670
+ msgstr ""
671
+
672
+ #: templates/account.php:940
673
+ msgid "Get updates for bleeding edge Beta versions of %s."
674
+ msgstr ""
675
+
676
+ #: templates/account.php:998
677
+ msgid "Cancelling %s"
678
+ msgstr ""
679
+
680
+ #: templates/account.php:998, templates/account.php:1015, templates/forms/subscription-cancellation.php:27, templates/forms/deactivation/form.php:178
681
+ msgid "trial"
682
+ msgstr ""
683
+
684
+ #: templates/account.php:1013, templates/forms/deactivation/form.php:195
685
+ msgid "Cancelling %s..."
686
+ msgstr ""
687
+
688
+ #: templates/account.php:1016, templates/forms/subscription-cancellation.php:28, templates/forms/deactivation/form.php:179
689
+ msgid "subscription"
690
+ msgstr ""
691
+
692
+ #: templates/account.php:1030
693
+ msgid "Deactivating your license will block all premium features, but will enable activating the license on another site. Are you sure you want to proceed?"
694
+ msgstr ""
695
+
696
+ #: templates/account.php:1104
697
+ msgid "Disabling white-label mode"
698
+ msgstr ""
699
+
700
+ #: templates/account.php:1105
701
+ msgid "Enabling white-label mode"
702
+ msgstr ""
703
+
704
+ #: templates/add-ons.php:38
705
+ msgid "View details"
706
+ msgstr ""
707
+
708
+ #: templates/add-ons.php:48
709
+ msgid "Add Ons for %s"
710
+ msgstr ""
711
+
712
+ #: templates/add-ons.php:57
713
+ msgctxt "exclamation"
714
+ msgid "Oops"
715
+ msgstr ""
716
+
717
+ #: templates/add-ons.php:58
718
+ msgid "We couldn't load the add-ons list. It's probably an issue on our side, please try to come back in few minutes."
719
+ msgstr ""
720
+
721
+ #: templates/add-ons.php:186, templates/account/partials/addon.php:386
722
+ msgid "More information about %s"
723
+ msgstr ""
724
+
725
+ #: templates/add-ons.php:229
726
+ msgctxt "active add-on"
727
+ msgid "Active"
728
+ msgstr ""
729
+
730
+ #: templates/add-ons.php:230
731
+ msgctxt "installed add-on"
732
+ msgid "Installed"
733
+ msgstr ""
734
+
735
+ #: templates/admin-notice.php:13, templates/forms/license-activation.php:250, templates/forms/resend-key.php:80
736
+ msgctxt "as close a window"
737
+ msgid "Dismiss"
738
+ msgstr ""
739
+
740
+ #: templates/auto-installation.php:32
741
+ msgid "Add-On"
742
+ msgstr ""
743
+
744
+ #. translators: %s: Number of seconds
745
+ #: templates/auto-installation.php:45
746
+ msgid "%s sec"
747
+ msgstr ""
748
+
749
+ #: templates/auto-installation.php:83
750
+ msgid "Automatic Installation"
751
+ msgstr ""
752
+
753
+ #: templates/auto-installation.php:93
754
+ msgid "An automated download and installation of %s (paid version) from %s will start in %s. If you would like to do it manually - click the cancellation button now."
755
+ msgstr ""
756
+
757
+ #: templates/auto-installation.php:104
758
+ msgid "The installation process has started and may take a few minutes to complete. Please wait until it is done - do not refresh this page."
759
+ msgstr ""
760
+
761
+ #: templates/auto-installation.php:109
762
+ msgid "Cancel Installation"
763
+ msgstr ""
764
+
765
+ #. translators: %s: name (e.g. Hey John,)
766
+ #: templates/connect.php:121
767
+ msgctxt "greeting"
768
+ msgid "Hey %s,"
769
+ msgstr ""
770
+
771
+ #: templates/connect.php:181
772
+ msgid "Allow & Continue"
773
+ msgstr ""
774
+
775
+ #: templates/connect.php:210, templates/connect.php:217
776
+ msgid "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s."
777
+ msgstr ""
778
+
779
+ #: templates/connect.php:211, templates/connect.php:218
780
+ msgid "Never miss an important update - opt in to our security & feature updates notifications, and non-sensitive diagnostic tracking with %4$s."
781
+ msgstr ""
782
+
783
+ #: templates/connect.php:221
784
+ msgid "If you skip this, that's okay! %1$s will still work just fine."
785
+ msgstr ""
786
+
787
+ #: templates/connect.php:199, templates/forms/license-activation.php:46
788
+ msgid "Agree & Activate License"
789
+ msgstr ""
790
+
791
+ #: templates/connect.php:203
792
+ msgid "Welcome to %s! To get started, please enter your license key:"
793
+ msgstr ""
794
+
795
+ #: templates/connect.php:185
796
+ msgid "Re-send activation email"
797
+ msgstr ""
798
+
799
+ #: templates/connect.php:189
800
+ msgid "Thanks %s!"
801
+ msgstr ""
802
+
803
+ #: templates/connect.php:190
804
+ msgid "You should receive an activation email for %s to your mailbox at %s. Please make sure you click the activation button in that email to %s."
805
+ msgstr ""
806
+
807
+ #: templates/connect.php:194
808
+ msgid "complete the install"
809
+ msgstr ""
810
+
811
+ #: templates/connect.php:251
812
+ msgid "We're excited to introduce the Freemius network-level integration."
813
+ msgstr ""
814
+
815
+ #: templates/connect.php:265
816
+ msgid "During the update process we detected %s site(s) in the network that are still pending your attention."
817
+ msgstr ""
818
+
819
+ #: templates/connect.php:254
820
+ msgid "During the update process we detected %d site(s) that are still pending license activation."
821
+ msgstr ""
822
+
823
+ #: templates/connect.php:256
824
+ msgid "If you'd like to use the %s on those sites, please enter your license key below and click the activation button."
825
+ msgstr ""
826
+
827
+ #: templates/connect.php:258
828
+ msgid "%s's paid features"
829
+ msgstr ""
830
+
831
+ #: templates/connect.php:263
832
+ msgid "Alternatively, you can skip it for now and activate the license later, in your %s's network-level Account page."
833
+ msgstr ""
834
+
835
+ #: templates/connect.php:274, templates/forms/data-debug-mode.php:35, templates/forms/license-activation.php:49
836
+ msgid "License key"
837
+ msgstr ""
838
+
839
+ #: templates/connect.php:277, templates/forms/license-activation.php:22
840
+ msgid "Can't find your license key?"
841
+ msgstr ""
842
+
843
+ #: templates/connect.php:308
844
+ msgid "Please let us know if you'd like us to contact you for security & feature updates, educational content, and occasional offers:"
845
+ msgstr ""
846
+
847
+ #: templates/connect.php:340, templates/connect.php:730, templates/forms/deactivation/retry-skip.php:20
848
+ msgctxt "verb"
849
+ msgid "Skip"
850
+ msgstr ""
851
+
852
+ #: templates/connect.php:343
853
+ msgid "Delegate to Site Admins"
854
+ msgstr ""
855
+
856
+ #: templates/connect.php:343
857
+ msgid "If you click it, this decision will be delegated to the sites administrators."
858
+ msgstr ""
859
+
860
+ #: templates/connect.php:368
861
+ msgid "License issues?"
862
+ msgstr ""
863
+
864
+ #: templates/connect.php:454
865
+ msgid "What permissions are being granted?"
866
+ msgstr ""
867
+
868
+ #: templates/connect.php:448
869
+ msgid "The %1$s will periodically send %2$s to %3$s for security & feature updates delivery, and license management."
870
+ msgstr ""
871
+
872
+ #: templates/connect.php:450
873
+ msgid "diagnostic data"
874
+ msgstr ""
875
+
876
+ #: templates/connect.php:485
877
+ msgid "Have a license key?"
878
+ msgstr ""
879
+
880
+ #: templates/connect.php:482
881
+ msgid "Don't have a license key?"
882
+ msgstr ""
883
+
884
+ #: templates/connect.php:493
885
+ msgid "Privacy Policy"
886
+ msgstr ""
887
+
888
+ #: templates/connect.php:495
889
+ msgid "License Agreement"
890
+ msgstr ""
891
+
892
+ #: templates/connect.php:495
893
+ msgid "Terms of Service"
894
+ msgstr ""
895
+
896
+ #: templates/connect.php:896
897
+ msgctxt "as in the process of sending an email"
898
+ msgid "Sending email"
899
+ msgstr ""
900
+
901
+ #: templates/connect.php:897
902
+ msgctxt "as activating plugin"
903
+ msgid "Activating"
904
+ msgstr ""
905
+
906
+ #: templates/debug.php:17
907
+ msgctxt "as turned off"
908
+ msgid "Off"
909
+ msgstr ""
910
+
911
+ #: templates/debug.php:18
912
+ msgctxt "as turned on"
913
+ msgid "On"
914
+ msgstr ""
915
+
916
+ #: templates/debug.php:20
917
+ msgid "SDK"
918
+ msgstr ""
919
+
920
+ #: templates/debug.php:24
921
+ msgctxt "as code debugging"
922
+ msgid "Debugging"
923
+ msgstr ""
924
+
925
+ #: templates/debug.php:54, templates/debug.php:262, templates/debug.php:388, templates/debug.php:528
926
+ msgid "Actions"
927
+ msgstr ""
928
+
929
+ #: templates/debug.php:64
930
+ msgid "Are you sure you want to delete all Freemius data?"
931
+ msgstr ""
932
+
933
+ #: templates/debug.php:64
934
+ msgid "Delete All Accounts"
935
+ msgstr ""
936
+
937
+ #: templates/debug.php:71
938
+ msgid "Clear API Cache"
939
+ msgstr ""
940
+
941
+ #: templates/debug.php:79
942
+ msgid "Clear Updates Transients"
943
+ msgstr ""
944
+
945
+ #: templates/debug.php:88
946
+ msgid "Reset Deactivation Snoozing"
947
+ msgstr ""
948
+
949
+ #: templates/debug.php:96
950
+ msgid "Sync Data From Server"
951
+ msgstr ""
952
+
953
+ #: templates/debug.php:105
954
+ msgid "Migrate Options to Network"
955
+ msgstr ""
956
+
957
+ #: templates/debug.php:110
958
+ msgid "Load DB Option"
959
+ msgstr ""
960
+
961
+ #: templates/debug.php:113
962
+ msgid "Set DB Option"
963
+ msgstr ""
964
+
965
+ #: templates/debug.php:194
966
+ msgid "Key"
967
+ msgstr ""
968
+
969
+ #: templates/debug.php:195
970
+ msgid "Value"
971
+ msgstr ""
972
+
973
+ #: templates/debug.php:211
974
+ msgctxt "as software development kit versions"
975
+ msgid "SDK Versions"
976
+ msgstr ""
977
+
978
+ #: templates/debug.php:216
979
+ msgid "SDK Path"
980
+ msgstr ""
981
+
982
+ #: templates/debug.php:217, templates/debug.php:256
983
+ msgid "Module Path"
984
+ msgstr ""
985
+
986
+ #: templates/debug.php:218
987
+ msgid "Is Active"
988
+ msgstr ""
989
+
990
+ #: templates/debug.php:246, templates/debug/plugins-themes-sync.php:35
991
+ msgid "Plugins"
992
+ msgstr ""
993
+
994
+ #: templates/debug.php:246, templates/debug/plugins-themes-sync.php:56
995
+ msgid "Themes"
996
+ msgstr ""
997
+
998
+ #: templates/debug.php:251, templates/debug.php:382, templates/debug.php:465, templates/debug/scheduled-crons.php:80
999
+ msgid "Slug"
1000
+ msgstr ""
1001
+
1002
+ #: templates/debug.php:253, templates/debug.php:464
1003
+ msgid "Title"
1004
+ msgstr ""
1005
+
1006
+ #: templates/debug.php:254
1007
+ msgctxt "as application program interface"
1008
+ msgid "API"
1009
+ msgstr ""
1010
+
1011
+ #: templates/debug.php:255
1012
+ msgid "Freemius State"
1013
+ msgstr ""
1014
+
1015
+ #: templates/debug.php:259
1016
+ msgid "Network Blog"
1017
+ msgstr ""
1018
+
1019
+ #: templates/debug.php:260
1020
+ msgid "Network User"
1021
+ msgstr ""
1022
+
1023
+ #: templates/debug.php:297
1024
+ msgctxt "as connection was successful"
1025
+ msgid "Connected"
1026
+ msgstr ""
1027
+
1028
+ #: templates/debug.php:298
1029
+ msgctxt "as connection blocked"
1030
+ msgid "Blocked"
1031
+ msgstr ""
1032
+
1033
+ #: templates/debug.php:334
1034
+ msgid "Simulate Trial Promotion"
1035
+ msgstr ""
1036
+
1037
+ #: templates/debug.php:346
1038
+ msgid "Simulate Network Upgrade"
1039
+ msgstr ""
1040
+
1041
+ #. translators: %s: 'plugin' or 'theme'
1042
+ #: templates/debug.php:371
1043
+ msgid "%s Installs"
1044
+ msgstr ""
1045
+
1046
+ #: templates/debug.php:373
1047
+ msgctxt "like websites"
1048
+ msgid "Sites"
1049
+ msgstr ""
1050
+
1051
+ #: templates/debug.php:379, templates/account/partials/site.php:156
1052
+ msgid "Blog ID"
1053
+ msgstr ""
1054
+
1055
+ #: templates/debug.php:384
1056
+ msgid "License ID"
1057
+ msgstr ""
1058
+
1059
+ #: templates/debug.php:445, templates/debug.php:551, templates/account/partials/addon.php:440
1060
+ msgctxt "verb"
1061
+ msgid "Delete"
1062
+ msgstr ""
1063
+
1064
+ #: templates/debug.php:459
1065
+ msgid "Add Ons of module %s"
1066
+ msgstr ""
1067
+
1068
+ #: templates/debug.php:518
1069
+ msgid "Users"
1070
+ msgstr ""
1071
+
1072
+ #: templates/debug.php:525
1073
+ msgid "Verified"
1074
+ msgstr ""
1075
+
1076
+ #: templates/debug.php:567
1077
+ msgid "%s Licenses"
1078
+ msgstr ""
1079
+
1080
+ #: templates/debug.php:572
1081
+ msgid "Plugin ID"
1082
+ msgstr ""
1083
+
1084
+ #: templates/debug.php:574
1085
+ msgid "Plan ID"
1086
+ msgstr ""
1087
+
1088
+ #: templates/debug.php:575
1089
+ msgid "Quota"
1090
+ msgstr ""
1091
+
1092
+ #: templates/debug.php:576
1093
+ msgid "Activated"
1094
+ msgstr ""
1095
+
1096
+ #: templates/debug.php:577
1097
+ msgid "Blocking"
1098
+ msgstr ""
1099
+
1100
+ #: templates/debug.php:578, templates/debug.php:649, templates/debug/logger.php:22
1101
+ msgid "Type"
1102
+ msgstr ""
1103
+
1104
+ #: templates/debug.php:580
1105
+ msgctxt "as expiration date"
1106
+ msgid "Expiration"
1107
+ msgstr ""
1108
+
1109
+ #: templates/debug.php:608
1110
+ msgid "Debug Log"
1111
+ msgstr ""
1112
+
1113
+ #: templates/debug.php:612
1114
+ msgid "All Types"
1115
+ msgstr ""
1116
+
1117
+ #: templates/debug.php:619
1118
+ msgid "All Requests"
1119
+ msgstr ""
1120
+
1121
+ #: templates/debug.php:624, templates/debug.php:653, templates/debug/logger.php:25
1122
+ msgid "File"
1123
+ msgstr ""
1124
+
1125
+ #: templates/debug.php:625, templates/debug.php:651, templates/debug/logger.php:23
1126
+ msgid "Function"
1127
+ msgstr ""
1128
+
1129
+ #: templates/debug.php:626
1130
+ msgid "Process ID"
1131
+ msgstr ""
1132
+
1133
+ #: templates/debug.php:627
1134
+ msgid "Logger"
1135
+ msgstr ""
1136
+
1137
+ #: templates/debug.php:628, templates/debug.php:652, templates/debug/logger.php:24
1138
+ msgid "Message"
1139
+ msgstr ""
1140
+
1141
+ #: templates/debug.php:630
1142
+ msgid "Filter"
1143
+ msgstr ""
1144
+
1145
+ #: templates/debug.php:638
1146
+ msgid "Download"
1147
+ msgstr ""
1148
+
1149
+ #: templates/debug.php:654, templates/debug/logger.php:26
1150
+ msgid "Timestamp"
1151
+ msgstr ""
1152
+
1153
+ #: includes/debug/class-fs-debug-bar-panel.php:48, templates/debug/api-calls.php:54, templates/debug/logger.php:62
1154
+ msgctxt "milliseconds"
1155
+ msgid "ms"
1156
+ msgstr ""
1157
+
1158
+ #: includes/debug/debug-bar-start.php:41
1159
+ msgid "Freemius API"
1160
+ msgstr ""
1161
+
1162
+ #: includes/debug/debug-bar-start.php:42
1163
+ msgid "Requests"
1164
+ msgstr ""
1165
+
1166
+ #: includes/managers/class-fs-clone-manager.php:703
1167
+ msgid "Invalid clone resolution action."
1168
+ msgstr ""
1169
+
1170
+ #: includes/managers/class-fs-clone-manager.php:851
1171
+ msgid "products"
1172
+ msgstr ""
1173
+
1174
+ #: includes/managers/class-fs-clone-manager.php:1039
1175
+ msgid "The products below have been placed into safe mode because we noticed that %2$s is an exact copy of %3$s:%1$s"
1176
+ msgstr ""
1177
+
1178
+ #: includes/managers/class-fs-clone-manager.php:1040
1179
+ msgid "The products below have been placed into safe mode because we noticed that %2$s is an exact copy of these sites:%3$s%1$s"
1180
+ msgstr ""
1181
+
1182
+ #: includes/managers/class-fs-clone-manager.php:1033
1183
+ msgid "%1$s has been placed into safe mode because we noticed that %2$s is an exact copy of %3$s."
1184
+ msgstr ""
1185
+
1186
+ #: includes/managers/class-fs-clone-manager.php:1066
1187
+ msgid "the above-mentioned sites"
1188
+ msgstr ""
1189
+
1190
+ #: includes/managers/class-fs-clone-manager.php:1079
1191
+ msgid "Is %2$s a duplicate of %4$s?"
1192
+ msgstr ""
1193
+
1194
+ #: includes/managers/class-fs-clone-manager.php:1080
1195
+ msgid "Yes, %2$s is a duplicate of %4$s for the purpose of testing, staging, or development."
1196
+ msgstr ""
1197
+
1198
+ #: includes/managers/class-fs-clone-manager.php:1085
1199
+ msgid "Long-Term Duplicate"
1200
+ msgstr ""
1201
+
1202
+ #: includes/managers/class-fs-clone-manager.php:1090
1203
+ msgid "Duplicate Website"
1204
+ msgstr ""
1205
+
1206
+ #: includes/managers/class-fs-clone-manager.php:1096
1207
+ msgid "Is %2$s the new home of %4$s?"
1208
+ msgstr ""
1209
+
1210
+ #: includes/managers/class-fs-clone-manager.php:1098
1211
+ msgid "Yes, %%2$s is replacing %%4$s. I would like to migrate my %s from %%4$s to %%2$s."
1212
+ msgstr ""
1213
+
1214
+ #: includes/managers/class-fs-clone-manager.php:1099, templates/forms/subscription-cancellation.php:52
1215
+ msgid "license"
1216
+ msgstr ""
1217
+
1218
+ #: includes/managers/class-fs-clone-manager.php:1099
1219
+ msgid "data"
1220
+ msgstr ""
1221
+
1222
+ #: includes/managers/class-fs-clone-manager.php:1105
1223
+ msgid "Migrate License"
1224
+ msgstr ""
1225
+
1226
+ #: includes/managers/class-fs-clone-manager.php:1106
1227
+ msgid "Migrate"
1228
+ msgstr ""
1229
+
1230
+ #: includes/managers/class-fs-clone-manager.php:1112
1231
+ msgid "Is %2$s a new website?"
1232
+ msgstr ""
1233
+
1234
+ #: includes/managers/class-fs-clone-manager.php:1113
1235
+ msgid "Yes, %2$s is a new and different website that is separate from %4$s."
1236
+ msgstr ""
1237
+
1238
+ #: includes/managers/class-fs-clone-manager.php:1115
1239
+ msgid "It requires license activation."
1240
+ msgstr ""
1241
+
1242
+ #: includes/managers/class-fs-clone-manager.php:1122
1243
+ msgid "New Website"
1244
+ msgstr ""
1245
+
1246
+ #: includes/managers/class-fs-clone-manager.php:1145
1247
+ msgctxt "Clone resolution admin notice products list label"
1248
+ msgid "Products"
1249
+ msgstr ""
1250
+
1251
+ #: includes/managers/class-fs-clone-manager.php:1230
1252
+ msgid "You marked this website, %s, as a temporary duplicate of %s."
1253
+ msgstr ""
1254
+
1255
+ #: includes/managers/class-fs-clone-manager.php:1231
1256
+ msgid "You marked this website, %s, as a temporary duplicate of these sites"
1257
+ msgstr ""
1258
+
1259
+ #: includes/managers/class-fs-clone-manager.php:1245
1260
+ msgid "%s automatic security & feature updates and paid functionality will keep working without interruptions until %s (or when your license expires, whatever comes first)."
1261
+ msgstr ""
1262
+
1263
+ #: includes/managers/class-fs-clone-manager.php:1248
1264
+ msgctxt "\"The <product_label>\", e.g.: \"The plugin\""
1265
+ msgid "The %s's"
1266
+ msgstr ""
1267
+
1268
+ #: includes/managers/class-fs-clone-manager.php:1251
1269
+ msgid "The following products'"
1270
+ msgstr ""
1271
+
1272
+ #: includes/managers/class-fs-clone-manager.php:1259
1273
+ msgid "If this is a long term duplicate, to keep automatic updates and paid functionality after %s, please %s."
1274
+ msgstr ""
1275
+
1276
+ #: includes/managers/class-fs-clone-manager.php:1261
1277
+ msgid "activate a license here"
1278
+ msgstr ""
1279
+
1280
+ #: templates/account/billing.php:22
1281
+ msgctxt "verb"
1282
+ msgid "Update"
1283
+ msgstr ""
1284
+
1285
+ #: templates/account/billing.php:33
1286
+ msgid "Billing"
1287
+ msgstr ""
1288
+
1289
+ #: templates/account/billing.php:38, templates/account/billing.php:38
1290
+ msgid "Business name"
1291
+ msgstr ""
1292
+
1293
+ #: templates/account/billing.php:39, templates/account/billing.php:39
1294
+ msgid "Tax / VAT ID"
1295
+ msgstr ""
1296
+
1297
+ #: templates/account/billing.php:42, templates/account/billing.php:42, templates/account/billing.php:43, templates/account/billing.php:43
1298
+ msgid "Address Line %d"
1299
+ msgstr ""
1300
+
1301
+ #: templates/account/billing.php:46, templates/account/billing.php:46
1302
+ msgid "City"
1303
+ msgstr ""
1304
+
1305
+ #: templates/account/billing.php:46, templates/account/billing.php:46
1306
+ msgid "Town"
1307
+ msgstr ""
1308
+
1309
+ #: templates/account/billing.php:47, templates/account/billing.php:47
1310
+ msgid "ZIP / Postal Code"
1311
+ msgstr ""
1312
+
1313
+ #: templates/account/billing.php:302
1314
+ msgid "Country"
1315
+ msgstr ""
1316
+
1317
+ #: templates/account/billing.php:304
1318
+ msgid "Select Country"
1319
+ msgstr ""
1320
+
1321
+ #: templates/account/billing.php:311, templates/account/billing.php:312
1322
+ msgid "State"
1323
+ msgstr ""
1324
+
1325
+ #: templates/account/billing.php:311, templates/account/billing.php:312
1326
+ msgid "Province"
1327
+ msgstr ""
1328
+
1329
+ #: templates/account/payments.php:29
1330
+ msgid "Payments"
1331
+ msgstr ""
1332
+
1333
+ #: templates/account/payments.php:36
1334
+ msgid "Date"
1335
+ msgstr ""
1336
+
1337
+ #: templates/account/payments.php:37
1338
+ msgid "Amount"
1339
+ msgstr ""
1340
+
1341
+ #: templates/account/payments.php:38, templates/account/payments.php:50
1342
+ msgid "Invoice"
1343
+ msgstr ""
1344
+
1345
+ #: templates/debug/api-calls.php:56
1346
+ msgid "API"
1347
+ msgstr ""
1348
+
1349
+ #: templates/debug/api-calls.php:68
1350
+ msgid "Method"
1351
+ msgstr ""
1352
+
1353
+ #: templates/debug/api-calls.php:69
1354
+ msgid "Code"
1355
+ msgstr ""
1356
+
1357
+ #: templates/debug/api-calls.php:70
1358
+ msgid "Length"
1359
+ msgstr ""
1360
+
1361
+ #: templates/debug/api-calls.php:71
1362
+ msgctxt "as file/folder path"
1363
+ msgid "Path"
1364
+ msgstr ""
1365
+
1366
+ #: templates/debug/api-calls.php:73
1367
+ msgid "Body"
1368
+ msgstr ""
1369
+
1370
+ #: templates/debug/api-calls.php:75
1371
+ msgid "Result"
1372
+ msgstr ""
1373
+
1374
+ #: templates/debug/api-calls.php:76
1375
+ msgid "Start"
1376
+ msgstr ""
1377
+
1378
+ #: templates/debug/api-calls.php:77
1379
+ msgid "End"
1380
+ msgstr ""
1381
+
1382
+ #: templates/debug/logger.php:15
1383
+ msgid "Log"
1384
+ msgstr ""
1385
+
1386
+ #. translators: %s: time period (e.g. In "2 hours")
1387
+ #: templates/debug/plugins-themes-sync.php:18, templates/debug/scheduled-crons.php:91
1388
+ msgid "In %s"
1389
+ msgstr ""
1390
+
1391
+ #. translators: %s: time period (e.g. "2 hours" ago)
1392
+ #: templates/debug/plugins-themes-sync.php:20, templates/debug/scheduled-crons.php:93
1393
+ msgid "%s ago"
1394
+ msgstr ""
1395
+
1396
+ #: templates/debug/plugins-themes-sync.php:21, templates/debug/scheduled-crons.php:74
1397
+ msgctxt "seconds"
1398
+ msgid "sec"
1399
+ msgstr ""
1400
+
1401
+ #: templates/debug/plugins-themes-sync.php:23
1402
+ msgid "Plugins & Themes Sync"
1403
+ msgstr ""
1404
+
1405
+ #: templates/debug/plugins-themes-sync.php:28
1406
+ msgid "Total"
1407
+ msgstr ""
1408
+
1409
+ #: templates/debug/plugins-themes-sync.php:29, templates/debug/scheduled-crons.php:84
1410
+ msgid "Last"
1411
+ msgstr ""
1412
+
1413
+ #: templates/debug/scheduled-crons.php:76
1414
+ msgid "Scheduled Crons"
1415
+ msgstr ""
1416
+
1417
+ #: templates/debug/scheduled-crons.php:81
1418
+ msgid "Module"
1419
+ msgstr ""
1420
+
1421
+ #: templates/debug/scheduled-crons.php:82
1422
+ msgid "Module Type"
1423
+ msgstr ""
1424
+
1425
+ #: templates/debug/scheduled-crons.php:83
1426
+ msgid "Cron Type"
1427
+ msgstr ""
1428
+
1429
+ #: templates/debug/scheduled-crons.php:85
1430
+ msgid "Next"
1431
+ msgstr ""
1432
+
1433
+ #: templates/forms/affiliation.php:83
1434
+ msgid "Non-expiring"
1435
+ msgstr ""
1436
+
1437
+ #: templates/forms/affiliation.php:86
1438
+ msgid "Apply to become an affiliate"
1439
+ msgstr ""
1440
+
1441
+ #: templates/forms/affiliation.php:132
1442
+ msgid "Due to violation of our affiliation terms, we decided to temporarily block your affiliation account. If you have any questions, please contact support."
1443
+ msgstr ""
1444
+
1445
+ #: templates/forms/affiliation.php:129
1446
+ msgid "Thank you for applying for our affiliate program, unfortunately, we've decided at this point to reject your application. Please try again in 30 days."
1447
+ msgstr ""
1448
+
1449
+ #: templates/forms/affiliation.php:126
1450
+ msgid "Your affiliation account was temporarily suspended."
1451
+ msgstr ""
1452
+
1453
+ #: templates/forms/affiliation.php:123
1454
+ msgid "Thank you for applying for our affiliate program, we'll review your details during the next 14 days and will get back to you with further information."
1455
+ msgstr ""
1456
+
1457
+ #: templates/forms/affiliation.php:108
1458
+ msgid "Your affiliate application for %s has been accepted! Log in to your affiliate area at: %s."
1459
+ msgstr ""
1460
+
1461
+ #: templates/forms/affiliation.php:145
1462
+ msgid "Like the %s? Become our ambassador and earn cash ;-)"
1463
+ msgstr ""
1464
+
1465
+ #: templates/forms/affiliation.php:146
1466
+ msgid "Refer new customers to our %s and earn %s commission on each successful sale you refer!"
1467
+ msgstr ""
1468
+
1469
+ #: templates/forms/affiliation.php:149
1470
+ msgid "Program Summary"
1471
+ msgstr ""
1472
+
1473
+ #: templates/forms/affiliation.php:151
1474
+ msgid "%s commission when a customer purchases a new license."
1475
+ msgstr ""
1476
+
1477
+ #: templates/forms/affiliation.php:153
1478
+ msgid "Get commission for automated subscription renewals."
1479
+ msgstr ""
1480
+
1481
+ #: templates/forms/affiliation.php:156
1482
+ msgid "%s tracking cookie after the first visit to maximize earnings potential."
1483
+ msgstr ""
1484
+
1485
+ #: templates/forms/affiliation.php:159
1486
+ msgid "Unlimited commissions."
1487
+ msgstr ""
1488
+
1489
+ #: templates/forms/affiliation.php:161
1490
+ msgid "%s minimum payout amount."
1491
+ msgstr ""
1492
+
1493
+ #: templates/forms/affiliation.php:162
1494
+ msgid "Payouts are in USD and processed monthly via PayPal."
1495
+ msgstr ""
1496
+
1497
+ #: templates/forms/affiliation.php:163
1498
+ msgid "As we reserve 30 days for potential refunds, we only pay commissions that are older than 30 days."
1499
+ msgstr ""
1500
+
1501
+ #: templates/forms/affiliation.php:166
1502
+ msgid "Affiliate"
1503
+ msgstr ""
1504
+
1505
+ #: templates/forms/affiliation.php:169, templates/forms/resend-key.php:23
1506
+ msgid "Email address"
1507
+ msgstr ""
1508
+
1509
+ #: templates/forms/affiliation.php:173
1510
+ msgid "Full name"
1511
+ msgstr ""
1512
+
1513
+ #: templates/forms/affiliation.php:177
1514
+ msgid "PayPal account email address"
1515
+ msgstr ""
1516
+
1517
+ #: templates/forms/affiliation.php:181
1518
+ msgid "Where are you going to promote the %s?"
1519
+ msgstr ""
1520
+
1521
+ #: templates/forms/affiliation.php:183
1522
+ msgid "Enter the domain of your website or other websites from where you plan to promote the %s."
1523
+ msgstr ""
1524
+
1525
+ #: templates/forms/affiliation.php:185
1526
+ msgid "Add another domain"
1527
+ msgstr ""
1528
+
1529
+ #: templates/forms/affiliation.php:189
1530
+ msgid "Extra Domains"
1531
+ msgstr ""
1532
+
1533
+ #: templates/forms/affiliation.php:190
1534
+ msgid "Extra domains where you will be marketing the product from."
1535
+ msgstr ""
1536
+
1537
+ #: templates/forms/affiliation.php:200
1538
+ msgid "Promotion methods"
1539
+ msgstr ""
1540
+
1541
+ #: templates/forms/affiliation.php:203
1542
+ msgid "Social media (Facebook, Twitter, etc.)"
1543
+ msgstr ""
1544
+
1545
+ #: templates/forms/affiliation.php:207
1546
+ msgid "Mobile apps"
1547
+ msgstr ""
1548
+
1549
+ #: templates/forms/affiliation.php:211
1550
+ msgid "Website, email, and social media statistics (optional)"
1551
+ msgstr ""
1552
+
1553
+ #: templates/forms/affiliation.php:214
1554
+ msgid "Please feel free to provide any relevant website or social media statistics, e.g. monthly unique site visits, number of email subscribers, followers, etc. (we will keep this information confidential)."
1555
+ msgstr ""
1556
+
1557
+ #: templates/forms/affiliation.php:218
1558
+ msgid "How will you promote us?"
1559
+ msgstr ""
1560
+
1561
+ #: templates/forms/affiliation.php:221
1562
+ msgid "Please provide details on how you intend to promote %s (please be as specific as possible)."
1563
+ msgstr ""
1564
+
1565
+ #: templates/forms/affiliation.php:233, templates/forms/resend-key.php:22
1566
+ msgid "Cancel"
1567
+ msgstr ""
1568
+
1569
+ #: templates/forms/affiliation.php:235
1570
+ msgid "Become an affiliate"
1571
+ msgstr ""
1572
+
1573
+ #: templates/forms/data-debug-mode.php:25
1574
+ msgid "Please enter the license key to enable the debug mode:"
1575
+ msgstr ""
1576
+
1577
+ #: templates/forms/data-debug-mode.php:27
1578
+ msgid "To enter the debug mode, please enter the secret key of the license owner (UserID = %d), which you can find in your \"My Profile\" section of your User Dashboard:"
1579
+ msgstr ""
1580
+
1581
+ #: templates/forms/data-debug-mode.php:32
1582
+ msgid "Submit"
1583
+ msgstr ""
1584
+
1585
+ #: templates/forms/data-debug-mode.php:36
1586
+ msgid "User key"
1587
+ msgstr ""
1588
+
1589
+ #: templates/forms/data-debug-mode.php:162
1590
+ msgid "An unknown error has occurred."
1591
+ msgstr ""
1592
+
1593
+ #: templates/forms/email-address-update.php:32
1594
+ msgid "Email address update"
1595
+ msgstr ""
1596
+
1597
+ #: templates/forms/email-address-update.php:33, templates/forms/user-change.php:81
1598
+ msgctxt "close window"
1599
+ msgid "Dismiss"
1600
+ msgstr ""
1601
+
1602
+ #: templates/forms/email-address-update.php:38
1603
+ msgid "Enter the new email address"
1604
+ msgstr ""
1605
+
1606
+ #: templates/forms/email-address-update.php:42
1607
+ msgid "Are both %s and %s your email addresses?"
1608
+ msgstr ""
1609
+
1610
+ #: templates/forms/email-address-update.php:50
1611
+ msgid "Yes - both addresses are mine"
1612
+ msgstr ""
1613
+
1614
+ #: templates/forms/email-address-update.php:57
1615
+ msgid "%s is my client's email address"
1616
+ msgstr ""
1617
+
1618
+ #: templates/forms/email-address-update.php:66
1619
+ msgid "%s is my email address"
1620
+ msgstr ""
1621
+
1622
+ #: templates/forms/email-address-update.php:75
1623
+ msgid "Would you like to merge %s into %s?"
1624
+ msgstr ""
1625
+
1626
+ #: templates/forms/email-address-update.php:84
1627
+ msgid "Yes - move all my data and assets from %s to %s"
1628
+ msgstr ""
1629
+
1630
+ #: templates/forms/email-address-update.php:94
1631
+ msgid "No - only move this site's data to %s"
1632
+ msgstr ""
1633
+
1634
+ #: templates/forms/email-address-update.php:292, templates/forms/email-address-update.php:298
1635
+ msgid "Update"
1636
+ msgstr ""
1637
+
1638
+ #: templates/forms/license-activation.php:23
1639
+ msgid "Please enter the license key that you received in the email right after the purchase:"
1640
+ msgstr ""
1641
+
1642
+ #: templates/forms/license-activation.php:28
1643
+ msgid "Update License"
1644
+ msgstr ""
1645
+
1646
+ #: templates/forms/license-activation.php:41
1647
+ msgid "The %1$s will be periodically sending data to %2$s to check for security and feature updates, and verify the validity of your license."
1648
+ msgstr ""
1649
+
1650
+ #: templates/forms/license-activation.php:211
1651
+ msgid "Associate with the license owner's account."
1652
+ msgstr ""
1653
+
1654
+ #: templates/forms/optout.php:30
1655
+ msgctxt "verb"
1656
+ msgid "Opt Out"
1657
+ msgstr ""
1658
+
1659
+ #: templates/forms/optout.php:31
1660
+ msgctxt "verb"
1661
+ msgid "Opt In"
1662
+ msgstr ""
1663
+
1664
+ #: templates/forms/optout.php:41
1665
+ msgid "We appreciate your help in making the %s better by letting us track some usage data."
1666
+ msgstr ""
1667
+
1668
+ #: templates/forms/optout.php:44
1669
+ msgid "Usage tracking is done in the name of making %s better. Making a better user experience, prioritizing new features, and more good things. We'd really appreciate if you'll reconsider letting us continue with the tracking."
1670
+ msgstr ""
1671
+
1672
+ #: templates/forms/optout.php:45
1673
+ msgid "On second thought - I want to continue helping"
1674
+ msgstr ""
1675
+
1676
+ #: templates/forms/optout.php:34
1677
+ msgid "Connectivity to the licensing engine was successfully re-established. Automatic security & feature updates are now available through the WP Admin Dashboard."
1678
+ msgstr ""
1679
+
1680
+ #: templates/forms/optout.php:36
1681
+ msgid "Warning: Opting out will block automatic updates"
1682
+ msgstr ""
1683
+
1684
+ #: templates/forms/optout.php:37
1685
+ msgid "Ongoing connectivity with the licensing engine is essential for receiving automatic security & feature updates of the paid product. To receive these updates, data like your license key, %1$s version, and WordPress version, is periodically sent to the server to check for updates. By opting out, you understand that your site won't receive automatic updates for %2$s from within the WP Admin Dashboard. This can put your site at risk, and we highly recommend to keep this connection active. If you do choose to opt-out, you'll need to check for %1$s updates and install them manually."
1686
+ msgstr ""
1687
+
1688
+ #: templates/forms/optout.php:39
1689
+ msgid "I'd like to keep automatic updates"
1690
+ msgstr ""
1691
+
1692
+ #: templates/forms/optout.php:49
1693
+ msgid "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s."
1694
+ msgstr ""
1695
+
1696
+ #: templates/forms/optout.php:74
1697
+ msgid "Plugins & themes tracking"
1698
+ msgstr ""
1699
+
1700
+ #: templates/forms/optout.php:261
1701
+ msgid "Saved"
1702
+ msgstr ""
1703
+
1704
+ #: templates/forms/premium-versions-upgrade-handler.php:40
1705
+ msgid "There is a new version of %s available."
1706
+ msgstr ""
1707
+
1708
+ #: templates/forms/premium-versions-upgrade-handler.php:41
1709
+ msgid " %s to access version %s security & feature updates, and support."
1710
+ msgstr ""
1711
+
1712
+ #: templates/forms/premium-versions-upgrade-handler.php:46
1713
+ msgid "Renew your license now"
1714
+ msgstr ""
1715
+
1716
+ #: templates/forms/premium-versions-upgrade-handler.php:47
1717
+ msgid "Buy a license now"
1718
+ msgstr ""
1719
+
1720
+ #: templates/forms/premium-versions-upgrade-handler.php:54
1721
+ msgid "New Version Available"
1722
+ msgstr ""
1723
+
1724
+ #: templates/forms/premium-versions-upgrade-handler.php:75
1725
+ msgctxt "close a window"
1726
+ msgid "Dismiss"
1727
+ msgstr ""
1728
+
1729
+ #: templates/forms/resend-key.php:21
1730
+ msgid "Send License Key"
1731
+ msgstr ""
1732
+
1733
+ #: templates/forms/resend-key.php:24, templates/forms/user-change.php:29
1734
+ msgid "Other"
1735
+ msgstr ""
1736
+
1737
+ #: templates/forms/resend-key.php:58
1738
+ msgid "Enter the email address you've used during the purchase and we will resend you the license key."
1739
+ msgstr ""
1740
+
1741
+ #: templates/forms/resend-key.php:59
1742
+ msgid "Enter the email address you've used for the upgrade below and we will resend you the license key."
1743
+ msgstr ""
1744
+
1745
+ #: templates/forms/subscription-cancellation.php:37
1746
+ msgid "Deactivating or uninstalling the %s will automatically disable the license, which you'll be able to use on another site."
1747
+ msgstr ""
1748
+
1749
+ #: templates/forms/subscription-cancellation.php:47
1750
+ msgid "In case you are NOT planning on using this %s on this site (or any other site) - would you like to cancel the %s as well?"
1751
+ msgstr ""
1752
+
1753
+ #: templates/forms/subscription-cancellation.php:57
1754
+ msgid "Cancel %s - I no longer need any security & feature updates, nor support for %s because I'm not planning to use the %s on this, or any other site."
1755
+ msgstr ""
1756
+
1757
+ #: templates/forms/subscription-cancellation.php:68
1758
+ msgid "Don't cancel %s - I'm still interested in getting security & feature updates, as well as be able to contact support."
1759
+ msgstr ""
1760
+
1761
+ #: templates/forms/subscription-cancellation.php:103
1762
+ msgid "Once your license expires you will no longer be able to use the %s, unless you activate it again with a valid premium license."
1763
+ msgstr ""
1764
+
1765
+ #: templates/forms/subscription-cancellation.php:136
1766
+ msgid "Cancel %s?"
1767
+ msgstr ""
1768
+
1769
+ #: templates/forms/subscription-cancellation.php:143
1770
+ msgid "Proceed"
1771
+ msgstr ""
1772
+
1773
+ #: templates/forms/subscription-cancellation.php:191, templates/forms/deactivation/form.php:216
1774
+ msgid "Cancel %s & Proceed"
1775
+ msgstr ""
1776
+
1777
+ #. translators: %1$s: Number of trial days; %2$s: Plan name;
1778
+ #: templates/forms/trial-start.php:22
1779
+ msgid "You are 1-click away from starting your %1$s-day free trial of the %2$s plan."
1780
+ msgstr ""
1781
+
1782
+ #. translators: %s: Link to freemius.com
1783
+ #: templates/forms/trial-start.php:28
1784
+ msgid "For compliance with the WordPress.org guidelines, before we start the trial we ask that you opt in with your user and non-sensitive site information, allowing the %s to periodically send data to %s to check for version updates and to validate your trial."
1785
+ msgstr ""
1786
+
1787
+ #: templates/forms/trial-start.php:53
1788
+ msgctxt "call to action"
1789
+ msgid "Start free trial"
1790
+ msgstr ""
1791
+
1792
+ #: templates/forms/user-change.php:26
1793
+ msgid "By changing the user, you agree to transfer the account ownership to:"
1794
+ msgstr ""
1795
+
1796
+ #: templates/forms/user-change.php:28
1797
+ msgid "I Agree - Change User"
1798
+ msgstr ""
1799
+
1800
+ #: templates/forms/user-change.php:30
1801
+ msgid "Enter email address"
1802
+ msgstr ""
1803
+
1804
+ #: templates/partials/network-activation.php:36
1805
+ msgid "Activate license on all pending sites."
1806
+ msgstr ""
1807
+
1808
+ #: templates/partials/network-activation.php:37
1809
+ msgid "Apply on all pending sites."
1810
+ msgstr ""
1811
+
1812
+ #: templates/partials/network-activation.php:32
1813
+ msgid "Activate license on all sites in the network."
1814
+ msgstr ""
1815
+
1816
+ #: templates/partials/network-activation.php:33
1817
+ msgid "Apply on all sites in the network."
1818
+ msgstr ""
1819
+
1820
+ #: templates/partials/network-activation.php:45, templates/partials/network-activation.php:79
1821
+ msgid "allow"
1822
+ msgstr ""
1823
+
1824
+ #: templates/partials/network-activation.php:48, templates/partials/network-activation.php:82
1825
+ msgid "delegate"
1826
+ msgstr ""
1827
+
1828
+ #: templates/partials/network-activation.php:52, templates/partials/network-activation.php:86
1829
+ msgid "skip"
1830
+ msgstr ""
1831
+
1832
+ #: templates/plugin-info/description.php:72, templates/plugin-info/screenshots.php:31
1833
+ msgid "Click to view full-size screenshot %d"
1834
+ msgstr ""
1835
+
1836
+ #: templates/plugin-info/features.php:43
1837
+ msgid "Support"
1838
+ msgstr ""
1839
+
1840
+ #: templates/plugin-info/features.php:56
1841
+ msgid "Unlimited Updates"
1842
+ msgstr ""
1843
+
1844
+ #: templates/account/partials/activate-license-button.php:46
1845
+ msgid "Localhost"
1846
+ msgstr ""
1847
+
1848
+ #: templates/account/partials/activate-license-button.php:50
1849
+ msgctxt "as 5 licenses left"
1850
+ msgid "%s left"
1851
+ msgstr ""
1852
+
1853
+ #: templates/account/partials/activate-license-button.php:51
1854
+ msgid "Last license"
1855
+ msgstr ""
1856
+
1857
+ #. translators: %1$s: Either 'Downgrading your plan' or 'Cancelling the subscription'
1858
+ #: templates/account/partials/addon.php:34
1859
+ msgid "%1$s will immediately stop all future recurring payments and your %s plan license will expire in %s."
1860
+ msgstr ""
1861
+
1862
+ #: templates/account/partials/addon.php:200
1863
+ msgid "No expiration"
1864
+ msgstr ""
1865
+
1866
+ #: templates/account/partials/addon.php:190
1867
+ msgid "Cancelled"
1868
+ msgstr ""
1869
+
1870
+ #: templates/account/partials/site.php:49, templates/account/partials/site.php:169
1871
+ msgid "Opt In"
1872
+ msgstr ""
1873
+
1874
+ #: templates/account/partials/site.php:169
1875
+ msgid "Opt Out"
1876
+ msgstr ""
1877
+
1878
+ #: templates/account/partials/site.php:189
1879
+ msgid "Owner Name"
1880
+ msgstr ""
1881
+
1882
+ #: templates/account/partials/site.php:201
1883
+ msgid "Owner Email"
1884
+ msgstr ""
1885
+
1886
+ #: templates/account/partials/site.php:213
1887
+ msgid "Owner ID"
1888
+ msgstr ""
1889
+
1890
+ #: templates/account/partials/site.php:286
1891
+ msgid "Subscription"
1892
+ msgstr ""
1893
+
1894
+ #: templates/forms/deactivation/contact.php:19
1895
+ msgid "Sorry for the inconvenience and we are here to help if you give us a chance."
1896
+ msgstr ""
1897
+
1898
+ #: templates/forms/deactivation/contact.php:22
1899
+ msgid "Contact Support"
1900
+ msgstr ""
1901
+
1902
+ #: templates/forms/deactivation/form.php:65
1903
+ msgid "Anonymous feedback"
1904
+ msgstr ""
1905
+
1906
+ #: templates/forms/deactivation/form.php:71
1907
+ msgid "hour"
1908
+ msgstr ""
1909
+
1910
+ #: templates/forms/deactivation/form.php:76
1911
+ msgid "hours"
1912
+ msgstr ""
1913
+
1914
+ #: templates/forms/deactivation/form.php:81, templates/forms/deactivation/form.php:86
1915
+ msgid "days"
1916
+ msgstr ""
1917
+
1918
+ #: templates/forms/deactivation/form.php:106
1919
+ msgid "Deactivate"
1920
+ msgstr ""
1921
+
1922
+ #: templates/forms/deactivation/form.php:108
1923
+ msgid "Activate %s"
1924
+ msgstr ""
1925
+
1926
+ #: templates/forms/deactivation/form.php:111
1927
+ msgid "Submit & %s"
1928
+ msgstr ""
1929
+
1930
+ #: templates/forms/deactivation/form.php:130
1931
+ msgid "Quick Feedback"
1932
+ msgstr ""
1933
+
1934
+ #: templates/forms/deactivation/form.php:134
1935
+ msgid "If you have a moment, please let us know why you are %s"
1936
+ msgstr ""
1937
+
1938
+ #: templates/forms/deactivation/form.php:134
1939
+ msgid "deactivating"
1940
+ msgstr ""
1941
+
1942
+ #: templates/forms/deactivation/form.php:134
1943
+ msgid "switching"
1944
+ msgstr ""
1945
+
1946
+ #: templates/forms/deactivation/form.php:448
1947
+ msgid "Kindly tell us the reason so we can improve."
1948
+ msgstr ""
1949
+
1950
+ #: templates/forms/deactivation/form.php:478
1951
+ msgid "Snooze & %s"
1952
+ msgstr ""
1953
+
1954
+ #: templates/forms/deactivation/form.php:638
1955
+ msgid "Yes - %s"
1956
+ msgstr ""
1957
+
1958
+ #: templates/forms/deactivation/form.php:645
1959
+ msgid "Skip & %s"
1960
+ msgstr ""
1961
+
1962
+ #: templates/forms/deactivation/retry-skip.php:21
1963
+ msgid "Click here to use the plugin anonymously"
1964
+ msgstr ""
1965
+
1966
+ #: templates/forms/deactivation/retry-skip.php:23
1967
+ msgid "You might have missed it, but you don't have to share any data and can just %s the opt-in."
1968
+ msgstr ""
freemius/start.php CHANGED
@@ -1,530 +1,530 @@
1
- <?php
2
- /**
3
- * @package Freemius
4
- * @copyright Copyright (c) 2015, Freemius, Inc.
5
- * @license https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3
6
- * @since 1.0.3
7
- */
8
-
9
- if ( ! defined( 'ABSPATH' ) ) {
10
- exit;
11
- }
12
-
13
- /**
14
- * Freemius SDK Version.
15
- *
16
- * @var string
17
- */
18
- $this_sdk_version = '2.4.5';
19
-
20
- #region SDK Selection Logic --------------------------------------------------------------------
21
-
22
- /**
23
- * Special logic added on 1.1.6 to make sure that every Freemius powered plugin
24
- * will ALWAYS be loaded with the newest SDK from the active Freemius powered plugins.
25
- *
26
- * Since Freemius SDK is backward compatible, this will make sure that all Freemius powered
27
- * plugins will run correctly.
28
- *
29
- * @since 1.1.6
30
- */
31
-
32
- global $fs_active_plugins;
33
-
34
- if ( ! function_exists( 'fs_find_caller_plugin_file' ) ) {
35
- // Require SDK essentials.
36
- require_once dirname( __FILE__ ) . '/includes/fs-essential-functions.php';
37
- }
38
-
39
- /**
40
- * This complex logic fixes symlink issues (e.g. with Vargant). The logic assumes
41
- * that if it's a file from an SDK running in a theme, the location of the SDK
42
- * is in the main theme's folder.
43
- *
44
- * @author Vova Feldman (@svovaf)
45
- * @since 1.2.2.6
46
- */
47
- $file_path = fs_normalize_path( __FILE__ );
48
- $fs_root_path = dirname( $file_path );
49
- /**
50
- * Get the themes directory where the active theme is located (not passing the stylesheet will make WordPress
51
- * assume that the themes directory is inside `wp-content`.
52
- *
53
- * @author Leo Fajardo (@leorw)
54
- * @since 2.2.3
55
- */
56
- $themes_directory = get_theme_root( get_stylesheet() );
57
- $themes_directory_name = basename( $themes_directory );
58
- $theme_candidate_basename = basename( dirname( $fs_root_path ) ) . '/' . basename( $fs_root_path );
59
-
60
- if ( $file_path == fs_normalize_path( realpath( trailingslashit( $themes_directory ) . $theme_candidate_basename . '/' . basename( $file_path ) ) )
61
- ) {
62
- $this_sdk_relative_path = '../' . $themes_directory_name . '/' . $theme_candidate_basename;
63
- $is_theme = true;
64
- } else {
65
- $this_sdk_relative_path = plugin_basename( $fs_root_path );
66
- $is_theme = false;
67
- }
68
-
69
- if ( ! isset( $fs_active_plugins ) ) {
70
- // Load all Freemius powered active plugins.
71
- $fs_active_plugins = get_option( 'fs_active_plugins', new stdClass() );
72
-
73
- if ( ! isset( $fs_active_plugins->plugins ) ) {
74
- $fs_active_plugins->plugins = array();
75
- }
76
- }
77
-
78
- if ( empty( $fs_active_plugins->abspath ) ) {
79
- /**
80
- * Store the WP install absolute path reference to identify environment change
81
- * while replicating the storage.
82
- *
83
- * @author Vova Feldman (@svovaf)
84
- * @since 1.2.1.7
85
- */
86
- $fs_active_plugins->abspath = ABSPATH;
87
- } else {
88
- if ( ABSPATH !== $fs_active_plugins->abspath ) {
89
- /**
90
- * WordPress path has changed, cleanup the SDK references cache.
91
- * This resolves issues triggered when spinning a staging environments
92
- * while replicating the database.
93
- *
94
- * @author Vova Feldman (@svovaf)
95
- * @since 1.2.1.7
96
- */
97
- $fs_active_plugins->abspath = ABSPATH;
98
- $fs_active_plugins->plugins = array();
99
- unset( $fs_active_plugins->newest );
100
- } else {
101
- /**
102
- * Make sure SDK references are still valid. This resolves
103
- * issues when users hard delete modules via FTP.
104
- *
105
- * @author Vova Feldman (@svovaf)
106
- * @since 1.2.1.7
107
- */
108
- $has_changes = false;
109
- foreach ( $fs_active_plugins->plugins as $sdk_path => $data ) {
110
- if ( ! file_exists( ( isset( $data->type ) && 'theme' === $data->type ? $themes_directory : WP_PLUGIN_DIR ) . '/' . $sdk_path ) ) {
111
- unset( $fs_active_plugins->plugins[ $sdk_path ] );
112
-
113
- if (
114
- ! empty( $fs_active_plugins->newest ) &&
115
- $sdk_path === $fs_active_plugins->newest->sdk_path
116
- ) {
117
- unset( $fs_active_plugins->newest );
118
- }
119
-
120
- $has_changes = true;
121
- }
122
- }
123
-
124
- if ( $has_changes ) {
125
- if ( empty( $fs_active_plugins->plugins ) ) {
126
- unset( $fs_active_plugins->newest );
127
- }
128
-
129
- update_option( 'fs_active_plugins', $fs_active_plugins );
130
- }
131
- }
132
- }
133
-
134
- if ( ! function_exists( 'fs_find_direct_caller_plugin_file' ) ) {
135
- require_once dirname( __FILE__ ) . '/includes/supplements/fs-essential-functions-1.1.7.1.php';
136
- }
137
-
138
- if ( ! function_exists( 'fs_get_plugins' ) ) {
139
- require_once dirname( __FILE__ ) . '/includes/supplements/fs-essential-functions-2.2.1.php';
140
- }
141
-
142
- // Update current SDK info based on the SDK path.
143
- if ( ! isset( $fs_active_plugins->plugins[ $this_sdk_relative_path ] ) ||
144
- $this_sdk_version != $fs_active_plugins->plugins[ $this_sdk_relative_path ]->version
145
- ) {
146
- if ( $is_theme ) {
147
- $plugin_path = basename( dirname( $this_sdk_relative_path ) );
148
- } else {
149
- $plugin_path = plugin_basename( fs_find_direct_caller_plugin_file( $file_path ) );
150
- }
151
-
152
- $fs_active_plugins->plugins[ $this_sdk_relative_path ] = (object) array(
153
- 'version' => $this_sdk_version,
154
- 'type' => ( $is_theme ? 'theme' : 'plugin' ),
155
- 'timestamp' => time(),
156
- 'plugin_path' => $plugin_path,
157
- );
158
- }
159
-
160
- $is_current_sdk_newest = isset( $fs_active_plugins->newest ) && ( $this_sdk_relative_path == $fs_active_plugins->newest->sdk_path );
161
-
162
- if ( ! isset( $fs_active_plugins->newest ) ) {
163
- /**
164
- * This will be executed only once, for the first time a Freemius powered plugin is activated.
165
- */
166
- fs_update_sdk_newest_version( $this_sdk_relative_path, $fs_active_plugins->plugins[ $this_sdk_relative_path ]->plugin_path );
167
-
168
- $is_current_sdk_newest = true;
169
- } else if ( version_compare( $fs_active_plugins->newest->version, $this_sdk_version, '<' ) ) {
170
- /**
171
- * Current SDK is newer than the newest stored SDK.
172
- */
173
- fs_update_sdk_newest_version( $this_sdk_relative_path, $fs_active_plugins->plugins[ $this_sdk_relative_path ]->plugin_path );
174
-
175
- if ( class_exists( 'Freemius' ) ) {
176
- // Older SDK version was already loaded.
177
-
178
- if ( ! $fs_active_plugins->newest->in_activation ) {
179
- // Re-order plugins to load this plugin first.
180
- fs_newest_sdk_plugin_first();
181
- }
182
-
183
- // Refresh page.
184
- fs_redirect( $_SERVER['REQUEST_URI'] );
185
- }
186
- } else {
187
- if ( ! function_exists( 'get_plugins' ) ) {
188
- require_once ABSPATH . 'wp-admin/includes/plugin.php';
189
- }
190
-
191
- $fs_newest_sdk = $fs_active_plugins->newest;
192
- $fs_newest_sdk = $fs_active_plugins->plugins[ $fs_newest_sdk->sdk_path ];
193
-
194
- $is_newest_sdk_type_theme = ( isset( $fs_newest_sdk->type ) && 'theme' === $fs_newest_sdk->type );
195
-
196
- if ( ! $is_newest_sdk_type_theme ) {
197
- $is_newest_sdk_plugin_active = is_plugin_active( $fs_newest_sdk->plugin_path );
198
- } else {
199
- $current_theme = wp_get_theme();
200
- $is_newest_sdk_plugin_active = ( $current_theme->stylesheet === $fs_newest_sdk->plugin_path );
201
-
202
- $current_theme_parent = $current_theme->parent();
203
-
204
- /**
205
- * If the current theme is a child of the theme that has the newest SDK, this prevents a redirects loop
206
- * from happening by keeping the SDK info stored in the `fs_active_plugins` option.
207
- */
208
- if ( ! $is_newest_sdk_plugin_active && $current_theme_parent instanceof WP_Theme ) {
209
- $is_newest_sdk_plugin_active = ( $fs_newest_sdk->plugin_path === $current_theme_parent->stylesheet );
210
- }
211
- }
212
-
213
- if ( $is_current_sdk_newest &&
214
- ! $is_newest_sdk_plugin_active &&
215
- ! $fs_active_plugins->newest->in_activation
216
- ) {
217
- // If current SDK is the newest and the plugin is NOT active, it means
218
- // that the current plugin in activation mode.
219
- $fs_active_plugins->newest->in_activation = true;
220
- update_option( 'fs_active_plugins', $fs_active_plugins );
221
- }
222
-
223
- if ( ! $is_theme ) {
224
- $sdk_starter_path = fs_normalize_path( WP_PLUGIN_DIR . '/' . $this_sdk_relative_path . '/start.php' );
225
- } else {
226
- $sdk_starter_path = fs_normalize_path(
227
- $themes_directory
228
- . '/'
229
- . str_replace( "../{$themes_directory_name}/", '', $this_sdk_relative_path )
230
- . '/start.php' );
231
- }
232
-
233
- $is_newest_sdk_path_valid = ( $is_newest_sdk_plugin_active || $fs_active_plugins->newest->in_activation ) && file_exists( $sdk_starter_path );
234
-
235
- if ( ! $is_newest_sdk_path_valid && ! $is_current_sdk_newest ) {
236
- // Plugin with newest SDK is no longer active, or SDK was moved to a different location.
237
- unset( $fs_active_plugins->plugins[ $fs_active_plugins->newest->sdk_path ] );
238
- }
239
-
240
- if ( ! ( $is_newest_sdk_plugin_active || $fs_active_plugins->newest->in_activation ) ||
241
- ! $is_newest_sdk_path_valid ||
242
- // Is newest SDK downgraded.
243
- ( $this_sdk_relative_path == $fs_active_plugins->newest->sdk_path &&
244
- version_compare( $fs_active_plugins->newest->version, $this_sdk_version, '>' ) )
245
- ) {
246
- /**
247
- * Plugin with newest SDK is no longer active.
248
- * OR
249
- * The newest SDK was in the current plugin. BUT, seems like the version of
250
- * the SDK was downgraded to a lower SDK.
251
- */
252
- // Find the active plugin with the newest SDK version and update the newest reference.
253
- fs_fallback_to_newest_active_sdk();
254
- } else {
255
- if ( $is_newest_sdk_plugin_active &&
256
- $this_sdk_relative_path == $fs_active_plugins->newest->sdk_path &&
257
- ( $fs_active_plugins->newest->in_activation ||
258
- ( class_exists( 'Freemius' ) && ( ! defined( 'WP_FS__SDK_VERSION' ) || version_compare( WP_FS__SDK_VERSION, $this_sdk_version, '<' ) ) )
259
- )
260
-
261
- ) {
262
- if ( $fs_active_plugins->newest->in_activation && ! $is_newest_sdk_type_theme ) {
263
- // Plugin no more in activation.
264
- $fs_active_plugins->newest->in_activation = false;
265
- update_option( 'fs_active_plugins', $fs_active_plugins );
266
- }
267
-
268
- // Reorder plugins to load plugin with newest SDK first.
269
- if ( fs_newest_sdk_plugin_first() ) {
270
- // Refresh page after re-order to make sure activated plugin loads newest SDK.
271
- if ( class_exists( 'Freemius' ) ) {
272
- fs_redirect( $_SERVER['REQUEST_URI'] );
273
- }
274
- }
275
- }
276
- }
277
- }
278
-
279
- if ( class_exists( 'Freemius' ) ) {
280
- // SDK was already loaded.
281
- return;
282
- }
283
-
284
- if ( version_compare( $this_sdk_version, $fs_active_plugins->newest->version, '<' ) ) {
285
- $newest_sdk = $fs_active_plugins->plugins[ $fs_active_plugins->newest->sdk_path ];
286
-
287
- $plugins_or_theme_dir_path = ( ! isset( $newest_sdk->type ) || 'theme' !== $newest_sdk->type ) ?
288
- WP_PLUGIN_DIR :
289
- $themes_directory;
290
-
291
- $newest_sdk_starter = fs_normalize_path(
292
- $plugins_or_theme_dir_path
293
- . '/'
294
- . str_replace( "../{$themes_directory_name}/", '', $fs_active_plugins->newest->sdk_path )
295
- . '/start.php' );
296
-
297
- if ( file_exists( $newest_sdk_starter ) ) {
298
- // Reorder plugins to load plugin with newest SDK first.
299
- fs_newest_sdk_plugin_first();
300
-
301
- // There's a newer SDK version, load it instead of the current one!
302
- require_once $newest_sdk_starter;
303
-
304
- return;
305
- }
306
- }
307
-
308
- #endregion SDK Selection Logic --------------------------------------------------------------------
309
-
310
- #region Hooks & Filters Collection --------------------------------------------------------------------
311
-
312
- /**
313
- * Freemius hooks (actions & filters) tags structure:
314
- *
315
- * fs_{filter/action_name}_{plugin_slug}
316
- *
317
- * --------------------------------------------------------
318
- *
319
- * Usage with WordPress' add_action() / add_filter():
320
- *
321
- * add_action('fs_{filter/action_name}_{plugin_slug}', $callable);
322
- *
323
- * --------------------------------------------------------
324
- *
325
- * Usage with Freemius' instance add_action() / add_filter():
326
- *
327
- * // No need to add 'fs_' prefix nor '_{plugin_slug}' suffix.
328
- * my_freemius()->add_action('{action_name}', $callable);
329
- *
330
- * --------------------------------------------------------
331
- *
332
- * Freemius filters collection:
333
- *
334
- * fs_connect_url_{plugin_slug}
335
- * fs_trial_promotion_message_{plugin_slug}
336
- * fs_is_long_term_user_{plugin_slug}
337
- * fs_uninstall_reasons_{plugin_slug}
338
- * fs_is_plugin_update_{plugin_slug}
339
- * fs_api_domains_{plugin_slug}
340
- * fs_email_template_sections_{plugin_slug}
341
- * fs_support_forum_submenu_{plugin_slug}
342
- * fs_support_forum_url_{plugin_slug}
343
- * fs_connect_message_{plugin_slug}
344
- * fs_connect_message_on_update_{plugin_slug}
345
- * fs_uninstall_confirmation_message_{plugin_slug}
346
- * fs_pending_activation_message_{plugin_slug}
347
- * fs_is_submenu_visible_{plugin_slug}
348
- * fs_plugin_icon_{plugin_slug}
349
- * fs_show_trial_{plugin_slug}
350
- *
351
- * --------------------------------------------------------
352
- *
353
- * Freemius actions collection:
354
- *
355
- * fs_after_license_loaded_{plugin_slug}
356
- * fs_after_license_change_{plugin_slug}
357
- * fs_after_plans_sync_{plugin_slug}
358
- *
359
- * fs_after_account_details_{plugin_slug}
360
- * fs_after_account_user_sync_{plugin_slug}
361
- * fs_after_account_plan_sync_{plugin_slug}
362
- * fs_before_account_load_{plugin_slug}
363
- * fs_after_account_connection_{plugin_slug}
364
- * fs_account_property_edit_{plugin_slug}
365
- * fs_account_email_verified_{plugin_slug}
366
- * fs_account_page_load_before_departure_{plugin_slug}
367
- * fs_before_account_delete_{plugin_slug}
368
- * fs_after_account_delete_{plugin_slug}
369
- *
370
- * fs_sdk_version_update_{plugin_slug}
371
- * fs_plugin_version_update_{plugin_slug}
372
- *
373
- * fs_initiated_{plugin_slug}
374
- * fs_after_init_plugin_registered_{plugin_slug}
375
- * fs_after_init_plugin_anonymous_{plugin_slug}
376
- * fs_after_init_plugin_pending_activations_{plugin_slug}
377
- * fs_after_init_addon_registered_{plugin_slug}
378
- * fs_after_init_addon_anonymous_{plugin_slug}
379
- * fs_after_init_addon_pending_activations_{plugin_slug}
380
- *
381
- * fs_after_premium_version_activation_{plugin_slug}
382
- * fs_after_free_version_reactivation_{plugin_slug}
383
- *
384
- * fs_after_uninstall_{plugin_slug}
385
- * fs_before_admin_menu_init_{plugin_slug}
386
- */
387
-
388
- #endregion Hooks & Filters Collection --------------------------------------------------------------------
389
-
390
- if ( ! class_exists( 'Freemius' ) ) {
391
-
392
- if ( ! defined( 'WP_FS__SDK_VERSION' ) ) {
393
- define( 'WP_FS__SDK_VERSION', $this_sdk_version );
394
- }
395
-
396
- $plugins_or_theme_dir_path = fs_normalize_path( trailingslashit( $is_theme ?
397
- $themes_directory :
398
- WP_PLUGIN_DIR ) );
399
-
400
- if ( 0 === strpos( $file_path, $plugins_or_theme_dir_path ) ) {
401
- // No symlinks
402
- } else {
403
- /**
404
- * This logic finds the SDK symlink and set WP_FS__DIR to use it.
405
- *
406
- * @author Vova Feldman (@svovaf)
407
- * @since 1.2.2.5
408
- */
409
- $sdk_symlink = null;
410
-
411
- // Try to load SDK's symlink from cache.
412
- if ( isset( $fs_active_plugins->plugins[ $this_sdk_relative_path ] ) &&
413
- is_object( $fs_active_plugins->plugins[ $this_sdk_relative_path ] ) &&
414
- ! empty( $fs_active_plugins->plugins[ $this_sdk_relative_path ]->sdk_symlink )
415
- ) {
416
- $sdk_symlink = $fs_active_plugins->plugins[ $this_sdk_relative_path ]->sdk_symlink;
417
- if ( 0 === strpos( $sdk_symlink, $plugins_or_theme_dir_path ) ) {
418
- /**
419
- * Make the symlink path relative.
420
- *
421
- * @author Leo Fajardo (@leorw)
422
- */
423
- $sdk_symlink = substr( $sdk_symlink, strlen( $plugins_or_theme_dir_path ) );
424
-
425
- $fs_active_plugins->plugins[ $this_sdk_relative_path ]->sdk_symlink = $sdk_symlink;
426
- update_option( 'fs_active_plugins', $fs_active_plugins );
427
- }
428
-
429
- $realpath = realpath( $plugins_or_theme_dir_path . $sdk_symlink );
430
- if ( ! is_string( $realpath ) || ! file_exists( $realpath ) ) {
431
- $sdk_symlink = null;
432
- }
433
- }
434
-
435
- if ( empty( $sdk_symlink ) ) // Has symlinks, therefore, we need to configure WP_FS__DIR based on the symlink.
436
- {
437
- $partial_path_right = basename( $file_path );
438
- $partial_path_left = dirname( $file_path );
439
- $realpath = realpath( $plugins_or_theme_dir_path . $partial_path_right );
440
-
441
- while ( '/' !== $partial_path_left &&
442
- ( false === $realpath || $file_path !== fs_normalize_path( $realpath ) )
443
- ) {
444
- $partial_path_right = trailingslashit( basename( $partial_path_left ) ) . $partial_path_right;
445
- $partial_path_left_prev = $partial_path_left;
446
- $partial_path_left = dirname( $partial_path_left_prev );
447
-
448
- /**
449
- * Avoid infinite loop if for example `$partial_path_left_prev` is `C:/`, in this case,
450
- * `dirname( 'C:/' )` will return `C:/`.
451
- *
452
- * @author Leo Fajardo (@leorw)
453
- */
454
- if ( $partial_path_left === $partial_path_left_prev ) {
455
- $partial_path_left = '';
456
- break;
457
- }
458
-
459
- $realpath = realpath( $plugins_or_theme_dir_path . $partial_path_right );
460
- }
461
-
462
- if ( ! empty( $partial_path_left ) && '/' !== $partial_path_left ) {
463
- $sdk_symlink = fs_normalize_path( dirname( $partial_path_right ) );
464
-
465
- // Cache value.
466
- if ( isset( $fs_active_plugins->plugins[ $this_sdk_relative_path ] ) &&
467
- is_object( $fs_active_plugins->plugins[ $this_sdk_relative_path ] )
468
- ) {
469
- $fs_active_plugins->plugins[ $this_sdk_relative_path ]->sdk_symlink = $sdk_symlink;
470
- update_option( 'fs_active_plugins', $fs_active_plugins );
471
- }
472
- }
473
- }
474
-
475
- if ( ! empty( $sdk_symlink ) ) {
476
- // Set SDK dir to the symlink path.
477
- define( 'WP_FS__DIR', $plugins_or_theme_dir_path . $sdk_symlink );
478
- }
479
- }
480
-
481
- // Load SDK files.
482
- require_once dirname( __FILE__ ) . '/require.php';
483
-
484
- /**
485
- * Quick shortcut to get Freemius for specified plugin.
486
- * Used by various templates.
487
- *
488
- * @param number $module_id
489
- *
490
- * @return Freemius
491
- */
492
- function freemius( $module_id ) {
493
- return Freemius::instance( $module_id );
494
- }
495
-
496
- /**
497
- * @param string $slug
498
- * @param number $plugin_id
499
- * @param string $public_key
500
- * @param bool $is_live Is live or test plugin.
501
- * @param bool $is_premium Hints freemius if running the premium plugin or not.
502
- *
503
- * @return Freemius
504
- *
505
- * @deprecated Please use fs_dynamic_init().
506
- */
507
- function fs_init( $slug, $plugin_id, $public_key, $is_live = true, $is_premium = true ) {
508
- $fs = Freemius::instance( $plugin_id, $slug, true );
509
- $fs->init( $plugin_id, $public_key, $is_live, $is_premium );
510
-
511
- return $fs;
512
- }
513
-
514
- /**
515
- * @param array <string,string|bool|array> $module Plugin or Theme details.
516
- *
517
- * @return Freemius
518
- * @throws Freemius_Exception
519
- */
520
- function fs_dynamic_init( $module ) {
521
- $fs = Freemius::instance( $module['id'], $module['slug'], true );
522
- $fs->dynamic_init( $module );
523
-
524
- return $fs;
525
- }
526
-
527
- function fs_dump_log() {
528
- FS_Logger::dump();
529
- }
530
- }
1
+ <?php
2
+ /**
3
+ * @package Freemius
4
+ * @copyright Copyright (c) 2015, Freemius, Inc.
5
+ * @license https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3
6
+ * @since 1.0.3
7
+ */
8
+
9
+ if ( ! defined( 'ABSPATH' ) ) {
10
+ exit;
11
+ }
12
+
13
+ /**
14
+ * Freemius SDK Version.
15
+ *
16
+ * @var string
17
+ */
18
+ $this_sdk_version = '2.4.5';
19
+
20
+ #region SDK Selection Logic --------------------------------------------------------------------
21
+
22
+ /**
23
+ * Special logic added on 1.1.6 to make sure that every Freemius powered plugin
24
+ * will ALWAYS be loaded with the newest SDK from the active Freemius powered plugins.
25
+ *
26
+ * Since Freemius SDK is backward compatible, this will make sure that all Freemius powered
27
+ * plugins will run correctly.
28
+ *
29
+ * @since 1.1.6
30
+ */
31
+
32
+ global $fs_active_plugins;
33
+
34
+ if ( ! function_exists( 'fs_find_caller_plugin_file' ) ) {
35
+ // Require SDK essentials.
36
+ require_once dirname( __FILE__ ) . '/includes/fs-essential-functions.php';
37
+ }
38
+
39
+ /**
40
+ * This complex logic fixes symlink issues (e.g. with Vargant). The logic assumes
41
+ * that if it's a file from an SDK running in a theme, the location of the SDK
42
+ * is in the main theme's folder.
43
+ *
44
+ * @author Vova Feldman (@svovaf)
45
+ * @since 1.2.2.6
46
+ */
47
+ $file_path = fs_normalize_path( __FILE__ );
48
+ $fs_root_path = dirname( $file_path );
49
+ /**
50
+ * Get the themes directory where the active theme is located (not passing the stylesheet will make WordPress
51
+ * assume that the themes directory is inside `wp-content`.
52
+ *
53
+ * @author Leo Fajardo (@leorw)
54
+ * @since 2.2.3
55
+ */
56
+ $themes_directory = get_theme_root( get_stylesheet() );
57
+ $themes_directory_name = basename( $themes_directory );
58
+ $theme_candidate_basename = basename( dirname( $fs_root_path ) ) . '/' . basename( $fs_root_path );
59
+
60
+ if ( $file_path == fs_normalize_path( realpath( trailingslashit( $themes_directory ) . $theme_candidate_basename . '/' . basename( $file_path ) ) )
61
+ ) {
62
+ $this_sdk_relative_path = '../' . $themes_directory_name . '/' . $theme_candidate_basename;
63
+ $is_theme = true;
64
+ } else {
65
+ $this_sdk_relative_path = plugin_basename( $fs_root_path );
66
+ $is_theme = false;
67
+ }
68
+
69
+ if ( ! isset( $fs_active_plugins ) ) {
70
+ // Load all Freemius powered active plugins.
71
+ $fs_active_plugins = get_option( 'fs_active_plugins', new stdClass() );
72
+
73
+ if ( ! isset( $fs_active_plugins->plugins ) ) {
74
+ $fs_active_plugins->plugins = array();
75
+ }
76
+ }
77
+
78
+ if ( empty( $fs_active_plugins->abspath ) ) {
79
+ /**
80
+ * Store the WP install absolute path reference to identify environment change
81
+ * while replicating the storage.
82
+ *
83
+ * @author Vova Feldman (@svovaf)
84
+ * @since 1.2.1.7
85
+ */
86
+ $fs_active_plugins->abspath = ABSPATH;
87
+ } else {
88
+ if ( ABSPATH !== $fs_active_plugins->abspath ) {
89
+ /**
90
+ * WordPress path has changed, cleanup the SDK references cache.
91
+ * This resolves issues triggered when spinning a staging environments
92
+ * while replicating the database.
93
+ *
94
+ * @author Vova Feldman (@svovaf)
95
+ * @since 1.2.1.7
96
+ */
97
+ $fs_active_plugins->abspath = ABSPATH;
98
+ $fs_active_plugins->plugins = array();
99
+ unset( $fs_active_plugins->newest );
100
+ } else {
101
+ /**
102
+ * Make sure SDK references are still valid. This resolves
103
+ * issues when users hard delete modules via FTP.
104
+ *
105
+ * @author Vova Feldman (@svovaf)
106
+ * @since 1.2.1.7
107
+ */
108
+ $has_changes = false;
109
+ foreach ( $fs_active_plugins->plugins as $sdk_path => $data ) {
110
+ if ( ! file_exists( ( isset( $data->type ) && 'theme' === $data->type ? $themes_directory : WP_PLUGIN_DIR ) . '/' . $sdk_path ) ) {
111
+ unset( $fs_active_plugins->plugins[ $sdk_path ] );
112
+
113
+ if (
114
+ ! empty( $fs_active_plugins->newest ) &&
115
+ $sdk_path === $fs_active_plugins->newest->sdk_path
116
+ ) {
117
+ unset( $fs_active_plugins->newest );
118
+ }
119
+
120
+ $has_changes = true;
121
+ }
122
+ }
123
+
124
+ if ( $has_changes ) {
125
+ if ( empty( $fs_active_plugins->plugins ) ) {
126
+ unset( $fs_active_plugins->newest );
127
+ }
128
+
129
+ update_option( 'fs_active_plugins', $fs_active_plugins );
130
+ }
131
+ }
132
+ }
133
+
134
+ if ( ! function_exists( 'fs_find_direct_caller_plugin_file' ) ) {
135
+ require_once dirname( __FILE__ ) . '/includes/supplements/fs-essential-functions-1.1.7.1.php';
136
+ }
137
+
138
+ if ( ! function_exists( 'fs_get_plugins' ) ) {
139
+ require_once dirname( __FILE__ ) . '/includes/supplements/fs-essential-functions-2.2.1.php';
140
+ }
141
+
142
+ // Update current SDK info based on the SDK path.
143
+ if ( ! isset( $fs_active_plugins->plugins[ $this_sdk_relative_path ] ) ||
144
+ $this_sdk_version != $fs_active_plugins->plugins[ $this_sdk_relative_path ]->version
145
+ ) {
146
+ if ( $is_theme ) {
147
+ $plugin_path = basename( dirname( $this_sdk_relative_path ) );
148
+ } else {
149
+ $plugin_path = plugin_basename( fs_find_direct_caller_plugin_file( $file_path ) );
150
+ }
151
+
152
+ $fs_active_plugins->plugins[ $this_sdk_relative_path ] = (object) array(
153
+ 'version' => $this_sdk_version,
154
+ 'type' => ( $is_theme ? 'theme' : 'plugin' ),
155
+ 'timestamp' => time(),
156
+ 'plugin_path' => $plugin_path,
157
+ );
158
+ }
159
+
160
+ $is_current_sdk_newest = isset( $fs_active_plugins->newest ) && ( $this_sdk_relative_path == $fs_active_plugins->newest->sdk_path );
161
+
162
+ if ( ! isset( $fs_active_plugins->newest ) ) {
163
+ /**
164
+ * This will be executed only once, for the first time a Freemius powered plugin is activated.
165
+ */
166
+ fs_update_sdk_newest_version( $this_sdk_relative_path, $fs_active_plugins->plugins[ $this_sdk_relative_path ]->plugin_path );
167
+
168
+ $is_current_sdk_newest = true;
169
+ } else if ( version_compare( $fs_active_plugins->newest->version, $this_sdk_version, '<' ) ) {
170
+ /**
171
+ * Current SDK is newer than the newest stored SDK.
172
+ */
173
+ fs_update_sdk_newest_version( $this_sdk_relative_path, $fs_active_plugins->plugins[ $this_sdk_relative_path ]->plugin_path );
174
+
175
+ if ( class_exists( 'Freemius' ) ) {
176
+ // Older SDK version was already loaded.
177
+
178
+ if ( ! $fs_active_plugins->newest->in_activation ) {
179
+ // Re-order plugins to load this plugin first.
180
+ fs_newest_sdk_plugin_first();
181
+ }
182
+
183
+ // Refresh page.
184
+ fs_redirect( $_SERVER['REQUEST_URI'] );
185
+ }
186
+ } else {
187
+ if ( ! function_exists( 'get_plugins' ) ) {
188
+ require_once ABSPATH . 'wp-admin/includes/plugin.php';
189
+ }
190
+
191
+ $fs_newest_sdk = $fs_active_plugins->newest;
192
+ $fs_newest_sdk = $fs_active_plugins->plugins[ $fs_newest_sdk->sdk_path ];
193
+
194
+ $is_newest_sdk_type_theme = ( isset( $fs_newest_sdk->type ) && 'theme' === $fs_newest_sdk->type );
195
+
196
+ if ( ! $is_newest_sdk_type_theme ) {
197
+ $is_newest_sdk_plugin_active = is_plugin_active( $fs_newest_sdk->plugin_path );
198
+ } else {
199
+ $current_theme = wp_get_theme();
200
+ $is_newest_sdk_plugin_active = ( $current_theme->stylesheet === $fs_newest_sdk->plugin_path );
201
+
202
+ $current_theme_parent = $current_theme->parent();
203
+
204
+ /**
205
+ * If the current theme is a child of the theme that has the newest SDK, this prevents a redirects loop
206
+ * from happening by keeping the SDK info stored in the `fs_active_plugins` option.
207
+ */
208
+ if ( ! $is_newest_sdk_plugin_active && $current_theme_parent instanceof WP_Theme ) {
209
+ $is_newest_sdk_plugin_active = ( $fs_newest_sdk->plugin_path === $current_theme_parent->stylesheet );
210
+ }
211
+ }
212
+
213
+ if ( $is_current_sdk_newest &&
214
+ ! $is_newest_sdk_plugin_active &&
215
+ ! $fs_active_plugins->newest->in_activation
216
+ ) {
217
+ // If current SDK is the newest and the plugin is NOT active, it means
218
+ // that the current plugin in activation mode.
219
+ $fs_active_plugins->newest->in_activation = true;
220
+ update_option( 'fs_active_plugins', $fs_active_plugins );
221
+ }
222
+
223
+ if ( ! $is_theme ) {
224
+ $sdk_starter_path = fs_normalize_path( WP_PLUGIN_DIR . '/' . $this_sdk_relative_path . '/start.php' );
225
+ } else {
226
+ $sdk_starter_path = fs_normalize_path(
227
+ $themes_directory
228
+ . '/'
229
+ . str_replace( "../{$themes_directory_name}/", '', $this_sdk_relative_path )
230
+ . '/start.php' );
231
+ }
232
+
233
+ $is_newest_sdk_path_valid = ( $is_newest_sdk_plugin_active || $fs_active_plugins->newest->in_activation ) && file_exists( $sdk_starter_path );
234
+
235
+ if ( ! $is_newest_sdk_path_valid && ! $is_current_sdk_newest ) {
236
+ // Plugin with newest SDK is no longer active, or SDK was moved to a different location.
237
+ unset( $fs_active_plugins->plugins[ $fs_active_plugins->newest->sdk_path ] );
238
+ }
239
+
240
+ if ( ! ( $is_newest_sdk_plugin_active || $fs_active_plugins->newest->in_activation ) ||
241
+ ! $is_newest_sdk_path_valid ||
242
+ // Is newest SDK downgraded.
243
+ ( $this_sdk_relative_path == $fs_active_plugins->newest->sdk_path &&
244
+ version_compare( $fs_active_plugins->newest->version, $this_sdk_version, '>' ) )
245
+ ) {
246
+ /**
247
+ * Plugin with newest SDK is no longer active.
248
+ * OR
249
+ * The newest SDK was in the current plugin. BUT, seems like the version of
250
+ * the SDK was downgraded to a lower SDK.
251
+ */
252
+ // Find the active plugin with the newest SDK version and update the newest reference.
253
+ fs_fallback_to_newest_active_sdk();
254
+ } else {
255
+ if ( $is_newest_sdk_plugin_active &&
256
+ $this_sdk_relative_path == $fs_active_plugins->newest->sdk_path &&
257
+ ( $fs_active_plugins->newest->in_activation ||
258
+ ( class_exists( 'Freemius' ) && ( ! defined( 'WP_FS__SDK_VERSION' ) || version_compare( WP_FS__SDK_VERSION, $this_sdk_version, '<' ) ) )
259
+ )
260
+
261
+ ) {
262
+ if ( $fs_active_plugins->newest->in_activation && ! $is_newest_sdk_type_theme ) {
263
+ // Plugin no more in activation.
264
+ $fs_active_plugins->newest->in_activation = false;
265
+ update_option( 'fs_active_plugins', $fs_active_plugins );
266
+ }
267
+
268
+ // Reorder plugins to load plugin with newest SDK first.
269
+ if ( fs_newest_sdk_plugin_first() ) {
270
+ // Refresh page after re-order to make sure activated plugin loads newest SDK.
271
+ if ( class_exists( 'Freemius' ) ) {
272
+ fs_redirect( $_SERVER['REQUEST_URI'] );
273
+ }
274
+ }
275
+ }
276
+ }
277
+ }
278
+
279
+ if ( class_exists( 'Freemius' ) ) {
280
+ // SDK was already loaded.
281
+ return;
282
+ }
283
+
284
+ if ( version_compare( $this_sdk_version, $fs_active_plugins->newest->version, '<' ) ) {
285
+ $newest_sdk = $fs_active_plugins->plugins[ $fs_active_plugins->newest->sdk_path ];
286
+
287
+ $plugins_or_theme_dir_path = ( ! isset( $newest_sdk->type ) || 'theme' !== $newest_sdk->type ) ?
288
+ WP_PLUGIN_DIR :
289
+ $themes_directory;
290
+
291
+ $newest_sdk_starter = fs_normalize_path(
292
+ $plugins_or_theme_dir_path
293
+ . '/'
294
+ . str_replace( "../{$themes_directory_name}/", '', $fs_active_plugins->newest->sdk_path )
295
+ . '/start.php' );
296
+
297
+ if ( file_exists( $newest_sdk_starter ) ) {
298
+ // Reorder plugins to load plugin with newest SDK first.
299
+ fs_newest_sdk_plugin_first();
300
+
301
+ // There's a newer SDK version, load it instead of the current one!
302
+ require_once $newest_sdk_starter;
303
+
304
+ return;
305
+ }
306
+ }
307
+
308
+ #endregion SDK Selection Logic --------------------------------------------------------------------
309
+
310
+ #region Hooks & Filters Collection --------------------------------------------------------------------
311
+
312
+ /**
313
+ * Freemius hooks (actions & filters) tags structure:
314
+ *
315
+ * fs_{filter/action_name}_{plugin_slug}
316
+ *
317
+ * --------------------------------------------------------
318
+ *
319
+ * Usage with WordPress' add_action() / add_filter():
320
+ *
321
+ * add_action('fs_{filter/action_name}_{plugin_slug}', $callable);
322
+ *
323
+ * --------------------------------------------------------
324
+ *
325
+ * Usage with Freemius' instance add_action() / add_filter():
326
+ *
327
+ * // No need to add 'fs_' prefix nor '_{plugin_slug}' suffix.
328
+ * my_freemius()->add_action('{action_name}', $callable);
329
+ *
330
+ * --------------------------------------------------------
331
+ *
332
+ * Freemius filters collection:
333
+ *
334
+ * fs_connect_url_{plugin_slug}
335
+ * fs_trial_promotion_message_{plugin_slug}
336
+ * fs_is_long_term_user_{plugin_slug}
337
+ * fs_uninstall_reasons_{plugin_slug}
338
+ * fs_is_plugin_update_{plugin_slug}
339
+ * fs_api_domains_{plugin_slug}
340
+ * fs_email_template_sections_{plugin_slug}
341
+ * fs_support_forum_submenu_{plugin_slug}
342
+ * fs_support_forum_url_{plugin_slug}
343
+ * fs_connect_message_{plugin_slug}
344
+ * fs_connect_message_on_update_{plugin_slug}
345
+ * fs_uninstall_confirmation_message_{plugin_slug}
346
+ * fs_pending_activation_message_{plugin_slug}
347
+ * fs_is_submenu_visible_{plugin_slug}
348
+ * fs_plugin_icon_{plugin_slug}
349
+ * fs_show_trial_{plugin_slug}
350
+ *
351
+ * --------------------------------------------------------
352
+ *
353
+ * Freemius actions collection:
354
+ *
355
+ * fs_after_license_loaded_{plugin_slug}
356
+ * fs_after_license_change_{plugin_slug}
357
+ * fs_after_plans_sync_{plugin_slug}
358
+ *
359
+ * fs_after_account_details_{plugin_slug}
360
+ * fs_after_account_user_sync_{plugin_slug}
361
+ * fs_after_account_plan_sync_{plugin_slug}
362
+ * fs_before_account_load_{plugin_slug}
363
+ * fs_after_account_connection_{plugin_slug}
364
+ * fs_account_property_edit_{plugin_slug}
365
+ * fs_account_email_verified_{plugin_slug}
366
+ * fs_account_page_load_before_departure_{plugin_slug}
367
+ * fs_before_account_delete_{plugin_slug}
368
+ * fs_after_account_delete_{plugin_slug}
369
+ *
370
+ * fs_sdk_version_update_{plugin_slug}
371
+ * fs_plugin_version_update_{plugin_slug}
372
+ *
373
+ * fs_initiated_{plugin_slug}
374
+ * fs_after_init_plugin_registered_{plugin_slug}
375
+ * fs_after_init_plugin_anonymous_{plugin_slug}
376
+ * fs_after_init_plugin_pending_activations_{plugin_slug}
377
+ * fs_after_init_addon_registered_{plugin_slug}
378
+ * fs_after_init_addon_anonymous_{plugin_slug}
379
+ * fs_after_init_addon_pending_activations_{plugin_slug}
380
+ *
381
+ * fs_after_premium_version_activation_{plugin_slug}
382
+ * fs_after_free_version_reactivation_{plugin_slug}
383
+ *
384
+ * fs_after_uninstall_{plugin_slug}
385
+ * fs_before_admin_menu_init_{plugin_slug}
386
+ */
387
+
388
+ #endregion Hooks & Filters Collection --------------------------------------------------------------------
389
+
390
+ if ( ! class_exists( 'Freemius' ) ) {
391
+
392
+ if ( ! defined( 'WP_FS__SDK_VERSION' ) ) {
393
+ define( 'WP_FS__SDK_VERSION', $this_sdk_version );
394
+ }
395
+
396
+ $plugins_or_theme_dir_path = fs_normalize_path( trailingslashit( $is_theme ?
397
+ $themes_directory :
398
+ WP_PLUGIN_DIR ) );
399
+
400
+ if ( 0 === strpos( $file_path, $plugins_or_theme_dir_path ) ) {
401
+ // No symlinks
402
+ } else {
403
+ /**
404
+ * This logic finds the SDK symlink and set WP_FS__DIR to use it.
405
+ *
406
+ * @author Vova Feldman (@svovaf)
407
+ * @since 1.2.2.5
408
+ */
409
+ $sdk_symlink = null;
410
+
411
+ // Try to load SDK's symlink from cache.
412
+ if ( isset( $fs_active_plugins->plugins[ $this_sdk_relative_path ] ) &&
413
+ is_object( $fs_active_plugins->plugins[ $this_sdk_relative_path ] ) &&
414
+ ! empty( $fs_active_plugins->plugins[ $this_sdk_relative_path ]->sdk_symlink )
415
+ ) {
416
+ $sdk_symlink = $fs_active_plugins->plugins[ $this_sdk_relative_path ]->sdk_symlink;
417
+ if ( 0 === strpos( $sdk_symlink, $plugins_or_theme_dir_path ) ) {
418
+ /**
419
+ * Make the symlink path relative.
420
+ *
421
+ * @author Leo Fajardo (@leorw)
422
+ */
423
+ $sdk_symlink = substr( $sdk_symlink, strlen( $plugins_or_theme_dir_path ) );
424
+
425
+ $fs_active_plugins->plugins[ $this_sdk_relative_path ]->sdk_symlink = $sdk_symlink;
426
+ update_option( 'fs_active_plugins', $fs_active_plugins );
427
+ }
428
+
429
+ $realpath = realpath( $plugins_or_theme_dir_path . $sdk_symlink );
430
+ if ( ! is_string( $realpath ) || ! file_exists( $realpath ) ) {
431
+ $sdk_symlink = null;
432
+ }
433
+ }
434
+
435
+ if ( empty( $sdk_symlink ) ) // Has symlinks, therefore, we need to configure WP_FS__DIR based on the symlink.
436
+ {
437
+ $partial_path_right = basename( $file_path );
438
+ $partial_path_left = dirname( $file_path );
439
+ $realpath = realpath( $plugins_or_theme_dir_path . $partial_path_right );
440
+
441
+ while ( '/' !== $partial_path_left &&
442
+ ( false === $realpath || $file_path !== fs_normalize_path( $realpath ) )
443
+ ) {
444
+ $partial_path_right = trailingslashit( basename( $partial_path_left ) ) . $partial_path_right;
445
+ $partial_path_left_prev = $partial_path_left;
446
+ $partial_path_left = dirname( $partial_path_left_prev );
447
+
448
+ /**
449
+ * Avoid infinite loop if for example `$partial_path_left_prev` is `C:/`, in this case,
450
+ * `dirname( 'C:/' )` will return `C:/`.
451
+ *
452
+ * @author Leo Fajardo (@leorw)
453
+ */
454
+ if ( $partial_path_left === $partial_path_left_prev ) {
455
+ $partial_path_left = '';
456
+ break;
457
+ }
458
+
459
+ $realpath = realpath( $plugins_or_theme_dir_path . $partial_path_right );
460
+ }
461
+
462
+ if ( ! empty( $partial_path_left ) && '/' !== $partial_path_left ) {
463
+ $sdk_symlink = fs_normalize_path( dirname( $partial_path_right ) );
464
+
465
+ // Cache value.
466
+ if ( isset( $fs_active_plugins->plugins[ $this_sdk_relative_path ] ) &&
467
+ is_object( $fs_active_plugins->plugins[ $this_sdk_relative_path ] )
468
+ ) {
469
+ $fs_active_plugins->plugins[ $this_sdk_relative_path ]->sdk_symlink = $sdk_symlink;
470
+ update_option( 'fs_active_plugins', $fs_active_plugins );
471
+ }
472
+ }
473
+ }
474
+
475
+ if ( ! empty( $sdk_symlink ) ) {
476
+ // Set SDK dir to the symlink path.
477
+ define( 'WP_FS__DIR', $plugins_or_theme_dir_path . $sdk_symlink );
478
+ }
479
+ }
480
+
481
+ // Load SDK files.
482
+ require_once dirname( __FILE__ ) . '/require.php';
483
+
484
+ /**
485
+ * Quick shortcut to get Freemius for specified plugin.
486
+ * Used by various templates.
487
+ *
488
+ * @param number $module_id
489
+ *
490
+ * @return Freemius
491
+ */
492
+ function freemius( $module_id ) {
493
+ return Freemius::instance( $module_id );
494
+ }
495
+
496
+ /**
497
+ * @param string $slug
498
+ * @param number $plugin_id
499
+ * @param string $public_key
500
+ * @param bool $is_live Is live or test plugin.
501
+ * @param bool $is_premium Hints freemius if running the premium plugin or not.
502
+ *
503
+ * @return Freemius
504
+ *
505
+ * @deprecated Please use fs_dynamic_init().
506
+ */
507
+ function fs_init( $slug, $plugin_id, $public_key, $is_live = true, $is_premium = true ) {
508
+ $fs = Freemius::instance( $plugin_id, $slug, true );
509
+ $fs->init( $plugin_id, $public_key, $is_live, $is_premium );
510
+
511
+ return $fs;
512
+ }
513
+
514
+ /**
515
+ * @param array <string,string|bool|array> $module Plugin or Theme details.
516
+ *
517
+ * @return Freemius
518
+ * @throws Freemius_Exception
519
+ */
520
+ function fs_dynamic_init( $module ) {
521
+ $fs = Freemius::instance( $module['id'], $module['slug'], true );
522
+ $fs->dynamic_init( $module );
523
+
524
+ return $fs;
525
+ }
526
+
527
+ function fs_dump_log() {
528
+ FS_Logger::dump();
529
+ }
530
+ }
includes/admin/class-admin.php CHANGED
@@ -30,6 +30,7 @@ if ( ! class_exists( 'FooGallery_Admin' ) ) {
30
  new FooGallery_Admin_Extensions();
31
  new FooGallery_Attachment_Fields();
32
  new FooGallery_Admin_Notices();
 
33
  $foogallery_admin_datasource_instance = new FooGallery_Admin_Gallery_Datasources();
34
 
35
  // include PRO promotion.
30
  new FooGallery_Admin_Extensions();
31
  new FooGallery_Attachment_Fields();
32
  new FooGallery_Admin_Notices();
33
+ new FooGallery_Admin_Gallery_Attachment_Modal();
34
  $foogallery_admin_datasource_instance = new FooGallery_Admin_Gallery_Datasources();
35
 
36
  // include PRO promotion.
includes/admin/class-gallery-attachment-modal.php ADDED
@@ -0,0 +1,821 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * FooGallery Admin Gallery Attachment Modal class
4
+ */
5
+
6
+ if ( ! class_exists( 'FooGallery_Admin_Gallery_Attachment_Modal' ) ) {
7
+
8
+ class FooGallery_Admin_Gallery_Attachment_Modal {
9
+
10
+ /**
11
+ * Primary class constructor.
12
+ */
13
+ public function __construct() {
14
+ add_action( 'admin_footer', array( $this, 'foogallery_image_editor_modal' ) );
15
+
16
+ add_action( 'wp_ajax_foogallery_attachment_modal_open', array( $this, 'ajax_open_modal' ) );
17
+ add_action( 'wp_ajax_foogallery_attachment_modal_save', array( $this, 'ajax_save_modal' ) );
18
+
19
+ add_action( 'foogallery_attachment_modal_tabs_view', array( $this, 'display_tab_main' ), 10 );
20
+ add_action( 'foogallery_attachment_modal_tabs_view', array( $this, 'display_tab_taxonomies' ), 20 );
21
+ add_action( 'foogallery_attachment_modal_tabs_view', array( $this, 'display_tab_thumbnails' ), 30 );
22
+ add_action( 'foogallery_attachment_modal_tabs_view', array( $this, 'display_tab_more' ), 200 );
23
+
24
+ add_action( 'foogallery_attachment_modal_tab_content', array( $this, 'display_tab_content_main' ), 10, 1 );
25
+ add_action( 'foogallery_attachment_modal_tab_content', array( $this, 'display_tab_content_taxonomies' ), 20, 1 );
26
+ add_action( 'foogallery_attachment_modal_tab_content', array( $this, 'display_tab_content_thumbnails' ), 30, 1 );
27
+ add_action( 'foogallery_attachment_modal_tab_content', array( $this, 'display_tab_content_more' ), 60, 1 );
28
+
29
+ add_action( 'foogallery_attachment_modal_before_thumbnail', array( $this, 'display_attachment_info' ), 10, 1 );
30
+
31
+ add_filter( 'foogallery_attachment_modal_data', array( $this, 'foogallery_attachment_modal_data_main' ), 10, 4 );
32
+ add_filter( 'foogallery_attachment_modal_data', array( $this, 'foogallery_attachment_modal_data_taxonomies' ), 20, 4 );
33
+ add_filter( 'foogallery_attachment_modal_data', array( $this, 'foogallery_attachment_modal_data_thumbnails' ), 30, 4 );
34
+ add_filter( 'foogallery_attachment_modal_data', array( $this, 'foogallery_attachment_modal_data_more' ), 60, 4 );
35
+ add_filter( 'foogallery_attachment_modal_data', array( $this, 'foogallery_attachment_modal_data_info' ), 70, 4 );
36
+
37
+ add_action( 'foogallery_attachment_modal_after_tabs', array( $this, 'foogallery_img_modal_save_btn' ) );
38
+
39
+ add_action( 'foogallery_attachment_save_data', array( $this, 'foogallery_attachment_save_data_main' ), 10, 2 );
40
+ add_action( 'foogallery_attachment_save_data', array( $this, 'foogallery_attachment_save_data_taxonomies' ), 20, 2 );
41
+ add_action( 'foogallery_attachment_save_data', array( $this, 'foogallery_attachment_save_data_thumbnails' ), 30, 2 );
42
+ add_action( 'foogallery_attachment_save_data', array( $this, 'foogallery_attachment_save_data_more' ), 60, 2 );
43
+ }
44
+
45
+ /**
46
+ * Generate image edit modal on gallery creation
47
+ */
48
+ public function ajax_open_modal() {
49
+
50
+ // Check for nonce security
51
+ if ( ! wp_verify_nonce( $_POST['nonce'], 'foogallery_attachment_modal_open' ) ) {
52
+ die ( 'Busted!');
53
+ }
54
+
55
+ $modal_data = $this->build_modal_data( $_POST );
56
+
57
+ ob_start() ?>
58
+
59
+ <div class="foogallery-image-edit-main" data-img_id="<?php echo $modal_data['img_id']; ?>" data-gallery_id="<?php echo $modal_data['gallery_id']; ?>">
60
+ <?php do_action( 'foogallery_attachment_modal_before_tab_container', $modal_data ); ?>
61
+ <div class="foogallery-image-edit-view">
62
+ <?php
63
+
64
+ do_action( 'foogallery_attachment_modal_before_thumbnail', $modal_data );
65
+
66
+ if ( $modal_data['image_attributes'] ) { ?>
67
+ <img src="<?php echo $modal_data['image_attributes'][0]; ?>" width="<?php echo $modal_data['image_attributes'][1]; ?>" height="<?php echo $modal_data['image_attributes'][2]; ?>" />
68
+ <?php } ?>
69
+ </div>
70
+ <div class="foogallery-image-edit-button">
71
+ <a target="_blank" href="<?php echo get_admin_url().'upload.php?item='.$modal_data['img_id'];?>&mode=edit" class="button"><?php _e('Edit Image', 'foogallery'); ?></a>
72
+ <a target="_blank" href="<?php echo $modal_data['img_path'];?>" class="button"><?php _e('Open Full Size Image', 'foogallery'); ?></a>
73
+ </div>
74
+ </div>
75
+
76
+ <div class="foogallery-image-edit-meta">
77
+
78
+ <?php do_action( 'foogallery_attachment_modal_before_tabs', $modal_data ); ?>
79
+
80
+ <div class="tabset">
81
+ <?php do_action( 'foogallery_attachment_modal_tabs_view', $modal_data ); ?>
82
+ </div>
83
+ <div class="tab-panels">
84
+ <form id="foogallery_attachment_modal_save_form" method="post" enctype="multipart/form-data">
85
+ <input type="hidden" name="action" value="foogallery_attachment_modal_save">
86
+ <input type="hidden" name="nonce" value="<?php echo $modal_data['nonce']; ?>">
87
+ <input type="hidden" name="img_id" value="<?php echo $modal_data['img_id']; ?>">
88
+ <?php do_action( 'foogallery_attachment_modal_tab_content', $modal_data ); ?>
89
+ </form>
90
+ </div>
91
+
92
+ <?php do_action( 'foogallery_attachment_modal_after_tabs', $modal_data ); ?>
93
+
94
+ </div>
95
+ <?php
96
+
97
+ do_action( 'foogallery_attachment_modal_after_tab_container', $modal_data );
98
+
99
+ wp_send_json( array(
100
+ 'html' => ob_get_clean(),
101
+ 'prev_slide' => $modal_data['prev_slide'],
102
+ 'next_slide' => $modal_data['next_slide'],
103
+ 'next_img_id' => $modal_data['next_img_id'],
104
+ 'prev_img_id' => $modal_data['prev_img_id'],
105
+ 'override_thumbnail' => $modal_data['foogallery_override_thumbnail'],
106
+ 'current_tab' => $modal_data['current_tab']
107
+ ) );
108
+ }
109
+
110
+ /**
111
+ * Admin modal wrapper for gallery image edit
112
+ */
113
+ public function foogallery_image_editor_modal() {
114
+ global $post;
115
+
116
+ // Check if the gallery edit page is being shown.
117
+ $screen = get_current_screen();
118
+ if ( 'foogallery' !== $screen->id ) {
119
+ return;
120
+ }
121
+
122
+ $modal_style = foogallery_get_setting( 'advanced_attachment_modal' );
123
+
124
+ // Only show the attachment modal if the setting is turned on.
125
+ if ( 'on' !== $modal_style ) {
126
+ return;
127
+ }
128
+
129
+ ?>
130
+ <div id="foogallery-image-edit-modal" style="display: none;"
131
+ data-nonce="<?php echo wp_create_nonce( 'foogallery_attachment_modal_open' ); ?>"
132
+ data-gallery_id="<?php echo $_GET['post']; ?>"
133
+ data-modal_style="<?php echo $modal_style; ?>">
134
+ <div class="media-modal wp-core-ui">
135
+ <div class="media-modal-content">
136
+ <div class="edit-attachment-frame mode-select hide-menu hide-router">
137
+ <div class="edit-media-header">
138
+ <button class="left dashicons"><span class="screen-reader-text"><?php _e( 'Edit previous attachment in the gallery', 'foogallery' ); ?></span></button>
139
+ <button class="right dashicons"><span class="screen-reader-text"><?php _e( 'Edit next attachment in the gallery', 'foogallery' ); ?></span></button>
140
+ <button type="button" class="media-modal-close"><span class="media-modal-icon"><span class="screen-reader-text"><?php _e('Close dialog', 'foogallery'); ?></span></span></button>
141
+ </div>
142
+ <div class="media-frame-title"><h1><?php _e('Edit Attachment Details', 'foogallery'); ?></h1></div>
143
+ <div class="media-frame-content">
144
+ <div class="attachment-details save-ready">
145
+ </div>
146
+ </div>
147
+ </div>
148
+ </div>
149
+ </div>
150
+ </div>
151
+ <?php }
152
+
153
+
154
+
155
+ /**
156
+ * Save modal form data to database
157
+ */
158
+ public function ajax_save_modal() {
159
+
160
+ $foogallery = ( isset( $_POST['foogallery'] ) ? $_POST['foogallery'] : array() );
161
+
162
+ if ( !is_array( $foogallery ) || empty( $foogallery ) ) {
163
+ return;
164
+ }
165
+
166
+ // Check for nonce security
167
+ if ( ! wp_verify_nonce( $_POST['nonce'], 'foogallery-modal-nonce' ) ) {
168
+ die ( 'Busted!');
169
+ }
170
+
171
+ $img_id = intval( sanitize_text_field( $_POST['img_id'] ) );
172
+
173
+ if ( $img_id > 0 ) {
174
+ do_action( 'foogallery_attachment_save_data', $img_id, $foogallery );
175
+ }
176
+
177
+ wp_die();
178
+ }
179
+
180
+ /**
181
+ * Save main tab data content
182
+ *
183
+ * @param $img_id int attachment id to update data
184
+ *
185
+ * @param $foogallery array of form post data
186
+ *
187
+ */
188
+
189
+ public function foogallery_attachment_save_data_main( $img_id, $foogallery ) {
190
+
191
+ if ( is_array( $foogallery ) && !empty( $foogallery ) ) {
192
+
193
+ $foogallery_post = array(
194
+ 'ID' => $img_id
195
+ );
196
+
197
+ foreach( $foogallery as $key => $val ) {
198
+
199
+ if ( $key == 'title' ) {
200
+ $foogallery_post['post_title'] = $val;
201
+ }
202
+ if ( $key == 'caption' ) {
203
+ $foogallery_post['post_excerpt'] = $val;
204
+ }
205
+ if ( $key == 'description' ) {
206
+ $foogallery_post['post_content'] = $val;
207
+ }
208
+
209
+ // Update post meta values
210
+ if ( $key == 'alt-text' ) {
211
+ update_post_meta( $img_id, '_wp_attachment_image_alt', $val );
212
+ }
213
+ if ( $key == 'custom-url' ) {
214
+ update_post_meta( $img_id, '_foogallery_custom_url', $val );
215
+ }
216
+ if ( $key == 'custom-target' ) {
217
+ update_post_meta( $img_id, '_foogallery_custom_target', $val );
218
+ }
219
+ if ( $key == 'custom-class' ) {
220
+ update_post_meta( $img_id, '_foogallery_custom_class', $val );
221
+ }
222
+ }
223
+
224
+ if ( is_array( $foogallery_post ) && count( $foogallery_post ) > 1 ) {
225
+ // Update the post into the database
226
+ wp_update_post( $foogallery_post );
227
+ }
228
+ }
229
+
230
+ }
231
+
232
+ /**
233
+ * Save taxonomies tab data content
234
+ *
235
+ * @param $img_id int attachment id to update data
236
+ *
237
+ * @param $foogallery array of form post data
238
+ *
239
+ */
240
+
241
+ public function foogallery_attachment_save_data_taxonomies( $img_id, $foogallery ) {
242
+
243
+ if ( is_array( $foogallery ) && !empty( $foogallery ) ) {
244
+
245
+ if ( !$this->attachments_have_taxonomies() ) {
246
+ return;
247
+ }
248
+
249
+ foreach( $foogallery as $key => $val ) {
250
+ if ( $key == 'tags' ) {
251
+ $tags = array();
252
+ $selected_tags = explode( ',', $val );
253
+ foreach ( $selected_tags as $tag ) {
254
+ $tags[] = (int) $tag;
255
+ }
256
+ wp_set_object_terms( $img_id, $tags, FOOGALLERY_ATTACHMENT_TAXONOMY_TAG, false );
257
+ }
258
+ if ( $key == 'taxonomies' ) {
259
+ $categories = array();
260
+ $selected_cats = explode( ',', $val );
261
+ foreach ( $selected_cats as $category ) {
262
+ $categories[] = (int) $category;
263
+ }
264
+ wp_set_object_terms( $img_id, $categories, FOOGALLERY_ATTACHMENT_TAXONOMY_CATEGORY, false );
265
+ }
266
+ }
267
+ }
268
+
269
+ }
270
+
271
+ /**
272
+ * Save thumbnails tab data content
273
+ *
274
+ * @param $img_id int attachment id to update data
275
+ *
276
+ * @param $foogallery array of form post data
277
+ *
278
+ */
279
+
280
+ public function foogallery_attachment_save_data_thumbnails( $img_id, $foogallery ) {
281
+
282
+ if ( is_array( $foogallery ) && !empty( $foogallery ) ) {
283
+
284
+ foreach( $foogallery as $key => $val ) {
285
+ if ( $key == 'crop_pos' ) {
286
+ update_post_meta( $img_id, 'foogallery_crop_pos', $val );
287
+ }
288
+ if ( $key == 'override-thumbnail-id' ) {
289
+ update_post_meta( $img_id, 'foogallery_override_thumbnail', $val );
290
+ }
291
+ }
292
+
293
+ }
294
+
295
+ }
296
+
297
+
298
+
299
+ /**
300
+ * Save more tab data content
301
+ *
302
+ * @param $img_id int attachment id to update data
303
+ *
304
+ * @param $foogallery array of form post data
305
+ *
306
+ */
307
+
308
+ public function foogallery_attachment_save_data_more( $img_id, $foogallery ) {
309
+
310
+ if ( is_array( $foogallery ) && !empty( $foogallery ) ) {
311
+ foreach( $foogallery as $key => $val ) {
312
+ if ( $key === 'data-width' ) {
313
+ update_post_meta( $img_id, '_data-width', $val );
314
+ }
315
+ else if ( $key === 'data-height' ) {
316
+ update_post_meta( $img_id, '_data-height', $val );
317
+ }
318
+ else if ( $key === 'panning' ) {
319
+ update_post_meta( $img_id, '_foobox_panning', $val );
320
+ }
321
+ else if ( $key === 'override_type' ) {
322
+ update_post_meta( $img_id, '_foogallery_override_type', $val );
323
+ }
324
+ }
325
+ }
326
+ }
327
+
328
+ /**
329
+ * Builds up the state used to populate the modal.
330
+ *
331
+ * @param $data array
332
+ * @return array
333
+ */
334
+ private function build_modal_data( $data = array() ) {
335
+
336
+ $modal_data = array(
337
+ 'img_id' => 0,
338
+ 'gallery_id' => 0,
339
+ );
340
+
341
+ if ( is_array ( $data ) && isset( $data['img_id'] ) && isset( $data['gallery_id'] ) ) {
342
+ $modal_data['img_id'] = $attachment_id = intval( sanitize_text_field( $data['img_id'] ) );
343
+ $modal_data['gallery_id'] = $gallery_id = intval( sanitize_text_field( $data['gallery_id'] ) );
344
+ $modal_data['current_tab'] = isset( $data['current_tab'] ) ? sanitize_text_field( $data['current_tab'] ) : '';
345
+ $modal_data['nonce'] = wp_create_nonce( 'foogallery-modal-nonce' );
346
+ $modal_data = apply_filters( 'foogallery_attachment_modal_data', $modal_data, $data, $attachment_id, $gallery_id );
347
+ }
348
+
349
+ return $modal_data;
350
+ }
351
+
352
+ /**
353
+ * Image modal main tab data update
354
+ */
355
+ public function foogallery_attachment_modal_data_main( $modal_data, $data, $attachment_id, $gallery_id ) {
356
+ if ( $attachment_id > 0 ) {
357
+ $attachment_post = get_post( $attachment_id );
358
+
359
+ if ( is_a( $attachment_post, 'WP_Post' ) ) {
360
+ $modal_data['file_url'] = get_attached_file( $attachment_id );
361
+ $modal_data['file_name'] = basename( $modal_data['file_url'] );
362
+ $modal_data['file_type'] = $attachment_post->post_mime_type;
363
+ $modal_data['author_id'] = intval( $attachment_post->post_author );
364
+ $modal_data['author_name'] = get_the_author_meta( 'display_name', $modal_data['author_id'] );
365
+ $modal_data['post_date'] = date('F d, Y', strtotime( $attachment_post->post_date ) );
366
+ $modal_data['img_title'] = $attachment_post->post_title;
367
+ $modal_data['caption'] = $attachment_post->post_excerpt;
368
+ $modal_data['description'] = $attachment_post->post_content;
369
+ $modal_data['image_alt'] = get_post_meta( $attachment_id, '_wp_attachment_image_alt', true );
370
+ $modal_data['meta'] = wp_get_attachment_metadata( $attachment_id );
371
+
372
+ // Get attachment file size.
373
+ $file_size = false;
374
+ if ( isset( $modal_data['meta']['filesize'] ) ) {
375
+ $file_size = $modal_data['meta']['filesize'];
376
+ } elseif ( file_exists( $modal_data['file_url'] ) ) {
377
+ $file_size = wp_filesize( $modal_data['file_url'] );
378
+ }
379
+ if ( ! empty( $file_size ) ) {
380
+ $modal_data['file_size'] = size_format( $file_size );
381
+ }
382
+
383
+ // Get attachment dimensions.
384
+ $media_dims = '';
385
+ if ( isset( $modal_data['meta']['width'], $modal_data['meta']['height'] ) ) {
386
+ $media_dims = "{$modal_data['meta']['width']}&nbsp;&times;&nbsp;{$modal_data['meta']['height']}";
387
+ }
388
+ /** This filter is documented in wp-admin/includes/media.php */
389
+ $modal_data['media_dims'] = apply_filters( 'media_meta', $media_dims, $attachment_post );
390
+
391
+ $modal_data['custom_url'] = get_post_meta( $attachment_id, '_foogallery_custom_url', true );
392
+ $modal_data['custom_target'] = get_post_meta( $attachment_id, '_foogallery_custom_target', true );
393
+ $modal_data['custom_class'] = get_post_meta( $attachment_id, '_foogallery_custom_class', true );
394
+ }
395
+ }
396
+
397
+ return $modal_data;
398
+ }
399
+
400
+ /**
401
+ * Image modal taxonomies & tags tab data update
402
+ */
403
+ public function foogallery_attachment_modal_data_taxonomies( $modal_data, $data, $attachment_id, $gallery_id ) {
404
+ if ( $attachment_id > 0 ) {
405
+
406
+ if ( !$this->attachments_have_taxonomies() ) {
407
+ return $modal_data;
408
+ }
409
+
410
+ // Rather use $taxonomies = get_object_taxonomies( 'attachment' ); and loop through all taxonomies for an attachment
411
+
412
+ $categories = get_the_terms( $attachment_id, FOOGALLERY_ATTACHMENT_TAXONOMY_CATEGORY );
413
+ $tags = get_the_terms( $attachment_id, FOOGALLERY_ATTACHMENT_TAXONOMY_TAG );
414
+
415
+ if ( is_array( $categories ) && !empty ( $categories ) ) {
416
+ $modal_data['img_categories'] = $categories;
417
+ }
418
+
419
+ if ( is_array( $tags ) && !empty ( $tags ) ) {
420
+ $modal_data['img_tags'] = $tags;
421
+ }
422
+ }
423
+ return $modal_data;
424
+ }
425
+
426
+ /**
427
+ * Image modal thumbnails tab data update
428
+ */
429
+ public function foogallery_attachment_modal_data_thumbnails( $modal_data, $data, $attachment_id, $gallery_id ) {
430
+ if ( $attachment_id > 0 ) {
431
+
432
+ $modal_data['foogallery_crop_pos'] = get_post_meta( $attachment_id, 'foogallery_crop_pos', true );
433
+
434
+ $foogallery_override_thumbnail = get_post_meta( $attachment_id, '_foogallery_override_thumbnail', true );
435
+
436
+ if ( isset( $foogallery_override_thumbnail ) ) {
437
+
438
+ $modal_data['foogallery_override_thumbnail'] = $foogallery_override_thumbnail;
439
+ $modal_data['override_class'] = 'is-override-thumbnail';
440
+ $alternate_thumb_img = wp_get_attachment_image_src( $foogallery_override_thumbnail );
441
+
442
+ if ( is_array( $alternate_thumb_img ) && !empty( $alternate_thumb_img ) ) {
443
+ $modal_data['alternate_img_src'] = $alternate_thumb_img[0];
444
+ }
445
+ }
446
+ }
447
+
448
+ return $modal_data;
449
+ }
450
+
451
+
452
+
453
+
454
+ /**
455
+ * Image modal more tab data update
456
+ */
457
+ public function foogallery_attachment_modal_data_more( $modal_data, $data, $attachment_id, $gallery_id ) {
458
+ if ( $attachment_id > 0 ) {
459
+ $modal_data['data_width'] = get_post_meta( $attachment_id, '_data-width', true );
460
+ $modal_data['data_height'] = get_post_meta( $attachment_id, '_data-height', true );
461
+ $modal_data['panning'] = get_post_meta( $attachment_id, '_foobox_panning', true );
462
+ $modal_data['override_type'] = get_post_meta( $attachment_id, '_foogallery_override_type', true );
463
+ }
464
+ return $modal_data;
465
+ }
466
+
467
+ /**
468
+ * Image modal info tab data update
469
+ */
470
+ public function foogallery_attachment_modal_data_info( $modal_data, $data, $attachment_id, $gallery_id ) {
471
+
472
+ if ( $attachment_id > 0 ) {
473
+ $modal_data['image_attributes'] = wp_get_attachment_image_src( $attachment_id, 'medium' );
474
+ $full_img_path = wp_get_attachment_image_src( $attachment_id, 'full' );
475
+ $modal_data['img_path'] = $full_img_path[0];
476
+
477
+ $gallery_attachments = get_post_meta( $gallery_id, FOOGALLERY_META_ATTACHMENTS, true);
478
+
479
+ if ( is_array( $gallery_attachments ) && !empty ( $gallery_attachments ) ) {
480
+ $modal_data['gallery_attachments'] = $gallery_attachments;
481
+
482
+ $current_slide_id = 0;
483
+ $prev_slide_enabled = false;
484
+ $next_slide_enabled = false;
485
+ $prev_slide_id = 0;
486
+ $next_slide_id = 0;
487
+ foreach ( $gallery_attachments as $gallery_attachment_id ) {
488
+ if ( $attachment_id === intval( $gallery_attachment_id ) ) {
489
+ //$prev_slide_id = $current_slide_id;
490
+ $prev_slide_enabled = $prev_slide_id > 0;
491
+ $current_slide_id = $attachment_id;
492
+ } else if ( $next_slide_id > 0 ) {
493
+ break;
494
+ } else if ( $current_slide_id > 0 ) {
495
+ $next_slide_id = intval($gallery_attachment_id);
496
+ $next_slide_enabled = true;
497
+ } else {
498
+ $prev_slide_id = intval( $gallery_attachment_id );
499
+ }
500
+ }
501
+
502
+ if ( $current_slide_id >= 0 ) {
503
+ $modal_data['prev_slide'] = $prev_slide_enabled;
504
+ $modal_data['next_slide'] = $next_slide_enabled;
505
+ $modal_data['prev_img_id'] = $prev_slide_id;
506
+ $modal_data['next_img_id'] = $next_slide_id;
507
+ }
508
+ }
509
+ }
510
+
511
+ return $modal_data;
512
+ }
513
+
514
+ /**
515
+ * Image modal main tab title
516
+ */
517
+ public function display_tab_main() { ?>
518
+ <div class="foogallery-img-modal-tab-wrapper" data-tab_id="foogallery-panel-main">
519
+ <input type="radio" name="tabset" id="foogallery-tab-main" aria-controls="foogallery-panel-main" checked>
520
+ <label for="foogallery-tab-main"><?php _e('Main', 'foogallery'); ?></label>
521
+ </div>
522
+ <?php }
523
+
524
+ /**
525
+ * Image modal taxonomies & tags title
526
+ */
527
+ public function display_tab_taxonomies() {
528
+ if ( !$this->attachments_have_taxonomies() ) {
529
+ return;
530
+ }
531
+
532
+ ?>
533
+ <div class="foogallery-img-modal-tab-wrapper" data-tab_id="foogallery-panel-taxonomies">
534
+ <input type="radio" name="tabset" id="foogallery-tab-taxonomies" aria-controls="foogallery-panel-taxonomies">
535
+ <label for="foogallery-tab-taxonomies"><?php _e('Taxonomies', 'foogallery'); ?></label>
536
+ </div>
537
+ <?php }
538
+
539
+ /**
540
+ * Image modal thumbnails tab title
541
+ */
542
+ public function display_tab_thumbnails() { ?>
543
+ <div class="foogallery-img-modal-tab-wrapper" data-tab_id="foogallery-panel-thumbnails">
544
+ <input type="radio" name="tabset" id="foogallery-tab-thumbnails" aria-controls="foogallery-panel-thumbnails">
545
+ <label for="foogallery-tab-thumbnails"><?php _e('Thumbnails', 'foogallery'); ?></label>
546
+ </div>
547
+ <?php }
548
+
549
+ /**
550
+ * Returns true if attachments have any taxonomies registered.
551
+ *
552
+ * @return bool
553
+ */
554
+ function attachments_have_taxonomies() {
555
+ $taxonomies = get_object_taxonomies( 'attachment' );
556
+ return count( $taxonomies ) > 0;
557
+ }
558
+
559
+
560
+
561
+ /**
562
+ * Image modal more tab title
563
+ */
564
+ public function display_tab_more() { ?>
565
+ <div class="foogallery-img-modal-tab-wrapper" data-tab_id="foogallery-panel-more">
566
+ <input type="radio" name="tabset" id="foogallery-tab-more" aria-controls="foogallery-panel-more">
567
+ <label for="foogallery-tab-more"><?php _e('More', 'foogallery'); ?></label>
568
+ </div>
569
+ <?php }
570
+
571
+ /**
572
+ * Image modal main tab content
573
+ */
574
+ public function display_tab_content_main( $modal_data ) {
575
+ if ( is_array( $modal_data ) && !empty ( $modal_data ) ) {
576
+ if ( $modal_data['img_id'] > 0 ) { ?>
577
+ <section id="foogallery-panel-main" class="tab-panel active" data-nonce="<?php echo $modal_data['nonce'];?>">
578
+ <div class="settings">
579
+ <span class="setting" data-setting="title">
580
+ <label for="attachment-details-two-column-title" class="name"><?php _e('Title', 'foogallery'); ?></label>
581
+ <input type="text" id="attachment-details-two-column-title" name="foogallery[title]" value="<?php echo $modal_data['img_title'];?>">
582
+ </span>
583
+ <span class="setting" data-setting="caption">
584
+ <label for="attachment-details-two-column-caption" class="name"><?php _e('Caption', 'foogallery'); ?></label>
585
+ <textarea id="attachment-details-two-column-caption" name="foogallery[caption]"><?php echo $modal_data['caption'];?></textarea>
586
+ </span>
587
+ <span class="setting" data-setting="description">
588
+ <label for="attachment-details-two-column-description" class="name"><?php _e('Description', 'foogallery'); ?></label>
589
+ <textarea id="attachment-details-two-column-description" name="foogallery[description]"><?php echo $modal_data['description'];?></textarea>
590
+ </span>
591
+ <span class="setting has-description" data-setting="alt">
592
+ <label for="attachment-details-two-column-alt-text" class="name"><?php _e('ALT Text', 'foogallery'); ?></label>
593
+ <input type="text" id="attachment-details-two-column-alt-text" name="foogallery[alt-text]" value="<?php echo $modal_data['image_alt'];?>" aria-describedby="alt-text-description">
594
+ </span>
595
+ <span class="setting" data-setting="custom_url">
596
+ <label for="attachments-foogallery-custom-url" class="name"><?php _e('Custom URL', 'foogallery'); ?></label>
597
+ <input type="text" id="attachments-foogallery-custom-url" name="foogallery[custom-url]" value="<?php echo $modal_data['custom_url'];?>">
598
+ </span>
599
+ <span class="setting" data-setting="custom_target">
600
+ <label for="attachments-foogallery-custom-target" class="name"><?php _e('Custom Target', 'foogallery'); ?></label>
601
+ <select name="foogallery[custom-target']" id="attachments-foogallery-custom-target">
602
+ <option value="default" <?php selected( 'default', $modal_data['custom_target'], true ); ?>><?php _e('Default', 'foogallery'); ?></option>
603
+ <option value="_blank" <?php selected( '_blank', $modal_data['custom_target'], true ); ?>><?php _e('New tab (_blank)', 'foogallery'); ?></option>
604
+ <option value="_self" <?php selected( '_self', $modal_data['custom_target'], true ); ?>><?php _e('Same tab (_self)', 'foogallery'); ?></option>
605
+ <option value="foobox" <?php selected( 'foobox', $modal_data['custom_target'], true ); ?>><?php _e('FooBox', 'foogallery'); ?></option>
606
+ </select>
607
+ </span>
608
+ <span class="setting" data-setting="custom_class">
609
+ <label for="attachments-foogallery-custom-class" class="name"><?php _e('Custom Class', 'foogallery'); ?></label>
610
+ <input type="text" id="attachments-foogallery-custom-class" name="foogallery[custom-class]" value="<?php echo $modal_data['custom_class'];?>">
611
+ </span>
612
+ <span class="setting" data-setting="file_url">
613
+ <label for="attachments-foogallery-file-url" class="name"><?php _e('File URL', 'foogallery'); ?></label>
614
+ <input type="text" id="attachments-foogallery-file-url" value="<?php echo $modal_data['file_url'];?>" readonly>
615
+ </span>
616
+ <span class="setting" data-setting="file_url_copy">
617
+ <label for="attachments-foogallery-file-url-copy" class="name"><?php _e('', 'foogallery'); ?></label>
618
+ <span class="copy-to-clipboard-container">
619
+ <button type="button" class="button button-small copy-attachment-file-url" data-clipboard-target="#attachments-foogallery-file-url"><?php _e('Copy URL to clipboard', 'foogallery'); ?></button>
620
+ <span class="success hidden" aria-hidden="true"><?php _e('Copied!', 'foogallery'); ?></span>
621
+ </span>
622
+ </span>
623
+ </div>
624
+ </section>
625
+ <?php
626
+ }
627
+ }
628
+ }
629
+
630
+ /**
631
+ * Image modal taxonomies & tags tab content
632
+ */
633
+ public function display_tab_content_taxonomies( $modal_data ) {
634
+ if ( !$this->attachments_have_taxonomies() ) {
635
+ return;
636
+ }
637
+
638
+ if ( is_array( $modal_data ) && !empty ( $modal_data ) ) {
639
+ if ( $modal_data['img_id'] > 0 ) {
640
+ $selected_categories = $selected_tags = array();
641
+ $tags = get_terms( array(
642
+ 'taxonomy' => FOOGALLERY_ATTACHMENT_TAXONOMY_TAG,
643
+ 'hide_empty' => false,
644
+ ) );
645
+ $categories = get_terms( array(
646
+ 'taxonomy' => FOOGALLERY_ATTACHMENT_TAXONOMY_CATEGORY,
647
+ 'hide_empty' => false,
648
+ ) );
649
+ if ( is_array ( $modal_data['img_categories'] ) && !empty ( $modal_data['img_categories'] ) ) {
650
+ foreach ( $modal_data['img_categories'] as $cat ) {
651
+ $selected_categories[] = $cat->term_id;
652
+ }
653
+ }
654
+ if ( is_array ( $modal_data['img_tags'] ) && !empty ( $modal_data['img_tags'] ) ) {
655
+ foreach ( $modal_data['img_tags'] as $tag ) {
656
+ $selected_tags[] = $tag->term_id;
657
+ }
658
+ }
659
+ ?>
660
+ <section id="foogallery-panel-taxonomies" class="tab-panel">
661
+ <div class="settings">
662
+ <span class="setting">
663
+ <label for="foogallery_woocommerce_tags" class="name"><?php _e('Media Tags:', 'foogallery'); ?></label>
664
+ <ul class="foogallery_woocommerce_tags">
665
+ <?php
666
+ foreach ($tags as $tag) {
667
+ $tag_selected = in_array($tag->term_id, $selected_tags);
668
+ ?>
669
+ <li>
670
+ <a href="javascript:void(0);" class="button button-small<?php echo $tag_selected ? ' button-primary' : ''; ?>"
671
+ data-term-id="<?php echo $tag->term_id; ?>"><?php echo $tag->name; ?></a>
672
+ </li><?php
673
+ }
674
+ ?>
675
+ </ul>
676
+ <input type="hidden" id="foogallery_woocommerce_tags_selected" name="foogallery[tags]" value="<?php echo implode( ',', $selected_tags ); ?>">
677
+ </span>
678
+ <span class="setting">
679
+ <label for="foogallery_woocommerce_categories" class="name"><?php _e('Media Categories:', 'foogallery'); ?></label>
680
+ <ul class="foogallery_woocommerce_categories">
681
+ <?php
682
+ foreach ($categories as $category) {
683
+ $cat_selected = in_array($category->term_id, $selected_categories);
684
+ ?>
685
+ <li>
686
+ <a href="javascript:void(0);" class="button button-small<?php echo $cat_selected ? ' button-primary' : ''; ?>"
687
+ data-term-id="<?php echo $category->term_id; ?>"><?php echo $category->name; ?></a>
688
+ </li><?php
689
+ }
690
+ ?>
691
+ </ul>
692
+ <input type="hidden" id="foogallery_woocommerce_taxonomies_selected" name="foogallery[taxonomies]" value="<?php echo implode( ',', $selected_categories ); ?>">
693
+ </span>
694
+ </div>
695
+ </section>
696
+ <?php
697
+ }
698
+ }
699
+ }
700
+
701
+ /**
702
+ * Image modal thumbnails tab content
703
+ */
704
+ public function display_tab_content_thumbnails( $modal_data ) {
705
+ if ( is_array( $modal_data ) && !empty ( $modal_data ) ) {
706
+ if ( $modal_data['img_id'] > 0 ) {
707
+ $engine = foogallery_thumb_active_engine();
708
+
709
+ $crop_pos = !empty( $modal_data['foogallery_crop_pos'] ) ? $modal_data['foogallery_crop_pos'] : 'center,center';
710
+ ?>
711
+ <section id="foogallery-panel-thumbnails" class="tab-panel">
712
+ <div class="settings">
713
+ <span class="setting" data-setting="crop-from-position">
714
+ <label for="attachments-crop-from-position" class="name"><?php _e('Crop Position', 'foogallery'); ?></label>
715
+ <div id="foogallery_crop_pos">
716
+ <input type="radio" name="foogallery[crop_pos]" value="left,top" title="<?php _e('Left, Top', 'foogallery'); ?>" <?php checked( 'left,top', $crop_pos, true); ?>>
717
+ <input type="radio" name="foogallery[crop_pos]" value="center,top" title="<?php _e('Center, Top', 'foogallery'); ?>" <?php checked( 'center,top', $crop_pos, true); ?>>
718
+ <input type="radio" name="foogallery[crop_pos]" value="right,top" title="<?php _e('Right, Top', 'foogallery'); ?>" <?php checked( 'right,top', $crop_pos, true); ?>><br>
719
+ <input type="radio" name="foogallery[crop_pos]" value="left,center" title="<?php _e('Left, Center', 'foogallery'); ?>" <?php checked( 'left,center', $crop_pos, true); ?>>
720
+ <input type="radio" name="foogallery[crop_pos]" value="center,center" title="<?php _e('Center, Center', 'foogallery'); ?>" <?php checked( 'center,center', $crop_pos, true); ?>>
721
+ <input type="radio" name="foogallery[crop_pos]" value="right,center" title="<?php _e('Right, Center', 'foogallery'); ?>" <?php checked( 'right,center', $crop_pos, true); ?>><br>
722
+ <input type="radio" name="foogallery[crop_pos]" value="left,bottom" title="<?php _e('Left, Bottom', 'foogallery'); ?>" <?php checked( 'left,bottom', $crop_pos, true); ?>>
723
+ <input type="radio" name="foogallery[crop_pos]" value="center,bottom" title="<?php _e('Center, Bottom', 'foogallery'); ?>" <?php checked( 'center,bottom', $crop_pos, true); ?>>
724
+ <input type="radio" name="foogallery[crop_pos]" value="right,bottom" title="<?php _e('Right, Bottom', 'foogallery'); ?>" <?php checked( 'right,bottom', $crop_pos, true); ?>>
725
+ </div>
726
+ </span>
727
+
728
+ <?php if ( $engine->has_local_cache() ) { ?>
729
+ <div class="foogallery-attachments-list-bar clear-thumbnail">
730
+ <span class="setting" data-setting="clear-image-cache">
731
+ <label class="name"></label>
732
+ <button class="button button-primary button-large" id="foogallery_clear_img_thumb_cache"><?php _e( 'Clear Thumbnail Cache', 'foogallery' ); ?></button>
733
+ <span id="foogallery_clear_img_thumb_cache_spinner" class="spinner"></span>
734
+ <?php wp_nonce_field( 'foogallery_clear_attachment_thumb_cache', 'foogallery_clear_attachment_thumb_cache_nonce', false ); ?>
735
+ </span>
736
+ </div>
737
+ <?php }
738
+
739
+ do_action( 'foogallery_attachment_modal_tab_content_thumbnails', $modal_data );
740
+ ?></div>
741
+ </section>
742
+ <?php
743
+ }
744
+ }
745
+ }
746
+
747
+ /**
748
+ * Image modal more tab content
749
+ */
750
+ public function display_tab_content_more( $modal_data ) {
751
+ if ( is_array( $modal_data ) && !empty ( $modal_data ) ) {
752
+ if ( $modal_data['img_id'] > 0 ) { ?>
753
+ <section id="foogallery-panel-more" class="tab-panel">
754
+ <div class="settings">
755
+ <span class="setting" data-setting="data-width">
756
+ <label for="attachment-details-two-column-data-width" class="name"><?php _e('Override Width', 'foogallery'); ?></label>
757
+ <input type="text" name="foogallery[data-width]" id="attachment-details-two-column-data-width" value="<?php echo $modal_data['data_width']; ?>">
758
+ </span>
759
+ <span class="setting" data-setting="data-height">
760
+ <label for="attachment-details-two-column-data-height" class="name"><?php _e('Override Height', 'foogallery'); ?></label>
761
+ <input type="text" name="foogallery[data-height]" id="attachment-details-two-column-data-height" value="<?php echo $modal_data['data_height']; ?>">
762
+ </span>
763
+ <span class="setting" data-setting="panning">
764
+ <label for="attachment-details-two-column-panning" class="name"><?php _e('Panning', 'foogallery'); ?></label>
765
+ <input type="text" name="foogallery[panning]" id="attachment-details-two-column-panning" value="<?php echo $modal_data['panning']; ?>">
766
+ </span>
767
+ <span class="setting" data-setting="override-type">
768
+ <label for="attachment-details-two-column-override-type" class="name"><?php _e('Override Type', 'foogallery'); ?></label>
769
+ <input type="text" name="foogallery[override_type]" id="attachment-details-two-column-override-type" value="<?php echo $modal_data['override_type']; ?>">
770
+ </span>
771
+ </div>
772
+ </section>
773
+ <?php
774
+ }
775
+ }
776
+ }
777
+
778
+ /**
779
+ * Image modal info section
780
+ */
781
+ public function display_attachment_info( $modal_data ) {
782
+ if ( is_array( $modal_data ) && !empty ( $modal_data ) ) {
783
+ if ( $modal_data['img_id'] > 0 ) { ?>
784
+ <section id="foogallery-panel-info">
785
+ <div class="foogallery-panel-info-inner">
786
+ <div class="foogallery-modal-info-fields">
787
+ <label for="attachment-details-two-column-uploaded-on" class="name"><?php _e('Uploaded On: ', 'foogallery'); ?></label>
788
+ <span><?php echo $modal_data['post_date']; ?></span>
789
+ </div>
790
+ <div class="foogallery-modal-info-fields">
791
+ <label for="attachment-details-two-column-uploaded-by" class="name"><?php _e('Uploaded By: ', 'foogallery'); ?></label>
792
+ <span><?php echo $modal_data['author_name']; ?></span>
793
+ </div>
794
+ <div class="foogallery-modal-info-fields">
795
+ <label for="attachment-details-two-column-file-name" class="name"><?php _e('File Name: ', 'foogallery'); ?></label>
796
+ <span id="attachment-details-two-column-copy-file-name"><?php echo $modal_data['file_name']; ?></span>
797
+ </div>
798
+ <div class="foogallery-modal-info-fields">
799
+ <label for="attachment-details-two-column-file-type" class="name"><?php _e('File Type: ', 'foogallery'); ?></label>
800
+ <span><?php echo $modal_data['file_type']; ?></span>
801
+ </div>
802
+ <div class="foogallery-modal-info-fields">
803
+ <label for="attachment-details-two-column-file-size" class="name"><?php _e('File Size: ', 'foogallery'); ?></label>
804
+ <span><?php echo $modal_data['file_size']; ?></span>
805
+ </div>
806
+ <div class="foogallery-modal-info-fields">
807
+ <label for="attachment-details-two-column-dimensions" class="name"><?php _e('Dimensions: ', 'foogallery'); ?></label>
808
+ <span><?php echo $modal_data['media_dims']; ?></span>
809
+ </div>
810
+ </div>
811
+ </section>
812
+ <?php
813
+ }
814
+ }
815
+ }
816
+
817
+ public function foogallery_img_modal_save_btn() {
818
+ echo '<div class="foogallery-image-edit-footer"><button id="attachments-data-save-btn" type="submit" class="button button-primary button-large">'. __( 'Save Attachment Details', 'foogallery' ) .'</button></div>';
819
+ }
820
+ }
821
+ }
includes/admin/class-gallery-metaboxes.php CHANGED
@@ -28,6 +28,7 @@ if ( ! class_exists( 'FooGallery_Admin_Gallery_MetaBoxes' ) ) {
28
 
29
  // Ajax call for clearing thumb cache for the gallery
30
  add_action( 'wp_ajax_foogallery_clear_gallery_thumb_cache', array( $this, 'ajax_clear_gallery_thumb_cache' ) );
 
31
 
32
  add_filter( 'hidden_meta_boxes', array( $this, 'get_hidden_meta_boxes' ), 10, 3 );
33
 
@@ -488,6 +489,31 @@ if ( ! class_exists( 'FooGallery_Admin_Gallery_MetaBoxes' ) ) {
488
  die();
489
  }
490
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
491
  /**
492
  * Returns a list of all hidden metaboxes
493
  *
28
 
29
  // Ajax call for clearing thumb cache for the gallery
30
  add_action( 'wp_ajax_foogallery_clear_gallery_thumb_cache', array( $this, 'ajax_clear_gallery_thumb_cache' ) );
31
+ add_action( 'wp_ajax_foogallery_clear_attachment_thumb_cache', array( $this, 'ajax_clear_attachment_thumb_cache' ) );
32
 
33
  add_filter( 'hidden_meta_boxes', array( $this, 'get_hidden_meta_boxes' ), 10, 3 );
34
 
489
  die();
490
  }
491
 
492
+ public function ajax_clear_attachment_thumb_cache() {
493
+ if ( check_admin_referer( 'foogallery_clear_attachment_thumb_cache', 'foogallery_clear_attachment_thumb_cache_nonce' ) ) {
494
+
495
+ $engine = foogallery_thumb_active_engine();
496
+
497
+ if ( $engine->has_local_cache() ) {
498
+
499
+ $attachment_id = $_POST['attachment_id'];
500
+ $attachment = get_post( $attachment_id );
501
+
502
+ ob_start();
503
+
504
+ $engine->clear_local_cache_for_file( $attachment->url );
505
+
506
+ ob_end_clean();
507
+
508
+ echo __( 'The thumbnail cache has been cleared!', 'foogallery' );
509
+ } else {
510
+ echo __( 'There was no thumbnail cache to clear.', 'foogallery' );
511
+ }
512
+ }
513
+
514
+ die();
515
+ }
516
+
517
  /**
518
  * Returns a list of all hidden metaboxes
519
  *
includes/admin/class-pro-promotion.php CHANGED
@@ -28,6 +28,9 @@ if ( ! class_exists( 'FooGallery_Pro_Promotion' ) ) {
28
  'foogallery-commerce' => 'https://fooplugins.com/foogallery-wordpress-gallery-plugin/woocommerce-integration/',
29
  'foogallery-product-gallery' => 'https://fooplugins.com/foogallery-wordpress-gallery-plugin/woocommerce-integration/#product-gallery',
30
  'foogallery-protection' => 'https://fooplugins.com/foogallery-wordpress-gallery-plugin/photo-watermark/',
 
 
 
31
  );
32
 
33
  function __construct() {
28
  'foogallery-commerce' => 'https://fooplugins.com/foogallery-wordpress-gallery-plugin/woocommerce-integration/',
29
  'foogallery-product-gallery' => 'https://fooplugins.com/foogallery-wordpress-gallery-plugin/woocommerce-integration/#product-gallery',
30
  'foogallery-protection' => 'https://fooplugins.com/foogallery-wordpress-gallery-plugin/photo-watermark/',
31
+ 'foogallery-master' => 'https://fooplugins.com/documentation/foogallery/pro-commerce/use-master-gallery/',
32
+ 'foogallery-import-export' => 'https://fooplugins.com/documentation/foogallery/getting-started-foogallery/import-export/',
33
+ 'foogallery_whitelabeling' => 'https://fooplugins.com/documentation/foogallery/pro-commerce/white-labeling/'
34
  );
35
 
36
  function __construct() {
includes/admin/class-settings.php CHANGED
@@ -170,6 +170,15 @@ if ( ! class_exists( 'FooGallery_Admin_Settings' ) ) {
170
  'section' => __( 'Admin', 'foogallery' )
171
  );
172
 
 
 
 
 
 
 
 
 
 
173
  //endregion General
174
 
175
  //region Images Tab
170
  'section' => __( 'Admin', 'foogallery' )
171
  );
172
 
173
+ $settings[] = array(
174
+ 'id' => 'advanced_attachment_modal',
175
+ 'title' => __( 'Enable Advanced Attachment Modal (BETA)', 'foogallery' ),
176
+ 'desc' => __( 'If enabled, this will use the advanced attachment modal which allows for faster and easier editing of attachment details, when creating your galleries.', 'foogallery' ),
177
+ 'type' => 'checkbox',
178
+ 'tab' => 'general',
179
+ 'section' => __( 'Admin', 'foogallery' )
180
+ );
181
+
182
  //endregion General
183
 
184
  //region Images Tab
includes/admin/view-help-pro.php CHANGED
@@ -207,6 +207,16 @@ $foogallery_pro_features = array(
207
  'plan' => FOOGALLERY_PRO_PLAN_COMMERCE,
208
  'plans' => array( FOOGALLERY_PRO_PLAN_COMMERCE ),
209
  ),
 
 
 
 
 
 
 
 
 
 
210
  );
211
 
212
  ?>
207
  'plan' => FOOGALLERY_PRO_PLAN_COMMERCE,
208
  'plans' => array( FOOGALLERY_PRO_PLAN_COMMERCE ),
209
  ),
210
+ array(
211
+ 'title' => __( 'White Labeling','foogallery' ),
212
+ 'desc' => __( 'Rebrand FooGallery to whatever you like for your clients. Move or hide menu items too. Ideal for freelancers and agencies.', 'foogallery' ),
213
+ 'link' => 'https://fooplugins.com/documentation/foogallery/pro-commerce/white-labeling/',
214
+ 'utm_content' => 'cta_white_labeling',
215
+ 'link_text' => __( 'Learn More','foogallery' ),
216
+ 'image' => 'https://assets.fooplugins.com/foogallery/plugin/foogallery-admin-help-pro-white-labeling.png',
217
+ 'plan' => FOOGALLERY_PRO_PLAN_COMMERCE,
218
+ 'plans' => array( FOOGALLERY_PRO_PLAN_COMMERCE ),
219
+ ),
220
  );
221
 
222
  ?>
includes/class-override-thumbnail.php ADDED
@@ -0,0 +1,127 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * FooGallery Attachment Override Thumbnail
4
+ */
5
+
6
+ if ( ! class_exists( 'FooGallery_Override_Thumbnail' ) ) {
7
+
8
+ class FooGallery_Override_Thumbnail {
9
+
10
+ /**
11
+ * Primary class constructor.
12
+ */
13
+ public function __construct() {
14
+ add_filter( 'foogallery_attachment_custom_fields', array( $this, 'foogallery_add_override_thumbnail_field' ) );
15
+ add_action( 'foogallery_attachment_modal_tab_content_thumbnails', array( $this, 'display_modal_fields' ), 10, 1 );
16
+ add_action( 'wp_ajax_foogallery_remove_alternate_img', array( $this, 'ajax_remove_override' ) );
17
+ add_action( 'foogallery_attachment_modal_after_tab_container', array( $this, 'extra_content_for_override_thumbnail' ), 50, 1 );
18
+ }
19
+
20
+ function display_modal_fields( $modal_data ) {
21
+ ?>
22
+ <div class="foogallery-attachments-list-bar">
23
+ <div class="settings">
24
+ <span class="setting override-thumbnail <?php echo $modal_data['override_class']; ?>" data-setting="override-thumbnail">
25
+ <label for="attachment-details-two-column-override-thumbnail" class="name"><?php _e('Alternate Thumbnail URL', 'foogallery'); ?></label>
26
+ <input type="text" id="attachments-foogallery-override-thumbnail" value="<?php echo $modal_data['alternate_img_src']; ?>" readonly>
27
+ <input type="hidden" name="foogallery[override-thumbnail-id]" id="attachments-foogallery-override-thumbnail-id" value="<?php echo $modal_data['foogallery_override_thumbnail']; ?>">
28
+ </span>
29
+ <span class="setting override-thumbnail-preview <?php echo $modal_data['override_class']; ?>" data-setting="override-thumbnail-preview">
30
+ <label for="attachment-details-two-column-override-thumbnail-preview" class="name"><?php _e('Alternate Thumbnail Preview', 'foogallery'); ?></label>
31
+ <img id="attachment-details-two-column-override-thumbnail-preview" src="<?php echo $modal_data['alternate_img_src']; ?>" alt="Alternate Thumbnail">
32
+ </span>
33
+ <span class="setting alternate-image-upload-settings" data-setting="alternate-image-upload">
34
+ <div class="alternate-image-upload-wrap">
35
+ <button type="button" class="button button-primary button-large" id="foogallery-img-modal-alternate-image-upload"
36
+ data-uploader-title="<?php _e( 'Override Thumbnail Image', 'foogallery' ); ?>"
37
+ data-uploader-button-text="<?php _e( 'Override Thumbnail Image', 'foogallery' ); ?>"
38
+ data-img-id="<?php echo $modal_data['img_id']; ?>">
39
+ <?php _e( 'Override Thumbnail Image', 'foogallery' ); ?>
40
+ </button>
41
+ <button type="button" class="button button-primary button-large <?php echo $modal_data['override_class']; ?>" id="foogallery-img-modal-alternate-image-delete"
42
+ data-uploader-title="<?php _e( 'Clear Override Thumbnail', 'foogallery' ); ?>"
43
+ data-uploader-button-text="<?php _e( 'Clear Override Thumbnail', 'foogallery' ); ?>"
44
+ data-img-id="<?php echo $modal_data['img_id']; ?>">
45
+ <?php _e( 'Clear Override Thumbnail', 'foogallery' ); ?>
46
+ </button>
47
+ <span id="foogallery_clear_alternate_img_spinner" class="spinner"></span>
48
+ </div>
49
+ </span>
50
+ </div>
51
+ </div>
52
+ <?php
53
+ }
54
+
55
+ /**
56
+ * Adds a custom field to the attachments for override thumbnail
57
+ *
58
+ * @param $fields array
59
+ *
60
+ * @return array
61
+ */
62
+ public function foogallery_add_override_thumbnail_field( $fields ) {
63
+ $fields['foogallery_override_thumbnail'] = array(
64
+ 'label' => __( 'Override Thumbnail', 'foogallery' ),
65
+ 'input' => 'text',
66
+ 'helps' => __( 'Add another image to override this attachment', 'foogallery' ),
67
+ );
68
+
69
+ return $fields;
70
+ }
71
+
72
+ /**
73
+ * Ajax function to remove override thumbnail from the attachment
74
+ */
75
+ public function ajax_remove_override() {
76
+
77
+ // Check for nonce security
78
+ if ( ! wp_verify_nonce( $_POST['nonce'], 'foogallery-modal-nonce' ) ) {
79
+ die ( 'Busted!');
80
+ }
81
+
82
+ $img_id = sanitize_text_field( $_POST['img_id'] );
83
+
84
+ delete_post_meta( $img_id, '_foogallery_override_thumbnail' );
85
+
86
+ wp_die();
87
+ }
88
+
89
+ public function extra_content_for_override_thumbnail( $modal_data ) {
90
+ ?>
91
+ <script>
92
+ jQuery( function() {
93
+ $(document).on('click', '#foogallery-img-modal-alternate-image-upload', function(e) {
94
+ e.preventDefault();
95
+ $('#foogallery-image-edit-modal').data('img_type', 'alternate');
96
+ FOOGALLERY.mediaModalTitle = $(this).data( 'uploader-title' );
97
+ FOOGALLERY.mediaModalButtonText = $(this).data( 'uploader-button-text' );
98
+ var img_id = $(this).data('img-id');
99
+ FOOGALLERY.openMediaModal(img_id);
100
+ });
101
+
102
+ $(document).on('click', '#foogallery-img-modal-alternate-image-delete', function () {
103
+ $('#foogallery_clear_alternate_img_spinner').addClass('is-active');
104
+ var img_id = $(this).attr('data-img-id');
105
+ var nonce = $('#foogallery-panel-main').data('nonce');
106
+ $.ajax({
107
+ type: "POST",
108
+ url: ajaxurl,
109
+ data: {
110
+ 'action': 'foogallery_remove_alternate_img',
111
+ 'img_id': img_id,
112
+ 'nonce': nonce
113
+ },
114
+ success: function (data) {
115
+ $('#foogallery_clear_alternate_img_spinner').removeClass('is-active');
116
+ $('#foogallery-image-edit-modal .tab-panels .settings span.setting.override-thumbnail').removeClass('is-override-thumbnail');
117
+ $('#foogallery-image-edit-modal .tab-panels .settings span.setting.override-thumbnail-preview').removeClass('is-override-thumbnail');
118
+ $('#foogallery-image-edit-modal .tab-panels .settings span.setting.alternate-image-delete').removeClass('is-override-thumbnail');
119
+ }
120
+ });
121
+ });
122
+ });
123
+ </script>
124
+ <?php
125
+ }
126
+ }
127
+ }
includes/includes.php CHANGED
@@ -69,6 +69,9 @@ if ( is_admin() ) {
69
  require_once FOOGALLERY_PATH . 'includes/admin/class-gallery-datasources.php';
70
  require_once FOOGALLERY_PATH . 'includes/admin/class-pro-promotion.php';
71
  require_once FOOGALLERY_PATH . 'includes/admin/class-demo-content.php';
 
 
 
72
 
73
  } else {
74
  // Only front-end includes.
69
  require_once FOOGALLERY_PATH . 'includes/admin/class-gallery-datasources.php';
70
  require_once FOOGALLERY_PATH . 'includes/admin/class-pro-promotion.php';
71
  require_once FOOGALLERY_PATH . 'includes/admin/class-demo-content.php';
72
+
73
+ // Admin gallery modal new
74
+ require_once FOOGALLERY_PATH . 'includes/admin/class-gallery-attachment-modal.php';
75
 
76
  } else {
77
  // Only front-end includes.
includes/thumbs/{default/class-foogallery-thumb-image-editor-gd.php → class-foogallery-thumb-image-editor-gd.php} RENAMED
File without changes
includes/thumbs/{default/class-foogallery-thumb-image-editor-imagick.php → class-foogallery-thumb-image-editor-imagick.php} RENAMED
File without changes
includes/thumbs/class-foogallery-thumb-manager.php CHANGED
@@ -16,6 +16,43 @@ if ( ! class_exists( 'FooGallery_Thumb_Manager' ) ) {
16
  function init_active_engine() {
17
  $engine = foogallery_thumb_active_engine();
18
  $engine->init();
 
19
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20
  }
21
  }
16
  function init_active_engine() {
17
  $engine = foogallery_thumb_active_engine();
18
  $engine->init();
19
+ add_filter( 'wp_image_editors', array( $this, 'override_image_editors' ), 999 );
20
  }
21
+
22
+ /**
23
+ * Overrides the editors to make sure the FooGallery thumb editors are included
24
+ *
25
+ * @param $editors
26
+ * @return array
27
+ */
28
+ function override_image_editors( $editors ) {
29
+
30
+ require_once( FOOGALLERY_PATH . '/includes/thumbs/class-foogallery-thumb-image-editor-gd.php' );
31
+ require_once( FOOGALLERY_PATH . '/includes/thumbs/class-foogallery-thumb-image-editor-imagick.php' );
32
+
33
+ $image_editors = array();
34
+
35
+ //replace the default image editors with the FooGallery Thumb image editors
36
+ foreach ( $editors as $editor ) {
37
+ switch ( $editor ) {
38
+ case 'WP_Image_Editor_Imagick':
39
+ $image_editors[] = 'FooGallery_Thumb_Image_Editor_Imagick';
40
+ break;
41
+ case 'WP_Image_Editor_GD':
42
+ $image_editors[] = 'FooGallery_Thumb_Image_Editor_GD';
43
+ break;
44
+ default:
45
+ $image_editors[] = $editor;
46
+ }
47
+ }
48
+
49
+ //Make sure the order is correct
50
+ if ( foogallery_get_setting( 'force_gd_library', false ) ) {
51
+ array_splice( $image_editors, 0, 0, array('FooGallery_Thumb_Image_Editor_GD') );
52
+ }
53
+
54
+ //make sure we have a unique list of editors
55
+ return array_unique( $image_editors );
56
+ }
57
  }
58
  }
includes/thumbs/default/class-foogallery-thumb-engine-default.php CHANGED
@@ -14,7 +14,7 @@ if ( ! class_exists( 'FooGallery_Thumb_Engine_Default' ) ) {
14
  private $last_error;
15
 
16
  public function init() {
17
- add_filter( 'wp_image_editors', array( $this, 'override_image_editors' ), 999 );
18
  add_action( 'deleted_post', array( $this, 'delete_cache_folder_for_attachment' ), 10, 1 );
19
  add_action( 'foogallery_admin_menu_after', array( $this, 'add_test_thumb_menu' ) );
20
 
@@ -181,42 +181,6 @@ Error : ';
181
  }
182
  }
183
 
184
- /**
185
- * Overrides the editors to make sure the FooGallery thumb editors are included
186
- *
187
- * @param $editors
188
- * @return array
189
- */
190
- function override_image_editors( $editors ) {
191
-
192
- require_once( FOOGALLERY_PATH . '/includes/thumbs/default/class-foogallery-thumb-image-editor-gd.php' );
193
- require_once( FOOGALLERY_PATH . '/includes/thumbs/default/class-foogallery-thumb-image-editor-imagick.php' );
194
-
195
- $image_editors = array();
196
-
197
- //replace the default image editors with the FooGallery Thumb image editors
198
- foreach ( $editors as $editor ) {
199
- switch ( $editor ) {
200
- case 'WP_Image_Editor_Imagick':
201
- $image_editors[] = 'FooGallery_Thumb_Image_Editor_Imagick';
202
- break;
203
- case 'WP_Image_Editor_GD':
204
- $image_editors[] = 'FooGallery_Thumb_Image_Editor_GD';
205
- break;
206
- default:
207
- $image_editors[] = $editor;
208
- }
209
- }
210
-
211
- //Make sure the order is correct
212
- if ( foogallery_get_setting( 'force_gd_library', false ) ) {
213
- array_splice( $image_editors, 0, 0, array('FooGallery_Thumb_Image_Editor_GD') );
214
- }
215
-
216
- //make sure we have a unique list of editors
217
- return array_unique( $image_editors );
218
- }
219
-
220
  /**
221
  * Hook into deleted_post and delete the associated cache file folder for an attachment
222
  *
14
  private $last_error;
15
 
16
  public function init() {
17
+
18
  add_action( 'deleted_post', array( $this, 'delete_cache_folder_for_attachment' ), 10, 1 );
19
  add_action( 'foogallery_admin_menu_after', array( $this, 'add_test_thumb_menu' ) );
20
 
181
  }
182
  }
183
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
184
  /**
185
  * Hook into deleted_post and delete the associated cache file folder for an attachment
186
  *
js/admin-foogallery-edit.js CHANGED
@@ -417,71 +417,78 @@ FooGallery.autoEnabled = false;
417
 
418
  FOOGALLERY.openMediaModal = function(selected_attachment_id) {
419
  if (!selected_attachment_id) { selected_attachment_id = 0; }
420
- FOOGALLERY.selected_attachment_id = selected_attachment_id;
421
 
422
- if (FOOGALLERY.media_uploader !== false){
423
- FOOGALLERY.media_uploader.open();
424
- return;
425
- }
426
 
427
- var createModal = $.isFunction(wp.foogallery) ? wp.foogallery : wp.media;
 
 
 
428
 
429
- // Create our FooGallery media frame.
430
- FOOGALLERY.media_uploader = createModal({
431
- frame: "select",
432
- multiple: 'add',
433
- title: FOOGALLERY.mediaModalTitle,
434
- button: {
435
- text: FOOGALLERY.mediaModalButtonText
436
- },
437
- library: {
438
- type: "image"
439
  }
440
- }).on("select", function(){
441
- var attachments = FOOGALLERY.media_uploader.state().get('selection').toJSON();
442
-
443
- $.each(attachments, function(i, item) {
444
- if ( item && item.id ) {
445
- var attachment = {
446
- id: item.id,
447
- src: null,
448
- subtype: null
449
- };
450
- if ( item.sizes && item.sizes.thumbnail) {
451
- attachment.src = item.sizes.thumbnail.url;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
452
  } else {
453
- //thumbnail could not be found for whatever reason. Default to the full image URL
454
- attachment.src = item.url;
455
- }
456
- if ( item.subtype ) {
457
- attachment.subtype = item.subtype;
458
  }
 
 
 
 
 
 
 
 
459
 
460
- FOOGALLERY.addAttachmentToGalleryList(attachment);
 
 
 
461
  } else {
462
- //there was a problem adding the item! Move on to the next
463
- alert( 'There was a problem adding the item to the gallery!' );
464
  }
465
  });
466
- })
467
- .on( 'open', function() {
468
- var selection = FOOGALLERY.media_uploader.state().get('selection');
469
- if (selection && !$.isFunction(wp.foogallery)) {
470
- //clear any previous selections
471
- selection.reset();
472
- }
473
-
474
- if (FOOGALLERY.selected_attachment_id > 0) {
475
- var attachment = wp.media.attachment(FOOGALLERY.selected_attachment_id);
476
- attachment.fetch();
477
- selection.add( attachment ? [ attachment ] : [] );
478
- } else {
479
- //would be nice to have all previously added media selected
480
- }
481
- });
482
 
483
- // Finally, open the modal
484
- FOOGALLERY.media_uploader.open();
 
485
  };
486
 
487
  FOOGALLERY.initUsageMetabox = function() {
@@ -552,6 +559,8 @@ FooGallery.autoEnabled = false;
552
 
553
  FOOGALLERY.initThumbCacheMetabox();
554
 
 
 
555
  $('.foogallery-attachments-list')
556
  .on('click' ,'a.remove', function(e) {
557
  e.preventDefault();
@@ -608,8 +617,149 @@ FooGallery.autoEnabled = false;
608
  e.preventDefault();
609
  alert( 'If you want to turn off these promotional messages forever, goto FooGallery Settings -> Advanced, and set the "Disable PRO Promotions" setting. Thank you for using FooGallery :)')
610
  } );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
611
  };
612
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
613
  }(window.FOOGALLERY = window.FOOGALLERY || {}, jQuery));
614
 
615
  FooGallery.utils.ready(function ($) {
417
 
418
  FOOGALLERY.openMediaModal = function(selected_attachment_id) {
419
  if (!selected_attachment_id) { selected_attachment_id = 0; }
 
420
 
421
+ var modal_style = $('#foogallery-image-edit-modal').data('modal_style');
 
 
 
422
 
423
+ if ( selected_attachment_id > 0 && modal_style === 'on') {
424
+ FOOGALLERY.openAttachmentModal( selected_attachment_id );
425
+ } else {
426
+ FOOGALLERY.selected_attachment_id = selected_attachment_id;
427
 
428
+ if (FOOGALLERY.media_uploader !== false){
429
+ FOOGALLERY.media_uploader.open();
430
+ return;
 
 
 
 
 
 
 
431
  }
432
+
433
+ var createModal = $.isFunction(wp.foogallery) ? wp.foogallery : wp.media;
434
+
435
+ // Create our FooGallery media frame.
436
+ FOOGALLERY.media_uploader = createModal({
437
+ frame: "select",
438
+ multiple: 'add',
439
+ title: FOOGALLERY.mediaModalTitle,
440
+ button: {
441
+ text: FOOGALLERY.mediaModalButtonText
442
+ },
443
+ library: {
444
+ type: "image"
445
+ }
446
+ }).on("select", function(){
447
+ var attachments = FOOGALLERY.media_uploader.state().get('selection').toJSON();
448
+
449
+ $.each(attachments, function(i, item) {
450
+ if ( item && item.id ) {
451
+ var attachment = {
452
+ id: item.id,
453
+ src: null,
454
+ subtype: null
455
+ };
456
+ if ( item.sizes && item.sizes.thumbnail) {
457
+ attachment.src = item.sizes.thumbnail.url;
458
+ } else {
459
+ //thumbnail could not be found for whatever reason. Default to the full image URL
460
+ attachment.src = item.url;
461
+ }
462
+ if ( item.subtype ) {
463
+ attachment.subtype = item.subtype;
464
+ }
465
+
466
+ FOOGALLERY.addAttachmentToGalleryList(attachment);
467
  } else {
468
+ //there was a problem adding the item! Move on to the next
469
+ alert( 'There was a problem adding the item to the gallery!' );
 
 
 
470
  }
471
+ });
472
+ })
473
+ .on( 'open', function() {
474
+ var selection = FOOGALLERY.media_uploader.state().get('selection');
475
+ if (selection && !$.isFunction(wp.foogallery)) {
476
+ //clear any previous selections
477
+ selection.reset();
478
+ }
479
 
480
+ if (FOOGALLERY.selected_attachment_id > 0) {
481
+ var attachment = wp.media.attachment(FOOGALLERY.selected_attachment_id);
482
+ attachment.fetch();
483
+ selection.add( attachment ? [ attachment ] : [] );
484
  } else {
485
+ //would be nice to have all previously added media selected
 
486
  }
487
  });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
488
 
489
+ // Finally, open the modal
490
+ FOOGALLERY.media_uploader.open();
491
+ }
492
  };
493
 
494
  FOOGALLERY.initUsageMetabox = function() {
559
 
560
  FOOGALLERY.initThumbCacheMetabox();
561
 
562
+ FOOGALLERY.initAttachmentModal();
563
+
564
  $('.foogallery-attachments-list')
565
  .on('click' ,'a.remove', function(e) {
566
  e.preventDefault();
617
  e.preventDefault();
618
  alert( 'If you want to turn off these promotional messages forever, goto FooGallery Settings -> Advanced, and set the "Disable PRO Promotions" setting. Thank you for using FooGallery :)')
619
  } );
620
+
621
+ $(document).on('click', '#foogallery-panel-taxonomies .foogallery_woocommerce_tags a', function(e){
622
+ $(this).toggleClass('button-primary');
623
+ var tags = [];
624
+ $('.foogallery_woocommerce_tags a.button-primary').each(function(){
625
+ var term_id = $(this).data('term-id');
626
+ tags.push(term_id);
627
+ });
628
+ var tag_str = tags.toString();
629
+ $('#foogallery_woocommerce_tags_selected').val(tag_str);
630
+ });
631
+
632
+ $(document).on('click', '#foogallery-panel-taxonomies .foogallery_woocommerce_categories a', function(e){
633
+ $(this).toggleClass('button-primary');
634
+ var categories = [];
635
+ $('.foogallery_woocommerce_categories a.button-primary').each(function(){
636
+ var term_id = $(this).data('term-id');
637
+ categories.push(term_id);
638
+ });
639
+ var cat_str = categories.toString();
640
+ $('#foogallery_woocommerce_taxonomies_selected').val(cat_str);
641
+ });
642
+
643
+ $(document).on('click', '#attachments-data-save-btn', function(e){
644
+ e.preventDefault();
645
+ var data = $('#foogallery_attachment_modal_save_form').serialize();
646
+ console.log(data);
647
+ $.ajax({
648
+ type: "POST",
649
+ url: ajaxurl,
650
+ data: data,
651
+ cache: false,
652
+ success: function(res) {
653
+ console.log(res);
654
+ }
655
+ });
656
+ });
657
+
658
+ $(document).on('click', '.copy-attachment-file-name', function(e) {
659
+ var file_name = $('#attachment-details-two-column-copy-file-name').text();
660
+ navigator.clipboard.writeText(file_name);
661
+ });
662
+
663
+ $(document).on('click', '.copy-attachment-file-url', function(e) {
664
+ var file_url = $('#attachments-foogallery-file-url').val();
665
+ navigator.clipboard.writeText(file_url);
666
+ });
667
+
668
+ $(document).on('click', '#foogallery-image-edit-modal .foogallery-img-modal-tab-wrapper', function(e) {
669
+ var panel = '#' + $(this).data('tab_id');
670
+ $('#foogallery-image-edit-modal .tab-panel').removeClass('active');
671
+ $(panel).addClass('active');
672
+ $('#foogallery-image-edit-modal').data( 'current_tab', $(this).data('tab_id') );
673
+ });
674
+
675
+ $(document).on('click', '#foogallery_clear_img_thumb_cache', function(e) {
676
+ e.preventDefault();
677
+
678
+ $('#foogallery_clear_img_thumb_cache_spinner').addClass('is-active');
679
+ var data = 'action=foogallery_clear_attachment_thumb_cache' +
680
+ '&img_id=' + $('.foogallery-image-edit-main').data('img_id') +
681
+ '&foogallery_clear_attachment_thumb_cache_nonce=' + $('#foogallery_clear_attachment_thumb_cache_nonce').val() +
682
+ '&_wp_http_referer=' + encodeURIComponent($('input[name="_wp_http_referer"]').val());
683
+
684
+ $.ajax({
685
+ type: "POST",
686
+ url: ajaxurl,
687
+ data: data,
688
+ success: function(data) {
689
+ $('#foogallery_clear_thumb_cache_spinner').removeClass('is-active');
690
+ }
691
+ });
692
+ });
693
+
694
+ $(document).on('click', '#foogallery-image-edit-modal .edit-media-header button', function(e) {
695
+ var selected_attachment_id = parseInt( $(this).data('attachment') );
696
+ if ( selected_attachment_id > 0 ) {
697
+ FOOGALLERY.openAttachmentModal(selected_attachment_id);
698
+ }
699
+ });
700
  };
701
 
702
+ FOOGALLERY.initAttachmentModal = function() {
703
+ jQuery('#foogallery-image-edit-modal .media-modal-close').click(function() {
704
+ var $content = jQuery('#foogallery-image-edit-modal'),
705
+ $wrapper = jQuery('#foogallery-image-edit-modal .media-frame-content .attachment-details'),
706
+ $loader = jQuery('#foogallery-image-edit-modal .media-frame-content .spinner');
707
+
708
+ $content.hide();
709
+ $wrapper.addClass('not-loaded');
710
+ $loader.addClass('is-active');
711
+ });
712
+ };
713
+
714
+ FOOGALLERY.openAttachmentModal = function(img_id) {
715
+ var $content = jQuery('#foogallery-image-edit-modal'),
716
+ $wrapper = jQuery('#foogallery-image-edit-modal .media-frame-content .attachment-details'),
717
+ $loader = jQuery('#foogallery-image-edit-modal .media-frame-content .spinner'),
718
+ nonce = $content.data('nonce'),
719
+ gallery_id = $content.data('gallery_id'),
720
+ current_tab = $content.data('current_tab');
721
+
722
+ $content.show();
723
+ $wrapper.addClass('not-loaded').html('<div class="spinner is-active"></div>');
724
+ $wrapper.css({'grid-template-columns': '1fr'});
725
+ $loader.addClass('is-active');
726
+
727
+ jQuery.ajax({
728
+ type: "POST",
729
+ url: ajaxurl,
730
+ data: {
731
+ 'img_id': img_id,
732
+ 'gallery_id': gallery_id,
733
+ 'current_tab': current_tab,
734
+ 'nonce': nonce,
735
+ 'action': 'foogallery_attachment_modal_open'
736
+ },
737
+ success: function(json) {
738
+ jQuery('#foogallery-image-edit-modal .edit-media-header button.left')
739
+ .attr('disabled', !json.prev_slide)
740
+ .data('attachment', json.prev_img_id);
741
+ jQuery('#foogallery-image-edit-modal .edit-media-header button.right')
742
+ .attr('disabled', !json.next_slide)
743
+ .data('attachment', json.next_img_id);
744
+
745
+ if ( json.override_thumbnail ) {
746
+ jQuery('#foogallery-image-edit-modal .tab-panels .settings span.setting.override-thumbnail').addClass('is-override-thumbnail');
747
+ jQuery('#foogallery-image-edit-modal .tab-panels .settings span.setting.override-thumbnail-preview').addClass('is-override-thumbnail');
748
+ }
749
+
750
+ jQuery('#foogallery-image-edit-modal .media-modal-content .edit-attachment-frame .media-frame-content .attachment-details').html(json.html);
751
+
752
+ if ( json.current_tab ) {
753
+ jQuery('.foogallery-img-modal-tab-wrapper[data-tab_id="' + json.current_tab + '"] input').click();
754
+ }
755
+
756
+ $wrapper.removeClass('not-loaded');
757
+ $wrapper.css({'grid-template-columns': '1fr 2fr'});
758
+ $loader.removeClass('is-active');
759
+ },
760
+ });
761
+ };
762
+
763
  }(window.FOOGALLERY = window.FOOGALLERY || {}, jQuery));
764
 
765
  FooGallery.utils.ready(function ($) {
js/foogallery.admin.min.js CHANGED
@@ -1,6 +1,6 @@
1
  /*
2
  * FooGallery - The Most Intuitive and Extensible Gallery Creation and Management Tool Ever Created for WordPress
3
- * @version 2.0.35
4
  * @link
5
  * @copyright Steven Usher & Brad Vincent 2015
6
  * @license Released under the GPLv3 license.
1
  /*
2
  * FooGallery - The Most Intuitive and Extensible Gallery Creation and Management Tool Ever Created for WordPress
3
+ * @version 2.0.39
4
  * @link
5
  * @copyright Steven Usher & Brad Vincent 2015
6
  * @license Released under the GPLv3 license.