")}function m(e){return e.replace(/\n/gi," ")}function O(e){for(var t=e,r=0,n=[b,y,m];r=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,c=!0,u=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return c=e.done,e},e:function(e){u=!0,i=e},f:function(){try{c||null==r.return||r.return()}finally{if(u)throw i}}}}function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r1&&void 0!==arguments[1]?arguments[1]:location,r=new URL(t.href);if(e)return r.searchParams&&r.searchParams.get?r.searchParams.get(e):u(e);var n,a={},c=i(r.searchParams.entries());try{for(c.s();!(n=c.n()).done;){var s=o()(n.value,2),f=s[0],l=s[1];a[f]=l}}catch(e){c.e(e)}finally{c.f()}return a}}).call(this,r(22))},84:function(e,t,r){"use strict";(function(e){r(44),r(45)}).call(this,r(22))},85:function(e,t,r){"use strict";(function(e){r.d(t,"b",(function(){return i})),r.d(t,"c",(function(){return a})),r.d(t,"a",(function(){return c}));var n=r(169),o=r(62),i=function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(Number.isNaN(Number(t)))return"";var i=r.invertColor,a=void 0!==i&&i;return Object(n.a)(e.createElement(o.a,{direction:t>0?"up":"down",invertColor:a}))},a=function(e){var t,r,n,o,i,a,c,u,s,f,l,p,d,g,v;if(void 0!==e)return 1===(null==e||null===(t=e[0])||void 0===t||null===(r=t.data)||void 0===r||null===(n=r.rows)||void 0===n?void 0:n.length)||(null==e||null===(o=e[0])||void 0===o||null===(i=o.data)||void 0===i||null===(a=i.rows)||void 0===a||null===(c=a[0])||void 0===c||null===(u=c.metrics)||void 0===u||null===(s=u[0])||void 0===s||null===(f=s.values)||void 0===f?void 0:f[0])===(null==e||null===(l=e[0])||void 0===l||null===(p=l.data)||void 0===p||null===(d=p.totals)||void 0===d||null===(g=d[0])||void 0===g||null===(v=g.values)||void 0===v?void 0:v[0])},c=function(e,t){return e>0&&t>0?e/t-1:e>0?1:t>0?-1:0}}).call(this,r(3))},86:function(e,t,r){"use strict";(function(e){r.d(t,"a",(function(){return f}));var n=r(6),o=r.n(n),i=r(87),a=r(88);function c(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function u(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:e,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e,o=u(u({},s),t);o.referenceSiteURL&&(o.referenceSiteURL=o.referenceSiteURL.toString().replace(/\/+$/,""));var c=Object(i.a)(o,r);return{enableTracking:function(){o.trackingEnabled=!0},disableTracking:function(){o.trackingEnabled=!1},initializeSnippet:c,isTrackingEnabled:function(){return!!o.trackingEnabled},trackEvent:Object(a.a)(o,r,c,n)}}}).call(this,r(22))},87:function(e,t,r){"use strict";(function(e){r.d(t,"a",(function(){return i}));var n=r(52),o=r(31);function i(t,r){var i,a=Object(n.a)(r);return function(){var r=e.document;if(void 0===i&&(i=!!r.querySelector("script[".concat(o.b,"]"))),!i){var n=r.createElement("script");n.setAttribute(o.b,""),n.async=!0,n.src="https://www.googletagmanager.com/gtag/js?id=".concat(t.trackingID,"&l=").concat(o.a),r.head.appendChild(n),a("js",new Date),a("config",t.trackingID,{send_page_view:t.isSiteKitScreen}),i=!0}}}}).call(this,r(22))},88:function(e,t,r){"use strict";r.d(t,"a",(function(){return d}));var n=r(5),o=r.n(n),i=r(6),a=r.n(i),c=r(16),u=r.n(c),s=r(52),f=r(42);function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function p(e){for(var t=1;t0&&void 0!==u[0]?u[0]:{},e=t.clearAfterRestore,n=void 0===e||e,r.next=4,{payload:{},type:"RESTORE_SNAPSHOT"};case 4:if(a=r.sent,o=a.cacheHit,i=a.value,!o){r.next=13;break}return r.next=10,{payload:{snapshot:i},type:"SET_STATE_FROM_SNAPSHOT"};case 10:if(!n){r.next=13;break}return r.next=13,{payload:{},type:"DELETE_SNAPSHOT"};case 13:return r.abrupt("return",o);case 14:case"end":return r.stop()}}),r)})),createSnapshot:c.a.mark((function r(){var t;return c.a.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,{payload:{},type:"CREATE_SNAPSHOT"};case 2:return t=r.sent,r.abrupt("return",t);case 4:case"end":return r.stop()}}),r)}))},o=(t={},i()(t,"DELETE_SNAPSHOT",(function(){return Object(v.a)("datastore::cache::".concat(r))})),i()(t,"CREATE_SNAPSHOT",g((function(t){return function(){return Object(v.d)("datastore::cache::".concat(r),t.stores[r].store.getState())}}))),i()(t,"RESTORE_SNAPSHOT",(function(){return Object(v.b)("datastore::cache::".concat(r),p.b)})),t);return{initialState:e,actions:n,controls:o,reducer:function(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:e,t=arguments.length>1?arguments[1]:void 0,n=t.type,o=t.payload;switch(n){case"SET_STATE_FROM_SNAPSHOT":var i=o.snapshot,u=(i.error,a()(i,["error"]));return u;default:return r}}}},h=function(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:d.a;return Object.values(r.stores).filter((function(r){return Object.keys(r.getActions()).includes("restoreSnapshot")}))},y=function(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:d.a;return Promise.all(h(r).map((function(r){return r.getActions().createSnapshot()})))},m=function(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:d.a;return Promise.all(h(r).map((function(r){return r.getActions().restoreSnapshot()})))}},1133:function(r,t,e){"use strict";e.r(t);var n=e(4),a=e.n(n),o=e(53),i=e(101),u=e(6),c=e.n(u),s=e(5),l=e.n(s),f=e(7),d=e.n(f),v=e(57),p=e.n(v),g=e(33);function b(r,t){var e=Object.keys(r);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(r);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(r,t).enumerable}))),e.push.apply(e,n)}return e}function h(r){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:o;return t instanceof Set&&t.has(r)}}).call(this,e(22))},43:function(r,t,e){"use strict";e.d(t,"a",(function(){return a}));var n=e(37),a=function(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t="string"==typeof r;if(!t)return!1;var e=r.split("-");return 3===e.length&&Object(n.a)(new Date(r))}},46:function(r,t,e){"use strict";(function(r){e.d(t,"b",(function(){return h})),e.d(t,"d",(function(){return y})),e.d(t,"a",(function(){return m})),e.d(t,"c",(function(){return O}));var n=e(5),a=e.n(n),o=e(16),i=e.n(o),u=(e(24),e(8));function c(r,t){var e="undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(!e){if(Array.isArray(r)||(e=function(r,t){if(!r)return;if("string"==typeof r)return s(r,t);var e=Object.prototype.toString.call(r).slice(8,-1);"Object"===e&&r.constructor&&(e=r.constructor.name);if("Map"===e||"Set"===e)return Array.from(r);if("Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e))return s(r,t)}(r))||t&&r&&"number"==typeof r.length){e&&(r=e);var n=0,a=function(){};return{s:a,n:function(){return n>=r.length?{done:!0}:{done:!1,value:r[n++]}},e:function(r){throw r},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,i=!0,u=!1;return{s:function(){e=e.call(r)},n:function(){var r=e.next();return i=r.done,r},e:function(r){u=!0,o=r},f:function(){try{i||null==e.return||e.return()}finally{if(u)throw o}}}}function s(r,t){(null==t||t>r.length)&&(t=r.length);for(var e=0,n=new Array(t);e2&&void 0!==b[2]?b[2]:{},i=o.ttl,c=void 0===i?u.b:i,s=o.timestamp,l=void 0===s?Math.round(Date.now()/1e3):s,d=o.isError,v=void 0!==d&&d,t.next=3,g();case 3:if(!(p=t.sent)){t.next=14;break}return t.prev=5,p.setItem("".concat(f).concat(e),JSON.stringify({timestamp:l,ttl:c,value:n,isError:v})),t.abrupt("return",!0);case 10:return t.prev=10,t.t0=t.catch(5),r.console.warn("Encountered an unexpected storage error:",t.t0),t.abrupt("return",!1);case 14:return t.abrupt("return",!1);case 15:case"end":return t.stop()}}),t,null,[[5,10]])})));return function(r,e){return t.apply(this,arguments)}}(),m=function(){var t=i()(a.a.mark((function t(e){var n;return a.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,g();case 2:if(!(n=t.sent)){t.next=13;break}return t.prev=4,n.removeItem("".concat(f).concat(e)),t.abrupt("return",!0);case 9:return t.prev=9,t.t0=t.catch(4),r.console.warn("Encountered an unexpected storage error:",t.t0),t.abrupt("return",!1);case 13:return t.abrupt("return",!1);case 14:case"end":return t.stop()}}),t,null,[[4,9]])})));return function(r){return t.apply(this,arguments)}}(),O=function(){var t=i()(a.a.mark((function t(){var e,n,o,i;return a.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,g();case 2:if(!(e=t.sent)){t.next=14;break}for(t.prev=4,n=[],o=0;o2&&void 0!==arguments[2]?arguments[2]:{},n=e.clearMatchingLegacyError,a=void 0!==n&&n;return r&&s()(t&&Array.isArray(t),"args is required (and must be an array) when baseName is specified."),{type:"CLEAR_ERROR",payload:{baseName:r,args:t,clearMatchingLegacyError:a}}},clearErrors:function(r){return{type:"CLEAR_ERRORS",payload:{baseName:r}}}};function h(r){s()(r,"storeName must be defined.");var t={errors:{},errorArgs:{},error:void 0};var e={getErrorForSelector:function(t,n){var a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];s()(n,"selectorName is required.");var o=e.getError(t,n,a);if(o)return p(p({},o),{},{selectorData:{storeName:r,name:n,args:a}})},getErrorForAction:function(r,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];return s()(t,"actionName is required."),e.getError(r,t,n)},getError:function(r,t,e){var n=r.error,a=r.errors;return t||e?(s()(t,"baseName is required."),a[g(t,e)]):n},getErrors:function(r){var t=new Set(Object.values(r.errors));return void 0!==r.error&&t.add(r.error),Array.from(t)},getMetaDataForError:function(r,t){var e=Object.keys(r.errors).find((function(e){return r.errors[e]===t}));return e?{baseName:e.substring(0,e.indexOf("::")),args:r.errorArgs[e]}:null},getSelectorDataForError:Object(u.e)((function(t){return function(e,n){var a=t(r).getMetaDataForError(n);if(a){var o=a.baseName,i=a.args;if(!!t(r)[o])return{storeName:r,name:o,args:i}}return null}})),hasErrors:function(r){return e.getErrors(r).length>0}};return{initialState:t,actions:b,controls:{},reducer:function(r,t){var e=t.type,n=t.payload;switch(e){case"RECEIVE_ERROR":var o=n.baseName,i=n.args,u=n.error;if(o){var c=g(o,i);return p(p({},r),{},{errors:p(p({},r.errors||{}),{},a()({},c,u)),errorArgs:p(p({},r.errorArgs||{}),{},a()({},c,i))})}return p(p({},r),{},{error:u});case"CLEAR_ERROR":var s=n.baseName,l=n.args,f=p({},r);if(s){var d=g(s,l);f.errors=p({},r.errors||{}),f.errorArgs=p({},r.errorArgs||{}),n.clearMatchingLegacyError&&f.error===f.errors[d]&&delete f.error,delete f.errors[d],delete f.errorArgs[d]}else f.error=void 0;return f;case"CLEAR_ERRORS":var v=n.baseName,b=p({},r);if(v)for(var h in b.errors=p({},r.errors||{}),b.errorArgs=p({},r.errorArgs||{}),b.errors)(h===v||h.startsWith("".concat(v,"::")))&&(delete b.errors[h],delete b.errorArgs[h]);else b.errors={},b.errorArgs={},b.error=void 0;return b;default:return r}},resolvers:{},selectors:e}}},62:function(r,t,e){"use strict";(function(r){var n=e(0),a=e.n(n),o=e(11),i=e.n(o);function ChangeArrow(t){var e=t.direction,n=t.invertColor,a=t.width,o=t.height;return r.createElement("svg",{className:i()("googlesitekit-change-arrow","googlesitekit-change-arrow--".concat(e),{"googlesitekit-change-arrow--inverted-color":n}),width:a,height:o,viewBox:"0 0 10 10",fill:"none",xmlns:"http://www.w3.org/2000/svg"},r.createElement("path",{d:"M5.625 10L5.625 2.375L9.125 5.875L10 5L5 -1.76555e-07L-2.7055e-07 5L0.875 5.875L4.375 2.375L4.375 10L5.625 10Z",fill:"currentColor"}))}ChangeArrow.propTypes={direction:a.a.string,invertColor:a.a.bool,width:a.a.number,height:a.a.number},ChangeArrow.defaultProps={direction:"up",invertColor:!1,width:9,height:9},t.a=ChangeArrow}).call(this,e(3))},63:function(r,t,e){"use strict";e.d(t,"a",(function(){return i})),e.d(t,"b",(function(){return u}));var n=e(30),a=e.n(n),o=e(78),i=function(r){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return{__html:o.a.sanitize(r,t)}};function u(r){var t,e="object"===a()(r)?r.toString():r;return null==e||null===(t=e.replace)||void 0===t?void 0:t.call(e,/\/+$/,"")}},68:function(r,t,e){"use strict";e.d(t,"d",(function(){return n.e})),e.d(t,"c",(function(){return n.d})),e.d(t,"b",(function(){return n.b})),e.d(t,"a",(function(){return n.a})),e.d(t,"e",(function(){return n.f})),e.d(t,"g",(function(){return u})),e.d(t,"h",(function(){return s})),e.d(t,"i",(function(){return l})),e.d(t,"j",(function(){return f.a})),e.d(t,"f",(function(){return v})),e.d(t,"k",(function(){return c.a}));var n=e(36),a=e(7),o=e.n(a),i=e(37),u=function(r){o()(Object(i.a)(r),n.c);var t="".concat(r.getMonth()+1),e="".concat(r.getDate());return[r.getFullYear(),t.length<2?"0".concat(t):t,e.length<2?"0".concat(e):e].join("-")},c=e(38),s=function(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0,e=Object(c.a)(r);return e.setDate(e.getDate()-t),u(e)},l=function(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=r.split("-");return 3===t.length&&"last"===t[0]&&!Number.isNaN(t[1])&&!Number.isNaN(parseFloat(t[1]))&&"days"===t[2]},f=e(43);var d=e(1);function v(){var r=function(r){return Object(d.sprintf)(
+/* translators: %s: number of days */
+Object(d._n)("Last %s day","Last %s days",r,"google-site-kit"),r)};return{"last-7-days":{slug:"last-7-days",label:r(7),days:7},"last-14-days":{slug:"last-14-days",label:r(14),days:14},"last-28-days":{slug:"last-28-days",label:r(28),days:28},"last-90-days":{slug:"last-90-days",label:r(90),days:90}}}},73:function(r,t,e){"use strict";(function(r){e.d(t,"c",(function(){return w})),e.d(t,"d",(function(){return S})),e.d(t,"b",(function(){return E})),e.d(t,"a",(function(){return k}));var n=e(14),a=e.n(n),o=e(30),i=e.n(o),u=e(6),c=e.n(u),s=e(21),l=e.n(s),f=e(26),d=e(71),v=e.n(d),p=e(1);function g(r,t){var e=Object.keys(r);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(r);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(r,t).enumerable}))),e.push.apply(e,n)}return e}function b(r){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{},e=y(r,t),n=e.formatUnit,a=e.formatDecimal;try{return n()}catch(r){return a()}},y=function(r){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};r=parseInt(r,10),Number.isNaN(r)&&(r=0);var e=Math.floor(r/60/60),n=Math.floor(r/60%60),a=Math.floor(r%60);return{hours:e,minutes:n,seconds:a,formatUnit:function(){var o=t.unitDisplay,i=b(b({unitDisplay:void 0===o?"short":o},l()(t,["unitDisplay"])),{},{style:"unit"});return 0===r?S(a,b(b({},i),{},{unit:"second"})):Object(p.sprintf)(
+/* translators: 1: formatted seconds, 2: formatted minutes, 3: formatted hours */
+Object(p._x)("%3$s %2$s %1$s","duration of time: hh mm ss","google-site-kit"),a?S(a,b(b({},i),{},{unit:"second"})):"",n?S(n,b(b({},i),{},{unit:"minute"})):"",e?S(e,b(b({},i),{},{unit:"hour"})):"").trim()},formatDecimal:function(){var t=Object(p.sprintf)(// translators: %s: number of seconds with "s" as the abbreviated unit.
+Object(p.__)("%ds","google-site-kit"),a);if(0===r)return t;var o=Object(p.sprintf)(// translators: %s: number of minutes with "m" as the abbreviated unit.
+Object(p.__)("%dm","google-site-kit"),n),i=Object(p.sprintf)(// translators: %s: number of hours with "h" as the abbreviated unit.
+Object(p.__)("%dh","google-site-kit"),e);return Object(p.sprintf)(
+/* translators: 1: formatted seconds, 2: formatted minutes, 3: formatted hours */
+Object(p._x)("%3$s %2$s %1$s","duration of time: hh mm ss","google-site-kit"),a?t:"",n?o:"",e?i:"").trim()}}},m=function(r){return 1e6<=r?Math.round(r/1e5)/10:1e4<=r?Math.round(r/1e3):1e3<=r?Math.round(r/100)/10:r},O=function(r){var t={minimumFractionDigits:1,maximumFractionDigits:1};return 1e6<=r?Object(p.sprintf)(// translators: %s: an abbreviated number in millions.
+Object(p.__)("%sM","google-site-kit"),S(m(r),r%10==0?{}:t)):1e4<=r?Object(p.sprintf)(// translators: %s: an abbreviated number in thousands.
+Object(p.__)("%sK","google-site-kit"),S(m(r))):1e3<=r?Object(p.sprintf)(// translators: %s: an abbreviated number in thousands.
+Object(p.__)("%sK","google-site-kit"),S(m(r),r%10==0?{}:t)):S(r,{signDisplay:"never",maximumFractionDigits:1})},w=function(r){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};r=Object(f.isFinite)(r)?r:Number(r),Object(f.isFinite)(r)||(console.warn("Invalid number",r,i()(r)),r=0);var e={};if("%"===t)e={style:"percent",maximumFractionDigits:2};else{if("s"===t)return h(r,{unitDisplay:"narrow"});t&&"string"==typeof t?e={style:"currency",currency:t}:Object(f.isPlainObject)(t)&&(e=b({},t))}var n=e,a=n.style,o=void 0===a?"metric":a;return"metric"===o?O(r):"duration"===o?h(r,t):S(r,e)},j=v()(console.warn),S=function(r){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},e=t.locale,n=void 0===e?k():e,o=l()(t,["locale"]);try{return new Intl.NumberFormat(n,o).format(r)}catch(t){j("Site Kit numberFormat error: Intl.NumberFormat( ".concat(JSON.stringify(n),", ").concat(JSON.stringify(o)," ).format( ").concat(i()(r)," )"),t.message)}for(var u={currencyDisplay:"narrow",currencySign:"accounting",style:"unit"},c=["signDisplay","compactDisplay"],s={},f=0,d=Object.entries(o);f1&&void 0!==arguments[1]?arguments[1]:{},e=t.locale,n=void 0===e?k():e,a=t.style,o=void 0===a?"long":a,i=t.type,u=void 0===i?"conjunction":i;if(Intl.ListFormat){var c=new Intl.ListFormat(n,{style:o,type:u});return c.format(r)}
+/* translators: used between list items, there is a space after the comma. */var s=Object(p.__)(", ","google-site-kit");return r.join(s)},k=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:r,e=Object(f.get)(t,["_googlesitekitLegacyData","locale"]);if(e){var n=e.match(/^(\w{2})?(_)?(\w{2})/);if(n&&n[0])return n[0].replace(/_/g,"-")}return t.navigator.language}}).call(this,e(22))},78:function(r,t,e){"use strict";(function(r){e.d(t,"a",(function(){return a}));var n=e(124),a=e.n(n)()(r)}).call(this,e(22))},8:function(r,t,e){"use strict";e.d(t,"z",(function(){return u.b})),e.d(t,"w",(function(){return c.a})),e.d(t,"A",(function(){return c.b})),e.d(t,"y",(function(){return v})),e.d(t,"f",(function(){return p.a})),e.d(t,"m",(function(){return p.b})),e.d(t,"u",(function(){return g.c})),e.d(t,"v",(function(){return g.d})),e.d(t,"r",(function(){return g.b})),e.d(t,"l",(function(){return g.a})),e.d(t,"s",(function(){return m})),e.d(t,"g",(function(){return O})),e.d(t,"b",(function(){return w.b})),e.d(t,"a",(function(){return w.a})),e.d(t,"c",(function(){return w.e})),e.d(t,"i",(function(){return w.f})),e.d(t,"x",(function(){return w.k})),e.d(t,"j",(function(){return j.b})),e.d(t,"q",(function(){return j.c})),e.d(t,"e",(function(){return j.a})),e.d(t,"o",(function(){return S.b})),e.d(t,"k",(function(){return S.a})),e.d(t,"t",(function(){return S.d})),e.d(t,"p",(function(){return E})),e.d(t,"n",(function(){return k})),e.d(t,"d",(function(){return _})),e.d(t,"B",(function(){return A})),e.d(t,"h",(function(){return D}));var n=e(123),a=e.n(n),o=e(118),i=e.n(o),u=e(32),c=e(63),s=e(30),l=e.n(s),f=e(81),d=e.n(f),v=function(r){return d()(JSON.stringify(function r(t){var e={};return Object.keys(t).sort().forEach((function(n){var a=t[n];a&&"object"===l()(a)&&!Array.isArray(a)&&(a=r(a)),e[n]=a})),e}(r)))};var p=e(83),g=(e(84),e(73));function b(r){return r.replace(/\[([^\]]+)\]\((https?:\/\/[^\/]+\.\w+\/?.*?)\)/gi,'$1')}function h(r){return"
".concat(r.replace(/\n{2,}/g,"
"),"
")}function y(r){return r.replace(/\n/gi," ")}function m(r){for(var t=r,e=0,n=[b,h,y];e=r.length?{done:!0}:{done:!1,value:r[n++]}},e:function(r){throw r},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,u=!0,c=!1;return{s:function(){e=e.call(r)},n:function(){var r=e.next();return u=r.done,r},e:function(r){c=!0,o=r},f:function(){try{u||null==e.return||e.return()}finally{if(c)throw o}}}}function i(r,t){(null==t||t>r.length)&&(t=r.length);for(var e=0,n=new Array(t);e1&&void 0!==arguments[1]?arguments[1]:location,e=new URL(t.href);if(r)return e.searchParams&&e.searchParams.get?e.searchParams.get(r):c(r);var n,i={},u=o(e.searchParams.entries());try{for(u.s();!(n=u.n()).done;){var s=a()(n.value,2),l=s[0],f=s[1];i[l]=f}}catch(r){u.e(r)}finally{u.f()}return i}}).call(this,e(22))},84:function(r,t,e){"use strict";(function(r){e(44),e(45)}).call(this,e(22))},85:function(r,t,e){"use strict";(function(r){e.d(t,"b",(function(){return o})),e.d(t,"c",(function(){return i})),e.d(t,"a",(function(){return u}));var n=e(169),a=e(62),o=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(Number.isNaN(Number(t)))return"";var o=e.invertColor,i=void 0!==o&&o;return Object(n.a)(r.createElement(a.a,{direction:t>0?"up":"down",invertColor:i}))},i=function(r){var t,e,n,a,o,i,u,c,s,l,f,d,v,p,g;if(void 0!==r)return 1===(null==r||null===(t=r[0])||void 0===t||null===(e=t.data)||void 0===e||null===(n=e.rows)||void 0===n?void 0:n.length)||(null==r||null===(a=r[0])||void 0===a||null===(o=a.data)||void 0===o||null===(i=o.rows)||void 0===i||null===(u=i[0])||void 0===u||null===(c=u.metrics)||void 0===c||null===(s=c[0])||void 0===s||null===(l=s.values)||void 0===l?void 0:l[0])===(null==r||null===(f=r[0])||void 0===f||null===(d=f.data)||void 0===d||null===(v=d.totals)||void 0===v||null===(p=v[0])||void 0===p||null===(g=p.values)||void 0===g?void 0:g[0])},u=function(r,t){return r>0&&t>0?r/t-1:r>0?1:t>0?-1:0}}).call(this,e(3))},86:function(r,t,e){"use strict";(function(r){e.d(t,"a",(function(){return l}));var n=e(6),a=e.n(n),o=e(87),i=e(88);function u(r,t){var e=Object.keys(r);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(r);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(r,t).enumerable}))),e.push.apply(e,n)}return e}function c(r){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:r,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:r,a=c(c({},s),t);a.referenceSiteURL&&(a.referenceSiteURL=a.referenceSiteURL.toString().replace(/\/+$/,""));var u=Object(o.a)(a,e);return{enableTracking:function(){a.trackingEnabled=!0},disableTracking:function(){a.trackingEnabled=!1},initializeSnippet:u,isTrackingEnabled:function(){return!!a.trackingEnabled},trackEvent:Object(i.a)(a,e,u,n)}}}).call(this,e(22))},87:function(r,t,e){"use strict";(function(r){e.d(t,"a",(function(){return o}));var n=e(52),a=e(31);function o(t,e){var o,i=Object(n.a)(e);return function(){var e=r.document;if(void 0===o&&(o=!!e.querySelector("script[".concat(a.b,"]"))),!o){var n=e.createElement("script");n.setAttribute(a.b,""),n.async=!0,n.src="https://www.googletagmanager.com/gtag/js?id=".concat(t.trackingID,"&l=").concat(a.a),e.head.appendChild(n),i("js",new Date),i("config",t.trackingID,{send_page_view:t.isSiteKitScreen}),o=!0}}}}).call(this,e(22))},88:function(r,t,e){"use strict";e.d(t,"a",(function(){return v}));var n=e(5),a=e.n(n),o=e(6),i=e.n(o),u=e(16),c=e.n(u),s=e(52),l=e(42);function f(r,t){var e=Object.keys(r);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(r);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(r,t).enumerable}))),e.push.apply(e,n)}return e}function d(r){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{},r=t.compare,n=void 0!==r&&r,i=t.offsetDays,a=void 0===i?0:i,o=t.referenceDate,c=void 0===o?e.referenceDate:o,u=R.getDateRange(e),s=Object(I.h)(c,a),l=u.match("-(.*)-"),f=Number(l?l[1]:28),d=Object(I.h)(s,f-1),g={startDate:d,endDate:s};if(n){var p=Object(I.h)(d,1),v=Object(I.h)(p,f-1);g.compareStartDate=v,g.compareEndDate=p}return g},getDateRangeNumberOfDays:function(e){var t=R.getDateRange(e).match(/-(\d+)-/);return parseInt(t?t[1]:28,10)},getReferenceDate:function(e){return e.referenceDate}},A={initialState:x,actions:{setDateRange:function(e){return k()(e,"Date range slug is required."),k()(Object(I.i)(e),I.c),{type:"SET_DATE_RANGE",payload:{slug:e}}},setReferenceDate:function(e){return k()(e,"Date string is required."),k()(Object(I.j)(e),I.d),{type:"SET_REFERENCE_DATE",payload:{dateString:e}}}},controls:{},reducer:function(e,t){var r=t.type,n=t.payload;switch(r){case"SET_DATE_RANGE":return D(D({},e),{},{dateRange:n.slug});case"SET_REFERENCE_DATE":return D(D({},e),{},{referenceDate:n.dateString});default:return e}},resolvers:{},selectors:R};function C(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function P(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:0;return{slug:e,expiresInSeconds:t}},validateParams:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.slug,r=e.expiresInSeconds;k()(t,"slug is required."),k()(Number.isInteger(r),"expiresInSeconds must be an integer.")}}),X={dismissedItems:void 0},ee={dismissItem:Object(G.f)((function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.expiresInSeconds,n=void 0===r?0:r;k()(e,"A tour slug is required to dismiss a tour."),k()(Number.isInteger(n),"expiresInSeconds must be an integer.")}),c.a.mark((function e(t){var r,n,i,a=arguments;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=a.length>1&&void 0!==a[1]?a[1]:{},n=r.expiresInSeconds,i=void 0===n?0:n,e.next=4,Z.actions.fetchDismissItem(t,i);case 4:return e.abrupt("return",e.sent);case 5:case"end":return e.stop()}}),e)})))},te={getDismissedItems:c.a.mark((function e(){var t,r;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,$();case 2:if(t=e.sent,r=t.select,void 0!==r(d.a).getDismissedItems()){e.next=8;break}return e.next=8,Q.actions.fetchGetDismissedItems();case 8:case"end":return e.stop()}}),e)}))},re={getDismissedItems:function(e){return e.dismissedItems},isItemDismissed:K((function(e){return function(t,r){var n;return null===(n=e(d.a).getDismissedItems())||void 0===n?void 0:n.includes(r)}})),isDismissingItem:K((function(e){return function(t,r){return e(d.a).isFetchingDismissItem(r)}}))},ne=i.a.combineStores({initialState:X,actions:ee,resolvers:te,selectors:re},Z,Q),ie={actions:ne.actions,controls:ne.controls,initialState:ne.initialState,reducer:ne.reducer,resolvers:ne.resolvers,selectors:ne.selectors},ae=r(16),oe=r.n(ae),ce=r(761),ue=r.n(ce),se=r(57),le=r.n(se),fe=r(1),de=r(23),ge={slug:"helpVisibility",contexts:[de.j,de.k,de.h,de.i],version:"1.29.0",gaEventCategory:function(e){return"".concat(e,"_headerbar_helpmenu")},steps:[{target:".googlesitekit-help-menu",title:Object(fe.__)("Need help?","google-site-kit"),content:Object(fe.__)("Access the Site Kit docs or ask a question in our support forum from here.","google-site-kit"),placement:"bottom-start"}]},pe=r(762),ve=r(17),be=r(39),me={slug:"ideaHubPostsTable",contexts:[de.m],version:"1.43.0",gaEventCategory:be.n,checkRequirements:(J=oe()(c.a.mark((function e(t){return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(document.querySelector(".googlesitekit-idea-hub__post")){e.next=2;break}return e.abrupt("return",!1);case 2:return e.abrupt("return",t.__experimentalResolveSelect(ve.a).isModuleConnected("idea-hub"));case 3:case"end":return e.stop()}}),e)}))),function(e){return J.apply(this,arguments)}),steps:[{target:".googlesitekit-idea-hub__post",title:Object(fe.__)("Get started writing about your saved ideas","google-site-kit"),content:Object(fe.__)("Drafts you created from Idea Hub within Site Kit appear here for easy access.","google-site-kit")}]},ye=r(766),he=r(24),Oe=r.n(he),Se=r(25),_e=r(42),Ee=r(350),we=r(33),je=r(111),ke={slug:"dashboardSharing",contexts:[de.j],version:"1.85.0",gaEventCategory:function(e){return"".concat(e,"_dashboard-sharing")},steps:[{target:".googlesitekit-sharing-settings__button",title:Object(fe.__)("New! Dashboard sharing","google-site-kit"),content:Object(fe.__)("Share a view-only version of your dashboard with other WordPress roles","google-site-kit"),placement:"bottom-start"}].concat(Oe()(Ee.a.steps)),checkRequirements:function(){return Object(_e.b)("dashboardSharing")},callback:function(e,t){var r=t.select,n=t.dispatch,i=e.action,a=e.index,o=e.size,c=e.type,u=r(we.b).getValue(je.d);Se.a.NEXT===i&&0===a&&n(we.b).setValue(je.d,!0),(Se.a.STOP===i||0===a&&u)&&n(we.b).setValue(je.d,!1),a+1!==o||Se.b.TOOLTIP!==c||W||(W=!0,n(d.a).dismissTour(Ee.a.slug))}},Ie=r(9),Te=[{slug:"allTrafficWidget",contexts:[de.j,de.k],version:"1.25.0",gaEventCategory:function(e){return"".concat(e,"_all-traffic-widget")},checkRequirements:function(){var e=oe()(c.a.mark((function e(t){return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.__experimentalResolveSelect(ve.a).isModuleConnected("analytics");case 2:if(e.sent){e.next=5;break}return e.abrupt("return",!1);case 5:return e.next=7,new Promise((function(e){setTimeout((function r(){t.select(we.b).getValue(Ie.q)?e():setTimeout(r,250)}),250)}));case 7:return e.abrupt("return",!0);case 8:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),steps:[{target:".googlesitekit-widget--analyticsAllTraffic__totals",title:Object(fe.__)("It’s now easier to see your site’s traffic at a glance","google-site-kit"),content:Object(fe.__)("Check the trend graph to see how your traffic changed over time","google-site-kit"),placement:"top"},{target:".googlesitekit-widget--analyticsAllTraffic__dimensions",title:Object(fe.__)("See where your visitors come from","google-site-kit"),content:Object(fe.__)("Click on the chart slices to see how each segment has changed over time","google-site-kit"),placement:"top"},{target:".googlesitekit-header__date-range-selector-menu",title:Object(fe.__)("Check how your traffic changed since you last looked","google-site-kit"),content:Object(fe.__)("Select a time frame to see the comparison with the previous time period","google-site-kit")}]},ge,pe.a,me,ye.a,ke],De=r(46);function xe(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if("string"==typeof e)return Re(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Re(e,t)}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,c=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return o=e.done,e},e:function(e){c=!0,a=e},f:function(){try{o||null==r.return||r.return()}finally{if(c)throw a}}}}function Re(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r0&&void 0!==arguments[0]?arguments[0]:{},t=e.slug;k()(t,"slug is required.")}}),qe={lastDismissedAt:void 0,dismissedTourSlugs:void 0,tours:Te,currentTour:null},Me={dismissTour:Object(G.f)((function(e){k()(e,"A tour slug is required to dismiss a tour.")}),c.a.mark((function e(t){var r,n,i;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Le();case 2:if(r=e.sent,!(n=r.select)(d.a).isFetchingDismissTour(t)){e.next=7;break}return i=n(d.a).getDismissedFeatureTourSlugs(),e.abrupt("return",{response:i,error:void 0});case 7:return e.next=9,{type:"DISMISS_TOUR",payload:{slug:t}};case 9:return e.next=11,$e.setLastDismissedAt(Date.now());case 11:return e.next=13,Fe.actions.fetchDismissTour(t);case 13:return e.abrupt("return",e.sent);case 14:case"end":return e.stop()}}),e)}))),receiveCurrentTour:function(e){return k()(le()(e),"tour must be a plain object."),{payload:{tour:e},type:"RECEIVE_CURRENT_TOUR"}},receiveFeatureToursForView:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.viewContext;return k()(Array.isArray(e),"viewTours must be an array."),k()(r,"viewContext is required."),{payload:{viewTours:e,viewContext:r},type:"RECEIVE_READY_TOURS"}},receiveAllFeatureTours:function(e){return k()(Array.isArray(e),"tours must be an array."),{payload:{tours:e},type:"RECEIVE_TOURS"}},receiveLastDismissedAt:function(e){return k()(void 0!==e,"A timestamp is required."),{type:"RECEIVE_LAST_DISMISSED_AT",payload:{timestamp:e}}},setLastDismissedAt:Object(G.f)((function(e){k()(e,"A timestamp is required.")}),c.a.mark((function e(t){return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,{type:"CACHE_LAST_DISMISSED_AT",payload:{timestamp:t}};case 2:return e.next=4,{type:"RECEIVE_LAST_DISMISSED_AT",payload:{timestamp:t}};case 4:case"end":return e.stop()}}),e)}))),triggerTour:c.a.mark((function e(t){var r;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Le();case 2:if(r=e.sent,(0,r.select)(d.a).getCurrentTour()){e.next=7;break}return e.next=7,Me.receiveCurrentTour(t);case 7:case"end":return e.stop()}}),e)})),triggerOnDemandTour:c.a.mark((function e(t){return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,{payload:{tour:t},type:"CHECK_ON_DEMAND_TOUR_REQUIREMENTS"};case 2:if(!e.sent){e.next=6;break}return e.next=6,Me.triggerTour(t);case 6:case"end":return e.stop()}}),e)})),triggerTourForView:c.a.mark((function e(t){var r,n,a,o,u,s,l;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Le();case 2:return r=e.sent,n=r.select,a=r.__experimentalResolveSelect,e.next=7,i.a.commonActions.await(a(d.a).getLastDismissedAt());case 7:if(!n(d.a).areFeatureToursOnCooldown()){e.next=9;break}return e.abrupt("return",{});case 9:o=n(d.a).getAllFeatureTours(),u=xe(o),e.prev=11,u.s();case 13:if((s=u.n()).done){e.next=24;break}return l=s.value,e.next=17,{payload:{tour:l,viewContext:t},type:"CHECK_TOUR_REQUIREMENTS"};case 17:if(!e.sent){e.next=22;break}return e.next=21,Me.triggerTour(l);case 21:return e.abrupt("return",e.sent);case 22:e.next=13;break;case 24:e.next=29;break;case 26:e.prev=26,e.t0=e.catch(11),u.e(e.t0);case 29:return e.prev=29,u.f(),e.finish(29);case 32:case"end":return e.stop()}}),e,null,[[11,26,29,32]])}))},Ge=(z={},s()(z,"CHECK_TOUR_REQUIREMENTS",Ue((function(e){return function(){var t=oe()(c.a.mark((function t(r){var n,i,a,o;return c.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n=r.payload,i=n.tour,a=n.viewContext,i.contexts.includes(a)){t.next=4;break}return t.abrupt("return",!1);case 4:if(o=e.select(d.a).getInitialSiteKitVersion()){t.next=9;break}return t.abrupt("return",!1);case 9:if(!ue.a.compare(o,i.version,">=")){t.next=11;break}return t.abrupt("return",!1);case 11:return t.next=13,e.__experimentalResolveSelect(d.a).getDismissedFeatureTourSlugs();case 13:if(!e.select(d.a).isTourDismissed(i.slug)){t.next=15;break}return t.abrupt("return",!1);case 15:if(!i.checkRequirements){t.next=19;break}return t.next=18,i.checkRequirements(e);case 18:return t.abrupt("return",!!t.sent);case 19:return t.abrupt("return",!0);case 20:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}()}))),s()(z,"CHECK_ON_DEMAND_TOUR_REQUIREMENTS",Ue((function(e){return function(){var t=oe()(c.a.mark((function t(r){var n,i;return c.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=r.payload,i=n.tour,t.next=4,e.__experimentalResolveSelect(d.a).getDismissedFeatureTourSlugs();case 4:if(!e.select(d.a).isTourDismissed(i.slug)){t.next=6;break}return t.abrupt("return",!1);case 6:if(!i.checkRequirements){t.next=10;break}return t.next=9,i.checkRequirements(e);case 9:return t.abrupt("return",!!t.sent);case 10:return t.abrupt("return",!0);case 11:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}()}))),s()(z,"CACHE_LAST_DISMISSED_AT",(Pe=oe()(c.a.mark((function e(t){var r,n;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=t.payload,n=r.timestamp,e.next=4,Object(De.d)("feature_tour_last_dismissed_at",n,{ttl:7200});case 4:case"end":return e.stop()}}),e)}))),function(e){return Pe.apply(this,arguments)})),z),He={getDismissedFeatureTourSlugs:c.a.mark((function e(){var t,r;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Le();case 2:if(t=e.sent,r=t.select,void 0!==r(d.a).getDismissedFeatureTourSlugs()){e.next=8;break}return e.next=8,Ve.actions.fetchGetDismissedTours();case 8:case"end":return e.stop()}}),e)})),getLastDismissedAt:c.a.mark((function e(){var t,r;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,i.a.commonActions.await(Object(De.b)("feature_tour_last_dismissed_at"));case 2:return t=e.sent,r=t.value,e.next=6,$e.receiveLastDismissedAt(r||null);case 6:case"end":return e.stop()}}),e)}))},Be={getCurrentTour:function(e){return e.currentTour},getDismissedFeatureTourSlugs:function(e){return e.dismissedTourSlugs},getAllFeatureTours:function(e){return e.tours},isTourDismissed:Ne((function(e){return function(t,r){var n=e(d.a).getDismissedFeatureTourSlugs();if(void 0!==n)return n.includes(r)}})),getLastDismissedAt:function(e){return e.lastDismissedAt},areFeatureToursOnCooldown:Ne((function(e){return function(){var t=e(d.a).getLastDismissedAt();if(void 0!==t){if(null===t)return!1;var r=t+72e5;return Date.now()0&&void 0!==arguments[0]?arguments[0]:{},t=e.triggerID;k()("string"==typeof t&&t.length,"triggerID is required and must be a string")}}),ot=Object(g.a)({baseName:"sendSurveyEvent",controlCallback:function(e){var t=e.event,r=e.session;return f.a.set("core","user","survey-event",{event:t,session:r})},argsToParams:function(e,t){return{event:e,session:t}}}),ct=Object(g.a)({baseName:"getSurveyTimeouts",controlCallback:function(){return f.a.get("core","user","survey-timeouts",{},{useCache:!1})},reducerCallback:function(e,t){return nt(nt({},e),{},{surveyTimeouts:Array.isArray(t)?t:[]})}}),ut=Object(g.a)({baseName:"setSurveyTimeout",controlCallback:function(e){var t=e.slug,r=e.timeout;return f.a.set("core","user","survey-timeout",{slug:t,timeout:r})},reducerCallback:function(e,t){return nt(nt({},e),{},{surveyTimeouts:Array.isArray(t)?t:[]})},argsToParams:function(e,t){return{slug:e,timeout:t}},validateParams:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.slug,r=e.timeout;k()(t,"slug is required."),k()(Number.isInteger(r),"timeout must be an integer.")}}),st={currentSurvey:null,currentSurveySession:null,surveyTimeouts:void 0},lt={setSurveyTimeout:Object(G.f)((function(e,t){k()("string"==typeof e&&e.length,"triggerID is required and must be a string"),k()("number"==typeof t,"timeout must be a number")}),c.a.mark((function e(t,r){return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,ut.actions.fetchSetSurveyTimeout(t,r);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)}))),triggerSurvey:Object(G.f)((function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.ttl,n=void 0===r?0:r;k()("string"==typeof e&&e.length,"triggerID is required and must be a string"),k()(le()(t),"options must be an object"),k()("number"==typeof n,"options.ttl must be a number")}),c.a.mark((function e(t){var r,n,a,o,u,s,l,f,g,p,v,b,m=arguments;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=m.length>1&&void 0!==m[1]?m[1]:{},n=r.ttl,a=void 0===n?0:n,e.next=4,i.a.commonActions.getRegistry();case 4:if(o=e.sent,u=o.select,s=o.dispatch,l=o.__experimentalResolveSelect,!u(d.a).getCurrentSurvey()){e.next=10;break}return e.abrupt("return",{});case 10:return e.next=12,i.a.commonActions.await(l(d.a).getAuthentication());case 12:if(u(d.a).isAuthenticated()){e.next=14;break}return e.abrupt("return",{});case 14:return e.next=16,i.a.commonActions.await(l(d.a).getSurveyTimeouts());case 16:if(f=u(d.a).isSurveyTimedOut(t),g=u(d.a).isTimingOutSurvey(t,a),f||g){e.next=31;break}return e.next=21,at.actions.fetchTriggerSurvey(t);case 21:if(p=e.sent,v=p.response,!(b=p.error)){e.next=26;break}return e.abrupt("return",{response:v,error:b});case 26:if(!(a>0)){e.next=31;break}return e.next=29,new Promise((function(e){setTimeout(e,3e4)}));case 29:return e.next=31,s(d.a).setSurveyTimeout(t,a);case 31:return e.abrupt("return",{response:{},error:!1});case 32:case"end":return e.stop()}}),e)}))),sendSurveyEvent:Object(G.f)((function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};k()("string"==typeof e&&e.length,"eventID is required and must be a string"),k()(le()(t),"eventData must be an object")}),c.a.mark((function e(t){var r,n,a,o,u,l,f,g,p=arguments;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=p.length>1&&void 0!==p[1]?p[1]:{},n=s()({},t,r),e.next=4,i.a.commonActions.getRegistry();case 4:if(a=e.sent,o=a.select,!(u=o(d.a).getCurrentSurveySession())){e.next=14;break}return e.next=10,ot.actions.fetchSendSurveyEvent(n,u);case 10:return l=e.sent,f=l.response,g=l.error,e.abrupt("return",{response:f,error:g});case 14:case"end":return e.stop()}}),e)})))},ft={getSurveyTimeouts:c.a.mark((function e(){var t,r;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,i.a.commonActions.getRegistry();case 2:if(t=e.sent,r=t.select,void 0!==r(d.a).getSurveyTimeouts()){e.next=8;break}return e.next=8,ct.actions.fetchGetSurveyTimeouts();case 8:case"end":return e.stop()}}),e)}))},dt={getCurrentSurvey:function(e){return e.currentSurvey},getCurrentSurveySession:function(e){return e.currentSurveySession},getCurrentSurveyCompletions:it((function(e){return function(){var t=e(d.a).getCurrentSurvey();return(null==t?void 0:t.completion)||null}})),getCurrentSurveyQuestions:it((function(e){return function(){var t=e(d.a).getCurrentSurvey();return(null==t?void 0:t.question)||null}})),getSurveyTimeouts:function(e){return e.surveyTimeouts},isSurveyTimedOut:it((function(e){return function(t,r){var n=e(d.a).getSurveyTimeouts();return void 0===n?void 0:n.includes(r)}})),isTimingOutSurvey:it((function(e){return function(t,r,n){return e(d.a).isFetchingSetSurveyTimeout(r,n)}}))},gt=i.a.combineStores(at,ot,ct,ut,{initialState:st,actions:lt,resolvers:ft,selectors:dt}),pt=(gt.initialState,gt.actions,gt.resolvers,gt.selectors,gt);function vt(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function bt(e){for(var t=1;t0},a=t.select(d.a).getUserInputSettings(),o=Object.keys(a).reduce((function(e,t){var i;return xt(xt({},e),{},s()({},t,((null===(i=a[t])||void 0===i?void 0:i.values)||[]).map(r).filter(n)))}),{}),e.next=11,{type:"SET_USER_INPUT_SETTINGS_SAVING_FLAG",payload:{isSaving:!0}};case 11:return e.next=13,Vt.actions.fetchSaveUserInputSettings(o);case 13:if(u=e.sent,l=u.response,!(f=u.error)){e.next=19;break}return e.next=19,Pt(f,"saveUserInputSettings",[]);case 19:return e.next=21,{type:"DELETE_CACHED_USER_INPUT_SETTINGS",payload:{}};case 21:return e.next=23,{type:"SET_USER_INPUT_SETTINGS_SAVING_FLAG",payload:{isSaving:!1}};case 23:return e.abrupt("return",{response:l,error:f});case 24:case"end":return e.stop()}}),e)}))},Mt=(mt={},s()(mt,"DELETE_CACHED_USER_INPUT_SETTINGS",(function(){return Object(De.a)("userInputSettings")})),s()(mt,"GET_CACHED_USER_INPUT_SETTINGS",(function(){return Object(De.b)("userInputSettings")})),s()(mt,"SET_CACHED_USER_INPUT_SETTING",At((function(e){return function(t){var r=t.payload,n=r.settingID,i=r.values,a=e.select(d.a).getUserInputSettings()||{};return a[n]={values:i},Object(De.d)("userInputSettings",a)}}))),mt),Gt={getUserInputSettings:c.a.mark((function e(){var t,r;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Rt.getRegistry();case 2:if(t=e.sent,(r=t.select)(d.a).getUserInputSettings()){e.next=7;break}return e.next=7,Lt.actions.fetchGetUserInputSettings();case 7:if("completed"===r(d.a).getUserInputState()){e.next=10;break}return e.next=10,qt.setUserInputSettingsFromCache();case 10:case"end":return e.stop()}}),e)}))},Ht={isSavingUserInputSettings:function(e){return!!(null==e?void 0:e.isSavingInputSettings)},getUserInputSettings:function(e){return e.inputSettings},getUserInputSetting:Ct((function(e){return function(t,r){var n,i=null===(n=(e(d.a).getUserInputSettings()||{})[r])||void 0===n?void 0:n.values;return Array.isArray(i)?i:[]}})),getUserInputSettingScope:Ct((function(e){return function(t,r){var n;return null===(n=(e(d.a).getUserInputSettings()||{})[r])||void 0===n?void 0:n.scope}})),getUserInputSettingAuthor:Ct((function(e){return function(t,r){var n;return null===(n=(e(d.a).getUserInputSettings()||{})[r])||void 0===n?void 0:n.author}}))},Bt=i.a.combineStores(Lt,Vt,{initialState:Ft,actions:qt,controls:Mt,reducer:function(e,t){var r=t.type,n=t.payload;switch(r){case"SET_USER_INPUT_SETTING":return xt(xt({},e),{},{inputSettings:xt(xt({},e.inputSettings),{},s()({},n.settingID,xt(xt({},(e.inputSettings||{})[n.settingID]||{}),{},{values:n.values})))});case"SET_USER_INPUT_SETTINGS_SAVING_FLAG":return xt(xt({},e),{},{isSavingInputSettings:n.isSaving});default:return e}},resolvers:Gt,selectors:Ht}),Kt=(Bt.initialState,Bt.actions,Bt.controls,Bt.reducer,Bt.resolvers,Bt.selectors,Bt),$t=i.a.combineStores(i.a.commonStore,Object(a.b)(d.a),w,A,M,ie,Ze,et,tt.a,pt,It,Tt.a,Kt);$t.initialState,$t.actions,$t.controls,$t.reducer,$t.resolvers,$t.selectors;i.a.registerStore(d.a,$t)},12:function(e,t,r){"use strict";r.d(t,"a",(function(){return n})),r.d(t,"b",(function(){return i})),r.d(t,"c",(function(){return a})),r.d(t,"h",(function(){return o})),r.d(t,"i",(function(){return c})),r.d(t,"f",(function(){return u})),r.d(t,"g",(function(){return s})),r.d(t,"e",(function(){return l})),r.d(t,"d",(function(){return f}));var n="core/user",i="connected_url_mismatch",a="googlesitekit_authenticate",o="googlesitekit_setup",c="googlesitekit_view_dashboard",u="googlesitekit_manage_options",s="googlesitekit_read_shared_module_data",l="googlesitekit_manage_module_sharing_options",f="googlesitekit_delegate_module_sharing_management"},17:function(e,t,r){"use strict";r.d(t,"a",(function(){return n})),r.d(t,"b",(function(){return i}));var n="core/modules",i="insufficient_module_dependencies"},23:function(e,t,r){"use strict";r.d(t,"j",(function(){return n})),r.d(t,"h",(function(){return i})),r.d(t,"k",(function(){return a})),r.d(t,"i",(function(){return o})),r.d(t,"m",(function(){return c})),r.d(t,"p",(function(){return u})),r.d(t,"f",(function(){return s})),r.d(t,"o",(function(){return l})),r.d(t,"g",(function(){return f})),r.d(t,"n",(function(){return d})),r.d(t,"q",(function(){return g})),r.d(t,"l",(function(){return p})),r.d(t,"d",(function(){return v})),r.d(t,"a",(function(){return b})),r.d(t,"c",(function(){return m})),r.d(t,"b",(function(){return y})),r.d(t,"e",(function(){return h}));var n="mainDashboard",i="entityDashboard",a="mainDashboardViewOnly",o="entityDashboardViewOnly",c="postsList",u="userInput",s="activation",l="splash",f="adminBar",d="settings",g="wpDashboard",p="moduleSetup",v="traffic",b="content",m="speed",y="monetization",h=[n,i,a,o,u,l,d,p]},31:function(e,t,r){"use strict";r.d(t,"a",(function(){return n})),r.d(t,"b",(function(){return i}));var n="_googlesitekitDataLayer",i="data-googlesitekit-gtag"},312:function(e,t,r){"use strict";function n(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n3&&void 0!==arguments[3]?arguments[3]:{},c=a.client,s=void 0===c||c,f=a.server,p=void 0===f||f,b=a.storeName,m=void 0===b?void 0:b;u()(t,"type is required."),u()(r,"identifier is required."),u()(n,"datapoint is required.");var y=m||"".concat(t,"/").concat(r),h={serverNotifications:p?void 0:{},clientNotifications:s?void 0:{}},O=Object(g.a)({baseName:"getNotifications",controlCallback:function(){return l.a.get(t,r,n)},reducerCallback:function(e,t){return v(v({},e),{},{serverNotifications:t.reduce((function(e,t){return v(v({},e),{},o()({},t.id,t))}),{})})}}),S={addNotification:function(e){return u()(e,"notification is required."),{payload:{notification:e},type:"ADD_NOTIFICATION"}},removeNotification:function(e){return u()(e,"id is required."),{payload:{id:e},type:"REMOVE_NOTIFICATION"}}},_={},E=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:h,r=arguments.length>1?arguments[1]:void 0,n=r.type,i=r.payload;switch(n){case"ADD_NOTIFICATION":var a=i.notification;return v(v({},t),{},{clientNotifications:v(v({},t.clientNotifications||{}),{},o()({},a.id,a))});case"REMOVE_NOTIFICATION":var c=i.id;if(void 0===t.clientNotifications||void 0===t.clientNotifications[c])return void 0!==t.serverNotifications&&void 0!==t.serverNotifications[c]&&e.console.warn('Cannot remove server-side notification with ID "'.concat(c,'"; this may be changed in a future release.')),t;var u=v({},t.clientNotifications);return delete u[c],v(v({},t),{},{clientNotifications:u});default:return t}},w={getNotifications:i.a.mark((function e(){return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,O.actions.fetchGetNotifications();case 2:case"end":return e.stop()}}),e)}))};p||delete w.getNotifications;var j={getNotifications:function(e){var t=e.serverNotifications,r=e.clientNotifications;return void 0===t&&void 0===r?t:Object.values(v(v({},t||{}),r||{}))}},k=d.a.combineStores(O,{initialState:h,actions:S,controls:_,reducer:E,resolvers:w,selectors:j});return v(v({},k),{},{STORE_NAME:y})}}).call(this,r(22))},38:function(e,t,r){"use strict";r.d(t,"a",(function(){return s}));var n=r(14),i=r.n(n),a=r(7),o=r.n(a),c=r(36),u=r(43),s=function(e){o()(Object(u.a)(e),c.e);var t=e.split("-"),r=i()(t,3),n=r[0],a=r[1],s=r[2];return new Date(n,a-1,s)}},39:function(e,t,r){"use strict";r.d(t,"t",(function(){return i})),r.d(t,"i",(function(){return a})),r.d(t,"m",(function(){return o})),r.d(t,"k",(function(){return c})),r.d(t,"l",(function(){return u})),r.d(t,"j",(function(){return s})),r.d(t,"p",(function(){return l})),r.d(t,"a",(function(){return f})),r.d(t,"c",(function(){return d})),r.d(t,"d",(function(){return g})),r.d(t,"b",(function(){return p})),r.d(t,"e",(function(){return v})),r.d(t,"g",(function(){return b})),r.d(t,"f",(function(){return m})),r.d(t,"h",(function(){return y})),r.d(t,"o",(function(){return h})),r.d(t,"n",(function(){return O})),r.d(t,"r",(function(){return S})),r.d(t,"s",(function(){return _})),r.d(t,"q",(function(){return E}));var n=r(23),i="modules/idea-hub",a="IDEA_HUB_BUTTON_CREATE",o="IDEA_HUB_BUTTON_VIEW",c="IDEA_HUB_BUTTON_PIN",u="IDEA_HUB_BUTTON_UNPIN",s="IDEA_HUB_BUTTON_DELETE",l=5,f="IDEA_HUB_ACTIVITY_CREATING_DRAFT",d="IDEA_HUB_ACTIVITY_DRAFT_CREATED",g="IDEA_HUB_ACTIVITY_IS_DELETING",p="IDEA_HUB_ACTIVITY_DELETED",v="IDEA_HUB_ACTIVITY_IS_PINNING",b="IDEA_HUB_ACTIVITY_PINNED",m="IDEA_HUB_ACTIVITY_IS_UNPINNING",y="IDEA_HUB_ACTIVITY_UNPINNED",h="".concat(n.q,"_idea-hub-saved-ideas-notification"),O="".concat(n.m,"_idea-hub"),S="new-ideas",_="saved-ideas",E="draft-ideas"},4:function(e,t){e.exports=googlesitekit.data},41:function(e,t,r){"use strict";r.d(t,"a",(function(){return S}));var n=r(5),i=r.n(n),a=r(6),o=r.n(a),c=r(7),u=r.n(c),s=r(57),l=r.n(s),f=r(53),d=r(80),g=r(8);function p(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function v(e){for(var t=1;t1?r-1:0),i=1;i1&&void 0!==arguments[1]?arguments[1]:a;return t instanceof Set&&t.has(e)}}).call(this,r(22))},43:function(e,t,r){"use strict";r.d(t,"a",(function(){return i}));var n=r(37),i=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t="string"==typeof e;if(!t)return!1;var r=e.split("-");return 3===r.length&&Object(n.a)(new Date(e))}},46:function(e,t,r){"use strict";(function(e){r.d(t,"b",(function(){return m})),r.d(t,"d",(function(){return y})),r.d(t,"a",(function(){return h})),r.d(t,"c",(function(){return O}));var n=r(5),i=r.n(n),a=r(16),o=r.n(a),c=(r(24),r(8));function u(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if("string"==typeof e)return s(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return s(e,t)}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,c=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return o=e.done,e},e:function(e){c=!0,a=e},f:function(){try{o||null==r.return||r.return()}finally{if(c)throw a}}}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r2&&void 0!==b[2]?b[2]:{},o=a.ttl,u=void 0===o?c.b:o,s=a.timestamp,l=void 0===s?Math.round(Date.now()/1e3):s,d=a.isError,g=void 0!==d&&d,t.next=3,v();case 3:if(!(p=t.sent)){t.next=14;break}return t.prev=5,p.setItem("".concat(f).concat(r),JSON.stringify({timestamp:l,ttl:u,value:n,isError:g})),t.abrupt("return",!0);case 10:return t.prev=10,t.t0=t.catch(5),e.console.warn("Encountered an unexpected storage error:",t.t0),t.abrupt("return",!1);case 14:return t.abrupt("return",!1);case 15:case"end":return t.stop()}}),t,null,[[5,10]])})));return function(e,r){return t.apply(this,arguments)}}(),h=function(){var t=o()(i.a.mark((function t(r){var n;return i.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,v();case 2:if(!(n=t.sent)){t.next=13;break}return t.prev=4,n.removeItem("".concat(f).concat(r)),t.abrupt("return",!0);case 9:return t.prev=9,t.t0=t.catch(4),e.console.warn("Encountered an unexpected storage error:",t.t0),t.abrupt("return",!1);case 13:return t.abrupt("return",!1);case 14:case"end":return t.stop()}}),t,null,[[4,9]])})));return function(e){return t.apply(this,arguments)}}(),O=function(){var t=o()(i.a.mark((function t(){var r,n,a,o;return i.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,v();case 2:if(!(r=t.sent)){t.next=14;break}for(t.prev=4,n=[],a=0;a2&&void 0!==arguments[2]?arguments[2]:{},n=r.clearMatchingLegacyError,i=void 0!==n&&n;return e&&s()(t&&Array.isArray(t),"args is required (and must be an array) when baseName is specified."),{type:"CLEAR_ERROR",payload:{baseName:e,args:t,clearMatchingLegacyError:i}}},clearErrors:function(e){return{type:"CLEAR_ERRORS",payload:{baseName:e}}}};function m(e){s()(e,"storeName must be defined.");var t={errors:{},errorArgs:{},error:void 0};var r={getErrorForSelector:function(t,n){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];s()(n,"selectorName is required.");var a=r.getError(t,n,i);if(a)return p(p({},a),{},{selectorData:{storeName:e,name:n,args:i}})},getErrorForAction:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];return s()(t,"actionName is required."),r.getError(e,t,n)},getError:function(e,t,r){var n=e.error,i=e.errors;return t||r?(s()(t,"baseName is required."),i[v(t,r)]):n},getErrors:function(e){var t=new Set(Object.values(e.errors));return void 0!==e.error&&t.add(e.error),Array.from(t)},getMetaDataForError:function(e,t){var r=Object.keys(e.errors).find((function(r){return e.errors[r]===t}));return r?{baseName:r.substring(0,r.indexOf("::")),args:e.errorArgs[r]}:null},getSelectorDataForError:Object(c.e)((function(t){return function(r,n){var i=t(e).getMetaDataForError(n);if(i){var a=i.baseName,o=i.args;if(!!t(e)[a])return{storeName:e,name:a,args:o}}return null}})),hasErrors:function(e){return r.getErrors(e).length>0}};return{initialState:t,actions:b,controls:{},reducer:function(e,t){var r=t.type,n=t.payload;switch(r){case"RECEIVE_ERROR":var a=n.baseName,o=n.args,c=n.error;if(a){var u=v(a,o);return p(p({},e),{},{errors:p(p({},e.errors||{}),{},i()({},u,c)),errorArgs:p(p({},e.errorArgs||{}),{},i()({},u,o))})}return p(p({},e),{},{error:c});case"CLEAR_ERROR":var s=n.baseName,l=n.args,f=p({},e);if(s){var d=v(s,l);f.errors=p({},e.errors||{}),f.errorArgs=p({},e.errorArgs||{}),n.clearMatchingLegacyError&&f.error===f.errors[d]&&delete f.error,delete f.errors[d],delete f.errorArgs[d]}else f.error=void 0;return f;case"CLEAR_ERRORS":var g=n.baseName,b=p({},e);if(g)for(var m in b.errors=p({},e.errors||{}),b.errorArgs=p({},e.errorArgs||{}),b.errors)(m===g||m.startsWith("".concat(g,"::")))&&(delete b.errors[m],delete b.errorArgs[m]);else b.errors={},b.errorArgs={},b.error=void 0;return b;default:return e}},resolvers:{},selectors:r}}},62:function(e,t,r){"use strict";(function(e){var n=r(0),i=r.n(n),a=r(11),o=r.n(a);function ChangeArrow(t){var r=t.direction,n=t.invertColor,i=t.width,a=t.height;return e.createElement("svg",{className:o()("googlesitekit-change-arrow","googlesitekit-change-arrow--".concat(r),{"googlesitekit-change-arrow--inverted-color":n}),width:i,height:a,viewBox:"0 0 10 10",fill:"none",xmlns:"http://www.w3.org/2000/svg"},e.createElement("path",{d:"M5.625 10L5.625 2.375L9.125 5.875L10 5L5 -1.76555e-07L-2.7055e-07 5L0.875 5.875L4.375 2.375L4.375 10L5.625 10Z",fill:"currentColor"}))}ChangeArrow.propTypes={direction:i.a.string,invertColor:i.a.bool,width:i.a.number,height:i.a.number},ChangeArrow.defaultProps={direction:"up",invertColor:!1,width:9,height:9},t.a=ChangeArrow}).call(this,r(3))},63:function(e,t,r){"use strict";r.d(t,"a",(function(){return o})),r.d(t,"b",(function(){return c}));var n=r(30),i=r.n(n),a=r(78),o=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return{__html:a.a.sanitize(e,t)}};function c(e){var t,r="object"===i()(e)?e.toString():e;return null==r||null===(t=r.replace)||void 0===t?void 0:t.call(r,/\/+$/,"")}},68:function(e,t,r){"use strict";r.d(t,"d",(function(){return n.e})),r.d(t,"c",(function(){return n.d})),r.d(t,"b",(function(){return n.b})),r.d(t,"a",(function(){return n.a})),r.d(t,"e",(function(){return n.f})),r.d(t,"g",(function(){return c})),r.d(t,"h",(function(){return s})),r.d(t,"i",(function(){return l})),r.d(t,"j",(function(){return f.a})),r.d(t,"f",(function(){return g})),r.d(t,"k",(function(){return u.a}));var n=r(36),i=r(7),a=r.n(i),o=r(37),c=function(e){a()(Object(o.a)(e),n.c);var t="".concat(e.getMonth()+1),r="".concat(e.getDate());return[e.getFullYear(),t.length<2?"0".concat(t):t,r.length<2?"0".concat(r):r].join("-")},u=r(38),s=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0,r=Object(u.a)(e);return r.setDate(r.getDate()-t),c(r)},l=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=e.split("-");return 3===t.length&&"last"===t[0]&&!Number.isNaN(t[1])&&!Number.isNaN(parseFloat(t[1]))&&"days"===t[2]},f=r(43);var d=r(1);function g(){var e=function(e){return Object(d.sprintf)(
+/* translators: %s: number of days */
+Object(d._n)("Last %s day","Last %s days",e,"google-site-kit"),e)};return{"last-7-days":{slug:"last-7-days",label:e(7),days:7},"last-14-days":{slug:"last-14-days",label:e(14),days:14},"last-28-days":{slug:"last-28-days",label:e(28),days:28},"last-90-days":{slug:"last-90-days",label:e(90),days:90}}}},69:function(e,t,r){"use strict";r.d(t,"a",(function(){return I})),r.d(t,"b",(function(){return T})),r.d(t,"c",(function(){return D})),r.d(t,"d",(function(){return R})),r.d(t,"e",(function(){return A})),r.d(t,"g",(function(){return P})),r.d(t,"f",(function(){return N}));var n,i=r(5),a=r.n(i),o=r(24),c=r.n(o),u=r(6),s=r.n(u),l=r(7),f=r.n(l),d=r(201),g=r.n(d),p=r(71),v=r.n(p),b=r(66);function m(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function y(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:n,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return i.reduce((function(e,r){return r(e,t)}),e)}},E=h,w=h,j=h,k=function(e){return e},I=function(){for(var e=arguments.length,t=new Array(e),r=0;r=1?r[i]+1:1,r[i]>1&&t.push(i)}return t},R={actions:T,controls:D,reducer:k},A=function(e){return function(t){return C(e(t))}},C=v()((function(e){return g()(e,(function(e,t){return function(){var r=e.apply(void 0,arguments);return f()(void 0!==r,"".concat(t,"(...) is not resolved")),r}}))}));function P(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.negate,n=void 0!==r&&r,i=Object(b.e)((function(t){return function(r){var i=!n,a=!!n;try{for(var o=arguments.length,c=new Array(o>1?o-1:0),u=1;u1?n-1:0),a=1;a1&&void 0!==arguments[1]?arguments[1]:{},r=y(e,t),n=r.formatUnit,i=r.formatDecimal;try{return n()}catch(e){return i()}},y=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e=parseInt(e,10),Number.isNaN(e)&&(e=0);var r=Math.floor(e/60/60),n=Math.floor(e/60%60),i=Math.floor(e%60);return{hours:r,minutes:n,seconds:i,formatUnit:function(){var a=t.unitDisplay,o=b(b({unitDisplay:void 0===a?"short":a},l()(t,["unitDisplay"])),{},{style:"unit"});return 0===e?E(i,b(b({},o),{},{unit:"second"})):Object(p.sprintf)(
+/* translators: 1: formatted seconds, 2: formatted minutes, 3: formatted hours */
+Object(p._x)("%3$s %2$s %1$s","duration of time: hh mm ss","google-site-kit"),i?E(i,b(b({},o),{},{unit:"second"})):"",n?E(n,b(b({},o),{},{unit:"minute"})):"",r?E(r,b(b({},o),{},{unit:"hour"})):"").trim()},formatDecimal:function(){var t=Object(p.sprintf)(// translators: %s: number of seconds with "s" as the abbreviated unit.
+Object(p.__)("%ds","google-site-kit"),i);if(0===e)return t;var a=Object(p.sprintf)(// translators: %s: number of minutes with "m" as the abbreviated unit.
+Object(p.__)("%dm","google-site-kit"),n),o=Object(p.sprintf)(// translators: %s: number of hours with "h" as the abbreviated unit.
+Object(p.__)("%dh","google-site-kit"),r);return Object(p.sprintf)(
+/* translators: 1: formatted seconds, 2: formatted minutes, 3: formatted hours */
+Object(p._x)("%3$s %2$s %1$s","duration of time: hh mm ss","google-site-kit"),i?t:"",n?a:"",r?o:"").trim()}}},h=function(e){return 1e6<=e?Math.round(e/1e5)/10:1e4<=e?Math.round(e/1e3):1e3<=e?Math.round(e/100)/10:e},O=function(e){var t={minimumFractionDigits:1,maximumFractionDigits:1};return 1e6<=e?Object(p.sprintf)(// translators: %s: an abbreviated number in millions.
+Object(p.__)("%sM","google-site-kit"),E(h(e),e%10==0?{}:t)):1e4<=e?Object(p.sprintf)(// translators: %s: an abbreviated number in thousands.
+Object(p.__)("%sK","google-site-kit"),E(h(e))):1e3<=e?Object(p.sprintf)(// translators: %s: an abbreviated number in thousands.
+Object(p.__)("%sK","google-site-kit"),E(h(e),e%10==0?{}:t)):E(e,{signDisplay:"never",maximumFractionDigits:1})},S=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e=Object(f.isFinite)(e)?e:Number(e),Object(f.isFinite)(e)||(console.warn("Invalid number",e,o()(e)),e=0);var r={};if("%"===t)r={style:"percent",maximumFractionDigits:2};else{if("s"===t)return m(e,{unitDisplay:"narrow"});t&&"string"==typeof t?r={style:"currency",currency:t}:Object(f.isPlainObject)(t)&&(r=b({},t))}var n=r,i=n.style,a=void 0===i?"metric":i;return"metric"===a?O(e):"duration"===a?m(e,t):E(e,r)},_=g()(console.warn),E=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.locale,n=void 0===r?j():r,a=l()(t,["locale"]);try{return new Intl.NumberFormat(n,a).format(e)}catch(t){_("Site Kit numberFormat error: Intl.NumberFormat( ".concat(JSON.stringify(n),", ").concat(JSON.stringify(a)," ).format( ").concat(o()(e)," )"),t.message)}for(var c={currencyDisplay:"narrow",currencySign:"accounting",style:"unit"},u=["signDisplay","compactDisplay"],s={},f=0,d=Object.entries(a);f1&&void 0!==arguments[1]?arguments[1]:{},r=t.locale,n=void 0===r?j():r,i=t.style,a=void 0===i?"long":i,o=t.type,c=void 0===o?"conjunction":o;if(Intl.ListFormat){var u=new Intl.ListFormat(n,{style:a,type:c});return u.format(e)}
+/* translators: used between list items, there is a space after the comma. */var s=Object(p.__)(", ","google-site-kit");return e.join(s)},j=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:e,r=Object(f.get)(t,["_googlesitekitLegacyData","locale"]);if(r){var n=r.match(/^(\w{2})?(_)?(\w{2})/);if(n&&n[0])return n[0].replace(/_/g,"-")}return t.navigator.language}}).call(this,r(22))},762:function(e,t,r){"use strict";(function(e){var n,i=r(5),a=r.n(i),o=r(16),c=r.n(o),u=r(25),s=r(1),l=r(23),f=r(17),d=r(39),g={slug:"ideaHubModule",contexts:[l.j,l.k],version:"1.43.0",checkRequirements:(n=c()(a.a.mark((function e(t){var r,n;return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=t.__experimentalResolveSelect,e.next=3,r(f.a).isModuleConnected("idea-hub");case 3:if(e.sent){e.next=6;break}return e.abrupt("return",!1);case 6:return e.next=8,r(d.t).getNewIdeas();case 8:return n=e.sent,e.abrupt("return",!!n.length);case 10:case"end":return e.stop()}}),e)}))),function(e){return n.apply(this,arguments)}),steps:[{target:".googlesitekit-widget--ideaHubIdeas",title:Object(s.__)("Get inspiration for new topics to write about!","google-site-kit"),content:Object(s.__)("These ideas are based on unanswered searches related to the content of your site. They are organized by topics and will refresh every 2-3 days.","google-site-kit")},{target:".googlesitekit-idea-hub__actions--create",title:Object(s.__)("Start a draft","google-site-kit"),content:Object(s.__)("Found an interesting idea you want to write about? Create a draft! You can always get back to it later on the Posts page.","google-site-kit")},{target:".googlesitekit-idea-hub__idea--single",title:Object(s.__)("Save for later or dismiss","google-site-kit"),content:Object(s.__)('If you’re not ready to create a draft about an idea just yet, add it to your "Saved" list and revisit later. If you don’t like an idea, you can dismiss it from your list.',"google-site-kit"),placement:"top"}],gaEventCategory:function(e){return"".concat(e,"_idea-hub-widget")},callback:function(t){var r=t.type,n=t.index;if([u.b.STEP_BEFORE,u.b.STEP_AFTER].includes(r)&&2===n){var i="googlesitekit-idea-hub__actions--unhide",a=e.document.querySelector(".googlesitekit-idea-hub__actions--pin"),o=e.document.querySelector(".googlesitekit-idea-hub__actions--delete");a&&o&&(r===u.b.STEP_BEFORE&&(a.classList.add(i),o.classList.add(i)),r===u.b.STEP_AFTER&&(a.classList.remove(i),o.classList.remove(i)))}}};t.a=g}).call(this,r(22))},766:function(e,t,r){"use strict";(function(e){var n=r(25),i=r(1),a=r(23),o={slug:"unifiedDashboard",contexts:[a.j,a.k],version:"1.68.0",gaEventCategory:function(e){return"".concat(e,"_unified-dashboard")},steps:[{target:".googlesitekit-navigation",title:Object(i.__)("New! Navigate your dashboard easily","google-site-kit"),content:Object(i.__)("Jump straight to the relevant section in your dashboard with just one click - no more scrolling.","google-site-kit"),placement:"bottom"},{target:".googlesitekit-entity-search",title:Object(i.__)("Check stats for a specific post","google-site-kit"),content:Object(i.__)("Search by URL or by post title and your dashboard will be filtered to show stats just for that URL.","google-site-kit"),placement:"bottom"},{target:".googlesitekit-widget--searchFunnel",title:Object(i.__)("See trends over time for your site’s Search metrics","google-site-kit"),content:Object(i.__)("The updated Search Funnel shows you a more comprehensive view of how traffic from Search is changing.","google-site-kit"),placement:"top-end"}],callback:function(t){var r=t.type,i=t.index;n.b.TOOLTIP===r&&2===i&&setTimeout((function(){var t=e.document.querySelector(".googlesitekit-tour-tooltip"),r=e.document.querySelector("#wpadminbar");t&&r&&e.scrollTo({top:e.scrollY+t.getBoundingClientRect().top-r.offsetHeight,behavior:"smooth"})}),50)}};t.a=o}).call(this,r(22))},767:function(e,t,r){"use strict";(function(e){var n=r(24),i=r.n(n),a=r(5),o=r.n(a),c=r(6),u=r.n(c),s=r(7),l=r.n(s),f=r(34),d=r.n(f),g=r(4),p=r.n(g),v=r(12),b=r(17),m=r(768),y=r(41);function h(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function O(e){for(var t=1;t2?i-2:0),o=2;o0&&(r=m.a.apply(void 0,[r].concat(a))),n)return!!n[r]}})),canViewSharedModule:S((function(e){return function(t,r){var n=e(b.a).getModule(r);if(void 0!==n)return!(null===n||!n.shareable)&&e(v.a).hasCapability(v.g,n.slug)}}))},I=p.a.combineStores(_,{initialState:E,actions:w,controls:{},reducer:function(e,t){var r=t.type,n=t.payload;switch(r){case"CLEAR_PERMISSION_SCOPE_ERROR":return O(O({},e),{},{permissionError:null});case"SET_PERMISSION_SCOPE_ERROR":var i=n.permissionError;return O(O({},e),{},{permissionError:i});case"RECEIVE_CAPABILITIES":var a=n.capabilities;return O(O({},e),{},{capabilities:a});default:return e}},resolvers:j,selectors:k});I.initialState,I.actions,I.controls,I.reducer,I.resolvers,I.selectors;t.a=I}).call(this,r(22))},768:function(e,t,r){"use strict";function n(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n1&&void 0!==arguments[1]?arguments[1]:{},r=t.additionalScopes,n=void 0===r?[]:r,i=t.redirectURL,a=void 0===i?void 0:i,o=e.connectURL,c={redirect:a};if(void 0!==o){if(null==n?void 0:n.length){var u=n.map((function(e){return e.replace(/^http(s)?:/,"gttp$1:")}));return Object(f.a)(o,y(y({},c),{},{additional_scopes:u}))}return Object(f.a)(o,c)}},getID:h((function(e){return function(){var t=e(p.a).getUser();return void 0!==t?t.id:t}})),getName:h((function(e){return function(){var t=e(p.a).getUser();return void 0!==t?t.name:t}})),getEmail:h((function(e){return function(){var t=e(p.a).getUser();return void 0!==t?t.email:t}})),getPicture:h((function(e){return function(){var t=e(p.a).getUser();return void 0!==t?t.picture:t}})),getFullName:h((function(e){return function(){var t=e(p.a).getUser();if(void 0!==t)return t.full_name}})),getAccountChooserURL:h((function(e){return function(t,r){l()(r,"destinationURL is required");var n=e(p.a).getEmail();if(void 0!==n)return Object(v.a)(b(),r,n)}})),getInitialSiteKitVersion:function(e){return e.initialVersion},isVerified:function(e){return e.verified},getUserInputState:function(e){return e.userInputState}};t.a={initialState:O,actions:S,controls:{},reducer:function(e,t){var r=t.type,n=t.payload;switch(r){case"RECEIVE_CONNECT_URL":var i=n.connectURL;return y(y({},e),{},{connectURL:i});case"RECEIVE_USER_INFO":var a=n.user;return y(y({},e),{},{user:a});case"RECEIVE_USER_INITIAL_SITE_KIT_VERSION":var o=n.initialVersion;return y(y({},e),{},{initialVersion:o});case"RECEIVE_USER_IS_VERIFIED":var c=n.verified;return y(y({},e),{},{verified:c});case"RECEIVE_USER_INPUT_STATE":var u=n.userInputState;return y(y({},e),{},{userInputState:u});default:return e}},resolvers:_,selectors:E}}).call(this,r(22))},78:function(e,t,r){"use strict";(function(e){r.d(t,"a",(function(){return i}));var n=r(124),i=r.n(n)()(e)}).call(this,r(22))},8:function(e,t,r){"use strict";r.d(t,"z",(function(){return c.b})),r.d(t,"w",(function(){return u.a})),r.d(t,"A",(function(){return u.b})),r.d(t,"y",(function(){return g})),r.d(t,"f",(function(){return p.a})),r.d(t,"m",(function(){return p.b})),r.d(t,"u",(function(){return v.c})),r.d(t,"v",(function(){return v.d})),r.d(t,"r",(function(){return v.b})),r.d(t,"l",(function(){return v.a})),r.d(t,"s",(function(){return h})),r.d(t,"g",(function(){return O})),r.d(t,"b",(function(){return S.b})),r.d(t,"a",(function(){return S.a})),r.d(t,"c",(function(){return S.e})),r.d(t,"i",(function(){return S.f})),r.d(t,"x",(function(){return S.k})),r.d(t,"j",(function(){return _.b})),r.d(t,"q",(function(){return _.c})),r.d(t,"e",(function(){return _.a})),r.d(t,"o",(function(){return E.b})),r.d(t,"k",(function(){return E.a})),r.d(t,"t",(function(){return E.d})),r.d(t,"p",(function(){return w})),r.d(t,"n",(function(){return j})),r.d(t,"d",(function(){return k})),r.d(t,"B",(function(){return I})),r.d(t,"h",(function(){return T}));var n=r(123),i=r.n(n),a=r(118),o=r.n(a),c=r(32),u=r(63),s=r(30),l=r.n(s),f=r(81),d=r.n(f),g=function(e){return d()(JSON.stringify(function e(t){var r={};return Object.keys(t).sort().forEach((function(n){var i=t[n];i&&"object"===l()(i)&&!Array.isArray(i)&&(i=e(i)),r[n]=i})),r}(e)))};var p=r(83),v=(r(84),r(73));function b(e){return e.replace(/\[([^\]]+)\]\((https?:\/\/[^\/]+\.\w+\/?.*?)\)/gi,'$1')}function m(e){return"
".concat(e.replace(/\n{2,}/g,"
"),"
")}function y(e){return e.replace(/\n/gi," ")}function h(e){for(var t=e,r=0,n=[b,m,y];r=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,c=!0,u=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return c=e.done,e},e:function(e){u=!0,a=e},f:function(){try{c||null==r.return||r.return()}finally{if(u)throw a}}}}function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r1&&void 0!==arguments[1]?arguments[1]:location,r=new URL(t.href);if(e)return r.searchParams&&r.searchParams.get?r.searchParams.get(e):u(e);var n,o={},c=a(r.searchParams.entries());try{for(c.s();!(n=c.n()).done;){var s=i()(n.value,2),l=s[0],f=s[1];o[l]=f}}catch(e){c.e(e)}finally{c.f()}return o}}).call(this,r(22))},84:function(e,t,r){"use strict";(function(e){r(44),r(45)}).call(this,r(22))},85:function(e,t,r){"use strict";(function(e){r.d(t,"b",(function(){return a})),r.d(t,"c",(function(){return o})),r.d(t,"a",(function(){return c}));var n=r(169),i=r(62),a=function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(Number.isNaN(Number(t)))return"";var a=r.invertColor,o=void 0!==a&&a;return Object(n.a)(e.createElement(i.a,{direction:t>0?"up":"down",invertColor:o}))},o=function(e){var t,r,n,i,a,o,c,u,s,l,f,d,g,p,v;if(void 0!==e)return 1===(null==e||null===(t=e[0])||void 0===t||null===(r=t.data)||void 0===r||null===(n=r.rows)||void 0===n?void 0:n.length)||(null==e||null===(i=e[0])||void 0===i||null===(a=i.data)||void 0===a||null===(o=a.rows)||void 0===o||null===(c=o[0])||void 0===c||null===(u=c.metrics)||void 0===u||null===(s=u[0])||void 0===s||null===(l=s.values)||void 0===l?void 0:l[0])===(null==e||null===(f=e[0])||void 0===f||null===(d=f.data)||void 0===d||null===(g=d.totals)||void 0===g||null===(p=g[0])||void 0===p||null===(v=p.values)||void 0===v?void 0:v[0])},c=function(e,t){return e>0&&t>0?e/t-1:e>0?1:t>0?-1:0}}).call(this,r(3))},86:function(e,t,r){"use strict";(function(e){r.d(t,"a",(function(){return l}));var n=r(6),i=r.n(n),a=r(87),o=r(88);function c(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function u(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:e,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e,i=u(u({},s),t);i.referenceSiteURL&&(i.referenceSiteURL=i.referenceSiteURL.toString().replace(/\/+$/,""));var c=Object(a.a)(i,r);return{enableTracking:function(){i.trackingEnabled=!0},disableTracking:function(){i.trackingEnabled=!1},initializeSnippet:c,isTrackingEnabled:function(){return!!i.trackingEnabled},trackEvent:Object(o.a)(i,r,c,n)}}}).call(this,r(22))},87:function(e,t,r){"use strict";(function(e){r.d(t,"a",(function(){return a}));var n=r(52),i=r(31);function a(t,r){var a,o=Object(n.a)(r);return function(){var r=e.document;if(void 0===a&&(a=!!r.querySelector("script[".concat(i.b,"]"))),!a){var n=r.createElement("script");n.setAttribute(i.b,""),n.async=!0,n.src="https://www.googletagmanager.com/gtag/js?id=".concat(t.trackingID,"&l=").concat(i.a),r.head.appendChild(n),o("js",new Date),o("config",t.trackingID,{send_page_view:t.isSiteKitScreen}),a=!0}}}}).call(this,r(22))},88:function(e,t,r){"use strict";r.d(t,"a",(function(){return g}));var n=r(5),i=r.n(n),a=r(6),o=r.n(a),c=r(16),u=r.n(c),s=r(52),l=r(42);function f(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function d(e){for(var t=1;t0&&void 0!==c[0]?c[0]:{},n=t.clearAfterRestore,r=void 0===n||n,e.next=4,{payload:{},type:"RESTORE_SNAPSHOT"};case 4:if(a=e.sent,i=a.cacheHit,o=a.value,!i){e.next=13;break}return e.next=10,{payload:{snapshot:o},type:"SET_STATE_FROM_SNAPSHOT"};case 10:if(!r){e.next=13;break}return e.next=13,{payload:{},type:"DELETE_SNAPSHOT"};case 13:return e.abrupt("return",i);case 14:case"end":return e.stop()}}),e)})),createSnapshot:s.a.mark((function e(){var t;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,{payload:{},type:"CREATE_SNAPSHOT"};case 2:return t=e.sent,e.abrupt("return",t);case 4:case"end":return e.stop()}}),e)}))},i=(t={},o()(t,"DELETE_SNAPSHOT",(function(){return Object(f.a)("datastore::cache::".concat(e))})),o()(t,"CREATE_SNAPSHOT",p((function(t){return function(){return Object(f.d)("datastore::cache::".concat(e),t.stores[e].store.getState())}}))),o()(t,"RESTORE_SNAPSHOT",(function(){return Object(f.b)("datastore::cache::".concat(e),m.b)})),t);return{initialState:n,actions:r,controls:i,reducer:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:n,t=arguments.length>1?arguments[1]:void 0,r=t.type,i=t.payload;switch(r){case"SET_STATE_FROM_SNAPSHOT":var o=i.snapshot,c=(o.error,a()(o,["error"]));return c;default:return e}}}},h=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:g.a;return Object.values(e.stores).filter((function(e){return Object.keys(e.getActions()).includes("restoreSnapshot")}))},v=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:g.a;return Promise.all(h(e).map((function(e){return e.getActions().createSnapshot()})))},y=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:g.a;return Promise.all(h(e).map((function(e){return e.getActions().restoreSnapshot()})))}},102:function(e,t,n){"use strict";n.d(t,"a",(function(){return r}));var r=200},105:function(e,t,n){"use strict";(function(e){var r=n(0),a=n.n(r),i=n(11),o=n.n(i),c=n(72),s=n(1),l=n(20),u=n(56);function SourceLink(t){var n=t.name,r=t.href,a=t.className,i=t.external;return Object(u.a)()?null:e.createElement("div",{className:o()("googlesitekit-source-link",a)},Object(c.a)(Object(s.sprintf)(
+/* translators: %s: source link */
+Object(s.__)("Source: %s","google-site-kit"),"".concat(n,"")),{a:e.createElement(l.a,{key:"link",href:r,external:i})}))}SourceLink.propTypes={name:a.a.string,href:a.a.string,className:a.a.string,external:a.a.bool},SourceLink.defaultProps={name:"",href:"",className:"",external:!1},t.a=SourceLink}).call(this,n(3))},106:function(e,t,n){"use strict";var r=n(2);function a(){return(a=Object.assign||function(e){for(var t=1;t=S&&S>0),o()(n,"mdc-layout-grid__cell--span-".concat(k,"-desktop"),12>=k&&k>0),o()(n,"mdc-layout-grid__cell--start-".concat(E,"-desktop"),12>=E&&E>0),o()(n,"mdc-layout-grid__cell--order-".concat(j,"-desktop"),12>=j&&j>0),o()(n,"mdc-layout-grid__cell--span-".concat(y,"-tablet"),8>=y&&y>0),o()(n,"mdc-layout-grid__cell--start-".concat(O,"-tablet"),8>=O&&O>0),o()(n,"mdc-layout-grid__cell--order-".concat(_,"-tablet"),8>=_&&_>0),o()(n,"mdc-layout-grid__cell--span-".concat(b,"-phone"),4>=b&&b>0),o()(n,"mdc-layout-grid__cell--start-".concat(h,"-phone"),4>=h&&h>0),o()(n,"mdc-layout-grid__cell--order-".concat(v,"-phone"),4>=v&&v>0),n))}),w)}Cell.propTypes={smSize:u.a.number,smStart:u.a.number,smOrder:u.a.number,mdSize:u.a.number,mdStart:u.a.number,mdOrder:u.a.number,lgSize:u.a.number,lgStart:u.a.number,lgOrder:u.a.number,size:u.a.number,alignTop:u.a.bool,alignMiddle:u.a.bool,alignBottom:u.a.bool,alignRight:u.a.bool,alignLeft:u.a.bool,smAlignRight:u.a.bool,mdAlignRight:u.a.bool,lgAlignRight:u.a.bool,className:u.a.string,children:u.a.node},Cell.defaultProps={className:"",size:0,smSize:0,smStart:0,smOrder:0,mdSize:0,mdStart:0,mdOrder:0,lgSize:0,lgStart:0,lgOrder:0}}).call(this,n(3))},108:function(e,t,n){"use strict";(function(e){var r=n(18),a=n.n(r),i=n(21),o=n.n(i),c=n(0),s=n.n(c),l=n(11),u=n.n(l),d=n(2),g=Object(d.forwardRef)((function(t,n){var r=t.className,i=t.children,c=o()(t,["className","children"]);return e.createElement("div",a()({ref:n,className:u()("mdc-layout-grid__inner",r)},c),i)}));g.displayName="Row",g.propTypes={className:s.a.string,children:s.a.node},g.defaultProps={className:""},t.a=g}).call(this,n(3))},109:function(e,t,n){"use strict";(function(e){var r=n(18),a=n.n(r),i=n(21),o=n.n(i),c=n(0),s=n.n(c),l=n(11),u=n.n(l),d=n(2),g=Object(d.forwardRef)((function(t,n){var r=t.alignLeft,i=t.fill,c=t.className,s=t.children,l=t.collapsed,d=o()(t,["alignLeft","fill","className","children","collapsed"]);return e.createElement("div",a()({className:u()("mdc-layout-grid",c,{"mdc-layout-grid--align-left":r,"mdc-layout-grid--collapsed":l,"mdc-layout-grid--fill":i})},d,{ref:n}),s)}));g.displayName="Grid",g.propTypes={alignLeft:s.a.bool,fill:s.a.bool,className:s.a.string,collapsed:s.a.bool,children:s.a.node},g.defaultProps={className:""},t.a=g}).call(this,n(3))},111:function(e,t,n){"use strict";n.d(t,"a",(function(){return r})),n.d(t,"b",(function(){return a})),n.d(t,"d",(function(){return i})),n.d(t,"c",(function(){return o}));var r="editing-user-role-select-slug-key",a=["idea-hub","thank-with-google"],i="dashboardSharingDialogOpen",o="resetSharingDialogOpen"},1117:function(e,t,n){"use strict";n.r(t),function(e){var t=n(212),r=n(122),a=n(895),i=n(172),o=n(23);Object(t.a)((function(){var t=document.getElementById("js-googlesitekit-entity-dashboard");if(t){var n=t.dataset.viewOnly;Object(r.render)(e.createElement(i.a,{viewContext:n?o.i:o.h},e.createElement(a.a,null)),t)}}))}.call(this,n(3))},113:function(e,t,n){"use strict";(function(e){var r=n(44),a=n.n(r),i=n(45),o=n.n(i),c=n(96),s=n.n(c),l=n(75),u=n.n(l),d=n(76),g=n.n(d),f=n(48),m=n.n(f),p=n(0),b=n.n(p),h=n(11),v=n.n(h),y=n(2),O=n(1),_=n(62),k=n(105),E=n(65),j=n(8);function S(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=m()(e);if(t){var a=m()(this).constructor;n=Reflect.construct(r,arguments,a)}else n=r.apply(this,arguments);return g()(this,n)}}var w=function(t){u()(DataBlock,t);var n=S(DataBlock);function DataBlock(e){var t;return a()(this,DataBlock),(t=n.call(this,e)).handleClick=t.handleClick.bind(s()(t)),t.handleKeyPress=t.handleKeyPress.bind(s()(t)),t}return o()(DataBlock,[{key:"handleClick",value:function(){var e=this.props,t=e.stat;(0,e.handleStatSelection)(t)}},{key:"handleKeyPress",value:function(e){e.preventDefault();var t=this.props,n=t.stat,r=t.handleStatSelection;"Enter"!==e.key&&" "!==e.key||r(n)}},{key:"render",value:function(){var t=this.props,n=t.className,r=t.title,a=t.datapoint,i=t.datapointUnit,o=t.change,c=t.changeDataUnit,s=t.context,l=t.period,u=t.selected,d=t.handleStatSelection,g=t.source,f=t.sparkline,m=t.invertChangeColor,p=t.gatheringData,b=t.gatheringDataNoticeStyle,h="button"===s?"button":"",S=f;S&&m&&(S=Object(y.cloneElement)(f,{invertChangeColor:m}));var w=o;c&&(w="%"===c?Object(j.u)(o,{style:"percent",signDisplay:"never",maximumFractionDigits:1}):Object(j.u)(o,c)),l&&(w=Object(O.sprintf)(l,w));var N=void 0===a?a:Object(j.u)(a,i||void 0);return e.createElement("div",{className:v()("googlesitekit-data-block",n,"googlesitekit-data-block--".concat(s),{"googlesitekit-data-block--selected":u,"googlesitekit-data-block--is-gathering-data":p}),tabIndex:"button"!==s||p?"-1":"0",role:d&&h,onClick:p?void 0:d&&this.handleClick,onKeyPress:p?void 0:d&&this.handleKeyPress,"aria-disabled":p||void 0,"aria-label":d&&r,"aria-pressed":d&&u},e.createElement("div",{className:"googlesitekit-data-block__title-datapoint-wrapper"},e.createElement("h3",{className:" googlesitekit-subheading-1 googlesitekit-data-block__title "},r),!p&&e.createElement("div",{className:"googlesitekit-data-block__datapoint"},N)),!p&&e.createElement(y.Fragment,null,S&&e.createElement("div",{className:"googlesitekit-data-block__sparkline"},S),e.createElement("div",{className:"googlesitekit-data-block__change-source-wrapper"},e.createElement("div",{className:v()("googlesitekit-data-block__change",{"googlesitekit-data-block__change--no-change":!o})},e.createElement(y.Fragment,null,!!o&&e.createElement("span",{className:"googlesitekit-data-block__arrow"},e.createElement(_.a,{direction:01?Object(g.a)(u):[],h=function(e){return s()("googlesitekit-tooltip-indicator",{active:e===c})};return e.createElement("div",a()({className:s()("googlesitekit-tour-tooltip",m.className)},p),e.createElement(o.a,{className:"googlesitekit-tooltip-card"},e.createElement("div",{className:"googlesitekit-tooltip-body"},e.createElement("h2",{className:"googlesitekit-tooltip-title"},m.title),e.createElement("div",{className:"googlesitekit-tooltip-content"},m.content)),e.createElement(i.CardActions,{className:"googlesitekit-tooltip-actions"},e.createElement("ul",{className:"googlesitekit-tooltip-indicators"},b.map((function(t){return e.createElement("li",{key:"indicator-".concat(t),className:h(t)})}))),e.createElement("div",{className:"googlesitekit-tooltip-buttons"},0!==c&&e.createElement(d.Button,a()({className:"googlesitekit-tooltip-button",text:!0},n),n.title),m.cta,l.title&&e.createElement(d.Button,a()({className:"googlesitekit-tooltip-button",text:!0},l),l.title))),e.createElement(d.Button,a()({className:"googlesitekit-tooltip-close",text:!0,icon:e.createElement(f.a,{width:"14",height:"14"})},r))))}TourTooltip.propTypes={backProps:u.a.object.isRequired,closeProps:u.a.object.isRequired,index:u.a.number.isRequired,isLastStep:u.a.bool.isRequired,primaryProps:u.a.object.isRequired,size:u.a.number.isRequired,step:u.a.shape({content:u.a.node,title:u.a.node.isRequired,cta:u.a.oneOfType([u.a.element,u.a.bool]),className:u.a.string}).isRequired,tooltipProps:u.a.object.isRequired}}).call(this,n(3))},138:function(e,t,n){"use strict";var r=n(2);function a(){return(a=Object.assign||function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t||{},a=n.slug,i=void 0===a?"":a,o=n.name,c=void 0===o?"":o,s=n.owner,l=void 0===s?{}:s;if(!i||!c)return e;var u="",d="";return"analytics"===i?e.match(/account/i)?u=Object(r.__)("Your Google account does not have sufficient permissions for this Analytics account, so you won’t be able to see stats from it on the Site Kit dashboard.","google-site-kit"):e.match(/property/i)?u=Object(r.__)("Your Google account does not have sufficient permissions for this Analytics property, so you won’t be able to see stats from it on the Site Kit dashboard.","google-site-kit"):e.match(/view/i)&&(u=Object(r.__)("Your Google account does not have sufficient permissions for this Analytics view, so you won’t be able to see stats from it on the Site Kit dashboard.","google-site-kit")):"search-console"===i&&(u=Object(r.__)("Your Google account does not have sufficient permissions for this Search Console property, so you won’t be able to see stats from it on the Site Kit dashboard.","google-site-kit")),u||(u=Object(r.sprintf)(
+/* translators: %s: module name */
+Object(r.__)("Your Google account does not have sufficient permissions to access %s data, so you won’t be able to see stats from it on the Site Kit dashboard.","google-site-kit"),c)),l&&l.login&&(d=Object(r.sprintf)(
+/* translators: %s: owner name */
+Object(r.__)('This service was originally connected by the administrator "%s" — you can contact them for more information.',"google-site-kit"),l.login)),d||(d=Object(r.__)("This service was originally connected by an administrator — you can contact them for more information.","google-site-kit")),"".concat(u," ").concat(d)}},145:function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var r=n(7),a=n.n(r),i=function(e,t){var n=t.dateRangeLength;a()(Array.isArray(e),"report must be an array to partition."),a()(Number.isInteger(n)&&n>0,"dateRangeLength must be a positive integer.");var r=-1*n;return{currentRange:e.slice(r),compareRange:e.slice(2*r,r)}}},146:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return RecoverableModules}));var r=n(0),a=n.n(r),i=n(1),o=n(4),c=n.n(o),s=n(17),l=n(119),u=c.a.useSelect;function RecoverableModules(t){var n=t.moduleSlugs,r=u((function(e){var t=e(s.a).getModules();if(void 0!==t)return n.map((function(e){return t[e].name}))}));if(void 0===r)return null;var a=1===r.length?Object(i.sprintf)(
+/* translators: %s: Module name */
+Object(i.__)("%s data was previously shared by an admin who no longer has access. Please contact another admin to restore it.","google-site-kit"),r[0]):Object(i.sprintf)(
+/* translators: %s: List of module names */
+Object(i.__)("The data for the following modules was previously shared by an admin who no longer has access: %s. Please contact another admin to restore it.","google-site-kit"),r.join(Object(i._x)(", ","Recoverable modules","google-site-kit")));return e.createElement(l.a,{title:Object(i.__)("Data Unavailable","google-site-kit"),description:a})}RecoverableModules.propTypes={moduleSlugs:a.a.arrayOf(a.a.string).isRequired}}).call(this,n(3))},147:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return FeatureTours}));var r=n(97),a=n(4),i=n.n(a),o=n(12),c=n(19),s=n(127),l=i.a.useSelect,u=i.a.useDispatch;function FeatureTours(){var t=Object(c.a)(),n=u(o.a).triggerTourForView;Object(r.a)((function(){n(t)}));var a=l((function(e){return e(o.a).getCurrentTour()}));return a?e.createElement(s.a,{tourID:a.slug,steps:a.steps,gaEventCategory:a.gaEventCategory,callback:a.callback}):null}}).call(this,n(3))},148:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return ModuleIcon}));var r=n(18),a=n.n(r),i=n(21),o=n.n(i),c=n(0),s=n.n(c),l=n(4),u=n.n(l),d=n(17),g=u.a.useSelect;function ModuleIcon(t){var n=t.slug,r=t.size,i=o()(t,["slug","size"]),c=g((function(e){return e(d.a).getModuleIcon(n)}));return c?e.createElement(c,a()({width:r,height:r},i)):null}ModuleIcon.propTypes={slug:s.a.string.isRequired,size:s.a.number},ModuleIcon.defaultProps={size:33}}).call(this,n(3))},149:function(e,t,n){"use strict";n.d(t,"a",(function(){return s}));var r=n(2),a=n(4),i=n.n(a),o=n(50),c=i.a.useDispatch;function s(e,t,n){var a=c(o.a),i=a.setWidgetState,s=a.unsetWidgetState;Object(r.useEffect)((function(){return i(e,t,n),function(){s(e,t,n)}}),[e,t,n,i,s])}},15:function(e,t,n){"use strict";n.d(t,"c",(function(){return r})),n.d(t,"a",(function(){return a})),n.d(t,"b",(function(){return i}));var r="core/site",a="primary",i="secondary"},151:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return ReportZero}));var r=n(0),a=n.n(r),i=n(1),o=n(4),c=n.n(o),s=n(17),l=n(119),u=c.a.useSelect;function ReportZero(t){var n=t.moduleSlug,r=u((function(e){return e(s.a).getModule(n)}));return e.createElement(l.a,{title:Object(i.sprintf)(
+/* translators: %s: Module name */
+Object(i.__)("%s Gathering Data","google-site-kit"),null==r?void 0:r.name),description:Object(i.sprintf)(
+/* translators: %s: Module name */
+Object(i.__)("%s data is not yet available, please check back later","google-site-kit"),null==r?void 0:r.name)})}ReportZero.propTypes={moduleSlug:a.a.string.isRequired}}).call(this,n(3))},153:function(e,t,n){"use strict";n.d(t,"a",(function(){return r}));var r=function(e){return new Array(null!=e?e:0).fill().map((function(e,t){return t}))}},154:function(e,t,n){"use strict";var r=n(2);function a(){return(a=Object.assign||function(e){for(var t=1;t=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,c=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return o=e.done,e},e:function(e){c=!0,i=e},f:function(){try{o||null==n.return||n.return()}finally{if(c)throw i}}}}function w(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n0){var r,a=S(n);try{for(a.s();!(r=a.n()).done;){var i=r.value,o=Y[i.question_ordinal],c=i.answer_ordinal||[];if(o&&!c.includes(o))return X++,!1}}catch(e){a.e(e)}finally{a.f()}}return t===X})),Q=Object(f.useCallback)((function(e){M||(I(!0),G("question_answered",{question_ordinal:null==$?void 0:$.question_ordinal,answer:e}),setTimeout((function(){V(H,{answers:[].concat(o()(U),[{question_ordinal:null==$?void 0:$.question_ordinal,answer:e}])}),I(!1)}),300))}),[U,$,H,G,V,M]);(null==B?void 0:B.length)&&X>B.length&&((K=(z||[]).find((function(e){var t,n=S(e.trigger_condition||[]);try{for(n.s();!(t=n.n()).done;){var r=t.value;if(r.answer_ordinal.includes(Y[r.question_ordinal]))return K=e,!0}}catch(e){n.e(e)}finally{n.f()}return!1})))||(K=z[0]));var Z=Object(f.useCallback)((function(){var e;G("follow_up_link_clicked",{completion_ordinal:null===(e=K)||void 0===e?void 0:e.completion_ordinal}),G("survey_closed"),V(H,{hideSurvey:!0})}),[H,G,V,K]),J=Object(f.useCallback)((function(){G("survey_closed"),x(!1)}),[G]),ee=Object(f.useCallback)((function(){V(H,{hideSurvey:!0})}),[H,V]);if(Object(f.useEffect)((function(){var e;K&&!p&&(b(!0),G("completion_shown",{completion_ordinal:null===(e=K)||void 0===e?void 0:e.completion_ordinal}))}),[p,G,K]),Object(d.a)((function(){x(!0)})),W||!B||!z||void 0===q)return null;if(K)return e.createElement(g.a,{direction:"up",in:R,onExited:ee},e.createElement("div",{className:"googlesitekit-survey"},e.createElement(y.a,{dismissSurvey:J,ctaOnClick:Z,ctaText:K.follow_up_text,ctaURL:K.follow_up_url,title:K.completion_title},K.completion_text)));if(!A.includes(null==$?void 0:$.question_type))return null;var te={key:$.question_text,answerQuestion:Q,dismissSurvey:J,question:$.question_text,submitButtonText:(null==B?void 0:B.length)===X?Object(m.__)("Submit","google-site-kit"):Object(m.__)("Next","google-site-kit")};return e.createElement(g.a,{direction:"up",in:R,onExited:ee},e.createElement("div",{className:"googlesitekit-survey"},"multi_select"===$.question_type&&e.createElement(k.a,a()({},te,{choices:$.question.answer_choice,minChoices:$.question.min_choices,maxChoices:$.question.max_choices})),"open_text"===$.question_type&&e.createElement(_.a,a()({},te,{subtitle:$.question.subtitle,placeholder:$.question.placeholder})),"rating"===$.question_type&&e.createElement(O.a,a()({},te,{choices:$.question.answer_choice})),"single_select"===$.question_type&&e.createElement(E.a,a()({},te,{choices:$.question.answer_choice})),!1===q&&1===(null==$?void 0:$.question_ordinal)&&e.createElement("div",{className:"googlesitekit-survey__footer"},e.createElement(j.a,null))))}}).call(this,n(3))},181:function(e,t,n){"use strict";(function(e){var r=n(0),a=n.n(r),i=n(13),o=n(64),c=function SurveyCompletion(t){var n=t.title,r=t.children,a=t.ctaText,c=t.ctaURL,s=t.ctaOnClick,l=t.dismissSurvey;return e.createElement("div",{className:"googlesitekit-survey__completion"},e.createElement(o.a,{title:n,dismissSurvey:l}),e.createElement("div",{className:"googlesitekit-survey__body"},r),c&&a&&e.createElement("div",{className:"googlesitekit-survey__footer"},e.createElement(i.Button,{href:c,onClick:s,target:"_blank"},a)))};c.propTypes={title:a.a.string.isRequired,children:a.a.node,ctaText:a.a.string,ctaURL:a.a.string,ctaOnClick:a.a.func,dismissSurvey:a.a.func.isRequired},c.defaultProps={title:"",children:null,ctaText:"",ctaURL:"",ctaOnClick:null},t.a=c}).call(this,n(3))},182:function(e,t,n){"use strict";(function(e){var r=n(0),a=n.n(r),i=n(64),o=n(183),c=function SurveyQuestionRating(t){var n=t.question,r=t.choices,a=t.answerQuestion,c=t.dismissSurvey;return e.createElement("div",{className:"googlesitekit-survey__question-rating"},e.createElement(i.a,{title:n,dismissSurvey:c}),e.createElement("div",{className:"googlesitekit-survey__body"},e.createElement("div",{className:"googlesitekit-survey__choices"},r.map((function(t,n){return e.createElement(o.a,{key:n,choice:t,answerQuestion:a})})))))};c.propTypes={question:a.a.string.isRequired,choices:a.a.arrayOf(a.a.shape({answer_ordinal:a.a.oneOfType([a.a.string,a.a.number]),text:a.a.string})).isRequired,answerQuestion:a.a.func.isRequired,dismissSurvey:a.a.func.isRequired},t.a=c}).call(this,n(3))},183:function(e,t,n){"use strict";(function(e){var r=n(0),a=n.n(r),i=n(2),o=n(13),c=n(184),s=n(185),l=n(186),u=n(187),d=n(188),g={1:c.a,2:s.a,3:l.a,4:u.a,5:d.a},f=function SurveyQuestionRatingChoice(t){var n=t.choice,r=t.answerQuestion,a=Object(i.useCallback)((function(){"function"==typeof r&&r({answer:{answer_ordinal:n.answer_ordinal}})}),[r,n]),c=g[n.answer_ordinal];return c?e.createElement("div",{className:"googlesitekit-survey__choice"},e.createElement(o.Button,{icon:e.createElement(c,{width:30,height:30}),"aria-label":n.text,onClick:a}),e.createElement("p",null,n.text)):null};f.propTypes={choice:a.a.shape({answer_ordinal:a.a.oneOfType([a.a.string,a.a.number]),text:a.a.string}).isRequired},t.a=f}).call(this,n(3))},184:function(e,t,n){"use strict";var r=n(2);function a(){return(a=Object.assign||function(e){for(var t=1;t0,A=Object.values(C).filter((function(e){return e.selected})).length,R=d&&A===d,x=D||A1&&e.createElement(v.g,{persistent:!0},Object(p.sprintf)(
+/* translators: %s: the number of answers. */
+Object(p.__)("Choose at least %s answers","google-site-kit"),u)),e.createElement(b.Button,{onClick:function(){var e=Object.values(C).filter((function(e){return e.selected})).map((function(e){var t=e.answer_ordinal,n=e.answer_text;return n?{answer_ordinal:t,answer_text:n}:{answer_ordinal:t}}));i({answer:e})},disabled:x},_)))};E.propTypes={question:u.a.string.isRequired,choices:u.a.arrayOf(u.a.shape({answer_ordinal:u.a.oneOfType([u.a.string,u.a.number]),text:u.a.string,write_in:u.a.bool})).isRequired,answerQuestion:u.a.func.isRequired,dismissSurvey:u.a.func.isRequired,minChoices:u.a.number,maxChoices:u.a.number,submitButtonText:u.a.string.isRequired},t.a=E}).call(this,n(3))},191:function(e,t,n){"use strict";(function(e){var r=n(6),a=n.n(r),i=n(14),o=n.n(i),c=n(0),s=n.n(c),l=n(2),u=n(13),d=n(64),g=n(192);function f(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function m(e){for(var t=1;t0,E=""===p||k&&""===y;return e.createElement("div",{className:"googlesitekit-single-select"},e.createElement(d.a,{title:n,dismissSurvey:i}),e.createElement("div",{className:"googlesitekit-survey__body"},_.map((function(t,n){return e.createElement(g.a,{key:n,value:p,setValue:b,writeIn:y,setWriteIn:O,choice:t})}))),e.createElement("div",{className:"googlesitekit-survey__footer"},e.createElement(u.Button,{onClick:function(){var e=k?{answer_text:y}:{};a({answer:m({answer_ordinal:Number(p)},e)})},disabled:E},c)))};p.propTypes={question:s.a.string.isRequired,choices:s.a.arrayOf(s.a.shape({answer_ordinal:s.a.oneOfType([s.a.string,s.a.number]),text:s.a.string,write_in:s.a.bool})).isRequired,answerQuestion:s.a.func.isRequired,dismissSurvey:s.a.func.isRequired},t.a=p}).call(this,n(3))},192:function(e,t,n){"use strict";(function(e){var r=n(0),a=n.n(r),i=n(2),o=n(1),c=n(13),s=n(10),l=n(60),u=n(102),d=function SurveyQuestionSingleSelectChoice(t){var n=t.value,r=t.setValue,a=t.writeIn,d=t.setWriteIn,g=t.choice,f=g.answer_ordinal,m=g.text,p=g.write_in,b=n===f,h="googlesitekit-survey__multi-select-".concat(f,"-").concat(m);return e.createElement("div",{className:"googlesitekit-single-select__choice"},e.createElement(c.Radio,{id:m.replace(/ /g,"-"),value:f,checked:b,name:m,onClick:function(){return r(f)}},m),p&&e.createElement(i.Fragment,null,e.createElement(l.a,null,e.createElement("label",{htmlFor:h},Object(o.sprintf)(
+/* translators: %s: Option name */
+Object(o.__)("Text input for option %s","google-site-kit"),m))),e.createElement(s.r,null,e.createElement(s.h,{id:h,onChange:function(e){return d(e.target.value.slice(0,u.a))},value:a,disabled:!b}))))};d.propTypes={choice:a.a.shape({answer_ordinal:a.a.oneOfType([a.a.string,a.a.number]),text:a.a.string,write_in:a.a.bool}),value:a.a.string.isRequired,setValue:a.a.func.isRequired,writeIn:a.a.string.isRequired,setWriteIn:a.a.func.isRequired},t.a=d}).call(this,n(3))},193:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return SurveyTerms}));var r=n(1),a=n(72),i=n(4),o=n.n(i),c=n(15),s=n(20),l=o.a.useSelect;function SurveyTerms(){var t=l((function(e){return e(c.c).getGooglePrivacyPolicyURL()})),n=l((function(e){return e(c.c).getGoogleTermsURL()}));return e.createElement("p",{className:"googlesitekit-survey__terms"},Object(a.a)(Object(r.__)("By continuing, you agree to allow Google to use your answers and account info to improve services, per our Privacy & Terms.","google-site-kit"),{privacy:e.createElement(s.a,{href:t,external:!0}),terms:e.createElement(s.a,{href:n,external:!0})}))}}).call(this,n(3))},194:function(e,t,n){"use strict";n.d(t,"a",(function(){return a}));var r=n(23),a=function(e){return r.e.includes(e)}},199:function(e,t,n){"use strict";(function(e){var r=n(44),a=n.n(r),i=n(45),o=n.n(i),c=n(75),s=n.n(c),l=n(76),u=n.n(l),d=n(48),g=n.n(d),f=n(0),m=n.n(f),p=n(11),b=n.n(p),h=n(2),v=n(322),y=n(323);function O(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=g()(e);if(t){var a=g()(this).constructor;n=Reflect.construct(r,arguments,a)}else n=r.apply(this,arguments);return u()(this,n)}}var _=function(t){s()(Layout,t);var n=O(Layout);function Layout(){return a()(this,Layout),n.apply(this,arguments)}return o()(Layout,[{key:"render",value:function(){var t=this.props,n=t.header,r=t.footer,a=t.children,i=t.title,o=t.headerCTALabel,c=t.headerCTALink,s=t.footerCTALabel,l=t.footerCTALink,u=t.footerContent,d=t.className,g=t.fill,f=t.relative,m=t.rounded,p=void 0!==m&&m,h=t.transparent,O=void 0!==h&&h;return e.createElement("div",{className:b()("googlesitekit-layout",d,{"googlesitekit-layout--fill":g,"googlesitekit-layout--relative":f,"googlesitekit-layout--rounded":p,"googlesitekit-layout--transparent":O})},n&&e.createElement(v.a,{title:i,ctaLabel:o,ctaLink:c}),a,r&&e.createElement(y.a,{ctaLabel:s,ctaLink:l,footerContent:u}))}}]),Layout}(h.Component);_.propTypes={header:m.a.bool,footer:m.a.bool,children:m.a.node.isRequired,title:m.a.string,headerCTALabel:m.a.string,headerCTALink:m.a.string,footerCTALabel:m.a.string,footerCTALink:m.a.string,footerContent:m.a.node,className:m.a.string,fill:m.a.bool,relative:m.a.bool,rounded:m.a.bool,transparent:m.a.bool},_.defaultProps={header:!1,footer:!1,title:"",headerCTALabel:"",headerCTALink:"",footerCTALabel:"",footerCTALink:"",footerContent:null,className:"",fill:!1,relative:!1},t.a=_}).call(this,n(3))},20:function(e,t,n){"use strict";(function(e){var r=n(18),a=n.n(r),i=n(21),o=n.n(i),c=n(0),s=n.n(c),l=n(11),u=n.n(l),d=n(120),g=n(1),f=n(2),m=Object(f.forwardRef)((function(t,n){var r,i=t["aria-label"],c=t.arrow,s=t.back,l=t.caps,f=t.children,m=t.className,p=t.danger,b=t.disabled,h=t.external,v=t.hideExternalIndicator,y=t.href,O=t.inverse,_=t.onClick,k=t.small,E=t.to,j=o()(t,["aria-label","arrow","back","caps","children","className","danger","disabled","external","hideExternalIndicator","href","inverse","onClick","small","to"]),S=y||E||!_?E?"ROUTER_LINK":h?"EXTERNAL_LINK":"LINK":b?"BUTTON_DISABLED":"BUTTON",w="BUTTON"===S||"BUTTON_DISABLED"===S?"button":"ROUTER_LINK"===S?d.b:"a",N=("EXTERNAL_LINK"===S&&(r=Object(g._x)("(opens in a new tab)","screen reader text","google-site-kit")),"BUTTON_DISABLED"===S&&(r=Object(g._x)("(disabled)","screen reader text","google-site-kit")),r?i?"".concat(i," ").concat(r):"string"==typeof f?"".concat(f," ").concat(r):void 0:i);return e.createElement(w,a()({"aria-label":N,className:u()("googlesitekit-cta-link",m,{"googlesitekit-cta-link--arrow":c,"googlesitekit-cta-link--external":h&&!v,"googlesitekit-cta-link--inverse":O,"googlesitekit-cta-link--back":s,"googlesitekit-cta-link--small":k,"googlesitekit-cta-link--caps":l,"googlesitekit-cta-link--danger":p,"googlesitekit-cta-link--disabled":b}),disabled:b,href:"LINK"!==S&&"EXTERNAL_LINK"!==S||b?void 0:y,onClick:_,rel:"EXTERNAL_LINK"===S?"noopener noreferrer":void 0,ref:n,target:"EXTERNAL_LINK"===S?"_blank":void 0,to:E},j),f)}));m.propTypes={arrow:s.a.bool,back:s.a.bool,caps:s.a.bool,children:s.a.node,className:s.a.string,danger:s.a.bool,disabled:s.a.bool,external:s.a.bool,hideExternalIndicator:s.a.bool,href:s.a.string,inverse:s.a.bool,onClick:s.a.func,small:s.a.bool,to:s.a.string},m.defaultProps={arrow:!1,back:!1,caps:!1,className:"",danger:!1,disabled:!1,external:!1,hideExternalIndicator:!1,href:"",inverse:!1,small:!1},t.a=m}).call(this,n(3))},202:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return ReportError}));var r=n(6),a=n.n(r),i=n(0),o=n.n(i),c=n(313),s=n.n(c),l=n(2),u=n(1),d=n(4),g=n.n(d),f=n(13),m=n(17),p=n(58),b=n(144),h=n(78),v=n(82),y=n(119),O=n(20),_=n(15);function k(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function E(e){for(var t=1;t1&&(n=Object(u.sprintf)(
+/* translators: %s: module name */
+Object(u.__)("Data errors in %s","google-site-kit"),null==i?void 0:i.name)):n=Object(u.sprintf)(
+/* translators: %s: module name */
+Object(u.__)("Data error in %s","google-site-kit"),null==i?void 0:i.name);var A=e.createElement(l.Fragment,null,T.map((function(t){var n,r=null==a||null===(n=a.data)||void 0===n?void 0:n.reconnectURL;return r?e.createElement(v.a,{key:t.message,message:t.message,reconnectURL:r}):e.createElement("p",{key:t.message},h.a.sanitize(t.message,{ALLOWED_TAGS:[]}))}))),R=Object(l.useCallback)((function(){g.forEach((function(e){var t=e.selectorData;N(t.storeName).invalidateResolution(t.name,t.args)}))}),[N,g]),x=c&&D;return e.createElement(y.a,{title:n,description:A,error:!0},e.createElement("div",{className:"googlesitekit-error-cta-wrapper"},x&&e.createElement(f.Button,{href:c,target:"_blank"},Object(u.__)("Request access","google-site-kit")),k?e.createElement(l.Fragment,null,e.createElement(f.Button,{onClick:R},Object(u.__)("Retry","google-site-kit")),e.createElement("span",{className:"googlesitekit-error-retry-text"},Object(u.__)("Retry didn’t work?","google-site-kit")," "),e.createElement(O.a,{href:w,external:!0},Object(u.__)("Get help","google-site-kit"))):e.createElement(O.a,{href:w,external:!0},Object(u.__)("Get help","google-site-kit"))))}ReportError.propTypes={moduleSlug:o.a.string.isRequired,error:o.a.oneOfType([o.a.arrayOf(o.a.object),o.a.object]).isRequired}}).call(this,n(3))},205:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return OptIn}));var r=n(5),a=n.n(r),i=n(16),o=n.n(i),c=n(0),s=n.n(c),l=n(11),u=n.n(l),d=n(2),g=n(72),f=n(1),m=n(4),p=n.n(m),b=n(13),h=n(12),v=n(32),y=n(20),O=n(19),_=p.a.useSelect,k=p.a.useDispatch;function OptIn(t){var n=t.id,r=void 0===n?"googlesitekit-opt-in":n,i=t.name,c=void 0===i?"optIn":i,s=t.className,l=t.trackEventCategory,m=_((function(e){return e(h.a).isTrackingEnabled()})),p=_((function(e){return e(h.a).isSavingTrackingEnabled()})),E=_((function(e){return e(h.a).getErrorForAction("setTrackingEnabled",[!m])})),j=k(h.a).setTrackingEnabled,S=Object(O.a)(),w=Object(d.useCallback)(function(){var e=o()(a.a.mark((function e(t){var n,r;return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,j(!!t.target.checked);case 2:n=e.sent,r=n.response,n.error||(Object(v.a)(r.enabled),r.enabled&&Object(v.b)(l||S,"tracking_optin"));case 6:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),[j,l,S]);return e.createElement("div",{className:u()("googlesitekit-opt-in",s)},e.createElement(b.Checkbox,{id:r,name:c,value:"1",checked:m,disabled:p,onChange:w,loading:void 0===m},e.createElement("span",null,Object(f.__)("Help us improve Site Kit by sharing anonymous usage data.","google-site-kit")," "),e.createElement("span",null,Object(g.a)(Object(f.__)("All collected data is treated in accordance with the Google Privacy Policy.","google-site-kit"),{a:e.createElement(y.a,{key:"link",href:"https://policies.google.com/privacy",external:!0})}))),(null==E?void 0:E.message)&&e.createElement("div",{className:"googlesitekit-error-text"},null==E?void 0:E.message))}OptIn.propTypes={id:s.a.string,name:s.a.string,className:s.a.string,trackEventCategory:s.a.string}}).call(this,n(3))},206:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return g})),n.d(t,"b",(function(){return m}));var r=n(18),a=n.n(r),i=n(71),o=n.n(i),c=n(220),s=n(267),l=n(268),u=n(269),d=n(221),g=o()((function(e){return{Widget:f(e)(c.a),WidgetRecoverableModules:f(e)(d.a),WidgetReportZero:f(e)(s.a),WidgetReportError:f(e)(l.a),WidgetNull:f(e)(u.a)}}));function f(t){return function(n){var r=function WithWidgetSlug(r){return e.createElement(n,a()({},r,{widgetSlug:t}))};return r.displayName="WithWidgetSlug",(n.displayName||n.name)&&(r.displayName+="(".concat(n.displayName||n.name,")")),r}}var m=function(t){var n=g(t);return function(t){var r=function DecoratedComponent(r){return e.createElement(t,a()({},r,n))};return r.displayName="WithWidgetComponentProps",(t.displayName||t.name)&&(r.displayName+="(".concat(t.displayName||t.name,")")),r}}}).call(this,n(3))},207:function(e,t,n){"use strict";n.d(t,"b",(function(){return a})),n.d(t,"c",(function(){return i})),n.d(t,"d",(function(){return o})),n.d(t,"e",(function(){return c})),n.d(t,"a",(function(){return s}));var r=n(27);function a(e){return"string"==typeof e&&/^\w+$/.test(e)}function i(e){return e===r.c||a(e)}function o(e){return"string"==typeof e&&/^\d+$/.test(e)}function c(e){return e===r.d||o(e)}function s(e){return"string"==typeof e&&/^G-[a-zA-Z0-9]+$/.test(e)}},208:function(e,t,n){"use strict";(function(e){var r=n(14),a=n.n(r),i=n(0),o=n.n(i),c=n(11),s=n.n(c),l=n(496),u=n(1),d=n(2),g=n(4),f=n.n(g),m=n(247),p=n(271),b=n(272),h=n(12),v=n(10),y=n(276),O=n(282),_=n(284),k=n(117),E=n(56),j=n(93),S=n(20),w=n(15),N=f.a.useSelect,C=function Header(t){var n,r=t.children,i=t.subHeader,o=t.showNavigation,c=Object(k.a)("dashboardSharing"),g=!!Object(j.c)(),f=Object(E.a)(),C=N((function(e){return e(w.c).getAdminURL("googlesitekit-dashboard")})),T=N((function(e){return e(h.a).isAuthenticated()})),D=Object(l.a)({childList:!0}),A=a()(D,2),R=A[0],x=!!(null===(n=A[1].target)||void 0===n?void 0:n.childElementCount);return e.createElement(d.Fragment,null,e.createElement("header",{className:s()("googlesitekit-header",{"googlesitekit-header--has-subheader":x,"googlesitekit-header--has-navigation":o})},e.createElement(v.f,null,e.createElement(v.p,null,e.createElement(v.a,{smSize:1,mdSize:2,lgSize:4,className:"googlesitekit-header__logo",alignMiddle:!0},e.createElement(S.a,{"aria-label":Object(u.__)("Go to dashboard","google-site-kit"),className:"googlesitekit-header__logo-link",href:C},e.createElement(m.a,null))),e.createElement(v.a,{smSize:3,mdSize:6,lgSize:8,className:"googlesitekit-header__children",alignMiddle:!0},r,!T&&c&&g&&f&&e.createElement(_.a,null),T&&(!c||!f)&&e.createElement(p.a,null))))),e.createElement("div",{className:"googlesitekit-subheader",ref:R},i),o&&e.createElement(y.a,null),e.createElement(O.a,null),e.createElement(b.a,null))};C.displayName="Header",C.propTypes={children:o.a.node,subHeader:o.a.element,showNavigation:o.a.bool},C.defaultProps={children:null,subHeader:null},t.a=C}).call(this,n(3))},209:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return HelpMenu}));var r=n(14),a=n.n(r),i=n(0),o=n.n(i),c=n(251),s=n(2),l=n(74),u=n(1),d=n(4),g=n.n(d),f=n(13),m=n(290),p=n(130),b=n(8),h=n(162),v=n(17),y=n(19),O=n(15),_=g.a.useSelect;function HelpMenu(t){var n=t.children,r=Object(s.useState)(!1),i=a()(r,2),o=i[0],d=i[1],g=Object(s.useRef)(),k=Object(y.a)();Object(c.a)(g,(function(){return d(!1)})),Object(p.a)([l.c,l.e],g,(function(){return d(!1)}));var E=_((function(e){return e(v.a).isModuleActive("adsense")})),j=Object(s.useCallback)((function(){o||Object(b.z)("".concat(k,"_headerbar"),"open_helpmenu"),d(!o)}),[o,k]),S=Object(s.useCallback)((function(){d(!1)}),[]),w=_((function(e){return e(O.c).getDocumentationLinkURL("fix-common-issues")}));return e.createElement("div",{ref:g,className:"googlesitekit-dropdown-menu googlesitekit-dropdown-menu__icon-menu mdc-menu-surface--anchor"},e.createElement(f.Button,{"aria-controls":"googlesitekit-help-menu","aria-expanded":o,"aria-label":Object(u.__)("Help","google-site-kit"),"aria-haspopup":"menu",className:"googlesitekit-header__dropdown googlesitekit-border-radius-round googlesitekit-button-icon googlesitekit-help-menu__button mdc-button--dropdown",icon:e.createElement(m.a,{width:"20",height:"20"}),onClick:j,text:!0}),e.createElement(f.Menu,{className:"googlesitekit-width-auto",menuOpen:o,id:"googlesitekit-help-menu",onSelected:S},n,e.createElement(h.a,{gaEventLabel:"fix_common_issues",href:w},Object(u.__)("Fix common issues","google-site-kit")),e.createElement(h.a,{gaEventLabel:"documentation",href:"https://sitekit.withgoogle.com/documentation/"},Object(u.__)("Read help docs","google-site-kit")),e.createElement(h.a,{gaEventLabel:"support_forum",href:"https://wordpress.org/support/plugin/google-site-kit/"},Object(u.__)("Get support","google-site-kit")),E&&e.createElement(h.a,{gaEventLabel:"adsense_help",href:"https://support.google.com/adsense/"},Object(u.__)("Get help with AdSense","google-site-kit"))))}HelpMenu.propTypes={children:o.a.node}}).call(this,n(3))},220:function(e,t,n){"use strict";(function(e){var r=n(11),a=n.n(r),i=n(0),o=n.n(i),c=function Widget(t){var n=t.children,r=t.className,i=t.widgetSlug,o=t.noPadding,c=t.Header,s=t.Footer;return e.createElement("div",{className:a()("googlesitekit-widget","googlesitekit-widget--".concat(i),{"googlesitekit-widget--no-padding":o},{"googlesitekit-widget--with-header":c},r)},c&&e.createElement("div",{className:"googlesitekit-widget__header"},e.createElement(c,null)),e.createElement("div",{className:"googlesitekit-widget__body"},n),s&&e.createElement("div",{className:"googlesitekit-widget__footer"},e.createElement(s,null)))};c.defaultProps={children:void 0,noPadding:!1},c.propTypes={children:o.a.node,widgetSlug:o.a.string.isRequired,noPadding:o.a.bool,Header:o.a.elementType,Footer:o.a.elementType},t.a=c}).call(this,n(3))},221:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return WidgetRecoverableModules}));var r=n(6),a=n.n(r),i=n(18),o=n.n(i),c=n(24),s=n.n(c),l=n(21),u=n.n(l),d=n(0),g=n.n(d),f=n(2),m=n(149),p=n(146);function b(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function WidgetRecoverableModules(t){var n=t.widgetSlug,r=t.moduleSlugs,a=u()(t,["widgetSlug","moduleSlugs"]),i=Object(f.useMemo)((function(){return{moduleSlug:s()(r).sort().join(","),moduleSlugs:r}}),[r]);return Object(m.a)(n,p.a,i),e.createElement(p.a,o()({moduleSlugs:r},a))}WidgetRecoverableModules.propTypes=function(e){for(var t=1;t=0;)3===e[n]?(t-=3,e[n]=4):6===e[n]&&(t-=6,e[n]=8),n--;return[e,t]}function d(e,t){return(Array.isArray(t.width)?t.width:[t.width]).map((function(t){return{counter:e+c.c[t],width:t}}))}function g(e,t){var n=[],r=[];if(!(null==e?void 0:e.length))return{columnWidths:n,rowIndexes:r};var i=0,o=0,s=function(e,t){return e.counter-t.counter},g=function(e,t){var n=e.counter;return t.counter-n},f=function(e){return e.counter<=12};if(e.forEach((function(m,p){if(l(t[m.slug]))return n.push(0),void r.push(o);var b=d(i,m),h=function(e,t,n){for(;++e12){if(i-=c.c[v],r[p]++,9===i){var y=u(n,i),O=a()(y,2);n=O[0],i=O[1]}i=c.c[v],o++}else 12===i&&(i=0,o++);n.push(c.c[v])})),9===i){var m=u(n,i),p=a()(m,2);n=p[0],i=p[1]}return{columnWidths:n,rowIndexes:r}}var f=n(134),m=n.n(f);function p(e,t,n){var r=n.columnWidths,a=n.rowIndexes,i=[],s=o()(r);if(!(null==e?void 0:e.length))return{gridColumnWidths:s,overrideComponents:i};var l=null,u=-1,d=[];if(function(e,t){for(var n={},r=0;r1)}(e,t)){var g=Array.from({length:e.length-1}).fill(0);return{overrideComponents:[t[e[0].slug]],gridColumnWidths:[12].concat(o()(g))}}return e.forEach((function(n,o){var c,g,f,p,b;if(i.push(null),l=t[n.slug],u=a[o],l)if(g=l,f=t[null===(c=e[o+1])||void 0===c?void 0:c.slug],p=u,b=a[o+1],p===b&&m()(g,f))d.push(r[o]),s[o]=0;else if(d.length>0){d.push(r[o]);var h=d.reduce((function(e,t){return e+t}),0);i[o]=l,s[o]=h,d=[]}})),{gridColumnWidths:s,overrideComponents:i}}var b=n(206);function h(e){return(Array.isArray(e)?e:[e]).filter((function(e){return"string"==typeof e&&e.length>0}))}},23:function(e,t,n){"use strict";n.d(t,"j",(function(){return r})),n.d(t,"h",(function(){return a})),n.d(t,"k",(function(){return i})),n.d(t,"i",(function(){return o})),n.d(t,"m",(function(){return c})),n.d(t,"p",(function(){return s})),n.d(t,"f",(function(){return l})),n.d(t,"o",(function(){return u})),n.d(t,"g",(function(){return d})),n.d(t,"n",(function(){return g})),n.d(t,"q",(function(){return f})),n.d(t,"l",(function(){return m})),n.d(t,"d",(function(){return p})),n.d(t,"a",(function(){return b})),n.d(t,"c",(function(){return h})),n.d(t,"b",(function(){return v})),n.d(t,"e",(function(){return y}));var r="mainDashboard",a="entityDashboard",i="mainDashboardViewOnly",o="entityDashboardViewOnly",c="postsList",s="userInput",l="activation",u="splash",d="adminBar",g="settings",f="wpDashboard",m="moduleSetup",p="traffic",b="content",h="speed",v="monetization",y=[r,a,i,o,s,u,g,m]},247:function(e,t,n){"use strict";(function(e){var r=n(1),a=n(106),i=n(248),o=n(60);t.a=function Logo(){return e.createElement("div",{className:"googlesitekit-logo","aria-hidden":"true"},e.createElement(a.a,{className:"googlesitekit-logo__logo-g",height:"34",width:"32"}),e.createElement(i.a,{className:"googlesitekit-logo__logo-sitekit",height:"26",width:"99"}),e.createElement(o.a,null,Object(r.__)("Site Kit by Google Logo","google-site-kit")))}}).call(this,n(3))},248:function(e,t,n){"use strict";var r=n(2);function a(){return(a=Object.assign||function(e){for(var t=1;t=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,c=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return o=e.done,e},e:function(e){c=!0,i=e},f:function(){try{o||null==n.return||n.return()}finally{if(c)throw i}}}}function L(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);nSign in to connect more services and control sharing access.","google-site-kit"),{strong:e.createElement("strong",null)}):Object(s.a)(Object(l.__)("You can see stats from all shared Google services, but you can't make any changes. Learn more","google-site-kit"),{a:e.createElement(h.a,{href:i,external:!0,onClick:_,"aria-label":Object(l.__)("Learn more about dashboard sharing","google-site-kit")})});return e.createElement("li",{className:"googlesitekit-view-only-menu__list-item googlesitekit-view-only-menu__description"},e.createElement("p",null,k),n&&e.createElement(g.Button,{onClick:d},Object(l.__)("Sign in with Google","google-site-kit")))}}).call(this,n(3))},287:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return SharedServices}));var r=n(1),a=n(4),i=n.n(a),o=n(12),c=n(288),s=i.a.useSelect;function SharedServices(){var t=s((function(e){return e(o.a).getViewableModules()}));return void 0===t?null:e.createElement("li",{className:"googlesitekit-view-only-menu__list-item"},e.createElement("h4",null,Object(r.__)("Shared services","google-site-kit")),e.createElement("ul",null,t.map((function(t){return e.createElement(c.a,{key:t,module:t})}))))}}).call(this,n(3))},288:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return Service}));var r=n(0),a=n.n(r),i=n(72),o=n(1),c=n(4),s=n.n(c),l=n(17),u=n(12),d=s.a.useSelect;function Service(t){var n=t.module,r=d((function(e){return e(u.a).hasCapability(u.c)})),a=d((function(e){return e(l.a).getModule(n)})),c=a.name,s=a.owner,g=d((function(e){return e(l.a).getModuleIcon(n)}));return e.createElement("li",{className:"googlesitekit-view-only-menu__service"},e.createElement("span",{className:"googlesitekit-view-only-menu__service--icon"},e.createElement(g,{height:26})),e.createElement("span",{className:"googlesitekit-view-only-menu__service--name"},c),r&&(null==s?void 0:s.login)&&e.createElement("span",{className:"googlesitekit-view-only-menu__service--owner"},Object(i.a)(Object(o.sprintf)(
+/* translators: %s: module owner Google Account email address */
+Object(o.__)("Shared by %s","google-site-kit"),s.login),{strong:e.createElement("strong",{title:s.login})})))}Service.propTypes={module:a.a.string.isRequired}}).call(this,n(3))},289:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return Tracking}));var r=n(72),a=n(1),i=n(205),o=n(19);function Tracking(){var t=Object(o.a)();return e.createElement("li",{className:"googlesitekit-view-only-menu__list-item"},e.createElement("p",null,Object(r.a)(Object(a.__)("Thanks for using Site Kit! Help us make it even better.","google-site-kit"),{br:e.createElement("br",null)})),e.createElement(i.a,{trackEventCategory:"".concat(t,"_headerbar_viewonly")}))}}).call(this,n(3))},290:function(e,t,n){"use strict";var r=n(2);function a(){return(a=Object.assign||function(e){for(var t=1;t0){n.next=7;break}if(!(i=document.getElementById("wp-admin-bar-menu-toggle"))){n.next=7;break}return i.click(),n.next=7,new Promise((function(e){setTimeout(e,0)}));case 7:"#adminmenu [href*='page=googlesitekit-dashboard']",(o=!!document.querySelector("".concat("#adminmenu [href*='page=googlesitekit-dashboard']","[aria-haspopup=true]")))&&document.querySelector("#adminmenu [href*='page=googlesitekit-dashboard']").click(),t(e,{isTooltipVisible:!0,rehideAdminMenu:!r,rehideAdminSubMenu:o});case 11:case"end":return n.stop()}}),n)}))),[t,e])}},311:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return AdminMenuTooltip}));var r=n(6),a=n.n(r),i=n(18),o=n.n(i),c=n(5),s=n.n(c),l=n(16),u=n.n(l),d=n(21),g=n.n(d),f=n(2),m=n(0),p=n.n(m),b=n(4),h=n.n(b),v=n(292),y=n(33),O=n(223);function _(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function k(e){for(var t=1;t0&&(null===(t=document.getElementById("wp-admin-bar-menu-toggle"))||void 0===t||t.click()),d&&document.querySelector("body").click(),e.next=4,null==n?void 0:n();case 4:i(r,void 0);case 5:case"end":return e.stop()}}),e)}))),[n,l,d,i,r]);return e.createElement(v.a,o()({slug:"ga4-activation-banner-admin-menu-tooltip",onDismiss:m},a))}AdminMenuTooltip.propTypes=k(k({},v.a.propTypes),{},{target:p.a.string,tooltipStateKey:p.a.string.isRequired}),AdminMenuTooltip.defaultProps={target:'#adminmenu [href*="page=googlesitekit-settings"]'}}).call(this,n(3))},32:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return y})),n.d(t,"b",(function(){return v}));var r=n(86),a=e._googlesitekitTrackingData||{},i=a.activeModules,o=void 0===i?[]:i,c=a.isSiteKitScreen,s=a.trackingEnabled,l=a.trackingID,u=a.referenceSiteURL,d=a.userIDHash,g=a.isAuthenticated,f={activeModules:o,trackingEnabled:s,trackingID:l,referenceSiteURL:u,userIDHash:d,isSiteKitScreen:c,userRoles:a.userRoles,isAuthenticated:g,pluginVersion:"1.89.0"},m=Object(r.a)(f),p=m.enableTracking,b=m.disableTracking,h=(m.isTrackingEnabled,m.initializeSnippet),v=m.trackEvent;function y(e){e?p():b()}c&&s&&h()}).call(this,n(22))},322:function(e,t,n){"use strict";(function(e){var r=n(44),a=n.n(r),i=n(45),o=n.n(i),c=n(75),s=n.n(c),l=n(76),u=n.n(l),d=n(48),g=n.n(d),f=n(0),m=n.n(f),p=n(2),b=n(10),h=n(20);function v(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=g()(e);if(t){var a=g()(this).constructor;n=Reflect.construct(r,arguments,a)}else n=r.apply(this,arguments);return u()(this,n)}}var y=function(t){s()(LayoutHeader,t);var n=v(LayoutHeader);function LayoutHeader(){return a()(this,LayoutHeader),n.apply(this,arguments)}return o()(LayoutHeader,[{key:"render",value:function(){var t=this.props,n=t.title,r=t.ctaLabel,a=t.ctaLink,i=a?{alignMiddle:!0,smSize:4,lgSize:6}:{alignMiddle:!0,smSize:4,mdSize:8,lgSize:12};return e.createElement("header",{className:"googlesitekit-layout__header"},e.createElement(b.f,null,e.createElement(b.p,null,n&&e.createElement(b.a,i,e.createElement("h3",{className:"googlesitekit-subheading-1 googlesitekit-layout__header-title"},n)),a&&e.createElement(b.a,{alignMiddle:!0,mdAlignRight:!0,smSize:4,lgSize:6},e.createElement(h.a,{href:a,external:!0},r)))))}}]),LayoutHeader}(p.Component);y.propTypes={title:m.a.string,ctaLabel:m.a.string,ctaLink:m.a.string},y.defaultProps={title:"",ctaLabel:"",ctaLink:""},t.a=y}).call(this,n(3))},323:function(e,t,n){"use strict";(function(e){var r=n(44),a=n.n(r),i=n(45),o=n.n(i),c=n(75),s=n.n(c),l=n(76),u=n.n(l),d=n(48),g=n.n(d),f=n(0),m=n.n(f),p=n(2),b=n(10),h=n(105);function v(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=g()(e);if(t){var a=g()(this).constructor;n=Reflect.construct(r,arguments,a)}else n=r.apply(this,arguments);return u()(this,n)}}var y=function(t){s()(LayoutFooter,t);var n=v(LayoutFooter);function LayoutFooter(){return a()(this,LayoutFooter),n.apply(this,arguments)}return o()(LayoutFooter,[{key:"render",value:function(){var t=this.props,n=t.ctaLabel,r=t.ctaLink,a=t.footerContent;return e.createElement("footer",{className:"googlesitekit-layout__footer"},e.createElement(b.f,null,e.createElement(b.p,null,e.createElement(b.a,{size:12},r&&n&&e.createElement(h.a,{className:"googlesitekit-data-block__source",name:n,href:r,external:!0}),a))))}}]),LayoutFooter}(p.Component);y.propTypes={ctaLabel:m.a.string,ctaLink:m.a.string},t.a=y}).call(this,n(3))},326:function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var r=n(8),a=n(38);function i(e){var t=Object(a.a)(e);return t
';
+ $html .= sprintf(
+ /* translators: 1: Admin splash URL. 2: Support link URL. */
+ __( 'Please try again. Retry didn’t work? Get help.', 'google-site-kit' ),
+ esc_url( Plugin::instance()->context()->admin_url( 'splash' ) ),
+ esc_url( $this->get_proxy_support_link_url() . '?error_id=nonce_expired' )
+ );
+ wp_die( $html, __( 'Something went wrong.', 'google-site-kit' ), 403 ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Authentication/Clients/Client_Factory.php b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Clients/Client_Factory.php
new file mode 100644
index 000000000..9364f9485
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Clients/Client_Factory.php
@@ -0,0 +1,162 @@
+ '',
+ 'client_secret' => '',
+ 'redirect_uri' => '',
+ 'token' => array(),
+ 'token_callback' => null,
+ 'token_exception_callback' => null,
+ 'required_scopes' => array(),
+ 'login_hint_email' => '',
+ 'using_proxy' => true,
+ 'proxy_url' => Google_Proxy::PRODUCTION_BASE_URL,
+ ),
+ $args
+ );
+
+ if ( $args['using_proxy'] ) {
+ $client = new Google_Site_Kit_Proxy_Client(
+ array( 'proxy_base_path' => $args['proxy_url'] )
+ );
+ } else {
+ $client = new Google_Site_Kit_Client();
+ }
+
+ // Enable exponential retries, try up to three times.
+ $client->setConfig( 'retry', array( 'retries' => 3 ) );
+
+ // Override the default user-agent for the Guzzle client. This is used for oauth/token requests.
+ // By default this header uses the generic Guzzle client's user-agent and includes
+ // Guzzle, cURL, and PHP versions as it is normally shared.
+ // In our case however, the client is namespaced to be used by Site Kit only.
+ $http_client = $client->getHttpClient();
+ $http_client->setDefaultOption( 'headers/User-Agent', Google_Proxy::get_application_name() );
+
+ /** This filter is documented in wp-includes/class-http.php */
+ $ssl_verify = apply_filters( 'https_ssl_verify', true, null );
+ // If SSL verification is enabled (default) use the SSL certificate bundle included with WP.
+ if ( $ssl_verify ) {
+ $http_client->setDefaultOption( 'verify', ABSPATH . WPINC . '/certificates/ca-bundle.crt' );
+ } else {
+ $http_client->setDefaultOption( 'verify', false );
+ }
+
+ // Configure the Google_Client's HTTP client to use to use the same HTTP proxy as WordPress HTTP, if set.
+ $http_proxy = new WP_HTTP_Proxy();
+ if ( $http_proxy->is_enabled() ) {
+ // See http://docs.guzzlephp.org/en/5.3/clients.html#proxy for reference.
+ $auth = $http_proxy->use_authentication() ? "{$http_proxy->authentication()}@" : '';
+ $http_client->setDefaultOption( 'proxy', "{$auth}{$http_proxy->host()}:{$http_proxy->port()}" );
+ }
+
+ $auth_config = self::get_auth_config( $args['client_id'], $args['client_secret'], $args['redirect_uri'] );
+ if ( ! empty( $auth_config ) ) {
+ try {
+ $client->setAuthConfig( $auth_config );
+ } catch ( Exception $e ) {
+ return $client;
+ }
+ }
+
+ // Offline access so we can access the refresh token even when the user is logged out.
+ $client->setAccessType( 'offline' );
+ $client->setPrompt( 'consent' );
+ $client->setRedirectUri( $args['redirect_uri'] );
+ $client->setScopes( (array) $args['required_scopes'] );
+ $client->prepareScopes();
+
+ // Set the full token data.
+ if ( ! empty( $args['token'] ) ) {
+ $client->setAccessToken( $args['token'] );
+ }
+
+ // Set the callback which is called when the client refreshes the access token on-the-fly.
+ $token_callback = $args['token_callback'];
+ if ( $token_callback ) {
+ $client->setTokenCallback(
+ function( $cache_key, $access_token ) use ( $client, $token_callback ) {
+ // The same token from this callback should also already be set in the client object, which is useful
+ // to get the full token data, all of which needs to be saved. Just in case, if that is not the same,
+ // we save the passed token only, relying on defaults for the other values.
+ $token = $client->getAccessToken();
+ if ( $access_token !== $token['access_token'] ) {
+ $token = array( 'access_token' => $access_token );
+ }
+
+ $token_callback( $token );
+ }
+ );
+ }
+
+ // Set the callback which is called when refreshing the access token on-the-fly fails.
+ $token_exception_callback = $args['token_exception_callback'];
+ if ( ! empty( $token_exception_callback ) ) {
+ $client->setTokenExceptionCallback( $token_exception_callback );
+ }
+
+ if ( ! empty( $args['login_hint_email'] ) ) {
+ $client->setLoginHint( $args['login_hint_email'] );
+ }
+
+ return $client;
+ }
+
+ /**
+ * Returns the full OAuth credentials configuration data based on the given client ID and secret.
+ *
+ * @since 1.39.0
+ *
+ * @param string $client_id OAuth client ID.
+ * @param string $client_secret OAuth client secret.
+ * @param string $redirect_uri OAuth redirect URI.
+ * @return array Credentials data, or empty array if any of the given values is empty.
+ */
+ private static function get_auth_config( $client_id, $client_secret, $redirect_uri ) {
+ if ( ! $client_id || ! $client_secret || ! $redirect_uri ) {
+ return array();
+ }
+
+ return array(
+ 'client_id' => $client_id,
+ 'client_secret' => $client_secret,
+ 'auth_uri' => 'https://accounts.google.com/o/oauth2/auth',
+ 'token_uri' => 'https://oauth2.googleapis.com/token',
+ 'auth_provider_x509_cert_url' => 'https://www.googleapis.com/oauth2/v1/certs',
+ 'redirect_uris' => array( $redirect_uri ),
+ );
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Authentication/Clients/Google_Site_Kit_Client.php b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Clients/Google_Site_Kit_Client.php
new file mode 100644
index 000000000..c036371c8
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Clients/Google_Site_Kit_Client.php
@@ -0,0 +1,307 @@
+setTokenExceptionCallback( $config['token_exception_callback'] );
+ }
+
+ unset( $config['token_exception_callback'] );
+
+ parent::__construct( $config );
+ }
+
+ /**
+ * Sets the function to be called when fetching an access token results in an exception.
+ *
+ * @since 1.2.0
+ *
+ * @param callable $exception_callback Function accepting an exception as single parameter.
+ */
+ public function setTokenExceptionCallback( callable $exception_callback ) {
+ $this->token_exception_callback = $exception_callback;
+ }
+
+ /**
+ * Sets whether or not to return raw requests and returns a callback to reset to the previous value.
+ *
+ * @since 1.2.0
+ *
+ * @param bool $defer Whether or not to return raw requests.
+ * @return callable Callback function that resets to the original $defer value.
+ */
+ public function withDefer( $defer ) {
+ $orig_defer = $this->shouldDefer();
+ $this->setDefer( $defer );
+
+ // Return a function to restore the original refer value.
+ return function () use ( $orig_defer ) {
+ $this->setDefer( $orig_defer );
+ };
+ }
+
+ /**
+ * Adds auth listeners to the HTTP client based on the credentials set in the Google API Client object.
+ *
+ * @since 1.2.0
+ *
+ * @param ClientInterface $http The HTTP client object.
+ * @return ClientInterface The HTTP client object.
+ *
+ * @throws Exception Thrown when fetching a new access token via refresh token on-the-fly fails.
+ */
+ public function authorize( ClientInterface $http = null ) {
+ if ( $this->isUsingApplicationDefaultCredentials() ) {
+ return parent::authorize( $http );
+ }
+
+ $token = $this->getAccessToken();
+ if ( isset( $token['refresh_token'] ) && $this->isAccessTokenExpired() ) {
+ $callback = $this->getConfig( 'token_callback' );
+
+ try {
+ $token_response = $this->fetchAccessTokenWithRefreshToken( $token['refresh_token'] );
+ if ( $callback ) {
+ // Due to original callback signature this can only accept the token itself.
+ call_user_func( $callback, '', $token_response['access_token'] );
+ }
+ } catch ( Exception $e ) {
+ // Pass exception to special callback if provided.
+ if ( $this->token_exception_callback ) {
+ call_user_func( $this->token_exception_callback, $e );
+ }
+ throw $e;
+ }
+ }
+
+ return parent::authorize( $http );
+ }
+
+ /**
+ * Fetches an OAuth 2.0 access token by using a temporary code.
+ *
+ * @since 1.0.0
+ * @since 1.2.0 Ported from Google_Site_Kit_Proxy_Client.
+ *
+ * @param string $code Temporary authorization code, or undelegated token code.
+ * @return array Access token.
+ *
+ * @throws InvalidArgumentException Thrown when the passed code is empty.
+ */
+ public function fetchAccessTokenWithAuthCode( $code ) {
+ if ( strlen( $code ) === 0 ) {
+ throw new InvalidArgumentException( 'Invalid code' );
+ }
+
+ $auth = $this->getOAuth2Service();
+ $auth->setCode( $code );
+ $auth->setRedirectUri( $this->getRedirectUri() );
+
+ $http_handler = HttpHandlerFactory::build( $this->getHttpClient() );
+
+ $token_response = $this->fetchAuthToken( $auth, $http_handler );
+ if ( $token_response && isset( $token_response['access_token'] ) ) {
+ $token_response['created'] = time();
+ $this->setAccessToken( $token_response );
+ }
+
+ return $token_response;
+ }
+
+ /**
+ * Fetches a fresh OAuth 2.0 access token by using a refresh token.
+ *
+ * @since 1.0.0
+ * @since 1.2.0 Ported from Google_Site_Kit_Proxy_Client.
+ *
+ * @param string $refresh_token Optional. Refresh token. Unused here.
+ * @param array $extra_params Optional. Array of extra parameters to fetch with.
+ * @return array Access token.
+ *
+ * @throws LogicException Thrown when no refresh token is available.
+ */
+ public function fetchAccessTokenWithRefreshToken( $refresh_token = null, $extra_params = array() ) {
+ if ( null === $refresh_token ) {
+ $refresh_token = $this->getRefreshToken();
+ if ( ! $refresh_token ) {
+ throw new LogicException( 'refresh token must be passed in or set as part of setAccessToken' );
+ }
+ }
+
+ $this->getLogger()->info( 'OAuth2 access token refresh' );
+ $auth = $this->getOAuth2Service();
+ $auth->setRefreshToken( $refresh_token );
+
+ $http_handler = HttpHandlerFactory::build( $this->getHttpClient() );
+
+ $token_response = $this->fetchAuthToken( $auth, $http_handler, $extra_params );
+ if ( $token_response && isset( $token_response['access_token'] ) ) {
+ $token_response['created'] = time();
+ if ( ! isset( $token_response['refresh_token'] ) ) {
+ $token_response['refresh_token'] = $refresh_token;
+ }
+ $this->setAccessToken( $token_response );
+
+ /**
+ * Fires when the current user has just been reauthorized to access Google APIs with a refreshed access token.
+ *
+ * In other words, this action fires whenever Site Kit has just obtained a new access token based on
+ * the refresh token for the current user, which typically happens once every hour when using Site Kit,
+ * since that is the lifetime of every access token.
+ *
+ * @since 1.25.0
+ *
+ * @param array $token_response Token response data.
+ */
+ do_action( 'googlesitekit_reauthorize_user', $token_response );
+ }
+
+ return $token_response;
+ }
+
+ /**
+ * Executes deferred HTTP requests.
+ *
+ * @since 1.38.0
+ *
+ * @param RequestInterface $request Request object to execute.
+ * @param string $expected_class Expected class to return.
+ * @return object An object of the type of the expected class or Psr\Http\Message\ResponseInterface.
+ */
+ public function execute( RequestInterface $request, $expected_class = null ) {
+ $request = $request->withHeader( 'X-Goog-Quota-User', self::getQuotaUser() );
+
+ return parent::execute( $request, $expected_class );
+ }
+
+ /**
+ * Returns a string that uniquely identifies a user of the application.
+ *
+ * @since 1.38.0
+ *
+ * @return string Unique user identifier.
+ */
+ public static function getQuotaUser() {
+ $user_id = get_current_user_id();
+ $url = get_home_url();
+
+ $scheme = URL::parse( $url, PHP_URL_SCHEME );
+ $host = URL::parse( $url, PHP_URL_HOST );
+ $path = URL::parse( $url, PHP_URL_PATH );
+
+ return "{$scheme}://{$user_id}@{$host}{$path}";
+ }
+
+ /**
+ * Fetches an OAuth 2.0 access token using a given auth object and HTTP handler.
+ *
+ * This method is used in place of {@see OAuth2::fetchAuthToken()}.
+ *
+ * @since 1.0.0
+ * @since 1.2.0 Ported from Google_Site_Kit_Proxy_Client.
+ *
+ * @param OAuth2 $auth OAuth2 instance.
+ * @param callable|null $http_handler Optional. HTTP handler callback. Default null.
+ * @param array $extra_params Optional. Array of extra parameters to fetch with.
+ * @return array Access token.
+ */
+ protected function fetchAuthToken( OAuth2 $auth, callable $http_handler = null, $extra_params = array() ) {
+ if ( is_null( $http_handler ) ) {
+ $http_handler = HttpHandlerFactory::build( HttpClientCache::getHttpClient() );
+ }
+
+ $request = $auth->generateCredentialsRequest( $extra_params );
+ $response = $http_handler( $request );
+ $credentials = $auth->parseTokenResponse( $response );
+ if ( ! empty( $credentials['error'] ) ) {
+ $this->handleAuthTokenErrorResponse( $credentials['error'], $credentials );
+ }
+
+ $auth->updateToken( $credentials );
+
+ return $credentials;
+ }
+
+ /**
+ * Handles an erroneous response from a request to fetch an auth token.
+ *
+ * @since 1.2.0
+ *
+ * @param string $error Error code / error message.
+ * @param array $data Associative array of full response data.
+ *
+ * @throws Google_OAuth_Exception Thrown with the given $error as message.
+ */
+ protected function handleAuthTokenErrorResponse( $error, array $data ) {
+ throw new Google_OAuth_Exception( $error );
+ }
+
+ /**
+ * Create a default Google OAuth2 object.
+ *
+ * @return OAuth2 Created OAuth2 instance.
+ */
+ protected function createOAuth2Service() {
+ $auth = new OAuth2(
+ array(
+ 'clientId' => $this->getClientId(),
+ 'clientSecret' => $this->getClientSecret(),
+ 'authorizationUri' => self::OAUTH2_AUTH_URL,
+ 'tokenCredentialUri' => self::OAUTH2_TOKEN_URI,
+ 'redirectUri' => $this->getRedirectUri(),
+ 'issuer' => $this->getConfig( 'client_id' ),
+ 'signingKey' => $this->getConfig( 'signing_key' ),
+ 'signingAlgorithm' => $this->getConfig( 'signing_algorithm' ),
+ )
+ );
+
+ return $auth;
+ }
+
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Authentication/Clients/Google_Site_Kit_Proxy_Client.php b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Clients/Google_Site_Kit_Proxy_Client.php
new file mode 100644
index 000000000..ddd2d1ba8
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Clients/Google_Site_Kit_Proxy_Client.php
@@ -0,0 +1,148 @@
+setProxyBasePath( $config['proxy_base_path'] );
+ }
+
+ unset( $config['proxy_base_path'] );
+
+ parent::__construct( $config );
+
+ $this->setApplicationName( Google_Proxy::get_application_name() );
+ }
+
+ /**
+ * Sets the base URL to the proxy.
+ *
+ * @since 1.2.0
+ *
+ * @param string $base_path Proxy base URL.
+ */
+ public function setProxyBasePath( $base_path ) {
+ $this->proxy_base_path = untrailingslashit( $base_path );
+ }
+
+ /**
+ * Revokes an OAuth2 access token using the authentication proxy.
+ *
+ * @since 1.0.0
+ *
+ * @param string|array|null $token Optional. Access token. Default is the current one.
+ * @return bool True on success, false on failure.
+ */
+ public function revokeToken( $token = null ) {
+ if ( ! $token ) {
+ $token = $this->getAccessToken();
+ }
+ if ( is_array( $token ) ) {
+ $token = $token['access_token'];
+ }
+
+ $body = Psr7\stream_for(
+ http_build_query(
+ array(
+ 'client_id' => $this->getClientId(),
+ 'token' => $token,
+ )
+ )
+ );
+ $request = new Request(
+ 'POST',
+ $this->proxy_base_path . Google_Proxy::OAUTH2_REVOKE_URI,
+ array(
+ 'Cache-Control' => 'no-store',
+ 'Content-Type' => 'application/x-www-form-urlencoded',
+ ),
+ $body
+ );
+
+ $http_handler = HttpHandlerFactory::build( $this->getHttpClient() );
+
+ $response = $http_handler( $request );
+
+ return 200 === (int) $response->getStatusCode();
+ }
+
+ /**
+ * Creates a Google auth object for the authentication proxy.
+ *
+ * @since 1.0.0
+ */
+ protected function createOAuth2Service() {
+ return new OAuth2(
+ array(
+ 'clientId' => $this->getClientId(),
+ 'clientSecret' => $this->getClientSecret(),
+ 'authorizationUri' => $this->proxy_base_path . Google_Proxy::OAUTH2_AUTH_URI,
+ 'tokenCredentialUri' => $this->proxy_base_path . Google_Proxy::OAUTH2_TOKEN_URI,
+ 'redirectUri' => $this->getRedirectUri(),
+ 'issuer' => $this->getClientId(),
+ 'signingKey' => null,
+ 'signingAlgorithm' => null,
+ )
+ );
+ }
+
+
+
+ /**
+ * Handles an erroneous response from a request to fetch an auth token.
+ *
+ * @since 1.2.0
+ *
+ * @param string $error Error code / error message.
+ * @param array $data Associative array of full response data.
+ *
+ * @throws Google_Proxy_Code_Exception Thrown when proxy returns an error accompanied by a temporary access code.
+ */
+ protected function handleAuthTokenErrorResponse( $error, array $data ) {
+ if ( ! empty( $data['code'] ) ) {
+ throw new Google_Proxy_Code_Exception( $error, 0, $data['code'] );
+ }
+ parent::handleAuthTokenErrorResponse( $error, $data );
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Authentication/Clients/OAuth2.php b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Clients/OAuth2.php
new file mode 100644
index 000000000..7dc2fd1cb
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Clients/OAuth2.php
@@ -0,0 +1,54 @@
+getGrantType();
+
+ if ( empty( $extra_params ) || 'refresh_token' !== $grant_type ) {
+ return $request;
+ }
+
+ $params = array(
+ 'body' => Query::build(
+ array_merge(
+ Query::parse( Utils::copyToString( $request->getBody() ) ),
+ $extra_params
+ )
+ ),
+ );
+
+ return Utils::modifyRequest( $request, $params );
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Authentication/Clients/OAuth_Client.php b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Clients/OAuth_Client.php
new file mode 100644
index 000000000..e7ca5c9c5
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Clients/OAuth_Client.php
@@ -0,0 +1,661 @@
+owner_id = new Owner_ID( $this->options );
+ $this->activity_metrics = new Activity_Metrics( $this->context, $this->user_options );
+ $this->active_consumers = new Active_Consumers( $this->user_options );
+ }
+
+ /**
+ * Refreshes the access token.
+ *
+ * While this method can be used to explicitly refresh the current access token, the preferred way
+ * should be to rely on the Google_Site_Kit_Client to do that automatically whenever the current access token
+ * has expired.
+ *
+ * @since 1.0.0
+ */
+ public function refresh_token() {
+ $token = $this->get_token();
+ if ( empty( $token['refresh_token'] ) ) {
+ $this->delete_token();
+ $this->user_options->set( self::OPTION_ERROR_CODE, 'refresh_token_not_exist' );
+ return;
+ }
+
+ $active_consumers = $this->activity_metrics->get_for_refresh_token();
+
+ try {
+ $token_response = $this->get_client()->fetchAccessTokenWithRefreshToken( $token['refresh_token'], $active_consumers );
+ } catch ( \Exception $e ) {
+ $this->handle_fetch_token_exception( $e );
+ return;
+ }
+
+ if ( ! isset( $token_response['access_token'] ) ) {
+ $this->user_options->set( self::OPTION_ERROR_CODE, 'access_token_not_received' );
+ return;
+ }
+
+ $this->active_consumers->delete();
+ $this->set_token( $token_response );
+ }
+
+ /**
+ * Revokes the access token.
+ *
+ * @since 1.0.0
+ */
+ public function revoke_token() {
+ try {
+ $this->get_client()->revokeToken();
+ } catch ( \Exception $e ) { // phpcs:ignore Generic.CodeAnalysis.EmptyStatement
+ // No special handling, we just need to make sure this goes through.
+ }
+
+ $this->delete_token();
+ }
+
+ /**
+ * Gets the list of currently granted Google OAuth scopes for the current user.
+ *
+ * @since 1.0.0
+ * @see https://developers.google.com/identity/protocols/googlescopes
+ *
+ * @return string[] List of Google OAuth scopes.
+ */
+ public function get_granted_scopes() {
+ $base_scopes = parent::get_granted_scopes();
+ $extra_scopes = $this->get_granted_additional_scopes();
+
+ return array_unique(
+ array_merge( $base_scopes, $extra_scopes )
+ );
+ }
+
+ /**
+ * Gets the list of currently granted additional Google OAuth scopes for the current user.
+ *
+ * Scopes are considered "additional scopes" if they were granted to perform a specific action,
+ * rather than being granted as an overall required scope.
+ *
+ * @since 1.9.0
+ * @see https://developers.google.com/identity/protocols/googlescopes
+ *
+ * @return string[] List of Google OAuth scopes.
+ */
+ public function get_granted_additional_scopes() {
+ return array_values( $this->user_options->get( self::OPTION_ADDITIONAL_AUTH_SCOPES ) ?: array() );
+ }
+
+ /**
+ * Checks if new scopes are required that are not yet granted for the current user.
+ *
+ * @since 1.9.0
+ *
+ * @return bool true if any required scopes are not satisfied, otherwise false.
+ */
+ public function needs_reauthentication() {
+ if ( ! $this->token->has() ) {
+ return false;
+ }
+
+ return ! $this->has_sufficient_scopes();
+ }
+
+ /**
+ * Gets the list of scopes which are not satisfied by the currently granted scopes.
+ *
+ * @since 1.9.0
+ *
+ * @param string[] $scopes Optional. List of scopes to test against granted scopes.
+ * Default is the list of required scopes.
+ * @return string[] Filtered $scopes list, only including scopes that are not satisfied.
+ */
+ public function get_unsatisfied_scopes( array $scopes = null ) {
+ if ( null === $scopes ) {
+ $scopes = $this->get_required_scopes();
+ }
+
+ $granted_scopes = $this->get_granted_scopes();
+ $unsatisfied_scopes = array_filter(
+ $scopes,
+ function( $scope ) use ( $granted_scopes ) {
+ return ! Scopes::is_satisfied_by( $scope, $granted_scopes );
+ }
+ );
+
+ return array_values( $unsatisfied_scopes );
+ }
+
+ /**
+ * Checks whether or not currently granted scopes are sufficient for the given list.
+ *
+ * @since 1.9.0
+ *
+ * @param string[] $scopes Optional. List of scopes to test against granted scopes.
+ * Default is the list of required scopes.
+ * @return bool True if all $scopes are satisfied, false otherwise.
+ */
+ public function has_sufficient_scopes( array $scopes = null ) {
+ if ( null === $scopes ) {
+ $scopes = $this->get_required_scopes();
+ }
+ return Scopes::are_satisfied_by( $scopes, $this->get_granted_scopes() );
+ }
+
+ /**
+ * Sets the list of currently granted Google OAuth scopes for the current user.
+ *
+ * @since 1.0.0
+ * @see https://developers.google.com/identity/protocols/googlescopes
+ *
+ * @param string[] $scopes List of Google OAuth scopes.
+ */
+ public function set_granted_scopes( $scopes ) {
+ $required_scopes = $this->get_required_scopes();
+ $base_scopes = array();
+ $extra_scopes = array();
+
+ foreach ( $scopes as $scope ) {
+ if ( in_array( $scope, $required_scopes, true ) ) {
+ $base_scopes[] = $scope;
+ } else {
+ $extra_scopes[] = $scope;
+ }
+ }
+
+ parent::set_granted_scopes( $base_scopes );
+ $this->user_options->set( self::OPTION_ADDITIONAL_AUTH_SCOPES, $extra_scopes );
+ }
+
+ /**
+ * Gets the current user's OAuth access token.
+ *
+ * @since 1.0.0
+ *
+ * @return string|bool Access token if it exists, false otherwise.
+ */
+ public function get_access_token() {
+ $token = $this->get_token();
+ if ( empty( $token['access_token'] ) ) {
+ return false;
+ }
+ return $token['access_token'];
+ }
+
+ /**
+ * Sets the current user's OAuth access token.
+ *
+ * @since 1.0.0
+ * @deprecated 1.39.0 Use `OAuth_Client::set_token` instead.
+ *
+ * @param string $access_token New access token.
+ * @param int $expires_in TTL of the access token in seconds.
+ * @param int $created Optional. Timestamp when the token was created, in GMT. Default is the current time.
+ * @return bool True on success, false on failure.
+ */
+ public function set_access_token( $access_token, $expires_in, $created = 0 ) {
+ _deprecated_function( __METHOD__, '1.39.0', self::class . '::set_token' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
+
+ return $this->set_token(
+ array(
+ 'access_token' => $access_token,
+ 'expires_in' => $expires_in,
+ 'created' => $created,
+ )
+ );
+ }
+
+ /**
+ * Gets the current user's OAuth refresh token.
+ *
+ * @since 1.0.0
+ * @deprecated 1.39.0 Use `OAuth_Client::get_token` instead.
+ *
+ * @return string|bool Refresh token if it exists, false otherwise.
+ */
+ public function get_refresh_token() {
+ _deprecated_function( __METHOD__, '1.39.0', self::class . '::get_token' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
+
+ $token = $this->get_token();
+ if ( empty( $token['refresh_token'] ) ) {
+ return false;
+ }
+ return $token['refresh_token'];
+ }
+
+ /**
+ * Sets the current user's OAuth refresh token.
+ *
+ * @since 1.0.0
+ * @deprecated 1.39.0 Use `OAuth_Client::set_token` instead.
+ *
+ * @param string $refresh_token New refresh token.
+ * @return bool True on success, false on failure.
+ */
+ public function set_refresh_token( $refresh_token ) {
+ _deprecated_function( __METHOD__, '1.39.0', self::class . '::set_token' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
+
+ $token = $this->get_token();
+ $token['refresh_token'] = $refresh_token;
+ return $this->set_token( $token );
+ }
+
+ /**
+ * Gets the authentication URL.
+ *
+ * @since 1.0.0
+ * @since 1.9.0 Added $additional_scopes parameter.
+ * @since 1.34.1 Updated handling of $additional_scopes to restore rewritten scope.
+ *
+ * @param string $redirect_url Redirect URL after authentication.
+ * @param string[] $additional_scopes List of additional scopes to request.
+ * @return string Authentication URL.
+ */
+ public function get_authentication_url( $redirect_url = '', $additional_scopes = array() ) {
+ if ( empty( $redirect_url ) ) {
+ $redirect_url = $this->context->admin_url( 'splash' );
+ }
+ if ( is_array( $additional_scopes ) ) {
+ // Rewrite each scope to convert `gttp` -> `http`, if it starts with this placeholder scheme.
+ // This restores the original scope rewritten by getConnectURL.
+ $additional_scopes = array_map(
+ function ( $scope ) {
+ return preg_replace( '/^gttp(s)?:/', 'http$1:', $scope );
+ },
+ $additional_scopes
+ );
+ } else {
+ $additional_scopes = array();
+ }
+
+ $url_query = URL::parse( $redirect_url, PHP_URL_QUERY );
+
+ if ( $url_query ) {
+ parse_str( $url_query, $query_args );
+ }
+
+ if ( empty( $query_args['notification'] ) ) {
+ $redirect_url = add_query_arg( array( 'notification' => 'authentication_success' ), $redirect_url );
+ }
+ // Ensure we remove error query string.
+ $redirect_url = remove_query_arg( 'error', $redirect_url );
+
+ $this->user_options->set( self::OPTION_REDIRECT_URL, $redirect_url );
+
+ // Ensure the latest required scopes are requested.
+ $scopes = array_merge( $this->get_required_scopes(), $additional_scopes );
+ $this->get_client()->setScopes( array_unique( $scopes ) );
+
+ return add_query_arg(
+ $this->google_proxy->get_metadata_fields(),
+ $this->get_client()->createAuthUrl()
+ );
+ }
+
+ /**
+ * Redirects the current user to the Google OAuth consent screen, or processes a response from that consent
+ * screen if present.
+ *
+ * @since 1.0.0
+ * @since 1.49.0 Uses the new `Google_Proxy::setup_url_v2` method when the `serviceSetupV2` feature flag is enabled.
+ */
+ public function authorize_user() {
+ $code = $this->context->input()->filter( INPUT_GET, 'code', FILTER_SANITIZE_STRING );
+ $error_code = $this->context->input()->filter( INPUT_GET, 'error', FILTER_SANITIZE_STRING );
+ // If the OAuth redirects with an error code, handle it.
+ if ( ! empty( $error_code ) ) {
+ $this->user_options->set( self::OPTION_ERROR_CODE, $error_code );
+ wp_safe_redirect( $this->authorize_user_redirect_url() );
+ exit();
+ }
+
+ if ( ! $this->credentials->has() ) {
+ $this->user_options->set( self::OPTION_ERROR_CODE, 'oauth_credentials_not_exist' );
+ wp_safe_redirect( $this->authorize_user_redirect_url() );
+ exit();
+ }
+
+ try {
+ $token_response = $this->get_client()->fetchAccessTokenWithAuthCode( $code );
+ } catch ( Google_Proxy_Code_Exception $e ) {
+ // Redirect back to proxy immediately with the access code.
+ $credentials = $this->credentials->get();
+ $params = array(
+ 'code' => $e->getAccessCode(),
+ 'site_id' => ! empty( $credentials['oauth2_client_id'] ) ? $credentials['oauth2_client_id'] : '',
+ );
+ $params = $this->google_proxy->add_setup_step_from_error_code( $params, $e->getMessage() );
+ $url = $this->google_proxy->setup_url( $params );
+
+ wp_safe_redirect( $url );
+ exit();
+ } catch ( Exception $e ) {
+ $this->handle_fetch_token_exception( $e );
+ wp_safe_redirect( $this->authorize_user_redirect_url() );
+ exit();
+ }
+
+ if ( ! isset( $token_response['access_token'] ) ) {
+ $this->user_options->set( self::OPTION_ERROR_CODE, 'access_token_not_received' );
+ wp_safe_redirect( $this->authorize_user_redirect_url() );
+ exit();
+ }
+
+ // Update the access token and refresh token.
+ $this->set_token( $token_response );
+
+ // Store the previously granted scopes for use in the action below before they're updated.
+ $previous_scopes = $this->get_granted_scopes();
+
+ // Update granted scopes.
+ if ( isset( $token_response['scope'] ) ) {
+ $scopes = explode( ' ', sanitize_text_field( $token_response['scope'] ) );
+ } elseif ( $this->context->input()->filter( INPUT_GET, 'scope' ) ) {
+ $scope = $this->context->input()->filter( INPUT_GET, 'scope', FILTER_SANITIZE_STRING );
+ $scopes = explode( ' ', $scope );
+ } else {
+ $scopes = $this->get_required_scopes();
+ }
+ $scopes = array_filter(
+ $scopes,
+ function( $scope ) {
+ if ( ! is_string( $scope ) ) {
+ return false;
+ }
+ if ( in_array( $scope, array( 'openid', 'profile', 'email' ), true ) ) {
+ return true;
+ }
+ return 0 === strpos( $scope, 'https://www.googleapis.com/auth/' );
+ }
+ );
+ $this->set_granted_scopes( $scopes );
+
+ $this->refresh_profile_data( 2 * MINUTE_IN_SECONDS );
+
+ /**
+ * Fires when the current user has just been authorized to access Google APIs.
+ *
+ * In other words, this action fires whenever Site Kit has just obtained a new set of access token and
+ * refresh token for the current user, which may happen to set up the initial connection or to request
+ * access to further scopes.
+ *
+ * @since 1.3.0
+ * @since 1.6.0 The $token_response parameter was added.
+ * @since 1.30.0 The $scopes and $previous_scopes parameters were added.
+ *
+ * @param array $token_response Token response data.
+ * @param string[] $scopes List of scopes.
+ * @param string[] $previous_scopes List of previous scopes.
+ */
+ do_action( 'googlesitekit_authorize_user', $token_response, $scopes, $previous_scopes );
+
+ // This must happen after googlesitekit_authorize_user as the permissions checks depend on
+ // values set which affect the meta capability mapping.
+ $current_user_id = get_current_user_id();
+ if ( $this->should_update_owner_id( $current_user_id ) ) {
+ $this->owner_id->set( $current_user_id );
+ }
+
+ $redirect_url = $this->user_options->get( self::OPTION_REDIRECT_URL );
+
+ if ( $redirect_url ) {
+ $url_query = URL::parse( $redirect_url, PHP_URL_QUERY );
+
+ if ( $url_query ) {
+ parse_str( $url_query, $query_args );
+ }
+
+ $reauth = isset( $query_args['reAuth'] ) && 'true' === $query_args['reAuth'];
+
+ if ( false === $reauth && empty( $query_args['notification'] ) ) {
+ $redirect_url = add_query_arg( array( 'notification' => 'authentication_success' ), $redirect_url );
+ }
+ $this->user_options->delete( self::OPTION_REDIRECT_URL );
+ } else {
+ // No redirect_url is set, use default page.
+ $redirect_url = $this->context->admin_url( 'splash', array( 'notification' => 'authentication_success' ) );
+ }
+
+ wp_safe_redirect( $redirect_url );
+ exit();
+ }
+
+ /**
+ * Fetches and updates the user profile data for the currently authenticated Google account.
+ *
+ * @since 1.1.4
+ * @since 1.13.0 Added $retry_after param, also made public.
+ *
+ * @param int $retry_after Optional. Number of seconds to retry data fetch if unsuccessful.
+ */
+ public function refresh_profile_data( $retry_after = 0 ) {
+ try {
+ $people_service = new Google_Service_PeopleService( $this->get_client() );
+ $response = $people_service->people->get( 'people/me', array( 'personFields' => 'emailAddresses,photos,names' ) );
+
+ if ( isset( $response['emailAddresses'][0]['value'], $response['photos'][0]['url'], $response['names'][0]['displayName'] ) ) {
+ $this->profile->set(
+ array(
+ 'email' => $response['emailAddresses'][0]['value'],
+ 'photo' => $response['photos'][0]['url'],
+ 'full_name' => $response['names'][0]['displayName'],
+ )
+ );
+ }
+ // Clear any scheduled job to refresh this data later, if any.
+ wp_clear_scheduled_hook(
+ self::CRON_REFRESH_PROFILE_DATA,
+ array( $this->user_options->get_user_id() )
+ );
+ } catch ( Exception $e ) {
+ $retry_after = absint( $retry_after );
+ if ( $retry_after < 1 ) {
+ return;
+ }
+ wp_schedule_single_event(
+ time() + $retry_after,
+ self::CRON_REFRESH_PROFILE_DATA,
+ array( $this->user_options->get_user_id() )
+ );
+ }
+ }
+
+ /**
+ * Determines whether the authentication proxy is used.
+ *
+ * In order to streamline the setup and authentication flow, the plugin uses a proxy mechanism based on an external
+ * service. This can be overridden by providing actual GCP credentials with the {@see 'googlesitekit_oauth_secret'}
+ * filter.
+ *
+ * @since 1.0.0
+ * @deprecated 1.9.0
+ *
+ * @return bool True if proxy authentication is used, false otherwise.
+ */
+ public function using_proxy() {
+ _deprecated_function( __METHOD__, '1.9.0', Credentials::class . '::using_proxy' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
+
+ return $this->credentials->using_proxy();
+ }
+
+ /**
+ * Determines whether the current owner ID must be changed or not.
+ *
+ * @since 1.16.0
+ *
+ * @param int $user_id Current user ID.
+ * @return bool TRUE if owner needs to be changed, otherwise FALSE.
+ */
+ private function should_update_owner_id( $user_id ) {
+ $current_owner_id = $this->owner_id->get();
+ if ( $current_owner_id === $user_id ) {
+ return false;
+ }
+
+ if ( ! empty( $current_owner_id ) && user_can( $current_owner_id, Permissions::MANAGE_OPTIONS ) ) {
+ return false;
+ }
+
+ if ( ! user_can( $user_id, Permissions::MANAGE_OPTIONS ) ) {
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ * Returns the permissions URL to the authentication proxy.
+ *
+ * This only returns a URL if the user already has an access token set.
+ *
+ * @since 1.0.0
+ *
+ * @return string URL to the permissions page on the authentication proxy on success,
+ * or empty string on failure.
+ */
+ public function get_proxy_permissions_url() {
+ $access_token = $this->get_access_token();
+ if ( empty( $access_token ) ) {
+ return '';
+ }
+
+ return $this->google_proxy->permissions_url(
+ $this->credentials,
+ array( 'token' => $access_token )
+ );
+ }
+
+ /**
+ * Deletes the current user's token and all associated data.
+ *
+ * @since 1.0.3
+ */
+ protected function delete_token() {
+ parent::delete_token();
+
+ $this->user_options->delete( self::OPTION_REDIRECT_URL );
+ $this->user_options->delete( self::OPTION_ADDITIONAL_AUTH_SCOPES );
+ }
+
+ /**
+ * Return the URL for the user to view the dashboard/splash
+ * page based on their permissions.
+ *
+ * @since 1.77.0
+ */
+ private function authorize_user_redirect_url() {
+ return current_user_can( Permissions::VIEW_DASHBOARD )
+ ? $this->context->admin_url( 'dashboard' )
+ : $this->context->admin_url( 'splash' );
+ }
+
+ /**
+ * Adds a user to the active consumers list.
+ *
+ * @since 1.87.0
+ *
+ * @param WP_User $user User object.
+ */
+ public function add_active_consumer( WP_User $user ) {
+ $this->active_consumers->add( $user->ID, $user->roles );
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Authentication/Clients/OAuth_Client_Base.php b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Clients/OAuth_Client_Base.php
new file mode 100644
index 000000000..056ccbc8f
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Clients/OAuth_Client_Base.php
@@ -0,0 +1,352 @@
+context = $context;
+ $this->options = $options ?: new Options( $this->context );
+ $this->user_options = $user_options ?: new User_Options( $this->context );
+ $this->credentials = $credentials ?: new Credentials( new Encrypted_Options( $this->options ) );
+ $this->google_proxy = $google_proxy ?: new Google_Proxy( $this->context );
+ $this->profile = $profile ?: new Profile( $this->user_options );
+ $this->token = $token ?: new Token( $this->user_options );
+ }
+
+ /**
+ * Gets the Google client object.
+ *
+ * @since 1.39.0
+ * @since 1.2.0 Now always returns a Google_Site_Kit_Client.
+ *
+ * @return Google_Site_Kit_Client Google client object.
+ */
+ public function get_client() {
+ if ( ! $this->google_client instanceof Google_Site_Kit_Client ) {
+ $credentials = $this->credentials->get();
+
+ $this->google_client = Client_Factory::create_client(
+ array(
+ 'client_id' => $credentials['oauth2_client_id'],
+ 'client_secret' => $credentials['oauth2_client_secret'],
+ 'redirect_uri' => $this->get_redirect_uri(),
+ 'token' => $this->get_token(),
+ 'token_callback' => array( $this, 'set_token' ),
+ 'token_exception_callback' => function( Exception $e ) {
+ $this->handle_fetch_token_exception( $e );
+ },
+ 'required_scopes' => $this->get_required_scopes(),
+ 'login_hint_email' => $this->profile->has() ? $this->profile->get()['email'] : '',
+ 'using_proxy' => $this->credentials->using_proxy(),
+ 'proxy_url' => $this->google_proxy->url(),
+ )
+ );
+ }
+
+ return $this->google_client;
+ }
+
+ /**
+ * Gets the list of currently required Google OAuth scopes.
+ *
+ * @since 1.39.0
+ * @see https://developers.google.com/identity/protocols/googlescopes
+ *
+ * @return array List of Google OAuth scopes.
+ */
+ public function get_required_scopes() {
+ /**
+ * Filters the list of required Google OAuth scopes.
+ *
+ * See all Google oauth scopes here: https://developers.google.com/identity/protocols/googlescopes
+ *
+ * @since 1.39.0
+ *
+ * @param array $scopes List of scopes.
+ */
+ $scopes = (array) apply_filters( 'googlesitekit_auth_scopes', array() );
+
+ return array_unique(
+ array_merge(
+ // Default scopes that are always required.
+ array(
+ 'openid',
+ 'https://www.googleapis.com/auth/userinfo.profile',
+ 'https://www.googleapis.com/auth/userinfo.email',
+ ),
+ $scopes
+ )
+ );
+ }
+
+ /**
+ * Gets the list of currently granted Google OAuth scopes for the current user.
+ *
+ * @since 1.39.0
+ * @see https://developers.google.com/identity/protocols/googlescopes
+ *
+ * @return string[] List of Google OAuth scopes.
+ */
+ public function get_granted_scopes() {
+ return $this->user_options->get( self::OPTION_AUTH_SCOPES ) ?: array();
+ }
+
+ /**
+ * Sets the list of currently granted Google OAuth scopes for the current user.
+ *
+ * @since 1.39.0
+ * @see https://developers.google.com/identity/protocols/googlescopes
+ *
+ * @param string[] $scopes List of Google OAuth scopes.
+ */
+ public function set_granted_scopes( $scopes ) {
+ $required_scopes = $this->get_required_scopes();
+ $scopes = array_values( array_unique( array_intersect( $scopes, $required_scopes ) ) );
+
+ $this->user_options->set( self::OPTION_AUTH_SCOPES, $scopes );
+ }
+
+ /**
+ * Gets the current user's full OAuth token data, including access token and optional refresh token.
+ *
+ * @since 1.39.0
+ *
+ * @return array Associative array with 'access_token', 'expires_in', 'created', and 'refresh_token' keys, or empty
+ * array if no token available.
+ */
+ public function get_token() {
+ return $this->token->get();
+ }
+
+ /**
+ * Sets the current user's full OAuth token data, including access token and optional refresh token.
+ *
+ * @since 1.39.0
+ *
+ * @param array $token {
+ * Full token data, optionally including the refresh token.
+ *
+ * @type string $access_token Required. The access token.
+ * @type int $expires_in Number of seconds in which the token expires. Default 3600 (1 hour).
+ * @type int $created Timestamp in seconds when the token was created. Default is the current time.
+ * @type string $refresh_token The refresh token, if relevant. If passed, it is set as well.
+ * }
+ * @return bool True on success, false on failure.
+ */
+ public function set_token( array $token ) {
+ // Remove the error code from the user options so it doesn't
+ // appear again.
+ $this->user_options->delete( OAuth_Client::OPTION_ERROR_CODE );
+
+ return $this->token->set( $token );
+ }
+
+ /**
+ * Deletes the current user's token and all associated data.
+ *
+ * @since 1.0.3
+ */
+ protected function delete_token() {
+ $this->token->delete();
+
+ $this->user_options->delete( self::OPTION_AUTH_SCOPES );
+ }
+
+ /**
+ * Converts the given error code to a user-facing message.
+ *
+ * @since 1.39.0
+ *
+ * @param string $error_code Error code.
+ * @return string Error message.
+ */
+ public function get_error_message( $error_code ) {
+ switch ( $error_code ) {
+ case 'access_denied':
+ return __( 'The Site Kit setup was interrupted because you did not grant the necessary permissions.', 'google-site-kit' );
+ case 'access_token_not_received':
+ return __( 'Unable to receive access token because of an unknown error.', 'google-site-kit' );
+ case 'cannot_log_in':
+ return __( 'Internal error that the Google login redirect failed.', 'google-site-kit' );
+ case 'invalid_client':
+ return __( 'Unable to receive access token because of an invalid client.', 'google-site-kit' );
+ case 'invalid_code':
+ return __( 'Unable to receive access token because of an empty authorization code.', 'google-site-kit' );
+ case 'invalid_grant':
+ return __( 'Unable to receive access token because of an invalid authorization code or refresh token.', 'google-site-kit' );
+ case 'invalid_request':
+ return __( 'Unable to receive access token because of an invalid OAuth request.', 'google-site-kit' );
+ case 'missing_delegation_consent':
+ return __( 'Looks like your site is not allowed access to Google account data and can’t display stats in the dashboard.', 'google-site-kit' );
+ case 'missing_search_console_property':
+ return __( 'Looks like there is no Search Console property for your site.', 'google-site-kit' );
+ case 'missing_verification':
+ return __( 'Looks like the verification token for your site is missing.', 'google-site-kit' );
+ case 'oauth_credentials_not_exist':
+ return __( 'Unable to authenticate Site Kit, as no client credentials exist.', 'google-site-kit' );
+ case 'refresh_token_not_exist':
+ return __( 'Unable to refresh access token, as no refresh token exists.', 'google-site-kit' );
+ case 'unauthorized_client':
+ return __( 'Unable to receive access token because of an unauthorized client.', 'google-site-kit' );
+ case 'unsupported_grant_type':
+ return __( 'Unable to receive access token because of an unsupported grant type.', 'google-site-kit' );
+ default:
+ /* translators: %s: error code from API */
+ return sprintf( __( 'Unknown Error (code: %s).', 'google-site-kit' ), $error_code );
+ }
+ }
+
+ /**
+ * Handles an exception thrown when fetching an access token.
+ *
+ * @since 1.2.0
+ *
+ * @param Exception $e Exception thrown.
+ */
+ protected function handle_fetch_token_exception( Exception $e ) {
+ $error_code = $e->getMessage();
+
+ // Revoke and delete user connection data on 'invalid_grant'.
+ // This typically happens during refresh if the refresh token is invalid or expired.
+ if ( 'invalid_grant' === $error_code ) {
+ $this->delete_token();
+ }
+
+ $this->user_options->set( self::OPTION_ERROR_CODE, $error_code );
+ if ( $e instanceof Google_Proxy_Code_Exception ) {
+ $this->user_options->set( self::OPTION_PROXY_ACCESS_CODE, $e->getAccessCode() );
+ }
+ }
+
+ /**
+ * Gets the OAuth redirect URI that listens to the callback request.
+ *
+ * @since 1.39.0
+ *
+ * @return string OAuth redirect URI.
+ */
+ protected function get_redirect_uri() {
+ return add_query_arg( 'oauth2callback', '1', admin_url( 'index.php' ) );
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Authentication/Connected_Proxy_URL.php b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Connected_Proxy_URL.php
new file mode 100644
index 000000000..7429c6365
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Connected_Proxy_URL.php
@@ -0,0 +1,54 @@
+get_sanitize_callback();
+ $normalized = $sanitize( $url );
+ return $normalized === $this->get();
+ }
+
+ /**
+ * Gets the callback for sanitizing the setting's value before saving.
+ *
+ * @since 1.17.0
+ *
+ * @return callable A sanitizing function.
+ */
+ protected function get_sanitize_callback() {
+ return 'trailingslashit';
+ }
+
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Authentication/Credentials.php b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Credentials.php
new file mode 100644
index 000000000..ddf713fc0
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Credentials.php
@@ -0,0 +1,137 @@
+?oauth2callback=1 (this must be public)
+ * - Click the 'Download JSON' button to download the JSON file that can be copied and pasted into the filter
+ */
+ $credentials = apply_filters( 'googlesitekit_oauth_secret', '' );
+
+ if ( is_string( $credentials ) && trim( $credentials ) ) {
+ $credentials = json_decode( $credentials, true );
+ }
+
+ if ( isset( $credentials['web']['client_id'], $credentials['web']['client_secret'] ) ) {
+ return $this->parse_defaults(
+ array(
+ 'oauth2_client_id' => $credentials['web']['client_id'],
+ 'oauth2_client_secret' => $credentials['web']['client_secret'],
+ )
+ );
+ }
+
+ return $this->parse_defaults(
+ $this->options->get( self::OPTION )
+ );
+ }
+
+ /**
+ * Checks whether Site Kit has been setup with client ID and secret.
+ *
+ * @since 1.0.0
+ *
+ * @return bool True if credentials are set, false otherwise.
+ */
+ public function has() {
+ $credentials = (array) $this->get();
+ if ( ! empty( $credentials ) && ! empty( $credentials['oauth2_client_id'] ) && ! empty( $credentials['oauth2_client_secret'] ) ) {
+ return true;
+ }
+
+ return false;
+ }
+
+ /**
+ * Parses Credentials data and merges with its defaults.
+ *
+ * @since 1.0.0
+ *
+ * @param mixed $data Credentials data.
+ * @return array Parsed $data.
+ */
+ private function parse_defaults( $data ) {
+ $defaults = $this->get_default();
+
+ if ( ! is_array( $data ) ) {
+ return $defaults;
+ }
+
+ return wp_parse_args( $data, $defaults );
+ }
+
+ /**
+ * Gets the default value.
+ *
+ * @since 1.2.0
+ *
+ * @return array
+ */
+ protected function get_default() {
+ return array(
+ 'oauth2_client_id' => '',
+ 'oauth2_client_secret' => '',
+ );
+ }
+
+ /**
+ * Determines whether the authentication proxy is used.
+ *
+ * In order to streamline the setup and authentication flow, the plugin uses a proxy mechanism based on an external
+ * service. This can be overridden by providing actual GCP credentials with the {@see 'googlesitekit_oauth_secret'}
+ * filter.
+ *
+ * @since 1.9.0
+ *
+ * @return bool True if proxy authentication is used, false otherwise.
+ */
+ public function using_proxy() {
+ $creds = $this->get();
+
+ if ( ! $this->has() ) {
+ return true;
+ }
+
+ return (bool) preg_match( '/\.apps\.sitekit\.withgoogle\.com$/', $creds['oauth2_client_id'] );
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Authentication/Disconnected_Reason.php b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Disconnected_Reason.php
new file mode 100644
index 000000000..6a3ed5a2f
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Disconnected_Reason.php
@@ -0,0 +1,44 @@
+access_code = $access_code;
+ }
+
+ /**
+ * Gets the temporary access code for an undelegated proxy token.
+ *
+ * @since 1.0.0
+ *
+ * @return string Temporary code.
+ */
+ public function getAccessCode() {
+ return $this->access_code;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Authentication/Exception/Insufficient_Scopes_Exception.php b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Exception/Insufficient_Scopes_Exception.php
new file mode 100644
index 000000000..dd0d3561b
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Exception/Insufficient_Scopes_Exception.php
@@ -0,0 +1,91 @@
+set_scopes( $scopes );
+ }
+
+ /**
+ * Sets the missing scopes that raised this exception.
+ *
+ * @since 1.9.0
+ *
+ * @param array $scopes OAuth scopes that are required but not yet granted.
+ */
+ public function set_scopes( array $scopes ) {
+ $this->scopes = $scopes;
+ }
+
+ /**
+ * Gets the missing scopes that raised this exception.
+ *
+ * @since 1.9.0
+ *
+ * @return array
+ */
+ public function get_scopes() {
+ return $this->scopes;
+ }
+
+ /**
+ * Gets the WP_Error representation of this exception.
+ *
+ * @since 1.9.0
+ *
+ * @return WP_Error
+ */
+ public function to_wp_error() {
+ return new WP_Error(
+ static::WP_ERROR_CODE,
+ $this->getMessage(),
+ array(
+ 'status' => 403, // Forbidden.
+ 'scopes' => $this->scopes,
+ )
+ );
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Authentication/Exception/Missing_Verification_Exception.php b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Exception/Missing_Verification_Exception.php
new file mode 100644
index 000000000..58ed78f7d
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Exception/Missing_Verification_Exception.php
@@ -0,0 +1,22 @@
+context = $context;
+ }
+
+ /**
+ * Sets required scopes to use when the site is registering at proxy.
+ *
+ * @since 1.68.0
+ *
+ * @param array $scopes List of scopes.
+ */
+ public function with_scopes( array $scopes ) {
+ $this->required_scopes = $scopes;
+ }
+
+ /**
+ * Returns the application name: a combination of the namespace and version.
+ *
+ * @since 1.27.0
+ *
+ * @return string The application name.
+ */
+ public static function get_application_name() {
+ $platform = self::get_platform();
+ return $platform . '/google-site-kit/' . GOOGLESITEKIT_VERSION;
+ }
+
+ /**
+ * Gets the list of features to declare support for when setting up with the proxy.
+ *
+ * @since 1.27.0
+ *
+ * @return array Array of supported features.
+ */
+ private function get_supports() {
+ $supports = array(
+ 'credentials_retrieval',
+ 'short_verification_token',
+ // Informs the proxy the user input feature is generally supported.
+ 'user_input_flow',
+ );
+
+ $home_path = URL::parse( $this->context->get_canonical_home_url(), PHP_URL_PATH );
+ if ( ! $home_path || '/' === $home_path ) {
+ $supports[] = 'file_verification';
+ }
+
+ // Informs the proxy the user input feature is already enabled locally.
+ // TODO: Remove once the feature is fully rolled out.
+ if ( Feature_Flags::enabled( 'userInput' ) ) {
+ $supports[] = 'user_input_flow_feature';
+ }
+
+ return $supports;
+ }
+
+ /**
+ * Returns the setup URL to the authentication proxy.
+ *
+ * @since 1.49.0
+ * @since 1.71.0 Uses the V2 setup flow by default.
+ *
+ * @param array $query_params Query parameters to include in the URL.
+ * @return string URL to the setup page on the authentication proxy.
+ *
+ * @throws Exception Thrown if called without the required query parameters.
+ */
+ public function setup_url( array $query_params = array() ) {
+ if ( empty( $query_params['code'] ) ) {
+ throw new Exception( __( 'Missing code parameter for setup URL.', 'google-site-kit' ) );
+ }
+ if ( empty( $query_params['site_id'] ) && empty( $query_params['site_code'] ) ) {
+ throw new Exception( __( 'Missing site_id or site_code parameter for setup URL.', 'google-site-kit' ) );
+ }
+
+ return add_query_arg( $query_params, $this->url( self::SETUP_URI ) );
+ }
+
+ /**
+ * Conditionally adds the `step` parameter to the passed query parameters, depending on the given error code.
+ *
+ * @since 1.49.0
+ *
+ * @param array $query_params Query parameters.
+ * @param string $error_code Error code.
+ * @return array Query parameters with `step` included, depending on the error code.
+ */
+ public function add_setup_step_from_error_code( $query_params, $error_code ) {
+ switch ( $error_code ) {
+ case 'missing_verification':
+ $query_params['step'] = 'verification';
+ break;
+ case 'missing_delegation_consent':
+ $query_params['step'] = 'delegation_consent';
+ break;
+ case 'missing_search_console_property':
+ $query_params['step'] = 'search_console_property';
+ break;
+ }
+ return $query_params;
+ }
+
+ /**
+ * Returns the permissions URL to the authentication proxy.
+ *
+ * This only returns a URL if the user already has an access token set.
+ *
+ * @since 1.27.0
+ *
+ * @param Credentials $credentials Credentials instance.
+ * @param array $query_args Optional. Additional query parameters.
+ * @return string URL to the permissions page on the authentication proxy on success, or an empty string on failure.
+ */
+ public function permissions_url( Credentials $credentials, array $query_args = array() ) {
+ if ( $credentials->has() ) {
+ $creds = $credentials->get();
+ $query_args['site_id'] = $creds['oauth2_client_id'];
+ }
+
+ $query_args['application_name'] = rawurlencode( self::get_application_name() );
+ $query_args['hl'] = $this->context->get_locale( 'user' );
+
+ return add_query_arg( $query_args, $this->url( self::PERMISSIONS_URI ) );
+ }
+
+ /**
+ * Gets a URL to the proxy with optional path.
+ *
+ * @since 1.1.2
+ *
+ * @param string $path Optional. Path to append to the base URL.
+ * @return string Complete proxy URL.
+ */
+ public function url( $path = '' ) {
+ $url = defined( 'GOOGLESITEKIT_PROXY_URL' ) && self::STAGING_BASE_URL === GOOGLESITEKIT_PROXY_URL
+ ? self::STAGING_BASE_URL
+ : self::PRODUCTION_BASE_URL;
+
+ $url = untrailingslashit( $url );
+
+ if ( $path && is_string( $path ) ) {
+ $url .= '/' . ltrim( $path, '/' );
+ }
+
+ return $url;
+ }
+
+ /**
+ * Sends a POST request to the Google Proxy server.
+ *
+ * @since 1.27.0
+ *
+ * @param string $uri Endpoint to send the request to.
+ * @param Credentials $credentials Credentials instance.
+ * @param array $args Array of request arguments.
+ * @return array|WP_Error The response as an associative array or WP_Error on failure.
+ */
+ private function request( $uri, $credentials, array $args = array() ) {
+ $request_args = array(
+ 'headers' => ! empty( $args['headers'] ) && is_array( $args['headers'] ) ? $args['headers'] : array(),
+ 'body' => ! empty( $args['body'] ) && is_array( $args['body'] ) ? $args['body'] : array(),
+ 'timeout' => isset( $args['timeout'] ) ? $args['timeout'] : 15,
+ );
+
+ if ( $credentials && $credentials instanceof Credentials ) {
+ if ( ! $credentials->has() ) {
+ return new WP_Error(
+ 'oauth_credentials_not_exist',
+ __( 'OAuth credentials haven\'t been found.', 'google-site-kit' ),
+ array( 'status' => 401 )
+ );
+ }
+
+ $creds = $credentials->get();
+ $request_args['body']['site_id'] = $creds['oauth2_client_id'];
+ $request_args['body']['site_secret'] = $creds['oauth2_client_secret'];
+ }
+
+ if ( ! empty( $args['access_token'] ) && is_string( $args['access_token'] ) ) {
+ $request_args['headers']['Authorization'] = 'Bearer ' . $args['access_token'];
+ }
+
+ if ( isset( $args['mode'] ) && 'async' === $args['mode'] ) {
+ $request_args['timeout'] = 0.01;
+ $request_args['blocking'] = false;
+ }
+
+ if ( ! empty( $args['json_request'] ) ) {
+ $request_args['headers']['Content-Type'] = 'application/json';
+ $request_args['body'] = wp_json_encode( $request_args['body'] );
+ }
+
+ $url = $this->url( $uri );
+ $response = wp_remote_post( $url, $request_args );
+ if ( is_wp_error( $response ) ) {
+ return $response;
+ }
+
+ $code = wp_remote_retrieve_response_code( $response );
+ $body = wp_remote_retrieve_body( $response );
+ $body = json_decode( $body, true );
+ if ( $code < 200 || 299 < $code ) {
+ $message = is_array( $body ) && ! empty( $body['error'] ) ? $body['error'] : '';
+ return new WP_Error( 'request_failed', $message, array( 'status' => $code ) );
+ }
+
+ if ( ! empty( $args['return'] ) && 'response' === $args['return'] ) {
+ return $response;
+ }
+
+ if ( is_null( $body ) ) {
+ return new WP_Error(
+ 'failed_to_parse_response',
+ __( 'Failed to parse response.', 'google-site-kit' ),
+ array( 'status' => 500 )
+ );
+ }
+
+ return $body;
+ }
+
+ /**
+ * Gets site fields.
+ *
+ * @since 1.5.0
+ *
+ * @return array Associative array of $query_arg => $value pairs.
+ */
+ public function get_site_fields() {
+ return array(
+ 'name' => wp_specialchars_decode( get_bloginfo( 'name' ), ENT_QUOTES ),
+ 'url' => $this->context->get_canonical_home_url(),
+ 'redirect_uri' => add_query_arg( 'oauth2callback', 1, admin_url( 'index.php' ) ),
+ 'action_uri' => admin_url( 'index.php' ),
+ 'return_uri' => $this->context->admin_url( 'splash' ),
+ 'analytics_redirect_uri' => add_query_arg( 'gatoscallback', 1, admin_url( 'index.php' ) ),
+ );
+ }
+
+ /**
+ * Gets metadata fields.
+ *
+ * @since 1.68.0
+ *
+ * @return array Metadata fields array.
+ */
+ public function get_metadata_fields() {
+ $metadata = array(
+ 'supports' => implode( ' ', $this->get_supports() ),
+ 'nonce' => wp_create_nonce( self::NONCE_ACTION ),
+ 'mode' => '',
+ 'hl' => $this->context->get_locale( 'user' ),
+ 'application_name' => self::get_application_name(),
+ 'service_version' => 'v2',
+ );
+
+ /**
+ * Filters the setup mode.
+ *
+ * @since 1.68.0
+ *
+ * @param string $mode An initial setup mode.
+ */
+ $metadata['mode'] = apply_filters( 'googlesitekit_proxy_setup_mode', $metadata['mode'] );
+
+ return $metadata;
+ }
+
+ /**
+ * Fetch site fields
+ *
+ * @since 1.22.0
+ *
+ * @param Credentials $credentials Credentials instance.
+ * @return array|WP_Error The response as an associative array or WP_Error on failure.
+ */
+ public function fetch_site_fields( Credentials $credentials ) {
+ return $this->request( self::OAUTH2_SITE_URI, $credentials );
+ }
+
+ /**
+ * Are site fields synced
+ *
+ * @since 1.22.0
+ *
+ * @param Credentials $credentials Credentials instance.
+ *
+ * @return boolean|WP_Error Boolean do the site fields match or WP_Error on failure.
+ */
+ public function are_site_fields_synced( Credentials $credentials ) {
+ $site_fields = $this->fetch_site_fields( $credentials );
+ if ( is_wp_error( $site_fields ) ) {
+ return $site_fields;
+ }
+
+ $get_site_fields = $this->get_site_fields();
+ foreach ( $get_site_fields as $key => $site_field ) {
+ if ( ! array_key_exists( $key, $site_fields ) || $site_fields[ $key ] !== $site_field ) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * Gets user fields.
+ *
+ * @since 1.10.0
+ *
+ * @return array Associative array of $query_arg => $value pairs.
+ */
+ public function get_user_fields() {
+ $user_roles = wp_get_current_user()->roles;
+ // If multisite, also consider network administrators.
+ if ( is_multisite() && current_user_can( 'manage_network' ) ) {
+ $user_roles[] = 'network_administrator';
+ }
+ $user_roles = array_unique( $user_roles );
+
+ return array(
+ 'user_roles' => implode( ',', $user_roles ),
+ );
+ }
+
+ /**
+ * Unregisters the site on the proxy.
+ *
+ * @since 1.20.0
+ *
+ * @param Credentials $credentials Credentials instance.
+ * @return array|WP_Error Response data on success, otherwise WP_Error object.
+ */
+ public function unregister_site( Credentials $credentials ) {
+ return $this->request( self::OAUTH2_DELETE_SITE_URI, $credentials );
+ }
+
+ /**
+ * Registers the site on the proxy.
+ *
+ * @since 1.68.0
+ *
+ * @param string $mode Sync mode.
+ * @return string|WP_Error Redirect URL on success, otherwise an error.
+ */
+ public function register_site( $mode = 'async' ) {
+ return $this->send_site_fields( null, $mode );
+ }
+
+ /**
+ * Synchronizes site fields with the proxy.
+ *
+ * @since 1.5.0
+ * @since 1.68.0 Updated the function to return redirect URL.
+ *
+ * @param Credentials $credentials Credentials instance.
+ * @param string $mode Sync mode.
+ * @return string|WP_Error Redirect URL on success, otherwise an error.
+ */
+ public function sync_site_fields( Credentials $credentials, $mode = 'async' ) {
+ return $this->send_site_fields( $credentials, $mode );
+ }
+
+ /**
+ * Sends site fields to the proxy.
+ *
+ * @since 1.68.0
+ *
+ * @param Credentials $credentials Credentials instance.
+ * @param string $mode Sync mode.
+ * @return string|WP_Error Redirect URL on success, otherwise an error.
+ */
+ private function send_site_fields( Credentials $credentials = null, $mode = 'async' ) {
+ $response = $this->request(
+ self::OAUTH2_SITE_URI,
+ $credentials,
+ array(
+ 'return' => 'response',
+ 'mode' => $mode,
+ 'body' => array_merge(
+ $this->get_site_fields(),
+ $this->get_user_fields(),
+ $this->get_metadata_fields(),
+ array(
+ 'scope' => implode( ' ', $this->required_scopes ),
+ )
+ ),
+ )
+ );
+
+ if ( is_wp_error( $response ) ) {
+ return $response;
+ }
+
+ $redirect_to = wp_remote_retrieve_header( $response, self::HEADER_REDIRECT_TO );
+ if ( empty( $redirect_to ) ) {
+ return new WP_Error(
+ 'failed_to_retrive_redirect',
+ __( 'Failed to retrieve redirect URL.', 'google-site-kit' ),
+ array( 'status' => 500 )
+ );
+ }
+
+ return $redirect_to;
+ }
+
+ /**
+ * Synchronizes user input settings with the proxy.
+ *
+ * @since 1.27.0
+ *
+ * @param Credentials $credentials Credentials instance.
+ * @param string $access_token Access token.
+ * @param array|null $settings Settings array.
+ * @return array|WP_Error Response of the wp_remote_post request.
+ */
+ public function sync_user_input_settings( Credentials $credentials, $access_token, $settings = null ) {
+ $body = array();
+ if ( ! empty( $settings ) ) {
+ $body = array(
+ 'settings' => $settings,
+ 'client_user_id' => (string) get_current_user_id(),
+ );
+ }
+
+ return $this->request(
+ self::USER_INPUT_SETTINGS_URI,
+ $credentials,
+ array(
+ 'json_request' => true,
+ 'access_token' => $access_token,
+ 'body' => $body,
+ )
+ );
+ }
+
+ /**
+ * Exchanges a site code for client credentials from the proxy.
+ *
+ * @since 1.1.2
+ *
+ * @param string $site_code Site code identifying the site.
+ * @param string $undelegated_code Undelegated code identifying the undelegated token.
+ * @return array|WP_Error Response data containing site_id and site_secret on success, WP_Error object on failure.
+ */
+ public function exchange_site_code( $site_code, $undelegated_code ) {
+ $response_data = $this->request(
+ self::OAUTH2_SITE_URI,
+ null,
+ array(
+ 'body' => array(
+ 'code' => $undelegated_code,
+ 'site_code' => $site_code,
+ ),
+ )
+ );
+
+ if ( is_wp_error( $response_data ) ) {
+ return $response_data;
+ }
+
+ if ( ! isset( $response_data['site_id'], $response_data['site_secret'] ) ) {
+ return new WP_Error(
+ 'oauth_credentials_not_exist',
+ __( 'OAuth credentials haven\'t been found.', 'google-site-kit' ),
+ array( 'status' => 401 )
+ );
+ }
+
+ return $response_data;
+ }
+
+ /**
+ * Gets remote features.
+ *
+ * @since 1.27.0
+ *
+ * @param Credentials $credentials Credentials instance.
+ * @return array|WP_Error Response of the wp_remote_post request.
+ */
+ public function get_features( Credentials $credentials ) {
+ global $wp_version;
+
+ $platform = self::get_platform();
+ $user_count = count_users();
+ $connectable_user_count = isset( $user_count['avail_roles']['administrator'] ) ? $user_count['avail_roles']['administrator'] : 0;
+
+ $body = array(
+ 'platform' => $platform . '/google-site-kit',
+ 'version' => GOOGLESITEKIT_VERSION,
+ 'platform_version' => $wp_version,
+ 'user_count' => $user_count['total_users'],
+ 'connectable_user_count' => $connectable_user_count,
+ 'connected_user_count' => $this->count_connected_users(),
+ );
+
+ /**
+ * Filters additional context data sent with the body of a remote-controlled features request.
+ *
+ * @since 1.71.0
+ *
+ * @param array $body Context data to be sent with the features request.
+ */
+ $body = apply_filters( 'googlesitekit_features_request_data', $body );
+
+ return $this->request( self::FEATURES_URI, $credentials, array( 'body' => $body ) );
+ }
+
+ /**
+ * Gets the number of users who are connected (i.e. authenticated /
+ * have an access token).
+ *
+ * @since 1.71.0
+ *
+ * @return int Number of WordPress user accounts connected to SiteKit.
+ */
+ public function count_connected_users() {
+ $user_options = new User_Options( $this->context );
+ $connected_users = get_users(
+ array(
+ 'meta_key' => $user_options->get_meta_key( OAuth_Client::OPTION_ACCESS_TOKEN ), // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_key
+ 'meta_compare' => 'EXISTS',
+ 'role' => 'administrator',
+ 'fields' => 'ID',
+ )
+ );
+
+ return count( $connected_users );
+ }
+
+ /**
+ * Gets the platform.
+ *
+ * @since 1.37.0
+ *
+ * @return string WordPress multisite or WordPress.
+ */
+ public static function get_platform() {
+ if ( is_multisite() ) {
+ return 'wordpress-multisite';
+ }
+ return 'wordpress'; // phpcs:ignore WordPress.WP.CapitalPDangit.Misspelled
+ }
+
+ /**
+ * Sends survey trigger ID to the proxy.
+ *
+ * @since 1.35.0
+ *
+ * @param Credentials $credentials Credentials instance.
+ * @param string $access_token Access token.
+ * @param string $trigger_id Token ID.
+ * @return array|WP_Error Response of the wp_remote_post request.
+ */
+ public function send_survey_trigger( Credentials $credentials, $access_token, $trigger_id ) {
+ return $this->request(
+ self::SURVEY_TRIGGER_URI,
+ $credentials,
+ array(
+ 'access_token' => $access_token,
+ 'json_request' => true,
+ 'body' => array(
+ 'trigger_context' => array(
+ 'trigger_id' => $trigger_id,
+ 'language' => get_user_locale(),
+ ),
+ ),
+ )
+ );
+ }
+
+ /**
+ * Sends survey event to the proxy.
+ *
+ * @since 1.35.0
+ *
+ * @param Credentials $credentials Credentials instance.
+ * @param string $access_token Access token.
+ * @param array|\stdClass $session Session object.
+ * @param array|\stdClass $event Event object.
+ * @return array|WP_Error Response of the wp_remote_post request.
+ */
+ public function send_survey_event( Credentials $credentials, $access_token, $session, $event ) {
+ return $this->request(
+ self::SURVEY_EVENT_URI,
+ $credentials,
+ array(
+ 'access_token' => $access_token,
+ 'json_request' => true,
+ 'body' => array(
+ 'session' => $session,
+ 'event' => $event,
+ ),
+ )
+ );
+ }
+
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Authentication/Has_Connected_Admins.php b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Has_Connected_Admins.php
new file mode 100644
index 000000000..eb064dd46
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Has_Connected_Admins.php
@@ -0,0 +1,139 @@
+user_options = $user_options;
+ }
+
+ /**
+ * Registers the setting in WordPress.
+ *
+ * @since 1.14.0
+ */
+ public function register() {
+ parent::register();
+
+ $access_token_meta_key = $this->user_options->get_meta_key( OAuth_Client::OPTION_ACCESS_TOKEN );
+
+ add_action(
+ 'added_user_meta',
+ function ( $mid, $uid, $meta_key ) use ( $access_token_meta_key ) {
+ if ( $meta_key === $access_token_meta_key && user_can( $uid, 'administrator' ) ) {
+ $this->set( true );
+ }
+ },
+ 10,
+ 3
+ );
+
+ add_action(
+ 'deleted_user_meta',
+ function ( $mid, $uid, $meta_key ) use ( $access_token_meta_key ) {
+ if ( $meta_key === $access_token_meta_key ) {
+ $this->delete();
+ }
+ },
+ 10,
+ 3
+ );
+ }
+
+ /**
+ * Gets the value of the setting. If the option is not set yet, it pulls connected
+ * admins from the database and sets the option.
+ *
+ * @since 1.14.0
+ *
+ * @return boolean TRUE if the site kit already has connected admins, otherwise FALSE.
+ */
+ public function get() {
+ // If the option doesn't exist, query the fresh value, set it and return it.
+ if ( ! $this->has() ) {
+ $users = $this->query_connected_admins();
+ $has_connected_admins = count( $users ) > 0;
+
+ $this->set( (int) $has_connected_admins );
+
+ return $has_connected_admins;
+ }
+
+ return (bool) parent::get();
+ }
+
+ /**
+ * Queries connected admins and returns an array of connected admin IDs.
+ *
+ * @since 1.14.0
+ *
+ * @return array The array of connected admin IDs.
+ */
+ protected function query_connected_admins() {
+ return get_users(
+ array(
+ 'meta_key' => $this->user_options->get_meta_key( OAuth_Client::OPTION_ACCESS_TOKEN ), // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_key
+ 'meta_compare' => 'EXISTS',
+ 'role' => 'administrator',
+ 'number' => 1,
+ 'fields' => 'ID',
+ )
+ );
+ }
+
+ /**
+ * Gets the expected value type.
+ *
+ * @since 1.14.0
+ *
+ * @return string The type name.
+ */
+ protected function get_type() {
+ return 'boolean';
+ }
+
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Authentication/Has_Multiple_Admins.php b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Has_Multiple_Admins.php
new file mode 100644
index 000000000..90afcf203
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Has_Multiple_Admins.php
@@ -0,0 +1,74 @@
+transients = $transients;
+ }
+
+ /**
+ * Returns a flag indicating whether the current site has multiple users.
+ *
+ * @since 1.29.0
+ *
+ * @return boolean TRUE if the site kit has multiple admins, otherwise FALSE.
+ */
+ public function get() {
+ $admins_count = $this->transients->get( self::OPTION );
+ if ( false === $admins_count ) {
+ $user_query_args = array(
+ 'number' => 1,
+ 'role__in' => array( 'Administrator' ),
+ 'count_total' => true,
+ );
+
+ $user_query = new WP_User_Query( $user_query_args );
+ $admins_count = $user_query->get_total();
+
+ $this->transients->get( self::OPTION, $admins_count, HOUR_IN_SECONDS );
+ }
+
+ return $admins_count > 1;
+ }
+
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Authentication/Initial_Version.php b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Initial_Version.php
new file mode 100644
index 000000000..104ffe36c
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Initial_Version.php
@@ -0,0 +1,28 @@
+options->get( 'googlesitekit_first_admin' );
+ }
+
+ /**
+ * Gets the callback for sanitizing the setting's value before saving.
+ *
+ * @since 1.16.0
+ *
+ * @return callable The callable sanitize callback.
+ */
+ protected function get_sanitize_callback() {
+ return 'intval';
+ }
+
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Authentication/Profile.php b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Profile.php
new file mode 100644
index 000000000..8aa6dcd0f
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Profile.php
@@ -0,0 +1,85 @@
+user_options = $user_options;
+ }
+
+ /**
+ * Retrieves user profile data.
+ *
+ * @since 1.0.0
+ *
+ * @return array|bool Value set for the profile, or false if not set.
+ */
+ public function get() {
+ return $this->user_options->get( self::OPTION );
+ }
+
+ /**
+ * Saves user profile data.
+ *
+ * @since 1.0.0
+ *
+ * @param array $data User profile data: email and photo.
+ * @return bool True on success, false on failure.
+ */
+ public function set( $data ) {
+ return $this->user_options->set( self::OPTION, $data );
+ }
+
+ /**
+ * Verifies if user has their profile information stored.
+ *
+ * @since 1.0.0
+ *
+ * @return bool True if profile is set, false otherwise.
+ */
+ public function has() {
+ $profile = (array) $this->get();
+
+ if ( ! empty( $profile['email'] ) && ! empty( $profile['photo'] ) ) {
+ return true;
+ }
+
+ return false;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Authentication/Setup.php b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Setup.php
new file mode 100644
index 000000000..fdc3b2342
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Setup.php
@@ -0,0 +1,399 @@
+context = $context;
+ $this->user_options = $user_options;
+ $this->authentication = $authentication;
+ $this->credentials = $authentication->credentials();
+ $this->google_proxy = $authentication->get_google_proxy();
+ $this->proxy_support_link_url = $authentication->get_proxy_support_link_url();
+ }
+
+ /**
+ * Registers functionality through WordPress hooks.
+ *
+ * @since 1.48.0
+ */
+ public function register() {
+ add_action( 'admin_action_' . Google_Proxy::ACTION_SETUP_START, array( $this, 'handle_action_setup_start' ) );
+ add_action( 'admin_action_' . Google_Proxy::ACTION_VERIFY, array( $this, 'handle_action_verify' ) );
+ add_action( 'admin_action_' . Google_Proxy::ACTION_EXCHANGE_SITE_CODE, array( $this, 'handle_action_exchange_site_code' ) );
+ }
+
+ /**
+ * Composes the oAuth proxy get help link.
+ *
+ * @since 1.81.0
+ *
+ * @return string The get help link.
+ */
+ private function get_oauth_proxy_failed_help_link() {
+ return sprintf(
+ /* translators: 1: Support link URL. 2: Get help string. */
+ __( '%2$s', 'google-site-kit' ),
+ esc_url( add_query_arg( 'error_id', 'request_to_auth_proxy_failed', $this->proxy_support_link_url ) ),
+ esc_html__( 'Get help', 'google-site-kit' )
+ );
+ }
+
+ /**
+ * Handles the setup start action, taking the user to the proxy setup screen.
+ *
+ * @since 1.48.0
+ */
+ public function handle_action_setup_start() {
+ $nonce = $this->context->input()->filter( INPUT_GET, 'nonce', FILTER_SANITIZE_STRING );
+ $redirect_url = $this->context->input()->filter( INPUT_GET, 'redirect', FILTER_SANITIZE_URL );
+
+ $this->verify_nonce( $nonce, Google_Proxy::ACTION_SETUP_START );
+
+ if ( ! current_user_can( Permissions::SETUP ) ) {
+ wp_die( esc_html__( 'You have insufficient permissions to connect Site Kit.', 'google-site-kit' ) );
+ }
+
+ if ( ! $this->credentials->using_proxy() ) {
+ wp_die( esc_html__( 'Site Kit is not configured to use the authentication proxy.', 'google-site-kit' ) );
+ }
+
+ $required_scopes = $this->authentication->get_oauth_client()->get_required_scopes();
+ $this->google_proxy->with_scopes( $required_scopes );
+
+ $oauth_setup_redirect = $this->credentials->has()
+ ? $this->google_proxy->sync_site_fields( $this->credentials, 'sync' )
+ : $this->google_proxy->register_site( 'sync' );
+
+ $oauth_proxy_failed_help_link = $this->get_oauth_proxy_failed_help_link();
+
+ if ( is_wp_error( $oauth_setup_redirect ) ) {
+ $error_message = $oauth_setup_redirect->get_error_message();
+ if ( empty( $error_message ) ) {
+ $error_message = $oauth_setup_redirect->get_error_code();
+ }
+
+ wp_die(
+ sprintf(
+ /* translators: 1: Error message or error code. 2: Get help link. */
+ esc_html__( 'The request to the authentication proxy has failed with an error: %1$s %2$s.', 'google-site-kit' ),
+ esc_html( $error_message ),
+ wp_kses(
+ $oauth_proxy_failed_help_link,
+ array(
+ 'a' => array(
+ 'href' => array(),
+ 'target' => array(),
+ ),
+ )
+ )
+ )
+ );
+ }
+
+ if ( ! filter_var( $oauth_setup_redirect, FILTER_VALIDATE_URL ) ) {
+ wp_die(
+ sprintf(
+ /* translators: %s: Get help link. */
+ esc_html__( 'The request to the authentication proxy has failed. Please, try again later. %s.', 'google-site-kit' ),
+ wp_kses(
+ $oauth_proxy_failed_help_link,
+ array(
+ 'a' => array(
+ 'href' => array(),
+ 'target' => array(),
+ ),
+ )
+ )
+ )
+ );
+ }
+
+ if ( $redirect_url ) {
+ $this->user_options->set( OAuth_Client::OPTION_REDIRECT_URL, $redirect_url );
+ }
+
+ wp_safe_redirect( $oauth_setup_redirect );
+ exit;
+ }
+
+ /**
+ * Handles the action for verifying site ownership.
+ *
+ * @since 1.48.0
+ * @since 1.49.0 Sets the `verify` and `verification_method` and `site_id` query params.
+ */
+ public function handle_action_verify() {
+ $input = $this->context->input();
+ $step = $input->filter( INPUT_GET, 'step', FILTER_SANITIZE_STRING );
+ $nonce = $input->filter( INPUT_GET, 'nonce', FILTER_SANITIZE_STRING );
+ $code = $input->filter( INPUT_GET, 'googlesitekit_code', FILTER_SANITIZE_STRING );
+ $site_code = $input->filter( INPUT_GET, 'googlesitekit_site_code', FILTER_SANITIZE_STRING );
+ $verification_token = $input->filter( INPUT_GET, 'googlesitekit_verification_token', FILTER_SANITIZE_STRING );
+ $verification_method = $input->filter( INPUT_GET, 'googlesitekit_verification_token_type', FILTER_SANITIZE_STRING );
+
+ $this->verify_nonce( $nonce );
+
+ if ( ! current_user_can( Permissions::SETUP ) ) {
+ wp_die( esc_html__( 'You don\'t have permissions to set up Site Kit.', 'google-site-kit' ), 403 );
+ }
+
+ if ( ! $code ) {
+ wp_die( esc_html__( 'Invalid request.', 'google-site-kit' ), 400 );
+ }
+
+ if ( ! $verification_token || ! $verification_method ) {
+ wp_die( esc_html__( 'Verifying site ownership requires a token and verification method.', 'google-site-kit' ), 400 );
+ }
+
+ $this->handle_verification( $verification_token, $verification_method );
+
+ $proxy_query_params = array(
+ 'step' => $step,
+ 'verify' => 'true',
+ 'verification_method' => $verification_method,
+ );
+
+ // If the site does not have a site ID yet, a site code will be passed.
+ // Handling the site code here will save the extra redirect from the proxy if successful.
+ if ( $site_code ) {
+ try {
+ $this->handle_site_code( $code, $site_code );
+ } catch ( Missing_Verification_Exception $exception ) {
+ $proxy_query_params['site_code'] = $site_code;
+
+ $this->redirect_to_proxy( $code, $proxy_query_params );
+ } catch ( Exchange_Site_Code_Exception $exception ) {
+ $this->redirect_to_splash();
+ }
+ }
+
+ $credentials = $this->credentials->get();
+ $proxy_query_params['site_id'] = ! empty( $credentials['oauth2_client_id'] ) ? $credentials['oauth2_client_id'] : '';
+
+ $this->redirect_to_proxy( $code, $proxy_query_params );
+ }
+
+ /**
+ * Handles the action for exchanging the site code for site credentials.
+ *
+ * This action will only be called if the site code failed to be handled
+ * during the verification step.
+ *
+ * @since 1.48.0
+ */
+ public function handle_action_exchange_site_code() {
+ $input = $this->context->input();
+ $step = $input->filter( INPUT_GET, 'step', FILTER_SANITIZE_STRING );
+ $nonce = $input->filter( INPUT_GET, 'nonce', FILTER_SANITIZE_STRING );
+ $code = $input->filter( INPUT_GET, 'googlesitekit_code', FILTER_SANITIZE_STRING );
+ $site_code = $input->filter( INPUT_GET, 'googlesitekit_site_code', FILTER_SANITIZE_STRING );
+
+ $this->verify_nonce( $nonce );
+
+ if ( ! current_user_can( Permissions::SETUP ) ) {
+ wp_die( esc_html__( 'You don\'t have permissions to set up Site Kit.', 'google-site-kit' ), 403 );
+ }
+
+ if ( ! $code || ! $site_code ) {
+ wp_die( esc_html__( 'Invalid request.', 'google-site-kit' ), 400 );
+ }
+
+ try {
+ $this->handle_site_code( $code, $site_code );
+ } catch ( Missing_Verification_Exception $exception ) {
+ $this->redirect_to_proxy( $code, compact( 'site_code', 'step' ) );
+ } catch ( Exchange_Site_Code_Exception $exception ) {
+ $this->redirect_to_splash();
+ }
+
+ $credentials = $this->credentials->get();
+ $site_id = ! empty( $credentials['oauth2_client_id'] ) ? $credentials['oauth2_client_id'] : '';
+
+ $this->redirect_to_proxy( $code, compact( 'site_id', 'step' ) );
+ }
+
+ /**
+ * Verifies the given nonce for a setup action.
+ *
+ * The nonce passed from the proxy will always be the one initially provided to it.
+ * {@see Google_Proxy::setup_url()}
+ *
+ * @since 1.48.0
+ *
+ * @param string $nonce Action nonce.
+ * @param string $action Action name. Optional. Defaults to the action for the nonce given to the proxy.
+ */
+ protected function verify_nonce( $nonce, $action = Google_Proxy::NONCE_ACTION ) {
+ if ( ! wp_verify_nonce( $nonce, $action ) ) {
+ $this->authentication->invalid_nonce_error( $action );
+ }
+ }
+
+ /**
+ * Handles site verification.
+ *
+ * @since 1.48.0
+ *
+ * @param string $token Verification token.
+ * @param string $method Verification method.
+ */
+ protected function handle_verification( $token, $method ) {
+ /**
+ * Verifies site ownership using the given token and verification method.
+ *
+ * @since 1.48.0
+ *
+ * @param string $token Verification token.
+ * @param string $method Verification method.
+ */
+ do_action( 'googlesitekit_verify_site_ownership', $token, $method );
+ }
+
+ /**
+ * Handles the exchange of a code and site code for client credentials from the proxy.
+ *
+ * @since 1.48.0
+ *
+ * @param string $code Code ('googlesitekit_code') provided by proxy.
+ * @param string $site_code Site code ('googlesitekit_site_code') provided by proxy.
+ *
+ * @throws Missing_Verification_Exception Thrown if exchanging the site code fails due to missing site verification.
+ * @throws Exchange_Site_Code_Exception Thrown if exchanging the site code fails for any other reason.
+ */
+ protected function handle_site_code( $code, $site_code ) {
+ $data = $this->google_proxy->exchange_site_code( $site_code, $code );
+
+ if ( is_wp_error( $data ) ) {
+ $error_code = $data->get_error_message() ?: $data->get_error_code();
+ $error_code = $error_code ?: 'unknown_error';
+
+ if ( 'missing_verification' === $error_code ) {
+ throw new Missing_Verification_Exception();
+ }
+
+ $this->user_options->set( OAuth_Client::OPTION_ERROR_CODE, $error_code );
+
+ throw new Exchange_Site_Code_Exception( $error_code );
+ }
+
+ $this->credentials->set(
+ array(
+ 'oauth2_client_id' => $data['site_id'],
+ 'oauth2_client_secret' => $data['site_secret'],
+ )
+ );
+ }
+
+ /**
+ * Redirects back to the authentication service with any added parameters.
+ *
+ * For v2 of the proxy, this method now has to ensure that the user is redirected back to the correct step on the
+ * proxy, based on which action was received.
+ *
+ * @since 1.48.0
+ * @since 1.49.0 Uses the new `Google_Proxy::setup_url_v2` method when the `serviceSetupV2` feature flag is enabled.
+ *
+ * @param string $code Code ('googlesitekit_code') provided by proxy.
+ * @param array $params Additional query parameters to include in the proxy redirect URL.
+ */
+ protected function redirect_to_proxy( $code = '', $params = array() ) {
+ $params['code'] = $code;
+ $url = $this->authentication->get_google_proxy()->setup_url( $params );
+
+ wp_safe_redirect( $url );
+ exit;
+ }
+
+ /**
+ * Redirects to the Site Kit splash page.
+ *
+ * @since 1.48.0
+ */
+ protected function redirect_to_splash() {
+ wp_safe_redirect( $this->context->admin_url( 'splash' ) );
+ exit;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Authentication/Token.php b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Token.php
new file mode 100644
index 000000000..5980bf1bf
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Token.php
@@ -0,0 +1,147 @@
+user_options = $user_options;
+ $this->encrypted_user_options = new Encrypted_User_Options( $this->user_options );
+ }
+
+ /**
+ * Checks whether or not the setting exists.
+ *
+ * @since 1.39.0
+ *
+ * @return bool True on success, false on failure.
+ */
+ public function has() {
+ if ( ! $this->get() ) {
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ * Gets the value of the setting.
+ *
+ * @since 1.39.0
+ *
+ * @return mixed Value set for the option, or default if not set.
+ */
+ public function get() {
+ $access_token = $this->encrypted_user_options->get( OAuth_Client::OPTION_ACCESS_TOKEN );
+ if ( empty( $access_token ) ) {
+ return array();
+ }
+
+ $token = array(
+ 'access_token' => $access_token,
+ 'expires_in' => (int) $this->user_options->get( OAuth_Client::OPTION_ACCESS_TOKEN_EXPIRES_IN ),
+ 'created' => (int) $this->user_options->get( OAuth_Client::OPTION_ACCESS_TOKEN_CREATED ),
+ );
+
+ $refresh_token = $this->encrypted_user_options->get( OAuth_Client::OPTION_REFRESH_TOKEN );
+ if ( ! empty( $refresh_token ) ) {
+ $token['refresh_token'] = $refresh_token;
+ }
+
+ return $token;
+ }
+
+ /**
+ * Sets the value of the setting with the given value.
+ *
+ * @since 1.39.0
+ *
+ * @param mixed $value Setting value. Must be serializable if non-scalar.
+ *
+ * @return bool True on success, false on failure.
+ */
+ public function set( $value ) {
+ if ( empty( $value['access_token'] ) ) {
+ return false;
+ }
+
+ // Use reasonable defaults for these fields.
+ if ( empty( $value['expires_in'] ) ) {
+ $value['expires_in'] = HOUR_IN_SECONDS;
+ }
+ if ( empty( $value['created'] ) ) {
+ $value['created'] = time();
+ }
+
+ $this->encrypted_user_options->set( OAuth_Client::OPTION_ACCESS_TOKEN, $value['access_token'] );
+ $this->user_options->set( OAuth_Client::OPTION_ACCESS_TOKEN_EXPIRES_IN, $value['expires_in'] );
+ $this->user_options->set( OAuth_Client::OPTION_ACCESS_TOKEN_CREATED, $value['created'] );
+
+ if ( ! empty( $value['refresh_token'] ) ) {
+ $this->encrypted_user_options->set( OAuth_Client::OPTION_REFRESH_TOKEN, $value['refresh_token'] );
+ }
+
+ return true;
+ }
+
+ /**
+ * Deletes the setting.
+ *
+ * @since 1.39.0
+ *
+ * @return bool True on success, false on failure.
+ */
+ public function delete() {
+ $this->user_options->delete( OAuth_Client::OPTION_ACCESS_TOKEN );
+ $this->user_options->delete( OAuth_Client::OPTION_ACCESS_TOKEN_EXPIRES_IN );
+ $this->user_options->delete( OAuth_Client::OPTION_ACCESS_TOKEN_CREATED );
+ $this->user_options->delete( OAuth_Client::OPTION_REFRESH_TOKEN );
+ return true;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Authentication/User_Input_State.php b/wp-content/plugins/google-site-kit/includes/Core/Authentication/User_Input_State.php
new file mode 100644
index 000000000..f60592853
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Authentication/User_Input_State.php
@@ -0,0 +1,60 @@
+delete();
+ }
+
+ return parent::set( '1' );
+ }
+
+ /**
+ * Gets the expected value type.
+ *
+ * @since 1.4.0
+ *
+ * @return string The type name.
+ */
+ protected function get_type() {
+ return 'boolean';
+ }
+
+ /**
+ * Gets the default value.
+ *
+ * Returns an empty string by default for consistency with get_user_meta.
+ *
+ * @since 1.4.0
+ *
+ * @return mixed The default value.
+ */
+ protected function get_default() {
+ return false;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Authentication/Verification_File.php b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Verification_File.php
new file mode 100644
index 000000000..1a2fca726
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Authentication/Verification_File.php
@@ -0,0 +1,28 @@
+
+ * : User ID to disconnect.
+ *
+ * ## EXAMPLES
+ *
+ * wp google-site-kit auth disconnect --id=11
+ *
+ * @alias revoke
+ *
+ * @since 1.11.0
+ *
+ * @param array $args Array of arguments.
+ * @param array $assoc_args Array of associated arguments.
+ */
+ public function disconnect( $args, $assoc_args ) {
+ $user_id = absint( $assoc_args['id'] );
+
+ $authentication = new Authentication(
+ $this->context,
+ new Options( $this->context ),
+ new User_Options( $this->context, $user_id ),
+ new Transients( $this->context )
+ );
+ $authentication->disconnect();
+
+ WP_CLI::success( sprintf( 'User with ID %d successfully disconnected.', $user_id ) );
+ }
+
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/CLI/CLI_Command.php b/wp-content/plugins/google-site-kit/includes/Core/CLI/CLI_Command.php
new file mode 100644
index 000000000..1f9489a15
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/CLI/CLI_Command.php
@@ -0,0 +1,45 @@
+context = $context;
+ }
+
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/CLI/CLI_Commands.php b/wp-content/plugins/google-site-kit/includes/Core/CLI/CLI_Commands.php
new file mode 100644
index 000000000..17b7ce9db
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/CLI/CLI_Commands.php
@@ -0,0 +1,55 @@
+context = $context;
+ }
+
+ /**
+ * Registers WP CLI commands.
+ *
+ * @since 1.11.0
+ */
+ public function register() {
+ WP_CLI::add_command( 'google-site-kit auth', new Authentication_CLI_Command( $this->context ) );
+ WP_CLI::add_command( 'google-site-kit reset', new Reset_CLI_Command( $this->context ) );
+ }
+
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/CLI/Reset_CLI_Command.php b/wp-content/plugins/google-site-kit/includes/Core/CLI/Reset_CLI_Command.php
new file mode 100644
index 000000000..1240b4313
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/CLI/Reset_CLI_Command.php
@@ -0,0 +1,57 @@
+context );
+ $reset->all();
+
+ if ( isset( $assoc_args['persistent'] ) && true === $assoc_args['persistent'] ) {
+ $reset_persistent = new Reset_Persistent( $this->context );
+ $reset_persistent->all();
+ }
+
+ WP_CLI::success( 'Settings successfully reset.' );
+ }
+
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Contracts/WP_Errorable.php b/wp-content/plugins/google-site-kit/includes/Core/Contracts/WP_Errorable.php
new file mode 100644
index 000000000..43d324bf0
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Contracts/WP_Errorable.php
@@ -0,0 +1,30 @@
+get();
+ }
+
+ $results = array();
+
+ foreach ( $value as $id => $roles ) {
+ // If any of the IDs isn't an integer, do not include that item.
+ if ( ! is_int( $id ) ) {
+ continue;
+ }
+
+ // If any of the array values isn't an array, do not include that item.
+ if ( ! is_array( $roles ) ) {
+ continue;
+ }
+
+ $user_roles = array();
+
+ foreach ( $roles as $role ) {
+ // If the nested role item is a string, include that role item.
+ if ( is_string( $role ) ) {
+ $user_roles[] = $role;
+ }
+ }
+
+ if ( ! empty( $user_roles ) ) {
+ $results[ $id ] = $user_roles;
+ }
+ }
+
+ return $results;
+ };
+ }
+
+ /**
+ * Adds a consumer to the active consumers list.
+ *
+ * @since 1.87.0
+ *
+ * @param int $user_id User ID.
+ * @param string[] $roles User roles.
+ */
+ public function add( $user_id, $roles ) {
+ $active_consumers = $this->get();
+ if ( ! array_key_exists( $user_id, $active_consumers ) ) {
+ $active_consumers[ $user_id ] = $roles;
+ $this->set( $active_consumers );
+ }
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Dashboard_Sharing/Activity_Metrics/Activity_Metrics.php b/wp-content/plugins/google-site-kit/includes/Core/Dashboard_Sharing/Activity_Metrics/Activity_Metrics.php
new file mode 100644
index 000000000..491b7ab0b
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Dashboard_Sharing/Activity_Metrics/Activity_Metrics.php
@@ -0,0 +1,79 @@
+active_consumers = new Active_Consumers( $user_options ?: new User_Options( $context ) );
+ }
+
+ /**
+ * Registers functionality.
+ *
+ * @since 1.82.0
+ */
+ public function register() {
+ $this->active_consumers->register();
+ }
+
+ /**
+ * Get active consumers for refresh token.
+ *
+ * @since 1.87.0
+ *
+ * @return array Array of active consumers formatted for refresh token.
+ */
+ public function get_for_refresh_token() {
+ $active_consumers = $this->active_consumers->get();
+
+ if ( empty( $active_consumers ) ) {
+ return array();
+ }
+
+ $formatted_consumers = array();
+
+ foreach ( $active_consumers as $id => $roles ) {
+ $formatted_consumers[] = $id . ':' . implode( ',', $roles );
+ }
+
+ return array(
+ 'active_consumers' => implode( ' ', $formatted_consumers ),
+ );
+ }
+
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Dashboard_Sharing/Dashboard_Sharing.php b/wp-content/plugins/google-site-kit/includes/Core/Dashboard_Sharing/Dashboard_Sharing.php
new file mode 100644
index 000000000..725fcc71e
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Dashboard_Sharing/Dashboard_Sharing.php
@@ -0,0 +1,84 @@
+context = $context;
+ $this->user_options = $user_options ?: new User_Options( $this->context );
+ $this->activity_metrics = new Activity_Metrics( $this->context, $this->user_options );
+ $this->view_only_pointer = new View_Only_Pointer();
+ }
+
+ /**
+ * Registers functionality.
+ *
+ * @since 1.82.0
+ */
+ public function register() {
+ $this->activity_metrics->register();
+ $this->view_only_pointer->register();
+ }
+
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Dashboard_Sharing/View_Only_Pointer.php b/wp-content/plugins/google-site-kit/includes/Core/Dashboard_Sharing/View_Only_Pointer.php
new file mode 100644
index 000000000..e03e3a13a
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Dashboard_Sharing/View_Only_Pointer.php
@@ -0,0 +1,82 @@
+get_view_only_pointer();
+ return $pointers;
+ }
+ );
+ }
+
+ /**
+ * Gets the view-only pointer.
+ *
+ * @since 1.83.0.
+ *
+ * @return Pointer Admin notice instance.
+ */
+ private function get_view_only_pointer() {
+ return new Pointer(
+ self::SLUG,
+ array(
+ 'title' => __( 'You now have access to Site Kit', 'google-site-kit' ),
+ 'content' => __( 'Check Site Kit’s dashboard to find out how much traffic your site is getting, your most popular pages, top keywords people use to find your site on Search, and more.', 'google-site-kit' ),
+ 'target_id' => 'toplevel_page_googlesitekit-dashboard',
+ 'active_callback' => function( $hook_suffix ) {
+ if ( 'index.php' !== $hook_suffix
+ || ! Feature_Flags::enabled( 'dashboardSharing' )
+ || current_user_can( Permissions::AUTHENTICATE )
+ || ! current_user_can( Permissions::VIEW_SPLASH )
+
+ ) {
+ return false;
+ }
+
+ $dismissed_wp_pointers = get_user_meta( get_current_user_id(), 'dismissed_wp_pointers', true );
+ if ( ! $dismissed_wp_pointers ) {
+ return true;
+ }
+
+ $dismissed_wp_pointers = explode( ',', $dismissed_wp_pointers );
+ if ( in_array( self::SLUG, $dismissed_wp_pointers, true ) ) {
+ return false;
+ }
+
+ return true;
+ },
+ )
+ );
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Dismissals/Dismissals.php b/wp-content/plugins/google-site-kit/includes/Core/Dismissals/Dismissals.php
new file mode 100644
index 000000000..c7bd9200d
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Dismissals/Dismissals.php
@@ -0,0 +1,75 @@
+dismissed_items = new Dismissed_Items( $user_options ?: new User_Options( $context ) );
+ $this->rest_controller = new REST_Dismissals_Controller( $this->dismissed_items );
+ }
+
+ /**
+ * Gets the reference to the Dismissed_Items instance.
+ *
+ * @since 1.69.0
+ *
+ * @return Dismissed_Items An instance of the Dismissed_Items class.
+ */
+ public function get_dismissed_items() {
+ return $this->dismissed_items;
+ }
+
+ /**
+ * Registers functionality through WordPress hooks.
+ *
+ * @since 1.37.0
+ */
+ public function register() {
+ $this->dismissed_items->register();
+ $this->rest_controller->register();
+ }
+
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Dismissals/Dismissed_Items.php b/wp-content/plugins/google-site-kit/includes/Core/Dismissals/Dismissed_Items.php
new file mode 100644
index 000000000..d33a05352
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Dismissals/Dismissed_Items.php
@@ -0,0 +1,154 @@
+get();
+ $items[ $item ] = $expires_in_seconds ? time() + $expires_in_seconds : 0;
+
+ $this->set( $items );
+ }
+
+ /**
+ * Gets the value of the setting.
+ *
+ * @since 1.37.0
+ *
+ * @return array Value set for the option, or default if not set.
+ */
+ public function get() {
+ $value = parent::get();
+ return is_array( $value ) ? $value : $this->get_default();
+ }
+
+ /**
+ * Gets the expected value type.
+ *
+ * @since 1.37.0
+ *
+ * @return string The type name.
+ */
+ protected function get_type() {
+ return 'array';
+ }
+
+ /**
+ * Gets the default value.
+ *
+ * @since 1.37.0
+ *
+ * @return array The default value.
+ */
+ protected function get_default() {
+ return array();
+ }
+
+ /**
+ * Gets the callback for sanitizing the setting's value before saving.
+ *
+ * @since 1.37.0
+ *
+ * @return callable Sanitize callback.
+ */
+ protected function get_sanitize_callback() {
+ return function ( $items ) {
+ return $this->filter_dismissed_items( $items );
+ };
+ }
+
+ /**
+ * Determines whether the item is dismissed.
+ *
+ * @since 1.37.0
+ *
+ * @param string $item The item to check.
+ * @return bool TRUE if item is dismissed, otherwise FALSE.
+ */
+ public function is_dismissed( $item ) {
+ $items = $this->get();
+ if ( ! array_key_exists( $item, $items ) ) {
+ return false;
+ }
+
+ $ttl = $items[ $item ];
+ if ( $ttl > 0 && $ttl < time() ) {
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ * Gets dismissed items.
+ *
+ * @since 1.37.0
+ *
+ * @return array Dismissed items array.
+ */
+ public function get_dismissed_items() {
+ $dismissed_items = $this->get();
+ $dismissed_items = $this->filter_dismissed_items( $dismissed_items );
+
+ return array_keys( $dismissed_items );
+ }
+
+ /**
+ * Filters dismissed items.
+ *
+ * @since 1.37.0
+ *
+ * @param array $items Dismissed items list.
+ * @return array Filtered dismissed items.
+ */
+ private function filter_dismissed_items( $items ) {
+ $dismissed = array();
+
+ if ( is_array( $items ) ) {
+ foreach ( $items as $item => $ttl ) {
+ if ( self::DISMISS_ITEM_PERMANENTLY === $ttl || $ttl > time() ) {
+ $dismissed[ $item ] = $ttl;
+ }
+ }
+ }
+
+ return $dismissed;
+ }
+
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Dismissals/REST_Dismissals_Controller.php b/wp-content/plugins/google-site-kit/includes/Core/Dismissals/REST_Dismissals_Controller.php
new file mode 100644
index 000000000..984f44e80
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Dismissals/REST_Dismissals_Controller.php
@@ -0,0 +1,135 @@
+dismissed_items = $dismissed_items;
+ }
+
+ /**
+ * Registers functionality through WordPress hooks.
+ *
+ * @since 1.37.0
+ */
+ public function register() {
+ add_filter(
+ 'googlesitekit_rest_routes',
+ function ( $routes ) {
+ return array_merge( $routes, $this->get_rest_routes() );
+ }
+ );
+
+ add_filter(
+ 'googlesitekit_apifetch_preload_paths',
+ function ( $paths ) {
+ return array_merge(
+ $paths,
+ array(
+ '/' . REST_Routes::REST_ROOT . '/core/user/data/dismissed-items',
+ )
+ );
+ }
+ );
+ }
+
+ /**
+ * Gets REST route instances.
+ *
+ * @since 1.37.0
+ *
+ * @return REST_Route[] List of REST_Route objects.
+ */
+ protected function get_rest_routes() {
+ $can_dismiss_item = function() {
+ return current_user_can( Permissions::VIEW_SPLASH ) || current_user_can( Permissions::VIEW_DASHBOARD );
+ };
+
+ return array(
+ new REST_Route(
+ 'core/user/data/dismissed-items',
+ array(
+ 'methods' => WP_REST_Server::READABLE,
+ 'callback' => function () {
+ return new WP_REST_Response( $this->dismissed_items->get_dismissed_items() );
+ },
+ 'permission_callback' => $can_dismiss_item,
+ )
+ ),
+ new REST_Route(
+ 'core/user/data/dismiss-item',
+ array(
+ 'methods' => WP_REST_Server::CREATABLE,
+ 'callback' => function ( WP_REST_Request $request ) {
+ $data = $request['data'];
+
+ if ( empty( $data['slug'] ) ) {
+ return new WP_Error(
+ 'missing_required_param',
+ /* translators: %s: Missing parameter name */
+ sprintf( __( 'Request parameter is empty: %s.', 'google-site-kit' ), 'slug' ),
+ array( 'status' => 400 )
+ );
+ }
+
+ $expiration = Dismissed_Items::DISMISS_ITEM_PERMANENTLY;
+ if ( isset( $data['expiration'] ) && intval( $data['expiration'] ) > 0 ) {
+ $expiration = $data['expiration'];
+ }
+
+ $this->dismissed_items->add( $data['slug'], $expiration );
+
+ return new WP_REST_Response( $this->dismissed_items->get_dismissed_items() );
+ },
+ 'permission_callback' => $can_dismiss_item,
+ 'args' => array(
+ 'data' => array(
+ 'type' => 'object',
+ 'required' => true,
+ ),
+ ),
+ )
+ ),
+ );
+ }
+
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Feature_Tours/Dismissed_Tours.php b/wp-content/plugins/google-site-kit/includes/Core/Feature_Tours/Dismissed_Tours.php
new file mode 100644
index 000000000..27b3c41af
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Feature_Tours/Dismissed_Tours.php
@@ -0,0 +1,95 @@
+get(), $tour_slug );
+
+ $this->set( $value );
+ }
+
+ /**
+ * Gets the value of the setting.
+ *
+ * @since 1.27.0
+ *
+ * @return array Value set for the option, or default if not set.
+ */
+ public function get() {
+ $value = parent::get();
+
+ return is_array( $value ) ? $value : array();
+ }
+
+ /**
+ * Gets the expected value type.
+ *
+ * @since 1.27.0
+ *
+ * @return string The type name.
+ */
+ protected function get_type() {
+ return 'array';
+ }
+
+ /**
+ * Gets the default value.
+ *
+ * @since 1.27.0
+ *
+ * @return array The default value.
+ */
+ protected function get_default() {
+ return array();
+ }
+
+ /**
+ * Gets the callback for sanitizing the setting's value before saving.
+ *
+ * @since 1.27.0
+ *
+ * @return Closure
+ */
+ protected function get_sanitize_callback() {
+ return function ( $value ) {
+ return is_array( $value )
+ ? array_values( array_unique( $value ) )
+ : $this->get();
+ };
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Feature_Tours/Feature_Tours.php b/wp-content/plugins/google-site-kit/includes/Core/Feature_Tours/Feature_Tours.php
new file mode 100644
index 000000000..c8d0d2772
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Feature_Tours/Feature_Tours.php
@@ -0,0 +1,64 @@
+dismissed_tours = new Dismissed_Tours( $user_options ?: new User_Options( $context ) );
+ $this->rest_controller = new REST_Feature_Tours_Controller( $this->dismissed_tours );
+ }
+
+ /**
+ * Registers functionality through WordPress hooks.
+ *
+ * @since 1.27.0
+ */
+ public function register() {
+ $this->dismissed_tours->register();
+ $this->rest_controller->register();
+ }
+
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Feature_Tours/REST_Feature_Tours_Controller.php b/wp-content/plugins/google-site-kit/includes/Core/Feature_Tours/REST_Feature_Tours_Controller.php
new file mode 100644
index 000000000..d8736cb3d
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Feature_Tours/REST_Feature_Tours_Controller.php
@@ -0,0 +1,129 @@
+dismissed_tours = $dismissed_tours;
+ }
+
+ /**
+ * Registers functionality through WordPress hooks.
+ *
+ * @since 1.27.0
+ */
+ public function register() {
+ add_filter(
+ 'googlesitekit_rest_routes',
+ function ( $routes ) {
+ return array_merge( $routes, $this->get_rest_routes() );
+ }
+ );
+
+ add_filter(
+ 'googlesitekit_apifetch_preload_paths',
+ function ( $paths ) {
+ $feature_tour_routes = array(
+ '/' . REST_Routes::REST_ROOT . '/core/user/data/dismissed-tours',
+ );
+
+ return array_merge( $paths, $feature_tour_routes );
+ }
+ );
+ }
+
+ /**
+ * Gets REST route instances.
+ *
+ * @since 1.27.0
+ *
+ * @return REST_Route[] List of REST_Route objects.
+ */
+ protected function get_rest_routes() {
+ $can_dismiss_tour = function() {
+ return current_user_can( Permissions::AUTHENTICATE ) || current_user_can( Permissions::VIEW_SHARED_DASHBOARD );
+ };
+
+ return array(
+ new REST_Route(
+ 'core/user/data/dismissed-tours',
+ array(
+ 'methods' => WP_REST_Server::READABLE,
+ 'callback' => function () {
+ return new WP_REST_Response( $this->dismissed_tours->get() );
+ },
+ 'permission_callback' => $can_dismiss_tour,
+ )
+ ),
+ new REST_Route(
+ 'core/user/data/dismiss-tour',
+ array(
+ 'methods' => WP_REST_Server::CREATABLE,
+ 'callback' => function ( WP_REST_Request $request ) {
+ $data = $request['data'];
+
+ if ( empty( $data['slug'] ) ) {
+ return new WP_Error(
+ 'missing_required_param',
+ /* translators: %s: Missing parameter name */
+ sprintf( __( 'Request parameter is empty: %s.', 'google-site-kit' ), 'slug' ),
+ array( 'status' => 400 )
+ );
+ }
+
+ $this->dismissed_tours->add( $data['slug'] );
+
+ return new WP_REST_Response( $this->dismissed_tours->get() );
+ },
+ 'permission_callback' => $can_dismiss_tour,
+ 'args' => array(
+ 'data' => array(
+ 'type' => 'object',
+ 'required' => true,
+ ),
+ ),
+ )
+ ),
+ );
+ }
+
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Guards/Guard_Interface.php b/wp-content/plugins/google-site-kit/includes/Core/Guards/Guard_Interface.php
new file mode 100644
index 000000000..e061ae2c1
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Guards/Guard_Interface.php
@@ -0,0 +1,33 @@
+shareable = ! empty( $definition['shareable'] );
+
+ if ( isset( $definition['service'] ) && is_string( $definition['service'] ) ) {
+ $this->service = $definition['service'];
+ }
+
+ if ( isset( $definition['scopes'] ) && is_array( $definition['scopes'] ) ) {
+ $this->scopes = $definition['scopes'];
+ }
+
+ if ( isset( $definition['request_scopes_message'] ) && is_string( $definition['request_scopes_message'] ) ) {
+ $this->request_scopes_message = $definition['request_scopes_message'];
+ }
+ }
+
+ /**
+ * Checks if the datapoint is shareable.
+ *
+ * @since 1.77.0
+ *
+ * @return bool
+ */
+ public function is_shareable() {
+ return $this->shareable;
+ }
+
+ /**
+ * Gets the service identifier.
+ *
+ * @since 1.77.0
+ *
+ * @return string
+ */
+ public function get_service() {
+ return $this->service;
+ }
+
+ /**
+ * Gets the list of required scopes.
+ *
+ * @since 1.77.0
+ *
+ * @return string[]
+ */
+ public function get_required_scopes() {
+ return $this->scopes;
+ }
+
+ /**
+ * Gets the request scopes message.
+ *
+ * @since 1.77.0
+ *
+ * @return string
+ */
+ public function get_request_scopes_message() {
+ if ( $this->request_scopes_message ) {
+ return $this->request_scopes_message;
+ }
+
+ return __( 'You’ll need to grant Site Kit permission to do this.', 'google-site-kit' );
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Modules/Module.php b/wp-content/plugins/google-site-kit/includes/Core/Modules/Module.php
new file mode 100644
index 000000000..0ed889478
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Modules/Module.php
@@ -0,0 +1,889 @@
+ $service_instance pairs.
+ *
+ * @since 1.0.0
+ * @var array|null
+ */
+ private $google_services;
+
+ /**
+ * Whether module is using shared credentials or not.
+ *
+ * @since 1.82.0
+ * @var bool
+ */
+ protected $is_using_shared_credentials = false;
+
+ /**
+ * Constructor.
+ *
+ * @since 1.0.0
+ *
+ * @param Context $context Plugin context.
+ * @param Options $options Optional. Option API instance. Default is a new instance.
+ * @param User_Options $user_options Optional. User Option API instance. Default is a new instance.
+ * @param Authentication $authentication Optional. Authentication instance. Default is a new instance.
+ * @param Assets $assets Optional. Assets API instance. Default is a new instance.
+ */
+ public function __construct(
+ Context $context,
+ Options $options = null,
+ User_Options $user_options = null,
+ Authentication $authentication = null,
+ Assets $assets = null
+ ) {
+ $this->context = $context;
+ $this->options = $options ?: new Options( $this->context );
+ $this->user_options = $user_options ?: new User_Options( $this->context );
+ $this->authentication = $authentication ?: new Authentication( $this->context, $this->options, $this->user_options );
+ $this->assets = $assets ?: new Assets( $this->context );
+ $this->info = $this->parse_info( (array) $this->setup_info() );
+ }
+
+ /**
+ * Registers functionality through WordPress hooks.
+ *
+ * @since 1.0.0
+ */
+ abstract public function register();
+
+ /**
+ * Magic isset-er.
+ *
+ * Allows checking for existence of module information.
+ *
+ * @since 1.0.0
+ *
+ * @param string $key Key to check..
+ * @return bool True if value for $key is available, false otherwise.
+ */
+ final public function __isset( $key ) {
+ return isset( $this->info[ $key ] );
+ }
+
+ /**
+ * Magic getter.
+ *
+ * Allows reading module information.
+ *
+ * @since 1.0.0
+ *
+ * @param string $key Key to get value for.
+ * @return mixed Value for $key, or null if not available.
+ */
+ final public function __get( $key ) {
+ if ( ! isset( $this->info[ $key ] ) ) {
+ return null;
+ }
+
+ return $this->info[ $key ];
+ }
+
+ /**
+ * Checks whether the module is connected.
+ *
+ * A module being connected means that all steps required as part of its activation are completed.
+ *
+ * @since 1.0.0
+ *
+ * @return bool True if module is connected, false otherwise.
+ */
+ public function is_connected() {
+ return true;
+ }
+
+ /**
+ * Gets data for the given datapoint.
+ *
+ * @since 1.0.0
+ *
+ * @param string $datapoint Datapoint to get data for.
+ * @param array|Data_Request $data Optional. Contextual data to provide. Default empty array.
+ * @return mixed Data on success, or WP_Error on failure.
+ */
+ final public function get_data( $datapoint, $data = array() ) {
+ return $this->execute_data_request(
+ new Data_Request( 'GET', 'modules', $this->slug, $datapoint, $data )
+ );
+ }
+
+ /**
+ * Sets data for the given datapoint.
+ *
+ * @since 1.0.0
+ *
+ * @param string $datapoint Datapoint to get data for.
+ * @param array|Data_Request $data Data to set.
+ * @return mixed Response data on success, or WP_Error on failure.
+ */
+ final public function set_data( $datapoint, $data ) {
+ return $this->execute_data_request(
+ new Data_Request( 'POST', 'modules', $this->slug, $datapoint, $data )
+ );
+ }
+
+ /**
+ * Returns the list of datapoints the class provides data for.
+ *
+ * @since 1.0.0
+ *
+ * @return array List of datapoints.
+ */
+ final public function get_datapoints() {
+ $keys = array();
+ $definitions = $this->get_datapoint_definitions();
+
+ foreach ( array_keys( $definitions ) as $key ) {
+ $parts = explode( ':', $key );
+ $name = end( $parts );
+ if ( ! empty( $name ) ) {
+ $keys[ $name ] = $name;
+ }
+ }
+
+ return array_values( $keys );
+ }
+
+ /**
+ * Returns the mapping between available datapoints and their services.
+ *
+ * @since 1.0.0
+ * @since 1.9.0 No longer abstract.
+ * @deprecated 1.12.0
+ *
+ * @return array Associative array of $datapoint => $service_identifier pairs.
+ */
+ protected function get_datapoint_services() {
+ _deprecated_function( __METHOD__, '1.12.0', static::class . '::get_datapoint_definitions' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
+ return array();
+ }
+
+ /**
+ * Gets map of datapoint to definition data for each.
+ *
+ * @since 1.9.0
+ *
+ * @return array Map of datapoints to their definitions.
+ */
+ protected function get_datapoint_definitions() {
+ return array();
+ }
+
+ /**
+ * Gets the datapoint definition instance.
+ *
+ * @since 1.77.0
+ *
+ * @param string $datapoint_id Datapoint ID.
+ * @return Datapoint Datapoint instance.
+ * @throws Invalid_Datapoint_Exception Thrown if no datapoint exists by the given ID.
+ */
+ protected function get_datapoint_definition( $datapoint_id ) {
+ $definitions = $this->get_datapoint_definitions();
+
+ // All datapoints must be defined.
+ if ( empty( $definitions[ $datapoint_id ] ) ) {
+ throw new Invalid_Datapoint_Exception();
+ }
+
+ return new Datapoint( $definitions[ $datapoint_id ] );
+ }
+
+ /**
+ * Creates a request object for the given datapoint.
+ *
+ * @since 1.0.0
+ *
+ * @param Data_Request $data Data request object.
+ * // phpcs:ignore Squiz.Commenting.FunctionComment.InvalidNoReturn
+ * @return RequestInterface|callable|WP_Error Request object or callable on success, or WP_Error on failure.
+ * @throws Invalid_Datapoint_Exception Override in a sub-class.
+ */
+ protected function create_data_request( Data_Request $data ) {
+ throw new Invalid_Datapoint_Exception();
+ }
+
+ /**
+ * Parses a response for the given datapoint.
+ *
+ * @since 1.0.0
+ *
+ * @param Data_Request $data Data request object.
+ * @param mixed $response Request response.
+ *
+ * @return mixed Parsed response data on success, or WP_Error on failure.
+ */
+ protected function parse_data_response( Data_Request $data, $response ) {
+ return $response;
+ }
+
+ /**
+ * Creates a request object for the given datapoint.
+ *
+ * @since 1.0.0
+ *
+ * @param Data_Request $data Data request object.
+ * @return mixed Data on success, or WP_Error on failure.
+ */
+ final protected function execute_data_request( Data_Request $data ) {
+ $restore_defers = array();
+ try {
+ $datapoint = $this->get_datapoint_definition( "{$data->method}:{$data->datapoint}" );
+ $oauth_client = $this->get_oauth_client_for_datapoint( $datapoint );
+
+ // Always reset this property first to ensure it is only set true for the current request.
+ $this->is_using_shared_credentials = false;
+
+ $this->validate_datapoint_scopes( $datapoint, $oauth_client );
+ $this->validate_base_scopes( $oauth_client );
+
+ // In order for a request to leverage a client other than the default
+ // it must return a RequestInterface (Google Services return this when defer = true).
+ // If not deferred, the request will be executed immediately with the client
+ // the service instance was instantiated with, which will always be the
+ // default client, configured for the current user and provided in `get_service`.
+
+ // Client defer is false by default, so we need to configure the default to defer
+ // even if a different client will be the one to execute the request because
+ // the default instance is what services are setup with.
+ $restore_defers[] = $this->get_client()->withDefer( true );
+ if ( $this->authentication->get_oauth_client() !== $oauth_client ) {
+ $restore_defers[] = $oauth_client->get_client()->withDefer( true );
+
+ // Set request as using shared credentials if oAuth clients do not match.
+ $this->is_using_shared_credentials = true;
+
+ $current_user = wp_get_current_user();
+ // Adds the current user to the active consumers list.
+ $oauth_client->add_active_consumer( $current_user );
+ }
+
+ $request = $this->create_data_request( $data );
+
+ if ( is_wp_error( $request ) ) {
+ return $request;
+ } elseif ( $request instanceof Closure ) {
+ $response = $request();
+ } elseif ( $request instanceof RequestInterface ) {
+ $response = $oauth_client->get_client()->execute( $request );
+ } else {
+ return new WP_Error(
+ 'invalid_datapoint_request',
+ __( 'Invalid datapoint request.', 'google-site-kit' ),
+ array( 'status' => 400 )
+ );
+ }
+ } catch ( Exception $e ) {
+ return $this->exception_to_error( $e, $data->datapoint );
+ } finally {
+ foreach ( $restore_defers as $restore_defer ) {
+ $restore_defer();
+ }
+
+ // Reset shared credentials usage property after the request
+ // is made, regardless of whether or not it completed successfully
+ // or encountered an error.
+ $this->is_using_shared_credentials = false;
+ }
+
+ if ( is_wp_error( $response ) ) {
+ return $response;
+ }
+
+ return $this->parse_data_response( $data, $response );
+ }
+
+ /**
+ * Validates necessary scopes for the given datapoint.
+ *
+ * @since 1.77.0
+ *
+ * @param Datapoint $datapoint Datapoint instance.
+ * @param OAuth_Client $oauth_client OAuth_Client instance.
+ * @throws Insufficient_Scopes_Exception Thrown if required scopes are not satisfied.
+ */
+ private function validate_datapoint_scopes( Datapoint $datapoint, OAuth_Client $oauth_client ) {
+ $required_scopes = $datapoint->get_required_scopes();
+
+ if ( $required_scopes && ! $oauth_client->has_sufficient_scopes( $required_scopes ) ) {
+ $message = $datapoint->get_request_scopes_message();
+
+ throw new Insufficient_Scopes_Exception( $message, 0, null, $required_scopes );
+ }
+ }
+
+ /**
+ * Validates necessary scopes for the module.
+ *
+ * @since 1.77.0
+ *
+ * @param OAuth_Client $oauth_client OAuth_Client instance.
+ * @throws Insufficient_Scopes_Exception Thrown if required scopes are not satisfied.
+ */
+ private function validate_base_scopes( OAuth_Client $oauth_client ) {
+ if ( ! $this instanceof Module_With_Scopes ) {
+ return;
+ }
+ if ( ! $oauth_client->has_sufficient_scopes( $this->get_scopes() ) ) {
+ $message = sprintf(
+ /* translators: %s: module name */
+ __( 'Site Kit can’t access the relevant data from %s because you haven’t granted all permissions requested during setup.', 'google-site-kit' ),
+ $this->name
+ );
+ throw new Insufficient_Scopes_Exception( $message, 0, null, $this->get_scopes() );
+ }
+ }
+
+ /**
+ * Parses a date range string into a start date and an end date.
+ *
+ * @since 1.0.0
+ *
+ * @param string $range Date range string. Either 'last-7-days', 'last-14-days', 'last-90-days', or
+ * 'last-28-days' (default).
+ * @param string $multiplier Optional. How many times the date range to get. This value can be specified if the
+ * range should be request multiple times back. Default 1.
+ * @param int $offset Days the range should be offset by. Default 1. Used by Search Console where
+ * data is delayed by two days.
+ * @param bool $previous Whether to select the previous period. Default false.
+ *
+ * @return array List with two elements, the first with the start date and the second with the end date, both as
+ * 'Y-m-d'.
+ */
+ protected function parse_date_range( $range, $multiplier = 1, $offset = 1, $previous = false ) {
+ preg_match( '*-(\d+)-*', $range, $matches );
+ $number_of_days = $multiplier * ( isset( $matches[1] ) ? $matches[1] : 28 );
+
+ // Calculate the end date. For previous period requests, offset period by the number of days in the request.
+ $end_date_offset = $previous ? $offset + $number_of_days : $offset;
+ $date_end = gmdate( 'Y-m-d', strtotime( $end_date_offset . ' days ago' ) );
+
+ // Set the start date.
+ $start_date_offset = $end_date_offset + $number_of_days - 1;
+ $date_start = gmdate( 'Y-m-d', strtotime( $start_date_offset . ' days ago' ) );
+
+ return array( $date_start, $date_end );
+ }
+
+ /**
+ * Gets the output for a specific frontend hook.
+ *
+ * @since 1.0.0
+ *
+ * @param string $hook Frontend hook name, e.g. 'wp_head', 'wp_footer', etc.
+ * @return string Output the hook generates.
+ */
+ final protected function get_frontend_hook_output( $hook ) {
+ $current_user_id = get_current_user_id();
+
+ // Unset current user to make WordPress behave as if nobody was logged in.
+ wp_set_current_user( false );
+
+ ob_start();
+ do_action( $hook );
+ $output = ob_get_clean();
+
+ // Restore the current user.
+ wp_set_current_user( $current_user_id );
+
+ return $output;
+ }
+
+ /**
+ * Permutes site URL to cover all different variants of it (not considering the path).
+ *
+ * @since 1.0.0
+ *
+ * @param string $site_url Site URL to get permutations for.
+ * @return array List of permutations.
+ */
+ final protected function permute_site_url( $site_url ) {
+ $hostname = URL::parse( $site_url, PHP_URL_HOST );
+ $path = URL::parse( $site_url, PHP_URL_PATH );
+
+ return array_reduce(
+ $this->permute_site_hosts( $hostname ),
+ function ( $urls, $host ) use ( $path ) {
+ $host_with_path = $host . $path;
+ array_push( $urls, "https://$host_with_path", "http://$host_with_path" );
+ return $urls;
+ },
+ array()
+ );
+ }
+
+ /**
+ * Generates common variations of the given hostname.
+ *
+ * Returns a list of hostnames that includes:
+ * - (if IDN) in Punycode encoding
+ * - (if IDN) in Unicode encoding
+ * - with and without www. subdomain (including IDNs)
+ *
+ * @since 1.38.0
+ *
+ * @param string $hostname Hostname to generate variations of.
+ * @return string[] Hostname variations.
+ */
+ protected function permute_site_hosts( $hostname ) {
+ $punycode = new Punycode();
+ // See \Requests_IDNAEncoder::is_ascii.
+ $is_ascii = preg_match( '/(?:[^\x00-\x7F])/', $hostname ) !== 1;
+ $is_www = 0 === strpos( $hostname, 'www.' );
+ // Normalize hostname without www.
+ $hostname = $is_www ? substr( $hostname, strlen( 'www.' ) ) : $hostname;
+ $hosts = array( $hostname, "www.$hostname" );
+
+ try {
+ // An ASCII hostname can only be non-IDN or punycode-encoded.
+ if ( $is_ascii ) {
+ // If the hostname is in punycode encoding, add the decoded version to the list of hosts.
+ if ( 0 === strpos( $hostname, Punycode::PREFIX ) || false !== strpos( $hostname, '.' . Punycode::PREFIX ) ) {
+ $host_decoded = $punycode->decode( $hostname );
+ array_push( $hosts, $host_decoded, "www.$host_decoded" );
+ }
+ } else {
+ // If it's not ASCII, then add the punycode encoded version.
+ $host_encoded = $punycode->encode( $hostname );
+ array_push( $hosts, $host_encoded, "www.$host_encoded" );
+ }
+ } catch ( Exception $exception ) { // phpcs:ignore Generic.CodeAnalysis.EmptyStatement.DetectedCatch
+ // Do nothing.
+ }
+
+ return $hosts;
+ }
+
+ /**
+ * Gets the Google client the module uses.
+ *
+ * This method should be used to access the client.
+ *
+ * @since 1.0.0
+ * @since 1.2.0 Now returns Google_Site_Kit_Client instance.
+ * @since 1.35.0 Updated to be public.
+ *
+ * @return Google_Site_Kit_Client Google client instance.
+ *
+ * @throws Exception Thrown when the module did not correctly set up the client.
+ */
+ final public function get_client() {
+ if ( null === $this->google_client ) {
+ $client = $this->setup_client();
+ if ( ! $client instanceof Google_Site_Kit_Client ) {
+ throw new Exception( __( 'Google client not set up correctly.', 'google-site-kit' ) );
+ }
+ $this->google_client = $client;
+ }
+
+ return $this->google_client;
+ }
+
+ /**
+ * Gets the oAuth client instance to use for the given datapoint.
+ *
+ * @since 1.77.0
+ *
+ * @param Datapoint $datapoint Datapoint definition.
+ * @return OAuth_Client OAuth_Client instance.
+ */
+ private function get_oauth_client_for_datapoint( Datapoint $datapoint ) {
+ if (
+ $this instanceof Module_With_Owner
+ && $this->is_shareable()
+ && $datapoint->is_shareable()
+ && $this->get_owner_id() !== get_current_user_id()
+ && ! $this->is_recoverable()
+ && current_user_can( Permissions::READ_SHARED_MODULE_DATA, $this->slug )
+ ) {
+ $oauth_client = $this->get_owner_oauth_client();
+
+ try {
+ $this->validate_base_scopes( $oauth_client );
+ return $oauth_client;
+ } catch ( Exception $exception ) { // phpcs:ignore Generic.CodeAnalysis.EmptyStatement.DetectedCatch
+ // Fallthrough to default oauth client if scopes are unsatisfied.
+ }
+ }
+
+ return $this->authentication->get_oauth_client();
+ }
+
+ /**
+ * Gets the Google service for the given identifier.
+ *
+ * This method should be used to access Google services.
+ *
+ * @since 1.0.0
+ *
+ * @param string $identifier Identifier for the service.
+ * @return Google_Service Google service instance.
+ *
+ * @throws Exception Thrown when the module did not correctly set up the services or when the identifier is invalid.
+ */
+ final protected function get_service( $identifier ) {
+ if ( null === $this->google_services ) {
+ $services = $this->setup_services( $this->get_client() );
+ if ( ! is_array( $services ) ) {
+ throw new Exception( __( 'Google services not set up correctly.', 'google-site-kit' ) );
+ }
+ foreach ( $services as $service ) {
+ if ( ! $service instanceof Google_Service ) {
+ throw new Exception( __( 'Google services not set up correctly.', 'google-site-kit' ) );
+ }
+ }
+ $this->google_services = $services;
+ }
+
+ if ( ! isset( $this->google_services[ $identifier ] ) ) {
+ /* translators: %s: service identifier */
+ throw new Exception( sprintf( __( 'Google service identified by %s does not exist.', 'google-site-kit' ), $identifier ) );
+ }
+
+ return $this->google_services[ $identifier ];
+ }
+
+ /**
+ * Sets up information about the module.
+ *
+ * @since 1.0.0
+ *
+ * @return array Associative array of module info.
+ */
+ abstract protected function setup_info();
+
+ /**
+ * Sets up the Google client the module should use.
+ *
+ * This method is invoked once by {@see Module::get_client()} to lazily set up the client when it is requested
+ * for the first time.
+ *
+ * @since 1.0.0
+ * @since 1.2.0 Now returns Google_Site_Kit_Client instance.
+ *
+ * @return Google_Site_Kit_Client Google client instance.
+ */
+ protected function setup_client() {
+ return $this->authentication->get_oauth_client()->get_client();
+ }
+
+ /**
+ * Sets up the Google services the module should use.
+ *
+ * This method is invoked once by {@see Module::get_service()} to lazily set up the services when one is requested
+ * for the first time.
+ *
+ * @since 1.0.0
+ * @since 1.2.0 Now requires Google_Site_Kit_Client instance.
+ *
+ * @param Google_Site_Kit_Client $client Google client instance.
+ * @return array Google services as $identifier => $service_instance pairs. Every $service_instance must be an
+ * instance of Google_Service.
+ */
+ protected function setup_services( Google_Site_Kit_Client $client ) {
+ return array();
+ }
+
+ /**
+ * Sets whether or not to return raw requests and returns a callback to reset to the previous value.
+ *
+ * @since 1.2.0
+ *
+ * @param bool $defer Whether or not to return raw requests.
+ * @return callable Callback function that resets to the original $defer value.
+ */
+ protected function with_client_defer( $defer ) {
+ return $this->get_client()->withDefer( $defer );
+ }
+
+ /**
+ * Parses information about the module.
+ *
+ * @since 1.0.0
+ *
+ * @param array $info Associative array of module info.
+ * @return array Parsed $info.
+ */
+ private function parse_info( array $info ) {
+ $info = wp_parse_args(
+ $info,
+ array(
+ 'slug' => '',
+ 'name' => '',
+ 'description' => '',
+ 'order' => 10,
+ 'homepage' => '',
+ 'feature' => '',
+ 'depends_on' => array(),
+ 'force_active' => static::is_force_active(),
+ 'internal' => false,
+ )
+ );
+
+ if ( empty( $info['name'] ) && ! empty( $info['slug'] ) ) {
+ $info['name'] = $info['slug'];
+ }
+
+ $info['depends_on'] = (array) $info['depends_on'];
+
+ return $info;
+ }
+
+ /**
+ * Transforms an exception into a WP_Error object.
+ *
+ * @since 1.0.0
+ * @since 1.49.0 Uses the new `Google_Proxy::setup_url_v2` method when the `serviceSetupV2` feature flag is enabled.
+ * @since 1.70.0 $datapoint parameter is optional.
+ *
+ * @param Exception $e Exception object.
+ * @param string $datapoint Optional. Datapoint originally requested. Default is an empty string.
+ * @return WP_Error WordPress error object.
+ */
+ protected function exception_to_error( Exception $e, $datapoint = '' ) {
+ if ( $e instanceof WP_Errorable ) {
+ return $e->to_wp_error();
+ }
+
+ $code = $e->getCode();
+
+ $message = $e->getMessage();
+ $status = is_numeric( $code ) && $code ? (int) $code : 500;
+ $reason = '';
+ $reconnect_url = '';
+
+ if ( $e instanceof Google_Service_Exception ) {
+ $errors = $e->getErrors();
+ if ( isset( $errors[0]['message'] ) ) {
+ $message = $errors[0]['message'];
+ }
+ if ( isset( $errors[0]['reason'] ) ) {
+ $reason = $errors[0]['reason'];
+ }
+ } elseif ( $e instanceof Google_Proxy_Code_Exception ) {
+ $status = 401;
+ $code = $message;
+ $auth_client = $this->authentication->get_oauth_client();
+ $message = $auth_client->get_error_message( $code );
+ $google_proxy = $this->authentication->get_google_proxy();
+ $credentials = $this->authentication->credentials()->get();
+ $params = array(
+ 'code' => $e->getAccessCode(),
+ 'site_id' => ! empty( $credentials['oauth2_client_id'] ) ? $credentials['oauth2_client_id'] : '',
+ );
+ $params = $google_proxy->add_setup_step_from_error_code( $params, $code );
+ $reconnect_url = $google_proxy->setup_url( $params );
+ }
+
+ if ( empty( $code ) ) {
+ $code = 'unknown';
+ }
+
+ $data = array(
+ 'status' => $status,
+ 'reason' => $reason,
+ );
+
+ if ( ! empty( $reconnect_url ) ) {
+ $data['reconnectURL'] = $reconnect_url;
+ }
+
+ return new WP_Error( $code, $message, $data );
+ }
+
+ /**
+ * Parses the string list into an array of strings.
+ *
+ * @since 1.15.0
+ *
+ * @param string|array $items Items to parse.
+ * @return array An array of string items.
+ */
+ protected function parse_string_list( $items ) {
+ if ( is_string( $items ) ) {
+ $items = explode( ',', $items );
+ }
+
+ if ( ! is_array( $items ) || empty( $items ) ) {
+ return array();
+ }
+
+ $items = array_map(
+ function( $item ) {
+ if ( ! is_string( $item ) ) {
+ return false;
+ }
+
+ $item = trim( $item );
+ if ( empty( $item ) ) {
+ return false;
+ }
+
+ return $item;
+ },
+ $items
+ );
+
+ $items = array_filter( $items );
+ $items = array_values( $items );
+
+ return $items;
+ }
+
+ /**
+ * Determines whether the current module is forced to be active or not.
+ *
+ * @since 1.49.0
+ *
+ * @return bool TRUE if the module forced to be active, otherwise FALSE.
+ */
+ public static function is_force_active() {
+ return false;
+ }
+
+ /**
+ * Checks whether the module is shareable.
+ *
+ * @since 1.50.0
+ *
+ * @return bool True if module is shareable, false otherwise.
+ */
+ public function is_shareable() {
+ if ( $this instanceof Module_With_Owner && $this->is_connected() ) {
+ $datapoints = $this->get_datapoint_definitions();
+ foreach ( $datapoints as $details ) {
+ if ( ! empty( $details['shareable'] ) ) {
+ return true;
+ }
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Checks whether the module is recoverable.
+ *
+ * @since 1.78.0
+ *
+ * @return bool
+ */
+ public function is_recoverable() {
+ /**
+ * Filters the recoverable status of the module.
+ *
+ * @since 1.78.0
+ * @param bool $_ Whether or not the module is recoverable. Default: false
+ * @param string $slug Module slug.
+ */
+ return (bool) apply_filters( 'googlesitekit_is_module_recoverable', false, $this->slug );
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Modules/Module_Registry.php b/wp-content/plugins/google-site-kit/includes/Core/Modules/Module_Registry.php
new file mode 100644
index 000000000..8c9b9f321
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Modules/Module_Registry.php
@@ -0,0 +1,67 @@
+registry[ $module_classname ] = $module_classname;
+ }
+
+ /**
+ * Gets all registered module class names.
+ *
+ * @since 1.21.0
+ *
+ * @return string[] Registered module class names.
+ */
+ public function get_all() {
+ return array_keys( $this->registry );
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Modules/Module_Settings.php b/wp-content/plugins/google-site-kit/includes/Core/Modules/Module_Settings.php
new file mode 100644
index 000000000..5d86ce8db
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Modules/Module_Settings.php
@@ -0,0 +1,99 @@
+add_option_default_filters();
+ }
+
+ /**
+ * Merges an array of settings to update.
+ *
+ * Only existing keys will be updated.
+ *
+ * @since 1.3.0
+ *
+ * @param array $partial Partial settings array to save.
+ *
+ * @return bool True on success, false on failure.
+ */
+ public function merge( array $partial ) {
+ $settings = $this->get();
+ $partial = array_filter(
+ $partial,
+ function ( $value ) {
+ return null !== $value;
+ }
+ );
+ $updated = array_intersect_key( $partial, $settings );
+
+ return $this->set( array_merge( $settings, $updated ) );
+ }
+
+ /**
+ * Registers a filter to ensure default values are present in the saved option.
+ *
+ * @since 1.2.0
+ */
+ protected function add_option_default_filters() {
+ add_filter(
+ 'option_' . static::OPTION,
+ function ( $option ) {
+ if ( ! is_array( $option ) ) {
+ return $this->get_default();
+ }
+ return $option;
+ },
+ 0
+ );
+
+ // Fill in any missing keys with defaults.
+ // Must run later to not conflict with legacy key migration.
+ add_filter(
+ 'option_' . static::OPTION,
+ function ( $option ) {
+ if ( is_array( $option ) ) {
+ return $option + $this->get_default();
+ }
+ return $option;
+ },
+ 99
+ );
+ }
+
+ /**
+ * Gets the expected value type.
+ *
+ * @since 1.2.0
+ *
+ * @return string The type name.
+ */
+ protected function get_type() {
+ return 'object';
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Modules/Module_Sharing_Settings.php b/wp-content/plugins/google-site-kit/includes/Core/Modules/Module_Sharing_Settings.php
new file mode 100644
index 000000000..43bc3ed9e
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Modules/Module_Sharing_Settings.php
@@ -0,0 +1,262 @@
+ $sharing_settings ) {
+ $sanitized_option[ $module_slug ] = array();
+
+ if ( isset( $sharing_settings['sharedRoles'] ) ) {
+ $filtered_shared_roles = $this->filter_shared_roles( $this->sanitize_string_list( $sharing_settings['sharedRoles'] ) );
+
+ $sanitized_option[ $module_slug ]['sharedRoles'] = $filtered_shared_roles;
+ }
+
+ if ( isset( $sharing_settings['management'] ) ) {
+ $sanitized_option[ $module_slug ]['management'] = (string) $sharing_settings['management'];
+ }
+ }
+
+ return $sanitized_option;
+ };
+ }
+
+ /**
+ * Filters empty or non-string elements from a given array.
+ *
+ * @since 1.50.0
+ *
+ * @param array $elements Array to check.
+ * @return array Empty array or a filtered array containing only non-empty strings.
+ */
+ private function sanitize_string_list( $elements = array() ) {
+ if ( ! is_array( $elements ) ) {
+ $elements = array( $elements );
+ }
+
+ if ( empty( $elements ) ) {
+ return array();
+ }
+
+ $filtered_elements = array_filter(
+ $elements,
+ function( $element ) {
+ return is_string( $element ) && ! empty( $element );
+ }
+ );
+ // Avoid index gaps for filtered values.
+ return array_values( $filtered_elements );
+ }
+
+ /**
+ * Filters the shared roles to only include roles with the edit_posts capability.
+ *
+ * @since 1.85.0.
+ *
+ * @param array $shared_roles The shared roles list.
+ * @return string[] The sanitized shared roles list.
+ */
+ private function filter_shared_roles( array $shared_roles ) {
+ $filtered_shared_roles = array_filter(
+ $shared_roles,
+ function( $role_slug ) {
+ $role = get_role( $role_slug );
+
+ if ( empty( $role ) || ! $role->has_cap( 'edit_posts' ) ) {
+ return false;
+ }
+
+ return true;
+ }
+ );
+
+ return array_values( $filtered_shared_roles );
+ }
+
+ /**
+ * Gets the settings after filling in default values.
+ *
+ * @since 1.50.0
+ *
+ * @return array Value set for the option, or registered default if not set.
+ */
+ public function get() {
+ $settings = parent::get();
+
+ foreach ( $settings as $module_slug => $sharing_settings ) {
+ if ( ! isset( $sharing_settings['sharedRoles'] ) || ! is_array( $sharing_settings['sharedRoles'] ) ) {
+ $settings[ $module_slug ]['sharedRoles'] = array();
+ }
+ if ( ! isset( $sharing_settings['management'] ) || ! in_array( $sharing_settings['management'], array( 'all_admins', 'owner' ), true ) ) {
+ $settings[ $module_slug ]['management'] = 'owner';
+ }
+
+ if ( isset( $sharing_settings['sharedRoles'] ) && is_array( $sharing_settings['sharedRoles'] ) ) {
+ $filtered_shared_roles = $this->filter_shared_roles( $sharing_settings['sharedRoles'] );
+ $settings[ $module_slug ]['sharedRoles'] = $filtered_shared_roles;
+ }
+ }
+
+ return $settings;
+ }
+
+ /**
+ * Merges a partial Module_Sharing_Settings option array into existing sharing settings.
+ *
+ * @since 1.75.0
+ * @since 1.77.0 Removed capability checks.
+ *
+ * @param array $partial Partial settings array to update existing settings with.
+ *
+ * @return bool True if sharing settings option was updated, false otherwise.
+ */
+ public function merge( array $partial ) {
+ $settings = $this->get();
+ $partial = array_filter(
+ $partial,
+ function ( $value ) {
+ return ! empty( $value );
+ }
+ );
+
+ return $this->set( $this->array_merge_deep( $settings, $partial ) );
+ }
+
+ /**
+ * Unsets the settings for a given module.
+ *
+ * @since 1.68.0
+ *
+ * @param string $slug Module slug.
+ */
+ public function unset_module( $slug ) {
+ $settings = $this->get();
+
+ if ( isset( $settings[ $slug ] ) ) {
+ unset( $settings[ $slug ] );
+ $this->set( $settings );
+ }
+ }
+
+ /**
+ * Gets the combined roles that are set as shareable for all modules.
+ *
+ * @since 1.69.0
+ *
+ * @return array Combined array of shared roles for all modules.
+ */
+ public function get_all_shared_roles() {
+ $shared_roles = array();
+ $settings = $this->get();
+ foreach ( $settings as $sharing_settings ) {
+ if ( ! isset( $sharing_settings['sharedRoles'] ) ) {
+ continue;
+ }
+
+ $shared_roles = array_merge( $shared_roles, $sharing_settings['sharedRoles'] );
+ }
+ return array_unique( $shared_roles );
+ }
+
+ /**
+ * Gets the shared roles for the given module slug.
+ *
+ * @since 1.69.0
+ *
+ * @param string $slug Module slug.
+ * @return array list of shared roles for the module, otherwise an empty list.
+ */
+ public function get_shared_roles( $slug ) {
+ $settings = $this->get();
+
+ if ( isset( $settings[ $slug ]['sharedRoles'] ) ) {
+ return $settings[ $slug ]['sharedRoles'];
+ }
+
+ return array();
+ }
+
+ /**
+ * Merges two arrays recursively to a specific depth.
+ *
+ * When array1 and array2 have the same string keys, it overwrites
+ * the elements of array1 with elements of array2. Otherwise, it adds/appends
+ * elements of array2.
+ *
+ * @since 1.77.0
+ *
+ * @param array $array1 First array.
+ * @param array $array2 Second array.
+ * @param int $depth Optional. Depth to merge to. Default is 1.
+ *
+ * @return array Merged array.
+ */
+ private function array_merge_deep( $array1, $array2, $depth = 1 ) {
+ foreach ( $array2 as $key => $value ) {
+ if ( $depth > 0 && is_array( $value ) ) {
+ $array1_key = isset( $array1[ $key ] ) ? $array1[ $key ] : null;
+ $array1[ $key ] = $this->array_merge_deep( $array1_key, $value, $depth - 1 );
+ } else {
+ $array1[ $key ] = $value;
+ }
+ }
+
+ return $array1;
+ }
+
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Modules/Module_With_Activation.php b/wp-content/plugins/google-site-kit/includes/Core/Modules/Module_With_Activation.php
new file mode 100644
index 000000000..92770cf0a
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Modules/Module_With_Activation.php
@@ -0,0 +1,27 @@
+registerable_assets ) {
+ $this->registerable_assets = $this->setup_assets();
+ }
+
+ return $this->registerable_assets;
+ }
+
+ /**
+ * Enqueues all assets necessary for the module.
+ *
+ * This default implementation simply enqueues all assets that the module
+ * has registered.
+ *
+ * @since 1.7.0
+ * @since 1.37.0 Added the $asset_context argument; only enqueue assets in the correct context.
+ *
+ * @param string $asset_context The page context to load this asset, see `Asset::CONTEXT_*` constants.
+ */
+ public function enqueue_assets( $asset_context = Asset::CONTEXT_ADMIN_SITEKIT ) {
+ $assets = $this->get_assets();
+ array_walk(
+ $assets,
+ function( Asset $asset, $index, $asset_context ) {
+ if ( $asset->has_context( $asset_context ) ) {
+ $asset->enqueue();
+ }
+ },
+ $asset_context
+ );
+ }
+
+ /**
+ * Sets up the module's assets to register.
+ *
+ * @since 1.7.0
+ *
+ * @return Asset[] List of Asset objects.
+ */
+ abstract protected function setup_assets();
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Modules/Module_With_Deactivation.php b/wp-content/plugins/google-site-kit/includes/Core/Modules/Module_With_Deactivation.php
new file mode 100644
index 000000000..c682bc485
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Modules/Module_With_Deactivation.php
@@ -0,0 +1,27 @@
+get_settings()->get();
+ if ( empty( $settings['ownerID'] ) ) {
+ return 0;
+ }
+
+ return $settings['ownerID'];
+ }
+
+ /**
+ * Gets the OAuth_Client instance for the module owner.
+ *
+ * @since 1.77.0
+ *
+ * @return OAuth_Client OAuth_Client instance.
+ */
+ public function get_owner_oauth_client() {
+ if ( $this->owner_oauth_client instanceof OAuth_Client ) {
+ return $this->owner_oauth_client;
+ }
+
+ $user_options = new User_Options( $this->context, $this->get_owner_id() );
+
+ $this->owner_oauth_client = new OAuth_Client(
+ $this->context,
+ $this->options,
+ $user_options,
+ $this->authentication->credentials(),
+ $this->authentication->get_google_proxy(),
+ new Profile( $user_options ),
+ new Token( $user_options )
+ );
+
+ return $this->owner_oauth_client;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Modules/Module_With_Persistent_Registration.php b/wp-content/plugins/google-site-kit/includes/Core/Modules/Module_With_Persistent_Registration.php
new file mode 100644
index 000000000..b9b752127
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Modules/Module_With_Persistent_Registration.php
@@ -0,0 +1,29 @@
+get_scopes() );
+ }
+ );
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Modules/Module_With_Service_Entity.php b/wp-content/plugins/google-site-kit/includes/Core/Modules/Module_With_Service_Entity.php
new file mode 100644
index 000000000..ffdb91014
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Modules/Module_With_Service_Entity.php
@@ -0,0 +1,32 @@
+settings instanceof Module_Settings ) {
+ $this->settings = $this->setup_settings();
+ }
+
+ return $this->settings;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Modules/Modules.php b/wp-content/plugins/google-site-kit/includes/Core/Modules/Modules.php
new file mode 100644
index 000000000..fee94ad24
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Modules/Modules.php
@@ -0,0 +1,1725 @@
+ $module pairs.
+ *
+ * @since 1.0.0
+ * @var array
+ */
+ private $modules = array();
+
+ /**
+ * Map of module slugs and which other modules they depend on.
+ *
+ * @since 1.0.0
+ * @var array
+ */
+ private $dependencies = array();
+
+ /**
+ * Map of module slugs and which other modules depend on them.
+ *
+ * @since 1.0.0
+ * @var array
+ */
+ private $dependants = array();
+
+ /**
+ * Module_Registry instance.
+ *
+ * @since 1.21.0
+ * @var Module_Registry
+ */
+ private $registry;
+
+ /**
+ * Assets API instance.
+ *
+ * @since 1.40.0
+ * @var Assets
+ */
+ private $assets;
+
+ /**
+ * Core module class names.
+ *
+ * @since 1.21.0
+ * @var string[] Core module class names.
+ */
+ private $core_modules = array(
+ Site_Verification::MODULE_SLUG => Site_Verification::class,
+ Search_Console::MODULE_SLUG => Search_Console::class,
+ Analytics::MODULE_SLUG => Analytics::class,
+ Optimize::MODULE_SLUG => Optimize::class,
+ Tag_Manager::MODULE_SLUG => Tag_Manager::class,
+ AdSense::MODULE_SLUG => AdSense::class,
+ PageSpeed_Insights::MODULE_SLUG => PageSpeed_Insights::class,
+ );
+
+ /**
+ * Constructor.
+ *
+ * @since 1.0.0
+ *
+ * @param Context $context Plugin context.
+ * @param Options $options Optional. Option API instance. Default is a new instance.
+ * @param User_Options $user_options Optional. User Option API instance. Default is a new instance.
+ * @param Authentication $authentication Optional. Authentication instance. Default is a new instance.
+ * @param Assets $assets Optional. Assets API instance. Default is a new instance.
+ */
+ public function __construct(
+ Context $context,
+ Options $options = null,
+ User_Options $user_options = null,
+ Authentication $authentication = null,
+ Assets $assets = null
+ ) {
+ $this->context = $context;
+ $this->options = $options ?: new Options( $this->context );
+ $this->sharing_settings = new Module_Sharing_Settings( $this->options );
+ $this->user_options = $user_options ?: new User_Options( $this->context );
+ $this->authentication = $authentication ?: new Authentication( $this->context, $this->options, $this->user_options );
+ $this->assets = $assets ?: new Assets( $this->context );
+
+ $this->core_modules[ Analytics_4::MODULE_SLUG ] = Analytics_4::class;
+
+ // Preferably no features should be checked here, or any time prior to
+ // Modules::register() being called to add the 'googlesitekit_features_request_data'
+ // filter callback. For any feature flags checked in this method, a workaround needs
+ // to be added to Authentication::filter_features_via_proxy() so that the remote
+ // features request is not triggered too early.
+
+ if ( Feature_Flags::enabled( 'ideaHubModule' ) ) {
+ $this->core_modules[ Idea_Hub::MODULE_SLUG ] = Idea_Hub::class;
+ }
+
+ if ( self::should_enable_twg() ) {
+ $this->core_modules[ Thank_With_Google::MODULE_SLUG ] = Thank_With_Google::class;
+ }
+ }
+
+ /**
+ * Determines if Thank with Google module should be enabled.
+ *
+ * @since 1.83.0
+ *
+ * @return bool True if the module should be enabled, false otherwise.
+ */
+ public static function should_enable_twg() {
+ if ( ! Feature_Flags::enabled( 'twgModule' ) ) {
+ return false;
+ }
+
+ if ( Build_Mode::get_mode() === Build_Mode::MODE_DEVELOPMENT ) {
+ return true;
+ }
+
+ if ( 'https' === URL::parse( home_url(), PHP_URL_SCHEME ) ) {
+ return true;
+ }
+
+ // Because we aren't in development mode and haven't detected SSL being enabled, TwG should
+ // not be enabled.
+ return false;
+ }
+
+ /**
+ * Registers functionality through WordPress hooks.
+ *
+ * @since 1.0.0
+ */
+ public function register() {
+ add_filter(
+ 'googlesitekit_features_request_data',
+ function( $body ) {
+ $active_modules = $this->get_active_modules();
+ $connected_modules = array_filter(
+ $active_modules,
+ function( $module ) {
+ return $module->is_connected();
+ }
+ );
+
+ $body['active_modules'] = implode( ' ', array_keys( $active_modules ) );
+ $body['connected_modules'] = implode( ' ', array_keys( $connected_modules ) );
+ return $body;
+ }
+ );
+
+ add_filter(
+ 'googlesitekit_rest_routes',
+ function( $routes ) {
+ return array_merge( $routes, $this->get_rest_routes() );
+ }
+ );
+
+ add_filter(
+ 'googlesitekit_apifetch_preload_paths',
+ function ( $paths ) {
+ $modules_routes = array(
+ '/' . REST_Routes::REST_ROOT . '/core/modules/data/list',
+ );
+
+ return array_merge( $paths, $modules_routes );
+ }
+ );
+
+ $available_modules = $this->get_available_modules();
+ array_walk(
+ $available_modules,
+ function( Module $module ) {
+ if ( $module instanceof Module_With_Settings ) {
+ $module->get_settings()->register();
+ }
+
+ if ( $module instanceof Module_With_Persistent_Registration ) {
+ $module->register_persistent();
+ }
+ }
+ );
+
+ $this->sharing_settings->register();
+
+ if ( Feature_Flags::enabled( 'dashboardSharing' ) ) {
+ ( new REST_Dashboard_Sharing_Controller( $this ) )->register();
+ }
+
+ add_filter(
+ 'googlesitekit_assets',
+ function( $assets ) use ( $available_modules ) {
+ foreach ( $available_modules as $module ) {
+ if ( $module instanceof Module_With_Assets ) {
+ $assets = array_merge( $assets, $module->get_assets() );
+ }
+ }
+ return $assets;
+ }
+ );
+
+ $active_modules = $this->get_active_modules();
+ array_walk(
+ $active_modules,
+ function( Module $module ) {
+ $module->register();
+ }
+ );
+
+ add_filter(
+ 'googlesitekit_apifetch_preload_paths',
+ function ( $paths ) use ( $active_modules ) {
+ $settings_routes = array_map(
+ function ( Module $module ) {
+ if ( $module instanceof Module_With_Settings ) {
+ return '/' . REST_Routes::REST_ROOT . "/modules/{$module->slug}/data/settings";
+ }
+ return null;
+ },
+ array_values( $active_modules )
+ );
+
+ return array_merge( $paths, array_filter( $settings_routes ) );
+ }
+ );
+
+ add_action(
+ 'googlesitekit_authorize_user',
+ function( $token_response ) {
+ if ( empty( $token_response['analytics_configuration'] ) ) {
+ return;
+ }
+
+ // Do nothing if the Analytics module is already activated.
+ if ( $this->is_module_active( Analytics::MODULE_SLUG ) ) {
+ return;
+ }
+
+ $this->activate_module( Analytics::MODULE_SLUG );
+
+ $extra_scopes = $this->user_options->get( OAuth_Client::OPTION_ADDITIONAL_AUTH_SCOPES );
+ if ( is_array( $extra_scopes ) ) {
+ $readonly_scope_index = array_search( Analytics::READONLY_SCOPE, $extra_scopes, true );
+ if ( $readonly_scope_index >= 0 ) {
+ unset( $extra_scopes[ $readonly_scope_index ] );
+
+ $auth_scopes = $this->user_options->get( OAuth_Client::OPTION_AUTH_SCOPES );
+ if ( is_array( $auth_scopes ) ) {
+ $auth_scopes[] = Analytics::READONLY_SCOPE;
+ $auth_scopes = array_unique( $auth_scopes );
+
+ $this->user_options->set( OAuth_Client::OPTION_ADDITIONAL_AUTH_SCOPES, array_values( $extra_scopes ) );
+ $this->user_options->set( OAuth_Client::OPTION_AUTH_SCOPES, $auth_scopes );
+ }
+ }
+ }
+
+ try {
+ $analytics = $this->get_module( Analytics::MODULE_SLUG );
+ $analytics->handle_token_response_data( $token_response );
+ } catch ( Exception $e ) {
+ return;
+ }
+ },
+ 1
+ );
+
+ add_filter( 'googlesitekit_inline_base_data', $this->get_method_proxy( 'inline_js_data' ) );
+ add_filter( 'googlesitekit_inline_tracking_data', $this->get_method_proxy( 'inline_js_data' ) );
+
+ add_filter(
+ 'googlesitekit_dashboard_sharing_data',
+ function ( $data ) {
+ $data['sharedOwnershipModules'] = array_keys( $this->get_shared_ownership_modules() );
+ $data['defaultSharedOwnershipModuleSettings'] = $this->populate_default_shared_ownership_module_settings( array() );
+
+ return $data;
+ }
+ );
+
+ add_filter(
+ 'googlesitekit_module_exists',
+ function ( $exists, $slug ) {
+ return $this->module_exists( $slug );
+ },
+ 10,
+ 2
+ );
+
+ add_filter(
+ 'googlesitekit_is_module_recoverable',
+ function ( $recoverable, $slug ) {
+ return $this->is_module_recoverable( $slug );
+ },
+ 10,
+ 2
+ );
+
+ add_filter( 'option_' . Module_Sharing_Settings::OPTION, $this->get_method_proxy( 'populate_default_shared_ownership_module_settings' ) );
+ add_filter( 'default_option_' . Module_Sharing_Settings::OPTION, $this->get_method_proxy( 'populate_default_shared_ownership_module_settings' ), 20 );
+
+ add_action(
+ 'add_option_' . Module_Sharing_Settings::OPTION,
+ function( $option, $values ) {
+ array_walk(
+ $values,
+ function( $value, $module_slug ) {
+ if ( ! $this->module_exists( $module_slug ) ) {
+ return;
+ }
+
+ $module = $this->get_module( $module_slug );
+
+ if ( ! $module instanceof Module_With_Service_Entity ) {
+
+ $module->get_settings()->merge(
+ array(
+ 'ownerID' => get_current_user_id(),
+ )
+ );
+
+ };
+ }
+ );
+ },
+ 10,
+ 2
+ );
+
+ add_action(
+ 'update_option_' . Module_Sharing_Settings::OPTION,
+ function( $old_values, $values ) {
+ if ( is_array( $values ) && is_array( $old_values ) ) {
+ array_walk(
+ $values,
+ function( $value, $module_slug ) use ( $old_values ) {
+ if ( ! $this->module_exists( $module_slug ) ) {
+ return;
+ }
+
+ $module = $this->get_module( $module_slug );
+
+ if ( ! $module instanceof Module_With_Service_Entity ) {
+ $changed_settings = false;
+
+ if ( is_array( $value ) ) {
+ array_walk(
+ $value,
+ function( $setting, $setting_key ) use ( $old_values, $module_slug, &$changed_settings ) {
+ // Check if old value is an array and set, then compare both arrays.
+ if (
+ is_array( $setting ) &&
+ isset( $old_values[ $module_slug ][ $setting_key ] ) &&
+ is_array( $old_values[ $module_slug ][ $setting_key ] )
+ ) {
+ sort( $setting );
+ sort( $old_values[ $module_slug ][ $setting_key ] );
+ if ( $setting !== $old_values[ $module_slug ][ $setting_key ] ) {
+ $changed_settings = true;
+ }
+ } elseif (
+ // If we don't have the old values or the types are different, then we have updated settings.
+ ! isset( $old_values[ $module_slug ][ $setting_key ] ) ||
+ gettype( $setting ) !== gettype( $old_values[ $module_slug ][ $setting_key ] ) ||
+ $setting !== $old_values[ $module_slug ][ $setting_key ]
+ ) {
+ $changed_settings = true;
+ }
+ }
+ );
+ }
+
+ if ( $changed_settings ) {
+ $module->get_settings()->merge(
+ array(
+ 'ownerID' => get_current_user_id(),
+ )
+ );
+ }
+ }
+ }
+ );
+ }
+ },
+ 10,
+ 2
+ );
+ }
+
+ /**
+ * Adds / modifies data to pass to JS.
+ *
+ * @since 1.78.0
+ *
+ * @param array $data Inline JS data.
+ * @return array Filtered $data.
+ */
+ private function inline_js_data( $data ) {
+ $all_active_modules = $this->get_active_modules();
+
+ $non_internal_active_modules = array_filter(
+ $all_active_modules,
+ function( Module $module ) {
+ return false === $module->internal;
+ }
+ );
+
+ $data['activeModules'] = array_keys( $non_internal_active_modules );
+
+ return $data;
+ }
+
+ /**
+ * Gets the reference to the Module_Sharing_Settings instance.
+ *
+ * @since 1.69.0
+ *
+ * @return Module_Sharing_Settings An instance of the Module_Sharing_Settings class.
+ */
+ public function get_module_sharing_settings() {
+ return $this->sharing_settings;
+ }
+
+ /**
+ * Gets the available modules.
+ *
+ * @since 1.0.0
+ * @since 1.85.0 Filter out modules which are missing any of the dependencies specified in `depends_on`.
+ *
+ * @return array Available modules as $slug => $module pairs.
+ */
+ public function get_available_modules() {
+ if ( empty( $this->modules ) ) {
+ $module_classes = $this->get_registry()->get_all();
+ foreach ( $module_classes as $module_class ) {
+ $instance = new $module_class( $this->context, $this->options, $this->user_options, $this->authentication, $this->assets );
+
+ $this->modules[ $instance->slug ] = $instance;
+ $this->dependencies[ $instance->slug ] = array();
+ $this->dependants[ $instance->slug ] = array();
+ }
+
+ uasort(
+ $this->modules,
+ function( Module $a, Module $b ) {
+ if ( $a->order === $b->order ) {
+ return 0;
+ }
+ return ( $a->order < $b->order ) ? -1 : 1;
+ }
+ );
+
+ // Remove any modules which are missing dependencies. This may occur as the result of a dependency
+ // being removed via the googlesitekit_available_modules filter.
+ $this->modules = array_filter(
+ $this->modules,
+ function( Module $module ) {
+ foreach ( $module->depends_on as $dependency ) {
+ if ( ! isset( $this->modules[ $dependency ] ) ) {
+ return false;
+ }
+ }
+ return true;
+ }
+ );
+
+ // Set up dependency maps.
+ foreach ( $this->modules as $module ) {
+ foreach ( $module->depends_on as $dependency ) {
+ if ( $module->slug === $dependency ) {
+ continue;
+ }
+
+ $this->dependencies[ $module->slug ][] = $dependency;
+ $this->dependants[ $dependency ][] = $module->slug;
+ }
+ }
+ }
+
+ return $this->modules;
+ }
+
+ /**
+ * Gets the active modules.
+ *
+ * @since 1.0.0
+ *
+ * @return array Active modules as $slug => $module pairs.
+ */
+ public function get_active_modules() {
+ $modules = $this->get_available_modules();
+ $option = $this->get_active_modules_option();
+
+ return array_filter(
+ $modules,
+ function( Module $module ) use ( $option ) {
+ // Force active OR manually active modules.
+ return $module->force_active || in_array( $module->slug, $option, true );
+ }
+ );
+ }
+
+ /**
+ * Gets the module identified by the given slug.
+ *
+ * @since 1.0.0
+ *
+ * @param string $slug Unique module slug.
+ * @return Module Module for the slug.
+ *
+ * @throws Exception Thrown when the module slug is invalid.
+ */
+ public function get_module( $slug ) {
+ $modules = $this->get_available_modules();
+
+ if ( ! isset( $modules[ $slug ] ) ) {
+ /* translators: %s: module slug */
+ throw new Exception( sprintf( __( 'Invalid module slug %s.', 'google-site-kit' ), $slug ) );
+ }
+
+ return $modules[ $slug ];
+ }
+
+ /**
+ * Checks if the module exists.
+ *
+ * @since 1.80.0
+ *
+ * @param string $slug Module slug.
+ * @return bool True if the module exists, false otherwise.
+ */
+ public function module_exists( $slug ) {
+ try {
+ $this->get_module( $slug );
+ return true;
+ } catch ( Exception $e ) {
+ return false;
+ }
+ }
+
+ /**
+ * Gets the list of module slugs the module with the given slug depends on.
+ *
+ * @since 1.0.0
+ *
+ * @param string $slug Unique module slug.
+ * @return array List of slugs for other modules that are dependencies.
+ *
+ * @throws Exception Thrown when the module slug is invalid.
+ */
+ public function get_module_dependencies( $slug ) {
+ $modules = $this->get_available_modules();
+
+ if ( ! isset( $modules[ $slug ] ) ) {
+ /* translators: %s: module slug */
+ throw new Exception( sprintf( __( 'Invalid module slug %s.', 'google-site-kit' ), $slug ) );
+ }
+
+ return $this->dependencies[ $slug ];
+ }
+
+ /**
+ * Gets the list of module slugs that depend on the module with the given slug.
+ *
+ * @since 1.0.0
+ *
+ * @param string $slug Unique module slug.
+ * @return array List of slugs for other modules that are dependants.
+ *
+ * @throws Exception Thrown when the module slug is invalid.
+ */
+ public function get_module_dependants( $slug ) {
+ $modules = $this->get_available_modules();
+
+ if ( ! isset( $modules[ $slug ] ) ) {
+ /* translators: %s: module slug */
+ throw new Exception( sprintf( __( 'Invalid module slug %s.', 'google-site-kit' ), $slug ) );
+ }
+
+ return $this->dependants[ $slug ];
+ }
+
+ /**
+ * Checks whether the module identified by the given slug is active.
+ *
+ * @since 1.0.0
+ *
+ * @param string $slug Unique module slug.
+ * @return bool True if module is active, false otherwise.
+ */
+ public function is_module_active( $slug ) {
+ $modules = $this->get_active_modules();
+
+ return isset( $modules[ $slug ] );
+ }
+
+ /**
+ * Checks whether the module identified by the given slug is connected.
+ *
+ * @since 1.0.0
+ *
+ * @param string $slug Unique module slug.
+ * @return bool True if module is connected, false otherwise.
+ */
+ public function is_module_connected( $slug ) {
+ try {
+ $module = $this->get_module( $slug );
+ } catch ( Exception $e ) {
+ return false;
+ }
+
+ return (bool) $module->is_connected();
+ }
+
+ /**
+ * Activates the module identified by the given slug.
+ *
+ * @since 1.0.0
+ *
+ * @param string $slug Unique module slug.
+ * @return bool True on success, false on failure.
+ */
+ public function activate_module( $slug ) {
+ try {
+ $module = $this->get_module( $slug );
+ } catch ( Exception $e ) {
+ return false;
+ }
+
+ // TODO: Remove this hack.
+ if ( Analytics::MODULE_SLUG === $slug ) {
+ // GA4 needs to be handled first to pass conditions below
+ // due to special handling in active modules option.
+ $this->activate_module( Analytics_4::MODULE_SLUG );
+ }
+
+ $option = $this->get_active_modules_option();
+
+ if ( in_array( $slug, $option, true ) ) {
+ return true;
+ }
+
+ $option[] = $slug;
+
+ $this->set_active_modules_option( $option );
+
+ if ( $module instanceof Module_With_Activation ) {
+ $module->on_activation();
+ }
+
+ return true;
+ }
+
+ /**
+ * Checks whether the module identified by the given slug is enabled by the option.
+ *
+ * @since 1.46.0
+ *
+ * @param string $slug Unique module slug.
+ * @return bool True if module has been manually enabled, false otherwise.
+ */
+ private function manually_enabled( $slug ) {
+ $option = $this->get_active_modules_option();
+ return in_array( $slug, $option, true );
+ }
+
+ /**
+ * Deactivates the module identified by the given slug.
+ *
+ * @since 1.0.0
+ *
+ * @param string $slug Unique module slug.
+ * @return bool True on success, false on failure.
+ */
+ public function deactivate_module( $slug ) {
+ try {
+ $module = $this->get_module( $slug );
+ } catch ( Exception $e ) {
+ return false;
+ }
+
+ // TODO: Remove this hack.
+ if ( Analytics::MODULE_SLUG === $slug ) {
+ // GA4 needs to be handled first to pass conditions below
+ // due to special handling in active modules option.
+ $this->deactivate_module( Analytics_4::MODULE_SLUG );
+ }
+
+ $option = $this->get_active_modules_option();
+
+ $key = array_search( $slug, $option, true );
+ if ( false === $key ) {
+ return true;
+ }
+
+ // Prevent deactivation if force-active.
+ if ( $module->force_active ) {
+ return false;
+ }
+
+ unset( $option[ $key ] );
+
+ $this->set_active_modules_option( array_values( $option ) );
+
+ if ( $module instanceof Module_With_Deactivation ) {
+ $module->on_deactivation();
+ }
+
+ $this->sharing_settings->unset_module( $slug );
+
+ return true;
+ }
+
+ /**
+ * Enqueues all module-specific assets.
+ *
+ * @since 1.7.0
+ */
+ public function enqueue_assets() {
+ $available_modules = $this->get_available_modules();
+ array_walk(
+ $available_modules,
+ function( Module $module ) {
+ if ( $module instanceof Module_With_Assets ) {
+ $module->enqueue_assets();
+ }
+ }
+ );
+ }
+
+ /**
+ * Gets the configured module registry instance.
+ *
+ * @since 1.21.0
+ *
+ * @return Module_Registry
+ */
+ protected function get_registry() {
+ if ( ! $this->registry instanceof Module_Registry ) {
+ $this->registry = $this->setup_registry();
+ }
+
+ return $this->registry;
+ }
+
+ /**
+ * Sets up a fresh module registry instance.
+ *
+ * @since 1.21.0
+ *
+ * @return Module_Registry
+ */
+ protected function setup_registry() {
+ $registry = new Module_Registry();
+ /**
+ * Filters core module slugs before registering them in the module registry. Each slug presented on this array will
+ * be registered for inclusion. If a module is forced to be active, then it will be included even if the module slug is
+ * removed from this filter.
+ *
+ * @since 1.49.0
+ *
+ * @param array $available_modules An array of core module slugs available for registration in the module registry.
+ * @return array An array of filtered module slugs.
+ */
+ $available_modules = (array) apply_filters( 'googlesitekit_available_modules', array_keys( $this->core_modules ) );
+ $modules = array_fill_keys( $available_modules, true );
+
+ foreach ( $this->core_modules as $slug => $module ) {
+ if ( isset( $modules[ $slug ] ) || call_user_func( array( $module, 'is_force_active' ) ) ) {
+ $registry->register( $module );
+ }
+ }
+
+ return $registry;
+ }
+
+ /**
+ * Gets related REST routes.
+ *
+ * @since 1.3.0
+ *
+ * @return array List of REST_Route objects.
+ */
+ private function get_rest_routes() {
+ $can_setup = function() {
+ return current_user_can( Permissions::SETUP );
+ };
+
+ $can_authenticate = function() {
+ return current_user_can( Permissions::AUTHENTICATE );
+ };
+
+ $can_list_data = function() {
+ return current_user_can( Permissions::VIEW_SPLASH ) || current_user_can( Permissions::VIEW_DASHBOARD );
+ };
+
+ $can_view_insights = function() {
+ // This accounts for routes that need to be called before user has completed setup flow.
+ if ( current_user_can( Permissions::SETUP ) ) {
+ return true;
+ }
+
+ return current_user_can( Permissions::VIEW_POSTS_INSIGHTS );
+ };
+
+ $can_manage_options = function() {
+ // This accounts for routes that need to be called before user has completed setup flow.
+ if ( current_user_can( Permissions::SETUP ) ) {
+ return true;
+ }
+
+ return current_user_can( Permissions::MANAGE_OPTIONS );
+ };
+
+ $get_module_schema = function () {
+ return $this->get_module_schema();
+ };
+
+ return array(
+ new REST_Route(
+ 'core/modules/data/list',
+ array(
+ array(
+ 'methods' => WP_REST_Server::READABLE,
+ 'callback' => function( WP_REST_Request $request ) {
+ $modules = array_map(
+ array( $this, 'prepare_module_data_for_response' ),
+ $this->get_available_modules()
+ );
+ return new WP_REST_Response( array_values( $modules ) );
+ },
+ 'permission_callback' => $can_list_data,
+ ),
+ ),
+ array(
+ 'schema' => $get_module_schema,
+ )
+ ),
+ new REST_Route(
+ 'core/modules/data/activation',
+ array(
+ array(
+ 'methods' => WP_REST_Server::EDITABLE,
+ 'callback' => function( WP_REST_Request $request ) {
+ $data = $request['data'];
+ $slug = isset( $data['slug'] ) ? $data['slug'] : '';
+
+ try {
+ $this->get_module( $slug );
+ } catch ( Exception $e ) {
+ return new WP_Error( 'invalid_module_slug', $e->getMessage() );
+ }
+
+ $modules = $this->get_available_modules();
+
+ if ( ! empty( $data['active'] ) ) {
+ // Prevent activation if one of the dependencies is not active.
+ $dependency_slugs = $this->get_module_dependencies( $slug );
+ foreach ( $dependency_slugs as $dependency_slug ) {
+ if ( ! $this->is_module_active( $dependency_slug ) ) {
+ /* translators: %s: module name */
+ return new WP_Error( 'inactive_dependencies', sprintf( __( 'Module cannot be activated because of inactive dependency %s.', 'google-site-kit' ), $modules[ $dependency_slug ]->name ), array( 'status' => 500 ) );
+ }
+ }
+ if ( ! $this->activate_module( $slug ) ) {
+ return new WP_Error( 'cannot_activate_module', __( 'An internal error occurred while trying to activate the module.', 'google-site-kit' ), array( 'status' => 500 ) );
+ }
+ } else {
+ // Automatically deactivate dependants.
+ $dependant_slugs = $this->get_module_dependants( $slug );
+ foreach ( $dependant_slugs as $dependant_slug ) {
+ if ( $this->is_module_active( $dependant_slug ) ) {
+ if ( ! $this->deactivate_module( $dependant_slug ) ) {
+ /* translators: %s: module name */
+ return new WP_Error( 'cannot_deactivate_dependant', sprintf( __( 'Module cannot be deactivated because deactivation of dependant %s failed.', 'google-site-kit' ), $modules[ $dependant_slug ]->name ), array( 'status' => 500 ) );
+ }
+ }
+ }
+ if ( ! $this->deactivate_module( $slug ) ) {
+ return new WP_Error( 'cannot_deactivate_module', __( 'An internal error occurred while trying to deactivate the module.', 'google-site-kit' ), array( 'status' => 500 ) );
+ }
+ }
+
+ return new WP_REST_Response( array( 'success' => true ) );
+ },
+ 'permission_callback' => $can_manage_options,
+ 'args' => array(
+ 'data' => array(
+ 'type' => 'object',
+ 'required' => true,
+ ),
+ ),
+ ),
+ ),
+ array(
+ 'schema' => $get_module_schema,
+ )
+ ),
+ new REST_Route(
+ 'core/modules/data/info',
+ array(
+ array(
+ 'methods' => WP_REST_Server::READABLE,
+ 'callback' => function( WP_REST_Request $request ) {
+ try {
+ $module = $this->get_module( $request['slug'] );
+ } catch ( Exception $e ) {
+ return new WP_Error( 'invalid_module_slug', $e->getMessage() );
+ }
+
+ return new WP_REST_Response( $this->prepare_module_data_for_response( $module ) );
+ },
+ 'permission_callback' => $can_authenticate,
+ 'args' => array(
+ 'slug' => array(
+ 'type' => 'string',
+ 'description' => __( 'Identifier for the module.', 'google-site-kit' ),
+ 'sanitize_callback' => 'sanitize_key',
+ ),
+ ),
+ ),
+ ),
+ array(
+ 'schema' => $get_module_schema,
+ )
+ ),
+ new REST_Route(
+ self::REST_ENDPOINT_CHECK_ACCESS,
+ array(
+ array(
+ 'methods' => WP_REST_Server::EDITABLE,
+ 'callback' => function( WP_REST_Request $request ) {
+ $data = $request['data'];
+ $slug = isset( $data['slug'] ) ? $data['slug'] : '';
+
+ try {
+ $module = $this->get_module( $slug );
+ } catch ( Exception $e ) {
+ return new WP_Error( 'invalid_module_slug', __( 'Invalid module slug.', 'google-site-kit' ), array( 'status' => 404 ) );
+ }
+
+ if ( ! $this->is_module_connected( $slug ) ) {
+ return new WP_Error( 'module_not_connected', __( 'Module is not connected.', 'google-site-kit' ), array( 'status' => 400 ) );
+ }
+
+ if ( ! $module instanceof Module_With_Service_Entity ) {
+ if ( $module->is_shareable() ) {
+ return new WP_REST_Response(
+ array(
+ 'access' => true,
+ )
+ );
+ }
+
+ return new WP_Error( 'invalid_module', __( 'Module access cannot be checked.', 'google-site-kit' ), array( 'status' => 400 ) );
+ }
+
+ $access = $module->check_service_entity_access();
+
+ if ( is_wp_error( $access ) ) {
+ return $access;
+ }
+
+ return new WP_REST_Response(
+ array(
+ 'access' => $access,
+ )
+ );
+ },
+ 'permission_callback' => $can_setup,
+ 'args' => array(
+ 'slug' => array(
+ 'type' => 'string',
+ 'description' => __( 'Identifier for the module.', 'google-site-kit' ),
+ 'sanitize_callback' => 'sanitize_key',
+ ),
+ ),
+ ),
+ )
+ ),
+ new REST_Route(
+ 'modules/(?P[a-z0-9\-]+)/data/notifications',
+ array(
+ array(
+ 'methods' => WP_REST_Server::READABLE,
+ 'callback' => function( WP_REST_Request $request ) {
+ $slug = $request['slug'];
+ $modules = $this->get_available_modules();
+ if ( ! isset( $modules[ $slug ] ) ) {
+ return new WP_Error( 'invalid_module_slug', __( 'Invalid module slug.', 'google-site-kit' ), array( 'status' => 404 ) );
+ }
+ $notifications = array();
+ if ( $this->is_module_active( $slug ) ) {
+ $notifications = $modules[ $slug ]->get_data( 'notifications' );
+ if ( is_wp_error( $notifications ) ) {
+ // Don't consider it an error if the module does not have a 'notifications' datapoint.
+ if ( Invalid_Datapoint_Exception::WP_ERROR_CODE === $notifications->get_error_code() ) {
+ $notifications = array();
+ }
+ return $notifications;
+ }
+ }
+ return new WP_REST_Response( $notifications );
+ },
+ 'permission_callback' => $can_authenticate,
+ ),
+ ),
+ array(
+ 'args' => array(
+ 'slug' => array(
+ 'type' => 'string',
+ 'description' => __( 'Identifier for the module.', 'google-site-kit' ),
+ 'sanitize_callback' => 'sanitize_key',
+ ),
+ ),
+ )
+ ),
+ new REST_Route(
+ 'modules/(?P[a-z0-9\-]+)/data/settings',
+ array(
+ array(
+ 'methods' => WP_REST_Server::READABLE,
+ 'callback' => function( WP_REST_Request $request ) {
+ $slug = $request['slug'];
+ try {
+ $module = $this->get_module( $slug );
+ } catch ( Exception $e ) {
+ return new WP_Error( 'invalid_module_slug', __( 'Invalid module slug.', 'google-site-kit' ), array( 'status' => 404 ) );
+ }
+
+ if ( ! $module instanceof Module_With_Settings ) {
+ return new WP_Error( 'invalid_module_slug', __( 'Module does not support settings.', 'google-site-kit' ), array( 'status' => 400 ) );
+ }
+ return new WP_REST_Response( $module->get_settings()->get() );
+ },
+ 'permission_callback' => $can_manage_options,
+ ),
+ array(
+ 'methods' => WP_REST_Server::EDITABLE,
+ 'callback' => function( WP_REST_Request $request ) {
+ $slug = $request['slug'];
+ try {
+ $module = $this->get_module( $slug );
+ } catch ( Exception $e ) {
+ return new WP_Error( 'invalid_module_slug', __( 'Invalid module slug.', 'google-site-kit' ), array( 'status' => 404 ) );
+ }
+
+ if ( ! $module instanceof Module_With_Settings ) {
+ return new WP_Error( 'invalid_module_slug', __( 'Module does not support settings.', 'google-site-kit' ), array( 'status' => 400 ) );
+ }
+
+ do_action( 'googlesitekit_pre_save_settings_' . $slug );
+
+ $module->get_settings()->merge( (array) $request['data'] );
+
+ do_action( 'googlesitekit_save_settings_' . $slug );
+
+ return new WP_REST_Response( $module->get_settings()->get() );
+ },
+ 'permission_callback' => $can_manage_options,
+ 'args' => array(
+ 'data' => array(
+ 'type' => 'object',
+ 'description' => __( 'Settings to set.', 'google-site-kit' ),
+ 'validate_callback' => function( $value ) {
+ return is_array( $value );
+ },
+ ),
+ ),
+ ),
+ ),
+ array(
+ 'args' => array(
+ 'slug' => array(
+ 'type' => 'string',
+ 'description' => __( 'Identifier for the module.', 'google-site-kit' ),
+ 'sanitize_callback' => 'sanitize_key',
+ ),
+ ),
+ )
+ ),
+ new REST_Route(
+ 'modules/(?P[a-z0-9\-]+)/data/(?P[a-z\-]+)',
+ array(
+ array(
+ 'methods' => WP_REST_Server::READABLE,
+ 'callback' => function( WP_REST_Request $request ) {
+ $slug = $request['slug'];
+ try {
+ $module = $this->get_module( $slug );
+ } catch ( Exception $e ) {
+ return new WP_Error( 'invalid_module_slug', __( 'Invalid module slug.', 'google-site-kit' ), array( 'status' => 404 ) );
+ }
+
+ if ( ! $this->is_module_active( $slug ) ) {
+ return new WP_Error( 'module_not_active', __( 'Module must be active to request data.', 'google-site-kit' ), array( 'status' => 403 ) );
+ }
+
+ $data = $module->get_data( $request['datapoint'], $request->get_params() );
+ if ( is_wp_error( $data ) ) {
+ return $data;
+ }
+ return new WP_REST_Response( $data );
+ },
+ 'permission_callback' => $can_view_insights,
+ ),
+ array(
+ 'methods' => WP_REST_Server::EDITABLE,
+ 'callback' => function( WP_REST_Request $request ) {
+ $slug = $request['slug'];
+ try {
+ $module = $this->get_module( $slug );
+ } catch ( Exception $e ) {
+ return new WP_Error( 'invalid_module_slug', __( 'Invalid module slug.', 'google-site-kit' ), array( 'status' => 404 ) );
+ }
+
+ if ( ! $this->is_module_active( $slug ) ) {
+ return new WP_Error( 'module_not_active', __( 'Module must be active to request data.', 'google-site-kit' ), array( 'status' => 403 ) );
+ }
+
+ $data = isset( $request['data'] ) ? (array) $request['data'] : array();
+ $data = $module->set_data( $request['datapoint'], $data );
+ if ( is_wp_error( $data ) ) {
+ return $data;
+ }
+ return new WP_REST_Response( $data );
+ },
+ 'permission_callback' => $can_manage_options,
+ 'args' => array(
+ 'data' => array(
+ 'type' => 'object',
+ 'description' => __( 'Data to set.', 'google-site-kit' ),
+ 'validate_callback' => function( $value ) {
+ return is_array( $value );
+ },
+ ),
+ ),
+ ),
+ ),
+ array(
+ 'args' => array(
+ 'slug' => array(
+ 'type' => 'string',
+ 'description' => __( 'Identifier for the module.', 'google-site-kit' ),
+ 'sanitize_callback' => 'sanitize_key',
+ ),
+ 'datapoint' => array(
+ 'type' => 'string',
+ 'description' => __( 'Module data point to address.', 'google-site-kit' ),
+ 'sanitize_callback' => 'sanitize_key',
+ ),
+ ),
+ )
+ ),
+ new REST_Route(
+ 'core/modules/data/recover-modules',
+ array(
+ array(
+ 'methods' => WP_REST_Server::EDITABLE,
+ 'callback' => function( WP_REST_Request $request ) {
+ $data = $request['data'];
+ $slugs = isset( $data['slugs'] ) ? $data['slugs'] : array();
+
+ if ( ! is_array( $slugs ) || empty( $slugs ) ) {
+ return new WP_Error(
+ 'invalid_param',
+ __( 'Request parameter slugs is not valid.', 'google-site-kit' ),
+ array( 'status' => 400 )
+ );
+ }
+
+ $response = array(
+ 'success' => array(),
+ 'error' => array(),
+ );
+
+ foreach ( $slugs as $slug ) {
+ try {
+ $module = $this->get_module( $slug );
+ } catch ( Exception $e ) {
+ $response = $this->handle_module_recovery_error(
+ $slug,
+ $response,
+ new WP_Error(
+ 'invalid_module_slug',
+ $e->getMessage(),
+ array( 'status' => 404 )
+ )
+ );
+ continue;
+ }
+
+ if ( ! $module->is_shareable() ) {
+ $response = $this->handle_module_recovery_error(
+ $slug,
+ $response,
+ new WP_Error(
+ 'module_not_shareable',
+ __( 'Module is not shareable.', 'google-site-kit' ),
+ array( 'status' => 404 )
+ )
+ );
+ continue;
+ }
+
+ if ( ! $this->is_module_recoverable( $module ) ) {
+ $response = $this->handle_module_recovery_error(
+ $slug,
+ $response,
+ new WP_Error(
+ 'module_not_recoverable',
+ __( 'Module is not recoverable.', 'google-site-kit' ),
+ array( 'status' => 403 )
+ )
+ );
+ continue;
+ }
+
+ $check_access_endpoint = '/' . REST_Routes::REST_ROOT . '/' . self::REST_ENDPOINT_CHECK_ACCESS;
+ $check_access_request = new WP_REST_Request( 'POST', $check_access_endpoint );
+ $check_access_request->set_body_params(
+ array(
+ 'data' => array(
+ 'slug' => $slug,
+ ),
+ )
+ );
+ $check_access_response = rest_do_request( $check_access_request );
+
+ if ( is_wp_error( $check_access_response ) ) {
+ $response = $this->handle_module_recovery_error(
+ $slug,
+ $response,
+ $check_access_response
+ );
+ continue;
+ }
+ $access = isset( $check_access_response->data['access'] ) ? $check_access_response->data['access'] : false;
+ if ( ! $access ) {
+ $response = $this->handle_module_recovery_error(
+ $slug,
+ $response,
+ new WP_Error(
+ 'module_not_accessible',
+ __( 'Module is not accessible by current user.', 'google-site-kit' ),
+ array( 'status' => 403 )
+ )
+ );
+ continue;
+ }
+
+ // Update the module's ownerID to the ID of the user making the request.
+ $module_setting_updates = array(
+ 'ownerID' => get_current_user_id(),
+ );
+ $recovered_module = $module->get_settings()->merge( $module_setting_updates );
+
+ if ( $recovered_module ) {
+ $response['success'][ $slug ] = true;
+ }
+ }
+
+ // Cast error array to an object so JSON encoded response is
+ // always an object, even when the error array is empty.
+ if ( ! $response['error'] ) {
+ $response['error'] = (object) array();
+ }
+
+ return new WP_REST_Response( $response );
+ },
+ 'permission_callback' => $can_setup,
+ ),
+ ),
+ array(
+ 'schema' => $get_module_schema,
+ )
+ ),
+ );
+ }
+
+ /**
+ * Prepares module data for a REST response according to the schema.
+ *
+ * @since 1.3.0
+ *
+ * @param Module $module Module instance.
+ * @return array Module REST response data.
+ */
+ private function prepare_module_data_for_response( Module $module ) {
+ $module_data = array(
+ 'slug' => $module->slug,
+ 'name' => $module->name,
+ 'description' => $module->description,
+ 'homepage' => $module->homepage,
+ 'internal' => $module->internal,
+ 'order' => $module->order,
+ 'forceActive' => $module->force_active,
+ 'shareable' => $module->is_shareable(),
+ 'recoverable' => $module->is_recoverable(),
+ 'active' => $this->is_module_active( $module->slug ),
+ 'connected' => $this->is_module_connected( $module->slug ),
+ 'dependencies' => $this->get_module_dependencies( $module->slug ),
+ 'dependants' => $this->get_module_dependants( $module->slug ),
+ 'owner' => null,
+ );
+
+ if ( current_user_can( 'list_users' ) && $module instanceof Module_With_Owner ) {
+ $owner_id = $module->get_owner_id();
+ if ( $owner_id ) {
+ $module_data['owner'] = array(
+ 'id' => $owner_id,
+ 'login' => get_the_author_meta( 'user_login', $owner_id ),
+ );
+ }
+ }
+
+ return $module_data;
+ }
+
+ /**
+ * Gets the REST schema for a module.
+ *
+ * @since 1.3.0
+ *
+ * @return array Module REST schema.
+ */
+ private function get_module_schema() {
+ return array(
+ '$schema' => 'http://json-schema.org/draft-04/schema#',
+ 'title' => 'module',
+ 'type' => 'object',
+ 'properties' => array(
+ 'slug' => array(
+ 'type' => 'string',
+ 'description' => __( 'Identifier for the module.', 'google-site-kit' ),
+ 'readonly' => true,
+ ),
+ 'name' => array(
+ 'type' => 'string',
+ 'description' => __( 'Name of the module.', 'google-site-kit' ),
+ 'readonly' => true,
+ ),
+ 'description' => array(
+ 'type' => 'string',
+ 'description' => __( 'Description of the module.', 'google-site-kit' ),
+ 'readonly' => true,
+ ),
+ 'homepage' => array(
+ 'type' => 'string',
+ 'description' => __( 'The module homepage.', 'google-site-kit' ),
+ 'format' => 'uri',
+ 'readonly' => true,
+ ),
+ 'internal' => array(
+ 'type' => 'boolean',
+ 'description' => __( 'Whether the module is internal, thus without any UI.', 'google-site-kit' ),
+ 'readonly' => true,
+ ),
+ 'active' => array(
+ 'type' => 'boolean',
+ 'description' => __( 'Whether the module is active.', 'google-site-kit' ),
+ ),
+ 'connected' => array(
+ 'type' => 'boolean',
+ 'description' => __( 'Whether the module setup has been completed.', 'google-site-kit' ),
+ 'readonly' => true,
+ ),
+ 'dependencies' => array(
+ 'type' => 'array',
+ 'description' => __( 'List of slugs of other modules that the module depends on.', 'google-site-kit' ),
+ 'items' => array(
+ 'type' => 'string',
+ ),
+ 'readonly' => true,
+ ),
+ 'dependants' => array(
+ 'type' => 'array',
+ 'description' => __( 'List of slugs of other modules depending on the module.', 'google-site-kit' ),
+ 'items' => array(
+ 'type' => 'string',
+ ),
+ 'readonly' => true,
+ ),
+ 'owner' => array(
+ 'type' => 'object',
+ 'properties' => array(
+ 'id' => array(
+ 'type' => 'integer',
+ 'description' => __( 'Owner ID.', 'google-site-kit' ),
+ 'readonly' => true,
+ ),
+ 'login' => array(
+ 'type' => 'string',
+ 'description' => __( 'Owner login.', 'google-site-kit' ),
+ 'readonly' => true,
+ ),
+ ),
+ ),
+ ),
+ );
+ }
+
+ /**
+ * Gets the option containing the active modules.
+ *
+ * @since 1.0.0
+ *
+ * @return array List of active module slugs.
+ */
+ private function get_active_modules_option() {
+ $option = $this->options->get( self::OPTION_ACTIVE_MODULES );
+
+ if ( ! is_array( $option ) ) {
+ $option = $this->options->get( 'googlesitekit-active-modules' );
+ }
+
+ // If both options are not arrays, use the default value.
+ if ( ! is_array( $option ) ) {
+ $option = array( PageSpeed_Insights::MODULE_SLUG );
+ }
+
+ $includes_analytics = in_array( Analytics::MODULE_SLUG, $option, true );
+ $includes_analytics_4 = in_array( Analytics_4::MODULE_SLUG, $option, true );
+ if ( $includes_analytics && ! $includes_analytics_4 ) {
+ $option[] = Analytics_4::MODULE_SLUG;
+ }
+
+ return $option;
+ }
+
+ /**
+ * Sets the option containing the active modules.
+ *
+ * @since 1.0.0
+ *
+ * @param array $option List of active module slugs.
+ */
+ private function set_active_modules_option( array $option ) {
+ if ( in_array( Analytics_4::MODULE_SLUG, $option, true ) ) {
+ unset( $option[ array_search( Analytics_4::MODULE_SLUG, $option, true ) ] );
+ }
+
+ $this->options->set( self::OPTION_ACTIVE_MODULES, $option );
+ }
+
+ /**
+ * Gets the shareable active modules.
+ *
+ * @since 1.50.0
+ *
+ * @return array Shareable modules as $slug => $module pairs.
+ */
+ public function get_shareable_modules() {
+ $all_active_modules = $this->get_active_modules();
+
+ return array_filter(
+ $all_active_modules,
+ function( Module $module ) {
+ return $module->is_shareable();
+ }
+ );
+ }
+
+ /**
+ * Checks the given module is recoverable.
+ *
+ * A module is recoverable if:
+ * - No user is identified by its owner ID
+ * - the owner lacks the capability to authenticate
+ * - the owner is no longer authenticated
+ * - no user exists for the owner ID
+ *
+ * @since 1.69.0
+ *
+ * @param Module|string $module A module instance or its slug.
+ * @return bool True if the module is recoverable, false otherwise.
+ */
+ public function is_module_recoverable( $module ) {
+ if ( is_string( $module ) ) {
+ try {
+ $module = $this->get_module( $module );
+ } catch ( Exception $e ) {
+ return false;
+ }
+ }
+
+ if ( ! $module instanceof Module_With_Owner ) {
+ return false;
+ }
+
+ $shared_roles = $this->sharing_settings->get_shared_roles( $module->slug );
+ if ( empty( $shared_roles ) ) {
+ return false;
+ }
+
+ $owner_id = $module->get_owner_id();
+ if ( ! $owner_id || ! user_can( $owner_id, Permissions::AUTHENTICATE ) ) {
+ return true;
+ }
+
+ $restore_user = $this->user_options->switch_user( $owner_id );
+ $owner_authenticated = $this->authentication->is_authenticated();
+ $restore_user();
+
+ if ( ! $owner_authenticated ) {
+ return true;
+ }
+
+ return false;
+ }
+
+ /**
+ * Gets the recoverable modules.
+ *
+ * @since 1.50.0
+ *
+ * @return array Recoverable modules as $slug => $module pairs.
+ */
+ public function get_recoverable_modules() {
+ return array_filter(
+ $this->get_shareable_modules(),
+ array( $this, 'is_module_recoverable' )
+ );
+ }
+
+ /**
+ * Gets shared ownership modules.
+ *
+ * @since 1.70.0
+ *
+ * @return array Shared ownership modules as $slug => $module pairs.
+ */
+ public function get_shared_ownership_modules() {
+ return array_filter(
+ $this->get_shareable_modules(),
+ function( $module ) {
+ return ! ( $module instanceof Module_With_Service_Entity );
+ }
+ );
+ }
+
+ /**
+ * Inserts default settings for shared ownership modules in passed dashboard sharing settings.
+ *
+ * Sharing settings for shared ownership modules such as pagespeed-insights
+ * and idea-hub should always be manageable by "all admins". This function inserts
+ * this 'default' setting for their respective module slugs even when the
+ * dashboard_sharing settings option is not defined in the database or when settings
+ * are not set for these modules.
+ *
+ * @since 1.75.0
+ * @since 1.85.0 Renamed from filter_shared_ownership_module_settings to populate_default_shared_ownership_module_settings.
+ *
+ * @param array $sharing_settings The dashboard_sharing settings option fetched from the database.
+ * @return array Dashboard sharing settings option with default settings inserted for shared ownership modules.
+ */
+ protected function populate_default_shared_ownership_module_settings( $sharing_settings ) {
+ $shared_ownership_modules = array_keys( $this->get_shared_ownership_modules() );
+ foreach ( $shared_ownership_modules as $shared_ownership_module ) {
+ if ( ! isset( $sharing_settings[ $shared_ownership_module ] ) ) {
+ $sharing_settings[ $shared_ownership_module ] = array(
+ 'sharedRoles' => array(),
+ 'management' => 'all_admins',
+ );
+ }
+ }
+ return $sharing_settings;
+ }
+
+ /**
+ * Gets the ownerIDs of all shareable modules.
+ *
+ * @since 1.75.0
+ *
+ * @return array Array of $module_slug => $owner_id.
+ */
+ public function get_shareable_modules_owners() {
+ $module_owners = array();
+ $shareable_modules = $this->get_shareable_modules();
+ foreach ( $shareable_modules as $module_slug => $module ) {
+ $module_owners[ $module_slug ] = $module->get_owner_id();
+ }
+ return $module_owners;
+ }
+
+ /**
+ * Deletes sharing settings.
+ *
+ * @since 1.84.0
+ *
+ * @return bool True on success, false on failure.
+ */
+ public function delete_dashboard_sharing_settings() {
+ return $this->options->delete( Module_Sharing_Settings::OPTION );
+ }
+
+ /**
+ * Prepares error data to pass with WP_REST_Response.
+ *
+ * @since 1.87.0
+ *
+ * @param WP_Error $error Error (WP_Error) to prepare.
+ *
+ * @return array Formatted error response suitable for the client.
+ */
+ protected function prepare_error_response( $error ) {
+ return array(
+ 'code' => $error->get_error_code(),
+ 'message' => $error->get_error_message(),
+ 'data' => $error->get_error_data(),
+ );
+ }
+
+ /**
+ * Updates response with error encounted during module recovery.
+ *
+ * @since 1.87.0
+ *
+ * @param string $slug The module slug.
+ * @param array $response The existing response.
+ * @param WP_Error $error The error encountered.
+ *
+ * @return array The updated response with error included.
+ */
+ protected function handle_module_recovery_error( $slug, $response, $error ) {
+ $response['success'][ $slug ] = false;
+ $response['error'][ $slug ] = $this->prepare_error_response(
+ $error
+ );
+ return $response;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Modules/REST_Dashboard_Sharing_Controller.php b/wp-content/plugins/google-site-kit/includes/Core/Modules/REST_Dashboard_Sharing_Controller.php
new file mode 100644
index 000000000..47aa68c46
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Modules/REST_Dashboard_Sharing_Controller.php
@@ -0,0 +1,139 @@
+modules = $modules;
+ }
+
+ /**
+ * Registers functionality through WordPress hooks.
+ *
+ * @since 1.75.0
+ */
+ public function register() {
+ add_filter(
+ 'googlesitekit_rest_routes',
+ function ( $routes ) {
+ return array_merge( $routes, $this->get_rest_routes() );
+ }
+ );
+ }
+
+ /**
+ * Gets REST route instances.
+ *
+ * @since 1.75.0
+ *
+ * @return REST_Route[] List of REST_Route objects.
+ */
+ protected function get_rest_routes() {
+ $can_manage_options = function () {
+ return current_user_can( Permissions::MANAGE_OPTIONS );
+ };
+
+ return array(
+ new REST_Route(
+ 'core/modules/data/sharing-settings',
+ array(
+ array(
+ 'methods' => WP_REST_Server::EDITABLE,
+ 'callback' => function ( WP_REST_Request $request ) {
+ $original_module_owners = $this->modules->get_shareable_modules_owners();
+
+ $sharing_settings = $this->modules->get_module_sharing_settings();
+ $new_sharing_settings = array_reduce(
+ array(
+ new Collection_Key_Cap_Filter( 'sharedRoles', Permissions::MANAGE_MODULE_SHARING_OPTIONS ),
+ new Collection_Key_Cap_Filter( 'management', Permissions::DELEGATE_MODULE_SHARING_MANAGEMENT ),
+ ),
+ function ( $settings, Collection_Key_Cap_Filter $filter ) {
+ return $filter->filter_key_by_cap( $settings );
+ },
+ (array) $request['data']
+ );
+
+ $sharing_settings->merge( $new_sharing_settings );
+
+ $new_module_owners = $this->modules->get_shareable_modules_owners();
+ $changed_module_owners = array_filter(
+ $new_module_owners,
+ function ( $new_owner_id, $module_slug ) use ( $original_module_owners ) {
+ return $new_owner_id !== $original_module_owners[ $module_slug ];
+ },
+ ARRAY_FILTER_USE_BOTH
+ );
+
+ return new WP_REST_Response(
+ array(
+ 'settings' => $sharing_settings->get(),
+ // Cast array to an object so JSON encoded response is always an object,
+ // even when the array is empty.
+ 'newOwnerIDs' => (object) $changed_module_owners,
+ )
+ );
+ },
+ 'permission_callback' => $can_manage_options,
+ 'args' => array(
+ 'data' => array(
+ 'type' => 'object',
+ 'required' => true,
+ ),
+ ),
+ ),
+ array(
+ 'methods' => WP_REST_Server::DELETABLE,
+ 'callback' => function () {
+ $delete_settings = $this->modules->delete_dashboard_sharing_settings();
+
+ return new WP_REST_Response(
+ $delete_settings
+ );
+ },
+ 'permission_callback' => $can_manage_options,
+ ),
+ )
+ ),
+ );
+ }
+
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Modules/Tags/Module_AMP_Tag.php b/wp-content/plugins/google-site-kit/includes/Core/Modules/Tags/Module_AMP_Tag.php
new file mode 100644
index 000000000..ea58a7f66
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Modules/Tags/Module_AMP_Tag.php
@@ -0,0 +1,120 @@
+module_slug}_tag_amp_blocked", false );
+ }
+
+ /**
+ * Gets the HTML attributes for a script tag that may potentially require user consent before loading.
+ *
+ * @since 1.24.0
+ *
+ * @return string HTML attributes to add if the tag requires consent to load, or an empty string.
+ */
+ public function get_tag_blocked_on_consent_attribute() {
+ // @see https://amp.dev/documentation/components/amp-consent/#advanced-predefined-consent-blocking-behaviors
+ $allowed_amp_block_on_consent_values = array(
+ '_till_responded',
+ '_till_accepted',
+ '_auto_reject',
+ );
+
+ /**
+ * Filters whether the tag requires user consent before loading.
+ *
+ * @since 1.24.0
+ *
+ * @param bool|string $blocked Whether or not the tag requires user consent to load. Alternatively, this can also be one of
+ * the special string values '_till_responded', '_till_accepted', or '_auto_reject'. Default: false.
+ */
+ $block_on_consent = apply_filters( "googlesitekit_{$this->module_slug}_tag_amp_block_on_consent", false );
+ if ( in_array( $block_on_consent, $allowed_amp_block_on_consent_values, true ) ) {
+ return sprintf( ' data-block-on-consent="%s"', $block_on_consent );
+ }
+
+ if ( filter_var( $block_on_consent, FILTER_VALIDATE_BOOLEAN ) ) {
+ return ' data-block-on-consent';
+ }
+
+ return '';
+ }
+
+ /**
+ * Enqueues a component script for AMP Reader.
+ *
+ * @since 1.24.0
+ *
+ * @param string $handle Script handle.
+ * @param string $src Script source URL.
+ * @return callable Hook function.
+ */
+ protected function enqueue_amp_reader_component_script( $handle, $src ) {
+ $component_script_hook = function( $data ) use ( $handle, $src ) {
+ if ( ! isset( $data['amp_component_scripts'] ) || ! is_array( $data['amp_component_scripts'] ) ) {
+ $data['amp_component_scripts'] = array();
+ }
+
+ if ( ! isset( $data['amp_component_scripts'][ $handle ] ) ) {
+ $data['amp_component_scripts'][ $handle ] = $src;
+ }
+
+ return $data;
+ };
+
+ add_filter( 'amp_post_template_data', $component_script_hook );
+
+ return $component_script_hook;
+ }
+
+ /**
+ * Fires the "googlesitekit_{module_slug}_init_tag_amp" action to let 3rd party plugins to perform required setup.
+ *
+ * @since 1.24.0
+ */
+ protected function do_init_tag_action() {
+ /**
+ * Fires when the tag has been initialized which means that the tag will be rendered in the current request.
+ *
+ * @since 1.24.0
+ *
+ * @param string $tag_id Tag ID.
+ */
+ do_action( "googlesitekit_{$this->module_slug}_init_tag_amp", $this->tag_id );
+ }
+
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Modules/Tags/Module_Tag.php b/wp-content/plugins/google-site-kit/includes/Core/Modules/Tags/Module_Tag.php
new file mode 100644
index 000000000..3fb641da0
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Modules/Tags/Module_Tag.php
@@ -0,0 +1,52 @@
+module_slug = $module_slug;
+ }
+
+ /**
+ * Outputs the tag.
+ *
+ * @since 1.24.0
+ */
+ abstract protected function render();
+
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Modules/Tags/Module_Tag_Guard.php b/wp-content/plugins/google-site-kit/includes/Core/Modules/Tags/Module_Tag_Guard.php
new file mode 100644
index 000000000..96f96cdbf
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Modules/Tags/Module_Tag_Guard.php
@@ -0,0 +1,54 @@
+settings = $settings;
+ }
+
+ /**
+ * Determines whether the guarded tag can be activated or not.
+ *
+ * @since 1.24.0
+ *
+ * @return bool|WP_Error TRUE if guarded tag can be activated, otherwise FALSE or an error.
+ */
+ abstract public function can_activate();
+
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Modules/Tags/Module_Web_Tag.php b/wp-content/plugins/google-site-kit/includes/Core/Modules/Tags/Module_Web_Tag.php
new file mode 100644
index 000000000..7cc310c37
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Modules/Tags/Module_Web_Tag.php
@@ -0,0 +1,105 @@
+module_slug}_tag_blocked", false );
+ }
+
+ /**
+ * Gets the HTML attributes for a script tag that may potentially require user consent before loading.
+ *
+ * @since 1.24.0
+ *
+ * @return string HTML attributes to add if the tag requires consent to load, or an empty string.
+ */
+ public function get_tag_blocked_on_consent_attribute() {
+ /**
+ * Filters whether the tag requires user consent before loading.
+ *
+ * @since 1.24.0
+ *
+ * @param bool $blocked Whether or not the tag requires user consent to load. Default: false.
+ */
+ if ( apply_filters( "googlesitekit_{$this->module_slug}_tag_block_on_consent", false ) ) {
+ return ' type="text/plain" data-block-on-consent';
+ }
+
+ return '';
+ }
+
+ /**
+ * Gets the array of HTML attributes for a script tag that may potentially require user consent before loading.
+ *
+ * @since 1.41.0
+ *
+ * @return array containing HTML attributes to add if the tag requires consent to load, or an empty array.
+ */
+ public function get_tag_blocked_on_consent_attribute_array() {
+ /**
+ * Filters whether the tag requires user consent before loading.
+ *
+ * @since 1.24.0
+ *
+ * @param bool $blocked Whether or not the tag requires user consent to load. Default: false.
+ */
+ if ( apply_filters( "googlesitekit_{$this->module_slug}_tag_block_on_consent", false ) ) {
+ return array(
+ 'type' => 'text/plain',
+ 'data-block-on-consent' => true,
+ );
+ }
+
+ return array();
+ }
+
+ /**
+ * Fires the "googlesitekit_{module_slug}_init_tag" action to let 3rd party plugins to perform required setup.
+ *
+ * @since 1.24.0
+ */
+ protected function do_init_tag_action() {
+ /**
+ * Fires when the tag has been initialized which means that the tag will be rendered in the current request.
+ *
+ * @since 1.24.0
+ *
+ * @param string $tag_id Tag ID.
+ */
+ do_action( "googlesitekit_{$this->module_slug}_init_tag", $this->tag_id );
+ }
+
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Notifications/Notification.php b/wp-content/plugins/google-site-kit/includes/Core/Notifications/Notification.php
new file mode 100644
index 000000000..fb756178a
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Notifications/Notification.php
@@ -0,0 +1,107 @@
+slug = (string) $slug;
+ $this->args = array_merge(
+ array(
+ 'title' => '',
+ 'content' => '',
+ 'cta_url' => '',
+ 'cta_label' => '',
+ 'cta_target' => '',
+ 'learn_more_url' => '',
+ 'learn_more_label' => '',
+ 'dismissible' => false,
+ 'dismiss_label' => __( 'Dismiss', 'google-site-kit' ),
+ ),
+ $args
+ );
+ }
+
+ /**
+ * Gets the notification's slug.
+ *
+ * @since 1.4.0
+ *
+ * @return string Unique notification slug.
+ */
+ public function get_slug() {
+ return $this->slug;
+ }
+
+ /**
+ * Prepares the JS representation of the Notification.
+ *
+ * @since 1.4.0
+ *
+ * @return array
+ */
+ public function prepare_for_js() {
+ return array(
+ 'id' => $this->get_slug(),
+ 'title' => $this->args['title'],
+ 'content' => $this->args['content'],
+ 'ctaURL' => $this->args['cta_url'],
+ 'ctaLabel' => $this->args['cta_label'],
+ 'ctaTarget' => $this->args['cta_target'],
+ 'learnMoreURL' => $this->args['learn_more_url'],
+ 'learnMoreLabel' => $this->args['learn_more_label'],
+ 'dismissible' => $this->args['dismissible'],
+ 'dismissLabel' => $this->args['dismiss_label'],
+ );
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Notifications/Notifications.php b/wp-content/plugins/google-site-kit/includes/Core/Notifications/Notifications.php
new file mode 100644
index 000000000..d25b05ec2
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Notifications/Notifications.php
@@ -0,0 +1,289 @@
+context = $context;
+ $this->options = $options ?: new Options( $context );
+ $this->google_proxy = new Google_Proxy( $this->context );
+ $this->authentication = $authentication ?: new Authentication( $this->context );
+ $this->credentials = $this->authentication->credentials();
+ }
+
+ /**
+ * Registers core notifications.
+ *
+ * @since 1.4.0
+ */
+ public function register() {
+ add_filter(
+ 'googlesitekit_rest_routes',
+ function ( $routes ) {
+ return array_merge( $routes, $this->get_rest_routes() );
+ }
+ );
+ }
+
+ /**
+ * Gets related REST routes.
+ *
+ * @since 1.4.0
+ *
+ * @return array List of REST_Route objects.
+ */
+ private function get_rest_routes() {
+ $can_use_notifications = function () {
+ return current_user_can( Permissions::SETUP ) && $this->credentials->has();
+ };
+
+ return array(
+ new REST_Route(
+ 'core/site/data/notifications',
+ array(
+ array(
+ 'methods' => WP_REST_Server::READABLE,
+ 'callback' => function ( WP_REST_Request $request ) {
+ $endpoint = add_query_arg(
+ array(
+ 'site_id' => $this->credentials->get()['oauth2_client_id'],
+ ),
+ $this->google_proxy->url( '/notifications/' )
+ );
+
+ // Return an empty array of notifications if the user isn't using the proxy.
+ if ( ! $this->credentials->using_proxy() ) {
+ return new WP_REST_Response( array() );
+ }
+
+ $response = wp_remote_get( $endpoint ); // phpcs:ignore WordPressVIPMinimum.Functions.RestrictedFunctions.wp_remote_get_wp_remote_get
+
+ if ( is_wp_error( $response ) ) {
+ return $response;
+ }
+
+ try {
+ $response = $this->parse_response( $response );
+ } catch ( Exception $e ) {
+ return new WP_Error( 'exception', $e->getMessage() );
+ }
+
+ $data = array_map(
+ function ( Notification $notification ) {
+ return $notification->prepare_for_js();
+ },
+ $this->map_response_to_notifications( $response )
+ );
+
+ return new WP_REST_Response( $data );
+ },
+ 'permission_callback' => $can_use_notifications,
+ ),
+ )
+ ),
+ new REST_Route(
+ 'core/site/data/mark-notification',
+ array(
+ array(
+ 'methods' => WP_REST_Server::EDITABLE,
+ 'callback' => function ( WP_REST_Request $request ) {
+ $data = $request['data'];
+
+ if ( empty( $data['notificationID'] ) ) {
+ return $this->missing_required_param( 'data.notificationID' );
+ }
+ if ( empty( $data['notificationState'] ) ) {
+ return $this->missing_required_param( 'data.notificationState' );
+ }
+
+ $credentials = $this->credentials->get();
+ $response = wp_remote_post(
+ $this->google_proxy->url( '/notifications/mark/' ),
+ array(
+ 'body' => array(
+ 'site_id' => $credentials['oauth2_client_id'],
+ 'site_secret' => $credentials['oauth2_client_secret'],
+ 'notification_id' => $data['notificationID'],
+ 'notification_state' => $data['notificationState'],
+ ),
+ )
+ );
+
+ if ( is_wp_error( $response ) ) {
+ return $response;
+ }
+
+ try {
+ $response = $this->parse_response( $response );
+ } catch ( Exception $e ) {
+ return new WP_Error( 'exception', $e->getMessage() );
+ }
+
+ return new WP_REST_Response(
+ array(
+ 'success' => isset( $response['success'] ) ? (bool) $response['success'] : false,
+ )
+ );
+ },
+ 'args' => array(
+ 'data' => array(
+ 'required' => true,
+ 'type' => 'object',
+ ),
+ ),
+ 'permission_callback' => $can_use_notifications,
+ ),
+ )
+ ),
+ );
+ }
+
+ /**
+ * Validates and parses the given JSON response into an array.
+ *
+ * @since 1.4.0
+ *
+ * @param array $response HTTP response array.
+ * @return mixed JSON decoded response.
+ * @throws Exception Throws exception if response cannot be parsed or if an error is returned.
+ */
+ private function parse_response( $response ) {
+ $body = wp_remote_retrieve_body( $response );
+ $decoded = json_decode( $body, true );
+
+ if ( json_last_error() ) {
+ throw new Exception( 'Error while decoding response: ' . json_last_error() );
+ }
+
+ if ( ! empty( $decoded['error'] ) ) {
+ throw new Exception( $decoded['error'] );
+ }
+
+ return $decoded;
+ }
+
+ /**
+ * Maps the response objects into Notification objects.
+ *
+ * @since 1.4.0
+ *
+ * @param array $response Array of notification objects from API.
+ * @return Notification[] Array of Notification objects.
+ */
+ private function map_response_to_notifications( array $response ) {
+ return array_map(
+ function ( $notification ) {
+ return new Notification(
+ $notification['id'],
+ array(
+ 'title' => $notification['title'],
+ 'content' => $notification['content'],
+ 'cta_url' => $notification['ctaURL'],
+ 'cta_label' => $notification['ctaLabel'],
+ 'cta_target' => $notification['ctaTarget'],
+ 'learn_more_url' => $notification['learnMoreURL'],
+ 'learn_more_label' => $notification['learnMoreLabel'],
+ 'dismissible' => $notification['dismissible'],
+ 'dismiss_label' => $notification['dismissLabel'],
+ )
+ );
+ },
+ $response
+ );
+ }
+
+ /**
+ * Gets a WP_Error instance for the given missing required parameter.
+ *
+ * @since 1.4.0
+ *
+ * @param string $param Missing required parameter.
+ * @return WP_Error
+ */
+ private function missing_required_param( $param ) {
+ return new WP_Error(
+ 'missing_required_param',
+ /* translators: %s: Missing parameter name */
+ sprintf( __( 'Request parameter is empty: %s.', 'google-site-kit' ), $param ),
+ array( 'status' => 400 )
+ );
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Permissions/Permissions.php b/wp-content/plugins/google-site-kit/includes/Core/Permissions/Permissions.php
new file mode 100644
index 000000000..3c59adab7
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Permissions/Permissions.php
@@ -0,0 +1,784 @@
+context = $context;
+ $this->authentication = $authentication;
+ $this->modules = $modules;
+ $this->user_options = $user_options;
+ $this->dismissed_items = $dismissed_items;
+
+ // TODO Remove the temporary assignment of these capabilities when Dashboard Sharing feature flag is removed.
+ $editor_capability = 'manage_options';
+ $admin_network_capability = 'manage_options';
+ if ( Feature_Flags::enabled( 'dashboardSharing' ) ) {
+ $editor_capability = 'edit_posts';
+ $admin_network_capability = 'manage_network';
+ }
+
+ $this->base_to_core = array(
+ // By default, only allow administrators to authenticate.
+ self::AUTHENTICATE => 'manage_options',
+
+ // Allow contributors and up to view their own post's insights.
+ // TODO change to map to edit_posts when Dashboard Sharing feature flag is removed.
+ self::VIEW_POSTS_INSIGHTS => $editor_capability,
+
+ // Allow editors and up to view the dashboard and module details.
+ // TODO change to map to edit_posts when Dashboard Sharing feature flag is removed.
+ self::VIEW_DASHBOARD => $editor_capability,
+ self::VIEW_WP_DASHBOARD_WIDGET => $editor_capability,
+ self::VIEW_ADMIN_BAR_MENU => $editor_capability,
+
+ // Allow administrators and up to manage options and set up the plugin.
+ self::MANAGE_OPTIONS => 'manage_options',
+ self::SETUP => 'manage_options',
+ );
+
+ $this->meta_to_core = array(
+ // Allow users that can edit a post to view that post's insights.
+ self::VIEW_POST_INSIGHTS => 'edit_post',
+ );
+
+ $this->meta_to_base = array(
+ self::VIEW_SPLASH => self::VIEW_DASHBOARD,
+ self::VIEW_AUTHENTICATED_DASHBOARD => array( self::VIEW_DASHBOARD, self::AUTHENTICATE ),
+ // Allow users that can generally view posts insights to view a specific post's insights.
+ self::VIEW_POST_INSIGHTS => self::VIEW_POSTS_INSIGHTS,
+ );
+ // TODO Merge the array below into $this->meta_to_base above when the dashboard sharing feature flag is removed.
+ if ( Feature_Flags::enabled( 'dashboardSharing' ) ) {
+ $this->meta_to_base = array_merge(
+ $this->meta_to_base,
+ array(
+ // Allow users that can generally view dashboard to read shared module data.
+ self::READ_SHARED_MODULE_DATA => self::VIEW_DASHBOARD,
+ // Admins who can manage options for SK can generally manage module sharing options.
+ self::MANAGE_MODULE_SHARING_OPTIONS => self::MANAGE_OPTIONS,
+ self::DELEGATE_MODULE_SHARING_MANAGEMENT => self::MANAGE_OPTIONS,
+ self::VIEW_SHARED_DASHBOARD => self::VIEW_DASHBOARD,
+ )
+ );
+ }
+
+ $this->network_base = array(
+ // Require network admin access to view the dashboard and module details in network mode.
+ // TODO change to map to manage_network when Dashboard Sharing feature flag is removed.
+ self::VIEW_DASHBOARD => $admin_network_capability,
+ self::VIEW_WP_DASHBOARD_WIDGET => $admin_network_capability,
+ self::VIEW_ADMIN_BAR_MENU => $admin_network_capability,
+
+ // Require network admin access to manage options and set up the plugin in network mode.
+ self::MANAGE_OPTIONS => 'manage_network_options',
+ self::SETUP => 'manage_network_options',
+ );
+ }
+
+ /**
+ * Registers functionality through WordPress hooks.
+ *
+ * @since 1.0.0
+ */
+ public function register() {
+ add_filter(
+ 'map_meta_cap',
+ function( array $caps, $cap, $user_id, $args ) {
+ return $this->map_meta_capabilities( $caps, $cap, $user_id, $args );
+ },
+ 10,
+ 4
+ );
+
+ add_filter(
+ 'googlesitekit_rest_routes',
+ function( $routes ) {
+ return array_merge( $routes, $this->get_rest_routes() );
+ }
+ );
+
+ add_filter(
+ 'googlesitekit_apifetch_preload_paths',
+ function ( $paths ) {
+ return array_merge(
+ $paths,
+ array(
+ '/' . REST_Routes::REST_ROOT . '/core/user/data/permissions',
+ )
+ );
+ }
+ );
+
+ // This constant can be set if an alternative mechanism to grant these capabilities is in place.
+ if ( defined( 'GOOGLESITEKIT_DISABLE_DYNAMIC_CAPABILITIES' ) && GOOGLESITEKIT_DISABLE_DYNAMIC_CAPABILITIES ) {
+ return;
+ }
+
+ add_filter(
+ 'user_has_cap',
+ function( array $allcaps ) {
+ return $this->grant_additional_caps( $allcaps );
+ }
+ );
+ }
+
+ /**
+ * Get dashboard sharing meta permissions for current user.
+ *
+ * @since 1.70.0
+ *
+ * @return array List meta capabilities as keys and current user permission as value.
+ */
+ public function get_dashboard_sharing_meta_permissions() {
+ if ( ! Feature_Flags::enabled( 'dashboardSharing' ) ) {
+ return array();
+ }
+
+ $dashboard_sharing_meta_capabilities = self::get_dashboard_sharing_meta_capabilities();
+
+ $shareable_modules = array_keys( $this->modules->get_shareable_modules() );
+
+ $dashboard_sharing_meta_permissions = array();
+ foreach ( $dashboard_sharing_meta_capabilities as $cap ) {
+ foreach ( $shareable_modules as $module ) {
+ $dashboard_sharing_meta_permissions[ "{$cap}::" . wp_json_encode( array( $module ) ) ] = current_user_can( $cap, $module );
+ }
+ }
+
+ return $dashboard_sharing_meta_permissions;
+ }
+
+ /**
+ * Check permissions for current user.
+ *
+ * @since 1.21.0
+ *
+ * @return array List of base capabilities and meta capabilities as keys and current user permission as value.
+ */
+ public function check_all_for_current_user() {
+ $permissions = self::get_capabilities();
+
+ return array_merge(
+ array_combine(
+ $permissions,
+ array_map( 'current_user_can', $permissions )
+ ),
+ self::get_dashboard_sharing_meta_permissions()
+ );
+ }
+
+ /**
+ * Resolves meta capabilities to their base capabilities.
+ *
+ * This method first maps plugin meta capabilities to their base capabilities. In addition, if the meta
+ * capability should also map to a core meta capability, that mapping is taken care of as well.
+ *
+ * If in network mode and the custom base capability requires network access, it is checked that the user
+ * has that access, and if not, the method bails early causing in a result of false.
+ *
+ * It also prevents access to Site Kit's custom capabilities based on additional rules. These additional
+ * checks ideally could be done within the `user_has_cap` filter. However, the `user_has_cap` filter is
+ * applied after a check for multi-site admins which could potentially grant the capability without
+ * executing these additional checks.
+ *
+ * @see WP_User::has_cap() To see the order of execution mentioned above.
+ *
+ * @since 1.0.0
+ *
+ * @param array $caps List of resolved capabilities.
+ * @param string $cap Capability checked.
+ * @param int $user_id Current user ID.
+ * @param array $args Additional arguments passed to the capability check.
+ * @return array Filtered value of $caps.
+ */
+ private function map_meta_capabilities( array $caps, $cap, $user_id, $args ) {
+ // Bail early under these circumstances as we already know for sure the check will result in false.
+ if ( isset( $this->network_base[ $cap ] ) && $this->context->is_network_mode() && ! is_super_admin( $user_id ) ) {
+ return array( 'do_not_allow' );
+ }
+
+ if ( isset( $this->meta_to_base[ $cap ] ) ) {
+ $caps = (array) $this->meta_to_base[ $cap ];
+ }
+
+ if ( isset( $this->meta_to_core[ $cap ] ) ) {
+ $required_core_caps = call_user_func_array(
+ 'map_meta_cap',
+ array_merge(
+ array( $this->meta_to_core[ $cap ], $user_id ),
+ $args
+ )
+ );
+
+ $caps = array_merge( $caps, $required_core_caps );
+ }
+
+ // Special setup and authentication rules.
+ if ( ( isset( $this->base_to_core[ $cap ] ) || isset( $this->meta_to_core[ $cap ] ) ) ) {
+ // If setup has not yet been completed, require administrator capabilities for everything.
+ if ( self::SETUP !== $cap && ! $this->authentication->is_setup_completed() ) {
+ $caps[] = self::SETUP;
+ }
+
+ if ( ! in_array( $cap, array( self::AUTHENTICATE, self::SETUP, self::VIEW_DASHBOARD, self::VIEW_POSTS_INSIGHTS ), true ) ) {
+ // For regular users, require being authenticated.
+ if ( ! $this->is_user_authenticated( $user_id ) ) {
+ return array_merge( $caps, array( 'do_not_allow' ) );
+ }
+ // For admin users, also require being verified.
+ if ( user_can( $user_id, self::SETUP ) && ! $this->is_user_verified( $user_id ) ) {
+ return array_merge( $caps, array( 'do_not_allow' ) );
+ }
+
+ // For all users, require setup to have been completed.
+ if ( ! $this->authentication->is_setup_completed() ) {
+ return array_merge( $caps, array( 'do_not_allow' ) );
+ }
+ }
+ }
+
+ if ( in_array( $cap, self::get_dashboard_sharing_capabilities(), true ) ) {
+ $caps = array_merge( $caps, $this->check_dashboard_sharing_capability( $cap, $user_id, $args ) );
+ }
+
+ switch ( $cap ) {
+ case self::VIEW_SPLASH:
+ $caps = array_merge( $caps, $this->check_view_splash_capability( $user_id ) );
+ break;
+ // Intentional fallthrough - viewing the dashboard widget and admin bar menu require
+ // a user to be authenticated.
+ case self::VIEW_AUTHENTICATED_DASHBOARD:
+ case self::VIEW_WP_DASHBOARD_WIDGET:
+ case self::VIEW_ADMIN_BAR_MENU:
+ $caps = array_merge( $caps, $this->check_view_authenticated_dashboard_capability( $user_id ) );
+ break;
+ // Intentional fallthrough.
+ case self::VIEW_DASHBOARD:
+ case self::VIEW_POSTS_INSIGHTS:
+ $caps = array_merge( $caps, $this->check_view_dashboard_capability( $user_id ) );
+ break;
+ }
+
+ return $caps;
+ }
+
+ /**
+ * Checks a dashboard sharing capability based on rules of dashboard sharing.
+ *
+ * @since 1.69.0
+ *
+ * @param string $cap Capability to be checked.
+ * @param int $user_id User ID of the user the capability is checked for.
+ * @param array $args Additional arguments passed to check a meta capability.
+ * @return array Array with a 'do_not_allow' element if checks fail, empty array if checks pass.
+ */
+ private function check_dashboard_sharing_capability( $cap, $user_id, $args ) {
+ // TODO remove this check when Dashboard Sharing feature flag is removed.
+ if ( ! Feature_Flags::enabled( 'dashboardSharing' ) ) {
+ return array( 'do_not_allow' );
+ }
+
+ if ( isset( $args[0] ) ) {
+ $module_slug = $args[0];
+ }
+
+ switch ( $cap ) {
+ case self::VIEW_SHARED_DASHBOARD:
+ return $this->check_view_shared_dashboard_capability( $user_id );
+
+ case self::READ_SHARED_MODULE_DATA:
+ return $this->check_read_shared_module_data_capability( $user_id, $module_slug );
+
+ case self::MANAGE_MODULE_SHARING_OPTIONS:
+ case self::DELEGATE_MODULE_SHARING_MANAGEMENT:
+ return $this->check_module_sharing_admin_capability( $cap, $user_id, $module_slug );
+
+ default:
+ return array();
+ }
+ }
+
+ /**
+ * Checks if the VIEW_SPLASH capability is allowed for the user.
+ *
+ * @since 1.73.0
+ *
+ * @param int $user_id User ID of the user the capability is checked for.
+ * @return array Array with a 'do_not_allow' element if checks fail, empty array if checks pass.
+ */
+ private function check_view_splash_capability( $user_id ) {
+ if ( ! Feature_Flags::enabled( 'dashboardSharing' ) ) {
+ return array( self::AUTHENTICATE );
+ }
+
+ if ( $this->is_shared_dashboard_splash_dismissed( $user_id ) ) {
+ return array( self::AUTHENTICATE );
+ }
+
+ if ( ! $this->user_has_shared_role( $user_id ) ) {
+ return array( self::AUTHENTICATE );
+ }
+
+ return array();
+ }
+
+ /**
+ * Checks if the VIEW_DASHBOARD capability is allowed for the user.
+ *
+ * Allows access to the VIEW_DASHBOARD capability if the user can view either
+ * the authenticated or shared dashboard.
+ *
+ * @since 1.73.0
+ *
+ * @param int $user_id User ID of the user the capability is checked for.
+ * @return array Array with a 'do_not_allow' element if checks fail, empty array if checks pass.
+ */
+ private function check_view_dashboard_capability( $user_id ) {
+ $view_authenticated_dashboard = $this->check_view_authenticated_dashboard_capability( $user_id );
+
+ if ( Feature_Flags::enabled( 'dashboardSharing' ) && in_array( 'do_not_allow', $view_authenticated_dashboard, true ) ) {
+ return $this->check_view_shared_dashboard_capability( $user_id );
+ }
+
+ return $view_authenticated_dashboard;
+ }
+
+ /**
+ * Checks if the VIEW_SHARED_DASHBOARD capability should be denied.
+ *
+ * Prevents access to the VIEW_SHARED_DASHBOARD capability if a user does not
+ * have any of the shared roles set for any shareable module or if they have
+ * not dismissed the dashboard sharing splash screen message.
+ *
+ * @since 1.69.0
+ *
+ * @param int $user_id User ID of the user the capability is checked for.
+ * @return array Array with a 'do_not_allow' element if checks fail, empty array if checks pass.
+ */
+ private function check_view_shared_dashboard_capability( $user_id ) {
+ if ( ! $this->user_has_shared_role( $user_id ) ) {
+ return array( 'do_not_allow' );
+ }
+
+ if ( ! $this->is_shared_dashboard_splash_dismissed( $user_id ) ) {
+ return array( 'do_not_allow' );
+ }
+
+ return array();
+ }
+
+ /**
+ * Checks if the VIEW_AUTHENTICATED_DASHBOARD capability is allowed for the user.
+ *
+ * Allows access to the VIEW_AUTHENTICATED_DASHBOARD capability if the user is authenticated.
+ *
+ * @since 1.73.0
+ *
+ * @param int $user_id User ID of the user the capability is checked for.
+ * @return array Array with a 'do_not_allow' element if checks fail, otherise returns AUTHENTICATE capability.
+ */
+ private function check_view_authenticated_dashboard_capability( $user_id ) {
+ if (
+ $this->is_user_authenticated( $user_id )
+ && $this->is_user_verified( $user_id )
+ && $this->authentication->is_setup_completed()
+ ) {
+ return array( self::AUTHENTICATE );
+ }
+ return array( 'do_not_allow' );
+ }
+
+ /**
+ * Checks if the READ_SHARED_MODULE_DATA capability should be denied.
+ *
+ * Prevents access to the READ_SHARED_MODULE_DATA capability if a user does not
+ * have the shared roles set for the given module slug.
+ *
+ * @since 1.69.0
+ *
+ * @param int $user_id User ID of the user the capability is checked for.
+ * @param string $module_slug Module for which the meta capability is checked for.
+ * @return array Array with a 'do_not_allow' element if checks fail, empty array if checks pass.
+ */
+ private function check_read_shared_module_data_capability( $user_id, $module_slug ) {
+ if ( ! $this->user_has_shared_role_for_module( $user_id, $module_slug ) ) {
+ return array( 'do_not_allow' );
+ }
+
+ return array();
+ }
+
+ /**
+ * Checks if the MANAGE_MODULE_SHARING_OPTIONS or the DELEGATE_MODULE_SHARING_MANAGEMENT
+ * capability should be denied.
+ *
+ * Prevents access to MANAGE_MODULE_SHARING_OPTIONS or the DELEGATE_MODULE_SHARING_MANAGEMENT
+ * capability if a user is not an authenticated admin.
+ *
+ * Furthermore, it prevents access for these capabilities if the user is not the owner
+ * of the given module slug. This check is skipped for MANAGE_MODULE_SHARING_OPTIONS if the
+ * module settings allow all admins to manage sharing options for that module.
+ *
+ * @since 1.69.0
+ *
+ * @param string $cap Capability to be checked.
+ * @param int $user_id User ID of the user the capability is checked for.
+ * @param string $module_slug Module for which the meta capability is checked for.
+ * @return array Array with a 'do_not_allow' element if checks fail, empty array if checks pass.
+ */
+ private function check_module_sharing_admin_capability( $cap, $user_id, $module_slug ) {
+ $module_sharing_settings = $this->modules->get_module_sharing_settings();
+ $sharing_settings = $module_sharing_settings->get();
+
+ if ( ! $this->is_user_authenticated( $user_id ) ) {
+ return array( 'do_not_allow' );
+ }
+
+ if ( self::MANAGE_MODULE_SHARING_OPTIONS === $cap &&
+ isset( $sharing_settings[ $module_slug ]['management'] ) &&
+ 'all_admins' === $sharing_settings[ $module_slug ]['management']
+ ) {
+ return array();
+ }
+
+ try {
+ $module = $this->modules->get_module( $module_slug );
+ if ( ! ( $module instanceof Module_With_Owner ) ) {
+ return array( 'do_not_allow' );
+ }
+ if ( $module->get_owner_id() !== $user_id ) {
+ return array( 'do_not_allow' );
+ }
+ } catch ( Exception $e ) {
+ return array( 'do_not_allow' );
+ }
+
+ return array();
+ }
+
+ /**
+ * Checks if the given user has a role in the list of shared roles.
+ *
+ * @since 1.73.0
+ *
+ * @param int $user_id User ID.
+ * @param string[]|null $shared_roles Optional. List of shared role IDs to check against the user's. Defaults to all shared module roles.
+ * @return bool
+ */
+ private function user_has_shared_role( $user_id, array $shared_roles = null ) {
+ if ( ! is_array( $shared_roles ) ) {
+ $shared_roles = $this->modules->get_module_sharing_settings()->get_all_shared_roles();
+ }
+
+ $shared_user_roles = array_intersect( $shared_roles, ( new WP_User( $user_id ) )->roles );
+
+ return ! empty( $shared_user_roles );
+ }
+
+ /**
+ * Checks if the given user has a role in the list of shared roles for the given module.
+ *
+ * @since 1.73.0
+ *
+ * @param int $user_id User ID.
+ * @param string $module Module slug.
+ * @return bool
+ */
+ private function user_has_shared_role_for_module( $user_id, $module ) {
+ $settings = $this->modules->get_module_sharing_settings()->get();
+
+ if ( empty( $settings[ $module ]['sharedRoles'] ) ) {
+ return false;
+ }
+
+ return $this->user_has_shared_role( $user_id, $settings[ $module ]['sharedRoles'] );
+ }
+
+ /**
+ * Checks if a user is authenticated in Site Kit.
+ *
+ * @since 1.69.0
+ *
+ * @param int $user_id User ID of the user to be checked.
+ * @return bool True if the user is authenticated, false if not.
+ */
+ public function is_user_authenticated( $user_id ) {
+ $restore_user = $this->user_options->switch_user( $user_id );
+ $is_user_authenticated = $this->authentication->is_authenticated();
+ $restore_user();
+ return $is_user_authenticated;
+ }
+
+ /**
+ * Checks if a user is verified in Site Kit.
+ *
+ * @since 1.69.0
+ *
+ * @param int $user_id User ID of the user to be checked.
+ * @return bool True if the user is verified, false if not.
+ */
+ public function is_user_verified( $user_id ) {
+ $restore_user = $this->user_options->switch_user( $user_id );
+ $is_user_verified = $this->authentication->verification()->has();
+ $restore_user();
+ return $is_user_verified;
+ }
+
+ /**
+ * Checks if a user has dimissed the shared dashboard splash screen message.
+ *
+ * @since 1.69.0
+ *
+ * @param int $user_id User ID of the user to be checked.
+ * @return bool True if the user has dismissed the splash message, false if not.
+ */
+ private function is_shared_dashboard_splash_dismissed( $user_id ) {
+ $restore_user = $this->user_options->switch_user( $user_id );
+ $is_splash_dismissed = $this->dismissed_items->is_dismissed( 'shared_dashboard_splash' );
+ $restore_user();
+ return $is_splash_dismissed;
+ }
+
+ /**
+ * Grants custom capabilities on-the-fly, based on core capabilities.
+ *
+ * If you want to instead set up your own custom role or mechanism to grant these capabilities, you can set a
+ * constant flag `GOOGLESITEKIT_DISABLE_DYNAMIC_CAPABILITIES` to ensure this function is not hooked in.
+ *
+ * @since 1.0.0
+ *
+ * @param array $allcaps Associative array of $capability => $grant pairs.
+ * @return array Filtered value of $allcaps.
+ */
+ private function grant_additional_caps( array $allcaps ) {
+ foreach ( $this->base_to_core as $custom_cap => $core_cap ) {
+ if ( isset( $allcaps[ $core_cap ] ) ) {
+ $allcaps[ $custom_cap ] = $allcaps[ $core_cap ];
+ }
+ }
+
+ return $allcaps;
+ }
+
+ /**
+ * Gets related REST routes.
+ *
+ * @since 1.82.0
+ *
+ * @return array List of REST_Route objects.
+ */
+ private function get_rest_routes() {
+ return array(
+ new REST_Route(
+ 'core/user/data/permissions',
+ array(
+ array(
+ 'methods' => WP_REST_Server::READABLE,
+ 'callback' => function() {
+ return new WP_REST_Response( $this->check_all_for_current_user() );
+ },
+ 'permission_callback' => function() {
+ return current_user_can( Permissions::VIEW_SPLASH ) || current_user_can( Permissions::VIEW_DASHBOARD );
+ },
+ ),
+ )
+ ),
+ );
+ }
+
+ /**
+ * Gets all the base capabilities used in Google Site Kit.
+ *
+ * @since 1.31.0
+ *
+ * @return array
+ */
+ public static function get_capabilities() {
+ $capabilities = array(
+ self::AUTHENTICATE,
+ self::SETUP,
+ self::VIEW_POSTS_INSIGHTS,
+ self::VIEW_DASHBOARD,
+ self::MANAGE_OPTIONS,
+ self::VIEW_SPLASH,
+ self::VIEW_AUTHENTICATED_DASHBOARD,
+ self::VIEW_WP_DASHBOARD_WIDGET,
+ self::VIEW_ADMIN_BAR_MENU,
+ );
+
+ if ( Feature_Flags::enabled( 'dashboardSharing' ) ) {
+ $capabilities[] = self::VIEW_SHARED_DASHBOARD;
+ }
+
+ return $capabilities;
+ }
+
+ /**
+ * Gets all the capabilities specifically added for dashboard sharing.
+ *
+ * @since 1.69.0
+ *
+ * @return array List of capabilities specific to dashboard sharing.
+ */
+ public static function get_dashboard_sharing_capabilities() {
+ return array(
+ self::VIEW_SHARED_DASHBOARD,
+ self::READ_SHARED_MODULE_DATA,
+ self::MANAGE_MODULE_SHARING_OPTIONS,
+ self::DELEGATE_MODULE_SHARING_MANAGEMENT,
+ );
+ }
+
+ /**
+ * Gets all the meta capabilities specifically added for dashboard sharing.
+ *
+ * @since 1.70.0
+ *
+ * @return array List of meta capabilities specific to dashboard sharing.
+ */
+ public static function get_dashboard_sharing_meta_capabilities() {
+ return array(
+ self::READ_SHARED_MODULE_DATA,
+ self::MANAGE_MODULE_SHARING_OPTIONS,
+ self::DELEGATE_MODULE_SHARING_MANAGEMENT,
+ );
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/REST_API/Data_Request.php b/wp-content/plugins/google-site-kit/includes/Core/REST_API/Data_Request.php
new file mode 100644
index 000000000..4e8746a95
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/REST_API/Data_Request.php
@@ -0,0 +1,161 @@
+method = strtoupper( $method );
+ $this->type = $type;
+ $this->identifier = $identifier;
+ $this->datapoint = $datapoint;
+ $this->data = $data instanceof self ? $data->data : (array) $data;
+ $this->key = $key;
+ }
+
+ /**
+ * Gets the accessed property by the given name.
+ *
+ * @param string $name Property name.
+ *
+ * @return mixed
+ */
+ public function __get( $name ) {
+ return isset( $this->$name ) ? $this->$name : null;
+ }
+
+ /**
+ * Checks whether or not the given magic property is set.
+ *
+ * @param string $name Property name.
+ *
+ * @return bool
+ */
+ public function __isset( $name ) {
+ return isset( $this->$name );
+ }
+
+ /**
+ * Checks whether the given key exists.
+ *
+ * @param string|int $key Key to check.
+ *
+ * @return bool
+ */
+ public function offsetExists( $key ) {
+ return array_key_exists( $key, $this->data );
+ }
+
+ /**
+ * Gets the value at the given key.
+ *
+ * @param string|int $key Key to return the value for.
+ *
+ * @return mixed
+ */
+ public function offsetGet( $key ) {
+ if ( $this->offsetExists( $key ) ) {
+ return $this->data[ $key ];
+ }
+
+ return null;
+ }
+
+ /**
+ * Sets the given key to the given value.
+ *
+ * @param string|int $key Key to set the value for.
+ * @param mixed $value New value for the given key.
+ */
+ public function offsetSet( $key, $value ) {
+ // Data is immutable.
+ }
+
+ /**
+ * Unsets the given key.
+ *
+ * @param string|int $key Key to unset.
+ */
+ public function offsetUnset( $key ) {
+ // Data is immutable.
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/REST_API/Exception/Invalid_Datapoint_Exception.php b/wp-content/plugins/google-site-kit/includes/Core/REST_API/Exception/Invalid_Datapoint_Exception.php
new file mode 100644
index 000000000..ca53e8315
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/REST_API/Exception/Invalid_Datapoint_Exception.php
@@ -0,0 +1,44 @@
+ 400, // Bad request.
+ )
+ );
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/REST_API/REST_Route.php b/wp-content/plugins/google-site-kit/includes/Core/REST_API/REST_Route.php
new file mode 100644
index 000000000..4fe635104
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/REST_API/REST_Route.php
@@ -0,0 +1,171 @@
+uri = trim( $uri, '/' );
+
+ $this->args = $args;
+
+ if ( isset( $this->args['args'] ) ) {
+ $this->args['args'] = $this->parse_param_args( $this->args['args'] );
+ }
+
+ // In case there are string arguments, this is only a single endpoint and needs to be turned into a list.
+ if ( ! wp_is_numeric_array( $endpoints ) ) {
+ $endpoints = array( $endpoints );
+ }
+
+ $endpoint_defaults = array(
+ 'methods' => WP_REST_Server::READABLE,
+ 'callback' => null,
+ 'args' => array(),
+ );
+
+ foreach ( $endpoints as $endpoint ) {
+ $endpoint = wp_parse_args( $endpoint, $endpoint_defaults );
+
+ $endpoint['args'] = $this->parse_param_args( $endpoint['args'] );
+ if ( ! empty( $this->args['args'] ) ) {
+ $endpoint['args'] = array_merge( $this->args['args'], $endpoint['args'] );
+ }
+
+ $this->args[] = $endpoint;
+ }
+ }
+
+ /**
+ * Registers the REST route.
+ *
+ * @since 1.16.0
+ */
+ public function register() {
+ register_rest_route( REST_Routes::REST_ROOT, $this->get_uri(), $this->get_args() );
+ }
+
+ /**
+ * Gets the route URI.
+ *
+ * @since 1.0.0
+ *
+ * @return string Unique route URI.
+ */
+ public function get_uri() {
+ return $this->uri;
+ }
+
+ /**
+ * Gets the route arguments, including endpoints and schema.
+ *
+ * @since 1.0.0
+ *
+ * @return array Route arguments.
+ */
+ public function get_args() {
+ return $this->args;
+ }
+
+ /**
+ * Parses all supported request arguments and their data.
+ *
+ * @since 1.0.0
+ *
+ * @param array $args Associative array of $arg => $data pairs.
+ * @return array Parsed arguments.
+ */
+ protected function parse_param_args( array $args ) {
+ return array_map( array( $this, 'parse_param_arg' ), $args );
+ }
+
+ /**
+ * Parses data for a supported request argument.
+ *
+ * @since 1.0.0
+ *
+ * @param array $data {
+ * Request argument data.
+ *
+ * @type string $type Data type of the argument. Default 'string'.
+ * @type string $description Public description of the argument. Default empty string.
+ * @†ype callable $validate_callback Callback to validate the argument. Default
+ * {@see rest_validate_rest_arg()}.
+ * @type callable $sanitize_callback Callback to sanitize the argument. Default
+ * {@see rest_sanitize_rest_arg()}.
+ * @type bool $required Whether the argument is required. Default false.
+ * @type mixed $default Default value for the argument, if any. Default none.
+ * @type array $enum Allowlist of possible values to validate against. Default none.
+ * @type array $items Only if $type is 'array': Similar specification that applies to each item.
+ * @type array $properties Only if $type is 'object'. Similar specification per property.
+ * }
+ * @return array Parsed data.
+ */
+ protected function parse_param_arg( array $data ) {
+ return wp_parse_args(
+ $data,
+ array(
+ 'type' => 'string',
+ 'description' => '',
+ 'validate_callback' => 'rest_validate_request_arg',
+ 'sanitize_callback' => 'rest_sanitize_request_arg',
+ 'required' => false,
+ 'default' => null,
+ )
+ );
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/REST_API/REST_Routes.php b/wp-content/plugins/google-site-kit/includes/Core/REST_API/REST_Routes.php
new file mode 100644
index 000000000..2b8882646
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/REST_API/REST_Routes.php
@@ -0,0 +1,228 @@
+context = $context;
+
+ if ( ! $authentication ) {
+ $authentication = new Authentication( $this->context );
+ }
+ $this->authentication = $authentication;
+
+ if ( ! $modules ) {
+ $modules = new Modules( $this->context, null, null, $this->authentication );
+ }
+ $this->modules = $modules;
+ }
+
+ /**
+ * Registers functionality through WordPress hooks.
+ *
+ * @since 1.0.0
+ */
+ public function register() {
+ add_action(
+ 'rest_api_init',
+ function() {
+ $this->register_routes();
+ }
+ );
+
+ add_filter(
+ 'do_parse_request',
+ function( $do_parse_request, $wp ) {
+ add_filter(
+ 'query_vars',
+ function( $vars ) use ( $wp ) {
+ // Unsets standard public query vars to escape conflicts between WordPress core
+ // and Google Site Kit APIs which happen when WordPress incorrectly parses request
+ // arguments.
+
+ $unset_vars = ( $wp->request && stripos( $wp->request, trailingslashit( rest_get_url_prefix() ) . self::REST_ROOT ) !== false ) // Check regular permalinks.
+ || ( empty( $wp->request ) && stripos( $this->context->input()->filter( INPUT_GET, 'rest_route' ), self::REST_ROOT ) !== false ); // Check plain permalinks.
+
+ if ( $unset_vars ) {
+ // List of variable names to remove from public query variables list.
+ return array_values(
+ array_diff(
+ $vars,
+ array(
+ 'orderby',
+ )
+ )
+ );
+ }
+
+ return $vars;
+ }
+ );
+ return $do_parse_request;
+ },
+ 10,
+ 2
+ );
+ }
+
+ /**
+ * Registers all REST routes.
+ *
+ * @since 1.0.0
+ * @since 1.16.0 Reworked to use REST_Route::register method to register a route.
+ */
+ private function register_routes() {
+ $routes = $this->get_routes();
+ foreach ( $routes as $route ) {
+ $route->register();
+ }
+ }
+
+ /**
+ * Gets available REST routes.
+ *
+ * @since 1.0.0
+ * @since 1.3.0 Moved most routes into individual classes and introduced {@see 'googlesitekit_rest_routes'} filter.
+ *
+ * @return array List of REST_Route instances.
+ */
+ private function get_routes() {
+
+ $can_authenticate = function() {
+ return current_user_can( Permissions::AUTHENTICATE );
+ };
+
+ $routes = array(
+ new REST_Route(
+ 'core/user/data/user-input-settings',
+ array(
+ array(
+ 'methods' => WP_REST_Server::READABLE,
+ 'callback' => function( WP_REST_Request $request ) {
+ $user_input_settings = new User_Input_Settings( $this->context, $this->authentication );
+ return rest_ensure_response( $user_input_settings->get_settings() );
+ },
+ 'permission_callback' => $can_authenticate,
+ ),
+ array(
+ 'methods' => WP_REST_Server::CREATABLE,
+ 'callback' => function( WP_REST_Request $request ) {
+ $user_input_settings = new User_Input_Settings( $this->context, $this->authentication );
+ $data = $request->get_param( 'data' );
+
+ if ( ! isset( $data['settings'] ) || ! is_array( $data['settings'] ) ) {
+ return new WP_Error(
+ 'rest_missing_callback_param',
+ __( 'Missing settings data.', 'google-site-kit' ),
+ array( 'status' => 400 )
+ );
+ }
+
+ return rest_ensure_response(
+ $user_input_settings->set_settings(
+ $data['settings']
+ )
+ );
+ },
+ 'permission_callback' => $can_authenticate,
+ 'args' => array(
+ 'data' => array(
+ 'type' => 'object',
+ 'required' => true,
+ 'properties' => array(
+ 'settings' => array(
+ 'type' => 'object',
+ 'required' => true,
+ 'properties' => array(
+ 'purpose' => array(
+ 'type' => 'array',
+ 'items' => array( 'type' => 'string' ),
+ ),
+ 'postFrequency' => array(
+ 'type' => 'array',
+ 'items' => array( 'type' => 'string' ),
+ ),
+ 'goals' => array(
+ 'type' => 'array',
+ 'items' => array( 'type' => 'string' ),
+ ),
+ ),
+ ),
+ ),
+ ),
+ ),
+ ),
+ )
+ ),
+ );
+
+ /**
+ * Filters the list of available REST routes.
+ *
+ * @since 1.3.0
+ *
+ * @param array $routes List of REST_Route objects.
+ */
+ return apply_filters( 'googlesitekit_rest_routes', $routes );
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Storage/Cache.php b/wp-content/plugins/google-site-kit/includes/Core/Storage/Cache.php
new file mode 100644
index 000000000..e63ee816b
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Storage/Cache.php
@@ -0,0 +1,137 @@
+global_cache_keys = get_option( self::$global_cache_keys_key ) ?: array();
+ }
+
+ /**
+ * Helper function to get the cache data.
+ */
+ public function get_current_cache_data() {
+
+ $cache_data = array();
+
+ // Add the global cache data.
+ $keys = $this->get_global_cache_keys();
+ foreach ( $keys as $key ) {
+
+ // This only retrieves fresh data because transients expire.
+ $cache = get_transient( 'googlesitekit_' . $key );
+
+ if ( $cache ) {
+ $cache_data[ $key ] = $cache;
+ } else {
+
+ // Remove the expired key from the global cache.
+ $this->remove_global_cache_key( $key );
+ }
+ }
+ return $cache_data;
+ }
+
+ /**
+ * Remove a cache key to the global record of cache keys.
+ *
+ * @param string $key The key to add.
+ */
+ private function remove_global_cache_key( $key ) {
+ $key_index = array_search( $key, $this->global_cache_keys, true );
+
+ if ( $key_index ) {
+ unset( $this->global_cache_keys[ $key_index ] );
+ update_option( self::$global_cache_keys_key, $this->global_cache_keys, false );
+ }
+ }
+
+ /**
+ * Add a cache key to the global record of cache keys.
+ *
+ * @param string $key The key to add.
+ */
+ private function add_global_cache_key( $key ) {
+ // Only add the key if it isn't already present.
+ if ( ! in_array( $key, $this->global_cache_keys, true ) ) {
+ $this->global_cache_keys[] = $key;
+ update_option( self::$global_cache_keys_key, $this->global_cache_keys, false );
+ }
+ }
+
+ /**
+ * Retrieve the global record of cache keys.
+ *
+ * @return array The array of cache keys used on the site.
+ */
+ private function get_global_cache_keys() {
+ return $this->global_cache_keys;
+ }
+
+ /**
+ * Cache some data.
+ *
+ * @param Object $key The original data key.
+ * @param Object $data The data to cache.
+ */
+ public function set_cache_data( $key, $data ) {
+ set_transient( 'googlesitekit_' . $key, $data, HOUR_IN_SECONDS );
+ $this->add_global_cache_key( $key );
+ }
+
+ /**
+ * Cache the results of a batch operation.
+ *
+ * @param array $batch_requests The original requests.
+ * @param array $results The results to cache.
+ */
+ public function cache_batch_results( $batch_requests, $results ) {
+ $request_keys = wp_list_pluck( $batch_requests, 'key' );
+
+ foreach ( $results as $key => $result ) {
+ if ( $result instanceof \Exception || $result instanceof Google_Service_Exception ) {
+ continue;
+ }
+ $key = str_replace( 'response-', '', $key );
+ if ( in_array( $key, $request_keys, true ) ) {
+ $this->set_cache_data( $key, $result );
+ }
+ }
+ }
+
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Storage/Data_Encryption.php b/wp-content/plugins/google-site-kit/includes/Core/Storage/Data_Encryption.php
new file mode 100644
index 000000000..5e5fad987
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Storage/Data_Encryption.php
@@ -0,0 +1,145 @@
+key = $this->get_default_key();
+ $this->salt = $this->get_default_salt();
+ }
+
+ /**
+ * Encrypts a value.
+ *
+ * If a user-based key is set, that key is used. Otherwise the default key is used.
+ *
+ * @since 1.0.0
+ *
+ * @param string $value Value to encrypt.
+ * @return string|bool Encrypted value, or false on failure.
+ */
+ public function encrypt( $value ) {
+ if ( ! extension_loaded( 'openssl' ) ) {
+ return $value;
+ }
+
+ $method = 'aes-256-ctr';
+ $ivlen = openssl_cipher_iv_length( $method );
+ $iv = openssl_random_pseudo_bytes( $ivlen );
+
+ $raw_value = openssl_encrypt( $value . $this->salt, $method, $this->key, 0, $iv );
+ if ( ! $raw_value ) {
+ return false;
+ }
+
+ return base64_encode( $iv . $raw_value );
+ }
+
+ /**
+ * Decrypts a value.
+ *
+ * If a user-based key is set, that key is used. Otherwise the default key is used.
+ *
+ * @since 1.0.0
+ *
+ * @param string $raw_value Value to decrypt.
+ * @return string|bool Decrypted value, or false on failure.
+ */
+ public function decrypt( $raw_value ) {
+ if ( ! extension_loaded( 'openssl' ) ) {
+ return $raw_value;
+ }
+
+ $raw_value = base64_decode( $raw_value, true );
+
+ $method = 'aes-256-ctr';
+ $ivlen = openssl_cipher_iv_length( $method );
+ $iv = substr( $raw_value, 0, $ivlen );
+
+ $raw_value = substr( $raw_value, $ivlen );
+
+ $value = openssl_decrypt( $raw_value, $method, $this->key, 0, $iv );
+ if ( ! $value || substr( $value, - strlen( $this->salt ) ) !== $this->salt ) {
+ return false;
+ }
+
+ return substr( $value, 0, - strlen( $this->salt ) );
+ }
+
+ /**
+ * Gets the default encryption key to use.
+ *
+ * @since 1.0.0
+ *
+ * @return string Default (not user-based) encryption key.
+ */
+ private function get_default_key() {
+ if ( defined( 'GOOGLESITEKIT_ENCRYPTION_KEY' ) && '' !== GOOGLESITEKIT_ENCRYPTION_KEY ) {
+ return GOOGLESITEKIT_ENCRYPTION_KEY;
+ }
+
+ if ( defined( 'LOGGED_IN_KEY' ) && '' !== LOGGED_IN_KEY ) {
+ return LOGGED_IN_KEY;
+ }
+
+ // If this is reached, you're either not on a live site or have a serious security issue.
+ return 'das-ist-kein-geheimer-schluessel';
+ }
+
+ /**
+ * Gets the default encryption salt to use.
+ *
+ * @since 1.0.0
+ *
+ * @return string Encryption salt.
+ */
+ private function get_default_salt() {
+ if ( defined( 'GOOGLESITEKIT_ENCRYPTION_SALT' ) && '' !== GOOGLESITEKIT_ENCRYPTION_SALT ) {
+ return GOOGLESITEKIT_ENCRYPTION_SALT;
+ }
+
+ if ( defined( 'LOGGED_IN_SALT' ) && '' !== LOGGED_IN_SALT ) {
+ return LOGGED_IN_SALT;
+ }
+
+ // If this is reached, you're either not on a live site or have a serious security issue.
+ return 'das-ist-kein-geheimes-salz';
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Storage/Encrypted_Options.php b/wp-content/plugins/google-site-kit/includes/Core/Storage/Encrypted_Options.php
new file mode 100644
index 000000000..9cc1a7f94
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Storage/Encrypted_Options.php
@@ -0,0 +1,115 @@
+encryption = new Data_Encryption();
+ $this->options = $options;
+ }
+
+ /**
+ * Checks whether or not a value is set for the given option.
+ *
+ * @since 1.3.0
+ *
+ * @param string $option Option name.
+ * @return bool True if value set, false otherwise.
+ */
+ public function has( $option ) {
+ return $this->options->has( $option );
+ }
+
+ /**
+ * Gets the value of the given option.
+ *
+ * @since 1.0.0
+ *
+ * @param string $option Option name.
+ * @return mixed Value set for the option, or false if not set.
+ */
+ public function get( $option ) {
+ $raw_value = $this->options->get( $option );
+
+ // If there is no value stored, return the default which will not be encrypted.
+ if ( ! $this->options->has( $option ) ) {
+ return $raw_value;
+ }
+
+ $data = $this->encryption->decrypt( $raw_value );
+
+ return maybe_unserialize( $data );
+ }
+
+ /**
+ * Sets the value for a option.
+ *
+ * @since 1.0.0
+ *
+ * @param string $option Option name.
+ * @param mixed $value Option value. Must be serializable if non-scalar.
+ * @return bool True on success, false on failure.
+ */
+ public function set( $option, $value ) {
+ if ( ! is_scalar( $value ) ) {
+ $value = maybe_serialize( $value );
+ }
+ $raw_value = $this->encryption->encrypt( $value );
+ if ( ! $raw_value ) {
+ return false;
+ }
+
+ return $this->options->set( $option, $raw_value );
+ }
+
+ /**
+ * Deletes the given option.
+ *
+ * @since 1.0.0
+ *
+ * @param string $option Option name.
+ * @return bool True on success, false on failure.
+ */
+ public function delete( $option ) {
+ return $this->options->delete( $option );
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Storage/Encrypted_User_Options.php b/wp-content/plugins/google-site-kit/includes/Core/Storage/Encrypted_User_Options.php
new file mode 100644
index 000000000..183ccf534
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Storage/Encrypted_User_Options.php
@@ -0,0 +1,135 @@
+encryption = new Data_Encryption();
+ $this->user_options = $user_options;
+ }
+
+ /**
+ * Gets the value of the given user option.
+ *
+ * @since 1.0.0
+ *
+ * @param string $option User option name.
+ * @return mixed Value set for the user option, or false if not set.
+ */
+ public function get( $option ) {
+ $raw_value = $this->user_options->get( $option );
+ if ( ! $raw_value ) {
+ return false;
+ }
+
+ $data = $this->encryption->decrypt( $raw_value );
+
+ return maybe_unserialize( $data );
+ }
+
+ /**
+ * Sets the value for a user option.
+ *
+ * @since 1.0.0
+ *
+ * @param string $option User option name.
+ * @param mixed $value User option value. Must be serializable if non-scalar.
+ * @return bool True on success, false on failure.
+ */
+ public function set( $option, $value ) {
+ if ( ! is_scalar( $value ) ) {
+ $value = maybe_serialize( $value );
+ }
+ $raw_value = $this->encryption->encrypt( $value );
+ if ( ! $raw_value ) {
+ return false;
+ }
+
+ return $this->user_options->set( $option, $raw_value );
+ }
+
+ /**
+ * Deletes the given user option.
+ *
+ * @since 1.0.0
+ *
+ * @param string $option User option name.
+ * @return bool True on success, false on failure.
+ */
+ public function delete( $option ) {
+ return $this->user_options->delete( $option );
+ }
+
+ /**
+ * Gets the underlying meta key for the given option.
+ *
+ * @since 1.4.0
+ *
+ * @param string $option Option name.
+ * @return string Meta key name.
+ */
+ public function get_meta_key( $option ) {
+ return $this->user_options->get_meta_key( $option );
+ }
+
+ /**
+ * Gets the ID of the user that options are controlled for.
+ *
+ * @since 1.4.0
+ *
+ * @return int User ID.
+ */
+ public function get_user_id() {
+ return $this->user_options->get_user_id();
+ }
+
+ /**
+ * Switches the user that options are controlled for to the one with the given ID.
+ *
+ * @since 1.4.0
+ *
+ * @param int $user_id User ID.
+ */
+ public function switch_user( $user_id ) {
+ $this->user_options->switch_user( $user_id );
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Storage/Options.php b/wp-content/plugins/google-site-kit/includes/Core/Storage/Options.php
new file mode 100644
index 000000000..7e7888543
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Storage/Options.php
@@ -0,0 +1,116 @@
+context = $context;
+ }
+
+ /**
+ * Checks whether or not a value is set for the given option.
+ *
+ * @since 1.3.0
+ *
+ * @param string $option Option name.
+ * @return bool True if value set, false otherwise.
+ */
+ public function has( $option ) {
+ // Call without getting the value to ensure 'notoptions' cache is fresh for the option.
+ $this->get( $option );
+
+ if ( $this->context->is_network_mode() ) {
+ $network_id = get_current_network_id();
+ $notoptions = wp_cache_get( "$network_id:notoptions", 'site-options' );
+ } else {
+ $notoptions = wp_cache_get( 'notoptions', 'options' );
+ }
+
+ return ! isset( $notoptions[ $option ] );
+ }
+
+ /**
+ * Gets the value of the given option.
+ *
+ * @since 1.0.0
+ *
+ * @param string $option Option name.
+ * @return mixed Value set for the option, or false if not set.
+ */
+ public function get( $option ) {
+ if ( $this->context->is_network_mode() ) {
+ return get_network_option( null, $option );
+ }
+
+ return get_option( $option );
+ }
+
+ /**
+ * Sets the value for a option.
+ *
+ * @since 1.0.0
+ *
+ * @param string $option Option name.
+ * @param mixed $value Option value. Must be serializable if non-scalar.
+ * @return bool True on success, false on failure.
+ */
+ public function set( $option, $value ) {
+ if ( $this->context->is_network_mode() ) {
+ return update_network_option( null, $option, $value );
+ }
+
+ return update_option( $option, $value );
+ }
+
+ /**
+ * Deletes the given option.
+ *
+ * @since 1.0.0
+ *
+ * @param string $option Option name.
+ * @return bool True on success, false on failure.
+ */
+ public function delete( $option ) {
+ if ( $this->context->is_network_mode() ) {
+ return delete_network_option( null, $option );
+ }
+
+ return delete_option( $option );
+ }
+}
+
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Storage/Options_Interface.php b/wp-content/plugins/google-site-kit/includes/Core/Storage/Options_Interface.php
new file mode 100644
index 000000000..c1965754c
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Storage/Options_Interface.php
@@ -0,0 +1,62 @@
+post_meta = $post_meta;
+ }
+
+ /**
+ * Registers the post setting in WordPress.
+ *
+ * @since 1.33.0
+ */
+ public function register() {
+ register_meta(
+ 'post',
+ static::META_KEY,
+ array(
+ 'type' => $this->get_type(),
+ 'sanitize_callback' => $this->get_sanitize_callback(),
+ 'single' => true,
+ 'show_in_rest' => $this->get_show_in_rest(),
+ )
+ );
+ }
+
+ /**
+ * Gets the expected value type.
+ *
+ * Returns 'string' by default for consistency with register_meta.
+ * Override in a sub-class if different.
+ *
+ * Valid values are 'string', 'boolean', 'integer', 'number', 'array', and 'object'.
+ *
+ * @since 1.33.0
+ *
+ * @return string The type name.
+ */
+ protected function get_type() {
+ return 'string';
+ }
+
+ /**
+ * Gets the default value.
+ *
+ * Returns an empty string by default.
+ * Override in a sub-class if different.
+ *
+ * @since 1.33.0
+ *
+ * @return mixed The default value.
+ */
+ protected function get_default() {
+ return '';
+ }
+
+ /**
+ * Gets the callback for sanitizing the setting's value before saving.
+ *
+ * For use internally with register_meta.
+ * Returns `null` for consistency with the default in register_meta.
+ * Override in a sub-class.
+ *
+ * @since 1.33.0
+ *
+ * @return callable|null Sanitize callback function.
+ */
+ protected function get_sanitize_callback() {
+ return null;
+ }
+
+ /**
+ * Gets the `show_in_rest` value for this postmeta setting value.
+ *
+ * @since 1.37.0
+ *
+ * @return bool|Array Any valid value for the `show_in_rest`
+ */
+ protected function get_show_in_rest() {
+ return false;
+ }
+
+ /**
+ * Checks whether a post meta exists or not.
+ *
+ * @since 1.33.0
+ *
+ * @param int $post_id Post ID.
+ * @return bool True if the meta key exists, otherwise false.
+ */
+ public function has( $post_id ) {
+ return metadata_exists( 'post', $post_id, static::META_KEY );
+ }
+
+ /**
+ * Gets the value of the setting.
+ *
+ * @since 1.33.0
+ *
+ * @param int $post_id Post ID.
+ * @return mixed Value set for the setting, or default if not set.
+ */
+ public function get( $post_id ) {
+ if ( ! $this->has( $post_id ) ) {
+ return $this->get_default();
+ }
+
+ return $this->post_meta->get( $post_id, static::META_KEY, true );
+ }
+
+ /**
+ * Updates the post setting for the given post ID.
+ *
+ * @since 1.33.0
+ *
+ * @param int $post_id Post ID.
+ * @param mixed $value Metadata value.
+ * @return bool TRUE on success, otherwise FALSE.
+ */
+ public function set( $post_id, $value ) {
+ return $this->post_meta->update( $post_id, static::META_KEY, $value );
+ }
+
+ /**
+ * Deletes the post setting for the given post ID.
+ *
+ * @since 1.33.0
+ *
+ * @param int $post_id Post ID.
+ * @return bool TRUE on success, otherwise FALSE.
+ */
+ public function delete( $post_id ) {
+ return $this->post_meta->delete( $post_id, static::META_KEY );
+ }
+
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Storage/Setting.php b/wp-content/plugins/google-site-kit/includes/Core/Storage/Setting.php
new file mode 100644
index 000000000..5a125c829
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Storage/Setting.php
@@ -0,0 +1,154 @@
+options = $options;
+ }
+
+ /**
+ * Registers the setting in WordPress.
+ *
+ * @since 1.2.0
+ */
+ public function register() {
+ register_setting(
+ static::OPTION,
+ static::OPTION,
+ array(
+ 'type' => $this->get_type(),
+ 'sanitize_callback' => $this->get_sanitize_callback(),
+ 'default' => $this->get_default(),
+ )
+ );
+ }
+
+ /**
+ * Checks whether or not the option is set with a valid value.
+ *
+ * @since 1.2.0
+ * @since 1.3.0 Now relies on {@see Options_Interface::has()}.
+ *
+ * @return bool True on success, false on failure.
+ */
+ public function has() {
+ return $this->options->has( static::OPTION );
+ }
+
+ /**
+ * Gets the value of the setting.
+ *
+ * @since 1.2.0
+ *
+ * @return mixed Value set for the option, or registered default if not set.
+ */
+ public function get() {
+ return $this->options->get( static::OPTION );
+ }
+
+ /**
+ * Sets the value of the setting with the given value.
+ *
+ * @since 1.2.0
+ *
+ * @param mixed $value Setting value. Must be serializable if non-scalar.
+ *
+ * @return bool True on success, false on failure.
+ */
+ public function set( $value ) {
+ return $this->options->set( static::OPTION, $value );
+ }
+
+ /**
+ * Deletes the setting.
+ *
+ * @since 1.2.0
+ *
+ * @return bool True on success, false on failure.
+ */
+ public function delete() {
+ return $this->options->delete( static::OPTION );
+ }
+
+ /**
+ * Gets the expected value type.
+ *
+ * Returns 'string' by default for consistency with register_setting.
+ * Override in a sub-class if different.
+ *
+ * @since 1.2.0
+ *
+ * @return string The type name.
+ */
+ protected function get_type() {
+ return 'string';
+ }
+
+ /**
+ * Gets the default value.
+ *
+ * For use with register_setting and fetching the default directly.
+ * Returns false by default for consistency with get_option.
+ * Override in a sub-class if different.
+ *
+ * @since 1.2.0
+ *
+ * @return mixed The default value.
+ */
+ protected function get_default() {
+ return false;
+ }
+
+ /**
+ * Gets the callback for sanitizing the setting's value before saving.
+ *
+ * For use internally with register_setting.
+ * Returns `null` for consistency with the default in register_setting.
+ * Override in a sub-class.
+ *
+ * @since 1.2.0
+ *
+ * @return callable|null
+ */
+ protected function get_sanitize_callback() {
+ return null;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Storage/Setting_With_Legacy_Keys_Trait.php b/wp-content/plugins/google-site-kit/includes/Core/Storage/Setting_With_Legacy_Keys_Trait.php
new file mode 100644
index 000000000..10f816d37
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Storage/Setting_With_Legacy_Keys_Trait.php
@@ -0,0 +1,44 @@
+migrate_legacy_keys( $option, $legacy_key_map );
+ }
+ return $option;
+ },
+ 0
+ );
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Storage/Setting_With_Owned_Keys_Interface.php b/wp-content/plugins/google-site-kit/includes/Core/Storage/Setting_With_Owned_Keys_Interface.php
new file mode 100644
index 000000000..30f88606e
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Storage/Setting_With_Owned_Keys_Interface.php
@@ -0,0 +1,31 @@
+get_owned_keys();
+
+ add_action(
+ 'add_option_' . static::OPTION,
+ function ( $option, $value ) use ( $keys ) {
+ if ( is_array( $value ) && count( array_intersect( array_keys( $value ), $keys ) ) > 0 && current_user_can( Permissions::MANAGE_OPTIONS ) ) {
+ $this->merge( array( 'ownerID' => get_current_user_id() ) );
+ }
+ },
+ 10,
+ 2
+ );
+
+ add_filter(
+ 'pre_update_option_' . static::OPTION,
+ function( $value, $old_value ) use ( $keys ) {
+ if ( is_array( $value ) && is_array( $old_value ) ) {
+ foreach ( $keys as $key ) {
+ if ( isset( $value[ $key ], $old_value[ $key ] ) && $value[ $key ] !== $old_value[ $key ] && current_user_can( Permissions::MANAGE_OPTIONS ) ) {
+ $value['ownerID'] = get_current_user_id();
+ break;
+ }
+ }
+ }
+
+ return $value;
+ },
+ 10,
+ 2
+ );
+ }
+
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Storage/Transients.php b/wp-content/plugins/google-site-kit/includes/Core/Storage/Transients.php
new file mode 100644
index 000000000..e20040a0b
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Storage/Transients.php
@@ -0,0 +1,95 @@
+context = $context;
+ }
+
+ /**
+ * Gets the value of the given transient.
+ *
+ * @since 1.0.0
+ *
+ * @param string $transient Transient name.
+ * @return mixed Value set for the transient, or false if not set.
+ */
+ public function get( $transient ) {
+ if ( $this->context->is_network_mode() ) {
+ return get_site_transient( $transient );
+ }
+
+ return get_transient( $transient );
+ }
+
+ /**
+ * Sets the value for a transient.
+ *
+ * @since 1.0.0
+ *
+ * @param string $transient Transient name.
+ * @param mixed $value Transient value. Must be serializable if non-scalar.
+ * @param int $expiration Optional. Time until expiration in seconds. Default 0 (no expiration).
+ * @return bool True on success, false on failure.
+ */
+ public function set( $transient, $value, $expiration = 0 ) {
+ if ( $this->context->is_network_mode() ) {
+ return set_site_transient( $transient, $value, $expiration );
+ }
+
+ return set_transient( $transient, $value, $expiration );
+ }
+
+ /**
+ * Deletes the given transient.
+ *
+ * @since 1.0.0
+ *
+ * @param string $transient Transient name.
+ * @return bool True on success, false on failure.
+ */
+ public function delete( $transient ) {
+ if ( $this->context->is_network_mode() ) {
+ return delete_site_transient( $transient );
+ }
+
+ return delete_transient( $transient );
+ }
+}
+
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Storage/User_Aware_Interface.php b/wp-content/plugins/google-site-kit/includes/Core/Storage/User_Aware_Interface.php
new file mode 100644
index 000000000..d19686b74
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Storage/User_Aware_Interface.php
@@ -0,0 +1,41 @@
+user_id;
+ }
+
+ /**
+ * Switches the current user to the one with the given ID.
+ *
+ * This method exists to exchange the user that is set as the current user in WordPress on the fly. In most cases
+ * it is preferred to create a new instance of the class when dealing with multiple users. This method should only
+ * be applied when the entire chain of class main instances need to be updated to rely on another user, i.e. when
+ * the current WordPress user has changed.
+ *
+ * @since 1.18.0
+ *
+ * @param int $user_id User ID.
+ * @return callable A closure to switch back to the original user.
+ */
+ public function switch_user( $user_id ) {
+ $prev_user_id = $this->user_id;
+
+ $this->user_id = (int) $user_id;
+
+ return function() use ( $prev_user_id ) {
+ $this->user_id = $prev_user_id;
+ };
+ }
+
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Storage/User_Options.php b/wp-content/plugins/google-site-kit/includes/Core/Storage/User_Options.php
new file mode 100644
index 000000000..60677fa82
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Storage/User_Options.php
@@ -0,0 +1,140 @@
+context = $context;
+
+ if ( empty( $user_id ) ) {
+ $user_id = get_current_user_id();
+ }
+ $this->user_id = (int) $user_id;
+ }
+
+ /**
+ * Gets the value of the given user option.
+ *
+ * @since 1.0.0
+ *
+ * @param string $option User option name.
+ * @return mixed Value set for the user option, or false if not set.
+ */
+ public function get( $option ) {
+ $user_id = $this->get_user_id();
+ if ( ! $user_id ) {
+ return false;
+ }
+
+ if ( $this->context->is_network_mode() ) {
+ $value = get_user_meta( $user_id, $option );
+ if ( empty( $value ) ) {
+ return false;
+ }
+
+ return $value[0];
+ }
+
+ return get_user_option( $option, $user_id );
+ }
+
+ /**
+ * Sets the value for a user option.
+ *
+ * @since 1.0.0
+ *
+ * @param string $option User option name.
+ * @param mixed $value User option value. Must be serializable if non-scalar.
+ * @return bool True on success, false on failure.
+ */
+ public function set( $option, $value ) {
+ $user_id = $this->get_user_id();
+ if ( ! $user_id ) {
+ return false;
+ }
+
+ if ( $this->context->is_network_mode() ) {
+ return (bool) update_user_meta( $user_id, $option, $value );
+ }
+
+ return (bool) update_user_option( $user_id, $option, $value );
+ }
+
+ /**
+ * Deletes the given user option.
+ *
+ * @since 1.0.0
+ *
+ * @param string $option User option name.
+ * @return bool True on success, false on failure.
+ */
+ public function delete( $option ) {
+ $user_id = $this->get_user_id();
+ if ( ! $user_id ) {
+ return false;
+ }
+
+ if ( $this->context->is_network_mode() ) {
+ return (bool) delete_user_meta( $user_id, $option );
+ }
+
+ return (bool) delete_user_option( $user_id, $option );
+ }
+
+ /**
+ * Gets the underlying meta key for the given option.
+ *
+ * @since 1.4.0
+ *
+ * @param string $option Option name.
+ * @return string Meta key name.
+ */
+ public function get_meta_key( $option ) {
+ global $wpdb;
+
+ if ( $this->context->is_network_mode() ) {
+ return $option;
+ }
+
+ return $wpdb->get_blog_prefix() . $option;
+ }
+
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Storage/User_Options_Interface.php b/wp-content/plugins/google-site-kit/includes/Core/Storage/User_Options_Interface.php
new file mode 100644
index 000000000..e084ac942
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Storage/User_Options_Interface.php
@@ -0,0 +1,63 @@
+user_options = $user_options;
+ }
+
+ /**
+ * Registers the setting in WordPress.
+ *
+ * @since 1.4.0
+ */
+ public function register() {
+ register_meta(
+ 'user',
+ $this->user_options->get_meta_key( static::OPTION ),
+ array(
+ 'type' => $this->get_type(),
+ 'sanitize_callback' => $this->get_sanitize_callback(),
+ 'single' => true,
+ )
+ );
+ }
+
+ /**
+ * Checks whether or not the setting exists.
+ *
+ * @since 1.4.0
+ *
+ * @return bool True on success, false on failure.
+ */
+ public function has() {
+ return metadata_exists(
+ 'user',
+ $this->user_options->get_user_id(),
+ $this->user_options->get_meta_key( static::OPTION )
+ );
+ }
+
+ /**
+ * Gets the value of the setting.
+ *
+ * @since 1.4.0
+ *
+ * @return mixed Value set for the option, or default if not set.
+ */
+ public function get() {
+ if ( ! $this->has() ) {
+ return $this->get_default();
+ }
+
+ return $this->user_options->get( static::OPTION );
+ }
+
+ /**
+ * Sets the value of the setting with the given value.
+ *
+ * @since 1.4.0
+ *
+ * @param mixed $value Setting value. Must be serializable if non-scalar.
+ *
+ * @return bool True on success, false on failure.
+ */
+ public function set( $value ) {
+ return $this->user_options->set( static::OPTION, $value );
+ }
+
+ /**
+ * Deletes the setting.
+ *
+ * @since 1.4.0
+ *
+ * @return bool True on success, false on failure.
+ */
+ public function delete() {
+ return $this->user_options->delete( static::OPTION );
+ }
+
+ /**
+ * Gets the expected value type.
+ *
+ * Returns 'string' by default for consistency with register_meta.
+ * Override in a sub-class if different.
+ *
+ * Valid values are 'string', 'boolean', 'integer', 'number', 'array', and 'object'.
+ *
+ * @since 1.4.0
+ *
+ * @return string The type name.
+ */
+ protected function get_type() {
+ return 'string';
+ }
+
+ /**
+ * Gets the default value.
+ *
+ * Returns an empty string by default for consistency with get_user_meta.
+ * Override in a sub-class if different.
+ *
+ * @since 1.4.0
+ *
+ * @return mixed The default value.
+ */
+ protected function get_default() {
+ return '';
+ }
+
+ /**
+ * Gets the callback for sanitizing the setting's value before saving.
+ *
+ * For use internally with register_meta.
+ * Returns `null` for consistency with the default in register_meta.
+ * Override in a sub-class.
+ *
+ * @since 1.4.0
+ *
+ * @return callable|null
+ */
+ protected function get_sanitize_callback() {
+ return null;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Storage/User_Transients.php b/wp-content/plugins/google-site-kit/includes/Core/Storage/User_Transients.php
new file mode 100644
index 000000000..77d213672
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Storage/User_Transients.php
@@ -0,0 +1,274 @@
+context = $context;
+ $this->user_options = new User_Options( $context, $user_id );
+ $this->ext_cache_group = $context->is_network_mode() ? 'site-transient' : 'transient';
+ }
+
+ /**
+ * Gets the associated user ID.
+ *
+ * @since 1.18.0
+ *
+ * @return int User ID.
+ */
+ public function get_user_id() {
+ return $this->user_options->get_user_id();
+ }
+
+ /**
+ * Switches the current user to the one with the given ID.
+ *
+ * This method exists to exchange the user that is set as the current user in WordPress on the fly. In most cases
+ * it is preferred to create a new instance of the class when dealing with multiple users. This method should only
+ * be applied when the entire chain of class main instances need to be updated to rely on another user, i.e. when
+ * the current WordPress user has changed.
+ *
+ * @since 1.18.0
+ *
+ * @param int $user_id User ID.
+ * @return callable A closure to switch back to the original user.
+ */
+ public function switch_user( $user_id ) {
+ return $this->user_options->switch_user( $user_id );
+ }
+
+ /**
+ * Gets the value of the given transient.
+ *
+ * @since 1.18.0
+ *
+ * @param string $transient Transient name.
+ * @return mixed Value set for the transient, or false if not set.
+ */
+ public function get( $transient ) {
+ return wp_using_ext_object_cache()
+ ? $this->get_from_cache( $transient )
+ : $this->get_from_user_options( $transient );
+ }
+
+ /**
+ * Sets the value for a transient.
+ *
+ * @since 1.18.0
+ *
+ * @param string $transient Transient name.
+ * @param mixed $value Transient value.
+ * @param int $expiration Optional. Time until expiration in seconds. Default 0 (no expiration).
+ * @return bool True on success, false on failure.
+ */
+ public function set( $transient, $value, $expiration = 0 ) {
+ return wp_using_ext_object_cache()
+ ? $this->set_in_cache( $transient, $value, $expiration )
+ : $this->set_in_user_options( $transient, $value, $expiration );
+ }
+
+ /**
+ * Deletes the given transient.
+ *
+ * @since 1.18.0
+ *
+ * @param string $transient Transient name.
+ * @return bool True on success, false on failure.
+ */
+ public function delete( $transient ) {
+ return wp_using_ext_object_cache()
+ ? $this->delete_from_cache( $transient )
+ : $this->delete_from_user_options( $transient );
+ }
+
+ /**
+ * Gets prefixed transient name for an external cache.
+ *
+ * @since 1.18.0
+ *
+ * @param string $transient Transient name.
+ * @return string Prefixed transient name.
+ */
+ private function get_transient_name_for_cache( $transient ) {
+ $user_id = $this->get_user_id();
+ return $this->user_options->get_meta_key( "user_{$user_id}_{$transient}" );
+ }
+
+ /**
+ * Gets the value of the given transient from an external cache.
+ *
+ * @since 1.18.0
+ *
+ * @param string $transient Transient name.
+ * @return mixed Value set for the transient, or false if not set.
+ */
+ private function get_from_cache( $transient ) {
+ return wp_cache_get(
+ $this->get_transient_name_for_cache( $transient ),
+ $this->ext_cache_group
+ );
+ }
+
+ /**
+ * Sets the value for a transient in an external cache.
+ *
+ * @since 1.18.0
+ *
+ * @param string $transient Transient name.
+ * @param mixed $value Transient value.
+ * @param int $expiration Optional. Time until expiration in seconds. Default 0 (no expiration).
+ * @return bool True on success, false on failure.
+ */
+ private function set_in_cache( $transient, $value, $expiration ) {
+ return wp_cache_set( // phpcs:ignore WordPressVIPMinimum.Performance.LowExpiryCacheTime.LowCacheTime
+ $this->get_transient_name_for_cache( $transient ),
+ $value,
+ $this->ext_cache_group,
+ (int) $expiration
+ );
+ }
+
+ /**
+ * Deletes the given transient in an external cache.
+ *
+ * @since 1.18.0
+ *
+ * @param string $transient Transient name.
+ * @return bool True on success, false on failure.
+ */
+ private function delete_from_cache( $transient ) {
+ return wp_cache_delete(
+ $this->get_transient_name_for_cache( $transient ),
+ $this->ext_cache_group
+ );
+ }
+
+ /**
+ * Gets prefixed transient name.
+ *
+ * @since 1.18.0
+ *
+ * @param string $transient Transient name.
+ * @return string Prefixed transient name.
+ */
+ private function get_transient_name_for_user_options( $transient ) {
+ return 'googlesitekit_transient_' . $transient;
+ }
+
+ /**
+ * Gets prefixed transient timeout name.
+ *
+ * @since 1.18.0
+ *
+ * @param string $transient Transient name.
+ * @return string Prefixed transient timeout name.
+ */
+ private function get_transient_timeout_for_user_options( $transient ) {
+ return 'googlesitekit_transient_timeout_' . $transient;
+ }
+
+ /**
+ * Gets the value of the given transient.
+ *
+ * @since 1.18.0
+ *
+ * @param string $transient Transient name.
+ * @return mixed Value set for the transient, or false if not set.
+ */
+ private function get_from_user_options( $transient ) {
+ $prefixed_transient_timeout = $this->get_transient_timeout_for_user_options( $transient );
+ $timeout = $this->user_options->get( $prefixed_transient_timeout );
+ if ( false === $timeout || $timeout < time() ) {
+ $this->delete( $transient );
+ return false;
+ }
+
+ $prefixed_transient = $this->get_transient_name_for_user_options( $transient );
+ return $this->user_options->get( $prefixed_transient );
+ }
+
+ /**
+ * Sets the value for a transient.
+ *
+ * @since 1.18.0
+ *
+ * @param string $transient Transient name.
+ * @param mixed $value Transient value.
+ * @param int $expiration Optional. Time until expiration in seconds. Default 0 (no expiration).
+ * @return bool True on success, false on failure.
+ */
+ private function set_in_user_options( $transient, $value, $expiration ) {
+ $prefixed_transient_timeout = $this->get_transient_timeout_for_user_options( $transient );
+ $this->user_options->set( $prefixed_transient_timeout, time() + $expiration );
+
+ $prefixed_transient = $this->get_transient_name_for_user_options( $transient );
+ return $this->user_options->set( $prefixed_transient, $value );
+ }
+
+ /**
+ * Deletes the given transient.
+ *
+ * @since 1.18.0
+ *
+ * @param string $transient Transient name.
+ * @return bool True on success, false on failure.
+ */
+ private function delete_from_user_options( $transient ) {
+ $prefixed_transient_timeout = $this->get_transient_timeout_for_user_options( $transient );
+ $this->user_options->delete( $prefixed_transient_timeout );
+
+ $prefixed_transient = $this->get_transient_name_for_user_options( $transient );
+ return $this->user_options->delete( $prefixed_transient );
+ }
+
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Tags/Blockable_Tag_Interface.php b/wp-content/plugins/google-site-kit/includes/Core/Tags/Blockable_Tag_Interface.php
new file mode 100644
index 000000000..6844510a5
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Tags/Blockable_Tag_Interface.php
@@ -0,0 +1,40 @@
+input = $input;
+ }
+
+ /**
+ * Determines whether the guarded tag can be activated or not.
+ *
+ * @since 1.24.0
+ *
+ * @return bool|WP_Error TRUE if guarded tag can be activated, otherwise FALSE or an error.
+ */
+ public function can_activate() {
+ return ! $this->input->filter( INPUT_GET, 'tagverify', FILTER_VALIDATE_BOOLEAN );
+ }
+
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Tags/Tag.php b/wp-content/plugins/google-site-kit/includes/Core/Tags/Tag.php
new file mode 100644
index 000000000..d5223cb12
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Tags/Tag.php
@@ -0,0 +1,89 @@
+tag_id = $tag_id;
+ }
+
+ /**
+ * Adds a new guard to the guards list.
+ *
+ * @since 1.24.0
+ *
+ * @param Guard_Interface $guard A guard instance to add to the guards list.
+ */
+ public function use_guard( Guard_Interface $guard ) {
+ $this->guards[] = $guard;
+ }
+
+ /**
+ * Determines whether the tag can be register or not.
+ *
+ * @since 1.24.0
+ *
+ * @return bool TRUE if the tag can be register, otherwise FALSE.
+ */
+ public function can_register() {
+ foreach ( $this->guards as $guard ) {
+ if ( $guard instanceof Guard_Interface ) {
+ $can_activate = $guard->can_activate();
+ if ( is_wp_error( $can_activate ) || ! $can_activate ) {
+ return false;
+ }
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * Registers tag hooks.
+ *
+ * @since 1.24.0
+ */
+ abstract public function register();
+
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Tags/Tag_Interface.php b/wp-content/plugins/google-site-kit/includes/Core/Tags/Tag_Interface.php
new file mode 100644
index 000000000..7974adc88
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Tags/Tag_Interface.php
@@ -0,0 +1,38 @@
+consent = $tracking_consent;
+ }
+
+ /**
+ * Registers functionality through WordPress hooks.
+ *
+ * @since 1.49.0
+ */
+ public function register() {
+ add_filter( 'googlesitekit_rest_routes', $this->get_method_proxy( 'get_rest_routes' ) );
+
+ add_filter(
+ 'googlesitekit_apifetch_preload_paths',
+ function ( $routes ) {
+ return array_merge(
+ $routes,
+ array(
+ '/' . REST_Routes::REST_ROOT . '/core/user/data/tracking',
+ )
+ );
+ }
+ );
+ }
+
+ /**
+ * Is tracking active for the current user?
+ *
+ * @since 1.49.0
+ *
+ * @return bool True if tracking enabled, and False if not.
+ */
+ public function is_active() {
+ return (bool) $this->consent->get();
+ }
+
+ /**
+ * Gets tracking routes.
+ *
+ * @since 1.49.0
+ *
+ * @param array $routes Array of routes.
+ * @return array Modified array of routes that contains tracking related routes.
+ */
+ private function get_rest_routes( $routes ) {
+ $can_access_tracking = function() {
+ return current_user_can( Permissions::VIEW_SPLASH ) || current_user_can( Permissions::VIEW_DASHBOARD );
+ };
+
+ $tracking_callback = function ( WP_REST_Request $request ) {
+ return new WP_REST_Response(
+ array(
+ 'enabled' => $this->is_active(),
+ )
+ );
+ };
+
+ return array_merge(
+ $routes,
+ array(
+ new REST_Route(
+ 'core/user/data/tracking',
+ array(
+ array(
+ 'methods' => WP_REST_Server::READABLE,
+ 'callback' => $tracking_callback,
+ 'permission_callback' => $can_access_tracking,
+ ),
+ array(
+ 'methods' => WP_REST_Server::CREATABLE,
+ 'callback' => function ( WP_REST_Request $request ) use ( $tracking_callback ) {
+ $data = $request->get_param( 'data' );
+ $enabled = ! empty( $data['enabled'] );
+
+ $this->consent->set( $enabled );
+
+ return $tracking_callback( $request );
+ },
+ 'permission_callback' => $can_access_tracking,
+ 'args' => array(
+ 'data' => array(
+ 'type' => 'object',
+ 'required' => true,
+ 'properties' => array(
+ 'enabled' => array(
+ 'type' => 'boolean',
+ 'required' => true,
+ ),
+ ),
+ ),
+ ),
+ ),
+ )
+ ),
+ )
+ );
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Tracking/Tracking.php b/wp-content/plugins/google-site-kit/includes/Core/Tracking/Tracking.php
new file mode 100644
index 000000000..0584ea5f3
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Tracking/Tracking.php
@@ -0,0 +1,118 @@
+screens = $screens ?: new Screens( $context );
+ $this->consent = new Tracking_Consent( $user_options );
+ $this->rest_controller = new REST_Tracking_Consent_Controller( $this->consent );
+ }
+
+ /**
+ * Registers functionality through WordPress hooks.
+ *
+ * @since 1.49.0
+ */
+ public function register() {
+ $this->consent->register();
+ $this->rest_controller->register();
+
+ add_filter( 'googlesitekit_inline_tracking_data', $this->get_method_proxy( 'inline_js_tracking_data' ) );
+ }
+
+ /**
+ * Is tracking active for the current user?
+ *
+ * @since 1.49.0
+ *
+ * @return bool True if tracking enabled, and False if not.
+ */
+ public function is_active() {
+ return (bool) $this->consent->get();
+ }
+
+ /**
+ * Adds / modifies tracking relevant data to pass to JS.
+ *
+ * @since 1.78.0
+ *
+ * @param array $data Inline JS data.
+ * @return array Filtered $data.
+ */
+ private function inline_js_tracking_data( $data ) {
+ global $hook_suffix;
+ $data['isSiteKitScreen'] = $this->screens->get_screen( $hook_suffix ) instanceof Screen;
+ $data['trackingEnabled'] = $this->is_active();
+ $data['trackingID'] = self::TRACKING_ID;
+
+ return $data;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Tracking/Tracking_Consent.php b/wp-content/plugins/google-site-kit/includes/Core/Tracking/Tracking_Consent.php
new file mode 100644
index 000000000..86d536ad7
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Tracking/Tracking_Consent.php
@@ -0,0 +1,64 @@
+user_options->get( static::OPTION );
+ }
+
+ /**
+ * Gets the expected value type.
+ *
+ * @since 1.49.0
+ *
+ * @return string The type name.
+ */
+ protected function get_type() {
+ return 'boolean';
+ }
+
+ /**
+ * Gets the default value.
+ *
+ * @since 1.49.0
+ *
+ * @return bool The default value.
+ */
+ protected function get_default() {
+ return false;
+ }
+
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/User_Surveys/REST_User_Surveys_Controller.php b/wp-content/plugins/google-site-kit/includes/Core/User_Surveys/REST_User_Surveys_Controller.php
new file mode 100644
index 000000000..0d5fc8d62
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/User_Surveys/REST_User_Surveys_Controller.php
@@ -0,0 +1,237 @@
+authentication = $authentication;
+ $this->timeouts = $timeouts;
+ }
+
+ /**
+ * Registers functionality through WordPress hooks.
+ *
+ * @since 1.35.0
+ */
+ public function register() {
+ add_filter(
+ 'googlesitekit_rest_routes',
+ function ( $routes ) {
+ return array_merge( $routes, $this->get_rest_routes() );
+ }
+ );
+
+ add_filter(
+ 'googlesitekit_apifetch_preload_paths',
+ function ( $paths ) {
+ return array_merge(
+ $paths,
+ array(
+ '/' . REST_Routes::REST_ROOT . '/core/user/data/survey-timeouts',
+ )
+ );
+ }
+ );
+ }
+
+
+ /**
+ * Gets REST route instances.
+ *
+ * @since 1.35.0
+ *
+ * @return REST_Route[] List of REST_Route objects.
+ */
+ protected function get_rest_routes() {
+ $can_authenticate = function () {
+ return $this->authentication->is_authenticated()
+ && $this->authentication->credentials()->using_proxy();
+ };
+
+ return array(
+ 'survey-trigger' => new REST_Route(
+ 'core/user/data/survey-trigger',
+ array(
+ 'methods' => WP_REST_Server::CREATABLE,
+ 'callback' => function ( WP_REST_Request $request ) {
+ $proxy = $this->authentication->get_google_proxy();
+ $creds = $this->authentication->credentials();
+ $access_token = (string) $this->authentication->get_oauth_client()->get_access_token();
+ $data = $request->get_param( 'data' );
+
+ $response = $proxy->send_survey_trigger( $creds, $access_token, $data['triggerID'] );
+ $response = rest_ensure_response( $response );
+
+ return $response;
+ },
+ 'permission_callback' => $can_authenticate,
+ 'args' => array(
+ 'data' => array(
+ 'type' => 'object',
+ 'required' => true,
+ 'properties' => array(
+ 'triggerID' => array(
+ 'type' => 'string',
+ 'required' => true,
+ ),
+ ),
+ ),
+ ),
+ )
+ ),
+ 'survey-event' => new REST_Route(
+ 'core/user/data/survey-event',
+ array(
+ 'methods' => WP_REST_Server::CREATABLE,
+ 'callback' => function ( WP_REST_Request $request ) {
+ $proxy = $this->authentication->get_google_proxy();
+ $creds = $this->authentication->credentials();
+ $access_token = (string) $this->authentication->get_oauth_client()->get_access_token();
+ $data = $request->get_param( 'data' );
+
+ $response = $proxy->send_survey_event( $creds, $access_token, $data['session'], $data['event'] );
+ $response = rest_ensure_response( $response );
+
+ return $response;
+ },
+ 'permission_callback' => $can_authenticate,
+ 'args' => array(
+ 'data' => array(
+ 'type' => 'object',
+ 'required' => true,
+ 'properties' => array(
+ 'session' => array(
+ 'type' => 'object',
+ 'required' => true,
+ 'properties' => array(
+ 'session_id' => array(
+ 'type' => 'string',
+ 'required' => true,
+ ),
+ 'session_token' => array(
+ 'type' => 'string',
+ 'required' => true,
+ ),
+ ),
+ ),
+ 'event' => array(
+ 'type' => 'object',
+ 'required' => true,
+ 'properties' => array(
+ 'survey_shown' => array(
+ 'type' => 'object',
+ ),
+ 'survey_closed' => array(
+ 'type' => 'object',
+ ),
+ 'question_answered' => array(
+ 'type' => 'object',
+ ),
+ 'completion_shown' => array(
+ 'type' => 'object',
+ ),
+ 'follow_up_link_clicked' => array(
+ 'type' => 'object',
+ ),
+ ),
+ ),
+ ),
+ ),
+ ),
+ )
+ ),
+ 'survey-timeout' => new REST_Route(
+ 'core/user/data/survey-timeout',
+ array(
+ 'methods' => WP_REST_Server::CREATABLE,
+ 'permission_callback' => $can_authenticate,
+ 'callback' => function ( WP_REST_Request $request ) {
+ $data = $request['data'];
+
+ if ( empty( $data['slug'] ) ) {
+ return new WP_Error(
+ 'missing_required_param',
+ /* translators: %s: Missing parameter name */
+ sprintf( __( 'Request parameter is empty: %s.', 'google-site-kit' ), 'slug' ),
+ array( 'status' => 400 )
+ );
+ }
+
+ $timeout = HOUR_IN_SECONDS;
+ if ( isset( $data['timeout'] ) && intval( $data['timeout'] ) > 0 ) {
+ $timeout = $data['timeout'];
+ }
+
+ $this->timeouts->add( $data['slug'], $timeout );
+
+ return new WP_REST_Response( $this->timeouts->get_survey_timeouts() );
+ },
+ 'args' => array(
+ 'data' => array(
+ 'type' => 'object',
+ 'required' => true,
+ ),
+ ),
+ )
+ ),
+ 'survey-timeouts' => new REST_Route(
+ 'core/user/data/survey-timeouts',
+ array(
+ 'methods' => WP_REST_Server::READABLE,
+ 'permission_callback' => $can_authenticate,
+ 'callback' => function ( WP_REST_Request $request ) {
+ return new WP_REST_Response( $this->timeouts->get_survey_timeouts() );
+ },
+ )
+ ),
+ );
+ }
+
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/User_Surveys/Survey_Timeouts.php b/wp-content/plugins/google-site-kit/includes/Core/User_Surveys/Survey_Timeouts.php
new file mode 100644
index 000000000..c34d9a6e1
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/User_Surveys/Survey_Timeouts.php
@@ -0,0 +1,122 @@
+get();
+ $surveys[ $survey ] = time() + $timeout;
+
+ $this->set( $surveys );
+ }
+
+ /**
+ * Gets the value of the setting.
+ *
+ * @since 1.73.0
+ *
+ * @return array Value set for the option, or default if not set.
+ */
+ public function get() {
+ $value = parent::get();
+ return is_array( $value ) ? $value : $this->get_default();
+ }
+
+ /**
+ * Gets the expected value type.
+ *
+ * @since 1.73.0
+ *
+ * @return string The type name.
+ */
+ protected function get_type() {
+ return 'array';
+ }
+
+ /**
+ * Gets the default value.
+ *
+ * @since 1.73.0
+ *
+ * @return array The default value.
+ */
+ protected function get_default() {
+ return array();
+ }
+
+ /**
+ * Gets the callback for sanitizing the setting's value before saving.
+ *
+ * @since 1.73.0
+ *
+ * @return callable Sanitize callback.
+ */
+ protected function get_sanitize_callback() {
+ return array( $this, 'filter_survey_timeouts' );
+ }
+
+ /**
+ * Gets survey timeouts.
+ *
+ * @since 1.73.0
+ *
+ * @return array Survey timeouts array.
+ */
+ public function get_survey_timeouts() {
+ $surveys = $this->get();
+ $surveys = $this->filter_survey_timeouts( $surveys );
+
+ return array_keys( $surveys );
+ }
+
+ /**
+ * Filters survey timeouts.
+ *
+ * @since 1.73.0
+ *
+ * @param array $items Survey timeouts list.
+ * @return array Filtered survey timeouts.
+ */
+ private function filter_survey_timeouts( $items ) {
+ $surveys = array();
+
+ if ( is_array( $items ) ) {
+ foreach ( $items as $item => $ttl ) {
+ if ( $ttl > time() ) {
+ $surveys[ $item ] = $ttl;
+ }
+ }
+ }
+
+ return $surveys;
+ }
+
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/User_Surveys/User_Surveys.php b/wp-content/plugins/google-site-kit/includes/Core/User_Surveys/User_Surveys.php
new file mode 100644
index 000000000..dfb5ee29e
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/User_Surveys/User_Surveys.php
@@ -0,0 +1,64 @@
+survey_timeouts = new Survey_Timeouts( $user_options );
+ $this->rest_controller = new REST_User_Surveys_Controller( $authentication, $this->survey_timeouts );
+ }
+
+ /**
+ * Registers functionality through WordPress hooks.
+ *
+ * @since 1.73.0
+ */
+ public function register() {
+ $this->survey_timeouts->register();
+ $this->rest_controller->register();
+ }
+
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Util/Activation_Flag.php b/wp-content/plugins/google-site-kit/includes/Core/Util/Activation_Flag.php
new file mode 100644
index 000000000..cb8cbcdb2
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Util/Activation_Flag.php
@@ -0,0 +1,143 @@
+context = $context;
+ $this->options = $options ?: new Options( $this->context );
+ }
+
+ /**
+ * Registers functionality through WordPress hooks.
+ *
+ * @since 1.10.0
+ */
+ public function register() {
+ add_action(
+ 'googlesitekit_activation',
+ function( $network_wide ) {
+ // Set activation flag.
+ $this->set_activation_flag( $network_wide );
+ }
+ );
+
+ add_filter(
+ 'googlesitekit_admin_data',
+ function ( $data ) {
+ return $this->inline_js_admin_data( $data );
+ }
+ );
+ }
+
+ /**
+ * Sets the flag that the plugin has just been activated.
+ *
+ * @since 1.10.0 Migrated from Activation class.
+ *
+ * @param bool $network_wide Whether the plugin is being activated network-wide.
+ */
+ public function set_activation_flag( $network_wide ) {
+ if ( $network_wide ) {
+ update_network_option( null, self::OPTION_SHOW_ACTIVATION_NOTICE, '1' );
+ return;
+ }
+
+ update_option( self::OPTION_SHOW_ACTIVATION_NOTICE, '1', false );
+ }
+
+ /**
+ * Gets the flag that the plugin has just been activated.
+ *
+ * @since 1.10.0 Migrated from Activation class.
+ *
+ * @param bool $network_wide Whether to check the flag network-wide.
+ * @return bool True if just activated, false otherwise.
+ */
+ public function get_activation_flag( $network_wide ) {
+ if ( $network_wide ) {
+ return (bool) get_network_option( null, self::OPTION_SHOW_ACTIVATION_NOTICE );
+ }
+
+ return (bool) get_option( self::OPTION_SHOW_ACTIVATION_NOTICE );
+ }
+
+ /**
+ * Deletes the flag that the plugin has just been activated.
+ *
+ * @since 1.10.0 Migrated from Activation class.
+ *
+ * @param bool $network_wide Whether the plugin is being activated network-wide.
+ */
+ public function delete_activation_flag( $network_wide ) {
+ if ( $network_wide ) {
+ delete_network_option( null, self::OPTION_SHOW_ACTIVATION_NOTICE );
+ return;
+ }
+
+ delete_option( self::OPTION_SHOW_ACTIVATION_NOTICE );
+ }
+
+
+ /**
+ * Modifies the admin data to pass to JS.
+ *
+ * @since 1.10.0 Migrated from Activation class.
+ *
+ * @param array $data Inline JS data.
+ * @return array Filtered $data.
+ */
+ private function inline_js_admin_data( $data ) {
+ $data['newSitePosts'] = $this->options->get( self::OPTION_NEW_SITE_POSTS );
+
+ return $data;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Util/Activation_Notice.php b/wp-content/plugins/google-site-kit/includes/Core/Util/Activation_Notice.php
new file mode 100644
index 000000000..ae275d964
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Util/Activation_Notice.php
@@ -0,0 +1,157 @@
+context = $context;
+ $this->activation_flag = $activation_flag;
+ $this->assets = $assets ?: new Assets( $this->context );
+ }
+
+ /**
+ * Registers functionality through WordPress hooks.
+ *
+ * @since 1.10.0
+ */
+ public function register() {
+ add_filter(
+ 'googlesitekit_admin_notices',
+ function( $notices ) {
+ $notices[] = $this->get_activation_notice();
+ return $notices;
+ }
+ );
+
+ add_action(
+ 'admin_enqueue_scripts',
+ function( $hook_suffix ) {
+ if ( 'plugins.php' !== $hook_suffix || ! $this->activation_flag->get_activation_flag( is_network_admin() ) ) {
+ return;
+ }
+
+ /**
+ * Prevent the default WordPress "Plugin Activated" notice from rendering.
+ *
+ * @link https://github.com/WordPress/WordPress/blob/e1996633228749cdc2d92bc04cc535d45367bfa4/wp-admin/plugins.php#L569-L570
+ */
+ unset( $_GET['activate'] ); // phpcs:ignore WordPress.Security.NonceVerification, WordPress.VIP.SuperGlobalInputUsage
+
+ $this->assets->enqueue_asset( 'googlesitekit-admin-css' );
+ $this->assets->enqueue_asset( 'googlesitekit-activation' );
+ }
+ );
+ }
+
+ /**
+ * Gets the admin notice indicating that the plugin has just been activated.
+ *
+ * @since 1.10.0
+ *
+ * @return Notice Admin notice instance.
+ */
+ private function get_activation_notice() {
+ return new Notice(
+ 'activated',
+ array(
+ 'content' => function() {
+ ob_start();
+ ?>
+
+ render_noscript_html(); ?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Notice::TYPE_SUCCESS,
+ 'active_callback' => function( $hook_suffix ) {
+ if ( 'plugins.php' !== $hook_suffix ) {
+ return false;
+ }
+ $network_wide = is_network_admin();
+ $flag = $this->activation_flag->get_activation_flag( $network_wide );
+ if ( $flag ) {
+ // Unset the flag so that the notice only shows once.
+ $this->activation_flag->delete_activation_flag( $network_wide );
+ }
+ return $flag;
+ },
+ 'dismissible' => true,
+ )
+ );
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Core/Util/BC_Functions.php b/wp-content/plugins/google-site-kit/includes/Core/Util/BC_Functions.php
new file mode 100644
index 000000000..a0cc4528c
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Core/Util/BC_Functions.php
@@ -0,0 +1,151 @@
+` tag attributes.
+ * @return string String made of sanitized `\n", self::wp_sanitize_script_attributes( $attributes ) );
+ }
+
+ /**
+ * A fallback for the wp_print_script_tag function introduced in the WordPress version 5.7.0.
+ *
+ * @since 1.41.0
+ *
+ * @param array $attributes Key-value pairs representing `\n", self::wp_sanitize_script_attributes( $attributes ), $javascript );
+ }
+
+ /**
+ * A fallback for the wp_get_inline_script_tag function introduced in the WordPress version 5.7.0.
+ *
+ * @since 1.41.0
+ *
+ * @param string $javascript Inline JavaScript code.
+ * @param array $attributes Optional. Key-value pairs representing `', wp_json_encode( $config ) );
+
+ printf( "\n\n", esc_html__( 'End Google AdSense AMP snippet added by Site Kit', 'google-site-kit' ) );
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Modules/AdSense/Auto_Ad_Guard.php b/wp-content/plugins/google-site-kit/includes/Modules/AdSense/Auto_Ad_Guard.php
new file mode 100644
index 000000000..08812eaac
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Modules/AdSense/Auto_Ad_Guard.php
@@ -0,0 +1,47 @@
+settings->get();
+ if ( ! isset( $settings['autoAdsDisabled'] ) ) {
+ return true;
+ }
+
+ if (
+ ( in_array( 'loggedinUsers', $settings['autoAdsDisabled'], true ) && is_user_logged_in() ) ||
+ ( in_array( 'contentCreators', $settings['autoAdsDisabled'], true ) && current_user_can( 'edit_posts' ) )
+ ) {
+ return false;
+ }
+
+ return true;
+ }
+
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Modules/AdSense/Settings.php b/wp-content/plugins/google-site-kit/includes/Modules/AdSense/Settings.php
new file mode 100644
index 000000000..687d3e8f1
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Modules/AdSense/Settings.php
@@ -0,0 +1,192 @@
+ array(
+ 'accountStatus' => 'approved',
+ 'siteStatus' => 'added',
+ ),
+ 'account-connected-nonmatching' => array(
+ 'accountStatus' => 'approved',
+ 'siteStatus' => 'added',
+ ),
+ 'account-connected-no-data' => array(
+ 'accountStatus' => 'approved',
+ 'siteStatus' => 'added',
+ ),
+ 'account-pending-review' => array(
+ 'accountStatus' => 'approved',
+ 'siteStatus' => 'none',
+ ),
+ 'account-required-action' => array(
+ 'accountStatus' => 'no-client',
+ ),
+ 'disapproved-account-afc' => array(
+ 'accountStatus' => 'no-client',
+ ),
+ 'ads-display-pending' => array(
+ 'accountStatus' => 'pending',
+ ),
+ 'disapproved-account' => array(
+ 'accountStatus' => 'disapproved',
+ ),
+ 'no-account' => array(
+ 'accountStatus' => 'none',
+ ),
+ 'no-account-tag-found' => array(
+ 'accountStatus' => 'none',
+ ),
+ );
+
+ /**
+ * Registers the setting in WordPress.
+ *
+ * @since 1.2.0
+ */
+ public function register() {
+ parent::register();
+
+ $this->register_legacy_keys_migration(
+ array(
+ 'account_id' => 'accountID',
+ 'accountId' => 'accountID',
+ 'account_status' => 'accountStatus',
+ 'adsenseTagEnabled' => 'useSnippet',
+ 'client_id' => 'clientID',
+ 'clientId' => 'clientID',
+ 'setup_complete' => 'setupComplete',
+ )
+ );
+
+ $this->register_owned_keys();
+
+ add_filter(
+ 'option_' . self::OPTION,
+ function ( $option ) {
+ /**
+ * Filters the AdSense account ID to use.
+ *
+ * @since 1.0.0
+ *
+ * @param string $account_id Empty by default, will fall back to the option value if not set.
+ */
+ $account_id = apply_filters( 'googlesitekit_adsense_account_id', '' );
+
+ if ( $account_id ) {
+ $option['accountID'] = $account_id;
+ }
+
+ // Migrate legacy account statuses (now split into account status and site status).
+ if ( ! empty( $option['accountStatus'] ) && isset( $this->legacy_account_statuses[ $option['accountStatus'] ] ) ) {
+ foreach ( $this->legacy_account_statuses[ $option['accountStatus'] ] as $key => $value ) {
+ $option[ $key ] = $value;
+ }
+ }
+
+ // Migration of legacy setting.
+ if ( ! empty( $option['setupComplete'] ) ) {
+ $option['accountSetupComplete'] = $option['setupComplete'];
+ $option['siteSetupComplete'] = $option['setupComplete'];
+ }
+ unset( $option['setupComplete'] );
+
+ return $option;
+ }
+ );
+ }
+
+ /**
+ * Returns keys for owned settings.
+ *
+ * @since 1.16.0
+ *
+ * @return array An array of keys for owned settings.
+ */
+ public function get_owned_keys() {
+ return array(
+ 'accountID',
+ 'clientID',
+ );
+ }
+
+ /**
+ * Gets the default value.
+ *
+ * @since 1.2.0
+ *
+ * @return array
+ */
+ protected function get_default() {
+ return array(
+ 'ownerID' => 0,
+ 'accountID' => '',
+ 'autoAdsDisabled' => array(),
+ 'clientID' => '',
+ 'accountStatus' => '',
+ 'siteStatus' => '',
+ 'accountSetupComplete' => false,
+ 'siteSetupComplete' => false,
+ 'useSnippet' => true,
+ 'webStoriesAdUnit' => '',
+ );
+ }
+
+ /**
+ * Gets the callback for sanitizing the setting's value before saving.
+ *
+ * @since 1.6.0
+ *
+ * @return callable|null
+ */
+ protected function get_sanitize_callback() {
+ return function( $option ) {
+ if ( is_array( $option ) ) {
+ if ( isset( $option['accountSetupComplete'] ) ) {
+ $option['accountSetupComplete'] = (bool) $option['accountSetupComplete'];
+ }
+ if ( isset( $option['siteStatusComplete'] ) ) {
+ $option['siteStatusComplete'] = (bool) $option['siteStatusComplete'];
+ }
+ if ( isset( $option['useSnippet'] ) ) {
+ $option['useSnippet'] = (bool) $option['useSnippet'];
+ }
+ if ( isset( $option['autoAdsDisabled'] ) ) {
+ $option['autoAdsDisabled'] = (array) $option['autoAdsDisabled'];
+ }
+ }
+ return $option;
+ };
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Modules/AdSense/Tag_Guard.php b/wp-content/plugins/google-site-kit/includes/Modules/AdSense/Tag_Guard.php
new file mode 100644
index 000000000..477e26bcb
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Modules/AdSense/Tag_Guard.php
@@ -0,0 +1,48 @@
+settings->get();
+
+ // For web stories, the tag must only be rendered if a story-specific ad unit is provided.
+ if ( is_singular( 'web-story' ) && empty( $settings['webStoriesAdUnit'] ) ) {
+ return false;
+ }
+
+ return ! empty( $settings['useSnippet'] ) && ! empty( $settings['clientID'] );
+ }
+
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Modules/AdSense/Web_Tag.php b/wp-content/plugins/google-site-kit/includes/Modules/AdSense/Web_Tag.php
new file mode 100644
index 000000000..1b6d0f9c7
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Modules/AdSense/Web_Tag.php
@@ -0,0 +1,99 @@
+get_method_proxy_once( 'render' ) );
+
+ add_filter(
+ 'wp_resource_hints',
+ $this->get_dns_prefetch_hints_callback( '//pagead2.googlesyndication.com' ),
+ 10,
+ 2
+ );
+
+ $this->do_init_tag_action();
+ }
+
+ /**
+ * Outputs the AdSense script tag.
+ *
+ * @since 1.24.0
+ */
+ protected function render() {
+ // If we haven't completed the account connection yet, we still insert the AdSense tag
+ // because it is required for account verification.
+
+ $adsense_script_src = sprintf(
+ 'https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=%s&host=%s',
+ esc_attr( $this->tag_id ), // Site owner's web property code.
+ 'ca-host-pub-2644536267352236' // SiteKit's web property code.
+ );
+
+ $adsense_script_attributes = array(
+ 'async' => true,
+ 'src' => $adsense_script_src,
+ 'crossorigin' => 'anonymous',
+ );
+
+ $adsense_attributes = $this->get_tag_blocked_on_consent_attribute_array();
+
+ $auto_ads_opt = array();
+
+ $auto_ads_opt_filtered = apply_filters( 'googlesitekit_auto_ads_opt', $auto_ads_opt, $this->tag_id );
+
+ if ( is_array( $auto_ads_opt_filtered ) && ! empty( $auto_ads_opt_filtered ) ) {
+ $strip_attributes = array(
+ 'google_ad_client' => '',
+ 'enable_page_level_ads' => '',
+ );
+
+ $auto_ads_opt_filtered = array_diff_key( $auto_ads_opt_filtered, $strip_attributes );
+
+ $auto_ads_opt_sanitized = array();
+
+ foreach ( $auto_ads_opt_filtered as $key => $value ) {
+ $new_key = 'data-';
+ $new_key .= str_replace( '_', '-', $key );
+
+ $auto_ads_opt_sanitized[ $new_key ] = $value;
+ }
+
+ $adsense_attributes = array_merge( $adsense_attributes, $auto_ads_opt_sanitized );
+ }
+
+ printf( "\n\n", esc_html__( 'Google AdSense snippet added by Site Kit', 'google-site-kit' ) );
+ BC_Functions::wp_print_script_tag( array_merge( $adsense_script_attributes, $adsense_attributes ) );
+ printf( "\n\n", esc_html__( 'End Google AdSense snippet added by Site Kit', 'google-site-kit' ) );
+ }
+
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Modules/Analytics.php b/wp-content/plugins/google-site-kit/includes/Modules/Analytics.php
new file mode 100644
index 000000000..19acbbd01
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Modules/Analytics.php
@@ -0,0 +1,1481 @@
+register_scopes_hook();
+
+ /**
+ * This filter only exists to be unhooked by the AdSense module if active.
+ *
+ * @see \Google\Site_Kit\Modules\Analytics\Settings::register
+ */
+ add_filter( 'googlesitekit_analytics_adsense_linked', '__return_false' );
+
+ add_action( 'admin_init', $this->get_method_proxy( 'handle_provisioning_callback' ) );
+ add_action( 'googlesitekit_authorize_user', array( $this, 'handle_token_response_data' ) );
+
+ // For non-AMP and AMP.
+ add_action( 'wp_head', $this->get_method_proxy( 'print_tracking_opt_out' ), 0 );
+ // For Web Stories plugin.
+ add_action( 'web_stories_story_head', $this->get_method_proxy( 'print_tracking_opt_out' ), 0 );
+ // Analytics tag placement logic.
+ add_action( 'template_redirect', $this->get_method_proxy( 'register_tag' ) );
+
+ add_filter(
+ 'googlesitekit_proxy_setup_mode',
+ function( $original_mode ) {
+ return ! $this->is_connected()
+ ? 'analytics-step'
+ : $original_mode;
+ }
+ );
+
+ ( new Advanced_Tracking( $this->context ) )->register();
+ }
+
+ /**
+ * Checks whether or not tracking snippet should be contextually disabled for this request.
+ *
+ * @since 1.1.0
+ *
+ * @return bool
+ */
+ protected function is_tracking_disabled() {
+ $settings = $this->get_settings()->get();
+ // This filter is documented in Tag_Manager::filter_analytics_allow_tracking_disabled.
+ if ( ! apply_filters( 'googlesitekit_allow_tracking_disabled', $settings['useSnippet'] ) ) {
+ return false;
+ }
+
+ $option = $this->get_settings()->get();
+
+ $disable_logged_in_users = in_array( 'loggedinUsers', $option['trackingDisabled'], true ) && is_user_logged_in();
+ $disable_content_creators = in_array( 'contentCreators', $option['trackingDisabled'], true ) && current_user_can( 'edit_posts' );
+
+ $disabled = $disable_logged_in_users || $disable_content_creators;
+
+ /**
+ * Filters whether or not the Analytics tracking snippet is output for the current request.
+ *
+ * @since 1.1.0
+ *
+ * @param $disabled bool Whether to disable tracking or not.
+ */
+ return (bool) apply_filters( 'googlesitekit_analytics_tracking_disabled', $disabled );
+ }
+
+ /**
+ * Gets required Google OAuth scopes for the module.
+ *
+ * @since 1.0.0
+ *
+ * @return array List of Google OAuth scopes.
+ */
+ public function get_scopes() {
+ return array(
+ self::READONLY_SCOPE,
+ );
+ }
+
+ /**
+ * Checks whether the module is connected.
+ *
+ * A module being connected means that all steps required as part of its activation are completed.
+ *
+ * @since 1.0.0
+ *
+ * @return bool True if module is connected, false otherwise.
+ */
+ public function is_connected() {
+ $required_keys = array(
+ 'accountID',
+ 'propertyID',
+ 'profileID',
+ 'internalWebPropertyID',
+ );
+
+ $options = $this->get_settings()->get();
+ foreach ( $required_keys as $required_key ) {
+ if ( empty( $options[ $required_key ] ) ) {
+ return false;
+ }
+ }
+
+ return parent::is_connected();
+ }
+
+ /**
+ * Cleans up when the module is deactivated.
+ *
+ * @since 1.0.0
+ */
+ public function on_deactivation() {
+ $this->get_settings()->delete();
+ $this->options->delete( 'googlesitekit_analytics_adsense_linked' );
+ }
+
+ /**
+ * Gets an array of debug field definitions.
+ *
+ * @since 1.5.0
+ *
+ * @return array
+ */
+ public function get_debug_fields() {
+ $settings = $this->get_settings()->get();
+
+ return array(
+ 'analytics_account_id' => array(
+ 'label' => __( 'Analytics account ID', 'google-site-kit' ),
+ 'value' => $settings['accountID'],
+ 'debug' => Debug_Data::redact_debug_value( $settings['accountID'] ),
+ ),
+ 'analytics_property_id' => array(
+ 'label' => __( 'Analytics property ID', 'google-site-kit' ),
+ 'value' => $settings['propertyID'],
+ 'debug' => Debug_Data::redact_debug_value( $settings['propertyID'], 7 ),
+ ),
+ 'analytics_profile_id' => array(
+ 'label' => __( 'Analytics view ID', 'google-site-kit' ),
+ 'value' => $settings['profileID'],
+ 'debug' => Debug_Data::redact_debug_value( $settings['profileID'] ),
+ ),
+ 'analytics_use_snippet' => array(
+ 'label' => __( 'Analytics snippet placed', 'google-site-kit' ),
+ 'value' => $settings['useSnippet'] ? __( 'Yes', 'google-site-kit' ) : __( 'No', 'google-site-kit' ),
+ 'debug' => $settings['useSnippet'] ? 'yes' : 'no',
+ ),
+ );
+ }
+
+ /**
+ * Handles the provisioning callback after the user completes the terms of service.
+ *
+ * @since 1.9.0
+ */
+ protected function handle_provisioning_callback() {
+ if ( defined( 'WP_CLI' ) && WP_CLI ) {
+ return;
+ }
+
+ if ( ! current_user_can( Permissions::MANAGE_OPTIONS ) ) {
+ return;
+ }
+
+ $input = $this->context->input();
+
+ if ( ! $input->filter( INPUT_GET, 'gatoscallback' ) ) {
+ return;
+ }
+
+ // The handler should check the received Account Ticket id parameter against the id stored in the provisioning step.
+ $account_ticket_id = $input->filter( INPUT_GET, 'accountTicketId', FILTER_SANITIZE_STRING );
+ $stored_account_ticket_id = get_transient( self::PROVISION_ACCOUNT_TICKET_ID . '::' . get_current_user_id() );
+ delete_transient( self::PROVISION_ACCOUNT_TICKET_ID . '::' . get_current_user_id() );
+
+ if ( $stored_account_ticket_id !== $account_ticket_id ) {
+ wp_safe_redirect(
+ $this->context->admin_url( 'module-analytics', array( 'error_code' => 'account_ticket_id_mismatch' ) )
+ );
+ exit;
+ }
+
+ // Check for a returned error.
+ $error = $input->filter( INPUT_GET, 'error', FILTER_SANITIZE_STRING );
+ if ( ! empty( $error ) ) {
+ wp_safe_redirect(
+ $this->context->admin_url( 'module-analytics', array( 'error_code' => $error ) )
+ );
+ exit;
+ }
+
+ $account_id = $input->filter( INPUT_GET, 'accountId', FILTER_SANITIZE_STRING );
+ $web_property_id = $input->filter( INPUT_GET, 'webPropertyId', FILTER_SANITIZE_STRING );
+ $profile_id = $input->filter( INPUT_GET, 'profileId', FILTER_SANITIZE_STRING );
+
+ if ( empty( $account_id ) || empty( $web_property_id ) || empty( $profile_id ) ) {
+ wp_safe_redirect(
+ $this->context->admin_url( 'module-analytics', array( 'error_code' => 'callback_missing_parameter' ) )
+ );
+ exit;
+ }
+
+ // Retrieve the internal web property id.
+ try {
+ $web_property = $this->get_service( 'analytics' )->management_webproperties->get( $account_id, $web_property_id );
+ } catch ( Exception $e ) {
+ wp_safe_redirect(
+ $this->context->admin_url( 'module-analytics', array( 'error_code' => 'property_not_found' ) )
+ );
+ exit;
+ }
+
+ $internal_web_property_id = $web_property->getInternalWebPropertyId();
+
+ $this->get_settings()->merge(
+ array(
+ 'accountID' => $account_id,
+ 'propertyID' => $web_property_id,
+ 'profileID' => $profile_id,
+ 'internalWebPropertyID' => $internal_web_property_id,
+ )
+ );
+
+ do_action(
+ 'googlesitekit_analytics_handle_provisioning_callback',
+ $account_id,
+ $web_property_id,
+ $internal_web_property_id,
+ $profile_id
+ );
+
+ wp_safe_redirect(
+ $this->context->admin_url(
+ 'dashboard',
+ array(
+ 'notification' => 'authentication_success',
+ 'slug' => 'analytics',
+ )
+ )
+ );
+ exit;
+ }
+
+ /**
+ * Gets map of datapoint to definition data for each.
+ *
+ * @since 1.9.0
+ *
+ * @return array Map of datapoints to their definitions.
+ */
+ protected function get_datapoint_definitions() {
+ return array(
+ 'GET:accounts-properties-profiles' => array( 'service' => 'analytics' ),
+ 'POST:create-account-ticket' => array(
+ 'service' => 'analyticsprovisioning',
+ 'scopes' => array( self::PROVISION_SCOPE ),
+ 'request_scopes_message' => __( 'You’ll need to grant Site Kit permission to create a new Analytics account on your behalf.', 'google-site-kit' ),
+ ),
+ 'POST:create-profile' => array(
+ 'service' => 'analytics',
+ 'scopes' => array( self::EDIT_SCOPE ),
+ 'request_scopes_message' => __( 'You’ll need to grant Site Kit permission to create a new Analytics view on your behalf.', 'google-site-kit' ),
+ ),
+ 'POST:create-property' => array(
+ 'service' => 'analytics',
+ 'scopes' => array( self::EDIT_SCOPE ),
+ 'request_scopes_message' => __( 'You’ll need to grant Site Kit permission to create a new Analytics property on your behalf.', 'google-site-kit' ),
+ ),
+ 'GET:goals' => array(
+ 'service' => 'analytics',
+ 'shareable' => Feature_Flags::enabled( 'dashboardSharing' ),
+ ),
+ 'GET:profiles' => array( 'service' => 'analytics' ),
+ 'GET:properties-profiles' => array( 'service' => 'analytics' ),
+ 'GET:report' => array(
+ 'service' => 'analyticsreporting',
+ 'shareable' => Feature_Flags::enabled( 'dashboardSharing' ),
+ ),
+ );
+ }
+
+ /**
+ * Creates a request object for the given datapoint.
+ *
+ * @since 1.0.0
+ *
+ * @param Data_Request $data Data request object.
+ * @return RequestInterface|callable|WP_Error Request object or callable on success, or WP_Error on failure.
+ *
+ * @throws Invalid_Datapoint_Exception Thrown if the datapoint does not exist.
+ */
+ protected function create_data_request( Data_Request $data ) {
+ switch ( "{$data->method}:{$data->datapoint}" ) {
+ case 'GET:accounts-properties-profiles':
+ return function () use ( $data ) {
+ $restore_defer = $this->with_client_defer( false );
+
+ try {
+ return $this->get_service( 'analytics' )->management_accounts->listManagementAccounts();
+ } catch ( Google_Service_Exception $exception ) {
+ // The exception message is a JSON object of all errors, so we'll convert it to our WP Error first.
+ $wp_error = $this->exception_to_error( $exception, $data->datapoint );
+ // Unfortunately there isn't a better way to identify this without checking the message.
+ if ( 'User does not have any Google Analytics account.' === $wp_error->get_error_message() ) {
+ return new Google_Service_Analytics_Accounts();
+ }
+ // If any other exception was caught, re-throw it.
+ throw $exception;
+ } finally {
+ $restore_defer(); // Will be called before returning in all cases.
+ }
+ };
+ case 'POST:create-account-ticket':
+ if ( ! isset( $data['accountName'] ) ) {
+ /* translators: %s: Missing parameter name */
+ return new WP_Error( 'missing_required_param', sprintf( __( 'Request parameter is empty: %s.', 'google-site-kit' ), 'accountName' ), array( 'status' => 400 ) );
+ }
+ if ( ! isset( $data['propertyName'] ) ) {
+ /* translators: %s: Missing parameter name */
+ return new WP_Error( 'missing_required_param', sprintf( __( 'Request parameter is empty: %s.', 'google-site-kit' ), 'propertyName' ), array( 'status' => 400 ) );
+ }
+ if ( ! isset( $data['profileName'] ) ) {
+ /* translators: %s: Missing parameter name */
+ return new WP_Error( 'missing_required_param', sprintf( __( 'Request parameter is empty: %s.', 'google-site-kit' ), 'profileName' ), array( 'status' => 400 ) );
+ }
+ if ( ! isset( $data['timezone'] ) ) {
+ /* translators: %s: Missing parameter name */
+ return new WP_Error( 'missing_required_param', sprintf( __( 'Request parameter is empty: %s.', 'google-site-kit' ), 'timezone' ), array( 'status' => 400 ) );
+ }
+
+ if ( ! $this->authentication->credentials()->using_proxy() ) {
+ return new WP_Error( 'requires_service', __( 'Analytics provisioning requires connecting via the Site Kit Service.', 'google-site-kit' ), array( 'status' => 400 ) );
+ }
+
+ $account = new Google_Service_Analytics_Account();
+ $account->setName( $data['accountName'] );
+
+ $property = new Google_Service_Analytics_Webproperty();
+ $property->setName( $data['propertyName'] );
+ $property->setWebsiteUrl( $this->context->get_reference_site_url() );
+
+ $profile = new Google_Service_Analytics_Profile();
+ $profile->setName( $data['profileName'] );
+ $profile->setTimezone( $data['timezone'] );
+
+ $account_ticket = new Proxy_AccountTicket();
+ $account_ticket->setAccount( $account );
+ $account_ticket->setWebproperty( $property );
+ $account_ticket->setProfile( $profile );
+ $account_ticket->setRedirectUri( $this->get_provisioning_redirect_uri() );
+
+ // Add site id and secret.
+ $creds = $this->authentication->credentials()->get();
+ $account_ticket->setSiteId( $creds['oauth2_client_id'] );
+ $account_ticket->setSiteSecret( $creds['oauth2_client_secret'] );
+
+ return $this->get_service( 'analyticsprovisioning' )
+ ->provisioning->createAccountTicket( $account_ticket );
+ case 'GET:goals':
+ $connection = $this->get_settings()->get();
+ if (
+ empty( $connection['accountID'] ) ||
+ empty( $connection['internalWebPropertyID'] ) ||
+ empty( $connection['profileID'] )
+ ) {
+ // This is needed to return and emulate the same error format from Analytics API.
+ return function() {
+ return array(
+ 'error' => array(
+ 'code' => 400,
+ 'message' => __( 'Analytics module needs to be configured.', 'google-site-kit' ),
+ 'status' => 'INVALID_ARGUMENT',
+ ),
+ );
+ };
+ }
+ $service = $this->get_service( 'analytics' );
+ return $service->management_goals->listManagementGoals( $connection['accountID'], $connection['propertyID'], $connection['profileID'] );
+ case 'GET:profiles':
+ if ( ! isset( $data['accountID'] ) ) {
+ return new WP_Error(
+ 'missing_required_param',
+ /* translators: %s: Missing parameter name */
+ sprintf( __( 'Request parameter is empty: %s.', 'google-site-kit' ), 'accountID' ),
+ array( 'status' => 400 )
+ );
+ }
+ if ( ! isset( $data['propertyID'] ) ) {
+ return new WP_Error(
+ 'missing_required_param',
+ /* translators: %s: Missing parameter name */
+ sprintf( __( 'Request parameter is empty: %s.', 'google-site-kit' ), 'propertyID' ),
+ array( 'status' => 400 )
+ );
+ }
+
+ return $this->get_service( 'analytics' )->management_profiles->listManagementProfiles( $data['accountID'], $data['propertyID'] );
+ case 'GET:properties-profiles':
+ if ( ! isset( $data['accountID'] ) ) {
+ return new WP_Error(
+ 'missing_required_param',
+ /* translators: %s: Missing parameter name */
+ sprintf( __( 'Request parameter is empty: %s.', 'google-site-kit' ), 'accountID' ),
+ array( 'status' => 400 )
+ );
+ }
+
+ return $this->get_service( 'analytics' )->management_webproperties->listManagementWebproperties( $data['accountID'] );
+ case 'GET:report':
+ $request_args = array();
+
+ if ( empty( $data['metrics'] ) ) {
+ /* translators: %s: Missing parameter name */
+ return new WP_Error( 'missing_required_param', sprintf( __( 'Request parameter is empty: %s.', 'google-site-kit' ), 'metrics' ), array( 'status' => 400 ) );
+ }
+
+ if ( ! empty( $data['url'] ) ) {
+ $request_args['page'] = $data['url'];
+ }
+
+ if ( ! empty( $data['limit'] ) ) {
+ $request_args['row_limit'] = $data['limit'];
+ }
+
+ $dimensions = $data['dimensions'];
+ if ( ! empty( $dimensions ) && ( is_string( $dimensions ) || is_array( $dimensions ) ) ) {
+ if ( is_string( $dimensions ) ) {
+ $dimensions = explode( ',', $dimensions );
+ } elseif ( is_array( $dimensions ) && ! wp_is_numeric_array( $dimensions ) ) { // If single object is passed.
+ $dimensions = array( $dimensions );
+ }
+
+ $dimensions = array_filter(
+ array_map(
+ function ( $dimension_def ) {
+ $dimension = new Google_Service_AnalyticsReporting_Dimension();
+
+ if ( is_string( $dimension_def ) ) {
+ $dimension->setName( $dimension_def );
+ } elseif ( is_array( $dimension_def ) && ! empty( $dimension_def['name'] ) ) {
+ $dimension->setName( $dimension_def['name'] );
+ } else {
+ return null;
+ }
+
+ return $dimension;
+ },
+ array_filter( $dimensions )
+ )
+ );
+
+ if ( ! empty( $dimensions ) ) {
+ try {
+ $this->validate_report_dimensions( $dimensions );
+ } catch ( Invalid_Report_Dimensions_Exception $exception ) {
+ return new WP_Error(
+ 'invalid_analytics_report_dimensions',
+ $exception->getMessage()
+ );
+ }
+
+ $request_args['dimensions'] = $dimensions;
+ }
+ }
+
+ $dimension_filters = $data['dimensionFilters'];
+ $dimension_filter_instances = array();
+ if ( ! empty( $dimension_filters ) && is_array( $dimension_filters ) ) {
+ foreach ( $dimension_filters as $dimension_name => $dimension_value ) {
+ $dimension_filter = new Google_Service_AnalyticsReporting_DimensionFilter();
+ $dimension_filter->setDimensionName( $dimension_name );
+ if ( is_array( $dimension_value ) ) {
+ $dimension_filter->setOperator( 'IN_LIST' );
+ $dimension_filter->setExpressions( $dimension_value );
+ } else {
+ $dimension_filter->setOperator( 'EXACT' );
+ $dimension_filter->setExpressions( array( $dimension_value ) );
+ }
+ $dimension_filter_instances[] = $dimension_filter;
+ }
+
+ if ( ! empty( $dimension_filter_instances ) ) {
+ $request_args['dimension_filters'] = $dimension_filter_instances;
+ }
+ }
+
+ $request = $this->create_analytics_site_data_request( $request_args );
+
+ if ( is_wp_error( $request ) ) {
+ return $request;
+ }
+
+ $date_ranges = array();
+ $start_date = $data['startDate'];
+ $end_date = $data['endDate'];
+ if ( strtotime( $start_date ) && strtotime( $end_date ) ) {
+ $compare_start_date = $data['compareStartDate'];
+ $compare_end_date = $data['compareEndDate'];
+ $date_ranges[] = array( $start_date, $end_date );
+
+ // When using multiple date ranges, it changes the structure of the response,
+ // where each date range becomes an item in a list.
+ if ( strtotime( $compare_start_date ) && strtotime( $compare_end_date ) ) {
+ $date_ranges[] = array( $compare_start_date, $compare_end_date );
+ }
+ } else {
+ $date_range = $data['dateRange'] ?: 'last-28-days';
+ $date_ranges[] = $this->parse_date_range( $date_range, $data['compareDateRanges'] ? 2 : 1 );
+
+ // When using multiple date ranges, it changes the structure of the response,
+ // where each date range becomes an item in a list.
+ if ( ! empty( $data['multiDateRange'] ) ) {
+ $date_ranges[] = $this->parse_date_range( $date_range, 1, 1, true );
+ }
+ }
+
+ $date_ranges = array_map(
+ function ( $date_range ) {
+ list ( $start_date, $end_date ) = $date_range;
+ $date_range = new Google_Service_AnalyticsReporting_DateRange();
+ $date_range->setStartDate( $start_date );
+ $date_range->setEndDate( $end_date );
+
+ return $date_range;
+ },
+ $date_ranges
+ );
+ $request->setDateRanges( $date_ranges );
+
+ $metrics = $data['metrics'];
+ if ( is_string( $metrics ) || is_array( $metrics ) ) {
+ if ( is_string( $metrics ) ) {
+ $metrics = explode( ',', $data['metrics'] );
+ } elseif ( is_array( $metrics ) && ! wp_is_numeric_array( $metrics ) ) { // If single object is passed.
+ $metrics = array( $metrics );
+ }
+
+ $metrics = array_filter(
+ array_map(
+ function ( $metric_def ) {
+ $metric = new Google_Service_AnalyticsReporting_Metric();
+
+ if ( is_string( $metric_def ) ) {
+ $metric->setAlias( $metric_def );
+ $metric->setExpression( $metric_def );
+ } elseif ( is_array( $metric_def ) && ! empty( $metric_def['expression'] ) ) {
+ $metric->setExpression( $metric_def['expression'] );
+ $metric->setAlias( ! empty( $metric_def['alias'] ) ? $metric_def['alias'] : $metric_def['expression'] );
+ } else {
+ return null;
+ }
+
+ return $metric;
+ },
+ array_filter( $metrics )
+ )
+ );
+
+ if ( ! empty( $metrics ) ) {
+ try {
+ $this->validate_report_metrics( $metrics );
+ } catch ( Invalid_Report_Metrics_Exception $exception ) {
+ return new WP_Error(
+ 'invalid_analytics_report_metrics',
+ $exception->getMessage()
+ );
+ }
+
+ $request->setMetrics( $metrics );
+ }
+ }
+
+ // Order by.
+ $orderby = $this->parse_reporting_orderby( $data['orderby'] );
+ if ( ! empty( $orderby ) ) {
+ $request->setOrderBys( $orderby );
+ }
+
+ // Batch reports requests.
+ $body = new Google_Service_AnalyticsReporting_GetReportsRequest();
+ $body->setReportRequests( array( $request ) );
+
+ return $this->get_analyticsreporting_service()->reports->batchGet( $body );
+ case 'POST:create-profile':
+ if ( ! isset( $data['accountID'] ) ) {
+ return new WP_Error(
+ 'missing_required_param',
+ /* translators: %s: Missing parameter name */
+ sprintf( __( 'Request parameter is empty: %s.', 'google-site-kit' ), 'accountID' ),
+ array( 'status' => 400 )
+ );
+ }
+ if ( ! isset( $data['propertyID'] ) ) {
+ return new WP_Error(
+ 'missing_required_param',
+ /* translators: %s: Missing parameter name */
+ sprintf( __( 'Request parameter is empty: %s.', 'google-site-kit' ), 'propertyID' ),
+ array( 'status' => 400 )
+ );
+ }
+ $profile_name = trim( $data['profileName'] );
+ if ( empty( $profile_name ) ) {
+ $profile_name = _x( 'All Web Site Data', 'default Analytics view name', 'google-site-kit' );
+ }
+ $profile = new Google_Service_Analytics_Profile();
+ $profile->setName( $profile_name );
+ return $profile = $this->get_service( 'analytics' )->management_profiles->insert( $data['accountID'], $data['propertyID'], $profile );
+ case 'POST:create-property':
+ if ( ! isset( $data['accountID'] ) ) {
+ return new WP_Error(
+ 'missing_required_param',
+ /* translators: %s: Missing parameter name */
+ sprintf( __( 'Request parameter is empty: %s.', 'google-site-kit' ), 'accountID' ),
+ array( 'status' => 400 )
+ );
+ }
+ $property = new Google_Service_Analytics_Webproperty();
+ $property->setName( URL::parse( $this->context->get_reference_site_url(), PHP_URL_HOST ) );
+ $property->setWebsiteUrl( $this->context->get_reference_site_url() );
+ return $this->get_service( 'analytics' )->management_webproperties->insert( $data['accountID'], $property );
+ }
+
+ return parent::create_data_request( $data );
+ }
+
+ /**
+ * Parses the orderby value of the data request into an array of reporting orderby object instances.
+ *
+ * @since 1.13.1
+ *
+ * @param array|null $orderby Data request orderby value.
+ * @return Google_Service_AnalyticsReporting_OrderBy[] An array of reporting orderby objects.
+ */
+ protected function parse_reporting_orderby( $orderby ) {
+ if ( empty( $orderby ) || ! is_array( $orderby ) ) {
+ return array();
+ }
+
+ $results = array_map(
+ function ( $order_def ) {
+ $order_def = array_merge(
+ array(
+ 'fieldName' => '',
+ 'sortOrder' => '',
+ ),
+ (array) $order_def
+ );
+
+ if ( empty( $order_def['fieldName'] ) || empty( $order_def['sortOrder'] ) ) {
+ return null;
+ }
+
+ $order_by = new Google_Service_AnalyticsReporting_OrderBy();
+ $order_by->setFieldName( $order_def['fieldName'] );
+ $order_by->setSortOrder( $order_def['sortOrder'] );
+
+ return $order_by;
+ },
+ // When just object is passed we need to convert it to an array of objects.
+ wp_is_numeric_array( $orderby ) ? $orderby : array( $orderby )
+ );
+
+ $results = array_filter( $results );
+ $results = array_values( $results );
+
+ return $results;
+ }
+
+ /**
+ * Parses a response for the given datapoint.
+ *
+ * @since 1.0.0
+ *
+ * @param Data_Request $data Data request object.
+ * @param mixed $response Request response.
+ *
+ * @return mixed Parsed response data on success, or WP_Error on failure.
+ */
+ protected function parse_data_response( Data_Request $data, $response ) {
+ switch ( "{$data->method}:{$data->datapoint}" ) {
+ case 'GET:accounts-properties-profiles':
+ /* @var Google_Service_Analytics_Accounts $response listManagementAccounts response. */
+ $accounts = (array) $response->getItems();
+ $account_ids = array_map(
+ function ( Google_Service_Analytics_Account $account ) {
+ return $account->getId();
+ },
+ $accounts
+ );
+ $properties_profiles = array(
+ 'properties' => array(),
+ 'profiles' => array(),
+ );
+
+ if ( empty( $accounts ) ) {
+ return array_merge( compact( 'accounts' ), $properties_profiles );
+ }
+
+ // Get the account ID from the saved settings.
+ $option = $this->get_settings()->get();
+ $account_id = $option['accountID'];
+ // If the saved account ID is in the list of accounts the user has access to, it's a match.
+ if ( in_array( $account_id, $account_ids, true ) ) {
+ $properties_profiles = $this->get_data( 'properties-profiles', array( 'accountID' => $account_id ) );
+ } else {
+ $account_summaries = $this->get_service( 'analytics' )->management_accountSummaries->listManagementAccountSummaries();
+ $current_url = $this->context->get_reference_site_url();
+ $current_urls = $this->permute_site_url( $current_url );
+
+ foreach ( $account_summaries as $account_summary ) {
+ $found_property = $this->find_property( $account_summary->getWebProperties(), '', $current_urls );
+ if ( ! is_null( $found_property ) ) {
+ $properties_profiles = $this->get_data( 'properties-profiles', array( 'accountID' => $account_summary->getId() ) );
+ break;
+ }
+ }
+ }
+
+ if ( is_wp_error( $properties_profiles ) || ! $properties_profiles ) {
+ $properties_profiles = array(
+ 'properties' => array(),
+ 'profiles' => array(),
+ );
+ }
+
+ return array_merge( compact( 'accounts' ), $properties_profiles );
+ case 'GET:goals':
+ if ( is_array( $response ) ) {
+ return $response;
+ }
+ // TODO: Parse this response to a regular array.
+ break;
+ case 'GET:profiles':
+ // TODO: Parse this response to a regular array.
+ $response = $response->getItems();
+
+ return $response;
+ case 'GET:properties-profiles':
+ /* @var Google_Service_Analytics_Webproperties $response listManagementWebproperties response. */
+ $properties = (array) $response->getItems();
+ $found_property = null;
+ $response = array(
+ 'properties' => $properties,
+ 'profiles' => array(),
+ );
+
+ if ( 0 === count( $properties ) ) {
+ return $response;
+ }
+
+ $current_url = $this->context->get_reference_site_url();
+ $current_urls = $this->permute_site_url( $current_url );
+ $found_property = $this->find_property( $properties, '', $current_urls );
+
+ if ( ! is_null( $found_property ) ) {
+ $response['matchedProperty'] = $found_property;
+ } else {
+ $found_property = new Google_Service_Analytics_Webproperty();
+ }
+
+ // If no match is found, fetch profiles for the first property if available.
+ if ( ! $found_property->getAccountId() && $properties ) {
+ $found_property = array_shift( $properties );
+ } elseif ( ! $found_property->getAccountId() ) {
+ // If no found property, skip the call to 'profiles' as it would be empty/fail.
+ return $response;
+ }
+
+ $profiles = $this->get_data(
+ 'profiles',
+ array(
+ 'accountID' => $found_property->getAccountId(),
+ 'propertyID' => $found_property->getId(),
+ )
+ );
+
+ if ( is_wp_error( $profiles ) ) {
+ return $profiles;
+ }
+
+ $response['profiles'] = $profiles;
+
+ return $response;
+ case 'GET:report':
+ // If AdSense metric successfully requested, set adsenseLinked to true.
+ if ( $this->is_adsense_request( $data ) ) {
+ $this->get_settings()->merge( array( 'adsenseLinked' => true ) );
+ }
+
+ return $response->getReports();
+ case 'POST:create-account-ticket':
+ // Cache the create ticket id long enough to verify it upon completion of the terms of service.
+ set_transient(
+ self::PROVISION_ACCOUNT_TICKET_ID . '::' . get_current_user_id(),
+ $response->getId(),
+ 15 * MINUTE_IN_SECONDS
+ );
+ return $response;
+ }
+
+ return parent::parse_data_response( $data, $response );
+ }
+
+ /**
+ * Creates a new Analytics site request for the current site and given arguments.
+ *
+ * @since 1.0.0
+ * @since 1.24.0 Added $dimension_filters
+ *
+ * @param array $args {
+ * Optional. Additional arguments.
+ *
+ * @type array $dimensions List of request dimensions. Default empty array.
+ * @type Google_Service_AnalyticsReporting_DimensionFilter[] $dimension_filters List of dimension filter instances for the specified request dimensions. Default empty array.
+ * @type string $start_date Start date in 'Y-m-d' format. Default empty string.
+ * @type string $end_date End date in 'Y-m-d' format. Default empty string.
+ * @type string $page Specific page URL to filter by. Default empty string.
+ * @type int $row_limit Limit of rows to return. Default empty string.
+ * }
+ * @return Google_Service_AnalyticsReporting_ReportRequest|WP_Error Analytics site request instance.
+ */
+ protected function create_analytics_site_data_request( array $args = array() ) {
+ $args = wp_parse_args(
+ $args,
+ array(
+ 'dimensions' => array(),
+ 'dimension_filters' => array(),
+ 'start_date' => '',
+ 'end_date' => '',
+ 'page' => '',
+ 'row_limit' => '',
+ )
+ );
+
+ $option = $this->get_settings()->get();
+ $profile_id = $option['profileID'];
+
+ $request = new Google_Service_AnalyticsReporting_ReportRequest();
+ $request->setIncludeEmptyRows( true );
+ $request->setViewId( $profile_id );
+
+ if ( ! empty( $args['dimensions'] ) ) {
+ $request->setDimensions( (array) $args['dimensions'] );
+ }
+
+ if ( ! empty( $args['start_date'] ) && ! empty( $args['end_date'] ) ) {
+ $date_range = new Google_Service_AnalyticsReporting_DateRange();
+ $date_range->setStartDate( $args['start_date'] );
+ $date_range->setEndDate( $args['end_date'] );
+ $request->setDateRanges( array( $date_range ) );
+ }
+
+ $dimension_filter_clauses = array();
+
+ $hostnames = array_values(
+ array_unique(
+ array_map(
+ function ( $site_url ) {
+ return URL::parse( $site_url, PHP_URL_HOST );
+ },
+ $this->permute_site_url( $this->context->get_reference_site_url() )
+ )
+ )
+ );
+
+ $dimension_filter = new Google_Service_AnalyticsReporting_DimensionFilter();
+ $dimension_filter->setDimensionName( 'ga:hostname' );
+ $dimension_filter->setOperator( 'IN_LIST' );
+ $dimension_filter->setExpressions( $hostnames );
+ $dimension_filter_clause = new Google_Service_AnalyticsReporting_DimensionFilterClause();
+ $dimension_filter_clause->setFilters( array( $dimension_filter ) );
+ $dimension_filter_clauses[] = $dimension_filter_clause;
+
+ if ( ! empty( $args['dimension_filters'] ) ) {
+ $dimension_filters = $args['dimension_filters'];
+ $dimension_filter_clause = new Google_Service_AnalyticsReporting_DimensionFilterClause();
+ $dimension_filter_clause->setFilters( $dimension_filters );
+ $dimension_filter_clause->setOperator( 'AND' );
+ $dimension_filter_clauses[] = $dimension_filter_clause;
+ }
+
+ if ( ! empty( $args['page'] ) ) {
+ $dimension_filter = new Google_Service_AnalyticsReporting_DimensionFilter();
+ $dimension_filter->setDimensionName( 'ga:pagePath' );
+ $dimension_filter->setOperator( 'EXACT' );
+ $args['page'] = str_replace( trim( $this->context->get_reference_site_url(), '/' ), '', esc_url_raw( $args['page'] ) );
+ $dimension_filter->setExpressions( array( rawurldecode( $args['page'] ) ) );
+ $dimension_filter_clause = new Google_Service_AnalyticsReporting_DimensionFilterClause();
+ $dimension_filter_clause->setFilters( array( $dimension_filter ) );
+ $dimension_filter_clauses[] = $dimension_filter_clause;
+ }
+
+ $request->setDimensionFilterClauses( $dimension_filter_clauses );
+
+ if ( ! empty( $args['row_limit'] ) ) {
+ $request->setPageSize( $args['row_limit'] );
+ }
+
+ return $request;
+ }
+
+ /**
+ * Sets up information about the module.
+ *
+ * @since 1.0.0
+ *
+ * @return array Associative array of module info.
+ */
+ protected function setup_info() {
+ return array(
+ 'slug' => 'analytics',
+ 'name' => _x( 'Analytics', 'Service name', 'google-site-kit' ),
+ 'description' => __( 'Get a deeper understanding of your customers. Google Analytics gives you the free tools you need to analyze data for your business in one place.', 'google-site-kit' ),
+ 'order' => 3,
+ 'homepage' => __( 'https://analytics.google.com/analytics/web', 'google-site-kit' ),
+ );
+ }
+
+ /**
+ * Gets the configured Analytics Reporting service object instance.
+ *
+ * @return Google_Service_AnalyticsReporting The Analytics Reporting API service.
+ */
+ private function get_analyticsreporting_service() {
+ return $this->get_service( 'analyticsreporting' );
+ }
+
+ /**
+ * Sets up the Google services the module should use.
+ *
+ * This method is invoked once by {@see Module::get_service()} to lazily set up the services when one is requested
+ * for the first time.
+ *
+ * @since 1.0.0
+ * @since 1.2.0 Now requires Google_Site_Kit_Client instance.
+ *
+ * @param Google_Site_Kit_Client $client Google client instance.
+ * @return array Google services as $identifier => $service_instance pairs. Every $service_instance must be an
+ * instance of Google_Service.
+ */
+ protected function setup_services( Google_Site_Kit_Client $client ) {
+ $google_proxy = new Google_Proxy( $this->context );
+ return array(
+ 'analytics' => new Google_Service_Analytics( $client ),
+ 'analyticsreporting' => new Google_Service_AnalyticsReporting( $client ),
+ 'analyticsprovisioning' => new Google_Service_AnalyticsProvisioning( $client, $google_proxy->url() ),
+ );
+ }
+
+ /**
+ * Gets the provisioning redirect URI that listens for the Terms of Service redirect.
+ *
+ * @since 1.9.0
+ *
+ * @return string Provisioning redirect URI.
+ */
+ private function get_provisioning_redirect_uri() {
+ $google_proxy = new Google_Proxy( $this->context );
+ return $google_proxy->get_site_fields()['analytics_redirect_uri'];
+ }
+
+ /**
+ * Transforms an exception into a WP_Error object.
+ *
+ * @since 1.0.0
+ * @since 1.70.0 $datapoint parameter is optional.
+ *
+ * @param Exception $e Exception object.
+ * @param string $datapoint Optional. Datapoint originally requested. Default is an empty string.
+ * @return WP_Error WordPress error object.
+ */
+ protected function exception_to_error( Exception $e, $datapoint = '' ) {
+ $cache_ttl = false;
+
+ if ( 'report' === $datapoint && $e instanceof Google_Service_Exception ) {
+ $errors = $e->getErrors();
+ // If error is because of AdSense metric being requested, set adsenseLinked to false.
+ if ( isset( $errors[0]['message'] ) ) {
+ if ( $this->is_adsense_metric( substr( $errors[0]['message'], strlen( 'Restricted metric(s): ' ) ) ) ) {
+ $this->get_settings()->merge( array( 'adsenseLinked' => false ) );
+ }
+
+ if ( preg_match( '#^Restricted metric\(s\)\:#im', $errors[0]['message'] ) ) {
+ $cache_ttl = ( 10 * MINUTE_IN_SECONDS );
+ }
+ }
+ }
+
+ $error = parent::exception_to_error( $e, $datapoint );
+
+ if ( $cache_ttl && is_wp_error( $error ) ) {
+ $error_code = $error->get_error_code();
+ if ( ! empty( $error->error_data[ $error_code ] ) ) {
+ $error->error_data[ $error_code ]['cacheTTL'] = $cache_ttl;
+ } else {
+ $error->add_data(
+ array(
+ 'cacheTTL' => $cache_ttl,
+ ),
+ $error_code
+ );
+ }
+ }
+
+ return $error;
+ }
+
+ /**
+ * Determines whether the given request is for an adsense request.
+ *
+ * @param Data_Request $data Data request object.
+ *
+ * @return bool
+ */
+ private function is_adsense_request( $data ) {
+ foreach ( (array) $data['metrics'] as $metric ) {
+ $metric = (array) $metric;
+ if ( isset( $metric['expression'] ) && $this->is_adsense_metric( $metric['expression'] ) ) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Determines whether the given metric expression is for an AdSense metric.
+ *
+ * @since 1.8.0
+ *
+ * @param string $metric Metric expression.
+ * @return bool True if AdSense metric, false otherwise.
+ */
+ private function is_adsense_metric( $metric ) {
+ return 0 === strpos( $metric, 'ga:adsense' );
+ }
+
+ /**
+ * Outputs the user tracking opt-out script.
+ *
+ * This script opts out of all Google Analytics tracking, for all measurement IDs, regardless of implementation.
+ * E.g. via Tag Manager, etc.
+ *
+ * @since 1.5.0
+ * @link https://developers.google.com/analytics/devguides/collection/analyticsjs/user-opt-out
+ */
+ private function print_tracking_opt_out() {
+ if ( ! $this->is_tracking_disabled() ) {
+ return;
+ }
+ $settings = $this->get_settings()->get();
+ $account_id = $settings['accountID'];
+ $property_id = $settings['propertyID'];
+
+ if ( $this->context->is_amp() ) : ?>
+
+
+
+
+
+
+
+
+ options );
+ }
+
+ /**
+ * Sets up the module's assets to register.
+ *
+ * @since 1.8.0
+ *
+ * @return Asset[] List of Asset objects.
+ */
+ protected function setup_assets() {
+ $base_url = $this->context->url( 'dist/assets/' );
+
+ return array(
+ new Script(
+ 'googlesitekit-modules-analytics',
+ array(
+ 'src' => $base_url . 'js/googlesitekit-modules-analytics.js',
+ 'dependencies' => array(
+ 'googlesitekit-vendor',
+ 'googlesitekit-api',
+ 'googlesitekit-data',
+ 'googlesitekit-modules',
+ 'googlesitekit-datastore-site',
+ 'googlesitekit-datastore-user',
+ 'googlesitekit-datastore-forms',
+ 'googlesitekit-components',
+ ),
+ )
+ ),
+ );
+ }
+
+ /**
+ * Determines the Analytics account ID from a given Analytics property ID.
+ *
+ * @since 1.8.0
+ *
+ * @param string $property_id Analytics property ID.
+ * @return string Analytics account ID, or empty string if invalid property ID.
+ */
+ protected function parse_account_id( $property_id ) {
+ if ( ! preg_match( '/^UA-([0-9]+)-[0-9]+$/', $property_id, $matches ) ) {
+ return '';
+ }
+ return $matches[1];
+ }
+
+ /**
+ * Registers the Analytics tag.
+ *
+ * @since 1.24.0
+ */
+ private function register_tag() {
+ $settings = $this->get_settings()->get();
+
+ if ( $this->context->is_amp() ) {
+ $tag = new AMP_Tag( $settings['propertyID'], self::MODULE_SLUG );
+ } else {
+ $tag = new Web_Tag( $settings['propertyID'], self::MODULE_SLUG );
+ }
+
+ if ( $tag->is_tag_blocked() ) {
+ return;
+ }
+
+ $tag->use_guard( new Tag_Verify_Guard( $this->context->input() ) );
+ $tag->use_guard( new Tag_Guard( $this->get_settings() ) );
+ $tag->use_guard( new Tag_Environment_Type_Guard() );
+
+ if ( $tag->can_register() ) {
+ $tag->set_anonymize_ip( $settings['anonymizeIP'] );
+ $tag->set_home_domain(
+ URL::parse( $this->context->get_canonical_home_url(), PHP_URL_HOST )
+ );
+ $tag->set_ads_conversion_id( $settings['adsConversionID'] );
+
+ $tag->register();
+ }
+ }
+
+ /**
+ * Finds a property in the properties list.
+ *
+ * @since 1.31.0
+ *
+ * @param array $properties An array of Analytics properties to search in.
+ * @param string $property_id Optional. The Analytics property ID. Default is the current property ID from the Analytics settings.
+ * @param array $urls Optional. An array of URLs that searched property can have.
+ * @return mixed A property instance on success, otherwise NULL.
+ */
+ protected function find_property( array $properties, $property_id = '', array $urls = array() ) {
+ if ( strlen( $property_id ) === 0 ) {
+ $option = $this->get_settings()->get();
+ $property_id = $option['propertyID'];
+ }
+
+ foreach ( $properties as $property ) {
+ /* @var Google_Service_Analytics_Webproperty $property Property instance. */
+ $id = $property->getId();
+ $website_url = $property->getWebsiteUrl();
+ $website_url = untrailingslashit( $website_url );
+
+ if ( $id === $property_id || ( 0 < count( $urls ) && in_array( $website_url, $urls, true ) ) ) {
+ return $property;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * Populates Analytics settings using the incoming token response data.
+ *
+ * @since 1.50.0
+ *
+ * @param array $token_response Token response data.
+ */
+ public function handle_token_response_data( $token_response ) {
+ if ( empty( $token_response['analytics_configuration'] ) || $this->is_connected() ) {
+ return;
+ }
+
+ $configuration = $token_response['analytics_configuration'];
+ if ( ! is_array( $configuration ) ) {
+ return;
+ }
+
+ $keys_map = array(
+ 'ga_account_id' => 'accountID',
+ 'ua_property_id' => 'propertyID',
+ 'ua_internal_web_property_id' => 'internalWebPropertyID',
+ 'ua_profile_id' => 'profileID',
+ );
+
+ $settings = array();
+ foreach ( $keys_map as $key => $setting ) {
+ if ( ! empty( $configuration[ $key ] ) && is_string( $configuration[ $key ] ) ) {
+ $settings[ $setting ] = $configuration[ $key ];
+ }
+ }
+
+ // Save new settings only if all keys are not empty.
+ if ( ! empty( $settings ) && count( $settings ) === 4 ) {
+ $this->get_settings()->merge( $settings );
+ }
+ }
+
+ /**
+ * Checks if the current user has access to the current configured service entity.
+ *
+ * @since 1.70.0
+ *
+ * @return boolean|WP_Error
+ */
+ public function check_service_entity_access() {
+ $data_request = array(
+ 'row_limit' => 1,
+ );
+
+ $request = $this->create_analytics_site_data_request( $data_request );
+
+ if ( is_wp_error( $request ) ) {
+ return $request;
+ }
+
+ try {
+ $body = new Google_Service_AnalyticsReporting_GetReportsRequest();
+ $body->setReportRequests( array( $request ) );
+ $this->get_analyticsreporting_service()->reports->batchGet( $body );
+ } catch ( Exception $e ) {
+ if ( $e->getCode() === 403 ) {
+ return false;
+ }
+ return $this->exception_to_error( $e );
+ }
+
+ return true;
+ }
+
+ /**
+ * Validates the report metrics.
+ *
+ * @since 1.82.0
+ *
+ * @param Google_Service_AnalyticsReporting_Metric[] $metrics The metrics to validate.
+ * @throws Invalid_Report_Metrics_Exception Thrown if the metrics are invalid.
+ */
+ protected function validate_report_metrics( $metrics ) {
+ if ( false === $this->is_using_shared_credentials ) {
+ return;
+ }
+
+ $valid_metrics = apply_filters(
+ 'googlesitekit_shareable_analytics_metrics',
+ array(
+ 'ga:sessions',
+ 'ga:users',
+ 'ga:pageviews',
+ 'ga:uniquePageviews',
+ 'ga:bounceRate',
+ 'ga:avgSessionDuration',
+ 'ga:adsenseRevenue',
+ 'ga:adsenseECPM',
+ 'ga:adsensePageImpressions',
+ 'ga:goalCompletionsAll',
+ )
+ );
+
+ $invalid_metrics = array_diff(
+ array_map(
+ function ( $metric ) {
+ return $metric->getExpression();
+ },
+ $metrics
+ ),
+ $valid_metrics
+ );
+
+ if ( count( $invalid_metrics ) > 0 ) {
+ $message = count( $invalid_metrics ) > 1 ? sprintf(
+ /* translators: %s: is replaced with a comma separated list of the invalid metrics. */
+ __(
+ 'Unsupported metrics requested: %s',
+ 'google-site-kit'
+ ),
+ join(
+ /* translators: used between list items, there is a space after the comma. */
+ __( ', ', 'google-site-kit' ),
+ $invalid_metrics
+ )
+ ) : sprintf(
+ /* translators: %s: is replaced with the invalid metric. */
+ __(
+ 'Unsupported metric requested: %s',
+ 'google-site-kit'
+ ),
+ $invalid_metrics
+ );
+
+ throw new Invalid_Report_Metrics_Exception( $message );
+ }
+ }
+
+ /**
+ * Validates the report dimensions.
+ *
+ * @since 1.82.0
+ *
+ * @param Google_Service_AnalyticsReporting_Dimension[] $dimensions The dimensions to validate.
+ * @throws Invalid_Report_Dimensions_Exception Thrown if the dimensions are invalid.
+ */
+ protected function validate_report_dimensions( $dimensions ) {
+ if ( false === $this->is_using_shared_credentials ) {
+ return;
+ }
+
+ $valid_dimensions = apply_filters(
+ 'googlesitekit_shareable_analytics_dimensions',
+ array(
+ 'ga:date',
+ 'ga:pagePath',
+ 'ga:pageTitle',
+ 'ga:channelGrouping',
+ 'ga:country',
+ 'ga:deviceCategory',
+ 'ga:hostname',
+ )
+ );
+
+ $invalid_dimensions = array_diff(
+ array_map(
+ function ( $dimension ) {
+ return $dimension->getName();
+ },
+ $dimensions
+ ),
+ $valid_dimensions
+ );
+
+ if ( count( $invalid_dimensions ) > 0 ) {
+ $message = count( $invalid_dimensions ) > 1 ? sprintf(
+ /* translators: %s: is replaced with a comma separated list of the invalid dimensions. */
+ __(
+ 'Unsupported dimensions requested: %s',
+ 'google-site-kit'
+ ),
+ join(
+ /* translators: used between list items, there is a space after the comma. */
+ __( ', ', 'google-site-kit' ),
+ $invalid_dimensions
+ )
+ ) : sprintf(
+ /* translators: %s: is replaced with the invalid dimension. */
+ __(
+ 'Unsupported dimension requested: %s',
+ 'google-site-kit'
+ ),
+ $invalid_dimensions
+ );
+
+ throw new Invalid_Report_Dimensions_Exception( $message );
+ }
+ }
+
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Modules/Analytics/AMP_Tag.php b/wp-content/plugins/google-site-kit/includes/Modules/Analytics/AMP_Tag.php
new file mode 100644
index 000000000..f49b2462c
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Modules/Analytics/AMP_Tag.php
@@ -0,0 +1,166 @@
+home_domain = $domain;
+ }
+
+ /**
+ * Sets whether or not to anonymize IP addresses.
+ *
+ * @since 1.32.0
+ *
+ * @param bool $anonymize_ip Whether to anonymize IP addresses or not.
+ */
+ public function set_anonymize_ip( $anonymize_ip ) {
+ // Data from AMP documents is always IP anonymized.
+ // See https://support.google.com/analytics/answer/6343176.
+ }
+
+ /**
+ * Sets the ads conversion ID.
+ *
+ * @since 1.32.0
+ *
+ * @param string $ads_conversion_id Ads ID.
+ */
+ public function set_ads_conversion_id( $ads_conversion_id ) {
+ $this->ads_conversion_id = $ads_conversion_id;
+ }
+
+ /**
+ * Registers tag hooks.
+ *
+ * @since 1.24.0
+ */
+ public function register() {
+ $render = $this->get_method_proxy_once( 'render' );
+
+ // Which actions are run depends on the version of the AMP Plugin
+ // (https://amp-wp.org/) available. Version >=1.3 exposes a
+ // new, `amp_print_analytics` action.
+ // For all AMP modes, AMP plugin version >=1.3.
+ add_action( 'amp_print_analytics', $render );
+ // For AMP Standard and Transitional, AMP plugin version <1.3.
+ add_action( 'wp_footer', $render, 20 );
+ // For AMP Reader, AMP plugin version <1.3.
+ add_action( 'amp_post_template_footer', $render, 20 );
+ // For Web Stories plugin.
+ add_action( 'web_stories_print_analytics', $render );
+
+ // Load amp-analytics component for AMP Reader.
+ $this->enqueue_amp_reader_component_script( 'amp-analytics', 'https://cdn.ampproject.org/v0/amp-analytics-0.1.js' );
+
+ $this->do_init_tag_action();
+ }
+
+ /**
+ * Outputs gtag tag.
+ *
+ * @since 1.24.0
+ */
+ protected function render() {
+ $config = array(
+ $this->tag_id => array(
+ 'groups' => 'default',
+ 'linker' => array(
+ 'domains' => array( $this->home_domain ),
+ ),
+ ),
+ );
+
+ if ( ! empty( $this->ads_conversion_id ) ) {
+ $config[ $this->ads_conversion_id ] = array(
+ 'groups' => 'default',
+ );
+ }
+
+ $gtag_amp_opt = array(
+ 'optoutElementId' => '__gaOptOutExtension',
+ 'vars' => array(
+ 'gtag_id' => $this->tag_id,
+ 'config' => $config,
+ ),
+ );
+
+ /**
+ * Filters the gtag configuration options for the amp-analytics tag.
+ *
+ * You can use the {@see 'googlesitekit_gtag_opt'} filter to do the same for gtag in non-AMP.
+ *
+ * @since 1.24.0
+ * @see https://developers.google.com/gtagjs/devguide/amp
+ *
+ * @param array $gtag_amp_opt gtag config options for AMP.
+ */
+ $gtag_amp_opt_filtered = apply_filters( 'googlesitekit_amp_gtag_opt', $gtag_amp_opt );
+
+ // Ensure gtag_id is set to the correct value.
+ if ( ! is_array( $gtag_amp_opt_filtered ) ) {
+ $gtag_amp_opt_filtered = $gtag_amp_opt;
+ }
+
+ if ( ! isset( $gtag_amp_opt_filtered['vars'] ) || ! is_array( $gtag_amp_opt_filtered['vars'] ) ) {
+ $gtag_amp_opt_filtered['vars'] = $gtag_amp_opt['vars'];
+ }
+
+ $gtag_amp_opt_filtered['vars']['gtag_id'] = $this->tag_id;
+
+ printf( "\n\n", esc_html__( 'Google Analytics AMP snippet added by Site Kit', 'google-site-kit' ) );
+
+ printf(
+ '',
+ $this->get_tag_blocked_on_consent_attribute(), // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
+ wp_json_encode( $gtag_amp_opt_filtered )
+ );
+
+ printf( "\n\n", esc_html__( 'End Google Analytics AMP snippet added by Site Kit', 'google-site-kit' ) );
+ }
+
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Advanced_Tracking.php b/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Advanced_Tracking.php
new file mode 100644
index 000000000..a353a9672
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Advanced_Tracking.php
@@ -0,0 +1,167 @@
+context = $context;
+ $this->event_list_registry = new Event_List_Registry();
+ }
+
+ /**
+ * Registers functionality through WordPress hooks.
+ *
+ * @since 1.18.0.
+ */
+ public function register() {
+ add_action(
+ 'googlesitekit_analytics_init_tag',
+ function() {
+ $this->register_event_lists();
+ add_action(
+ 'wp_footer',
+ function() {
+ $this->set_up_advanced_tracking();
+ }
+ );
+ }
+ );
+ add_action(
+ 'googlesitekit_analytics_init_tag_amp',
+ function() {
+ $this->register_event_lists();
+ add_filter(
+ 'googlesitekit_amp_gtag_opt',
+ function( $gtag_amp_opt ) {
+ return $this->set_up_advanced_tracking_amp( $gtag_amp_opt );
+ }
+ );
+ }
+ );
+ }
+
+ /**
+ * Returns the map of unique events.
+ *
+ * @since 1.18.0.
+ *
+ * @return array Map of Event instances, keyed by their unique ID.
+ */
+ public function get_events() {
+ return $this->events;
+ }
+
+ /**
+ * Injects javascript to track active events.
+ *
+ * @since 1.18.0.
+ */
+ private function set_up_advanced_tracking() {
+ $this->compile_events();
+ ( new Script_Injector( $this->context ) )->inject_event_script( $this->events );
+ }
+
+ /**
+ * Adds triggers to AMP configuration.
+ *
+ * @since 1.18.0.
+ *
+ * @param array $gtag_amp_opt gtag config options for AMP.
+ * @return array Filtered $gtag_amp_opt.
+ */
+ private function set_up_advanced_tracking_amp( $gtag_amp_opt ) {
+ $this->compile_events();
+ return ( new AMP_Config_Injector() )->inject_event_configurations( $gtag_amp_opt, $this->events );
+ }
+
+ /**
+ * Instantiates and registers event lists.
+ *
+ * @since 1.18.0.
+ */
+ private function register_event_lists() {
+ /**
+ * Fires when the Advanced_Tracking class is ready to receive event lists.
+ *
+ * This means that Advanced_Tracking class stores the event lists in the Event_List_Registry instance.
+ *
+ * @since 1.18.0.
+ *
+ * @param Event_List_Registry $event_list_registry
+ */
+ do_action( 'googlesitekit_analytics_register_event_lists', $this->event_list_registry );
+
+ foreach ( $this->event_list_registry->get_lists() as $event_list ) {
+ $event_list->register();
+ }
+ }
+
+ /**
+ * Compiles the list of Event objects.
+ *
+ * @since 1.18.0.
+ */
+ private function compile_events() {
+ $this->events = array_reduce(
+ $this->event_list_registry->get_lists(),
+ function ( $events, Event_List $event_list ) {
+ return array_merge( $events, $event_list->get_events() );
+ },
+ array()
+ );
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Advanced_Tracking/AMP_Config_Injector.php b/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Advanced_Tracking/AMP_Config_Injector.php
new file mode 100644
index 000000000..a0ee39257
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Advanced_Tracking/AMP_Config_Injector.php
@@ -0,0 +1,64 @@
+ $event ) {
+ $event_config = $event->get_config();
+
+ $amp_trigger = array();
+ if ( 'DOMContentLoaded' === $event_config['on'] ) {
+ $amp_trigger['on'] = 'visible';
+ } else {
+ $amp_trigger['on'] = $event_config['on'];
+ $amp_trigger['selector'] = $event_config['selector'];
+ }
+
+ $amp_trigger['vars'] = array();
+ $amp_trigger['vars']['event_name'] = $event_config['action'];
+ if ( is_array( $event_config['metadata'] ) ) {
+ foreach ( $event_config['metadata'] as $key => $value ) {
+ $amp_trigger['vars'][ $key ] = $value;
+ }
+ }
+
+ $gtag_amp_opt['triggers'][ $amp_trigger_key ] = $amp_trigger;
+ }
+
+ return $gtag_amp_opt;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Advanced_Tracking/Event.php b/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Advanced_Tracking/Event.php
new file mode 100644
index 000000000..ccf6e8a26
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Advanced_Tracking/Event.php
@@ -0,0 +1,109 @@
+config = $this->validate_config( $config );
+ }
+
+ /**
+ * Returns an associative event containing the event attributes.
+ *
+ * @since 1.18.0.
+ *
+ * @return array The configuration in JSON-serializable format.
+ */
+ public function jsonSerialize() {
+ return $this->config;
+ }
+
+ /**
+ * Returns the measurement event configuration.
+ *
+ * @since 1.18.0.
+ *
+ * @return array The config.
+ */
+ public function get_config() {
+ return $this->config;
+ }
+
+ /**
+ * Validates the configuration keys and value types.
+ *
+ * @since 1.18.0.
+ *
+ * @param array $config The event's configuration.
+ * @return array The event's configuration.
+ * @throws Exception Thrown when invalid keys or value type.
+ */
+ private function validate_config( $config ) {
+ $valid_keys = array(
+ 'action',
+ 'selector',
+ 'on',
+ 'metadata',
+ );
+ foreach ( $config as $key => $value ) {
+ if ( ! in_array( $key, $valid_keys, true ) ) {
+ throw new Exception( 'Invalid configuration parameter: ' . $key );
+ }
+ }
+ if ( ! array_key_exists( 'metadata', $config ) ) {
+ $config['metadata'] = null;
+ }
+ if ( array_key_exists( 'on', $config ) && 'DOMContentLoaded' === $config['on'] ) {
+ $config['selector'] = '';
+ }
+ foreach ( $valid_keys as $key ) {
+ if ( ! array_key_exists( $key, $config ) ) {
+ throw new Exception( 'Missed configuration parameter: ' . $key );
+ }
+ }
+ return $config;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Advanced_Tracking/Event_List.php b/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Advanced_Tracking/Event_List.php
new file mode 100644
index 000000000..bb96146f6
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Advanced_Tracking/Event_List.php
@@ -0,0 +1,62 @@
+events[ $hash ] = $event;
+ }
+
+ /**
+ * Gets the measurement events array.
+ *
+ * @since 1.18.0.
+ *
+ * @return array The map of events for this list, keyed by their unique ID.
+ */
+ public function get_events() {
+ return $this->events;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Advanced_Tracking/Event_List_Registry.php b/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Advanced_Tracking/Event_List_Registry.php
new file mode 100644
index 000000000..c200ade6d
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Advanced_Tracking/Event_List_Registry.php
@@ -0,0 +1,51 @@
+event_lists[] = $event_list;
+ }
+
+ /**
+ * Gets the list of registered event lists.
+ *
+ * @since 1.18.0.
+ *
+ * @return Event_List[] The list of registered event lists.
+ */
+ public function get_lists() {
+ return $this->event_lists;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Advanced_Tracking/Script_Injector.php b/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Advanced_Tracking/Script_Injector.php
new file mode 100644
index 000000000..b2a4166ae
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Advanced_Tracking/Script_Injector.php
@@ -0,0 +1,78 @@
+context = $context;
+ }
+
+ /**
+ * Creates list of measurement event configurations and javascript to inject.
+ *
+ * @since 1.18.0.
+ *
+ * @param array $events The map of Event objects, keyed by their unique ID.
+ */
+ public function inject_event_script( $events ) {
+ if ( empty( $events ) ) {
+ return;
+ }
+
+ list( $filename ) = Manifest::get( 'analytics-advanced-tracking' );
+ if ( ! $filename ) {
+ // Get file contents of script and add it to the page, injecting event configurations into it.
+ $filename = 'analytics-advanced-tracking.js';
+
+ }
+
+ $script_path = $this->context->path( "dist/assets/js/{$filename}" );
+
+ // phpcs:ignore WordPress.WP.AlternativeFunctions, WordPressVIPMinimum.Performance.FetchingRemoteData
+ $script_content = file_get_contents( $script_path );
+ if ( ! $script_content ) {
+ return;
+ }
+
+ $data_var = sprintf(
+ 'var _googlesitekitAnalyticsTrackingData = %s;',
+ wp_json_encode( array_values( $events ) )
+ );
+ BC_Functions::wp_print_inline_script_tag( $data_var . "\n" . $script_content );
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Google_Service_AnalyticsProvisioning.php b/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Google_Service_AnalyticsProvisioning.php
new file mode 100644
index 000000000..c7fd69bb0
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Google_Service_AnalyticsProvisioning.php
@@ -0,0 +1,49 @@
+provisioning = new Proxy_Provisioning(
+ $this,
+ $this->serviceName, // phpcs:ignore WordPress.NamingConventions.ValidVariableName
+ 'provisioning',
+ array(
+ 'methods' => array(
+ 'createAccountTicket' => array(
+ 'path' => 'provisioning/createAccountTicket',
+ 'httpMethod' => 'POST',
+ 'parameters' => array(),
+ ),
+ ),
+ )
+ );
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Proxy_Account_Ticket.php b/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Proxy_Account_Ticket.php
new file mode 100644
index 000000000..1c8c41fac
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Proxy_Account_Ticket.php
@@ -0,0 +1,79 @@
+site_id;
+ }
+
+ /**
+ * Sets the site ID.
+ *
+ * @since 1.9.0
+ *
+ * @param string $id The site id.
+ */
+ public function setSiteId( $id ) {
+ $this->site_id = $id;
+ }
+
+ /**
+ * Gets the site secret.
+ *
+ * @since 1.9.0
+ */
+ public function getSiteSecret() {
+ return $this->site_secret;
+ }
+
+ /**
+ * Sets the site secret.
+ *
+ * @since 1.9.0
+ *
+ * @param string $secret The site secret.
+ */
+ public function setSiteSecret( $secret ) {
+ $this->site_secret = $secret;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Proxy_Provisioning.php b/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Proxy_Provisioning.php
new file mode 100644
index 000000000..e384a5f97
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Proxy_Provisioning.php
@@ -0,0 +1,40 @@
+ $post_body );
+ $params = array_merge( $params, $opt_params );
+ return $this->call( 'createAccountTicket', array( $params ), 'Google\Site_Kit_Dependencies\Google_Service_Analytics_AccountTicket' );
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Settings.php b/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Settings.php
new file mode 100644
index 000000000..b69777edf
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Settings.php
@@ -0,0 +1,231 @@
+register_legacy_keys_migration(
+ array(
+ 'accountId' => 'accountID',
+ 'profileId' => 'profileID',
+ 'propertyId' => 'propertyID',
+ 'internalWebPropertyId' => 'internalWebPropertyID',
+ )
+ );
+
+ $this->register_owned_keys();
+
+ // Backwards compatibility with previous dedicated option.
+ add_filter(
+ 'default_option_' . self::OPTION,
+ function ( $default ) {
+ // Only fallback to the legacy option if the linked state is not filtered.
+ // This filter is documented below.
+ if ( is_null( apply_filters( 'googlesitekit_analytics_adsense_linked', null ) ) ) {
+ $default['adsenseLinked'] = (bool) $this->options->get( 'googlesitekit_analytics_adsense_linked' );
+ }
+
+ // `canUseSnippet` is a computed setting, so this sets the value if settings have not been saved yet.
+ // This filter is documented below.
+ $can_use_snippet = apply_filters( 'googlesitekit_analytics_can_use_snippet', true, '' );
+ if ( is_bool( $can_use_snippet ) ) {
+ $default['canUseSnippet'] = $can_use_snippet;
+ }
+
+ return $default;
+ }
+ );
+
+ add_filter(
+ 'option_' . self::OPTION,
+ function ( $option ) {
+ /**
+ * Filters the Google Analytics account ID to use.
+ *
+ * @since 1.0.0
+ *
+ * @param string $account_id Empty by default, will fall back to the option value if not set.
+ */
+ $account_id = apply_filters( 'googlesitekit_analytics_account_id', '' );
+ if ( ! empty( $account_id ) ) {
+ $option['accountID'] = $account_id;
+ }
+
+ /**
+ * Filters the Google Analytics property ID to use.
+ *
+ * @since 1.0.0
+ *
+ * @param string $property_id Empty by default, will fall back to the option value if not set.
+ */
+ $property_id = apply_filters( 'googlesitekit_analytics_property_id', '' );
+ if ( ! empty( $property_id ) ) {
+ $option['propertyID'] = $property_id;
+ }
+ $property_id = isset( $option['propertyID'] ) ? $option['propertyID'] : '';
+
+ /**
+ * Filters the Google Analytics internal web property ID to use.
+ *
+ * @since 1.0.0
+ *
+ * @param string $internal_web_property_id Empty by default, will fall back to the option value if not set.
+ */
+ $internal_web_property_id = apply_filters( 'googlesitekit_analytics_internal_web_property_id', '' );
+ if ( ! empty( $internal_web_property_id ) ) {
+ $option['internalWebPropertyID'] = $internal_web_property_id;
+ }
+
+ /**
+ * Filters the Google Analytics profile / view ID to use.
+ *
+ * @since 1.0.0
+ *
+ * @param string $profile_id Empty by default, will fall back to the option value if not set.
+ */
+ $profile_id = apply_filters( 'googlesitekit_analytics_view_id', '' );
+ if ( ! empty( $profile_id ) ) {
+ $option['profileID'] = $profile_id;
+ }
+
+ /**
+ * Filters the linked state of AdSense with Analytics.
+ *
+ * This filter exists so that adsenseLinked can only be truthy if the AdSense module is active,
+ * regardless of the saved setting.
+ *
+ * @since 1.3.0
+ * @param bool $adsense_linked Null by default, will fallback to the option value if not set.
+ */
+ $adsense_linked = apply_filters( 'googlesitekit_analytics_adsense_linked', null );
+ if ( is_bool( $adsense_linked ) ) {
+ $option['adsenseLinked'] = $adsense_linked;
+ }
+
+ /**
+ * Filters the state of the can use snipped setting.
+ *
+ * This filter exists so that useSnippet can be restored to true when the Tag Manager module
+ * is disconnected, ensuring the Analytics snippet is always included.
+ *
+ * @since 1.28.0
+ * @since 1.75.0 Added the `$property_id` parameter.
+ *
+ * @param bool $can_use_snippet Whether or not `useSnippet` can control snippet output. Default: `true`.
+ * @param string $property_id The current property ID.
+ */
+ $can_use_snippet = apply_filters( 'googlesitekit_analytics_can_use_snippet', true, $property_id );
+ if ( is_bool( $can_use_snippet ) ) {
+ $option['canUseSnippet'] = $can_use_snippet;
+ }
+
+ return $option;
+ }
+ );
+ }
+
+ /**
+ * Returns keys for owned settings.
+ *
+ * @since 1.16.0
+ *
+ * @return array An array of keys for owned settings.
+ */
+ public function get_owned_keys() {
+ return array(
+ 'accountID',
+ 'internalWebPropertyID',
+ 'profileID',
+ 'propertyID',
+ );
+ }
+
+ /**
+ * Gets the default value.
+ *
+ * @since 1.2.0
+ *
+ * @return array
+ */
+ protected function get_default() {
+ return array(
+ 'ownerID' => 0,
+ 'accountID' => '',
+ 'adsenseLinked' => false,
+ 'adsConversionID' => '',
+ 'anonymizeIP' => true,
+ 'internalWebPropertyID' => '',
+ 'profileID' => '',
+ 'propertyID' => '',
+ 'trackingDisabled' => array( 'loggedinUsers' ),
+ 'useSnippet' => true,
+ 'canUseSnippet' => true,
+ );
+ }
+
+ /**
+ * Gets the callback for sanitizing the setting's value before saving.
+ *
+ * @since 1.6.0
+ *
+ * @return callable|null
+ */
+ protected function get_sanitize_callback() {
+ return function( $option ) {
+ if ( is_array( $option ) ) {
+ if ( isset( $option['useSnippet'] ) ) {
+ $option['useSnippet'] = (bool) $option['useSnippet'];
+ }
+ if ( isset( $option['canUseSnippet'] ) ) {
+ $option['canUseSnippet'] = (bool) $option['canUseSnippet'];
+ }
+ if ( isset( $option['anonymizeIP'] ) ) {
+ $option['anonymizeIP'] = (bool) $option['anonymizeIP'];
+ }
+ if ( isset( $option['trackingDisabled'] ) ) {
+ // Prevent other options from being saved if 'loggedinUsers' is selected.
+ if ( in_array( 'loggedinUsers', $option['trackingDisabled'], true ) ) {
+ $option['trackingDisabled'] = array( 'loggedinUsers' );
+ } else {
+ $option['trackingDisabled'] = (array) $option['trackingDisabled'];
+ }
+ }
+ if ( isset( $option['adsenseLinked'] ) ) {
+ $option['adsenseLinked'] = (bool) $option['adsenseLinked'];
+ }
+ }
+ return $option;
+ };
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Tag_Guard.php b/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Tag_Guard.php
new file mode 100644
index 000000000..5f2879405
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Tag_Guard.php
@@ -0,0 +1,36 @@
+settings->get();
+ return $settings['canUseSnippet'] && ! empty( $settings['useSnippet'] ) && ! empty( $settings['propertyID'] );
+ }
+
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Tag_Interface.php b/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Tag_Interface.php
new file mode 100644
index 000000000..19ecef80a
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Modules/Analytics/Tag_Interface.php
@@ -0,0 +1,47 @@
+home_domain = $domain;
+ }
+
+ /**
+ * Sets whether or not to anonymize IP addresses.
+ *
+ * @since 1.24.0
+ *
+ * @param bool $anonymize_ip Whether to anonymize IP addresses or not.
+ */
+ public function set_anonymize_ip( $anonymize_ip ) {
+ $this->anonymize_ip = (bool) $anonymize_ip;
+ }
+
+ /**
+ * Sets the ads conversion ID.
+ *
+ * @since 1.32.0
+ *
+ * @param string $ads_conversion_id Ads ID.
+ */
+ public function set_ads_conversion_id( $ads_conversion_id ) {
+ $this->ads_conversion_id = $ads_conversion_id;
+ }
+
+ /**
+ * Registers tag hooks.
+ *
+ * @since 1.24.0
+ */
+ public function register() {
+ add_action( 'wp_enqueue_scripts', $this->get_method_proxy( 'enqueue_gtag_script' ) );
+ add_filter(
+ 'wp_resource_hints',
+ $this->get_dns_prefetch_hints_callback( '//www.googletagmanager.com' ),
+ 10,
+ 2
+ );
+
+ $this->do_init_tag_action();
+ }
+
+ /**
+ * Outputs gtag snippet.
+ *
+ * @since 1.24.0
+ */
+ protected function render() {
+ // Do nothing, gtag script is enqueued.
+ }
+
+ /**
+ * Enqueues gtag script.
+ *
+ * @since 1.24.0
+ */
+ protected function enqueue_gtag_script() {
+ $gtag_opt = array();
+ $gtag_src = 'https://www.googletagmanager.com/gtag/js?id=' . rawurlencode( $this->tag_id );
+
+ // phpcs:ignore WordPress.WP.EnqueuedResourceParameters.MissingVersion
+ wp_enqueue_script( 'google_gtagjs', $gtag_src, false, null, false );
+ wp_script_add_data( 'google_gtagjs', 'script_execution', 'async' );
+ wp_add_inline_script( 'google_gtagjs', 'window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}' );
+
+ if ( ! empty( $this->home_domain ) ) {
+ $gtag_opt['linker'] = array( 'domains' => array( $this->home_domain ) );
+ }
+
+ if ( $this->anonymize_ip ) {
+ // See https://developers.google.com/analytics/devguides/collection/gtagjs/ip-anonymization.
+ $gtag_opt['anonymize_ip'] = true;
+ }
+
+ /**
+ * Filters the gtag configuration options for the Analytics snippet.
+ *
+ * You can use the {@see 'googlesitekit_amp_gtag_opt'} filter to do the same for gtag in AMP.
+ *
+ * @since 1.24.0
+ *
+ * @see https://developers.google.com/gtagjs/devguide/configure
+ *
+ * @param array $gtag_opt gtag config options.
+ */
+ $gtag_opt = apply_filters( 'googlesitekit_gtag_opt', $gtag_opt );
+
+ if ( ! empty( $gtag_opt['linker'] ) ) {
+ $linker = wp_json_encode( $gtag_opt['linker'] );
+ $linker = sprintf( "gtag('set', 'linker', %s );", $linker );
+ wp_add_inline_script( 'google_gtagjs', $linker );
+ }
+
+ unset( $gtag_opt['linker'] );
+
+ wp_add_inline_script( 'google_gtagjs', 'gtag("js", new Date());' );
+ wp_add_inline_script( 'google_gtagjs', 'gtag("set", "developer_id.dZTNiMT", true);' ); // Site Kit developer ID.
+
+ if ( empty( $gtag_opt ) ) {
+ $config = sprintf( 'gtag("config", "%s");', esc_js( $this->tag_id ) );
+ wp_add_inline_script( 'google_gtagjs', $config );
+ } else {
+ $config = sprintf( 'gtag("config", "%s", %s);', esc_js( $this->tag_id ), wp_json_encode( $gtag_opt ) );
+ wp_add_inline_script( 'google_gtagjs', $config );
+ }
+
+ $this->add_inline_ads_conversion_id_config();
+
+ $block_on_consent_attrs = $this->get_tag_blocked_on_consent_attribute();
+
+ $filter_google_gtagjs = function ( $tag, $handle ) use ( $block_on_consent_attrs, $gtag_src ) {
+ if ( 'google_gtagjs' !== $handle ) {
+ return $tag;
+ }
+
+ $snippet_comment_begin = sprintf( "\n\n", esc_html__( 'Google Analytics snippet added by Site Kit', 'google-site-kit' ) );
+ $snippet_comment_end = sprintf( "\n\n", esc_html__( 'End Google Analytics snippet added by Site Kit', 'google-site-kit' ) );
+
+ if ( $block_on_consent_attrs ) {
+ $tag = str_replace(
+ array(
+ "
+
+ get_settings()->get();
+
+ return array(
+ 'optimize_id' => array(
+ 'label' => __( 'Optimize Container ID', 'google-site-kit' ),
+ 'value' => $settings['optimizeID'],
+ 'debug' => Debug_Data::redact_debug_value( $settings['optimizeID'], 7 ),
+ ),
+ );
+ }
+
+ /**
+ * Adds AMP experiment script if opted in.
+ *
+ * @since 1.0.0
+ *
+ * @param array $data AMP template data.
+ * @return array Filtered $data.
+ */
+ protected function amp_data_load_experiment_component( $data ) {
+ $settings = $this->get_settings()->get();
+
+ if ( $settings['ampExperimentJSON'] ) {
+ $data['amp_component_scripts']['amp-experiment'] = 'https://cdn.ampproject.org/v0/amp-experiment-0.1.js';
+ }
+
+ return $data;
+ }
+
+ /**
+ * Sets up information about the module.
+ *
+ * @since 1.0.0
+ *
+ * @return array Associative array of module info.
+ */
+ protected function setup_info() {
+ return array(
+ 'slug' => 'optimize',
+ 'name' => _x( 'Optimize', 'Service name', 'google-site-kit' ),
+ 'description' => __( 'Create free A/B tests that help you drive metric-based design solutions to your site', 'google-site-kit' ),
+ 'order' => 5,
+ 'homepage' => __( 'https://optimize.google.com/optimize/home/', 'google-site-kit' ),
+ 'depends_on' => array( 'analytics' ),
+ );
+ }
+
+ /**
+ * Sets up the Google services the module should use.
+ *
+ * This method is invoked once by {@see Module::get_service()} to lazily set up the services when one is requested
+ * for the first time.
+ *
+ * @since 1.0.0
+ * @since 1.2.0 Now requires Google_Site_Kit_Client instance.
+ *
+ * @param Google_Site_Kit_Client $client Google client instance.
+ * @return array Google services as $identifier => $service_instance pairs. Every $service_instance must be an
+ * instance of Google_Service.
+ */
+ protected function setup_services( Google_Site_Kit_Client $client ) {
+ return array();
+ }
+
+ /**
+ * Sets up the module's settings instance.
+ *
+ * @since 1.2.0
+ *
+ * @return Module_Settings
+ */
+ protected function setup_settings() {
+ return new Settings( $this->options );
+ }
+
+ /**
+ * Sets up the module's assets to register.
+ *
+ * @since 1.10.0
+ *
+ * @return Asset[] List of Asset objects.
+ */
+ protected function setup_assets() {
+ $base_url = $this->context->url( 'dist/assets/' );
+
+ return array(
+ new Script(
+ 'googlesitekit-modules-optimize',
+ array(
+ 'src' => $base_url . 'js/googlesitekit-modules-optimize.js',
+ 'dependencies' => array(
+ 'googlesitekit-vendor',
+ 'googlesitekit-api',
+ 'googlesitekit-data',
+ 'googlesitekit-modules',
+ 'googlesitekit-datastore-site',
+ 'googlesitekit-datastore-forms',
+ 'googlesitekit-components',
+ ),
+ )
+ ),
+ );
+ }
+
+ /**
+ * Registers the Optimize tag.
+ *
+ * @since 1.39.0
+ */
+ private function register_tag() {
+ $is_amp = $this->context->is_amp();
+ $module_settings = $this->get_settings();
+ $settings = $module_settings->get();
+
+ if ( $is_amp ) {
+ return false;
+ }
+
+ $tag = new Web_Tag( $settings['optimizeID'], self::MODULE_SLUG );
+
+ if ( ! $tag->is_tag_blocked() ) {
+ $tag->use_guard( new Tag_Guard( $module_settings ) );
+
+ if ( $tag->can_register() ) {
+ $tag->register();
+ }
+ }
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Modules/Optimize/Settings.php b/wp-content/plugins/google-site-kit/includes/Modules/Optimize/Settings.php
new file mode 100644
index 000000000..cb91b7229
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Modules/Optimize/Settings.php
@@ -0,0 +1,112 @@
+register_legacy_keys_migration(
+ array(
+ 'AMPExperimentJson' => 'ampExperimentJSON',
+ 'ampExperimentJson' => 'ampExperimentJSON',
+ 'optimize_id' => 'optimizeID',
+ 'optimizeId' => 'optimizeID',
+ )
+ );
+
+ $this->register_owned_keys();
+
+ add_filter(
+ 'option_' . self::OPTION,
+ function ( $option ) {
+ // Migrate legacy values where this was saved as decoded JSON object.
+ if ( is_array( $option ) && array_key_exists( 'ampExperimentJSON', $option ) && ! is_string( $option['ampExperimentJSON'] ) ) {
+ if ( empty( $option['ampExperimentJSON'] ) ) {
+ $option['ampExperimentJSON'] = '';
+ } else {
+ $option['ampExperimentJSON'] = wp_json_encode( $option['ampExperimentJSON'] );
+ }
+ }
+
+ return $option;
+ }
+ );
+ }
+
+ /**
+ * Returns keys for owned settings.
+ *
+ * @since 1.16.0
+ *
+ * @return array An array of keys for owned settings.
+ */
+ public function get_owned_keys() {
+ return array(
+ 'optimizeID',
+ );
+ }
+
+ /**
+ * Gets the default value.
+ *
+ * @since 1.2.0
+ *
+ * @return array
+ */
+ protected function get_default() {
+ return array(
+ 'ownerID' => 0,
+ 'ampExperimentJSON' => '',
+ 'optimizeID' => '',
+ 'placeAntiFlickerSnippet' => false,
+ );
+ }
+
+ /**
+ * Gets the callback for sanitizing the setting's value before saving.
+ *
+ * @since 1.39.0
+ *
+ * @return callable|null
+ */
+ protected function get_sanitize_callback() {
+ return function( $option ) {
+ if ( is_array( $option ) ) {
+ if ( isset( $option['placeAntiFlickerSnippet'] ) ) {
+ $option['placeAntiFlickerSnippet'] = (bool) $option['placeAntiFlickerSnippet'];
+ }
+ }
+ return $option;
+ };
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Modules/Optimize/Tag_Guard.php b/wp-content/plugins/google-site-kit/includes/Modules/Optimize/Tag_Guard.php
new file mode 100644
index 000000000..1e9845329
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Modules/Optimize/Tag_Guard.php
@@ -0,0 +1,41 @@
+settings->get();
+
+ if ( ! isset( $settings['placeAntiFlickerSnippet'] ) ) {
+ return false;
+ }
+
+ return $settings['placeAntiFlickerSnippet'];
+ }
+
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Modules/Optimize/Web_Tag.php b/wp-content/plugins/google-site-kit/includes/Modules/Optimize/Web_Tag.php
new file mode 100644
index 000000000..ffc9f0038
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Modules/Optimize/Web_Tag.php
@@ -0,0 +1,62 @@
+get_method_proxy_once( 'render' ), 1 );
+
+ $this->do_init_tag_action();
+ }
+
+ /**
+ * Outputs the Optimize anti-flicker script tag.
+ *
+ * @since 1.39.0
+ */
+ protected function render() {
+
+ $anti_flicker_script = sprintf(
+ "(function(a,s,y,n,c,h,i,d,e){s.className+=' '+y;h.start=1*new Date;
+ h.end=i=function(){s.className=s.className.replace(RegExp(' ?'+y),'')};
+ (a[n]=a[n]||[]).hide=h;setTimeout(function(){i();h.end=null},c);h.timeout=c;
+ })(window,document.documentElement,'async-hide','dataLayer',4000,
+ {'%s':true});",
+ esc_js( $this->tag_id )
+ );
+
+ printf( "\n\n", esc_html__( 'Anti-flicker snippet added by Site Kit', 'google-site-kit' ) );
+ echo '';
+ BC_Functions::wp_print_inline_script_tag( $anti_flicker_script );
+ printf( "\n\n", esc_html__( 'End Anti-flicker snippet added by Site Kit', 'google-site-kit' ) );
+ }
+
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Modules/PageSpeed_Insights.php b/wp-content/plugins/google-site-kit/includes/Modules/PageSpeed_Insights.php
new file mode 100644
index 000000000..ecd1fa575
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Modules/PageSpeed_Insights.php
@@ -0,0 +1,228 @@
+get_settings()->delete();
+ }
+
+ /**
+ * Gets map of datapoint to definition data for each.
+ *
+ * @since 1.12.0
+ *
+ * @return array Map of datapoints to their definitions.
+ */
+ protected function get_datapoint_definitions() {
+ return array(
+ 'GET:pagespeed' => array(
+ 'service' => 'pagespeedonline',
+ 'shareable' => Feature_Flags::enabled( 'dashboardSharing' ),
+ ),
+ );
+ }
+
+ /**
+ * Creates a request object for the given datapoint.
+ *
+ * @since 1.0.0
+ *
+ * @param Data_Request $data Data request object.
+ * @return RequestInterface|callable|WP_Error Request object or callable on success, or WP_Error on failure.
+ *
+ * @throws Invalid_Datapoint_Exception Thrown if the datapoint does not exist.
+ */
+ protected function create_data_request( Data_Request $data ) {
+ switch ( "{$data->method}:{$data->datapoint}" ) {
+ case 'GET:pagespeed':
+ if ( empty( $data['strategy'] ) ) {
+ return new WP_Error(
+ 'missing_required_param',
+ sprintf(
+ /* translators: %s: Missing parameter name */
+ __( 'Request parameter is empty: %s.', 'google-site-kit' ),
+ 'strategy'
+ ),
+ array( 'status' => 400 )
+ );
+ }
+
+ $valid_strategies = array( 'mobile', 'desktop' );
+
+ if ( ! in_array( $data['strategy'], $valid_strategies, true ) ) {
+ return new WP_Error(
+ 'invalid_param',
+ sprintf(
+ /* translators: 1: Invalid parameter name, 2: list of valid values */
+ __( 'Request parameter %1$s is not one of %2$s', 'google-site-kit' ),
+ 'strategy',
+ implode( ', ', $valid_strategies )
+ ),
+ array( 'status' => 400 )
+ );
+ }
+
+ if ( ! empty( $data['url'] ) ) {
+ $page_url = $data['url'];
+ } else {
+ $page_url = $this->context->get_reference_site_url();
+ }
+
+ $service = $this->get_service( 'pagespeedonline' );
+
+ return $service->pagespeedapi->runpagespeed(
+ $page_url,
+ array(
+ 'locale' => $this->context->get_locale( 'site', 'language-code' ),
+ 'strategy' => $data['strategy'],
+ )
+ );
+ }
+
+ return parent::create_data_request( $data );
+ }
+
+ /**
+ * Sets up the module's assets to register.
+ *
+ * @since 1.9.0
+ *
+ * @return Asset[] List of Asset objects.
+ */
+ protected function setup_assets() {
+ $base_url = $this->context->url( 'dist/assets/' );
+
+ return array(
+ new Script(
+ 'googlesitekit-modules-pagespeed-insights',
+ array(
+ 'src' => $base_url . 'js/googlesitekit-modules-pagespeed-insights.js',
+ 'dependencies' => array(
+ 'googlesitekit-vendor',
+ 'googlesitekit-api',
+ 'googlesitekit-data',
+ 'googlesitekit-modules',
+ 'googlesitekit-datastore-site',
+ 'googlesitekit-components',
+ ),
+ )
+ ),
+ );
+ }
+
+
+ /**
+ * Sets up information about the module.
+ *
+ * @since 1.0.0
+ *
+ * @return array Associative array of module info.
+ */
+ protected function setup_info() {
+ return array(
+ 'slug' => 'pagespeed-insights',
+ 'name' => _x( 'PageSpeed Insights', 'Service name', 'google-site-kit' ),
+ 'description' => __( 'Google PageSpeed Insights gives you metrics about performance, accessibility, SEO and PWA', 'google-site-kit' ),
+ 'order' => 4,
+ 'homepage' => __( 'https://pagespeed.web.dev', 'google-site-kit' ),
+ );
+ }
+
+ /**
+ * Sets up the module's settings instance.
+ *
+ * @since 1.49.0
+ *
+ * @return Module_Settings
+ */
+ protected function setup_settings() {
+ return new Settings( $this->options );
+ }
+
+ /**
+ * Sets up the Google services the module should use.
+ *
+ * This method is invoked once by {@see Module::get_service()} to lazily set up the services when one is requested
+ * for the first time.
+ *
+ * @since 1.0.0
+ * @since 1.2.0 Now requires Google_Site_Kit_Client instance.
+ *
+ * @param Google_Site_Kit_Client $client Google client instance.
+ * @return array Google services as $identifier => $service_instance pairs. Every $service_instance must be an
+ * instance of Google_Service.
+ */
+ protected function setup_services( Google_Site_Kit_Client $client ) {
+ return array(
+ 'pagespeedonline' => new Google_Service_PagespeedInsights( $client ),
+ );
+ }
+
+ /**
+ * Gets required Google OAuth scopes for the module.
+ *
+ * @return array List of Google OAuth scopes.
+ * @since 1.0.0
+ */
+ public function get_scopes() {
+ return array(
+ 'openid',
+ );
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Modules/PageSpeed_Insights/Settings.php b/wp-content/plugins/google-site-kit/includes/Modules/PageSpeed_Insights/Settings.php
new file mode 100644
index 000000000..94425ea87
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Modules/PageSpeed_Insights/Settings.php
@@ -0,0 +1,36 @@
+ 0 );
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Modules/Search_Console.php b/wp-content/plugins/google-site-kit/includes/Modules/Search_Console.php
new file mode 100644
index 000000000..84d92276b
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Modules/Search_Console.php
@@ -0,0 +1,600 @@
+register_scopes_hook();
+
+ // Detect and store Search Console property when receiving token for the first time.
+ add_action(
+ 'googlesitekit_authorize_user',
+ function( array $token_response ) {
+ if ( ! current_user_can( Permissions::SETUP ) ) {
+ return;
+ }
+
+ // If the response includes the Search Console property, set that.
+ // But only if it is being set for the first time or if Search Console
+ // has no owner or the current user is the owner.
+ if ( ! empty( $token_response['search_console_property'] ) &&
+ ( empty( $this->get_property_id() ) || ( in_array( $this->get_owner_id(), array( 0, get_current_user_id() ), true ) ) ) ) {
+ $this->get_settings()->merge(
+ array( 'propertyID' => $token_response['search_console_property'] )
+ );
+ return;
+ }
+
+ // Otherwise try to detect if there isn't one set already.
+ $property_id = $this->get_property_id() ?: $this->detect_property_id();
+ if ( ! $property_id ) {
+ return;
+ }
+
+ $this->get_settings()->merge(
+ array( 'propertyID' => $property_id )
+ );
+ }
+ );
+
+ // Ensure that a Search Console property must be set at all times.
+ add_filter(
+ 'googlesitekit_setup_complete',
+ function( $complete ) {
+ if ( ! $complete ) {
+ return $complete;
+ }
+
+ return (bool) $this->get_property_id();
+ }
+ );
+
+ // Provide Search Console property information to JavaScript.
+ add_filter(
+ 'googlesitekit_setup_data',
+ function ( $data ) {
+ $data['hasSearchConsoleProperty'] = (bool) $this->get_property_id();
+
+ return $data;
+ },
+ 11
+ );
+ }
+
+ /**
+ * Gets required Google OAuth scopes for the module.
+ *
+ * @since 1.0.0
+ *
+ * @return array List of Google OAuth scopes.
+ */
+ public function get_scopes() {
+ return array(
+ 'https://www.googleapis.com/auth/webmasters', // The scope for the Search Console remains the legacy webmasters scope.
+ );
+ }
+
+ /**
+ * Gets an array of debug field definitions.
+ *
+ * @since 1.5.0
+ *
+ * @return array
+ */
+ public function get_debug_fields() {
+ return array(
+ 'search_console_property' => array(
+ 'label' => __( 'Search Console property', 'google-site-kit' ),
+ 'value' => $this->get_property_id(),
+ ),
+ );
+ }
+
+ /**
+ * Gets map of datapoint to definition data for each.
+ *
+ * @since 1.12.0
+ *
+ * @return array Map of datapoints to their definitions.
+ */
+ protected function get_datapoint_definitions() {
+ return array(
+ 'GET:matched-sites' => array( 'service' => 'searchconsole' ),
+ 'GET:searchanalytics' => array(
+ 'service' => 'searchconsole',
+ 'shareable' => Feature_Flags::enabled( 'dashboardSharing' ),
+ ),
+ 'POST:site' => array( 'service' => 'searchconsole' ),
+ 'GET:sites' => array( 'service' => 'searchconsole' ),
+ );
+ }
+
+ /**
+ * Creates a request object for the given datapoint.
+ *
+ * @since 1.0.0
+ *
+ * @param Data_Request $data Data request object.
+ * @return RequestInterface|callable|WP_Error Request object or callable on success, or WP_Error on failure.
+ *
+ * @throws Invalid_Datapoint_Exception Thrown if the datapoint does not exist.
+ */
+ protected function create_data_request( Data_Request $data ) {
+ switch ( "{$data->method}:{$data->datapoint}" ) {
+ case 'GET:matched-sites':
+ return $this->get_searchconsole_service()->sites->listSites();
+ case 'GET:searchanalytics':
+ $start_date = $data['startDate'];
+ $end_date = $data['endDate'];
+ if ( ! strtotime( $start_date ) || ! strtotime( $end_date ) ) {
+ list ( $start_date, $end_date ) = $this->parse_date_range(
+ $data['dateRange'] ?: 'last-28-days',
+ $data['compareDateRanges'] ? 2 : 1,
+ 1 // Offset.
+ );
+ }
+
+ $data_request = array(
+ 'start_date' => $start_date,
+ 'end_date' => $end_date,
+ );
+
+ if ( ! empty( $data['url'] ) ) {
+ $data_request['page'] = ( new Google_URL_Normalizer() )->normalize_url( $data['url'] );
+ }
+
+ if ( isset( $data['limit'] ) ) {
+ $data_request['row_limit'] = $data['limit'];
+ }
+
+ $dimensions = $this->parse_string_list( $data['dimensions'] );
+ if ( is_array( $dimensions ) && ! empty( $dimensions ) ) {
+ $data_request['dimensions'] = $dimensions;
+ }
+
+ return $this->create_search_analytics_data_request( $data_request );
+ case 'POST:site':
+ if ( empty( $data['siteURL'] ) ) {
+ return new WP_Error(
+ 'missing_required_param',
+ /* translators: %s: Missing parameter name */
+ sprintf( __( 'Request parameter is empty: %s.', 'google-site-kit' ), 'siteURL' ),
+ array( 'status' => 400 )
+ );
+ }
+
+ $url_normalizer = new Google_URL_Normalizer();
+
+ $site_url = $data['siteURL'];
+ if ( 0 === strpos( $site_url, 'sc-domain:' ) ) { // Domain property.
+ $site_url = 'sc-domain:' . $url_normalizer->normalize_url( str_replace( 'sc-domain:', '', $site_url, 1 ) );
+ } else { // URL property.
+ $site_url = $url_normalizer->normalize_url( trailingslashit( $site_url ) );
+ }
+
+ return function () use ( $site_url ) {
+ $restore_defer = $this->with_client_defer( false );
+
+ try {
+ // If the site does not exist in the account, an exception will be thrown.
+ $site = $this->get_searchconsole_service()->sites->get( $site_url );
+ } catch ( Google_Service_Exception $exception ) {
+ // If we got here, the site does not exist in the account, so we will add it.
+ /* @var ResponseInterface $response Response object. */
+ $response = $this->get_searchconsole_service()->sites->add( $site_url );
+
+ if ( 204 !== $response->getStatusCode() ) {
+ return new WP_Error(
+ 'failed_to_add_site_to_search_console',
+ __( 'Error adding the site to Search Console.', 'google-site-kit' ),
+ array( 'status' => 500 )
+ );
+ }
+
+ // Fetch the site again now that it exists.
+ $site = $this->get_searchconsole_service()->sites->get( $site_url );
+ }
+
+ $restore_defer();
+ $this->get_settings()->merge( array( 'propertyID' => $site_url ) );
+
+ return array(
+ 'siteURL' => $site->getSiteUrl(),
+ 'permissionLevel' => $site->getPermissionLevel(),
+ );
+ };
+ case 'GET:sites':
+ return $this->get_searchconsole_service()->sites->listSites();
+ }
+
+ return parent::create_data_request( $data );
+ }
+
+ /**
+ * Parses a response for the given datapoint.
+ *
+ * @since 1.0.0
+ *
+ * @param Data_Request $data Data request object.
+ * @param mixed $response Request response.
+ *
+ * @return mixed Parsed response data on success, or WP_Error on failure.
+ */
+ protected function parse_data_response( Data_Request $data, $response ) {
+ switch ( "{$data->method}:{$data->datapoint}" ) {
+ case 'GET:matched-sites':
+ /* @var Google_Service_SearchConsole_SitesListResponse $response Response object. */
+ $entries = $this->map_sites( (array) $response->getSiteEntry() );
+ $strict = filter_var( $data['strict'], FILTER_VALIDATE_BOOLEAN );
+
+ $current_url = $this->context->get_reference_site_url();
+ if ( ! $strict ) {
+ $current_url = untrailingslashit( $current_url );
+ $current_url = $this->strip_url_scheme( $current_url );
+ $current_url = $this->strip_domain_www( $current_url );
+ }
+
+ $sufficient_permission_levels = array(
+ 'siteRestrictedUser',
+ 'siteOwner',
+ 'siteFullUser',
+ );
+
+ return array_values(
+ array_filter(
+ $entries,
+ function ( array $entry ) use ( $current_url, $sufficient_permission_levels, $strict ) {
+ if ( 0 === strpos( $entry['siteURL'], 'sc-domain:' ) ) {
+ $match = $this->is_domain_match( substr( $entry['siteURL'], strlen( 'sc-domain:' ) ), $current_url );
+ } else {
+ $site_url = untrailingslashit( $entry['siteURL'] );
+ if ( ! $strict ) {
+ $site_url = $this->strip_url_scheme( $site_url );
+ $site_url = $this->strip_domain_www( $site_url );
+ }
+
+ $match = $this->is_url_match( $site_url, $current_url );
+ }
+ return $match && in_array( $entry['permissionLevel'], $sufficient_permission_levels, true );
+ }
+ )
+ );
+ case 'GET:searchanalytics':
+ return $response->getRows();
+ case 'GET:sites':
+ /* @var Google_Service_SearchConsole_SitesListResponse $response Response object. */
+ return $this->map_sites( (array) $response->getSiteEntry() );
+ }
+
+ return parent::parse_data_response( $data, $response );
+ }
+
+ /**
+ * Map Site model objects to associative arrays used for API responses.
+ *
+ * @param array $sites Site objects.
+ *
+ * @return array
+ */
+ private function map_sites( $sites ) {
+ return array_map(
+ function ( Google_Service_SearchConsole_WmxSite $site ) {
+ return array(
+ 'siteURL' => $site->getSiteUrl(),
+ 'permissionLevel' => $site->getPermissionLevel(),
+ );
+ },
+ $sites
+ );
+ }
+
+ /**
+ * Creates a new Search Console analytics request for the current site and given arguments.
+ *
+ * @since 1.0.0
+ *
+ * @param array $args {
+ * Optional. Additional arguments.
+ *
+ * @type array $dimensions List of request dimensions. Default empty array.
+ * @type string $start_date Start date in 'Y-m-d' format. Default empty string.
+ * @type string $end_date End date in 'Y-m-d' format. Default empty string.
+ * @type string $page Specific page URL to filter by. Default empty string.
+ * @type int $row_limit Limit of rows to return. Default 1000.
+ * }
+ * @return RequestInterface Search Console analytics request instance.
+ */
+ protected function create_search_analytics_data_request( array $args = array() ) {
+ $args = wp_parse_args(
+ $args,
+ array(
+ 'dimensions' => array(),
+ 'start_date' => '',
+ 'end_date' => '',
+ 'page' => '',
+ 'row_limit' => 1000,
+ )
+ );
+
+ $property_id = $this->get_property_id();
+
+ $request = new Google_Service_SearchConsole_SearchAnalyticsQueryRequest();
+ if ( ! empty( $args['dimensions'] ) ) {
+ $request->setDimensions( (array) $args['dimensions'] );
+ }
+ if ( ! empty( $args['start_date'] ) ) {
+ $request->setStartDate( $args['start_date'] );
+ }
+ if ( ! empty( $args['end_date'] ) ) {
+ $request->setEndDate( $args['end_date'] );
+ }
+
+ $request->setDataState( 'all' );
+
+ $filters = array();
+
+ // If domain property, limit data to URLs that are part of the current site.
+ if ( 0 === strpos( $property_id, 'sc-domain:' ) ) {
+ $scope_site_filter = new Google_Service_SearchConsole_ApiDimensionFilter();
+ $scope_site_filter->setDimension( 'page' );
+ $scope_site_filter->setOperator( 'contains' );
+ $scope_site_filter->setExpression( esc_url_raw( $this->context->get_reference_site_url() ) );
+ $filters[] = $scope_site_filter;
+ }
+
+ // If specific URL requested, limit data to that URL.
+ if ( ! empty( $args['page'] ) ) {
+ $single_url_filter = new Google_Service_SearchConsole_ApiDimensionFilter();
+ $single_url_filter->setDimension( 'page' );
+ $single_url_filter->setOperator( 'equals' );
+ $single_url_filter->setExpression( rawurldecode( esc_url_raw( $args['page'] ) ) );
+ $filters[] = $single_url_filter;
+ }
+
+ // If there are relevant filters, add them to the request.
+ if ( ! empty( $filters ) ) {
+ $filter_group = new Google_Service_SearchConsole_ApiDimensionFilterGroup();
+ $filter_group->setGroupType( 'and' );
+ $filter_group->setFilters( $filters );
+ $request->setDimensionFilterGroups( array( $filter_group ) );
+ }
+
+ if ( ! empty( $args['row_limit'] ) ) {
+ $request->setRowLimit( $args['row_limit'] );
+ }
+
+ return $this->get_searchconsole_service()
+ ->searchanalytics
+ ->query( $property_id, $request );
+ }
+
+ /**
+ * Gets the property ID.
+ *
+ * @since 1.3.0
+ *
+ * @return string Property ID URL if set, or empty string.
+ */
+ protected function get_property_id() {
+ $option = $this->get_settings()->get();
+
+ return $option['propertyID'];
+ }
+
+ /**
+ * Detects the property ID to use for this site.
+ *
+ * This method runs a Search Console API request. The determined ID should therefore be stored and accessed through
+ * {@see Search_Console::get_property_id()} instead.
+ *
+ * @since 1.3.0
+ *
+ * @return string Property ID, or empty string if none found.
+ */
+ protected function detect_property_id() {
+ $properties = $this->get_data( 'matched-sites', array( 'strict' => 'yes' ) );
+ if ( is_wp_error( $properties ) || ! $properties ) {
+ return '';
+ }
+
+ // If there are multiple, prefer URL property over domain property.
+ if ( count( $properties ) > 1 ) {
+ $url_properties = array_filter(
+ $properties,
+ function( $property ) {
+ return 0 !== strpos( $property['siteURL'], 'sc-domain:' );
+ }
+ );
+ if ( count( $url_properties ) > 0 ) {
+ $properties = $url_properties;
+ }
+ }
+
+ $property = array_shift( $properties );
+ return $property['siteURL'];
+ }
+
+ /**
+ * Sets up information about the module.
+ *
+ * @since 1.0.0
+ *
+ * @return array Associative array of module info.
+ */
+ protected function setup_info() {
+ return array(
+ 'slug' => 'search-console',
+ 'name' => _x( 'Search Console', 'Service name', 'google-site-kit' ),
+ 'description' => __( 'Google Search Console and helps you understand how Google views your site and optimize its performance in search results.', 'google-site-kit' ),
+ 'order' => 1,
+ 'homepage' => __( 'https://search.google.com/search-console', 'google-site-kit' ),
+ );
+ }
+
+ /**
+ * Get the configured SearchConsole service instance.
+ *
+ * @since 1.25.0
+ *
+ * @return Google_Service_SearchConsole The Search Console API service.
+ */
+ private function get_searchconsole_service() {
+ return $this->get_service( 'searchconsole' );
+ }
+
+ /**
+ * Sets up the Google services the module should use.
+ *
+ * This method is invoked once by {@see Module::get_service()} to lazily set up the services when one is requested
+ * for the first time.
+ *
+ * @since 1.0.0
+ * @since 1.2.0 Now requires Google_Site_Kit_Client instance.
+ *
+ * @param Google_Site_Kit_Client $client Google client instance.
+ * @return array Google services as $identifier => $service_instance pairs. Every $service_instance must be an
+ * instance of Google_Service.
+ */
+ protected function setup_services( Google_Site_Kit_Client $client ) {
+ return array(
+ 'searchconsole' => new Google_Service_SearchConsole( $client ),
+ );
+ }
+
+ /**
+ * Sets up the module's settings instance.
+ *
+ * @since 1.3.0
+ *
+ * @return Module_Settings
+ */
+ protected function setup_settings() {
+ return new Settings( $this->options );
+ }
+
+ /**
+ * Sets up the module's assets to register.
+ *
+ * @since 1.9.0
+ *
+ * @return Asset[] List of Asset objects.
+ */
+ protected function setup_assets() {
+ $base_url = $this->context->url( 'dist/assets/' );
+
+ return array(
+ new Script(
+ 'googlesitekit-modules-search-console',
+ array(
+ 'src' => $base_url . 'js/googlesitekit-modules-search-console.js',
+ 'dependencies' => array(
+ 'googlesitekit-vendor',
+ 'googlesitekit-api',
+ 'googlesitekit-data',
+ 'googlesitekit-modules',
+ 'googlesitekit-components',
+ ),
+ )
+ ),
+ );
+ }
+
+ /**
+ * Returns TRUE to indicate that this module should be always active.
+ *
+ * @since 1.49.0
+ *
+ * @return bool Returns `true` indicating that this module should be activated all the time.
+ */
+ public static function is_force_active() {
+ return true;
+ }
+
+ /**
+ * Checks if the current user has access to the current configured service entity.
+ *
+ * @since 1.70.0
+ *
+ * @return boolean|WP_Error
+ */
+ public function check_service_entity_access() {
+ $data_request = array(
+ 'start_date' => gmdate( 'Y-m-d' ),
+ 'end_date' => gmdate( 'Y-m-d' ),
+ 'row_limit' => 1,
+ );
+
+ try {
+ $this->create_search_analytics_data_request( $data_request );
+ } catch ( Exception $e ) {
+ if ( $e->getCode() === 403 ) {
+ return false;
+ }
+ return $this->exception_to_error( $e );
+ }
+
+ return true;
+ }
+
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Modules/Search_Console/Settings.php b/wp-content/plugins/google-site-kit/includes/Modules/Search_Console/Settings.php
new file mode 100644
index 000000000..8fa09b65d
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Modules/Search_Console/Settings.php
@@ -0,0 +1,77 @@
+register_owned_keys();
+
+ // Backwards compatibility with previous dedicated option.
+ add_filter(
+ 'default_option_' . self::OPTION,
+ function ( $default ) {
+ $default['propertyID'] = $this->options->get( 'googlesitekit_search_console_property' ) ?: '';
+
+ return $default;
+ }
+ );
+ }
+
+ /**
+ * Gets the default value.
+ *
+ * @since 1.3.0
+ *
+ * @return array
+ */
+ protected function get_default() {
+ return array(
+ 'propertyID' => '',
+ 'ownerID' => '',
+ );
+ }
+
+ /**
+ * Returns keys for owned settings.
+ *
+ * @since 1.31.0
+ *
+ * @return array An array of keys for owned settings.
+ */
+ public function get_owned_keys() {
+ return array(
+ 'propertyID',
+ );
+ }
+
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Modules/Site_Verification.php b/wp-content/plugins/google-site-kit/includes/Modules/Site_Verification.php
new file mode 100644
index 000000000..3338d1a49
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Modules/Site_Verification.php
@@ -0,0 +1,506 @@
+register_scopes_hook();
+
+ add_action(
+ 'googlesitekit_verify_site_ownership',
+ $this->get_method_proxy( 'handle_verification_token' ),
+ 10,
+ 2
+ );
+
+ $print_site_verification_meta = function() {
+ $this->print_site_verification_meta();
+ };
+
+ add_action( 'wp_head', $print_site_verification_meta );
+ add_action( 'login_head', $print_site_verification_meta );
+
+ add_action(
+ 'googlesitekit_authorize_user',
+ function() {
+ if ( ! $this->authentication->credentials()->using_proxy() ) {
+ return;
+ }
+ $this->user_options->set( Verification::OPTION, 'verified' );
+ }
+ );
+
+ add_action(
+ 'init',
+ function () {
+ $request_uri = $this->context->input()->filter( INPUT_SERVER, 'REQUEST_URI' );
+ $request_method = $this->context->input()->filter( INPUT_SERVER, 'REQUEST_METHOD' );
+
+ if (
+ ( $request_uri && $request_method )
+ && 'GET' === strtoupper( $request_method )
+ && preg_match( '/^\/google(?P[a-z0-9]+)\.html$/', $request_uri, $matches )
+ ) {
+ $this->serve_verification_file( $matches['token'] );
+ }
+ }
+ );
+
+ $clear_verification_meta_cache = function ( $meta_id, $object_id, $meta_key ) {
+ if ( $this->user_options->get_meta_key( Verification_Meta::OPTION ) === $meta_key ) {
+ ( new Transients( $this->context ) )->delete( self::TRANSIENT_VERIFICATION_META_TAGS );
+ }
+ };
+ add_action( 'added_user_meta', $clear_verification_meta_cache, 10, 3 );
+ add_action( 'updated_user_meta', $clear_verification_meta_cache, 10, 3 );
+ add_action( 'deleted_user_meta', $clear_verification_meta_cache, 10, 3 );
+ }
+
+ /**
+ * Gets required Google OAuth scopes for the module.
+ *
+ * @since 1.0.0
+ *
+ * @return array List of Google OAuth scopes.
+ */
+ public function get_scopes() {
+ return array(
+ 'https://www.googleapis.com/auth/siteverification',
+ );
+ }
+
+ /**
+ * Gets map of datapoint to definition data for each.
+ *
+ * @since 1.12.0
+ *
+ * @return array Map of datapoints to their definitions.
+ */
+ protected function get_datapoint_definitions() {
+ return array(
+ 'GET:verification' => array( 'service' => 'siteverification' ),
+ 'POST:verification' => array( 'service' => 'siteverification' ),
+ 'GET:verification-token' => array( 'service' => 'siteverification' ),
+ 'GET:verified-sites' => array( 'service' => 'siteverification' ),
+ );
+ }
+
+ /**
+ * Creates a request object for the given datapoint.
+ *
+ * @since 1.0.0
+ *
+ * @param Data_Request $data Data request object.
+ * @return RequestInterface|callable|WP_Error Request object or callable on success, or WP_Error on failure.
+ *
+ * @throws Invalid_Datapoint_Exception Thrown if the datapoint does not exist.
+ */
+ protected function create_data_request( Data_Request $data ) {
+ switch ( "{$data->method}:{$data->datapoint}" ) {
+ case 'GET:verification':
+ return $this->get_siteverification_service()->webResource->listWebResource();
+ case 'POST:verification':
+ if ( ! isset( $data['siteURL'] ) ) {
+ /* translators: %s: Missing parameter name */
+ return new WP_Error( 'missing_required_param', sprintf( __( 'Request parameter is empty: %s.', 'google-site-kit' ), 'siteURL' ), array( 'status' => 400 ) );
+ }
+
+ return function() use ( $data ) {
+ $current_user = wp_get_current_user();
+
+ if ( ! $current_user || ! $current_user->exists() ) {
+ return new WP_Error( 'unknown_user', __( 'Unknown user.', 'google-site-kit' ) );
+ }
+
+ $site = $this->get_data( 'verification', $data );
+
+ if ( is_wp_error( $site ) ) {
+ return $site;
+ }
+
+ $sites = array();
+
+ if ( ! empty( $site['verified'] ) ) {
+ $this->authentication->verification()->set( true );
+
+ return $site;
+ } else {
+ $token = $this->get_data( 'verification-token', $data );
+
+ if ( is_wp_error( $token ) ) {
+ return $token;
+ }
+
+ $this->authentication->verification_meta()->set( $token['token'] );
+
+ $restore_defer = $this->with_client_defer( false );
+ $errors = new WP_Error();
+
+ foreach ( $this->permute_site_url( $data['siteURL'] ) as $url ) {
+ $site = new Google_Service_SiteVerification_SiteVerificationWebResourceResourceSite();
+ $site->setType( 'SITE' );
+ $site->setIdentifier( $url );
+ $resource = new Google_Service_SiteVerification_SiteVerificationWebResourceResource();
+ $resource->setSite( $site );
+
+ try {
+ $sites[] = $this->get_siteverification_service()->webResource->insert( 'META', $resource );
+ } catch ( Google_Service_Exception $e ) {
+ $messages = wp_list_pluck( $e->getErrors(), 'message' );
+ $message = array_shift( $messages );
+
+ $errors->add( $e->getCode(), $message, array( 'url' => $url ) );
+ } catch ( Exception $e ) {
+ $errors->add( $e->getCode(), $e->getMessage(), array( 'url' => $url ) );
+ }
+ }
+
+ $restore_defer();
+
+ if ( empty( $sites ) ) {
+ return $errors;
+ }
+ }
+
+ $this->authentication->verification()->set( true );
+
+ try {
+ $verification = $this->get_siteverification_service()->webResource->get( $data['siteURL'] );
+ } catch ( Google_Service_Exception $e ) {
+ $verification = array_shift( $sites );
+ }
+
+ return array(
+ 'identifier' => $verification->getSite()->getIdentifier(),
+ 'type' => $verification->getSite()->getType(),
+ 'verified' => true,
+ );
+ };
+ case 'GET:verification-token':
+ $existing_token = $this->authentication->verification_meta()->get();
+
+ if ( ! empty( $existing_token ) ) {
+ return function() use ( $existing_token ) {
+ return array(
+ 'method' => 'META',
+ 'token' => $existing_token,
+ );
+ };
+ }
+
+ $current_url = ! empty( $data['siteURL'] ) ? $data['siteURL'] : $this->context->get_reference_site_url();
+ $site = new Google_Service_SiteVerification_SiteVerificationWebResourceGettokenRequestSite();
+ $site->setIdentifier( $current_url );
+ $site->setType( 'SITE' );
+ $request = new Google_Service_SiteVerification_SiteVerificationWebResourceGettokenRequest();
+ $request->setSite( $site );
+ $request->setVerificationMethod( 'META' );
+
+ return $this->get_siteverification_service()->webResource->getToken( $request );
+ case 'GET:verified-sites':
+ return $this->get_siteverification_service()->webResource->listWebResource();
+ }
+
+ return parent::create_data_request( $data );
+ }
+
+ /**
+ * Parses a response for the given datapoint.
+ *
+ * @since 1.0.0
+ *
+ * @param Data_Request $data Data request object.
+ * @param mixed $response Request response.
+ *
+ * @return mixed Parsed response data on success, or WP_Error on failure.
+ */
+ protected function parse_data_response( Data_Request $data, $response ) {
+ switch ( "{$data->method}:{$data->datapoint}" ) {
+ case 'GET:verification':
+ if ( $data['siteURL'] ) {
+ $current_url = $data['siteURL'];
+ } else {
+ $current_url = $this->context->get_reference_site_url();
+ }
+
+ $items = $response->getItems();
+ foreach ( $items as $item ) {
+ $site = $item->getSite();
+
+ $match = false;
+ if ( 'INET_DOMAIN' === $site->getType() ) {
+ $match = $this->is_domain_match( $site->getIdentifier(), $current_url );
+ } elseif ( 'SITE' === $site->getType() ) {
+ $match = $this->is_url_match( $site->getIdentifier(), $current_url );
+ }
+
+ if ( $match ) {
+ return array(
+ 'identifier' => $site->getIdentifier(),
+ 'type' => $site->getType(),
+ 'verified' => true,
+ );
+ }
+ }
+
+ return array(
+ 'identifier' => $current_url,
+ 'type' => 'SITE',
+ 'verified' => false,
+ );
+ case 'GET:verification-token':
+ if ( is_array( $response ) ) {
+ return $response;
+ }
+
+ return array(
+ 'method' => $response->getMethod(),
+ 'token' => $response->getToken(),
+ );
+ case 'GET:verified-sites':
+ $items = $response->getItems();
+ $data = array();
+
+ foreach ( $items as $item ) {
+ $site = $item->getSite();
+ $data[ $item->getId() ] = array(
+ 'identifier' => $site->getIdentifier(),
+ 'type' => $site->getType(),
+ );
+ }
+
+ return $data;
+ }
+
+ return parent::parse_data_response( $data, $response );
+ }
+
+ /**
+ * Sets up information about the module.
+ *
+ * @since 1.0.0
+ *
+ * @return array Associative array of module info.
+ */
+ protected function setup_info() {
+ return array(
+ 'slug' => 'site-verification',
+ 'name' => _x( 'Site Verification', 'Service name', 'google-site-kit' ),
+ 'description' => __( 'Google Site Verification allows you to manage ownership of your site.', 'google-site-kit' ),
+ 'order' => 0,
+ 'homepage' => __( 'https://www.google.com/webmasters/verification/home', 'google-site-kit' ),
+ 'internal' => true,
+ );
+ }
+
+ /**
+ * Get the configured siteverification service instance.
+ *
+ * @return Google_Service_SiteVerification The Site Verification API service.
+ */
+ private function get_siteverification_service() {
+ return $this->get_service( 'siteverification' );
+ }
+
+ /**
+ * Sets up the Google services the module should use.
+ *
+ * This method is invoked once by {@see Module::get_service()} to lazily set up the services when one is requested
+ * for the first time.
+ *
+ * @since 1.0.0
+ * @since 1.2.0 Now requires Google_Site_Kit_Client instance.
+ *
+ * @param Google_Site_Kit_Client $client Google client instance.
+ * @return array Google services as $identifier => $service_instance pairs. Every $service_instance must be an
+ * instance of Google_Service.
+ */
+ protected function setup_services( Google_Site_Kit_Client $client ) {
+ return array(
+ 'siteverification' => new Google_Service_SiteVerification( $client ),
+ );
+ }
+
+ /**
+ * Handles receiving a verification token for a user by the authentication proxy.
+ *
+ * @since 1.1.0
+ * @since 1.1.2 Runs on `admin_action_googlesitekit_proxy_setup` and no longer redirects directly.
+ * @since 1.48.0 Token and method are now passed as arguments.
+ * @since 1.49.0 No longer uses the `googlesitekit_proxy_setup_url_params` filter to set the `verify` and `verification_method` query params.
+ *
+ * @param string $token Verification token.
+ * @param string $method Verification method type.
+ */
+ private function handle_verification_token( $token, $method ) {
+ switch ( $method ) {
+ case self::VERIFICATION_TYPE_FILE:
+ $this->authentication->verification_file()->set( $token );
+ break;
+ case self::VERIFICATION_TYPE_META:
+ $this->authentication->verification_meta()->set( $token );
+ }
+ }
+
+ /**
+ * Prints site verification meta in wp_head().
+ *
+ * @since 1.1.0
+ */
+ private function print_site_verification_meta() {
+ // Get verification meta tags for all users.
+ $verification_tags = $this->get_all_verification_tags();
+ $allowed_html = array(
+ 'meta' => array(
+ 'name' => array(),
+ 'content' => array(),
+ ),
+ );
+
+ foreach ( $verification_tags as $verification_tag ) {
+ $verification_tag = html_entity_decode( $verification_tag );
+
+ if ( 0 !== strpos( $verification_tag, '';
+ }
+
+ echo wp_kses( $verification_tag, $allowed_html );
+ }
+ }
+
+ /**
+ * Gets all available verification tags for all users.
+ *
+ * This is a special method needed for printing all meta tags in the frontend.
+ *
+ * @since 1.4.0
+ *
+ * @return array List of verification meta tags.
+ */
+ private function get_all_verification_tags() {
+ global $wpdb;
+
+ $transients = new Transients( $this->context );
+ $meta_tags = $transients->get( self::TRANSIENT_VERIFICATION_META_TAGS );
+
+ if ( ! is_array( $meta_tags ) ) {
+ $meta_key = $this->user_options->get_meta_key( Verification_Meta::OPTION );
+ // phpcs:ignore WordPress.DB.DirectDatabaseQuery
+ $meta_tags = $wpdb->get_col(
+ $wpdb->prepare( "SELECT DISTINCT meta_value FROM {$wpdb->usermeta} WHERE meta_key = %s", $meta_key )
+ );
+ $transients->set( self::TRANSIENT_VERIFICATION_META_TAGS, $meta_tags );
+ }
+
+ return array_filter( $meta_tags );
+ }
+
+ /**
+ * Serves the verification file response.
+ *
+ * @param string $verification_token Token portion of verification.
+ *
+ * @since 1.1.0
+ */
+ private function serve_verification_file( $verification_token ) {
+ $user_ids = ( new \WP_User_Query(
+ array(
+ // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_key
+ 'meta_key' => $this->user_options->get_meta_key( Verification_File::OPTION ),
+ // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_value
+ 'meta_value' => $verification_token,
+ 'fields' => 'id',
+ 'number' => 1,
+ )
+ ) )->get_results();
+
+ $user_id = array_shift( $user_ids ) ?: 0;
+
+ if ( $user_id && user_can( $user_id, Permissions::SETUP ) ) {
+ printf( 'google-site-verification: google%s.html', esc_html( $verification_token ) );
+ ( new Exit_Handler() )->invoke();
+ }
+
+ // If the user does not have the necessary permissions then let the request pass through.
+ }
+
+
+ /**
+ * Returns TRUE to indicate that this module should be always active.
+ *
+ * @since 1.49.0
+ *
+ * @return bool Returns `true` indicating that this module should be activated all the time.
+ */
+ public static function is_force_active() {
+ return true;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Modules/Tag_Manager.php b/wp-content/plugins/google-site-kit/includes/Modules/Tag_Manager.php
new file mode 100644
index 000000000..0ced14732
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Modules/Tag_Manager.php
@@ -0,0 +1,659 @@
+ 'containerID',
+ self::USAGE_CONTEXT_AMP => 'ampContainerID',
+ );
+
+ /**
+ * Registers functionality through WordPress hooks.
+ *
+ * @since 1.0.0
+ */
+ public function register() {
+ $this->register_scopes_hook();
+
+ // Tag Manager tag placement logic.
+ add_action( 'template_redirect', $this->get_method_proxy( 'register_tag' ) );
+ // Filter the Analytics `canUseSnippet` value.
+ add_filter( 'googlesitekit_analytics_can_use_snippet', $this->get_method_proxy( 'can_analytics_use_snippet' ), 10, 2 );
+ // Filter whether certain users can be excluded from tracking.
+ add_action( 'googlesitekit_allow_tracking_disabled', $this->get_method_proxy( 'filter_analytics_allow_tracking_disabled' ) );
+ add_action( 'googlesitekit_analytics_tracking_opt_out', $this->get_method_proxy( 'analytics_tracking_opt_out' ) );
+ }
+
+ /**
+ * Gets required Google OAuth scopes for the module.
+ *
+ * @since 1.0.0
+ *
+ * @return array List of Google OAuth scopes.
+ */
+ public function get_scopes() {
+ return array(
+ 'https://www.googleapis.com/auth/tagmanager.readonly',
+ );
+ }
+
+ /**
+ * Checks whether the module is connected.
+ *
+ * A module being connected means that all steps required as part of its activation are completed.
+ *
+ * @since 1.0.0
+ *
+ * @return bool True if module is connected, false otherwise.
+ */
+ public function is_connected() {
+ $settings = $this->get_settings()->get();
+ $amp_mode = $this->context->get_amp_mode();
+
+ switch ( $amp_mode ) {
+ case Context::AMP_MODE_PRIMARY:
+ $container_ids = array( $settings['ampContainerID'] );
+ break;
+ case Context::AMP_MODE_SECONDARY:
+ $container_ids = array( $settings['containerID'], $settings['ampContainerID'] );
+ break;
+ default:
+ $container_ids = array( $settings['containerID'] );
+ }
+
+ $container_id_errors = array_filter(
+ $container_ids,
+ function( $container_id ) {
+ return ! $container_id;
+ }
+ );
+
+ if ( ! empty( $container_id_errors ) ) {
+ return false;
+ }
+
+ return parent::is_connected();
+ }
+
+ /**
+ * Cleans up when the module is deactivated.
+ *
+ * @since 1.0.0
+ */
+ public function on_deactivation() {
+ $this->get_settings()->delete();
+ }
+
+ /**
+ * Gets an array of debug field definitions.
+ *
+ * @since 1.5.0
+ *
+ * @return array
+ */
+ public function get_debug_fields() {
+ $settings = $this->get_settings()->get();
+
+ return array(
+ 'tagmanager_account_id' => array(
+ 'label' => __( 'Tag Manager account ID', 'google-site-kit' ),
+ 'value' => $settings['accountID'],
+ 'debug' => Debug_Data::redact_debug_value( $settings['accountID'] ),
+ ),
+ 'tagmanager_container_id' => array(
+ 'label' => __( 'Tag Manager container ID', 'google-site-kit' ),
+ 'value' => $settings['containerID'],
+ 'debug' => Debug_Data::redact_debug_value( $settings['containerID'], 7 ),
+ ),
+ 'tagmanager_amp_container_id' => array(
+ 'label' => __( 'Tag Manager AMP container ID', 'google-site-kit' ),
+ 'value' => $settings['ampContainerID'],
+ 'debug' => Debug_Data::redact_debug_value( $settings['ampContainerID'], 7 ),
+ ),
+ 'tagmanager_use_snippet' => array(
+ 'label' => __( 'Tag Manager snippet placed', 'google-site-kit' ),
+ 'value' => $settings['useSnippet'] ? __( 'Yes', 'google-site-kit' ) : __( 'No', 'google-site-kit' ),
+ 'debug' => $settings['useSnippet'] ? 'yes' : 'no',
+ ),
+ );
+ }
+
+ /**
+ * Sanitizes a string to be used for a container name.
+ *
+ * @since 1.0.4
+ *
+ * @param string $name String to sanitize.
+ *
+ * @return string
+ */
+ public static function sanitize_container_name( $name ) {
+ // Remove any leading or trailing whitespace.
+ $name = trim( $name );
+ // Must not start with an underscore.
+ $name = ltrim( $name, '_' );
+ // Decode entities for special characters so that they are stripped properly.
+ $name = wp_specialchars_decode( $name, ENT_QUOTES );
+ // Convert accents to basic characters to prevent them from being stripped.
+ $name = remove_accents( $name );
+ // Strip all non-simple characters.
+ $name = preg_replace( '/[^a-zA-Z0-9_., -]/', '', $name );
+ // Collapse multiple whitespaces.
+ $name = preg_replace( '/\s+/', ' ', $name );
+
+ return $name;
+ }
+
+ /**
+ * Gets map of datapoint to definition data for each.
+ *
+ * @since 1.9.0
+ *
+ * @return array Map of datapoints to their definitions.
+ */
+ protected function get_datapoint_definitions() {
+ return array(
+ 'GET:accounts' => array( 'service' => 'tagmanager' ),
+ 'GET:accounts-containers' => array( 'service' => 'tagmanager' ),
+ 'GET:containers' => array( 'service' => 'tagmanager' ),
+ 'POST:create-container' => array(
+ 'service' => 'tagmanager',
+ 'scopes' => array( 'https://www.googleapis.com/auth/tagmanager.edit.containers' ),
+ 'request_scopes_message' => __( 'Additional permissions are required to create a new Tag Manager container on your behalf.', 'google-site-kit' ),
+ ),
+ 'GET:live-container-version' => array( 'service' => 'tagmanager' ),
+ );
+ }
+
+ /**
+ * Creates a request object for the given datapoint.
+ *
+ * @since 1.0.0
+ *
+ * @param Data_Request $data Data request object.
+ * @return RequestInterface|callable|WP_Error Request object or callable on success, or WP_Error on failure.
+ *
+ * @throws Invalid_Datapoint_Exception Thrown if the datapoint does not exist.
+ */
+ protected function create_data_request( Data_Request $data ) {
+ switch ( "{$data->method}:{$data->datapoint}" ) {
+ // Intentional fallthrough.
+ case 'GET:accounts':
+ case 'GET:accounts-containers':
+ return $this->get_tagmanager_service()->accounts->listAccounts();
+ case 'GET:containers':
+ if ( ! isset( $data['accountID'] ) ) {
+ /* translators: %s: Missing parameter name */
+ return new WP_Error( 'missing_required_param', sprintf( __( 'Request parameter is empty: %s.', 'google-site-kit' ), 'accountID' ), array( 'status' => 400 ) );
+ }
+ return $this->get_tagmanager_service()->accounts_containers->listAccountsContainers( "accounts/{$data['accountID']}" );
+ case 'POST:create-container':
+ if ( ! isset( $data['accountID'] ) ) {
+ return new WP_Error(
+ 'missing_required_param',
+ /* translators: %s: Missing parameter name */
+ sprintf( __( 'Request parameter is empty: %s.', 'google-site-kit' ), 'accountID' ),
+ array( 'status' => 400 )
+ );
+ }
+
+ $usage_context = $data['usageContext'] ?: array( self::USAGE_CONTEXT_WEB, self::USAGE_CONTEXT_AMP );
+
+ if ( empty( $this->context_map[ $usage_context ] ) ) {
+ return new WP_Error(
+ 'invalid_param',
+ sprintf(
+ /* translators: 1: Invalid parameter name, 2: list of valid values */
+ __( 'Request parameter %1$s is not one of %2$s', 'google-site-kit' ),
+ 'usageContext',
+ implode( ', ', array_keys( $this->context_map ) )
+ ),
+ array( 'status' => 400 )
+ );
+ }
+
+ $account_id = $data['accountID'];
+
+ if ( $data['name'] ) {
+ $container_name = $data['name'];
+ } else {
+ // Use site name for container, fallback to domain of reference URL.
+ $container_name = get_bloginfo( 'name' ) ?: URL::parse( $this->context->get_reference_site_url(), PHP_URL_HOST );
+ // Prevent naming conflict (Tag Manager does not allow more than one with same name).
+ if ( self::USAGE_CONTEXT_AMP === $usage_context ) {
+ $container_name .= ' AMP';
+ }
+ }
+
+ $container = new Google_Service_TagManager_Container();
+ $container->setName( self::sanitize_container_name( $container_name ) );
+ $container->setUsageContext( (array) $usage_context );
+
+ return $this->get_tagmanager_service()->accounts_containers->create( "accounts/{$account_id}", $container );
+ case 'GET:live-container-version':
+ if ( ! isset( $data['accountID'] ) ) {
+ return new WP_Error(
+ 'missing_required_param',
+ /* translators: %s: Missing parameter name */
+ sprintf( __( 'Request parameter is empty: %s.', 'google-site-kit' ), 'accountID' ),
+ array( 'status' => 400 )
+ );
+ }
+ if ( ! isset( $data['internalContainerID'] ) ) {
+ return new WP_Error(
+ 'missing_required_param',
+ /* translators: %s: Missing parameter name */
+ sprintf( __( 'Request parameter is empty: %s.', 'google-site-kit' ), 'internalContainerID' ),
+ array( 'status' => 400 )
+ );
+ }
+
+ return $this->get_tagmanager_service()->accounts_containers_versions->live(
+ "accounts/{$data['accountID']}/containers/{$data['internalContainerID']}"
+ );
+ }
+
+ return parent::create_data_request( $data );
+ }
+
+ /**
+ * Creates GTM Container.
+ *
+ * @since 1.0.0
+ * @param string $account_id The account ID.
+ * @param string|array $usage_context The container usage context(s).
+ *
+ * @return string Container public ID.
+ * @throws Exception Throws an exception if raised during container creation.
+ */
+ protected function create_container( $account_id, $usage_context = self::USAGE_CONTEXT_WEB ) {
+ $restore_defer = $this->with_client_defer( false );
+
+ // Use site name for container, fallback to domain of reference URL.
+ $container_name = get_bloginfo( 'name' ) ?: URL::parse( $this->context->get_reference_site_url(), PHP_URL_HOST );
+ // Prevent naming conflict (Tag Manager does not allow more than one with same name).
+ if ( self::USAGE_CONTEXT_AMP === $usage_context ) {
+ $container_name .= ' AMP';
+ }
+ $container_name = self::sanitize_container_name( $container_name );
+
+ $container = new Google_Service_TagManager_Container();
+ $container->setName( $container_name );
+ $container->setUsageContext( (array) $usage_context );
+
+ try {
+ $new_container = $this->get_tagmanager_service()->accounts_containers->create( "accounts/{$account_id}", $container );
+ } catch ( Exception $exception ) {
+ $restore_defer();
+ throw $exception;
+ }
+
+ $restore_defer();
+
+ return $new_container->getPublicId();
+ }
+
+ /**
+ * Parses a response for the given datapoint.
+ *
+ * @since 1.0.0
+ *
+ * @param Data_Request $data Data request object.
+ * @param mixed $response Request response.
+ *
+ * @return mixed Parsed response data on success, or WP_Error on failure.
+ */
+ protected function parse_data_response( Data_Request $data, $response ) {
+ switch ( "{$data->method}:{$data->datapoint}" ) {
+ case 'GET:accounts':
+ /* @var Google_Service_TagManager_ListAccountsResponse $response List accounts response. */
+ return $response->getAccount();
+ case 'GET:accounts-containers':
+ /* @var Google_Service_TagManager_ListAccountsResponse $response List accounts response. */
+ $response = array(
+ // TODO: Parse this response to a regular array.
+ 'accounts' => $response->getAccount(),
+ 'containers' => array(),
+ );
+ if ( 0 === count( $response['accounts'] ) ) {
+ return $response;
+ }
+ if ( $data['accountID'] ) {
+ $account_id = $data['accountID'];
+ } else {
+ $account_id = $response['accounts'][0]->getAccountId();
+ }
+
+ $containers = $this->get_data(
+ 'containers',
+ array(
+ 'accountID' => $account_id,
+ 'usageContext' => $data['usageContext'] ?: self::USAGE_CONTEXT_WEB,
+ )
+ );
+
+ if ( is_wp_error( $containers ) ) {
+ return $response;
+ }
+
+ return array_merge( $response, compact( 'containers' ) );
+ case 'GET:containers':
+ /* @var Google_Service_TagManager_ListContainersResponse $response Response object. */
+ $usage_context = $data['usageContext'] ?: array( self::USAGE_CONTEXT_WEB, self::USAGE_CONTEXT_AMP );
+ /* @var Google_Service_TagManager_Container[] $containers Filtered containers. */
+ $containers = array_filter(
+ (array) $response->getContainer(),
+ function ( Google_Service_TagManager_Container $container ) use ( $usage_context ) {
+ return array_intersect( (array) $usage_context, $container->getUsageContext() );
+ }
+ );
+
+ return array_values( $containers );
+ }
+
+ return parent::parse_data_response( $data, $response );
+ }
+
+ /**
+ * Gets the configured TagManager service instance.
+ *
+ * @since 1.2.0
+ *
+ * @return Google_Service_TagManager instance.
+ * @throws Exception Thrown if the module did not correctly set up the service.
+ */
+ private function get_tagmanager_service() {
+ return $this->get_service( 'tagmanager' );
+ }
+
+ /**
+ * Sets up information about the module.
+ *
+ * @since 1.0.0
+ *
+ * @return array Associative array of module info.
+ */
+ protected function setup_info() {
+ return array(
+ 'slug' => self::MODULE_SLUG,
+ 'name' => _x( 'Tag Manager', 'Service name', 'google-site-kit' ),
+ 'description' => __( 'Tag Manager creates an easy to manage way to create tags on your site without updating code', 'google-site-kit' ),
+ 'order' => 6,
+ 'homepage' => __( 'https://tagmanager.google.com/', 'google-site-kit' ),
+ );
+ }
+
+ /**
+ * Sets up the Google services the module should use.
+ *
+ * This method is invoked once by {@see Module::get_service()} to lazily set up the services when one is requested
+ * for the first time.
+ *
+ * @since 1.0.0
+ * @since 1.2.0 Now requires Google_Site_Kit_Client instance.
+ *
+ * @param Google_Site_Kit_Client $client Google client instance.
+ * @return array Google services as $identifier => $service_instance pairs. Every $service_instance must be an
+ * instance of Google_Service.
+ */
+ protected function setup_services( Google_Site_Kit_Client $client ) {
+ return array(
+ 'tagmanager' => new Google_Service_TagManager( $client ),
+ );
+ }
+
+ /**
+ * Sets up the module's settings instance.
+ *
+ * @since 1.2.0
+ *
+ * @return Module_Settings
+ */
+ protected function setup_settings() {
+ return new Settings( $this->options );
+ }
+
+ /**
+ * Sets up the module's assets to register.
+ *
+ * @since 1.11.0
+ *
+ * @return Asset[] List of Asset objects.
+ */
+ protected function setup_assets() {
+ $base_url = $this->context->url( 'dist/assets/' );
+
+ $dependencies = array(
+ 'googlesitekit-api',
+ 'googlesitekit-data',
+ 'googlesitekit-datastore-site',
+ 'googlesitekit-modules',
+ 'googlesitekit-vendor',
+ 'googlesitekit-components',
+ );
+
+ $analytics_exists = apply_filters( 'googlesitekit_module_exists', false, 'analytics' );
+
+ // Note that the Tag Manager bundle will make use of the Analytics bundle if it's available,
+ // but can also function without it, hence the conditional include of the Analytics bundle here.
+ if ( $analytics_exists ) {
+ $dependencies[] = 'googlesitekit-modules-analytics';
+ }
+
+ return array(
+ new Script(
+ 'googlesitekit-modules-tagmanager',
+ array(
+ 'src' => $base_url . 'js/googlesitekit-modules-tagmanager.js',
+ 'dependencies' => $dependencies,
+ )
+ ),
+ );
+ }
+
+ /**
+ * Registers the Tag Manager tag.
+ *
+ * @since 1.24.0
+ */
+ private function register_tag() {
+ $is_amp = $this->context->is_amp();
+ $module_settings = $this->get_settings();
+ $settings = $module_settings->get();
+
+ $tag = $is_amp
+ ? new AMP_Tag( $settings['ampContainerID'], self::MODULE_SLUG )
+ : new Web_Tag( $settings['containerID'], self::MODULE_SLUG );
+
+ if ( ! $tag->is_tag_blocked() ) {
+ $tag->use_guard( new Tag_Verify_Guard( $this->context->input() ) );
+ $tag->use_guard( new Tag_Guard( $module_settings, $is_amp ) );
+ $tag->use_guard( new Tag_Environment_Type_Guard() );
+
+ if ( $tag->can_register() ) {
+ $tag->register();
+ }
+ }
+ }
+
+ /**
+ * Filters whether or not the Analytics module's snippet should be controlled by its `useSnippet` setting.
+ *
+ * @since 1.28.0
+ * @since 1.75.0 Now requires current UA property ID as second parameter.
+ *
+ * @param boolean $original_value Original value of useSnippet setting.
+ * @param string $ua_property_id Current UA property.
+ * @return boolean Filtered value.
+ */
+ private function can_analytics_use_snippet( $original_value, $ua_property_id ) {
+ $settings = $this->get_settings()->get();
+
+ if ( ! empty( $settings['gaPropertyID'] ) && $settings['useSnippet'] && $settings['gaPropertyID'] === $ua_property_id ) {
+ return false;
+ }
+
+ return $original_value;
+ }
+
+ /**
+ * Handles Analytics measurement opt-out for the configured Analytics property in the container(s).
+ *
+ * @since 1.41.0
+ *
+ * @param string $property_id Analytics property_id.
+ */
+ private function analytics_tracking_opt_out( $property_id ) {
+ $settings = $this->get_settings()->get();
+ $ga_property_id = $settings['gaPropertyID'];
+ if ( ! $ga_property_id || $ga_property_id === $property_id ) {
+ return;
+ }
+
+ BC_Functions::wp_print_inline_script_tag(
+ sprintf(
+ 'window["ga-disable-%s"] = true;',
+ esc_attr( $ga_property_id )
+ )
+ );
+
+ }
+
+ /**
+ * Filters whether or not the option to exclude certain users from tracking should be displayed.
+ *
+ * If Site Kit does not place the Analytics snippet (neither via Analytics nor via Tag Manager),
+ * the option to exclude certain users from tracking should not be displayed.
+ *
+ * @since 1.36.0
+ *
+ * @param boolean $allowed Whether to allow tracking exclusion.
+ * @return boolean Filtered value.
+ */
+ private function filter_analytics_allow_tracking_disabled( $allowed ) {
+ if ( $allowed ) {
+ return true;
+ }
+
+ $settings = $this->get_settings()->get();
+
+ if ( ! empty( $settings['gaPropertyID'] ) && $settings['useSnippet'] ) {
+ return true;
+ }
+
+ return $allowed;
+ }
+
+ /**
+ * Checks if the current user has access to the current configured service entity.
+ *
+ * @since 1.77.0
+ *
+ * @return boolean|WP_Error
+ */
+ public function check_service_entity_access() {
+ $is_amp_mode = in_array( $this->context->get_amp_mode(), array( Context::AMP_MODE_PRIMARY, Context::AMP_MODE_SECONDARY ), true );
+
+ $settings = $this->get_settings()->get();
+ $account_id = $settings['accountID'];
+
+ $configured_containers = $is_amp_mode ? array( $settings['containerID'], $settings['ampContainerID'] ) : array( $settings['containerID'] );
+
+ try {
+ $containers = $this->get_tagmanager_service()->accounts_containers->listAccountsContainers( "accounts/{$account_id}" );
+ } catch ( Exception $e ) {
+ if ( $e->getCode() === 403 ) {
+ return false;
+ }
+ return $this->exception_to_error( $e );
+ }
+
+ $all_containers = array_map(
+ function( $container ) {
+ return $container->getPublicId();
+ },
+ $containers->getContainer()
+ );
+
+ return empty( array_diff( $configured_containers, $all_containers ) );
+ }
+
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Modules/Tag_Manager/AMP_Tag.php b/wp-content/plugins/google-site-kit/includes/Modules/Tag_Manager/AMP_Tag.php
new file mode 100644
index 000000000..4145f6864
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Modules/Tag_Manager/AMP_Tag.php
@@ -0,0 +1,78 @@
+get_method_proxy_once( 'render' );
+
+ // Which actions are run depends on the version of the AMP Plugin
+ // (https://amp-wp.org/) available. Version >=1.3 exposes a
+ // new, `amp_print_analytics` action.
+ // For all AMP modes, AMP plugin version >=1.3.
+ add_action( 'amp_print_analytics', $render );
+ // For AMP Standard and Transitional, AMP plugin version <1.3.
+ add_action( 'wp_footer', $render, 20 );
+ // For AMP Reader, AMP plugin version <1.3.
+ add_action( 'amp_post_template_footer', $render, 20 );
+ // For Web Stories plugin.
+ add_action( 'web_stories_print_analytics', $render );
+
+ // Load amp-analytics component for AMP Reader.
+ $this->enqueue_amp_reader_component_script( 'amp-analytics', 'https://cdn.ampproject.org/v0/amp-analytics-0.1.js' );
+
+ $this->do_init_tag_action();
+ }
+
+ /**
+ * Outputs Tag Manager tag.
+ *
+ * @since 1.24.0
+ */
+ protected function render() {
+ // Add the optoutElementId for compatibility with our Analytics opt-out mechanism.
+ // This configuration object will be merged with the configuration object returned
+ // by the `config` attribute URL.
+ $gtm_amp_opt = array(
+ 'optoutElementId' => '__gaOptOutExtension',
+ );
+
+ printf( "\n\n", esc_html__( 'Google Tag Manager AMP snippet added by Site Kit', 'google-site-kit' ) );
+
+ printf(
+ '',
+ esc_url( 'https://www.googletagmanager.com/amp.json?id=' . rawurlencode( $this->tag_id ) ), // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
+ $this->get_tag_blocked_on_consent_attribute(), // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
+ wp_json_encode( $gtm_amp_opt )
+ );
+
+ printf( "\n\n", esc_html__( 'End Google Tag Manager AMP snippet added by Site Kit', 'google-site-kit' ) );
+ }
+
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Modules/Tag_Manager/Settings.php b/wp-content/plugins/google-site-kit/includes/Modules/Tag_Manager/Settings.php
new file mode 100644
index 000000000..7ddeeacc3
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Modules/Tag_Manager/Settings.php
@@ -0,0 +1,104 @@
+register_legacy_keys_migration(
+ array(
+ 'account_id' => 'accountID',
+ 'accountId' => 'accountID',
+ 'container_id' => 'containerID',
+ 'containerId' => 'containerID',
+ )
+ );
+
+ $this->register_owned_keys();
+ }
+
+ /**
+ * Returns keys for owned settings.
+ *
+ * @since 1.16.0
+ *
+ * @return array An array of keys for owned settings.
+ */
+ public function get_owned_keys() {
+ return array(
+ 'accountID',
+ 'ampContainerID',
+ 'containerID',
+ 'internalAMPContainerID',
+ 'internalContainerID',
+ );
+ }
+
+ /**
+ * Gets the default value.
+ *
+ * @since 1.2.0
+ *
+ * @return array
+ */
+ protected function get_default() {
+ return array(
+ 'ownerID' => 0,
+ 'accountID' => '',
+ 'ampContainerID' => '',
+ 'containerID' => '',
+ 'internalContainerID' => '',
+ 'internalAMPContainerID' => '',
+ 'useSnippet' => true,
+ 'gaPropertyID' => '',
+ );
+ }
+
+ /**
+ * Gets the callback for sanitizing the setting's value before saving.
+ *
+ * @since 1.6.0
+ *
+ * @return callable|null
+ */
+ protected function get_sanitize_callback() {
+ return function( $option ) {
+ if ( is_array( $option ) ) {
+ if ( isset( $option['useSnippet'] ) ) {
+ $option['useSnippet'] = (bool) $option['useSnippet'];
+ }
+ }
+ return $option;
+ };
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Modules/Tag_Manager/Tag_Guard.php b/wp-content/plugins/google-site-kit/includes/Modules/Tag_Manager/Tag_Guard.php
new file mode 100644
index 000000000..3dc477478
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Modules/Tag_Manager/Tag_Guard.php
@@ -0,0 +1,59 @@
+is_amp = $is_amp;
+ }
+
+ /**
+ * Determines whether the guarded tag can be activated or not.
+ *
+ * @since 1.24.0
+ *
+ * @return bool|WP_Error TRUE if guarded tag can be activated, otherwise FALSE or an error.
+ */
+ public function can_activate() {
+ $settings = $this->settings->get();
+ $container_id = $this->is_amp ? $settings['ampContainerID'] : $settings['containerID'];
+ return ! empty( $settings['useSnippet'] ) && ! empty( $container_id );
+ }
+
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Modules/Tag_Manager/Web_Tag.php b/wp-content/plugins/google-site-kit/includes/Modules/Tag_Manager/Web_Tag.php
new file mode 100644
index 000000000..5856c5e6e
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Modules/Tag_Manager/Web_Tag.php
@@ -0,0 +1,104 @@
+get_method_proxy_once( 'render_no_js' );
+
+ add_action( 'wp_head', $this->get_method_proxy( 'render' ) );
+ // For non-AMP (if `wp_body_open` supported).
+ add_action( 'wp_body_open', $render_no_js, -9999 );
+ // For non-AMP (as fallback).
+ add_action( 'wp_footer', $render_no_js );
+
+ add_filter(
+ 'wp_resource_hints',
+ $this->get_dns_prefetch_hints_callback( '//www.googletagmanager.com' ),
+ 10,
+ 2
+ );
+
+ $this->do_init_tag_action();
+ }
+
+ /**
+ * Outputs Tag Manager script.
+ *
+ * @since 1.24.0
+ */
+ protected function render() {
+
+ $tag_manager_inline_script = sprintf(
+ "
+ ( function( w, d, s, l, i ) {
+ w[l] = w[l] || [];
+ w[l].push( {'gtm.start': new Date().getTime(), event: 'gtm.js'} );
+ var f = d.getElementsByTagName( s )[0],
+ j = d.createElement( s ), dl = l != 'dataLayer' ? '&l=' + l : '';
+ j.async = true;
+ j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl;
+ f.parentNode.insertBefore( j, f );
+ } )( window, document, 'script', 'dataLayer', '%s' );
+ ",
+ esc_js( $this->tag_id )
+ );
+
+ $tag_manager_consent_attribute = $this->get_tag_blocked_on_consent_attribute_array();
+
+ printf( "\n\n", esc_html__( 'Google Tag Manager snippet added by Site Kit', 'google-site-kit' ) );
+ BC_Functions::wp_print_inline_script_tag( $tag_manager_inline_script, $tag_manager_consent_attribute );
+ printf( "\n\n", esc_html__( 'End Google Tag Manager snippet added by Site Kit', 'google-site-kit' ) );
+ }
+
+ /**
+ * Outputs Tag Manager iframe for when the browser has JavaScript disabled.
+ *
+ * @since 1.24.0
+ */
+ private function render_no_js() {
+ // Consent-based blocking requires JS to be enabled so we need to bail here if present.
+ if ( $this->get_tag_blocked_on_consent_attribute() ) {
+ return;
+ }
+
+ $iframe_src = 'https://www.googletagmanager.com/ns.html?id=' . rawurlencode( $this->tag_id );
+
+ ?>
+
+
+
+ transients = new Transients( $this->context );
+ }
+
+ /**
+ * Registers functionality through WordPress hooks.
+ *
+ * @since 1.78.0
+ */
+ public function register() {
+ $this->register_scopes_hook();
+
+ add_action(
+ 'googlesitekit_pre_save_settings_' . self::MODULE_SLUG,
+ function() {
+ $this->pre_update_is_connected = $this->is_connected();
+ }
+ );
+
+ add_action(
+ 'googlesitekit_save_settings_' . self::MODULE_SLUG,
+ function() {
+ if ( ! $this->pre_update_is_connected && $this->is_connected() ) {
+ $this->transients->set( self::TRANSIENT_SETUP_TIMER, time(), WEEK_IN_SECONDS );
+ }
+ }
+ );
+
+ if ( ! $this->is_connected() ) {
+ return;
+ }
+
+ add_action( 'template_redirect', $this->get_method_proxy( 'register_tag' ) );
+
+ add_action(
+ 'widgets_init',
+ function() {
+ register_widget( Supporter_Wall_Widget::class );
+ }
+ );
+
+ add_action(
+ 'admin_init',
+ function() {
+ if (
+ ! empty( $_GET['legacy-widget-preview']['idBase'] ) && // phpcs:ignore WordPress.Security.NonceVerification.Recommended
+ Supporter_Wall_Widget::WIDGET_ID !== $_GET['legacy-widget-preview']['idBase'] // phpcs:ignore WordPress.Security.NonceVerification.Recommended
+ ) {
+ $this->register_tag();
+ }
+ }
+ );
+
+ add_filter(
+ 'googlesitekit_apifetch_preload_paths',
+ function ( $paths ) {
+ return array_merge(
+ $paths,
+ array(
+ '/' . REST_Routes::REST_ROOT . '/modules/thank-with-google/data/supporter-wall-prompt',
+ )
+ );
+ }
+ );
+
+ add_filter(
+ 'rest_pre_dispatch',
+ function( $result, $server, $request ) {
+ $needle = sprintf( 'widget-types/%s/render', Supporter_Wall_Widget::WIDGET_ID );
+ if ( stripos( $request->get_route(), $needle ) > 0 ) {
+ $this->register_tag();
+ }
+ return $result;
+ },
+ 10,
+ 3
+ );
+ }
+
+ /**
+ * Checks whether the module is connected.
+ *
+ * A module being connected means that all steps required as part of its activation are completed.
+ *
+ * @since 1.78.0
+ *
+ * @return bool True if module is connected, false otherwise.
+ */
+ public function is_connected() {
+ $settings = $this->get_settings()->get();
+
+ if ( ! $settings ) {
+ return false;
+ }
+
+ if ( ! $settings['publicationID'] ) {
+ return false;
+ }
+
+ if ( ! $settings['colorTheme'] ) {
+ return false;
+ }
+
+ if ( ! $settings['ctaPlacement'] ) {
+ return false;
+ }
+
+ if ( ! $settings['ctaPostTypes'] ) {
+ return false;
+ }
+
+ return parent::is_connected();
+ }
+
+ /**
+ * Cleans up when the module is deactivated.
+ *
+ * @since 1.78.0
+ */
+ public function on_deactivation() {
+ $this->get_settings()->delete();
+ }
+
+ /**
+ * Gets required Google OAuth scopes for the module.
+ *
+ * @since 1.81.0
+ *
+ * @return array List of Google OAuth scopes.
+ */
+ public function get_scopes() {
+ return array(
+ 'https://www.googleapis.com/auth/subscribewithgoogle.publications.readonly',
+ );
+ }
+
+ /**
+ * Sets up information about the module.
+ *
+ * @since 1.78.0
+ *
+ * @return array Associative array of module info.
+ */
+ protected function setup_info() {
+ return array(
+ 'slug' => 'thank-with-google',
+ 'name' => _x( 'Thank with Google', 'Service name', 'google-site-kit' ),
+ 'description' => __( 'Let your supporters show appreciation of your work through virtual stickers and personal messages', 'google-site-kit' ),
+ 'order' => 7,
+ 'homepage' => __( 'https://publishercenter.google.com/', 'google-site-kit' ),
+ );
+ }
+
+ /**
+ * Sets up the module's settings instance.
+ *
+ * @since 1.78.0
+ *
+ * @return Module_Settings
+ */
+ protected function setup_settings() {
+ return new Settings( $this->options );
+ }
+
+ /**
+ * Sets up the module's assets to register.
+ *
+ * @since 1.78.0
+ *
+ * @return Asset[] List of Asset objects.
+ */
+ protected function setup_assets() {
+ $base_url = $this->context->url( 'dist/assets/' );
+
+ return array(
+ new Script(
+ 'googlesitekit-modules-thank-with-google',
+ array(
+ 'src' => $base_url . 'js/googlesitekit-modules-thank-with-google.js',
+ 'dependencies' => array(
+ 'googlesitekit-api',
+ 'googlesitekit-data',
+ 'googlesitekit-datastore-site',
+ 'googlesitekit-modules',
+ 'googlesitekit-vendor',
+ 'googlesitekit-components',
+ ),
+ )
+ ),
+ );
+ }
+
+ /**
+ * Gets the supporter wall sidebars.
+ *
+ * @since 1.85.0
+ *
+ * @return array list of supporter wall sidebars, otherwise an empty list.
+ */
+ protected function get_supporter_wall_sidebars() {
+ $sidebars = array();
+ $all_sidebars = wp_get_sidebars_widgets();
+ $block_widgets = get_option( 'widget_block' );
+
+ $pattern = sprintf( '/^%s[0-9]+$/i', preg_quote( Supporter_Wall_Widget::WIDGET_ID . '-', '/' ) );
+ $substr = sprintf( '"idBase":"%s"', Supporter_Wall_Widget::WIDGET_ID );
+
+ $actual_sidebars_count = 0;
+ foreach ( $all_sidebars as $sidebar_id => $widgets ) {
+ // Skip the inactive widgets sidebar because it is not an actual sidebar.
+ if ( 'wp_inactive_widgets' === $sidebar_id ) {
+ continue;
+ }
+
+ $actual_sidebars_count++;
+
+ $sidebar = BC_Functions::wp_get_sidebar( $sidebar_id );
+ foreach ( $widgets as $widget ) {
+ $block_match = array();
+ if ( preg_match( $pattern, $widget ) ) {
+ $sidebars[ $sidebar_id ] = $sidebar['name'];
+ break;
+ } elseif (
+ preg_match( '/block-(\d+)/', $widget, $block_match ) &&
+ stripos( $block_widgets[ $block_match[1] ]['content'], $substr ) > 0
+ ) {
+ $sidebars[ $sidebar_id ] = ucfirst( $sidebar['name'] );
+ break;
+ }
+ }
+ }
+
+ if (
+ // Only show the "All sidebars" text if there is more
+ // than one sidebar.
+ $actual_sidebars_count > 1 &&
+ count( $sidebars ) === $actual_sidebars_count
+ ) {
+ return array( __( 'All sidebars', 'google-site-kit' ) );
+ }
+
+ return array_values( $sidebars );
+
+ }
+
+ /**
+ * Gets map of datapoint to definition data for each.
+ *
+ * @since 1.79.0
+ * @return array Map of datapoints to their definitions.
+ */
+ protected function get_datapoint_definitions() {
+ return array(
+ 'GET:publications' => array( 'service' => 'subscribewithgoogle' ),
+ 'GET:supporter-wall-sidebars' => array( 'service' => '' ),
+ 'GET:supporter-wall-prompt' => array( 'service' => '' ),
+ );
+ }
+
+ /**
+ * Creates a request object for the given datapoint.
+ *
+ * @since 1.79.0
+ *
+ * @param Data_Request $data Data request object.
+ * @return RequestInterface|callable|WP_Error Request object or callable on success, or WP_Error on failure.
+ *
+ * @throws Invalid_Datapoint_Exception Thrown if the datapoint does not exist.
+ */
+ protected function create_data_request( Data_Request $data ) {
+ switch ( "{$data->method}:{$data->datapoint}" ) {
+ case 'GET:publications':
+ $service = $this->get_service( 'subscribewithgoogle' );
+ /* @var $service Google_Service_SubscribewithGoogle phpcs:ignore Squiz.PHP.CommentedOutCode.Found */
+
+ $sc_settings = $this->options->get( Search_Console_Settings::OPTION );
+ $sc_property_id = $sc_settings['propertyID'];
+ $raw_url = str_replace(
+ array( 'sc-domain:', 'https://', 'http://', 'www.' ),
+ '',
+ $sc_property_id
+ );
+
+ if ( 0 === strpos( $sc_property_id, 'sc-domain:' ) ) { // Domain property.
+ $filter = join(
+ ' OR ',
+ array_map(
+ function ( $host ) {
+ return sprintf( 'domain = "%s"', $host );
+ },
+ $this->permute_site_hosts( $raw_url )
+ )
+ );
+ } else { // URL property.
+ $filter = join(
+ ' OR ',
+ array_map(
+ function ( $host ) {
+ return sprintf( 'site_url = "%s"', $host );
+ },
+ $this->permute_site_url( $raw_url )
+ )
+ );
+ }
+
+ return $service->publications->listPublications(
+ array( 'filter' => $filter )
+ );
+ case 'GET:supporter-wall-sidebars':
+ return function() {
+ return $this->get_supporter_wall_sidebars();
+ };
+ case 'GET:supporter-wall-prompt':
+ return function() {
+ $supporter_wall_sidebars = $this->get_supporter_wall_sidebars();
+ $setup_transient = $this->transients->get( self::TRANSIENT_SETUP_TIMER );
+ if ( empty( $supporter_wall_sidebars ) && ! $setup_transient ) {
+ return array( 'supporterWallPrompt' => true );
+ }
+ return array( 'supporterWallPrompt' => false );
+ };
+ }
+
+ return parent::create_data_request( $data );
+ }
+
+ /**
+ * Parses a response for the given datapoint.
+ *
+ * @since 1.81.0
+ *
+ * @param Data_Request $data Data request object.
+ * @param mixed $response Request response.
+ * @return mixed Parsed response data on success, or WP_Error on failure.
+ */
+ protected function parse_data_response( Data_Request $data, $response ) {
+ switch ( "{$data->method}:{$data->datapoint}" ) {
+ case 'GET:publications':
+ /* @var $response Google_Service_SubscribewithGoogle_ListPublicationsResponse phpcs:ignore Squiz.PHP.CommentedOutCode.Found */
+ $publications = array_filter(
+ (array) $response->getPublications(),
+ function ( Google_Service_SubscribewithGoogle_Publication $publication ) {
+ // Require only TwG-enabled publications.
+ if ( empty( $publication['paymentOptions']['thankStickers'] ) ) {
+ return false;
+ }
+ // If onboarding isn't completed, other criteria won't be available.
+ if ( 'ONBOARDING_COMPLETE' !== $publication->getOnboardingState() ) {
+ return true;
+ }
+
+ // This is left as array access as it is not guaranteed to be set.
+ return ! empty( $publication['publicationPredicates']['businessPredicates']['supportsSiteKit'] );
+ }
+ );
+ return array_values( $publications );
+ }
+
+ return parent::parse_data_response( $data, $response );
+ }
+
+ /**
+ * Sets up the Google services the module should use.
+ *
+ * This method is invoked once by {@see Module::get_service()} to lazily set up the services when one is requested
+ * for the first time.
+ *
+ * @since 1.81.0
+ *
+ * @param Google_Site_Kit_Client $client Google client instance.
+ * @return array Google services as $identifier => $service_instance pairs. Every $service_instance must be an
+ * instance of Google_Service.
+ */
+ protected function setup_services( Google_Site_Kit_Client $client ) {
+ return array(
+ 'subscribewithgoogle' => new Google_Service_SubscribewithGoogle( $client ),
+ );
+ }
+
+ /**
+ * Registers the Thank with Google tag.
+ *
+ * @since 1.80.0
+ */
+ private function register_tag() {
+ if ( $this->context->is_amp() ) {
+ return;
+ }
+
+ $settings = $this->get_settings()->get();
+
+ $tag = new Web_Tag( $settings['publicationID'], self::MODULE_SLUG );
+ if ( $tag->is_tag_blocked() ) {
+ return;
+ }
+
+ $tag->use_guard( new Tag_Verify_Guard( $this->context->input() ) );
+ $tag->use_guard( new Tag_Environment_Type_Guard() );
+
+ if ( $tag->can_register() ) {
+ $tag->set_cta_placement( $settings['ctaPlacement'] );
+ $tag->set_cta_post_types( $settings['ctaPostTypes'] );
+ $tag->set_color_theme( $settings['colorTheme'] );
+
+ $tag->register();
+ }
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Modules/Thank_With_Google/Settings.php b/wp-content/plugins/google-site-kit/includes/Modules/Thank_With_Google/Settings.php
new file mode 100644
index 000000000..d5968b9c6
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Modules/Thank_With_Google/Settings.php
@@ -0,0 +1,187 @@
+register_owned_keys();
+ }
+
+ /**
+ * Returns keys for owned settings.
+ *
+ * @since 1.78.0
+ *
+ * @return array An array of keys for owned settings.
+ */
+ public function get_owned_keys() {
+ return array(
+ 'publicationID',
+ );
+ }
+
+ /**
+ * Gets the default value.
+ *
+ * @since 1.78.0
+ *
+ * @return array
+ */
+ protected function get_default() {
+ return array(
+ 'ownerID' => '',
+ 'publicationID' => '',
+ 'colorTheme' => '',
+ 'ctaPlacement' => '',
+ 'ctaPostTypes' => array( 'post' ),
+ );
+ }
+
+ /**
+ * Gets the setting value.
+ *
+ * @since 1.80.0
+ *
+ * @return array
+ */
+ public function get() {
+ $option = parent::get();
+
+ if ( is_array( $option ) ) {
+ if ( isset( $option['ctaPostTypes'] ) ) {
+ $option['ctaPostTypes'] = $this->sanitize_cta_post_types( $option['ctaPostTypes'] );
+ }
+ }
+
+ return $option;
+ }
+
+ /**
+ * Gets the callback for sanitizing the setting's value before saving.
+ *
+ * @since 1.80.0
+ *
+ * @return callable|null
+ */
+ protected function get_sanitize_callback() {
+ return function( $option ) {
+ if ( is_array( $option ) ) {
+ if ( isset( $option['colorTheme'] ) ) {
+ $option['colorTheme'] = $this->sanitize_color_theme( $option['colorTheme'] );
+ }
+ if ( isset( $option['ctaPlacement'] ) ) {
+ $option['ctaPlacement'] = $this->sanitize_cta_placement( $option['ctaPlacement'] );
+ }
+ if ( isset( $option['ctaPostTypes'] ) ) {
+ $option['ctaPostTypes'] = $this->sanitize_cta_post_types( $option['ctaPostTypes'] );
+ }
+ }
+ return $option;
+ };
+ }
+
+ /**
+ * Sanitizes the value of color theme.
+ *
+ * @since 1.80.0
+ *
+ * @param string $color_theme The value to sanitize.
+ * @return string The sanitized value.
+ */
+ private function sanitize_color_theme( $color_theme ) {
+ $allowed_colors = array(
+ 'blue',
+ 'cyan',
+ 'green',
+ 'purple',
+ 'pink',
+ 'orange',
+ 'brown',
+ 'black',
+ );
+
+ if ( in_array( $color_theme, $allowed_colors, true ) ) {
+ return $color_theme;
+ }
+ return '';
+ }
+
+ /**
+ * Sanitizes the value of CTA placement.
+ *
+ * @since 1.80.0
+ *
+ * @param string $cta_placement The value to sanitize.
+ * @return string The sanitized value.
+ */
+ private function sanitize_cta_placement( $cta_placement ) {
+ if ( in_array(
+ $cta_placement,
+ array(
+ Web_Tag::PLACEMENT_DYNAMIC_LOW,
+ Web_Tag::PLACEMENT_DYNAMIC_HIGH,
+ Web_Tag::PLACEMENT_STATIC_AUTO,
+ Web_Tag::PLACEMENT_STATIC_ABOVE_CONTENT,
+ Web_Tag::PLACEMENT_STATIC_BELOW_CONTENT,
+ Web_Tag::PLACEMENT_STATIC_BELOW_FIRST_P,
+ ),
+ true
+ ) ) {
+ return $cta_placement;
+ }
+ return '';
+ }
+
+ /**
+ * Sanitizes the value of CTA post types.
+ *
+ * @since 1.80.0
+ *
+ * @param array $cta_post_types The value to sanitize.
+ * @return array The sanitized value.
+ */
+ private function sanitize_cta_post_types( $cta_post_types ) {
+ if ( ! is_array( $cta_post_types ) ) {
+ return array();
+ }
+ return array_intersect(
+ $cta_post_types,
+ array_filter(
+ get_post_types(),
+ function( $post_type ) {
+ return is_post_type_viewable( $post_type );
+ }
+ )
+ );
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Modules/Thank_With_Google/Supporter_Wall_Widget.php b/wp-content/plugins/google-site-kit/includes/Modules/Thank_With_Google/Supporter_Wall_Widget.php
new file mode 100644
index 000000000..2c51a74df
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Modules/Thank_With_Google/Supporter_Wall_Widget.php
@@ -0,0 +1,116 @@
+ __( 'Thank with Google Supporters', 'google-site-kit' ),
+ )
+ );
+
+ $title = $instance['title'];
+ $title_id = $this->get_field_id( 'title' );
+
+ ?>
+
+
+
+
+
+
+
+ ';
+
+ echo $args['after_widget']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
+ }
+
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Modules/Thank_With_Google/Web_Tag.php b/wp-content/plugins/google-site-kit/includes/Modules/Thank_With_Google/Web_Tag.php
new file mode 100644
index 000000000..146ec9866
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Modules/Thank_With_Google/Web_Tag.php
@@ -0,0 +1,258 @@
+cta_placement = $cta_placement;
+ }
+
+ /**
+ * Sets the current CTA post types.
+ *
+ * @since 1.80.0
+ *
+ * @param string[] $cta_post_types CTA post types.
+ */
+ public function set_cta_post_types( $cta_post_types ) {
+ $this->cta_post_types = $cta_post_types;
+ }
+
+ /**
+ * Sets the color theme.
+ *
+ * @since 1.82.0
+ *
+ * @param string $color_theme Color theme.
+ */
+ public function set_color_theme( $color_theme ) {
+ $this->color_theme = $color_theme;
+ }
+
+ /**
+ * Registers tag hooks.
+ *
+ * @since 1.80.0
+ */
+ public function register() {
+ add_action( 'wp_enqueue_scripts', $this->get_method_proxy( 'enqueue_twg_script' ) );
+ add_filter( 'the_content', $this->get_method_proxy( 'update_the_content' ) );
+ add_filter(
+ 'wp_resource_hints',
+ $this->get_dns_prefetch_hints_callback( '//news.google.com' ),
+ 10,
+ 2
+ );
+
+ $this->do_init_tag_action();
+ }
+
+ /**
+ * This method is intended a web tag, but it does nothing in this module as the tag is enqueued.
+ *
+ * @since 1.80.0
+ */
+ protected function render() {
+ // Do nothing, Thank with Google script is enqueued.
+ }
+
+ /**
+ * Enqueues the "Thanks with Google" script.
+ *
+ * @since 1.80.0
+ */
+ protected function enqueue_twg_script() {
+ $is_singular = $this->is_singular_cta_post_type_entity();
+ $is_static = $this->has_static_cta_placement();
+
+ $subscription = array(
+ 'type' => 'Blog',
+ 'isPartOfType' => array( 'Blog', 'Product' ),
+ 'isPartOfProductId' => $this->tag_id . ':default',
+ 'postTitle' => $is_singular ? get_the_title() : '',
+ 'permalink' => $is_singular ? get_permalink() : '',
+ 'pluginVersion' => GOOGLESITEKIT_VERSION,
+ 'colorTheme' => $this->color_theme,
+ 'promptSettings' => array(
+ 'style' => $is_static ? 'inline' : 'floating',
+ ),
+ );
+
+ if ( self::PLACEMENT_DYNAMIC_LOW === $this->cta_placement ) {
+ $subscription['promptSettings']['floatingPromptProminence'] = 'low';
+ } elseif ( self::PLACEMENT_DYNAMIC_HIGH === $this->cta_placement ) {
+ $subscription['promptSettings']['floatingPromptProminence'] = 'high';
+ }
+
+ $json_encoded_subscription = wp_json_encode( $subscription );
+ if ( ! $json_encoded_subscription ) {
+ $json_encoded_subscription = 'null';
+ }
+ $twg_inline_script = sprintf(
+ '(self.SWG_BASIC=self.SWG_BASIC||[]).push(function(subscriptions){subscriptions.init(%s);});',
+ $json_encoded_subscription
+ );
+
+ // phpcs:ignore WordPress.WP.EnqueuedResourceParameters.MissingVersion
+ wp_register_script( 'google_thankjs', 'https://news.google.com/thank/js/v1/thank.js', array(), null, true );
+ wp_add_inline_script( 'google_thankjs', $twg_inline_script, 'before' );
+
+ $filter_google_thankjs = function ( $tag, $handle ) {
+ if ( 'google_thankjs' !== $handle ) {
+ return $tag;
+ }
+
+ return $this->add_snippet_comments( $tag );
+ };
+
+ add_filter( 'script_loader_tag', $filter_google_thankjs, 10, 2 );
+
+ if ( $is_singular ) {
+ wp_enqueue_script( 'google_thankjs' );
+ }
+ }
+
+ /**
+ * Updates the content of the post.
+ *
+ * @since 1.80.0
+ *
+ * @param string $content Content of the post.
+ * @return string Content of the post.
+ */
+ protected function update_the_content( $content ) {
+ if ( ! $this->is_singular_cta_post_type_entity() ) {
+ return $content;
+ }
+
+ $cta_placeholder = $this->add_snippet_comments(
+ ''
+ );
+
+ $counter_placeholder = $this->add_snippet_comments(
+ '
'
+ );
+
+ if ( empty( $content ) ) {
+ return $cta_placeholder . $counter_placeholder;
+ }
+
+ if ( $this->has_static_cta_placement() ) {
+ // Treat auto placement as above the content.
+ if ( in_array( $this->cta_placement, array( self::PLACEMENT_STATIC_AUTO, self::PLACEMENT_STATIC_ABOVE_CONTENT ), true ) ) {
+ // If CTA placement is above the content, the counter is placed below the content.
+ $content = $cta_placeholder . $content . $counter_placeholder;
+ } elseif ( self::PLACEMENT_STATIC_BELOW_CONTENT === $this->cta_placement ) {
+ // If CTA placement is below the content, the counter is not displayed.
+ $content = $content . $cta_placeholder;
+ } elseif ( self::PLACEMENT_STATIC_BELOW_FIRST_P === $this->cta_placement ) {
+ // If CTA placement is below first paragraph, the counter is placed below the content.
+ $content = substr_replace( $content, $cta_placeholder, strpos( $content, '
' ) + 4, 0 ) // strlen( '' ) is 4.
+ . $counter_placeholder;
+ }
+ } else {
+ // If CTA placement is dynamic, the counter is placed below the content.
+ // Note that the CTA placeholder is not added here because it is added by the script.
+ $content = $content . $counter_placeholder;
+ }
+
+ return $content;
+ }
+
+ /**
+ * Checks if the current CTA placement is static.
+ *
+ * @since 1.80.0
+ *
+ * @return bool True if the current CTA placement is static.
+ */
+ private function has_static_cta_placement() {
+ return esc_js( substr( $this->cta_placement, 0, 7 ) === 'static_' ); // strlen( 'static_' ) is 7.
+ }
+
+ /**
+ * Determine if the current page is a singular CTA post type entry.
+ *
+ * @since 1.80.0
+ *
+ * @return bool True if the current page is a singular CTA post type entry. False otherwise.
+ */
+ private function is_singular_cta_post_type_entity() {
+ return is_singular( $this->cta_post_types );
+ }
+
+ /**
+ * Add snippet comments around the tag.
+ *
+ * @since 1.80.0
+ *
+ * @param string $code The tag code.
+ * @return string The tag code with snippet comments.
+ */
+ private function add_snippet_comments( $code ) {
+ $before = sprintf( "\n\n", esc_html__( 'Thank with Google snippet added by Site Kit', 'google-site-kit' ) );
+ $after = sprintf( "\n\n", esc_html__( 'End Thank with Google snippet added by Site Kit', 'google-site-kit' ) );
+ return $before . $code . $after;
+ }
+
+}
diff --git a/wp-content/plugins/google-site-kit/includes/Plugin.php b/wp-content/plugins/google-site-kit/includes/Plugin.php
new file mode 100644
index 000000000..9998fed81
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/Plugin.php
@@ -0,0 +1,280 @@
+context = new Context( $main_file );
+ }
+
+ /**
+ * Retrieves the plugin context object.
+ *
+ * @since 1.0.0
+ *
+ * @return Context Plugin context.
+ */
+ public function context() {
+ return $this->context;
+ }
+
+ /**
+ * Registers the plugin with WordPress.
+ *
+ * @since 1.0.0
+ */
+ public function register() {
+ if ( $this->context->is_network_mode() ) {
+ add_action(
+ 'network_admin_notices',
+ function() {
+ ?>
+
+
+ not yet offer a network mode, but we’re actively working on that.', 'google-site-kit' ),
+ array(
+ 'strong' => array(),
+ )
+ );
+ ?>
+
+
+ \WP_REST_Server::EDITABLE,
+ 'callback' => function( \WP_REST_Request $request ) {
+ $token = wp_generate_uuid4();
+ set_transient( 'googlesitekit_setup_token', $token, 5 * MINUTE_IN_SECONDS );
+
+ return new \WP_REST_Response( array( 'token' => $token ) );
+ },
+ 'permission_callback' => $can_setup,
+ ),
+ )
+ );
+ return $routes;
+ }
+ );
+
+ // Output temporary tag if set.
+ add_action(
+ 'wp_head',
+ function () {
+ $token = get_transient( 'googlesitekit_setup_token' );
+
+ if ( $token ) {
+ printf( '', esc_attr( $token ) );
+ }
+ }
+ );
+
+ $display_site_kit_meta = function() {
+ echo apply_filters( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
+ 'googlesitekit_generator',
+ sprintf( '', esc_attr( GOOGLESITEKIT_VERSION ) )
+ );
+ };
+ add_action( 'wp_head', $display_site_kit_meta );
+ add_action( 'login_head', $display_site_kit_meta );
+
+ $options = new Core\Storage\Options( $this->context );
+
+ // Register activation flag logic outside of 'init' since it hooks into
+ // plugin activation.
+ $activation_flag = new Core\Util\Activation_Flag( $this->context, $options );
+ $activation_flag->register();
+
+ // Register uninstallation logic outside of 'init' since it hooks into
+ // plugin uninstallation.
+ $uninstallation = new Core\Util\Uninstallation( $this->context, $options );
+ $uninstallation->register();
+
+ // Initiate the plugin on 'init' for relying on current user being set.
+ add_action(
+ 'init',
+ function() use ( $options, $activation_flag ) {
+ $transients = new Core\Storage\Transients( $this->context );
+ $user_options = new Core\Storage\User_Options( $this->context, get_current_user_id() );
+ $assets = new Core\Assets\Assets( $this->context );
+
+ $authentication = new Core\Authentication\Authentication( $this->context, $options, $user_options, $transients );
+ $authentication->register();
+
+ $modules = new Core\Modules\Modules( $this->context, $options, $user_options, $authentication, $assets );
+ $modules->register();
+
+ $dismissals = new Core\Dismissals\Dismissals( $this->context, $user_options );
+ $dismissals->register();
+
+ $dismissed_items = $dismissals->get_dismissed_items();
+
+ $permissions = new Core\Permissions\Permissions( $this->context, $authentication, $modules, $user_options, $dismissed_items );
+ $permissions->register();
+
+ // Assets must be registered after Modules instance is registered.
+ $assets->register();
+
+ $screens = new Core\Admin\Screens( $this->context, $assets, $modules, $authentication );
+ $screens->register();
+
+ $user_surveys = new Core\User_Surveys\User_Surveys( $authentication, $user_options );
+ $user_surveys->register();
+
+ ( new Core\Authentication\Setup( $this->context, $user_options, $authentication ) )->register();
+
+ ( new Core\Util\Reset( $this->context ) )->register();
+ ( new Core\Util\Reset_Persistent( $this->context ) )->register();
+ ( new Core\Util\Developer_Plugin_Installer( $this->context ) )->register();
+ ( new Core\Tracking\Tracking( $this->context, $user_options, $screens ) )->register();
+ ( new Core\REST_API\REST_Routes( $this->context, $authentication, $modules ) )->register();
+ ( new Core\Util\REST_Entity_Search_Controller( $this->context ) )->register();
+ ( new Core\Admin_Bar\Admin_Bar( $this->context, $assets, $modules ) )->register();
+ ( new Core\Admin\Available_Tools() )->register();
+ ( new Core\Admin\Notices() )->register();
+ ( new Core\Admin\Pointers() )->register();
+ ( new Core\Admin\Dashboard( $this->context, $assets, $modules ) )->register();
+ ( new Core\Notifications\Notifications( $this->context, $options, $authentication ) )->register();
+ ( new Core\Util\Debug_Data( $this->context, $options, $user_options, $authentication, $modules, $permissions ) )->register();
+ ( new Core\Util\Health_Checks( $authentication ) )->register();
+ ( new Core\Admin\Standalone( $this->context ) )->register();
+ ( new Core\Util\Activation_Notice( $this->context, $activation_flag, $assets ) )->register();
+ ( new Core\Feature_Tours\Feature_Tours( $this->context, $user_options ) )->register();
+ ( new Core\Util\Migration_1_3_0( $this->context, $options, $user_options ) )->register();
+ ( new Core\Util\Migration_1_8_1( $this->context, $options, $user_options, $authentication ) )->register();
+ ( new Core\Dashboard_Sharing\Dashboard_Sharing( $this->context, $user_options ) )->register();
+
+ // If a login is happening (runs after 'init'), update current user in dependency chain.
+ add_action(
+ 'wp_login',
+ function( $username, $user ) use ( $user_options ) {
+ $user_options->switch_user( $user->ID );
+ },
+ -999,
+ 2
+ );
+
+ /**
+ * Fires when Site Kit has fully initialized.
+ *
+ * @since 1.0.0
+ */
+ do_action( 'googlesitekit_init' );
+ },
+ -999
+ );
+
+ // Register _gl parameter to be removed from the URL.
+ add_filter(
+ 'removable_query_args',
+ function ( $args ) {
+ $args[] = '_gl';
+ return $args;
+ }
+ );
+
+ // WP CLI Commands.
+ if ( defined( 'WP_CLI' ) && WP_CLI ) {
+ ( new Core\CLI\CLI_Commands( $this->context ) )->register();
+ }
+
+ // Add Plugin Row Meta.
+ ( new Core\Admin\Plugin_Row_Meta() )->register();
+
+ // Add Plugin Action Links.
+ ( new Core\Admin\Plugin_Action_Links( $this->context ) )->register();
+ }
+
+ /**
+ * Retrieves the main instance of the plugin.
+ *
+ * @since 1.0.0
+ *
+ * @return Plugin Plugin main instance.
+ */
+ public static function instance() {
+ return static::$instance;
+ }
+
+ /**
+ * Loads the plugin main instance and initializes it.
+ *
+ * @since 1.0.0
+ *
+ * @param string $main_file Absolute path to the plugin main file.
+ * @return bool True if the plugin main instance could be loaded, false otherwise.
+ */
+ public static function load( $main_file ) {
+ if ( null !== static::$instance ) {
+ return false;
+ }
+
+ if ( file_exists( GOOGLESITEKIT_PLUGIN_DIR_PATH . 'dist/config.php' ) ) {
+ $config = include GOOGLESITEKIT_PLUGIN_DIR_PATH . 'dist/config.php';
+ Build_Mode::set_mode( $config['buildMode'] );
+ Feature_Flags::set_features( (array) $config['features'] );
+ }
+
+ static::$instance = new static( $main_file );
+ static::$instance->register();
+
+ return true;
+ }
+
+}
diff --git a/wp-content/plugins/google-site-kit/includes/loader.php b/wp-content/plugins/google-site-kit/includes/loader.php
new file mode 100644
index 000000000..52fcd4574
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/loader.php
@@ -0,0 +1,59 @@
+ $file ) {
+ require_once $file;
+ }
+}
+autoload_vendor_files();
+
+// Initialize the plugin.
+Plugin::load( GOOGLESITEKIT_PLUGIN_MAIN_FILE );
diff --git a/wp-content/plugins/google-site-kit/includes/vendor/composer/autoload_classmap.php b/wp-content/plugins/google-site-kit/includes/vendor/composer/autoload_classmap.php
new file mode 100644
index 000000000..72bde30b1
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/includes/vendor/composer/autoload_classmap.php
@@ -0,0 +1,219 @@
+ $vendorDir . '/composer/InstalledVersions.php',
+ 'Google\\Site_Kit\\Context' => $baseDir . '/Context.php',
+ 'Google\\Site_Kit\\Core\\Admin\\Available_Tools' => $baseDir . '/Core/Admin/Available_Tools.php',
+ 'Google\\Site_Kit\\Core\\Admin\\Dashboard' => $baseDir . '/Core/Admin/Dashboard.php',
+ 'Google\\Site_Kit\\Core\\Admin\\Notice' => $baseDir . '/Core/Admin/Notice.php',
+ 'Google\\Site_Kit\\Core\\Admin\\Notices' => $baseDir . '/Core/Admin/Notices.php',
+ 'Google\\Site_Kit\\Core\\Admin\\Plugin_Action_Links' => $baseDir . '/Core/Admin/Plugin_Action_Links.php',
+ 'Google\\Site_Kit\\Core\\Admin\\Plugin_Row_Meta' => $baseDir . '/Core/Admin/Plugin_Row_Meta.php',
+ 'Google\\Site_Kit\\Core\\Admin\\Pointer' => $baseDir . '/Core/Admin/Pointer.php',
+ 'Google\\Site_Kit\\Core\\Admin\\Pointers' => $baseDir . '/Core/Admin/Pointers.php',
+ 'Google\\Site_Kit\\Core\\Admin\\Screen' => $baseDir . '/Core/Admin/Screen.php',
+ 'Google\\Site_Kit\\Core\\Admin\\Screens' => $baseDir . '/Core/Admin/Screens.php',
+ 'Google\\Site_Kit\\Core\\Admin\\Standalone' => $baseDir . '/Core/Admin/Standalone.php',
+ 'Google\\Site_Kit\\Core\\Admin_Bar\\Admin_Bar' => $baseDir . '/Core/Admin_Bar/Admin_Bar.php',
+ 'Google\\Site_Kit\\Core\\Admin_Bar\\Admin_Bar_Enabled' => $baseDir . '/Core/Admin_Bar/Admin_Bar_Enabled.php',
+ 'Google\\Site_Kit\\Core\\Assets\\Asset' => $baseDir . '/Core/Assets/Asset.php',
+ 'Google\\Site_Kit\\Core\\Assets\\Assets' => $baseDir . '/Core/Assets/Assets.php',
+ 'Google\\Site_Kit\\Core\\Assets\\Manifest' => $baseDir . '/Core/Assets/Manifest.php',
+ 'Google\\Site_Kit\\Core\\Assets\\Script' => $baseDir . '/Core/Assets/Script.php',
+ 'Google\\Site_Kit\\Core\\Assets\\Script_Data' => $baseDir . '/Core/Assets/Script_Data.php',
+ 'Google\\Site_Kit\\Core\\Assets\\Stylesheet' => $baseDir . '/Core/Assets/Stylesheet.php',
+ 'Google\\Site_Kit\\Core\\Authentication\\Authentication' => $baseDir . '/Core/Authentication/Authentication.php',
+ 'Google\\Site_Kit\\Core\\Authentication\\Clients\\Client_Factory' => $baseDir . '/Core/Authentication/Clients/Client_Factory.php',
+ 'Google\\Site_Kit\\Core\\Authentication\\Clients\\Google_Site_Kit_Client' => $baseDir . '/Core/Authentication/Clients/Google_Site_Kit_Client.php',
+ 'Google\\Site_Kit\\Core\\Authentication\\Clients\\Google_Site_Kit_Proxy_Client' => $baseDir . '/Core/Authentication/Clients/Google_Site_Kit_Proxy_Client.php',
+ 'Google\\Site_Kit\\Core\\Authentication\\Clients\\OAuth2' => $baseDir . '/Core/Authentication/Clients/OAuth2.php',
+ 'Google\\Site_Kit\\Core\\Authentication\\Clients\\OAuth_Client' => $baseDir . '/Core/Authentication/Clients/OAuth_Client.php',
+ 'Google\\Site_Kit\\Core\\Authentication\\Clients\\OAuth_Client_Base' => $baseDir . '/Core/Authentication/Clients/OAuth_Client_Base.php',
+ 'Google\\Site_Kit\\Core\\Authentication\\Connected_Proxy_URL' => $baseDir . '/Core/Authentication/Connected_Proxy_URL.php',
+ 'Google\\Site_Kit\\Core\\Authentication\\Credentials' => $baseDir . '/Core/Authentication/Credentials.php',
+ 'Google\\Site_Kit\\Core\\Authentication\\Disconnected_Reason' => $baseDir . '/Core/Authentication/Disconnected_Reason.php',
+ 'Google\\Site_Kit\\Core\\Authentication\\Exception\\Exchange_Site_Code_Exception' => $baseDir . '/Core/Authentication/Exception/Exchange_Site_Code_Exception.php',
+ 'Google\\Site_Kit\\Core\\Authentication\\Exception\\Google_OAuth_Exception' => $baseDir . '/Core/Authentication/Exception/Google_OAuth_Exception.php',
+ 'Google\\Site_Kit\\Core\\Authentication\\Exception\\Google_Proxy_Code_Exception' => $baseDir . '/Core/Authentication/Exception/Google_Proxy_Code_Exception.php',
+ 'Google\\Site_Kit\\Core\\Authentication\\Exception\\Insufficient_Scopes_Exception' => $baseDir . '/Core/Authentication/Exception/Insufficient_Scopes_Exception.php',
+ 'Google\\Site_Kit\\Core\\Authentication\\Exception\\Missing_Verification_Exception' => $baseDir . '/Core/Authentication/Exception/Missing_Verification_Exception.php',
+ 'Google\\Site_Kit\\Core\\Authentication\\Google_Proxy' => $baseDir . '/Core/Authentication/Google_Proxy.php',
+ 'Google\\Site_Kit\\Core\\Authentication\\Has_Connected_Admins' => $baseDir . '/Core/Authentication/Has_Connected_Admins.php',
+ 'Google\\Site_Kit\\Core\\Authentication\\Has_Multiple_Admins' => $baseDir . '/Core/Authentication/Has_Multiple_Admins.php',
+ 'Google\\Site_Kit\\Core\\Authentication\\Initial_Version' => $baseDir . '/Core/Authentication/Initial_Version.php',
+ 'Google\\Site_Kit\\Core\\Authentication\\Owner_ID' => $baseDir . '/Core/Authentication/Owner_ID.php',
+ 'Google\\Site_Kit\\Core\\Authentication\\Profile' => $baseDir . '/Core/Authentication/Profile.php',
+ 'Google\\Site_Kit\\Core\\Authentication\\Setup' => $baseDir . '/Core/Authentication/Setup.php',
+ 'Google\\Site_Kit\\Core\\Authentication\\Token' => $baseDir . '/Core/Authentication/Token.php',
+ 'Google\\Site_Kit\\Core\\Authentication\\User_Input_State' => $baseDir . '/Core/Authentication/User_Input_State.php',
+ 'Google\\Site_Kit\\Core\\Authentication\\Verification' => $baseDir . '/Core/Authentication/Verification.php',
+ 'Google\\Site_Kit\\Core\\Authentication\\Verification_File' => $baseDir . '/Core/Authentication/Verification_File.php',
+ 'Google\\Site_Kit\\Core\\Authentication\\Verification_Meta' => $baseDir . '/Core/Authentication/Verification_Meta.php',
+ 'Google\\Site_Kit\\Core\\CLI\\Authentication_CLI_Command' => $baseDir . '/Core/CLI/Authentication_CLI_Command.php',
+ 'Google\\Site_Kit\\Core\\CLI\\CLI_Command' => $baseDir . '/Core/CLI/CLI_Command.php',
+ 'Google\\Site_Kit\\Core\\CLI\\CLI_Commands' => $baseDir . '/Core/CLI/CLI_Commands.php',
+ 'Google\\Site_Kit\\Core\\CLI\\Reset_CLI_Command' => $baseDir . '/Core/CLI/Reset_CLI_Command.php',
+ 'Google\\Site_Kit\\Core\\Contracts\\WP_Errorable' => $baseDir . '/Core/Contracts/WP_Errorable.php',
+ 'Google\\Site_Kit\\Core\\Dashboard_Sharing\\Activity_Metrics\\Active_Consumers' => $baseDir . '/Core/Dashboard_Sharing/Activity_Metrics/Active_Consumers.php',
+ 'Google\\Site_Kit\\Core\\Dashboard_Sharing\\Activity_Metrics\\Activity_Metrics' => $baseDir . '/Core/Dashboard_Sharing/Activity_Metrics/Activity_Metrics.php',
+ 'Google\\Site_Kit\\Core\\Dashboard_Sharing\\Dashboard_Sharing' => $baseDir . '/Core/Dashboard_Sharing/Dashboard_Sharing.php',
+ 'Google\\Site_Kit\\Core\\Dashboard_Sharing\\View_Only_Pointer' => $baseDir . '/Core/Dashboard_Sharing/View_Only_Pointer.php',
+ 'Google\\Site_Kit\\Core\\Dismissals\\Dismissals' => $baseDir . '/Core/Dismissals/Dismissals.php',
+ 'Google\\Site_Kit\\Core\\Dismissals\\Dismissed_Items' => $baseDir . '/Core/Dismissals/Dismissed_Items.php',
+ 'Google\\Site_Kit\\Core\\Dismissals\\REST_Dismissals_Controller' => $baseDir . '/Core/Dismissals/REST_Dismissals_Controller.php',
+ 'Google\\Site_Kit\\Core\\Feature_Tours\\Dismissed_Tours' => $baseDir . '/Core/Feature_Tours/Dismissed_Tours.php',
+ 'Google\\Site_Kit\\Core\\Feature_Tours\\Feature_Tours' => $baseDir . '/Core/Feature_Tours/Feature_Tours.php',
+ 'Google\\Site_Kit\\Core\\Feature_Tours\\REST_Feature_Tours_Controller' => $baseDir . '/Core/Feature_Tours/REST_Feature_Tours_Controller.php',
+ 'Google\\Site_Kit\\Core\\Guards\\Guard_Interface' => $baseDir . '/Core/Guards/Guard_Interface.php',
+ 'Google\\Site_Kit\\Core\\Modules\\Datapoint' => $baseDir . '/Core/Modules/Datapoint.php',
+ 'Google\\Site_Kit\\Core\\Modules\\Module' => $baseDir . '/Core/Modules/Module.php',
+ 'Google\\Site_Kit\\Core\\Modules\\Module_Registry' => $baseDir . '/Core/Modules/Module_Registry.php',
+ 'Google\\Site_Kit\\Core\\Modules\\Module_Settings' => $baseDir . '/Core/Modules/Module_Settings.php',
+ 'Google\\Site_Kit\\Core\\Modules\\Module_Sharing_Settings' => $baseDir . '/Core/Modules/Module_Sharing_Settings.php',
+ 'Google\\Site_Kit\\Core\\Modules\\Module_With_Activation' => $baseDir . '/Core/Modules/Module_With_Activation.php',
+ 'Google\\Site_Kit\\Core\\Modules\\Module_With_Assets' => $baseDir . '/Core/Modules/Module_With_Assets.php',
+ 'Google\\Site_Kit\\Core\\Modules\\Module_With_Assets_Trait' => $baseDir . '/Core/Modules/Module_With_Assets_Trait.php',
+ 'Google\\Site_Kit\\Core\\Modules\\Module_With_Deactivation' => $baseDir . '/Core/Modules/Module_With_Deactivation.php',
+ 'Google\\Site_Kit\\Core\\Modules\\Module_With_Debug_Fields' => $baseDir . '/Core/Modules/Module_With_Debug_Fields.php',
+ 'Google\\Site_Kit\\Core\\Modules\\Module_With_Owner' => $baseDir . '/Core/Modules/Module_With_Owner.php',
+ 'Google\\Site_Kit\\Core\\Modules\\Module_With_Owner_Trait' => $baseDir . '/Core/Modules/Module_With_Owner_Trait.php',
+ 'Google\\Site_Kit\\Core\\Modules\\Module_With_Persistent_Registration' => $baseDir . '/Core/Modules/Module_With_Persistent_Registration.php',
+ 'Google\\Site_Kit\\Core\\Modules\\Module_With_Scopes' => $baseDir . '/Core/Modules/Module_With_Scopes.php',
+ 'Google\\Site_Kit\\Core\\Modules\\Module_With_Scopes_Trait' => $baseDir . '/Core/Modules/Module_With_Scopes_Trait.php',
+ 'Google\\Site_Kit\\Core\\Modules\\Module_With_Service_Entity' => $baseDir . '/Core/Modules/Module_With_Service_Entity.php',
+ 'Google\\Site_Kit\\Core\\Modules\\Module_With_Settings' => $baseDir . '/Core/Modules/Module_With_Settings.php',
+ 'Google\\Site_Kit\\Core\\Modules\\Module_With_Settings_Trait' => $baseDir . '/Core/Modules/Module_With_Settings_Trait.php',
+ 'Google\\Site_Kit\\Core\\Modules\\Modules' => $baseDir . '/Core/Modules/Modules.php',
+ 'Google\\Site_Kit\\Core\\Modules\\REST_Dashboard_Sharing_Controller' => $baseDir . '/Core/Modules/REST_Dashboard_Sharing_Controller.php',
+ 'Google\\Site_Kit\\Core\\Modules\\Tags\\Module_AMP_Tag' => $baseDir . '/Core/Modules/Tags/Module_AMP_Tag.php',
+ 'Google\\Site_Kit\\Core\\Modules\\Tags\\Module_Tag' => $baseDir . '/Core/Modules/Tags/Module_Tag.php',
+ 'Google\\Site_Kit\\Core\\Modules\\Tags\\Module_Tag_Guard' => $baseDir . '/Core/Modules/Tags/Module_Tag_Guard.php',
+ 'Google\\Site_Kit\\Core\\Modules\\Tags\\Module_Web_Tag' => $baseDir . '/Core/Modules/Tags/Module_Web_Tag.php',
+ 'Google\\Site_Kit\\Core\\Notifications\\Notification' => $baseDir . '/Core/Notifications/Notification.php',
+ 'Google\\Site_Kit\\Core\\Notifications\\Notifications' => $baseDir . '/Core/Notifications/Notifications.php',
+ 'Google\\Site_Kit\\Core\\Permissions\\Permissions' => $baseDir . '/Core/Permissions/Permissions.php',
+ 'Google\\Site_Kit\\Core\\REST_API\\Data_Request' => $baseDir . '/Core/REST_API/Data_Request.php',
+ 'Google\\Site_Kit\\Core\\REST_API\\Exception\\Invalid_Datapoint_Exception' => $baseDir . '/Core/REST_API/Exception/Invalid_Datapoint_Exception.php',
+ 'Google\\Site_Kit\\Core\\REST_API\\REST_Route' => $baseDir . '/Core/REST_API/REST_Route.php',
+ 'Google\\Site_Kit\\Core\\REST_API\\REST_Routes' => $baseDir . '/Core/REST_API/REST_Routes.php',
+ 'Google\\Site_Kit\\Core\\Storage\\Cache' => $baseDir . '/Core/Storage/Cache.php',
+ 'Google\\Site_Kit\\Core\\Storage\\Data_Encryption' => $baseDir . '/Core/Storage/Data_Encryption.php',
+ 'Google\\Site_Kit\\Core\\Storage\\Encrypted_Options' => $baseDir . '/Core/Storage/Encrypted_Options.php',
+ 'Google\\Site_Kit\\Core\\Storage\\Encrypted_User_Options' => $baseDir . '/Core/Storage/Encrypted_User_Options.php',
+ 'Google\\Site_Kit\\Core\\Storage\\Options' => $baseDir . '/Core/Storage/Options.php',
+ 'Google\\Site_Kit\\Core\\Storage\\Options_Interface' => $baseDir . '/Core/Storage/Options_Interface.php',
+ 'Google\\Site_Kit\\Core\\Storage\\Post_Meta' => $baseDir . '/Core/Storage/Post_Meta.php',
+ 'Google\\Site_Kit\\Core\\Storage\\Post_Meta_Interface' => $baseDir . '/Core/Storage/Post_Meta_Interface.php',
+ 'Google\\Site_Kit\\Core\\Storage\\Post_Meta_Setting' => $baseDir . '/Core/Storage/Post_Meta_Setting.php',
+ 'Google\\Site_Kit\\Core\\Storage\\Setting' => $baseDir . '/Core/Storage/Setting.php',
+ 'Google\\Site_Kit\\Core\\Storage\\Setting_With_Legacy_Keys_Trait' => $baseDir . '/Core/Storage/Setting_With_Legacy_Keys_Trait.php',
+ 'Google\\Site_Kit\\Core\\Storage\\Setting_With_Owned_Keys_Interface' => $baseDir . '/Core/Storage/Setting_With_Owned_Keys_Interface.php',
+ 'Google\\Site_Kit\\Core\\Storage\\Setting_With_Owned_Keys_Trait' => $baseDir . '/Core/Storage/Setting_With_Owned_Keys_Trait.php',
+ 'Google\\Site_Kit\\Core\\Storage\\Transients' => $baseDir . '/Core/Storage/Transients.php',
+ 'Google\\Site_Kit\\Core\\Storage\\User_Aware_Interface' => $baseDir . '/Core/Storage/User_Aware_Interface.php',
+ 'Google\\Site_Kit\\Core\\Storage\\User_Aware_Trait' => $baseDir . '/Core/Storage/User_Aware_Trait.php',
+ 'Google\\Site_Kit\\Core\\Storage\\User_Options' => $baseDir . '/Core/Storage/User_Options.php',
+ 'Google\\Site_Kit\\Core\\Storage\\User_Options_Interface' => $baseDir . '/Core/Storage/User_Options_Interface.php',
+ 'Google\\Site_Kit\\Core\\Storage\\User_Setting' => $baseDir . '/Core/Storage/User_Setting.php',
+ 'Google\\Site_Kit\\Core\\Storage\\User_Transients' => $baseDir . '/Core/Storage/User_Transients.php',
+ 'Google\\Site_Kit\\Core\\Tags\\Blockable_Tag_Interface' => $baseDir . '/Core/Tags/Blockable_Tag_Interface.php',
+ 'Google\\Site_Kit\\Core\\Tags\\Guards\\Tag_Environment_Type_Guard' => $baseDir . '/Core/Tags/Guards/Tag_Environment_Type_Guard.php',
+ 'Google\\Site_Kit\\Core\\Tags\\Guards\\Tag_Verify_Guard' => $baseDir . '/Core/Tags/Guards/Tag_Verify_Guard.php',
+ 'Google\\Site_Kit\\Core\\Tags\\Tag' => $baseDir . '/Core/Tags/Tag.php',
+ 'Google\\Site_Kit\\Core\\Tags\\Tag_Interface' => $baseDir . '/Core/Tags/Tag_Interface.php',
+ 'Google\\Site_Kit\\Core\\Tags\\Tag_With_DNS_Prefetch_Trait' => $baseDir . '/Core/Tags/Tag_With_DNS_Prefetch_Trait.php',
+ 'Google\\Site_Kit\\Core\\Tracking\\REST_Tracking_Consent_Controller' => $baseDir . '/Core/Tracking/REST_Tracking_Consent_Controller.php',
+ 'Google\\Site_Kit\\Core\\Tracking\\Tracking' => $baseDir . '/Core/Tracking/Tracking.php',
+ 'Google\\Site_Kit\\Core\\Tracking\\Tracking_Consent' => $baseDir . '/Core/Tracking/Tracking_Consent.php',
+ 'Google\\Site_Kit\\Core\\User_Surveys\\REST_User_Surveys_Controller' => $baseDir . '/Core/User_Surveys/REST_User_Surveys_Controller.php',
+ 'Google\\Site_Kit\\Core\\User_Surveys\\Survey_Timeouts' => $baseDir . '/Core/User_Surveys/Survey_Timeouts.php',
+ 'Google\\Site_Kit\\Core\\User_Surveys\\User_Surveys' => $baseDir . '/Core/User_Surveys/User_Surveys.php',
+ 'Google\\Site_Kit\\Core\\Util\\Activation_Flag' => $baseDir . '/Core/Util/Activation_Flag.php',
+ 'Google\\Site_Kit\\Core\\Util\\Activation_Notice' => $baseDir . '/Core/Util/Activation_Notice.php',
+ 'Google\\Site_Kit\\Core\\Util\\BC_Functions' => $baseDir . '/Core/Util/BC_Functions.php',
+ 'Google\\Site_Kit\\Core\\Util\\Build_Mode' => $baseDir . '/Core/Util/Build_Mode.php',
+ 'Google\\Site_Kit\\Core\\Util\\Collection_Key_Cap_Filter' => $baseDir . '/Core/Util/Collection_Key_Cap_Filter.php',
+ 'Google\\Site_Kit\\Core\\Util\\Debug_Data' => $baseDir . '/Core/Util/Debug_Data.php',
+ 'Google\\Site_Kit\\Core\\Util\\Developer_Plugin_Installer' => $baseDir . '/Core/Util/Developer_Plugin_Installer.php',
+ 'Google\\Site_Kit\\Core\\Util\\Entity' => $baseDir . '/Core/Util/Entity.php',
+ 'Google\\Site_Kit\\Core\\Util\\Entity_Factory' => $baseDir . '/Core/Util/Entity_Factory.php',
+ 'Google\\Site_Kit\\Core\\Util\\Exit_Handler' => $baseDir . '/Core/Util/Exit_Handler.php',
+ 'Google\\Site_Kit\\Core\\Util\\Feature_Flags' => $baseDir . '/Core/Util/Feature_Flags.php',
+ 'Google\\Site_Kit\\Core\\Util\\Google_Icon' => $baseDir . '/Core/Util/Google_Icon.php',
+ 'Google\\Site_Kit\\Core\\Util\\Google_URL_Matcher_Trait' => $baseDir . '/Core/Util/Google_URL_Matcher_Trait.php',
+ 'Google\\Site_Kit\\Core\\Util\\Google_URL_Normalizer' => $baseDir . '/Core/Util/Google_URL_Normalizer.php',
+ 'Google\\Site_Kit\\Core\\Util\\Health_Checks' => $baseDir . '/Core/Util/Health_Checks.php',
+ 'Google\\Site_Kit\\Core\\Util\\Input' => $baseDir . '/Core/Util/Input.php',
+ 'Google\\Site_Kit\\Core\\Util\\Method_Proxy_Trait' => $baseDir . '/Core/Util/Method_Proxy_Trait.php',
+ 'Google\\Site_Kit\\Core\\Util\\Migrate_Legacy_Keys' => $baseDir . '/Core/Util/Migrate_Legacy_Keys.php',
+ 'Google\\Site_Kit\\Core\\Util\\Migration_1_3_0' => $baseDir . '/Core/Util/Migration_1_3_0.php',
+ 'Google\\Site_Kit\\Core\\Util\\Migration_1_8_1' => $baseDir . '/Core/Util/Migration_1_8_1.php',
+ 'Google\\Site_Kit\\Core\\Util\\REST_Entity_Search_Controller' => $baseDir . '/Core/Util/REST_Entity_Search_Controller.php',
+ 'Google\\Site_Kit\\Core\\Util\\Requires_Javascript_Trait' => $baseDir . '/Core/Util/Requires_Javascript_Trait.php',
+ 'Google\\Site_Kit\\Core\\Util\\Reset' => $baseDir . '/Core/Util/Reset.php',
+ 'Google\\Site_Kit\\Core\\Util\\Reset_Persistent' => $baseDir . '/Core/Util/Reset_Persistent.php',
+ 'Google\\Site_Kit\\Core\\Util\\Scopes' => $baseDir . '/Core/Util/Scopes.php',
+ 'Google\\Site_Kit\\Core\\Util\\Synthetic_WP_Query' => $baseDir . '/Core/Util/Synthetic_WP_Query.php',
+ 'Google\\Site_Kit\\Core\\Util\\URL' => $baseDir . '/Core/Util/URL.php',
+ 'Google\\Site_Kit\\Core\\Util\\Uninstallation' => $baseDir . '/Core/Util/Uninstallation.php',
+ 'Google\\Site_Kit\\Core\\Util\\User_Input_Settings' => $baseDir . '/Core/Util/User_Input_Settings.php',
+ 'Google\\Site_Kit\\Core\\Util\\WP_Context_Switcher_Trait' => $baseDir . '/Core/Util/WP_Context_Switcher_Trait.php',
+ 'Google\\Site_Kit\\Core\\Util\\WP_Query_Factory' => $baseDir . '/Core/Util/WP_Query_Factory.php',
+ 'Google\\Site_Kit\\Core\\Validation\\Exception\\Invalid_Report_Dimensions_Exception' => $baseDir . '/Core/Validation/Exception/Invalid_Report_Dimensions_Exception.php',
+ 'Google\\Site_Kit\\Core\\Validation\\Exception\\Invalid_Report_Metrics_Exception' => $baseDir . '/Core/Validation/Exception/Invalid_Report_Metrics_Exception.php',
+ 'Google\\Site_Kit\\Modules\\AdSense' => $baseDir . '/Modules/AdSense.php',
+ 'Google\\Site_Kit\\Modules\\AdSense\\AMP_Tag' => $baseDir . '/Modules/AdSense/AMP_Tag.php',
+ 'Google\\Site_Kit\\Modules\\AdSense\\Auto_Ad_Guard' => $baseDir . '/Modules/AdSense/Auto_Ad_Guard.php',
+ 'Google\\Site_Kit\\Modules\\AdSense\\Settings' => $baseDir . '/Modules/AdSense/Settings.php',
+ 'Google\\Site_Kit\\Modules\\AdSense\\Tag_Guard' => $baseDir . '/Modules/AdSense/Tag_Guard.php',
+ 'Google\\Site_Kit\\Modules\\AdSense\\Web_Tag' => $baseDir . '/Modules/AdSense/Web_Tag.php',
+ 'Google\\Site_Kit\\Modules\\Analytics' => $baseDir . '/Modules/Analytics.php',
+ 'Google\\Site_Kit\\Modules\\Analytics\\AMP_Tag' => $baseDir . '/Modules/Analytics/AMP_Tag.php',
+ 'Google\\Site_Kit\\Modules\\Analytics\\Advanced_Tracking' => $baseDir . '/Modules/Analytics/Advanced_Tracking.php',
+ 'Google\\Site_Kit\\Modules\\Analytics\\Advanced_Tracking\\AMP_Config_Injector' => $baseDir . '/Modules/Analytics/Advanced_Tracking/AMP_Config_Injector.php',
+ 'Google\\Site_Kit\\Modules\\Analytics\\Advanced_Tracking\\Event' => $baseDir . '/Modules/Analytics/Advanced_Tracking/Event.php',
+ 'Google\\Site_Kit\\Modules\\Analytics\\Advanced_Tracking\\Event_List' => $baseDir . '/Modules/Analytics/Advanced_Tracking/Event_List.php',
+ 'Google\\Site_Kit\\Modules\\Analytics\\Advanced_Tracking\\Event_List_Registry' => $baseDir . '/Modules/Analytics/Advanced_Tracking/Event_List_Registry.php',
+ 'Google\\Site_Kit\\Modules\\Analytics\\Advanced_Tracking\\Script_Injector' => $baseDir . '/Modules/Analytics/Advanced_Tracking/Script_Injector.php',
+ 'Google\\Site_Kit\\Modules\\Analytics\\Google_Service_AnalyticsProvisioning' => $baseDir . '/Modules/Analytics/Google_Service_AnalyticsProvisioning.php',
+ 'Google\\Site_Kit\\Modules\\Analytics\\Proxy_AccountTicket' => $baseDir . '/Modules/Analytics/Proxy_Account_Ticket.php',
+ 'Google\\Site_Kit\\Modules\\Analytics\\Proxy_Provisioning' => $baseDir . '/Modules/Analytics/Proxy_Provisioning.php',
+ 'Google\\Site_Kit\\Modules\\Analytics\\Settings' => $baseDir . '/Modules/Analytics/Settings.php',
+ 'Google\\Site_Kit\\Modules\\Analytics\\Tag_Guard' => $baseDir . '/Modules/Analytics/Tag_Guard.php',
+ 'Google\\Site_Kit\\Modules\\Analytics\\Tag_Interface' => $baseDir . '/Modules/Analytics/Tag_Interface.php',
+ 'Google\\Site_Kit\\Modules\\Analytics\\Web_Tag' => $baseDir . '/Modules/Analytics/Web_Tag.php',
+ 'Google\\Site_Kit\\Modules\\Analytics_4' => $baseDir . '/Modules/Analytics_4.php',
+ 'Google\\Site_Kit\\Modules\\Analytics_4\\Settings' => $baseDir . '/Modules/Analytics_4/Settings.php',
+ 'Google\\Site_Kit\\Modules\\Analytics_4\\Tag_Guard' => $baseDir . '/Modules/Analytics_4/Tag_Guard.php',
+ 'Google\\Site_Kit\\Modules\\Analytics_4\\Web_Tag' => $baseDir . '/Modules/Analytics_4/Web_Tag.php',
+ 'Google\\Site_Kit\\Modules\\Idea_Hub' => $baseDir . '/Modules/Idea_Hub.php',
+ 'Google\\Site_Kit\\Modules\\Idea_Hub\\Idea_Interaction_Count' => $baseDir . '/Modules/Idea_Hub/Idea_Interaction_Count.php',
+ 'Google\\Site_Kit\\Modules\\Idea_Hub\\Post_Idea_Name' => $baseDir . '/Modules/Idea_Hub/Post_Idea_Name.php',
+ 'Google\\Site_Kit\\Modules\\Idea_Hub\\Post_Idea_Text' => $baseDir . '/Modules/Idea_Hub/Post_Idea_Text.php',
+ 'Google\\Site_Kit\\Modules\\Idea_Hub\\Post_Idea_Topics' => $baseDir . '/Modules/Idea_Hub/Post_Idea_Topics.php',
+ 'Google\\Site_Kit\\Modules\\Idea_Hub\\Settings' => $baseDir . '/Modules/Idea_Hub/Settings.php',
+ 'Google\\Site_Kit\\Modules\\Optimize' => $baseDir . '/Modules/Optimize.php',
+ 'Google\\Site_Kit\\Modules\\Optimize\\Settings' => $baseDir . '/Modules/Optimize/Settings.php',
+ 'Google\\Site_Kit\\Modules\\Optimize\\Tag_Guard' => $baseDir . '/Modules/Optimize/Tag_Guard.php',
+ 'Google\\Site_Kit\\Modules\\Optimize\\Web_Tag' => $baseDir . '/Modules/Optimize/Web_Tag.php',
+ 'Google\\Site_Kit\\Modules\\PageSpeed_Insights' => $baseDir . '/Modules/PageSpeed_Insights.php',
+ 'Google\\Site_Kit\\Modules\\PageSpeed_Insights\\Settings' => $baseDir . '/Modules/PageSpeed_Insights/Settings.php',
+ 'Google\\Site_Kit\\Modules\\Search_Console' => $baseDir . '/Modules/Search_Console.php',
+ 'Google\\Site_Kit\\Modules\\Search_Console\\Settings' => $baseDir . '/Modules/Search_Console/Settings.php',
+ 'Google\\Site_Kit\\Modules\\Site_Verification' => $baseDir . '/Modules/Site_Verification.php',
+ 'Google\\Site_Kit\\Modules\\Tag_Manager' => $baseDir . '/Modules/Tag_Manager.php',
+ 'Google\\Site_Kit\\Modules\\Tag_Manager\\AMP_Tag' => $baseDir . '/Modules/Tag_Manager/AMP_Tag.php',
+ 'Google\\Site_Kit\\Modules\\Tag_Manager\\Settings' => $baseDir . '/Modules/Tag_Manager/Settings.php',
+ 'Google\\Site_Kit\\Modules\\Tag_Manager\\Tag_Guard' => $baseDir . '/Modules/Tag_Manager/Tag_Guard.php',
+ 'Google\\Site_Kit\\Modules\\Tag_Manager\\Web_Tag' => $baseDir . '/Modules/Tag_Manager/Web_Tag.php',
+ 'Google\\Site_Kit\\Modules\\Thank_With_Google' => $baseDir . '/Modules/Thank_With_Google.php',
+ 'Google\\Site_Kit\\Modules\\Thank_With_Google\\Settings' => $baseDir . '/Modules/Thank_With_Google/Settings.php',
+ 'Google\\Site_Kit\\Modules\\Thank_With_Google\\Supporter_Wall_Widget' => $baseDir . '/Modules/Thank_With_Google/Supporter_Wall_Widget.php',
+ 'Google\\Site_Kit\\Modules\\Thank_With_Google\\Web_Tag' => $baseDir . '/Modules/Thank_With_Google/Web_Tag.php',
+ 'Google\\Site_Kit\\Plugin' => $baseDir . '/Plugin.php',
+);
diff --git a/wp-content/plugins/google-site-kit/readme.txt b/wp-content/plugins/google-site-kit/readme.txt
new file mode 100644
index 000000000..7e7654a82
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/readme.txt
@@ -0,0 +1,2227 @@
+=== Site Kit by Google - Analytics, Search Console, AdSense, Speed ===
+
+Contributors: google
+Requires at least: 5.2
+Tested up to: 6.1
+Requires PHP: 5.6
+Stable tag: 1.89.0
+License: Apache License 2.0
+License URI: https://www.apache.org/licenses/LICENSE-2.0
+Tags: google, search-console, analytics, adsense, pagespeed-insights, optimize, tag-manager, site-kit
+
+Site Kit is a one-stop solution for WordPress users to use everything Google has to offer to make them successful on the web.
+
+== Description ==
+
+Site Kit is the official WordPress plugin from Google for insights about how people find and use your site. Site Kit is the one-stop solution to deploy, manage, and get insights from critical Google tools to make the site successful on the web. It provides authoritative, up-to-date insights from multiple Google products directly on the WordPress dashboard for easy access, all for free.
+
+= Bringing the best of Google tools to WordPress =
+
+Site Kit includes powerful features that make using these Google products seamless and flexible:
+
+* Easy-to-understand stats directly on your WordPress dashboard
+* Official stats from multiple Google tools, all in one dashboard
+* Quick setup for multiple Google tools without having to edit the source code of your site
+* Metrics for your entire site and for individual posts
+* Easy-to-manage, granular permissions across WordPress and different Google products
+
+= Supported Google tools =
+
+Site Kit shows key metrics and insights from different Google products:
+
+* **Search Console:** Understand how Google Search discovers and displays your pages in Google Search. Track how many people saw your site in Search results, and what query they used to search for your site.
+* **Analytics:** Explore how users navigate your site and track goals you've set up for your users to complete.
+* **AdSense:** Keep track of how much your site is earning you.
+* **PageSpeed Insights:** See how your pages perform compared to other real-world sites. Improve performance with actionable tips from PageSpeed Insights.
+* **Tag Manager:** Use Site Kit to easily set up Tag Manager- no code editing required. Then, manage your tags in Tag Manager.
+* **Optimize:** Use Site Kit to easily set up Optimize- no code editing required. Then, set up A/B tests in Optimize.
+
+== Installation ==
+**Note**: Make sure that your website is live. If your website isn't live yet, Site Kit can't show you any data.
+However, if you have a staging environment in addition to your production site, Site Kit can display data from your production site in the staging environment. Learn how to use [Site Kit with a staging environment](https://sitekit.withgoogle.com/documentation/using-site-kit/staging/).
+
+= Installation from within WordPress =
+
+1. Visit **Plugins > Add New**.
+2. Search for **Site Kit by Google**.
+3. Install and activate the Site Kit by Google plugin.
+4. Connect Site Kit to your Google account. If there are multiple WordPress admins, keep in mind that each admin must connect their own Google account in order to access the plugin.
+
+
+= Manual installation =
+
+1. Upload the entire `google-site-kit` folder to the `/wp-content/plugins/` directory.
+2. Visit **Plugins**.
+3. Activate the Site Kit by Google plugin.
+4. Connect Site Kit to your Google account. If there are multiple WordPress admins, keep in mind that each admin must connect their own Google account in order to access the plugin.
+
+= After activation =
+
+1. Visit the new **Site Kit** menu.
+2. Follow the instructions in the setup flow.
+3. Go to the main Site Kit dashboard which already displays key metrics from Search Console.
+4. Connect additional Google tools under **Site Kit > Settings**. Learn more about [which tools are right for you](https://sitekit.withgoogle.com/documentation/getting-started/connecting-services/).
+
+== Frequently Asked Questions ==
+
+For more information, visit the [official Site Kit website](https://sitekit.withgoogle.com/documentation/).
+
+= Is Site Kit free? =
+
+The Site Kit plugin is free and open source, and will remain so. Individual Google products included in Site Kit are subject to standard terms and fees (if any) for those products.
+
+= What are the minimum requirements for Site Kit? =
+
+In order to successfully install and use Site Kit, your site must meet the following requirements:
+
+* WordPress version 5.2+
+* PHP version 5.6+
+* Modern browser – Internet Explorer is not supported
+* Is publicly accessible – it isn’t in maintenance mode, accessible only via password, or otherwise blocked
+* REST API is available – Site Kit must be able to communicate via REST API with Google services. To ensure that the REST API is available for your site, go to Tools > Site Health.
+
+= Why is my dashboard showing “gathering data†and none of my service data? =
+
+It can take a few days after connecting Site Kit to a Google service for data to begin to display in your dashboard. The “gathering data†message typically appears when you’ve recently set up a Google service (i.e. just created a new Analytics account) and/or your site is new, and data is not yet available for display.
+
+If you are still seeing this message after a few days, feel free to get in touch with us on the [support forum](https://wordpress.org/support/plugin/google-site-kit/).
+
+= Why aren’t any ads appearing on my site after I connected AdSense? =
+
+If you’re new to AdSense when you connect via Site Kit, your new AdSense account and your site will need to be manually reviewed and approved for ads by the AdSense team. Ads will not display until your account and site have been approved. [Check out this guide for more information about the approval process and timeline.](https://support.google.com/adsense/answer/76228)
+
+You can check your approval status in Site Kit by going to **Settings > Connected Services > AdSense** and clicking **Check your site status**. This link will direct you to AdSense. If you see “Ready,†your account and site have been approved and should be displaying ads. If you see “Getting ready…,†your account and site are still under review and your site will not display ads until they have been approved.
+
+If Site Kit has successfully added the AdSense snippet to your site and your account and site have been approved, but your site is still not showing ads, [contact the AdSense Help Center for assistance](https://support.google.com/adsense/#topic=3373519).
+
+You can find more information on how Site Kit works with AdSense in our [Managing AdSense guide](https://sitekit.withgoogle.com/documentation/using-site-kit/managing-adsense/).
+
+= Is Site Kit GDPR compliant? =
+
+When using Site Kit, site owners are responsible for managing notice and consent requirements – including GDPR requirements – as described in [Google’s Terms of Service](https://policies.google.com/terms).
+
+By default, Site Kit does anonymize IP addresses upon activation of the Google Analytics module. In addition, Site Kit provides a mechanism in the form of a simple API for cookie consent plugins to integrate with Site Kit and prevent Site Kit's Google service snippets from being rendered on a page if the user has not granted consent. More information about how this API works is available in [this GitHub issue](https://github.com/google/site-kit-wp/issues/2087).
+
+= Where can I get additional support? =
+
+Please create a new topic on our [WordPress.org support forum](https://wordpress.org/support/plugin/google-site-kit/). Be sure to follow the [support forum guidelines](https://wordpress.org/support/guidelines/) when posting.
+
+== Changelog ==
+
+= 1.89.0 =
+
+**Enhanced**
+
+* Update AdSense tag to include Site Kit platform host ID. See [#6132](https://github.com/google/site-kit-wp/issues/6132).
+* Update Google API PHP client services library for new Tag Manager endpoints. See [#6076](https://github.com/google/site-kit-wp/issues/6076).
+* Update link style within error notices. See [#5975](https://github.com/google/site-kit-wp/issues/5975).
+* Implement new design for User Input questions. See [#5890](https://github.com/google/site-kit-wp/issues/5890).
+* Update User Input survey questions for v2. See [#5888](https://github.com/google/site-kit-wp/issues/5888).
+* Prevent users from changing the Google Analytics 4 configuration when they don't have access to the currently configured Universal Analytics property. See [#5886](https://github.com/google/site-kit-wp/issues/5886).
+* Include a link to "Edit in Tag Manager" when viewing the Tag Manager module settings. See [#5174](https://github.com/google/site-kit-wp/issues/5174).
+* Improve instructions in Optimize setup and settings. See [#4064](https://github.com/google/site-kit-wp/issues/4064).
+
+**Fixed**
+
+* Fix Google Analytics 4 settings toggle behaviour when GA4 is not connected. See [#6271](https://github.com/google/site-kit-wp/issues/6271).
+
+= 1.88.0 =
+
+**Enhanced**
+
+* Render one-off tooltips in a portal. See [#6049](https://github.com/google/site-kit-wp/issues/6049).
+* Update code integrating with Gutenberg to use React hooks instead, following the new WordPress version requirement of 5.2. See [#5876](https://github.com/google/site-kit-wp/issues/5876).
+* Remove now unnecessary polyfills for WordPress versions older than 5.2, according to new version requirement. See [#5875](https://github.com/google/site-kit-wp/issues/5875).
+* Raise minimum WordPress version requirement from 4.7 to 5.2. See [#5874](https://github.com/google/site-kit-wp/issues/5874).
+* Show Measurement ID instead of Property ID in Analytics 4 Property Select Dropdown when there is an existing GA4 Tag. See [#5145](https://github.com/google/site-kit-wp/issues/5145).
+* Link the Site Kit logo on the entity dashboard to the main dashboard. See [#4793](https://github.com/google/site-kit-wp/issues/4793).
+
+**Fixed**
+
+* Avoid using _n() as a shortcut for singular/plural without using a number. See [#6069](https://github.com/google/site-kit-wp/issues/6069).
+* Update Tooltip styles to match GM2+ designs. See [#6059](https://github.com/google/site-kit-wp/issues/6059).
+* Fix bug where the GA4 reminder tooltip in Analytics Settings was not appearing properly. See [#6045](https://github.com/google/site-kit-wp/issues/6045).
+* Fix console error when viewing CoreSiteBannerNotifications stories. See [#5978](https://github.com/google/site-kit-wp/issues/5978).
+* Increase size of banner icons in setup notification. See [#5934](https://github.com/google/site-kit-wp/issues/5934).
+* Prevent dashboard from crashing when async SVG fails to load. See [#5605](https://github.com/google/site-kit-wp/issues/5605).
+
+= 1.87.0 =
+
+**This version marks the 100th release of Site Kit 🎉**
+
+**Enhanced**
+
+* Implement custom Analytics events for the GA4 Activation Banner. See [#6042](https://github.com/google/site-kit-wp/issues/6042).
+* Update the `ReportError` component to add the module slug to the insufficient error codes. See [#5987](https://github.com/google/site-kit-wp/issues/5987).
+* Ensure Banner Notifications stay visible and display a spinner when navigating to links via the CTA. See [#5974](https://github.com/google/site-kit-wp/issues/5974).
+* Enhance the BannerNotification component to better support a description which is a React element. See [#5972](https://github.com/google/site-kit-wp/issues/5972).
+* Add a `googlesitekit.components` global and entrypoint with Material 2 components. See [#5958](https://github.com/google/site-kit-wp/issues/5958).
+* Send active consumers data alongside the request to refresh an access token. See [#5569](https://github.com/google/site-kit-wp/issues/5569).
+* Update shared user metadata when accessing shared dashboard. See [#5568](https://github.com/google/site-kit-wp/issues/5568).
+* Dismiss main dashboard sharing tour if sharing settings tour is shown first. See [#5520](https://github.com/google/site-kit-wp/issues/5520).
+* Add multi-module support to module recovery API endpoint. See [#5298](https://github.com/google/site-kit-wp/issues/5298).
+* Update PageSpeed Insights widget to avoid layout shifts between loading and loaded states. See [#4878](https://github.com/google/site-kit-wp/issues/4878).
+
+**Changed**
+
+* Update and simplify GitHub workflows to use v3 version of `setup-node` action. See [#5786](https://github.com/google/site-kit-wp/issues/5786).
+
+**Fixed**
+
+* Fix bug that could cause a notification view event to be sent even when the notification doesn't appear. See [#6023](https://github.com/google/site-kit-wp/issues/6023).
+* Fix bug that caused AdSense graphics in CTA banner to be loaded when not needed. See [#6006](https://github.com/google/site-kit-wp/issues/6006).
+* Update the error boundary component styling to provide appropriate spacing between the main CTA button and the link to "Report this problem". See [#6005](https://github.com/google/site-kit-wp/issues/6005).
+* Fix module settings open/close issue when any key is pressed. See [#5915](https://github.com/google/site-kit-wp/issues/5915).
+* Fix bug that caused errors to appear in Analytics module when Tag Manager module is not available. See [#5074](https://github.com/google/site-kit-wp/issues/5074).
+
+= 1.86.0 =
+
+**Enhanced**
+
+* Measure interactions with Thank with Google supporter wall banner notification. See [#6014](https://github.com/google/site-kit-wp/issues/6014).
+* Measure interactions when changing Thank with Google configuration. See [#6013](https://github.com/google/site-kit-wp/issues/6013).
+* Measure interactions related to publication setup for Thank with Google. See [#6012](https://github.com/google/site-kit-wp/issues/6012).
+* Update Thank with Google copy in settings and setup screens. See [#5963](https://github.com/google/site-kit-wp/issues/5963).
+* Adjust copy in GA4 banner to exclude full-stops/periods. See [#5927](https://github.com/google/site-kit-wp/issues/5927).
+* Update "translators" placeholder comments when there is only one placeholder in a localization string. See [#5924](https://github.com/google/site-kit-wp/issues/5924).
+* Hide help tooltip in GA4 settings screen after a property is selected. See [#5921](https://github.com/google/site-kit-wp/issues/5921).
+* Fix bug that could cause user without Analytics access to see incorrect Analytics update UI in GA4 activation banner. See [#5912](https://github.com/google/site-kit-wp/issues/5912).
+* Only request Analytics edit scopes in the GA4 Activation banner when required to create a new property. See [#5882](https://github.com/google/site-kit-wp/issues/5882).
+* Allow WordPress Multisite network activation of Site Kit (currently only for per-site use). See [#5871](https://github.com/google/site-kit-wp/issues/5871).
+* Add default title to the Supporter Wall widget for Thank with Google. See [#5785](https://github.com/google/site-kit-wp/issues/5785).
+* Add more context to the "Supporter Wall" setting in Thank with Google settings. See [#5756](https://github.com/google/site-kit-wp/issues/5756).
+* Show user account info in user menu. See [#5724](https://github.com/google/site-kit-wp/issues/5724).
+* Add user account email to "Details" link to improve deep-link user experience. See [#5642](https://github.com/google/site-kit-wp/issues/5642).
+* Add a "Retry" button for most errors in the plugin, except for some auth and other select errors. See [#5494](https://github.com/google/site-kit-wp/issues/5494).
+
+**Fixed**
+
+* Require modules to be active when making API requests against them. See [#5970](https://github.com/google/site-kit-wp/issues/5970).
+* Fix bug that could cause GA4 Success banner after activation not to appear. See [#5945](https://github.com/google/site-kit-wp/issues/5945).
+* Fix bug in GA4 activation banner setup that could cause a loading screen to remain when a network error is encountered. See [#5928](https://github.com/google/site-kit-wp/issues/5928).
+
+= 1.85.0 =
+
+**Enhanced**
+
+* Prevent loading plugin core if minimum WordPress version is not met. See [#5926](https://github.com/google/site-kit-wp/issues/5926).
+* Show banner notification to sites using a WordPress version older than 5.2 to inform about upcoming version requirement change. See [#5873](https://github.com/google/site-kit-wp/issues/5873).
+* Hide the "Reset sharing permissions" button when settings are already using the default settings. See [#5840](https://github.com/google/site-kit-wp/issues/5840).
+* Improve reliability of the check for SSL when determining Thank with Google module availability. See [#5806](https://github.com/google/site-kit-wp/issues/5806).
+* Include an option to "Edit in Publisher Center" in the Thank with Google settings view. See [#5755](https://github.com/google/site-kit-wp/issues/5755).
+* Update Thank with Google settings view to display without delay for consistency with other modules. See [#5750](https://github.com/google/site-kit-wp/issues/5750).
+* Add conditional reminder to set up the Supporter Wall widget for Thank with Google. See [#5538](https://github.com/google/site-kit-wp/issues/5538).
+* Add check for Site Kit service connectivity to pre-setup checks. See [#4628](https://github.com/google/site-kit-wp/issues/4628).
+
+**Fixed**
+
+* Add an external link indicator to the "Learn more about GA4" link in the GA4 Activation Banner. See [#5930](https://github.com/google/site-kit-wp/issues/5930).
+* Ensure the GA4 Activation Banner does not appear on the Entity Dashboard when in view only mode. See [#5870](https://github.com/google/site-kit-wp/issues/5870).
+* Skip Search Console requests on view-only dashboard when not shared with the user. See [#5815](https://github.com/google/site-kit-wp/issues/5815).
+* Update Thank with Google setup and settings views for consistency with other modules and major browsers. See [#5689](https://github.com/google/site-kit-wp/issues/5689).
+* Ensure the AdSense Linked status is correctly available in the Top Earning Pages widget when in view-only mode. See [#5493](https://github.com/google/site-kit-wp/issues/5493).
+* Ensure the user role select always displays properly based on current shareable roles. See [#5435](https://github.com/google/site-kit-wp/issues/5435).
+* Decouple core and modules from Analytics module availability. See [#5071](https://github.com/google/site-kit-wp/issues/5071).
+
+= 1.84.0 =
+
+**Enhanced**
+
+* Show an informative message on the GA4 Activation Banner for the variants of the Setup Banner where a GA4 property does exist, when "Set up a new property" is selected while the edit scope is missing. See [#5805](https://github.com/google/site-kit-wp/issues/5805).
+* Add default values for Thank with Google settings on the customization screen. See [#5757](https://github.com/google/site-kit-wp/issues/5757).
+* Fix layout for module names when displayed with badges on the Settings page in mobile viewports. See [#5749](https://github.com/google/site-kit-wp/issues/5749).
+* Improve layout of services badges in mobile viewport. See [#5746](https://github.com/google/site-kit-wp/issues/5746).
+* Show button to complete Google Analytics 4 setup in settings. See [#5621](https://github.com/google/site-kit-wp/issues/5621).
+* Add selector to retrieve meta-data for a given error. See [#5618](https://github.com/google/site-kit-wp/issues/5618).
+* Finalize Thank with Google links to the Publisher Center. See [#5537](https://github.com/google/site-kit-wp/issues/5537).
+* Remove legacy widget area constants. See [#5476](https://github.com/google/site-kit-wp/issues/5476).
+* Add a button to reset Dashboard Sharing permissions. See [#5445](https://github.com/google/site-kit-wp/issues/5445).
+* Update the icon on the button for exiting the "Edit roles" UI on the Dashboard Sharing modal. See [#5437](https://github.com/google/site-kit-wp/issues/5437).
+* Improve recoverable modules list handling in Dashboard Sharing. See [#5287](https://github.com/google/site-kit-wp/issues/5287).
+* Automatically continue creating/connecting a GA4 property on the GA4 Activation Banner upon return from the OAuth flow. See [#5282](https://github.com/google/site-kit-wp/issues/5282).
+* Redirect to the OAuth flow from the GA4 Activation Banner to provide the Analytics edit scope when needed. See [#5278](https://github.com/google/site-kit-wp/issues/5278).
+* Add a GA4 upgrade reminder notification for users who have not connected Google Analytics 4. See [#5273](https://github.com/google/site-kit-wp/issues/5273).
+* Add `createReducer` utility that uses Immer. See [#4864](https://github.com/google/site-kit-wp/issues/4864).
+
+**Changed**
+
+* Update the design of the "chip" components in the Thank with Google settings. See [#5754](https://github.com/google/site-kit-wp/issues/5754).
+* In the Analytics set up, change the wording when an existing Analytics property was found via GTM. See [#5648](https://github.com/google/site-kit-wp/issues/5648).
+* Remove unused `ModulesList` and `ModulesListItem`, and their related Storybook stories. Props GP391018. See [#5471](https://github.com/google/site-kit-wp/issues/5471).
+
+**Fixed**
+
+* Ensure GA4 activation banner is displayed when returning from granting additional scopes after setting up GA4 instead of generic success banner. See [#5837](https://github.com/google/site-kit-wp/issues/5837).
+* Move the GA4 Activation Banner above the Zero State Banners in the list of banner notifications so that it shows up with higher priority. See [#5823](https://github.com/google/site-kit-wp/issues/5823).
+* Fix issue with buttons in Thank with Google settings on very small screens. See [#5752](https://github.com/google/site-kit-wp/issues/5752).
+* Fix color selection outline in Thank with Google settings. See [#5751](https://github.com/google/site-kit-wp/issues/5751).
+* Fix React `StrictMode` warning when using Material button tooltips in development mode. See [#5378](https://github.com/google/site-kit-wp/issues/5378).
+* Fix issues in permutation site URLs with multi-byte UTF-8 IDN domains. See [#4776](https://github.com/google/site-kit-wp/issues/4776).
+
+= 1.83.0 =
+
+**Enhanced**
+
+* Fix Thank with Google button and counter margins. See [#5744](https://github.com/google/site-kit-wp/issues/5744).
+* Add wrapping element to inline Thank With Google CTA button and counter. See [#5743](https://github.com/google/site-kit-wp/issues/5743).
+* Correct the size of the Thank with Google setup graphic. See [#5740](https://github.com/google/site-kit-wp/issues/5740).
+* Update the wording on the Thank with Google "setup publication" screen. See [#5738](https://github.com/google/site-kit-wp/issues/5738).
+* Add the Thank with Google Supporter Wall Widget to settings. See [#5736](https://github.com/google/site-kit-wp/issues/5736).
+* Update Thank with Google links to lead to appropriate publication center pages. See [#5722](https://github.com/google/site-kit-wp/issues/5722).
+* Limit shared requests for AdSense reports to metrics and dimensions used by the Site Kit dashboard. See [#5712](https://github.com/google/site-kit-wp/issues/5712).
+* Require SSL for Thank with Google to be enabled. See [#5710](https://github.com/google/site-kit-wp/issues/5710).
+* Fix inconsistencies with strings which are intended to be the same. See [#5659](https://github.com/google/site-kit-wp/issues/5659).
+* On the modules headers in the Settings > Connected Services tab, update the status text and show a CTA for continuing the module setup. See [#5620](https://github.com/google/site-kit-wp/issues/5620).
+* Use Google Account chooser URLs for external service/report URLs. See [#5548](https://github.com/google/site-kit-wp/issues/5548).
+* Add WP admin pointer for view-only dashboard access "Site Kit" menu item. See [#5486](https://github.com/google/site-kit-wp/issues/5486).
+* Disable AdSense "Check your site status" link while settings are loading to prevent unexpected behavior. See [#5410](https://github.com/google/site-kit-wp/issues/5410).
+* Add "Request access" button to permission error messages for modules where their service supports it. See [#5308](https://github.com/google/site-kit-wp/issues/5308).
+* Show a tooltip to acknowledge dismissing the GA4 Activation Banner. See [#5279](https://github.com/google/site-kit-wp/issues/5279).
+* Enable the GA4 Activation Banner create/connect a property and measurement ID. See [#5277](https://github.com/google/site-kit-wp/issues/5277).
+* Add a dropdown/toggle to GA4 activation banner when there is an existing GA4 property. See [#5276](https://github.com/google/site-kit-wp/issues/5276).
+* Remove zeroDataStates feature flag and unused code. See [#5148](https://github.com/google/site-kit-wp/issues/5148).
+
+**Changed**
+
+* Update copy on the Thank with Google "No account" setup step. See [#5739](https://github.com/google/site-kit-wp/issues/5739).
+* Update Prettier dependency and update automated source code formatting. See [#5541](https://github.com/google/site-kit-wp/issues/5541).
+* Update Visual Regression test code to run on ARM-based Macs. See [#4619](https://github.com/google/site-kit-wp/issues/4619).
+
+**Fixed**
+
+* Prevent updating Banner Notification component state when unmounted. See [#5760](https://github.com/google/site-kit-wp/issues/5760).
+* Fix placement label issue on the Thank with Google settings page. See [#5737](https://github.com/google/site-kit-wp/issues/5737).
+* Prefix all `keyframes` names to avoid global namespace conflict. See [#5662](https://github.com/google/site-kit-wp/issues/5662).
+* Fix propType warnings in the `ImageRadio` component. See [#5639](https://github.com/google/site-kit-wp/issues/5639).
+* Update the `ZeroDataStateNotifications` component to not attempt data requests for recoverable modules in view-only context. See [#5505](https://github.com/google/site-kit-wp/issues/5505).
+* Fix duplicate error-related messaging in Analytics settings when admin does not have access. See [#5429](https://github.com/google/site-kit-wp/issues/5429).
+
+= 1.82.0 =
+
+**Added**
+
+* Add the Google Analytics 4 Activation Banner to the Entity Dashboard. See [#5673](https://github.com/google/site-kit-wp/issues/5673).
+* Implement the design for the Success component from the Analytics-4 module. See [#5274](https://github.com/google/site-kit-wp/issues/5274).
+* Add logic for GA4 Activation banner timing. See [#5272](https://github.com/google/site-kit-wp/issues/5272).
+* Add a "button with spinner" component. See [#5271](https://github.com/google/site-kit-wp/issues/5271).
+
+**Enhanced**
+
+* Limit shared requests for Analytics reports to metrics and dimensions used by the Site Kit dashboard. See [#5711](https://github.com/google/site-kit-wp/issues/5711).
+* Flatten Thank with Google placement options in settings. See [#5683](https://github.com/google/site-kit-wp/issues/5683).
+* Show a list of features on the Thank with Google disconnection modal. See [#5661](https://github.com/google/site-kit-wp/issues/5661).
+* Ensure Thank with Google API results are filtered properly. See [#5653](https://github.com/google/site-kit-wp/issues/5653).
+* Update Thank with Google JS snippet parameters to reflect API updates. See [#5535](https://github.com/google/site-kit-wp/issues/5535).
+* Truncate long usernames in Dashboard Sharing. See [#5500](https://github.com/google/site-kit-wp/issues/5500).
+* Only allow users with Tag Manager access to edit Tag Manager settings in the UI. See [#5495](https://github.com/google/site-kit-wp/issues/5495).
+* Add the "Get Help" link to the compatibility error notice. See [#5483](https://github.com/google/site-kit-wp/issues/5483).
+* Update tooltip styles. See [#5444](https://github.com/google/site-kit-wp/issues/5444).
+* Refresh user permissions on module recovery. See [#5416](https://github.com/google/site-kit-wp/issues/5416).
+
+**Fixed**
+
+* Fix js errors in the storybook stories. See [#5585](https://github.com/google/site-kit-wp/issues/5585).
+
+= 1.81.0 =
+
+**Enhanced**
+
+* Update the Thank with Google logo. See [#5655](https://github.com/google/site-kit-wp/issues/5655).
+* Add Thank with Google PHP client library. See [#5650](https://github.com/google/site-kit-wp/issues/5650).
+* Add a help link to sign in screen when Dashboard Sharing has been enabled by another admin. See [#5559](https://github.com/google/site-kit-wp/issues/5559).
+* Add a "Get help" link to Ad Blocker warning for AdSense module. See [#5558](https://github.com/google/site-kit-wp/issues/5558).
+* Add Thank with Google API functionality and scopes. See [#5534](https://github.com/google/site-kit-wp/issues/5534).
+* Implement UI for the Thank with Google settings. See [#5531](https://github.com/google/site-kit-wp/issues/5531).
+* Add the Thank with Google Setup UI. See [#5529](https://github.com/google/site-kit-wp/issues/5529).
+* Add "get help" links to error messages. See [#5507](https://github.com/google/site-kit-wp/issues/5507).
+* Update support documentation links to use the new URL structure. See [#5485](https://github.com/google/site-kit-wp/issues/5485).
+* Add a "get help" link to the message that appears when a request to the authentication proxy fails. See [#5484](https://github.com/google/site-kit-wp/issues/5484).
+* Add the "get help" link to the error message displayed when an invalid nonce is provided. See [#5482](https://github.com/google/site-kit-wp/issues/5482).
+* Add a help link to the "site URL has changed" notice when Site Kit detects your site URL has changed. See [#5481](https://github.com/google/site-kit-wp/issues/5481).
+* Determine and show whether and where the Thank with Google supporter wall widget is placed. See [#5462](https://github.com/google/site-kit-wp/issues/5462).
+* Implement Thank with Google settings view UI. See [#5456](https://github.com/google/site-kit-wp/issues/5456).
+* Add new "Thank with Google: Supporter Wall" WordPress widget. See [#5451](https://github.com/google/site-kit-wp/issues/5451).
+* Improve keyboard accessibility/behaviour when selecting user roles in Dashboard Sharing modal. See [#5440](https://github.com/google/site-kit-wp/issues/5440).
+
+**Fixed**
+
+* Remove radio button from top-level Thank with Google "Manual" position control. See [#5623](https://github.com/google/site-kit-wp/issues/5623).
+
+= 1.80.0 =
+
+**Enhanced**
+
+* Update the open text survey question entry field to allow multiline text input. See [#5612](https://github.com/google/site-kit-wp/issues/5612).
+* Update the Thank with Google module's owned settings. See [#5587](https://github.com/google/site-kit-wp/issues/5587).
+* Include specific copy for Thank with Google on the setup success banner. See [#5536](https://github.com/google/site-kit-wp/issues/5536).
+* Add automatic status updates to Thank with Google setup screen. See [#5532](https://github.com/google/site-kit-wp/issues/5532).
+* Implement the Thank with Google setup UI for the no publication scenario. See [#5528](https://github.com/google/site-kit-wp/issues/5528).
+* Implement the Thank with Google setup UI for the publication in review scenario. See [#5527](https://github.com/google/site-kit-wp/issues/5527).
+* Implement the Thank with Google setup UI. See [#5526](https://github.com/google/site-kit-wp/issues/5526).
+* Implement Thank with Google setup UI for the publication setup completed scenario. See [#5525](https://github.com/google/site-kit-wp/issues/5525).
+* Show selected Thank with Google color in settings view. See [#5524](https://github.com/google/site-kit-wp/issues/5524).
+* Update the AdSense settings to display the site status when available. See [#5503](https://github.com/google/site-kit-wp/issues/5503).
+* Improve notice UX/sizing when adjusting Dashboard Sharing settings "view access" setting. See [#5489](https://github.com/google/site-kit-wp/issues/5489).
+* When setup fails with an error from the proxy, show a "get help" link that leads to the relevant support page for the given error code. See [#5479](https://github.com/google/site-kit-wp/issues/5479).
+* Improve validation for Thank with Google settings. See [#5461](https://github.com/google/site-kit-wp/issues/5461).
+* Add a new enhanced radio button component that allows for using graphics for choices. See [#5459](https://github.com/google/site-kit-wp/issues/5459).
+* Add "US only" label to Thank with Google module. See [#5457](https://github.com/google/site-kit-wp/issues/5457).
+* Scaffold Thank with Google module setup flow logic for different scenarios. See [#5455](https://github.com/google/site-kit-wp/issues/5455).
+* Add new selector `getAccountChooserURL` to the `core/user` store. See [#5453](https://github.com/google/site-kit-wp/issues/5453).
+* Implement Thank with Google tag placement infrastructure. See [#5450](https://github.com/google/site-kit-wp/issues/5450).
+* Update module recovery notification to display feedback for errors. See [#5318](https://github.com/google/site-kit-wp/issues/5318).
+
+**Fixed**
+
+* Update location of module recovery alert to be grouped with normal notifications. See [#5550](https://github.com/google/site-kit-wp/issues/5550).
+* Prevent error from appearing when sharing data exists for a non-existent module. See [#5488](https://github.com/google/site-kit-wp/issues/5488).
+* Avoid tracking Google Analytics events for Dashboard Sharing settings when no change is made. See [#5487](https://github.com/google/site-kit-wp/issues/5487).
+* Fix permissions modal issue on non Site Kit pages. See [#5424](https://github.com/google/site-kit-wp/issues/5424).
+
+= 1.79.1 =
+
+**Fixed**
+
+* Fix an issue that could cause Site Kit's dashboard to crash when a theme/plugin loads the Google Web Font Loader JS on Site Kit screens. See [#5572](https://github.com/google/site-kit-wp/issues/5572).
+
+= 1.79.0 =
+
+**Enhanced**
+
+* Show "Recoverable Modules" component for Analytics section of the Search Funnel widget, when on the view-only Dashboard and the Analytics module is in a recoverable state. See [#5470](https://github.com/google/site-kit-wp/issues/5470).
+* Add "experimental" label to Thank with Google module. See [#5452](https://github.com/google/site-kit-wp/issues/5452).
+* Refine the _Escape_ keyboard shortcut in the Dashboard Sharing modal to exit the "Edit Roles" view when its active, rather than closing the modal. See [#5442](https://github.com/google/site-kit-wp/issues/5442).
+* Update the text on the view-only splash screen. See [#5441](https://github.com/google/site-kit-wp/issues/5441).
+* Extend the Dashboard Sharing feature tour to include steps for the settings interface. See [#5382](https://github.com/google/site-kit-wp/issues/5382).
+* Update design of the dashboard CTA for connecting AdSense. See [#5260](https://github.com/google/site-kit-wp/issues/5260).
+* Update the plugin styling in line with Google Material 3. See [#5254](https://github.com/google/site-kit-wp/issues/5254).
+
+**Fixed**
+
+* Improve "View only" menu icon alignment when viewing shared dashboard. See [#5446](https://github.com/google/site-kit-wp/issues/5446).
+
+= 1.78.0 =
+
+**Added**
+
+* Add a "retry" button for HTTP requests that encountered an error on the dashboard. See [#5236](https://github.com/google/site-kit-wp/issues/5236).
+
+**Enhanced**
+
+* Show the zero-data view of the AdSense Overview widget when the `adsenseSetupV2` feature flag is enabled and there is no data. See [#5385](https://github.com/google/site-kit-wp/issues/5385).
+* Update view-only dashboard to use a new placeholder for widgets that rely on recoverable modules. See [#5376](https://github.com/google/site-kit-wp/issues/5376).
+* Clarify "All admins" wording in Dashboard Sharing settings. See [#5374](https://github.com/google/site-kit-wp/issues/5374).
+* Rollback any unsaved changes to dashboard sharing settings when closing the dialog. See [#5372](https://github.com/google/site-kit-wp/issues/5372).
+* Update the warning notice that appears on the Dashboard Sharing modal when changing settings. See [#5371](https://github.com/google/site-kit-wp/issues/5371).
+* Add foundation for Thank with Google settings. See [#5366](https://github.com/google/site-kit-wp/issues/5366).
+* Add foundation for new Thank with Google feature (JS). See [#5365](https://github.com/google/site-kit-wp/issues/5365).
+* Add foundation for new Thank with Google feature (PHP). See [#5364](https://github.com/google/site-kit-wp/issues/5364).
+* Display a message with tooltip instead of disabled Dashboard Sharing view management dropdown. See [#5352](https://github.com/google/site-kit-wp/issues/5352).
+* Improve the notice first shown to non administrators on the initial splash screen. See [#5347](https://github.com/google/site-kit-wp/issues/5347).
+* Add a feature tour for the dashboard sharing. See [#5328](https://github.com/google/site-kit-wp/issues/5328).
+* Move tracking related data into its own global `_googlesitekitTrackingData` variable. See [#5117](https://github.com/google/site-kit-wp/issues/5117).
+* Update tag placement functionality to allow using tags in non-production environments. See [#4774](https://github.com/google/site-kit-wp/issues/4774).
+* Add Dashboard Sharing's Active Modules and Sharable Modules to Site Health. See [#4534](https://github.com/google/site-kit-wp/issues/4534).
+
+**Fixed**
+
+* Fix default Dashboard Navigation section for the view-only Dashboard. See [#5388](https://github.com/google/site-kit-wp/issues/5388).
+* Do not attempt to make requests for module data where the module is shared and also recoverable. See [#5383](https://github.com/google/site-kit-wp/issues/5383).
+* Fix service information alignment in the view-only menu. See [#5381](https://github.com/google/site-kit-wp/issues/5381).
+* Remove "view limited dashboard" sign-in option when only one admin exists on the site. See [#5380](https://github.com/google/site-kit-wp/issues/5380).
+* Prevent data requests on shared dashboard for connected but non-shared modules. See [#5379](https://github.com/google/site-kit-wp/issues/5379).
+* Fix conditions for showing the notice in the bottom of the Dashboard Sharing modal when sharing settings are changed. See [#5375](https://github.com/google/site-kit-wp/issues/5375).
+* Fix the overlapping of some items in the plugin header in small viewports when dashboard sharing is enabled. See [#5373](https://github.com/google/site-kit-wp/issues/5373).
+* Update the tooltip for the "Managed by..." info icon on the Dashboard Sharing modal, when the module management has been set to "Only me". See [#5370](https://github.com/google/site-kit-wp/issues/5370).
+* Fix bug where a secondary admin would always take ownership of Search Console when connecting Site Kit. See [#5363](https://github.com/google/site-kit-wp/issues/5363).
+* Fix dashboard sharing menu footer visibility issue on iPhone. See [#5360](https://github.com/google/site-kit-wp/issues/5360).
+* Fix Dashboard Sharing modal position on small screens. See [#5358](https://github.com/google/site-kit-wp/issues/5358).
+* Do not show "Create Goals" widget on shared dashboard. See [#5351](https://github.com/google/site-kit-wp/issues/5351).
+* Don't show the "Link Analytics and AdSense" CTA on the view-only Dashboard. See [#5346](https://github.com/google/site-kit-wp/issues/5346).
+* Prevent errors on the view-only dashboard from requesting module settings unnecessarily. See [#5310](https://github.com/google/site-kit-wp/issues/5310).
+* Prevent "Can't access necessary data" notice flicker when activating Analytics via GTM setup. See [#5244](https://github.com/google/site-kit-wp/issues/5244).
+* Fix date range selector sometimes remaining open but hidden after selection. See [#4735](https://github.com/google/site-kit-wp/issues/4735).
+
+= 1.77.0 =
+
+**Enhanced**
+
+* Ensure only Search Console data appears in widgets when Analytics data is not shared. See [#5296](https://github.com/google/site-kit-wp/issues/5296).
+* Add module recovery alert to the dashboard. See [#5256](https://github.com/google/site-kit-wp/issues/5256).
+* Require `storeName` parameter for `createErrorStore` function, to provide it as context for errors. See [#5235](https://github.com/google/site-kit-wp/issues/5235).
+* Update the `getErrorForSelector` selector to include selector details in the returning error. See [#5234](https://github.com/google/site-kit-wp/issues/5234).
+* Ensure only users with the `DELEGATE_MODULE_SHARING_MANAGEMENT` permission can modify the `management` value for a module's sharing settings. See [#5229](https://github.com/google/site-kit-wp/issues/5229).
+* Introduce new permissions for viewing Site Kit on the WordPress Dashboard, and in the Admin Bar. See [#5202](https://github.com/google/site-kit-wp/issues/5202).
+* Update asset bootstrapping for non-admins. See [#5189](https://github.com/google/site-kit-wp/issues/5189).
+* Limit widget areas and contexts displayed on the shared dashboard to modules which are shared with the user. See [#5161](https://github.com/google/site-kit-wp/issues/5161).
+* Expose owned module settings to client. See [#5121](https://github.com/google/site-kit-wp/issues/5121).
+* Enhance `PreviewBlock` for compatibility with `prefers-reduced-motion`. See [#5055](https://github.com/google/site-kit-wp/issues/5055).
+* Update the setup error screen to include an error message returned from the proxy server. See [#5038](https://github.com/google/site-kit-wp/issues/5038).
+* Fix styles issue for report tables when they are in the gathering state. See [#4981](https://github.com/google/site-kit-wp/issues/4981).
+* Restrict editing module entity settings to users who have access, either by being the module owner or by having the module shared with them. See [#4825](https://github.com/google/site-kit-wp/issues/4825).
+* Implement module recovery alert notification. See [#4823](https://github.com/google/site-kit-wp/issues/4823).
+* Add settings modal to allow admins to configure Dashboard Sharing. See [#4822](https://github.com/google/site-kit-wp/issues/4822).
+* Add a new component that allows selecting user roles. See [#4821](https://github.com/google/site-kit-wp/issues/4821).
+* Implement new selectors for sharing settings. See [#4795](https://github.com/google/site-kit-wp/issues/4795).
+* Implement new actions for sharing settings. See [#4794](https://github.com/google/site-kit-wp/issues/4794).
+* Implement new selector for shared ownership modules. See [#4791](https://github.com/google/site-kit-wp/issues/4791).
+* Fix single-page dashboard header background colour when using a non-default WordPress admin color scheme. See [#4769](https://github.com/google/site-kit-wp/issues/4769).
+* Update admin notice messages to have `Site Kit by Google:` prefixes. Props carolinan. See [#4721](https://github.com/google/site-kit-wp/issues/4721).
+* Fix alignment issue of data block metric labels on small viewports. See [#4582](https://github.com/google/site-kit-wp/issues/4582).
+* Allow view-only users to make data requests for shared modules with owners. See [#4532](https://github.com/google/site-kit-wp/issues/4532).
+* Redirect from the splash screen to the dashboard for users who are able to view the shared dashboard. See [#4525](https://github.com/google/site-kit-wp/issues/4525).
+* Update styles of the PageSpeed Insights plugin to show footer correctly on mobile. See [#4497](https://github.com/google/site-kit-wp/issues/4497).
+* Redirect back to Site Kit when an error occurs during Google sign-in instead of the WordPress dashboard. See [#3160](https://github.com/google/site-kit-wp/issues/3160).
+
+**Changed**
+
+* Rename AdSense REST data point `GET:earnings` to `GET:report`. See [#4914](https://github.com/google/site-kit-wp/issues/4914).
+
+**Fixed**
+
+* Fix bug that could cause Analytics properties not to be pre-selected properly during setup. See [#5356](https://github.com/google/site-kit-wp/issues/5356).
+* Show widget area headings/subheadings regardless of number of widgets. See [#5332](https://github.com/google/site-kit-wp/issues/5332).
+* Fix a bug where a shared ownership module's owner was not updated if changed when saving the sharing settings for the first time. See [#5307](https://github.com/google/site-kit-wp/issues/5307).
+* Allow users with shared dashboard access to load assets and access REST endpoints. See [#5299](https://github.com/google/site-kit-wp/issues/5299).
+* Prevent admin-related notifications from appearing on view-only dashboard. See [#5295](https://github.com/google/site-kit-wp/issues/5295).
+* Make view-only menu visible on Shared Dashboard. See [#5255](https://github.com/google/site-kit-wp/issues/5255).
+* Update wording for the Analytics tracking exclusions switch. See [#5243](https://github.com/google/site-kit-wp/issues/5243).
+
+= 1.75.0 =
+
+**Enhanced**
+
+* Add new experimental Interaction to Next Paint field metric to PageSpeed dashboard widget. See [#5207](https://github.com/google/site-kit-wp/issues/5207).
+* Update the "Skip to view-only dashboard" button text. See [#5176](https://github.com/google/site-kit-wp/issues/5176).
+* Ensure that snippet toggle in Analytics and Tag Manager correctly inform about existing tags. See [#5143](https://github.com/google/site-kit-wp/issues/5143).
+* Update Analytics snippet toggle behavior to be disabled when the same property is set in the Tag Manager container. See [#5141](https://github.com/google/site-kit-wp/issues/5141).
+* Update Tag Manager container dropdowns to also include the container ID. See [#5108](https://github.com/google/site-kit-wp/issues/5108).
+* Update the Tag Manager `useExistingTagEffect` hook to use AMP container ID when in the primary AMP mode. See [#5044](https://github.com/google/site-kit-wp/issues/5044).
+* Ensure that the snippet toggle in Analytics settings only changes following the user modifying the selected property. See [#4974](https://github.com/google/site-kit-wp/issues/4974).
+* Include snippet toggle in Tag Manager setup flow whenever there is an existing tag. See [#4934](https://github.com/google/site-kit-wp/issues/4934).
+* Include snippet toggle in Analytics setup flow whenever there is an existing tag. See [#4913](https://github.com/google/site-kit-wp/issues/4913).
+* Update info in plugin header for users viewing a shared dashboard. See [#4826](https://github.com/google/site-kit-wp/issues/4826).
+* Limit widgets displayed on the shared dashboard to those which the user has access to. See [#4813](https://github.com/google/site-kit-wp/issues/4813).
+* Add UI for new AdSense setup flow. See [#4763](https://github.com/google/site-kit-wp/issues/4763).
+* Ensure that Tag Manager containers are no longer force-selected based on existing tags. See [#4713](https://github.com/google/site-kit-wp/issues/4713).
+* Remove functionality related to checking for existing Tag Manager tag permission. See [#4709](https://github.com/google/site-kit-wp/issues/4709).
+* Ensure that Analytics properties are no longer force-selected based on existing tags. See [#4703](https://github.com/google/site-kit-wp/issues/4703).
+* Remove functionality related to checking for existing Analytics tag permission. See [#4702](https://github.com/google/site-kit-wp/issues/4702).
+* Remove functionality related to checking for existing AdSense tag permission. See [#4627](https://github.com/google/site-kit-wp/issues/4627).
+* Allow dashboard sharing users to use REST routes when using dashboard sharing view mode. See [#4529](https://github.com/google/site-kit-wp/issues/4529).
+* Add new REST endpoint for updating dashboard sharing settings. See [#4481](https://github.com/google/site-kit-wp/issues/4481).
+
+**Fixed**
+
+* Ensure AdSense account ID and client ID are always set based on API response during setup. See [#5183](https://github.com/google/site-kit-wp/issues/5183).
+* Fix AdSense error message when user does not have an AdSense account. See [#5180](https://github.com/google/site-kit-wp/issues/5180).
+* Fix AdSense logo and progress bar placement in new setup flow. See [#5159](https://github.com/google/site-kit-wp/issues/5159).
+
+= 1.74.0 =
+
+**Enhanced**
+
+* Remove color from disabled tab in Search Console widget on dashboard when Search Console is gathering data. See [#5056](https://github.com/google/site-kit-wp/issues/5056).
+* Add `useViewContext` hook for retrieving the current view context. See [#5011](https://github.com/google/site-kit-wp/issues/5011).
+* Update internal event tracking to include user authentication state. See [#4846](https://github.com/google/site-kit-wp/issues/4846).
+* Add the new DashboardSharingSettingsButton component. See [#4820](https://github.com/google/site-kit-wp/issues/4820).
+* Hide Analytics goals CTA in view-only context. See [#4817](https://github.com/google/site-kit-wp/issues/4817).
+* Add a dropdown menu for users using the "view-only" dashboard sharing mode. See [#4812](https://github.com/google/site-kit-wp/issues/4812).
+* Allow users with shared dashboard access to navigate directly to the shared dashboard from the splash page. See [#4811](https://github.com/google/site-kit-wp/issues/4811).
+* Implement the view only splash screen. See [#4810](https://github.com/google/site-kit-wp/issues/4810).
+* Add an action to recover a module and a selector to get recoverable modules. See [#4803](https://github.com/google/site-kit-wp/issues/4803).
+* Implement UI for new AdSense setup site components. See [#4764](https://github.com/google/site-kit-wp/issues/4764).
+
+**Fixed**
+
+* Update the AdSense SetupMain component to show existing errors. See [#5107](https://github.com/google/site-kit-wp/issues/5107).
+* Avoid an unnecessary network request for Analytics settings on the Site Kit dashboard when Analytics is not active. See [#5091](https://github.com/google/site-kit-wp/issues/5091).
+* Add required versions of PHP and WP to plugin header. See [#5076](https://github.com/google/site-kit-wp/issues/5076).
+* Fix infinite loading state for components relying on gathering or zero data reports. See [#4542](https://github.com/google/site-kit-wp/issues/4542).
+
+= 1.73.0 =
+
+**Enhanced**
+
+* Update Google API client services library for latest AdSense API enhancements. See [#5092](https://github.com/google/site-kit-wp/issues/5092).
+* Update the `Learn More` link to point to the new documentation page. Props smamun19. See [#5077](https://github.com/google/site-kit-wp/issues/5077).
+* Update AdSense V2 state detection logic with new API return values. See [#5052](https://github.com/google/site-kit-wp/issues/5052).
+* Update AdSense V2 code constants to use new API capabilities. See [#5051](https://github.com/google/site-kit-wp/issues/5051).
+* Improve logic for handling timeouts for user surveys on the dashboard. See [#4925](https://github.com/google/site-kit-wp/issues/4925).
+* Update widget registration to declare associated modules. See [#4849](https://github.com/google/site-kit-wp/issues/4849).
+* Ensure permissions modal only appears for authenticated users. See [#4819](https://github.com/google/site-kit-wp/issues/4819).
+* Hide Idea Hub action buttons when viewing dashboard in view-only mode. See [#4816](https://github.com/google/site-kit-wp/issues/4816).
+* Update source links to hide on the view only dashboard. See [#4815](https://github.com/google/site-kit-wp/issues/4815).
+* Add UI for new AdSense components. See [#4762](https://github.com/google/site-kit-wp/issues/4762).
+* Extend and update custom capabilities for viewing dashboard and splash screens with logic for dashboard sharing. See [#4599](https://github.com/google/site-kit-wp/issues/4599).
+* Add REST endpoint for module recovery. See [#4533](https://github.com/google/site-kit-wp/issues/4533).
+
+**Fixed**
+
+* Ensure closed AdSense accounts are not considered for the AdSense account to use with the module. Props sancodes. See [#5050](https://github.com/google/site-kit-wp/issues/5050).
+* Remove lines below "gathering data" text on chart metric selection buttons. See [#5010](https://github.com/google/site-kit-wp/issues/5010).
+* Fix bug that could cause the incorrect notification to briefly appear when Analytics or Search Console is gathering data. See [#5008](https://github.com/google/site-kit-wp/issues/5008).
+* Add "gathering data" overlay to the All Traffic widget when Analytics is gathering data. See [#5006](https://github.com/google/site-kit-wp/issues/5006).
+* Fix zero data state message formatting issues. See [#5001](https://github.com/google/site-kit-wp/issues/5001).
+* Add "gathering data" and "zero data" headers to single URL ("entity") dashboard pages. See [#4983](https://github.com/google/site-kit-wp/issues/4983).
+* Update complete Analytics activation CTA for consistency with new zero data states activation CTA. See [#4966](https://github.com/google/site-kit-wp/issues/4966).
+* Fix authentication issue with WordPress security plugins/other plugins that modify/obscure the WordPress version number. See [#4963](https://github.com/google/site-kit-wp/issues/4963).
+* Fix Google chart labels to no longer be truncated due to lack of space. See [#4944](https://github.com/google/site-kit-wp/issues/4944).
+
+= 1.72.0 =
+
+**Enhanced**
+
+* Update documentation URLs. See [#4935](https://github.com/google/site-kit-wp/issues/4935).
+* Use alternate `viewContext` for non-authenticated users. See [#4814](https://github.com/google/site-kit-wp/issues/4814).
+* Implement modified snippet toggle component for enhanced AdSense setup flow. See [#4761](https://github.com/google/site-kit-wp/issues/4761).
+
+**Fixed**
+
+* Fix bug where user surveys would not trigger when viewing the dashboard. See [#5073](https://github.com/google/site-kit-wp/issues/5073).
+* When Analytics is gathering data, ensure "gathering data" is shown under All Users in the All Traffic widget. See [#5007](https://github.com/google/site-kit-wp/issues/5007).
+* Ensure WordPress dashboard notices appear in Site Kit. See [#4998](https://github.com/google/site-kit-wp/issues/4998).
+* Don't show the "gathering data" blue box CTA on the Admin Bar. See [#4986](https://github.com/google/site-kit-wp/issues/4986).
+* Fix styling issues with table view on mobile when no results are available. See [#4982](https://github.com/google/site-kit-wp/issues/4982).
+* Prevent selection of metrics in the Search Traffic widget when gathering data. See [#4967](https://github.com/google/site-kit-wp/issues/4967).
+* Disable All Traffic pie chart tabs when in gathering or zero data state. See [#4961](https://github.com/google/site-kit-wp/issues/4961).
+* Ensure consistent alignment of content in data blocks. See [#4946](https://github.com/google/site-kit-wp/issues/4946).
+* Fix gathering data message appearing too early on chart components. See [#4945](https://github.com/google/site-kit-wp/issues/4945).
+* Fix display of special characters used in the site title. See [#4852](https://github.com/google/site-kit-wp/issues/4852).
+
+= 1.71.0 =
+
+**Enhanced**
+
+* Update gathering data UI in WordPress Dashboard widget. See [#4908](https://github.com/google/site-kit-wp/issues/4908).
+* Update the Analytics Signup CTA on the WordPress Dashboard. See [#4868](https://github.com/google/site-kit-wp/issues/4868).
+* Store remote features as a persistent option, ensuring features remain enabled when Site Kit is disconnected or reset. See [#4861](https://github.com/google/site-kit-wp/issues/4861).
+* Add additional context to remote feature request. See [#4858](https://github.com/google/site-kit-wp/issues/4858).
+* Prevent surveys from triggering for non-authenticated users on a shared dashboard. See [#4806](https://github.com/google/site-kit-wp/issues/4806).
+* Add notifications to site header when Analytics and/or Search Console are still gathering data. See [#4698](https://github.com/google/site-kit-wp/issues/4698).
+* Update widgets to pass gathering data state to components. See [#4697](https://github.com/google/site-kit-wp/issues/4697).
+* Update CTA placement for the Search Funnel widget on mobile. See [#4695](https://github.com/google/site-kit-wp/issues/4695).
+* Improve the zero state design in the All Traffic Widget. See [#4675](https://github.com/google/site-kit-wp/issues/4675).
+
+**Fixed**
+
+* Ensure request for remote features is made on site connection. See [#4957](https://github.com/google/site-kit-wp/issues/4957).
+
+= 1.70.0 =
+
+**Enhanced**
+
+* Change remote-controlled features request to be cron-based, running twice daily. See [#4856](https://github.com/google/site-kit-wp/issues/4856).
+* Enable client to check meta-capabilities for Dashboard Sharing permissions. See [#4804](https://github.com/google/site-kit-wp/issues/4804).
+* Add the `hasModuleAccess` selector to the `core/modules` datastore. See [#4802](https://github.com/google/site-kit-wp/issues/4802).
+* Add `sharedOwnershipModules` to Site Kit module sharing data. See [#4790](https://github.com/google/site-kit-wp/issues/4790).
+* Update the WordPress Dashboard and Admin Bar with new "gathering data" UI for new sites. See [#4711](https://github.com/google/site-kit-wp/issues/4711).
+* Add the gathering data state to the `ReportTable` component. See [#4700](https://github.com/google/site-kit-wp/issues/4700).
+* Add the gathering data state to the GoogleChart component. See [#4696](https://github.com/google/site-kit-wp/issues/4696).
+* Update the CTA notices in the Search Funnel widget. See [#4694](https://github.com/google/site-kit-wp/issues/4694).
+* Add a notification for zero data to the Site Kit dashboard. See [#4693](https://github.com/google/site-kit-wp/issues/4693).
+* Update DataBlock component to display the new gathering state. See [#4692](https://github.com/google/site-kit-wp/issues/4692).
+* Extend some modules with service entity awareness and access checks. See [#4579](https://github.com/google/site-kit-wp/issues/4579).
+* Proactively refresh tokens for shared modules when Dashboard Sharing is enabled. See [#4524](https://github.com/google/site-kit-wp/issues/4524).
+* Provide client with Dashboard Sharing permissions when Dashboard Sharing is enabled. See [#4523](https://github.com/google/site-kit-wp/issues/4523).
+* Add `check-access` endpoint to modules for Dashboard Sharing. See [#4478](https://github.com/google/site-kit-wp/issues/4478).
+* Update the `View draft` button on the Idea Hub widget to display an icon instead of the text. See [#4266](https://github.com/google/site-kit-wp/issues/4266).
+
+**Fixed**
+
+* Fix OAuth setup loop when creating a new Analytics account. See [#4874](https://github.com/google/site-kit-wp/issues/4874).
+* Show only one notification at a time on the Site Kit dashboard. See [#4689](https://github.com/google/site-kit-wp/issues/4689).
+* Show error message when landing on module setup URL when the module is not active, or for an invalid module. See [#4654](https://github.com/google/site-kit-wp/issues/4654).
+* Update errors handling to correctly process `Forbidden` errors. See [#4543](https://github.com/google/site-kit-wp/issues/4543).
+
+= 1.69.0 =
+
+**Enhanced**
+
+* Persist `serviceSetupV2` feature flag also on reset, and redirect legacy module page URLs to the dashboard when the `unifiedDashboard` feature is active. See [#4865](https://github.com/google/site-kit-wp/issues/4865).
+* Remove legacy Analytics event for AdSense users. See [#4766](https://github.com/google/site-kit-wp/issues/4766).
+* Add AdSense site status to Site Kit's Site Health output. See [#4757](https://github.com/google/site-kit-wp/issues/4757).
+* Add a new datapoint to the AdSense module that returns information about sites associated with the current accountID. See [#4754](https://github.com/google/site-kit-wp/issues/4754).
+* Enhance lazy loading of sections on the unified dashboard to reduce layout shifts. See [#4641](https://github.com/google/site-kit-wp/issues/4641).
+* Update Idea Hub prompt banner notification with new design. See [#4514](https://github.com/google/site-kit-wp/issues/4514).
+* Simplify success banner notification for the unified dashboard. See [#1148](https://github.com/google/site-kit-wp/issues/1148).
+
+= 1.68.0 =
+
+**Enhanced**
+
+* Update plugin version to align with the current sprint. See [#4778](https://github.com/google/site-kit-wp/issues/4778).
+* Remove Module sharing settings on module disconnect. See [#4526](https://github.com/google/site-kit-wp/issues/4526).
+* Update sizing of input helper text to be consistent with Material styles. See [#4510](https://github.com/google/site-kit-wp/issues/4510).
+* Include all relevant query parameters in OAuth authentication URL. See [#2045](https://github.com/google/site-kit-wp/issues/2045).
+* Register site on the proxy before redirecting to it, in support for V2 setup flow. See [#2044](https://github.com/google/site-kit-wp/issues/2044).
+* Add support for paginated content to entity detection. See [#1911](https://github.com/google/site-kit-wp/issues/1911).
+* Support pages that don't resolve to a specific post on the Dashboard Search. See [#1592](https://github.com/google/site-kit-wp/issues/1592).
+
+**Fixed**
+
+* Fix scroll position when using header links on the Entity Dashboard page. See [#4741](https://github.com/google/site-kit-wp/issues/4741).
+
+= 1.50.0 =
+
+**Enhanced**
+
+* Improve post search autocomplete behaviour when typing during autocomplete API requests. See [#4665](https://github.com/google/site-kit-wp/issues/4665).
+* Update wording for AdSense CTA dismissal button. See [#4647](https://github.com/google/site-kit-wp/issues/4647).
+* Expose recoverable modules information to clients. See [#4527](https://github.com/google/site-kit-wp/issues/4527).
+* Update module classes to be sharing-aware. See [#4521](https://github.com/google/site-kit-wp/issues/4521).
+* Add support for automatically configuring Analytics with data from the service. See [#4208](https://github.com/google/site-kit-wp/issues/4208).
+* Add a new feature tour for the unified dashboard. See [#3947](https://github.com/google/site-kit-wp/issues/3947).
+* Update the cancel button on the module setup form to have a `Back` label when the setup process can't proceed. See [#1045](https://github.com/google/site-kit-wp/issues/1045).
+
+**Fixed**
+
+* Fix potential fatal error on PHP 8 with Idea Hub integration. See [#4738](https://github.com/google/site-kit-wp/issues/4738).
+* Fix a javascript error on the Analytics Unique Visitors tab of the Search Funnel widget. See [#4660](https://github.com/google/site-kit-wp/issues/4660).
+* Update the URL search input box to work correctly when HOME or END keys are pressed. See [#4584](https://github.com/google/site-kit-wp/issues/4584).
+* Update plugin header to avoid obstructing feature tours. See [#4453](https://github.com/google/site-kit-wp/issues/4453).
+
+= 1.49.1 =
+
+**Fixed**
+
+* Update Google Analytics 4 integration to use new `dataStreams` endpoint after breaking change in alpha API. See [#4677](https://github.com/google/site-kit-wp/issues/4677).
+
+= 1.49.0 =
+
+**Enhanced**
+
+* Update source links on unified dashboard widgets to be consistent across all widgets. See [#4570](https://github.com/google/site-kit-wp/issues/4570).
+* Annotate module endpoints which can be used with dashboard sharing. See [#4474](https://github.com/google/site-kit-wp/issues/4474).
+* Add `_googlesitekitDashboardSharingData` global data. See [#4473](https://github.com/google/site-kit-wp/issues/4473).
+* Update styling of items in the Site Kit header for consistency. See [#4457](https://github.com/google/site-kit-wp/issues/4457).
+* Implement new UI for entity dashboard header containing title and URL. See [#4428](https://github.com/google/site-kit-wp/issues/4428).
+* Update entity search field to only show a valid result when unfocused. See [#4427](https://github.com/google/site-kit-wp/issues/4427).
+* Update the help menu to include the AdSense help menu item in all places when the AdSense module is active. See [#4423](https://github.com/google/site-kit-wp/issues/4423).
+* Update Tag Manager setup and settings edit views with loading indicator while tags are being checked. See [#4311](https://github.com/google/site-kit-wp/issues/4311).
+* Update widgets to use the `useInViewSelect` hook to fetch reports. See [#4121](https://github.com/google/site-kit-wp/issues/4121).
+* Use only WordPress core's bundled dependencies instead of Site Kit's when integrating with the block editor. See [#4107](https://github.com/google/site-kit-wp/issues/4107).
+* Add the ability to programmatically disable modules using the `googlesitekit_available_modules` filter. Props henrywright. See [#3993](https://github.com/google/site-kit-wp/issues/3993).
+* Update the Idea Hub widget to display a spinner when saving, unsaving or dismissing an idea. See [#3907](https://github.com/google/site-kit-wp/issues/3907).
+
+**Fixed**
+
+* Fix potential off-screen widget rendering error when using `useInViewSelect`. See [#4642](https://github.com/google/site-kit-wp/issues/4642).
+* Fix incorrect URL search states when selecting an item from the autocomplete list. See [#4562](https://github.com/google/site-kit-wp/issues/4562).
+* Fix styling on "No results found" autocomplete message in Unified Dashboard. See [#4503](https://github.com/google/site-kit-wp/issues/4503).
+* Improve the spacing between section titles/subtitles in the Unified Dashboard. See [#4501](https://github.com/google/site-kit-wp/issues/4501).
+* Update the Overview widget to display Goals CTA when no goals are set yet. See [#4489](https://github.com/google/site-kit-wp/issues/4489).
+* Update unified dashboard to update the active navigation chip on scroll. See [#4488](https://github.com/google/site-kit-wp/issues/4488).
+* Update the PageSpeed widget to display the currently loaded data and the progress bar when the user clicks on the `Run test again` button. See [#4467](https://github.com/google/site-kit-wp/issues/4467).
+* Update jump links in the setup success banner notification to scroll to the appropriate location instead of jumping to it using the hash. See [#4410](https://github.com/google/site-kit-wp/issues/4410).
+
+= 1.48.1 =
+
+**Fixed**
+
+* Revert fix to prevent minification of already minified JS files by other plugins as it caused JS translations to no longer be delivered by wordpress.org. Props kebbet. See [#4592](https://github.com/google/site-kit-wp/issues/4592).
+
+= 1.48.0 =
+
+**Enhanced**
+
+* Add title to the overall page metrics widget. See [#4454](https://github.com/google/site-kit-wp/issues/4454).
+* Add icons to Unified Dashboard navigation. See [#4438](https://github.com/google/site-kit-wp/issues/4438).
+* Update production assets to include a `.min` suffix in the filename. See [#4436](https://github.com/google/site-kit-wp/issues/4436).
+* Update the URL search component to display the current entity title by default. See [#4426](https://github.com/google/site-kit-wp/issues/4426).
+* Update the plugin activation banner to be a simple CTA link instead of replicating the splash screen. See [#4403](https://github.com/google/site-kit-wp/issues/4403).
+* Update the behaviour of the PageSpeed's `visit the dashboard` link to scroll to the PSI widget when the user lands on the dashboard page. See [#4380](https://github.com/google/site-kit-wp/issues/4380).
+* Include query parameter for custom Analytics step in the service setup flow URLs. See [#4342](https://github.com/google/site-kit-wp/issues/4342).
+* Fix issue when AdSense module in the Connect More Services list briefly flashed grey. See [#4257](https://github.com/google/site-kit-wp/issues/4257).
+* Fix the incorrect difference for chart values when the current and the previous values equal zero. See [#4255](https://github.com/google/site-kit-wp/issues/4255).
+* Add information about old and new site URLs to the splash screen when URL mismatch is detected. See [#4247](https://github.com/google/site-kit-wp/issues/4247).
+* Add dismissible AdSense CTA widget for monetization section in the unified dashboard. See [#4145](https://github.com/google/site-kit-wp/issues/4145).
+* Update the IdeaHub widget to not display "Draft created" message on the draft tab. See [#3902](https://github.com/google/site-kit-wp/issues/3902).
+
+**Fixed**
+
+* Fix browser console errors related to Idea Hub on the Appearance > Widgets page in the WordPress Admin. See [#4466](https://github.com/google/site-kit-wp/issues/4466).
+* Fix visual gap on AdSense dashboard added by adblocker warning widget when no adblocker is detected. See [#4407](https://github.com/google/site-kit-wp/issues/4407).
+* Update the URL search to abort the current search request when the user changes the query. See [#4402](https://github.com/google/site-kit-wp/issues/4402).
+* Update the PageSpeed Insights links to go to the `pagespeed.web.dev` domain. See [#4381](https://github.com/google/site-kit-wp/issues/4381).
+* Fix the incorrect CSS class issue in the widget area renderer component. Props shayannosrat. See [#4329](https://github.com/google/site-kit-wp/issues/4329).
+* Update the "Learn More" links of Analytics and AdSense CTAs to open in a new window. See [#4286](https://github.com/google/site-kit-wp/issues/4286).
+* Fix missing unit characters issue on zero data widgets. See [#4238](https://github.com/google/site-kit-wp/issues/4238).
+* Add full stops to the insufficient permissions error description. See [#4160](https://github.com/google/site-kit-wp/issues/4160).
+* Fix styles for errors on Optimize setup and settings forms. See [#4028](https://github.com/google/site-kit-wp/issues/4028).
+* Fix bug where error for an Analytics property in Tag Manager without access would not show up. See [#3948](https://github.com/google/site-kit-wp/issues/3948).
+
+= 1.47.0 =
+
+**Added**
+
+* Add a new `useInViewSelect` hook that allows to call a specific selector only when in view. See [#4096](https://github.com/google/site-kit-wp/issues/4096).
+
+**Enhanced**
+
+* Remove chevron from date range select dropdown button in the header. See [#4377](https://github.com/google/site-kit-wp/issues/4377).
+* Show Idea Hub surveys after fewer Idea Hub interactions. See [#4368](https://github.com/google/site-kit-wp/issues/4368).
+* Update Unified Dashboard navigation chips to scroll to an area instead of relying on anchor targets. See [#4367](https://github.com/google/site-kit-wp/issues/4367).
+* Implement splash UI for activating Analytics as part of the initial setup flow. See [#4341](https://github.com/google/site-kit-wp/issues/4341).
+* Add title and subtitle to Widget Contexts for Unified Dashboard pages. See [#4340](https://github.com/google/site-kit-wp/issues/4340).
+* Update dashboard navigation to hide navigation chips for empty areas. See [#4289](https://github.com/google/site-kit-wp/issues/4289).
+* Add an error message for unknown pages to the Unified Dashboard. See [#4287](https://github.com/google/site-kit-wp/issues/4287).
+* Add a link to the Idea Hub CTA to jump to the Idea Hub widget. See [#4275](https://github.com/google/site-kit-wp/issues/4275).
+* Add entity header content area to the Unified Dashboard. See [#4146](https://github.com/google/site-kit-wp/issues/4146).
+* Update dashboard layout to hide sections that have no widgets. See [#4136](https://github.com/google/site-kit-wp/issues/4136).
+* Revise wording when no entity can be determined based on the given URL in the entity dashboard. See [#4097](https://github.com/google/site-kit-wp/issues/4097).
+* Implement Unified Dashboard tab bar with chip/pill links to widget areas. See [#4053](https://github.com/google/site-kit-wp/issues/4053).
+
+**Changed**
+
+* Remove HTML tags from report errors. Props oscarssanchez. See [#4169](https://github.com/google/site-kit-wp/issues/4169).
+
+**Fixed**
+
+* Update the frontend AdSense code to load asynchronously. See [#4398](https://github.com/google/site-kit-wp/issues/4398).
+* Fix missing monetization widgets on the Unified Dashboard issue. See [#4348](https://github.com/google/site-kit-wp/issues/4348).
+* Add unit characters to the Overall Page Metrics widget in the Unified Dashboard. See [#4312](https://github.com/google/site-kit-wp/issues/4312).
+* Fix missing Unique Visitors From Search sparkline issue for zero data state. See [#4237](https://github.com/google/site-kit-wp/issues/4237).
+* Update Tag Manager to pre-select account and containers only when the user has just one account. See [#4209](https://github.com/google/site-kit-wp/issues/4209).
+
+= 1.46.0 =
+
+**Enhanced**
+
+* Update WordPress dashboard widget and admin bar stats to display zero states for Search Console/Analytics only when the respective service is gathering data. See [#4270](https://github.com/google/site-kit-wp/issues/4270).
+* Update the Idea Hub widget to clear errors when switching tabs. See [#4207](https://github.com/google/site-kit-wp/issues/4207).
+* Hide individual module pages when the `unifiedDashboard` flag is enabled. See [#4134](https://github.com/google/site-kit-wp/issues/4134).
+* Update PageSpeed Insights to be active by default for new installs and remove CTAs. See [#4133](https://github.com/google/site-kit-wp/issues/4133).
+* Improve loading state for GA4 Analytics dropdown in settings. See [#4106](https://github.com/google/site-kit-wp/issues/4106).
+* Add a generic content area for the Header in the Unified Dashboard. See [#4050](https://github.com/google/site-kit-wp/issues/4050).
+* Add Entity search to Unified Dashboard Header. See [#4049](https://github.com/google/site-kit-wp/issues/4049).
+* Add the Optimize snippet notice to settings and setup forms. See [#3822](https://github.com/google/site-kit-wp/issues/3822).
+* Introduce a new filter that allows for persistent data to be deleted during reset. See [#3201](https://github.com/google/site-kit-wp/issues/3201).
+
+**Changed**
+
+* Implement the new `useInView` hook. See [#4120](https://github.com/google/site-kit-wp/issues/4120).
+
+**Fixed**
+
+* Fix issue with the Idea Hub notification banner that was blocked by the setup success banner. See [#4274](https://github.com/google/site-kit-wp/issues/4274).
+* Fix a potential conflict with `google` global when loading Google charts. See [#4074](https://github.com/google/site-kit-wp/issues/4074).
+* Fix extra padding around Search Console widgets. See [#4023](https://github.com/google/site-kit-wp/issues/4023).
+* Fix a bug that could cause the wrong module to show that it's being connected during module setup. See [#2796](https://github.com/google/site-kit-wp/issues/2796).
+
+= 1.45.0 =
+
+**Enhanced**
+
+* Add revenue setting to Subscribe with Google module. See [#4230](https://github.com/google/site-kit-wp/issues/4230).
+* Update Analytics events for User Surveys. See [#4213](https://github.com/google/site-kit-wp/issues/4213).
+* Refactor legacy notification components. See [#4153](https://github.com/google/site-kit-wp/issues/4153).
+* Update notifications for Unified Dashboard. See [#4152](https://github.com/google/site-kit-wp/issues/4152).
+* Add "Session Duration" to Unified Dashboard Most Popular Content Widget. See [#4124](https://github.com/google/site-kit-wp/issues/4124).
+* Add the new Search Funnel Widget to the Unified Dashboard. See [#4123](https://github.com/google/site-kit-wp/issues/4123).
+* Add the new Overall Page Metrics widget to unified dashboards. See [#4122](https://github.com/google/site-kit-wp/issues/4122).
+* Add support for enabling GA4 for existing UA-only Analytics users. See [#3807](https://github.com/google/site-kit-wp/issues/3807).
+
+**Changed**
+
+* Remove a few legacy client side filters. See [#4172](https://github.com/google/site-kit-wp/issues/4172).
+* Remove legacy `googlesitekit.SetupWinNotification-${ slug }` filter. See [#4171](https://github.com/google/site-kit-wp/issues/4171).
+
+**Fixed**
+
+* Use "boxed" layout style for the unified dashboard's "content" widget area. Props NaotoNakamura. See [#4268](https://github.com/google/site-kit-wp/issues/4268).
+* Fix a bug that could cause the page title in the "Most Popular Content" table to appear in an unexpected language. See [#4165](https://github.com/google/site-kit-wp/issues/4165).
+
+= 1.44.0 =
+
+**Enhanced**
+
+* Update AdSense signup URL to point to the latest UI. See [#4239](https://github.com/google/site-kit-wp/issues/4239).
+* Implement replacement UI in certain areas to inform users of no data being available when applicable. See [#4226](https://github.com/google/site-kit-wp/issues/4226).
+* Update built asset filenames to avoid potentially triggering aggressive WAF rule. See [#4181](https://github.com/google/site-kit-wp/issues/4181).
+* Improve Idea Hub widget styles and padding. See [#4092](https://github.com/google/site-kit-wp/issues/4092).
+* Update Analytics widgets to display zero state only when the Analytics account is gathering data. See [#4086](https://github.com/google/site-kit-wp/issues/4086).
+* Improve Search Console "gathering data" heuristics; prevents users with limited/no traffic from seeing "Gathering data" message. See [#4085](https://github.com/google/site-kit-wp/issues/4085).
+* Add PageSpeed widget to Unified Dashboard. See [#4079](https://github.com/google/site-kit-wp/issues/4079).
+* Add Content Area widgets to Unified Dashboard. See [#4078](https://github.com/google/site-kit-wp/issues/4078).
+* Update plugin setup tracking events for users who have opted-in to tracking. See [#4054](https://github.com/google/site-kit-wp/issues/4054).
+* Implement new Unified Dashboard header design/UI. See [#4048](https://github.com/google/site-kit-wp/issues/4048).
+* Enhance on-demand loading of anonymous usage tracking snippet. See [#3972](https://github.com/google/site-kit-wp/issues/3972).
+* Update handling of OAuth error with clarified language and the URL used for retry. See [#3970](https://github.com/google/site-kit-wp/issues/3970).
+
+**Fixed**
+
+* Restore AdBlocker warning on AdSense module dashboard. See [#4178](https://github.com/google/site-kit-wp/issues/4178).
+* Don't show duplicate errors when loading deleted Analytics accounts in the settings. See [#3569](https://github.com/google/site-kit-wp/issues/3569).
+
+= 1.43.0 =
+
+**Enhanced**
+
+* Update proactive token refreshing to be limited to main Site Kit and WordPress dashboards. See [#4182](https://github.com/google/site-kit-wp/issues/4182).
+* Register all traffic widget in traffic sections of the unified dashboard. See [#4149](https://github.com/google/site-kit-wp/issues/4149).
+* Add AdSense summary and top-earning pages widgets to the monetization area. See [#4080](https://github.com/google/site-kit-wp/issues/4080).
+* Update Google HTTP client to use same ca bundle as WordPress. See [#4017](https://github.com/google/site-kit-wp/issues/4017).
+* Update the Analytics settings view panel to display "Use Snippet" settings below the appropriate property blocks. See [#3996](https://github.com/google/site-kit-wp/issues/3996).
+* Improve text on AdSense and Analytics setting toggles. See [#3850](https://github.com/google/site-kit-wp/issues/3850).
+* Add AdSense for Platforms meta tag. See [#3688](https://github.com/google/site-kit-wp/issues/3688).
+* Abort saving Analytics settings when required extra permissions are declined for creating a new GA4 property or measurement ID. See [#3546](https://github.com/google/site-kit-wp/issues/3546).
+* Enhance some checkboxes with a spinner when its value is being loaded. See [#3304](https://github.com/google/site-kit-wp/issues/3304).
+* Fix wording of ad blocker warning to always reflect the current state of the AdSense module. See [#3208](https://github.com/google/site-kit-wp/issues/3208).
+* Update CSS files to be built with unique file names for production builds. See [#2806](https://github.com/google/site-kit-wp/issues/2806).
+* Improve validation for domains used for Site Kit during setup. See [#1884](https://github.com/google/site-kit-wp/issues/1884).
+
+**Fixed**
+
+* Update the AdSense snippet to no longer include deprecated attributes. See [#4180](https://github.com/google/site-kit-wp/issues/4180).
+* Fix permissions dialog issue on the WP dashboard page caused by Idea Hub CTA. See [#4125](https://github.com/google/site-kit-wp/issues/4125).
+* Update admin settings for consistency and introduce optional loading state for checkboxes. See [#4038](https://github.com/google/site-kit-wp/issues/4038).
+* Update the modules list banner not to disable connected modules. See [#4014](https://github.com/google/site-kit-wp/issues/4014).
+* Improve the "Re-authentication needed" error messages and redirects. See [#3931](https://github.com/google/site-kit-wp/issues/3931).
+* Hide the `Impressions` column of the AdSense `Top Earning Pages` widget on mobile screens. See [#3781](https://github.com/google/site-kit-wp/issues/3781).
+* Update Optimize module settings to avoid the flash of use snippet instructions when Analytics settings are being resolved. See [#3720](https://github.com/google/site-kit-wp/issues/3720).
+
+= 1.42.0 =
+
+**Enhanced**
+
+* Update focus of Idea Hub module feature tour to highlight entire widget. See [#4076](https://github.com/google/site-kit-wp/issues/4076).
+* Add survey trigger for Idea Hub widget interactions. See [#4052](https://github.com/google/site-kit-wp/issues/4052).
+* Add new conditional follow-up questions to user surveys. See [#4051](https://github.com/google/site-kit-wp/issues/4051).
+* Show Idea Hub tabs even when no ideas are available. See [#4013](https://github.com/google/site-kit-wp/issues/4013).
+* Use Idea Hub activities endpoint when drafting, publishing or deleting a post. See [#3938](https://github.com/google/site-kit-wp/issues/3938).
+* Update Idea Hub API to use v1 beta. See [#3916](https://github.com/google/site-kit-wp/issues/3916).
+* Update Idea Hub widget pagination to scroll to widget top on page change if out of view. See [#3841](https://github.com/google/site-kit-wp/issues/3841).
+* Prevent feature tours from appearing during module setup. See [#3187](https://github.com/google/site-kit-wp/issues/3187).
+* Improve wording of "Invalid nonce" errors. See [#3098](https://github.com/google/site-kit-wp/issues/3098).
+
+**Changed**
+
+* Avoid potentially simultaneous token refresh requests by proactively refreshing soon-to-expire tokens. See [#3477](https://github.com/google/site-kit-wp/issues/3477).
+
+**Fixed**
+
+* Fix various JS errors due to problems with the Google Charts library. See [#4074](https://github.com/google/site-kit-wp/issues/4074).
+* Remove leftover use of `helpVisibility` feature flag. See [#4069](https://github.com/google/site-kit-wp/issues/4069).
+* Fix validation for Subscribe with Google publication ID so that it allows non-domain input. See [#4025](https://github.com/google/site-kit-wp/issues/4025).
+* Fix font problems in the Idea Hub widget. See [#4012](https://github.com/google/site-kit-wp/issues/4012).
+* Fix positioning of the Site Kit header at the breakpoint between mobile and tablet viewports. See [#3986](https://github.com/google/site-kit-wp/issues/3986).
+* Update the post state for Idea Hub posts and enable it for posts of all statuses. See [#3909](https://github.com/google/site-kit-wp/issues/3909).
+* Use query params instead of hash URLs in Idea Hub tabs. See [#3886](https://github.com/google/site-kit-wp/issues/3886).
+* Improve Idea Hub tab behaviour when using browser navigation. See [#3860](https://github.com/google/site-kit-wp/issues/3860).
+* Prevent Idea Hub tab navigation from adding to the browser's history. See [#3796](https://github.com/google/site-kit-wp/issues/3796).
+* Update the Detailed Page Stats page to display AMP traffic for an AMP version of a page. See [#3080](https://github.com/google/site-kit-wp/issues/3080).
+* Fix Analytics queries for URL lists to ignore titles for the metrics, while still showing the title for each URL. See [#3070](https://github.com/google/site-kit-wp/issues/3070).
+
+= 1.41.0 =
+
+**Enhanced**
+
+* Update the `Idea_Hub` class to invalidate cached ideas when an idea is modified or a new post is created. See [#3922](https://github.com/google/site-kit-wp/issues/3922).
+* Update the Idea Hub notification text. See [#3912](https://github.com/google/site-kit-wp/issues/3912).
+* Update WP dashboard Idea Hub CTA design and language. See [#3911](https://github.com/google/site-kit-wp/issues/3911).
+* Update descriptions for Idea Hub module and widget. See [#3908](https://github.com/google/site-kit-wp/issues/3908).
+* Add tooltips for action buttons in the Idea Hub dashboard widget. See [#3906](https://github.com/google/site-kit-wp/issues/3906).
+* Improve pagination behaviour in Idea Hub. See [#3859](https://github.com/google/site-kit-wp/issues/3859).
+* Add "Experimental" badge to Idea Hub UI. See [#3810](https://github.com/google/site-kit-wp/issues/3810).
+* Scaffold Subscribe with Google module. See [#3808](https://github.com/google/site-kit-wp/issues/3808).
+* Update AdSense tag code to improve Ad performance. See [#3783](https://github.com/google/site-kit-wp/issues/3783).
+* Improve AdSense graphs on mobile screens. See [#3317](https://github.com/google/site-kit-wp/issues/3317).
+* Update GA measurement opt-out mechanism for logged-in users to be property-specific. See [#3294](https://github.com/google/site-kit-wp/issues/3294).
+* Improve UX to close tooltips within charts. See [#2659](https://github.com/google/site-kit-wp/issues/2659).
+* Add surrounding comments to all HTML tags output by Site Kit modules. See [#1504](https://github.com/google/site-kit-wp/issues/1504).
+* Add link to Settings page in plugin action links on plugins page. See [#1194](https://github.com/google/site-kit-wp/issues/1194).
+
+**Fixed**
+
+* Fix counts on Idea Hub widget tab labels to only show up if greater than zero. See [#3964](https://github.com/google/site-kit-wp/issues/3964).
+* Always load Google fonts using purely CSS rather than relying on a JavaScript snippet. See [#3932](https://github.com/google/site-kit-wp/issues/3932).
+* Fix Dashboard Search Widget zero state bug. See [#3880](https://github.com/google/site-kit-wp/issues/3880).
+* Fix Admin Bar Analytics link when using Twenty Twenty-One theme. See [#3849](https://github.com/google/site-kit-wp/issues/3849).
+* Ensure the icon buttons in the Idea Hub widget do not overlap idea labels. See [#3839](https://github.com/google/site-kit-wp/issues/3839).
+* Fix "Connected" messages to avoid duplicate words for screen reader. See [#3763](https://github.com/google/site-kit-wp/issues/3763).
+* Fix a potential error due to report data associated with an invalid URL. See [#3752](https://github.com/google/site-kit-wp/issues/3752).
+* Update the AdSense setup CTA in the activation success banner to be disabled when an ad-blocker is detected. See [#3721](https://github.com/google/site-kit-wp/issues/3721).
+* Update Analytics goals widget CTA link to open in a new window. See [#3683](https://github.com/google/site-kit-wp/issues/3683).
+* Fix UI bugs in User Input's fifth question. See [#3682](https://github.com/google/site-kit-wp/issues/3682).
+* Fix potential error in older browsers that don't support IntersectionObserver. See [#3278](https://github.com/google/site-kit-wp/issues/3278).
+
+= 1.40.0 =
+
+**Enhanced**
+
+* Show correct footer information based on Idea Hub tab. See [#3865](https://github.com/google/site-kit-wp/issues/3865).
+* Update styles of the topic idea element to have a light-blue background. See [#3857](https://github.com/google/site-kit-wp/issues/3857).
+* Update position of action buttons for ideas in Idea Hub dashboard widget in mobile. See [#3855](https://github.com/google/site-kit-wp/issues/3855).
+* Update CTA language for WP post list notifications. See [#3852](https://github.com/google/site-kit-wp/issues/3852).
+* Update the number of ideas shown per page on the Idea Hub dashboard widget. See [#3843](https://github.com/google/site-kit-wp/issues/3843).
+* Update language in Idea Hub feature tour to use en-US locale for consistency. See [#3834](https://github.com/google/site-kit-wp/issues/3834).
+* Update the IdeaHub widget to display the "Updated every 2-3 days" message only for the new ideas tab. See [#3832](https://github.com/google/site-kit-wp/issues/3832).
+* Add an open text type to user surveys. See [#3762](https://github.com/google/site-kit-wp/issues/3762).
+* Add multiple choice selection questions to User Input surveys. See [#3761](https://github.com/google/site-kit-wp/issues/3761).
+* Add a new "single select" option to User Input Surveys. See [#3760](https://github.com/google/site-kit-wp/issues/3760).
+* Implement functionality for saving and dismissing an Idea Hub idea. See [#3747](https://github.com/google/site-kit-wp/issues/3747).
+* Remove unused legacy JS code after removal of legacy components and data API. See [#3646](https://github.com/google/site-kit-wp/issues/3646).
+* Add feature tour for Idea Hub drafts to the post list table in WP admin. See [#3625](https://github.com/google/site-kit-wp/issues/3625).
+* Update Idea Hub to use the production API. See [#3518](https://github.com/google/site-kit-wp/issues/3518).
+* Update viewport icons used in PageSpeed Insights widget. See [#3162](https://github.com/google/site-kit-wp/issues/3162).
+* Add a notice to Optimize users warning them that Analytics requests are not being tracked for signed-in users. See [#3000](https://github.com/google/site-kit-wp/issues/3000).
+* Add Tag Manager AMP tag support for Web Stories. See [#2070](https://github.com/google/site-kit-wp/issues/2070).
+
+**Fixed**
+
+* Fix Idea Hub tab localization text. See [#3899](https://github.com/google/site-kit-wp/issues/3899).
+* Fix pagination in the Idea Hub dashboard widget to disable next button on last page. See [#3866](https://github.com/google/site-kit-wp/issues/3866).
+* Fix Idea Hub CTA for saved ideas on the WordPress dashboard to only show if the user has any saved ideas. See [#3845](https://github.com/google/site-kit-wp/issues/3845).
+* Update Sidekick zero state graphics with proper files. See [#3840](https://github.com/google/site-kit-wp/issues/3840).
+* Fix Idea Hub dashboard widget pagination controls from stacking in small viewports. See [#3838](https://github.com/google/site-kit-wp/issues/3838).
+* Fix Idea Hub Tour Activation bug. See [#3836](https://github.com/google/site-kit-wp/issues/3836).
+* Update Idea Hub new, saved, and draft ideas requests to invalidate the cache when a post created for an idea changes its status. See [#3757](https://github.com/google/site-kit-wp/issues/3757).
+* Fix a bug where Site Kit did not disable Tag Manager tag when an existing tag was detected. See [#3338](https://github.com/google/site-kit-wp/issues/3338).
+
+= 1.39.0 =
+
+**Enhanced**
+
+* Update the Idea Hub widget to display its footer in the `Widget.Footer` prop. See [#3773](https://github.com/google/site-kit-wp/issues/3773).
+* Add and update deep links on Analytics settings view to edit the UA property view and GA4 measurement ID. See [#3702](https://github.com/google/site-kit-wp/issues/3702).
+* Decouple Google API client creation logic from main OAuth client tied to the current WordPress user. See [#3658](https://github.com/google/site-kit-wp/issues/3658).
+* Remove server-side REST batch data infrastructure. See [#3644](https://github.com/google/site-kit-wp/issues/3644).
+* Add option to insert the Anti Flicker snippet when connecting Optimize. See [#3013](https://github.com/google/site-kit-wp/issues/3013).
+* Add method for disabling auto-ads for logged-in users. See [#2681](https://github.com/google/site-kit-wp/issues/2681).
+* Remove legacy data API code. See [#2258](https://github.com/google/site-kit-wp/issues/2258).
+* Update Google fonts loaded by Site Kit to be filterable. Props lkraav. See [#1703](https://github.com/google/site-kit-wp/issues/1703).
+* Add a toggle to enable/disable the Site Kit admin bar feature. See [#990](https://github.com/google/site-kit-wp/issues/990).
+* Add filters to allow modifications on the AdSense code. Props Fu-San. See [#336](https://github.com/google/site-kit-wp/issues/336).
+
+**Fixed**
+
+* Consolidate blue colors in notice text. See [#3716](https://github.com/google/site-kit-wp/issues/3716).
+* Improve module disconnect screen when a module doesn't have listed features. See [#3691](https://github.com/google/site-kit-wp/issues/3691).
+* Fix potential "Cannot read property 'slug' of undefined" error on Site Kit screens. See [#3618](https://github.com/google/site-kit-wp/issues/3618).
+
+= 1.38.1 =
+
+**Fixed**
+
+* Fix fatal error that could be triggered by other plugins or themes using an unprefixed version of Composer. See [#3830](https://github.com/google/site-kit-wp/issues/3830).
+
+= 1.38.0 =
+
+**Enhanced**
+
+* Improve the tab-switching UX in the Idea Hub dashboard widget. See [#3723](https://github.com/google/site-kit-wp/issues/3723).
+* Add feature description to Idea Hub module. See [#3692](https://github.com/google/site-kit-wp/issues/3692).
+* Ensure Idea Hub draft posts are properly labelled even when Idea Hub is disconnected. See [#3639](https://github.com/google/site-kit-wp/issues/3639).
+* Update Google PHP client services library to latest version. See [#3628](https://github.com/google/site-kit-wp/issues/3628).
+* Update language on initial setup screen. See [#3581](https://github.com/google/site-kit-wp/issues/3581).
+* Add a new feature tour for the Idea Hub widget. See [#3524](https://github.com/google/site-kit-wp/issues/3524).
+* Add Idea Hub dashboard notification to inform users about new Idea Hub module. See [#3523](https://github.com/google/site-kit-wp/issues/3523).
+* Add the Idea Hub notice to the posts list table. See [#3359](https://github.com/google/site-kit-wp/issues/3359).
+* Enhance Google API client with user-specific quota token to differentiate quota usage between users. See [#2217](https://github.com/google/site-kit-wp/issues/2217).
+* Remove weekday alignment functionality for previous period from Analytics module and Site Kit entirely. See [#2122](https://github.com/google/site-kit-wp/issues/2122).
+* Update module page dashboards to use Widget API unconditionally and remove legacy implementations. See [#2077](https://github.com/google/site-kit-wp/issues/2077).
+* Add a new tag guard that prevents rendering tags for non-production environments. Props lukecav. See [#2054](https://github.com/google/site-kit-wp/issues/2054).
+* Update dashboard and details page to display widgets only. See [#1997](https://github.com/google/site-kit-wp/issues/1997).
+* Improve WordPress dashboard widget UX so that only one CTA per module is displayed when the module has no data or needs to be activated. See [#1147](https://github.com/google/site-kit-wp/issues/1147).
+* Update copy in AdSense disconnect modal. See [#683](https://github.com/google/site-kit-wp/issues/683).
+
+**Fixed**
+
+* Fix possible JavaScript error related to certain Google charts not rendering properly in Safari. See [#3784](https://github.com/google/site-kit-wp/issues/3784).
+* Fix bug in Idea Hub dashboard widget that caused drafts not to refresh. See [#3733](https://github.com/google/site-kit-wp/issues/3733).
+* Ensure the "Edit" mode for modules without a dedicated "Edit" UI for their settings can still be exited, and fall back to showing the regular "View" UI in those cases. See [#3727](https://github.com/google/site-kit-wp/issues/3727).
+* Improve Widget layout when dismissing the Idea Hub call-to-action. See [#3722](https://github.com/google/site-kit-wp/issues/3722).
+* Fix Idea Hub draft post links ampersand output. See [#3708](https://github.com/google/site-kit-wp/issues/3708).
+* Update stats graphs not to duplicate dates when 7 days period is selected. See [#3643](https://github.com/google/site-kit-wp/issues/3643).
+* Add a timeout to delay caching the survey by 30 seconds. See [#3633](https://github.com/google/site-kit-wp/issues/3633).
+* Fix bug where the filter behavior used for Analytics and AdSense report data was not working for sites with a unicode or punycode domain. Props HFigarella. See [#3606](https://github.com/google/site-kit-wp/issues/3606).
+* Fix a bug in Analytics setup where a matching secondary property would not be automatically selected when the primary property was changed. See [#3549](https://github.com/google/site-kit-wp/issues/3549).
+* Improve display of long names in select dropdowns. See [#3497](https://github.com/google/site-kit-wp/issues/3497).
+* Update settings to redirect back to the settings page after disconnecting a module. See [#3393](https://github.com/google/site-kit-wp/issues/3393).
+* Prevent rendering errors when the Admin Menu has been customized. See [#3263](https://github.com/google/site-kit-wp/issues/3263).
+* Fix admin bar styles conflict with W3 Total Cache Minify functionality. See [#1427](https://github.com/google/site-kit-wp/issues/1427).
+
+= 1.37.0 =
+
+**Enhanced**
+
+* Update wording in permissions modal when GA4 needs to create a web data stream for the selected property. See [#3622](https://github.com/google/site-kit-wp/issues/3622).
+* Add a new "Verification Status" row to the Site Health information for Site Kit. See [#3621](https://github.com/google/site-kit-wp/issues/3621).
+* Show information notice about associated UA / GA4 property only once a property has been selected. See [#3614](https://github.com/google/site-kit-wp/issues/3614).
+* Update styles of controls in the GA4 notice box on the settings page. See [#3541](https://github.com/google/site-kit-wp/issues/3541).
+* Add selected state of 300ms to user feedback survey. See [#3531](https://github.com/google/site-kit-wp/issues/3531).
+* Add Idea Hub setup UI. See [#3522](https://github.com/google/site-kit-wp/issues/3522).
+* Implement Idea Hub widget functionality for saving and unsaving an idea. See [#3519](https://github.com/google/site-kit-wp/issues/3519).
+* Add loading indicator to the Idea Hub widget when a new draft is being created. See [#3387](https://github.com/google/site-kit-wp/issues/3387).
+* Allow Idea Hub CTA to be dismissed. See [#3360](https://github.com/google/site-kit-wp/issues/3360).
+* Add the Idea Hub notification to the WordPress block editor. See [#3272](https://github.com/google/site-kit-wp/issues/3272).
+* Refactor settings tabs with React Router and update URL hashes with more user-friendly names. See [#2514](https://github.com/google/site-kit-wp/issues/2514).
+
+**Fixed**
+
+* Fix bug in new React Router-based Settings Screen. See [#3707](https://github.com/google/site-kit-wp/issues/3707).
+* Fix potential `Uncaught (in promise) TypeError: Cannot read property 'replace' of undefined` related to GA4 property matching logic. See [#3706](https://github.com/google/site-kit-wp/issues/3706).
+* Fix message for AdSense account with no data in new widget-based screen. See [#3667](https://github.com/google/site-kit-wp/issues/3667).
+* Fix a bug in Idea Hub where the most recent draft idea posts were not shown after creating a new draft from idea. See [#3660](https://github.com/google/site-kit-wp/issues/3660).
+* Add a configurable timeout to User Survey components. See [#3655](https://github.com/google/site-kit-wp/issues/3655).
+* Fix issue with Google Charts showing negative labels in some charts. See [#3564](https://github.com/google/site-kit-wp/issues/3564).
+* Improve User Input tag creation on Mobile Safari. See [#3420](https://github.com/google/site-kit-wp/issues/3420).
+* Fix global storybook padding issues. See [#3174](https://github.com/google/site-kit-wp/issues/3174).
+
+= 1.36.0 =
+
+**Enhanced**
+
+* Enhance experience for sites with UA Analytics already configured before GA4 is enabled. See [#3586](https://github.com/google/site-kit-wp/issues/3586).
+* Implement Idea Hub datastore infrastructure for saving and dismissing an idea. See [#3556](https://github.com/google/site-kit-wp/issues/3556).
+* Display measurement ID for Google Analytics 4 property in Settings. See [#3545](https://github.com/google/site-kit-wp/issues/3545).
+* Update text in some Google Analytics 4 notices. See [#3544](https://github.com/google/site-kit-wp/issues/3544).
+* Show separate UA and GA4 snippet toggles in Analytics Settings. See [#3542](https://github.com/google/site-kit-wp/issues/3542).
+* Improve Google Analytics 4 notices. See [#3540](https://github.com/google/site-kit-wp/issues/3540).
+* Improve user survey styling on mobile viewports. See [#3530](https://github.com/google/site-kit-wp/issues/3530).
+* Show Terms of Service and Privacy Policy in User Feedback survey if the user hasn't opted-in to tracking. See [#3528](https://github.com/google/site-kit-wp/issues/3528).
+* Implement a minimal settings panel for the Idea Hub module. See [#3521](https://github.com/google/site-kit-wp/issues/3521).
+* Update API client library and AdSense integration to use the new version 2 of their API. See [#3517](https://github.com/google/site-kit-wp/issues/3517).
+* Improve button tooltips across plugin. See [#3516](https://github.com/google/site-kit-wp/issues/3516).
+* Update button links to show "opens in new tab" ARIA help text, and open all User Feedback links in a new tab. See [#3510](https://github.com/google/site-kit-wp/issues/3510).
+* Don't show notifications if a user survey has already been displayed. See [#3508](https://github.com/google/site-kit-wp/issues/3508).
+* Display date range for data in the Admin Bar. See [#3202](https://github.com/google/site-kit-wp/issues/3202).
+* Remove the option to include/exclude logged-in users when the Analytics snippet is not placed via Site Kit. See [#2910](https://github.com/google/site-kit-wp/issues/2910).
+* Update error message shown to AMP users when connecting Tag Manager after Analytics. See [#2292](https://github.com/google/site-kit-wp/issues/2292).
+
+**Fixed**
+
+* Fix potential React error when using Google Translate and then changing the date range in a Site Kit admin screen. See [#3636](https://github.com/google/site-kit-wp/issues/3636).
+* Fix a bug where GA4 settings were not cleared when deactivating Analytics. See [#3616](https://github.com/google/site-kit-wp/issues/3616).
+* Fix AMP validation error caused by the GA opt-out snippet conditionally placed by Site Kit. See [#3572](https://github.com/google/site-kit-wp/issues/3572).
+* Ensure account and property are preselected during setup when user has a matching GA4 property only. See [#3543](https://github.com/google/site-kit-wp/issues/3543).
+* Update Analytics account creation to ensure a GA4 property is always created when GA4 is enabled. See [#3539](https://github.com/google/site-kit-wp/issues/3539).
+* Fix an infinite loading state when attempting to create a new Analytics account with GA4. See [#3537](https://github.com/google/site-kit-wp/issues/3537).
+* Only show a GA4 creation notice once an account is selected in Analytics setup. See [#3536](https://github.com/google/site-kit-wp/issues/3536).
+* Allow posts with Idea Hub drafts to be trashed. See [#3514](https://github.com/google/site-kit-wp/issues/3514).
+* Enhance user survey display with added animation on enter and exit. See [#3509](https://github.com/google/site-kit-wp/issues/3509).
+* Fix a bug related to localized number formatting for browsers that have limited support for formatting options. See [#3255](https://github.com/google/site-kit-wp/issues/3255).
+* Improve table views on mobile screens. See [#3138](https://github.com/google/site-kit-wp/issues/3138).
+* Fix bug where AMP mode detection would not consider the AMP plugin's template mode setting when the Web Stories plugin is active. See [#2998](https://github.com/google/site-kit-wp/issues/2998).
+
+= 1.35.0 =
+
+**Enhanced**
+
+* Update shadow used by user surveys to enhance contrast and improve visibility. See [#3529](https://github.com/google/site-kit-wp/issues/3529).
+* Make text casing in User Feedback and Idea Hub buttons consistent with the rest of the plugin. See [#3507](https://github.com/google/site-kit-wp/issues/3507).
+* Add React components for rendering and managing user surveys. See [#3380](https://github.com/google/site-kit-wp/issues/3380).
+* Add React components for rendering user survey UI. See [#3379](https://github.com/google/site-kit-wp/issues/3379).
+* Add React component for triggering a user survey on view. See [#3376](https://github.com/google/site-kit-wp/issues/3376).
+* Implement a component to render the current survey. See [#3375](https://github.com/google/site-kit-wp/issues/3375).
+* Add REST routes for user survey endpoints. See [#3374](https://github.com/google/site-kit-wp/issues/3374).
+* Add Idea Hub widget support for creating idea draft posts. See [#3357](https://github.com/google/site-kit-wp/issues/3357).
+* Add support for Google Analytics 4 tags in the notices for existing Google Analytics tags in the Analytics setup. See [#3289](https://github.com/google/site-kit-wp/issues/3289).
+* Added GA4 script tag detection. See [#3288](https://github.com/google/site-kit-wp/issues/3288).
+* Add a module activation CTA for Idea Hub to the Site Kit dashboard. See [#3275](https://github.com/google/site-kit-wp/issues/3275).
+* Show GA4 property in Analytics Settings when available. See [#3254](https://github.com/google/site-kit-wp/issues/3254).
+* Update Analytics account provisioning screen to inform about GA4 property creation. See [#3253](https://github.com/google/site-kit-wp/issues/3253).
+* Update Analytics account provisioning to create a corresponding GA4 property as well. See [#3252](https://github.com/google/site-kit-wp/issues/3252).
+* Added a UI to manage Analytics Accounts with both Universal Analytics and GA4 properties. See [#3250](https://github.com/google/site-kit-wp/issues/3250).
+* Add setup variant for Analytics accounts with only GA4 properties. See [#3249](https://github.com/google/site-kit-wp/issues/3249).
+* Fix a bug where Google API requests would be made when necessary scopes were not granted. See [#3227](https://github.com/google/site-kit-wp/issues/3227).
+* Improve the AdSense AdBlocker check. See [#2749](https://github.com/google/site-kit-wp/issues/2749).
+* Enable Prefetch DNS Requests on external Google services used by Site Kit. Props glanglois. See [#2203](https://github.com/google/site-kit-wp/issues/2203).
+
+**Changed**
+
+* Limit effective values for Google proxy base URL. See [#3217](https://github.com/google/site-kit-wp/issues/3217).
+
+**Fixed**
+
+* Fix a React console error when viewing widget-based module screens. See [#3559](https://github.com/google/site-kit-wp/issues/3559).
+* Fix a problem where GA4 property selection is not preserved after granting additional scopes. See [#3550](https://github.com/google/site-kit-wp/issues/3550).
+* Fix a problem where Analytics settings cannot be saved when selected account has UA and GA4 properties with different URLs. See [#3538](https://github.com/google/site-kit-wp/issues/3538).
+* Update All Traffic widget legend slice labels to use title case. See [#3327](https://github.com/google/site-kit-wp/issues/3327).
+* Improve behaviour of the "confirm changes" button in Search Console settings on load. See [#3318](https://github.com/google/site-kit-wp/issues/3318).
+* Fix output of AdSense snippet in AMP Reader mode. See [#3218](https://github.com/google/site-kit-wp/issues/3218).
+* Update charts to use consistent styles between modules. See [#3083](https://github.com/google/site-kit-wp/issues/3083).
+
+= 1.34.1 =
+
+**Fixed**
+
+* Fix a problem for some hosts where requests for Analytics account creation or other on-demand permissions were blocked. See [#3532](https://github.com/google/site-kit-wp/issues/3532).
+
+= 1.34.0 =
+
+**Enhanced**
+
+* Add Idea Hub notice to the WP dashboard widget. See [#3358](https://github.com/google/site-kit-wp/issues/3358).
+* Add initial actions and selectors to `core/user` data store for handling user surveys. See [#3355](https://github.com/google/site-kit-wp/issues/3355).
+* Enhance default Analytics property selection when selecting an Analytics account. See [#3291](https://github.com/google/site-kit-wp/issues/3291).
+* Update success notification for the Analytics module when GA4 support is activated. See [#3290](https://github.com/google/site-kit-wp/issues/3290).
+* Update Analytics setup to pre-select the GA4 property based on current site URL. See [#3286](https://github.com/google/site-kit-wp/issues/3286).
+* Implement idea list tabs and basic interaction in Idea Hub widget. See [#3276](https://github.com/google/site-kit-wp/issues/3276).
+* Add Idea Hub context for draft posts generated by Idea Hub. See [#3271](https://github.com/google/site-kit-wp/issues/3271).
+* Add selectors to get draft and published posts created using Idea Hub ideas. See [#3270](https://github.com/google/site-kit-wp/issues/3270).
+* Add Idea Hub draft post support. See [#3269](https://github.com/google/site-kit-wp/issues/3269).
+* Add Analytics property select component for showing all UA and GA4 properties. See [#3246](https://github.com/google/site-kit-wp/issues/3246).
+* Only show Google Analytics property and profile selection if the parent (account/property) is valid. See [#3243](https://github.com/google/site-kit-wp/issues/3243).
+* Add upper boundary for how long manual user input responses can be. See [#3229](https://github.com/google/site-kit-wp/issues/3229).
+* Enhance widgets to combine into one widget if all widgets in an area have the same special state. See [#3225](https://github.com/google/site-kit-wp/issues/3225).
+* Update the wording used for the anonymous usage tracking checkbox label. See [#1238](https://github.com/google/site-kit-wp/issues/1238).
+
+**Fixed**
+
+* Fix regression where widget-based single URL screen would show up completely empty for content not found in the WordPress site. See [#3493](https://github.com/google/site-kit-wp/issues/3493).
+* Fix potential `dateRangeLength must be a positive integer.` error for Search Console reports with missing dates. See [#3418](https://github.com/google/site-kit-wp/issues/3418).
+
+= 1.33.0 =
+
+**Enhanced**
+
+* Update `amp-analytics` tag to include configuration for an ads conversion ID when provided. See [#3282](https://github.com/google/site-kit-wp/issues/3282).
+* Add an initial widget for the Idea Hub ideas. See [#3274](https://github.com/google/site-kit-wp/issues/3274).
+* Add Idea Hub JS module (only active with the Idea Hub feature flag). See [#3273](https://github.com/google/site-kit-wp/issues/3273).
+* Update Analytics setup form UI to support different variants of setup flows. See [#3247](https://github.com/google/site-kit-wp/issues/3247).
+* Update Analytics data store settings `submitChanges` infrastructure to include GA4 when enabled. See [#3245](https://github.com/google/site-kit-wp/issues/3245).
+* Add change validation logic to Google Analytics 4 data store. See [#3244](https://github.com/google/site-kit-wp/issues/3244).
+* Add selectors to check which Google Analytics UI should be active. See [#3170](https://github.com/google/site-kit-wp/issues/3170).
+* Add selectors to select a GA4 property from webdata stream contents. See [#3168](https://github.com/google/site-kit-wp/issues/3168).
+* Add Idea Hub saved idea selectors and actions. See [#3156](https://github.com/google/site-kit-wp/issues/3156).
+* Introduce PHP classes for modeling post metadata in Site Kit. See [#3154](https://github.com/google/site-kit-wp/issues/3154).
+* Migrate all components to use the new version of the GoogleChart component. See [#2887](https://github.com/google/site-kit-wp/issues/2887).
+* Clarify explanation of user input responses' potential effects on other users of the site. See [#2853](https://github.com/google/site-kit-wp/issues/2853).
+* Add the ability to exclude users who can write posts from being tracked by Google Analytics. Props scottshefler. See [#1891](https://github.com/google/site-kit-wp/issues/1891).
+
+**Fixed**
+
+* Fix potential `Cannot read property 'clicks' of undefined` JS error that could occur when an uneven number of Search Console report rows was returned. See [#3348](https://github.com/google/site-kit-wp/issues/3348).
+* Fix a bug where Analytics report data was incomplete for the 90-day date range when also requesting data for the previous period affecting the widget-based module dashboard. See [#3232](https://github.com/google/site-kit-wp/issues/3232).
+* Standardize punctuation and formatting of various sentences and phrases throughout the plugin. See [#2597](https://github.com/google/site-kit-wp/issues/2597).
+
+= 1.32.0 =
+
+**Enhanced**
+
+* Update Analytics property select options to display property IDs in addition to names. See [#3164](https://github.com/google/site-kit-wp/issues/3164).
+* Allow administrators to paste Google Ads conversion ID in Analytics settings so that it is integrated into the Site Kit-placed Analytics snippet. See [#3161](https://github.com/google/site-kit-wp/issues/3161).
+* Scaffold new `modules/idea-hub` data store in JS. See [#3152](https://github.com/google/site-kit-wp/issues/3152).
+* Scaffold new `Idea_Hub` PHP class. See [#3150](https://github.com/google/site-kit-wp/issues/3150).
+* Add a selector to the `core/site` datastore for checking whether or not a given URL matches the site's reference URL. See [#3105](https://github.com/google/site-kit-wp/issues/3105).
+* Implement a data store selector for selecting GA4 web data streams for multiple property IDs at once. See [#3104](https://github.com/google/site-kit-wp/issues/3104).
+* Add data store selector and matching REST datapoint to the GA4 module to retrieve account summaries. See [#3103](https://github.com/google/site-kit-wp/issues/3103).
+* Update AdSense summary dashboard widget to show change values for each metric relative to the previous period. See [#3091](https://github.com/google/site-kit-wp/issues/3091).
+* Update the background color of open menu buttons in the Site Kit header. See [#3069](https://github.com/google/site-kit-wp/issues/3069).
+* Allow programmatic modification of the Site Kit generator meta tag. See [#938](https://github.com/google/site-kit-wp/issues/938).
+* Clarify some AdSense labels and format the monetary values in top earning pages tables with the relevant currency. See [#656](https://github.com/google/site-kit-wp/issues/656).
+* Update popular pages list tables on the Analytics module dashboard to be consistent with the same components on the main Site Kit and WordPress dashboards. See [#98](https://github.com/google/site-kit-wp/issues/98).
+
+**Fixed**
+
+* Fix regression where jump link to PageSpeed Insights widget in success notification no longer worked. See [#3310](https://github.com/google/site-kit-wp/issues/3310).
+* Update AdSense "Performance by page over the last X days" deep links to include date range. See [#2951](https://github.com/google/site-kit-wp/issues/2951).
+* Fix a bug that could cause the first profile to be selected in Analytics Settings when an existing tag was detected. See [#2888](https://github.com/google/site-kit-wp/issues/2888).
+* Fix User Input Settings flow accessibility issues. See [#2851](https://github.com/google/site-kit-wp/issues/2851).
+* Resolved analytics URL linking issue in subfolder based installs. See [#2821](https://github.com/google/site-kit-wp/issues/2821).
+* Redirect users from the splash screen to the dashboard if they are already authenticated. See [#2529](https://github.com/google/site-kit-wp/issues/2529).
+* Resolved language issue on AdSense dashboard for certain Site Languages. See [#2105](https://github.com/google/site-kit-wp/issues/2105).
+
+= 1.31.0 =
+
+**Enhanced**
+
+* Add method to get list of all base capabilities used by Site Kit. Props JoryHogeveen. See [#3130](https://github.com/google/site-kit-wp/issues/3130).
+* Update widget header styles to use grid mechanics instead of static margins. See [#3119](https://github.com/google/site-kit-wp/issues/3119).
+* Implement the technical infrastructure for rendering GA4 snippets in the frontend, including support for double tagging integrating with a UA snippet. See [#3106](https://github.com/google/site-kit-wp/issues/3106).
+* Implement REST data point and JS data store selector to look up a single GA4 property by ID. See [#3102](https://github.com/google/site-kit-wp/issues/3102).
+* Rename "Popularity" / "Top Queries" section to "Acquisition" for new widget-based UI. See [#3065](https://github.com/google/site-kit-wp/issues/3065).
+* Improve styling for Site Kit header, especially on mobile devices. See [#3058](https://github.com/google/site-kit-wp/issues/3058).
+* Update remaining external links in widgets on module pages to include correct date range parameters. See [#3042](https://github.com/google/site-kit-wp/issues/3042).
+* Improve speed and reliability of Analytics property matching. See [#3012](https://github.com/google/site-kit-wp/issues/3012).
+* Add placeholder to all "Other" text input fields in user input flow. See [#2993](https://github.com/google/site-kit-wp/issues/2993).
+* Implement data store selector to detect whether a GA4 property has a web data stream that matches the current site. See [#2981](https://github.com/google/site-kit-wp/issues/2981).
+* Update the `modules/analytics-4` store with actions and selectors for creating and querying web data streams. See [#2980](https://github.com/google/site-kit-wp/issues/2980).
+* Implement JS data store infrastructure to query and create GA4 properties. See [#2979](https://github.com/google/site-kit-wp/issues/2979).
+* Introduce new JS asset for upcoming GA4 integration. See [#2977](https://github.com/google/site-kit-wp/issues/2977).
+* Introduce JS data store `modules/analytics-4` as infrastructure for upcoming GA4 integration. See [#2976](https://github.com/google/site-kit-wp/issues/2976).
+* Allow modifying the active Search Console property in the module's settings panel, relevant for example when a site has multiple applicable properties. See [#2937](https://github.com/google/site-kit-wp/issues/2937).
+* Fix accessibility problem where it wasn't possible to delete user input search terms using the keyboard. See [#2900](https://github.com/google/site-kit-wp/issues/2900).
+* Update user input styles to fix visual issues on small devices. See [#2886](https://github.com/google/site-kit-wp/issues/2886).
+* Migrate AdSense module page "Top earning pages" widget to use Widget API. See [#2066](https://github.com/google/site-kit-wp/issues/2066).
+
+**Fixed**
+
+* Update Unique Visitors widget to display the actual number of users coming from search. See [#3064](https://github.com/google/site-kit-wp/issues/3064).
+* Fix visual spacing problems with widget-based dashboard due to empty containers disrupting grid layout. See [#3062](https://github.com/google/site-kit-wp/issues/3062).
+* Update Site Kit widgets to always return their content wrapped in a `Widget`. See [#3060](https://github.com/google/site-kit-wp/issues/3060).
+* Update AdSense dashboard widgets to render ad blocker warning. See [#3011](https://github.com/google/site-kit-wp/issues/3011).
+* Fix broken alignment of data block elements when there is one with zero data. See [#2992](https://github.com/google/site-kit-wp/issues/2992).
+* Fix UI issues on the pie chart of the All Traffic widget when there is just a single slice. See [#2991](https://github.com/google/site-kit-wp/issues/2991).
+* Fix Analytics links in new widgets on the Analytics module page to take into account selected days. See [#2983](https://github.com/google/site-kit-wp/issues/2983).
+* Fix a bug where select menu components could be partially covered by the Site Kit header making some items unclickable. See [#2885](https://github.com/google/site-kit-wp/issues/2885).
+* Improve performance of potentially slow database query to migrate user data from an older version of Site Kit. See [#2870](https://github.com/google/site-kit-wp/issues/2870).
+* Fix issue with AdSense existing site detection when using camelcase URLs in WordPress settings. See [#2695](https://github.com/google/site-kit-wp/issues/2695).
+* Fix javascript issues that appear when admin pages have been translated with Google Translate. See [#2280](https://github.com/google/site-kit-wp/issues/2280).
+
+= 1.30.0 =
+
+**Enhanced**
+
+* Add tracking events for help visibility menu links. See [#3027](https://github.com/google/site-kit-wp/issues/3027).
+* Scaffold `analytics-4` module PHP class. See [#2974](https://github.com/google/site-kit-wp/issues/2974).
+* Clarify wording of warning message when disabling the AdSense snippet. See [#2962](https://github.com/google/site-kit-wp/issues/2962).
+* Introduce hidden labels for search term fields of the User Input Settings flow. See [#2901](https://github.com/google/site-kit-wp/issues/2901).
+* Fix low-contrast color for keyword bubbles in the user input flow. See [#2896](https://github.com/google/site-kit-wp/issues/2896).
+* Ensure that the user is not sent to the user input flow when granting additional scopes after being already authenticated, even if submitting the user input response is still required. See [#2874](https://github.com/google/site-kit-wp/issues/2874).
+* Update assets across the plugin with new side kick-based branding illustrations. See [#2616](https://github.com/google/site-kit-wp/issues/2616).
+* Include button to reset Site Kit under "Available Tools" in WordPress, as a way to reset the plugin data e.g. when currently not being connected. See [#2384](https://github.com/google/site-kit-wp/issues/2384).
+* Update modules settings to use separate components for active and inactive modules. See [#2184](https://github.com/google/site-kit-wp/issues/2184).
+* Improve the pre-setup compatibility checks to properly warn if the REST API is disabled instead of failing with an unexpected error. See [#2101](https://github.com/google/site-kit-wp/issues/2101).
+* Migrate Analytics module page Top Acquisition Channels widget to use Widget API. See [#2069](https://github.com/google/site-kit-wp/issues/2069).
+* Migrate Analytics module page popular pages widget to use Widget API. See [#2068](https://github.com/google/site-kit-wp/issues/2068).
+* Migrate Analytics module page overview widget to use Widget API. See [#2067](https://github.com/google/site-kit-wp/issues/2067).
+* Migrate AdSense module page overview widget to use Widget API. See [#2065](https://github.com/google/site-kit-wp/issues/2065).
+* Migrate Search Console module page popular keywords widget to use Widget API. See [#2064](https://github.com/google/site-kit-wp/issues/2064).
+* Migrate Search Console module page overview widget to use Widget API. See [#2063](https://github.com/google/site-kit-wp/issues/2063).
+
+**Fixed**
+
+* Fix critical JS error due to a new version of the Google charts library being released, by locking to a specific version. See [#3132](https://github.com/google/site-kit-wp/issues/3132).
+* Fix regression where modules may be sorted incorrectly on the plugin's settings screen. See [#3093](https://github.com/google/site-kit-wp/issues/3093).
+* Fix bug with help visibility icon in header where clicking it wouldn't trigger the menu to open in some scenarios, and also address some visual design problems with it. See [#3026](https://github.com/google/site-kit-wp/issues/3026).
+* Fix Ad Blocker detection issue which occurred on sites with GoDaddy CDN enabled. See [#3018](https://github.com/google/site-kit-wp/issues/3018).
+* Ensure changing the site URL between HTTP and HTTPS or `www.` and non-`www.` does not impact the results displayed in Analytics and AdSense widgets. See [#3005](https://github.com/google/site-kit-wp/issues/3005).
+* Fix bug where Analytics snippet could still be placed when an existing snippet was already present in the frontend. See [#2909](https://github.com/google/site-kit-wp/issues/2909).
+* Ensure that the AdSense snippet is not included on 404 pages in the frontend. See [#2784](https://github.com/google/site-kit-wp/issues/2784).
+
+= 1.29.0 =
+
+**Enhanced**
+
+* Only show notice about a user input question affecting other users of the site if there is more than one authorized user on the site overall. See [#2852](https://github.com/google/site-kit-wp/issues/2852).
+* Introduce new contextual help menu in Site Kit header bar and on the authentication service. See [#2846](https://github.com/google/site-kit-wp/issues/2846).
+* Introduce tooltip tour guiding the user through the new version of the All Traffic widget. See [#2739](https://github.com/google/site-kit-wp/issues/2739).
+* Enhance `PreviewBlock` JS component to support breakpoint-specific sizes via props. See [#2727](https://github.com/google/site-kit-wp/issues/2727).
+* Implement persistent dismissal of feature tours, stored in the database. See [#2650](https://github.com/google/site-kit-wp/issues/2650).
+* Introduce `ReportTable` component for displaying reusable data tables. See [#2249](https://github.com/google/site-kit-wp/issues/2249).
+
+**Fixed**
+
+* Fix vertical axis labels for Session Duration graph on Search Console module page to not mix minutes and hours. See [#2967](https://github.com/google/site-kit-wp/issues/2967).
+* Fix problem where OAuth callback login would be triggered before WordPress's login redirect mechanism, immediately failing instead of redirecting as expected. See [#2935](https://github.com/google/site-kit-wp/issues/2935).
+* Ensure entering a text is required when choosing the "Other" option for a question in the user input flow. See [#2907](https://github.com/google/site-kit-wp/issues/2907).
+* Fix refactored Analytics goals widget behavior to match legacy version. See [#2858](https://github.com/google/site-kit-wp/issues/2858).
+* Fix bug where switching between questions in the user input flow did not scroll the question into view. See [#2848](https://github.com/google/site-kit-wp/issues/2848).
+* Cache user input responses temporarily in browser until it is submitted while the user is going through the flow, to prevent accidentally losing entered data. See [#2844](https://github.com/google/site-kit-wp/issues/2844).
+* Clarify wording in last user input question about search terms. See [#2843](https://github.com/google/site-kit-wp/issues/2843).
+* Fix some bugs in the behavior when checking or unchecking an "Other" option for one of the questions in the user input flow. See [#2828](https://github.com/google/site-kit-wp/issues/2828).
+
+= 1.28.0 =
+
+**Added**
+
+* Implement React components for rendering tooltip tours. See [#2626](https://github.com/google/site-kit-wp/issues/2626).
+
+**Enhanced**
+
+* Automatically focus the "Other" text input upon selecting the "Other" option in a list of radio buttons or checkboxes. See [#2897](https://github.com/google/site-kit-wp/issues/2897).
+* Update copy to clarify multiple choice behavior in user input flow. See [#2857](https://github.com/google/site-kit-wp/issues/2857).
+* Update links on new version of AdSense dashboard summary widget to deep link to the respective area in the AdSense frontend. See [#2774](https://github.com/google/site-kit-wp/issues/2774).
+* Include site URL in AdSense report deep links to point to the appropriate report. See [#2773](https://github.com/google/site-kit-wp/issues/2773).
+* Add support for PHP 8 and ensure its maintenance via CI. Props TorbenLundsgaard. See [#2724](https://github.com/google/site-kit-wp/issues/2724).
+* The `googlesitekit_authorize_user` and `googlesitekit_reauthorize_user` actions are now also fired when not using the authentication service flow. See [#2693](https://github.com/google/site-kit-wp/issues/2693).
+* Implement infrastructure for rendering widgets in Site Kit module screens. See [#2653](https://github.com/google/site-kit-wp/issues/2653).
+* Use reliable and React-friendly approach for detecting whether a widget is inactive and should not be rendered. See [#2612](https://github.com/google/site-kit-wp/issues/2612).
+* Enhance localization of duration formatting. See [#2588](https://github.com/google/site-kit-wp/issues/2588).
+* Filter all Analytics API requests to only include results for the current domain. See [#2554](https://github.com/google/site-kit-wp/issues/2554).
+* Rely exclusively on SVGs for graphics and remove other image support. See [#2468](https://github.com/google/site-kit-wp/issues/2468).
+
+**Fixed**
+
+* Improve UX around entering search terms in the user input flow. See [#2842](https://github.com/google/site-kit-wp/issues/2842).
+* Fix various visual glitches in the user input flow summary view and trim free text content entered for any "Other" choice. See [#2837](https://github.com/google/site-kit-wp/issues/2837).
+* Change to preview / next button behaviour in User Input flow. See [#2829](https://github.com/google/site-kit-wp/issues/2829).
+* Fix AdSense bug where `Ad Client not found` error would be displayed in certain cases where an account is still pending. See [#2812](https://github.com/google/site-kit-wp/issues/2812).
+* Fix bug where AdGuard and uBlock ad blockers were no longer being recognized by Site Kit by implementing a more holistic solution for ad blocker detection relying on the `just-detect-adblock` library. See [#2794](https://github.com/google/site-kit-wp/issues/2794).
+* Update link on AdSense module page to point to Analytics which is more accurate due to the source of the data. See [#2772](https://github.com/google/site-kit-wp/issues/2772).
+* Fix Search Console x-axis labels on 90 day charts. See [#2747](https://github.com/google/site-kit-wp/issues/2747).
+* Fix text issue with All Traffic pie chart. See [#2660](https://github.com/google/site-kit-wp/issues/2660).
+* Fix problem where Analytics snippet placement would not be re-instated after disconnecting Tag Manager module when it was previously taking care of the Analytics tag. See [#2579](https://github.com/google/site-kit-wp/issues/2579).
+* Fix bug where tracking opt-in was not working for multisite administrators when not being a member of the site. See [#2103](https://github.com/google/site-kit-wp/issues/2103).
+
+= 1.27.0 =
+
+**Added**
+
+* Add support for AdSense auto ads to Web Stories, allowing to choose an AdSense ad unit to use which will then result in an `amp-story-auto-ads` element being injected. See [#2602](https://github.com/google/site-kit-wp/issues/2602).
+
+**Enhanced**
+
+* Improve wording for the confirmation notification after submitting user input settings. See [#2790](https://github.com/google/site-kit-wp/issues/2790).
+* Allow resetting persistent Site Kit options via WP-CLI. See [#2748](https://github.com/google/site-kit-wp/issues/2748).
+* Display All Traffic widget dimension tabs as a dropdown on narrow viewports. See [#2743](https://github.com/google/site-kit-wp/issues/2743).
+* Include current dates in AdSense deep links so that the service frontend shows the same time period as Site Kit. See [#2689](https://github.com/google/site-kit-wp/issues/2689).
+* Update Google API client library and remove custom configuration to retry failed API requests as it is now covered in the library itself. See [#2688](https://github.com/google/site-kit-wp/issues/2688).
+* Introduce `WidgetReportError` component, which should be used by widgets to display an overall error state. See [#2670](https://github.com/google/site-kit-wp/issues/2670).
+* Implement REST datapoints and JS datastore infrastructure for getting and dismissing tooltip tours. See [#2648](https://github.com/google/site-kit-wp/issues/2648).
+* Prepare Widget API-based version of the dashboard for launch, rendering the entire page content including header and footer. See [#2646](https://github.com/google/site-kit-wp/issues/2646).
+* Add ability to remotely control enabled feature flags. See [#2533](https://github.com/google/site-kit-wp/issues/2533).
+* Introduce `core/ui` datastore for centrally storing UI state in JS. See [#2456](https://github.com/google/site-kit-wp/issues/2456).
+* Include current dates in Analytics deep links so that the service frontend shows the same time period as Site Kit. See [#2287](https://github.com/google/site-kit-wp/issues/2287).
+* Remove legacy version of the WP Dashboard widget and replace it with Site Kit widget-based refactored version. See [#2240](https://github.com/google/site-kit-wp/issues/2240).
+
+**Fixed**
+
+* Fix bug where the old All Traffic widget was still displaying in the dashboard for a single URL. See [#2856](https://github.com/google/site-kit-wp/issues/2856).
+* Fix PHP 8 notice for deprecated `uasort()` usage. Props oguilleux. See [#2797](https://github.com/google/site-kit-wp/issues/2797).
+* Reset link hidden while compatibility checks are in progress. See [#2756](https://github.com/google/site-kit-wp/issues/2756).
+* Show All Traffic pie chart tooltips persistently when a slice is selected to allow interaction with the tooltip, which would not be possible when hovering. See [#2737](https://github.com/google/site-kit-wp/issues/2737).
+* Fix AdSense dashboard summary widget to include data for the current date range in its sparklines rather than only data from the 1st of the current month. See [#2734](https://github.com/google/site-kit-wp/issues/2734).
+* Fix visual bug where in the AdSense flow the toggle element could be overlapped by a checkmark icon. See [#2722](https://github.com/google/site-kit-wp/issues/2722).
+* Fix bug with Search Console module page graph where overlapping legends would be displayed when selecting more than 2 metrics. See [#2721](https://github.com/google/site-kit-wp/issues/2721).
+* Fix various bugs around the All Traffic pie chart (e.g. incorrect slices being selected when changing date range, correct behavior of not allowing "Others" to be selected) by introducing a new React-based charts component. See [#2714](https://github.com/google/site-kit-wp/issues/2714).
+* Fix bug where in some occasions an error would be displayed when updating settings with the same values that were already stored before. See [#2513](https://github.com/google/site-kit-wp/issues/2513).
+* Fix formatting of y-axis values for Bounce Rate and Session Duration on Analytics overview chart. See [#2095](https://github.com/google/site-kit-wp/issues/2095).
+
+= 1.26.0 =
+
+**Enhanced**
+
+* Ensure that any "Others" slice in the All Traffic widget is not indicated as selectable and cannot be active. See [#2716](https://github.com/google/site-kit-wp/issues/2716).
+* When viewing a specific segment of users in the All Traffic widget, make the "All Users" breadcrumb a link to go back to the overall users view. See [#2715](https://github.com/google/site-kit-wp/issues/2715).
+* Enhance All Traffic widget pie chart legend by using a custom implementation so that the labels are never cut off and include a visual hover and active state. See [#2700](https://github.com/google/site-kit-wp/issues/2700).
+* Show more than just two dates on the All Traffic widget's line chart. See [#2699](https://github.com/google/site-kit-wp/issues/2699).
+* Include available and enabled Site Kit features in Site Health information. See [#2662](https://github.com/google/site-kit-wp/issues/2662).
+* Rename the `header` and `footer` props of the `Widget` component to `Header` and `Footer` to indicate that they require a React component instead of an element. See [#2652](https://github.com/google/site-kit-wp/issues/2652).
+* Simplify usage of the `Widget` component so that widget components can use a scoped version of it via props rather than manually importing it and re-specifying the widget slug. See [#2613](https://github.com/google/site-kit-wp/issues/2613).
+* Migrate top content table in WP dashboard widget to functional hook-based component using the datastore. See [#2610](https://github.com/google/site-kit-wp/issues/2610).
+* Decouple JS store, widget, and module registration from imports, introducing dedicated registration functions. See [#2587](https://github.com/google/site-kit-wp/issues/2587).
+* Remove server-side API requests to determine whether a post has Search Console or Analytics data as it could significantly slow down WP admin response time. Props archon810. See [#2528](https://github.com/google/site-kit-wp/issues/2528).
+* Always display the Site Kit admin bar menu even when there is no data for a more consistent experience, informing about the lack of data as applicable. See [#2508](https://github.com/google/site-kit-wp/issues/2508).
+* Improve UX when clicking the Reset dialog button, keeping the dialog open in a loading state while completing the process. See [#2347](https://github.com/google/site-kit-wp/issues/2347).
+* Include current dates in Search Console deep links so that the service frontend shows the same time period as Site Kit. See [#2286](https://github.com/google/site-kit-wp/issues/2286).
+* Enhance admin bar implementation to be powered by the `googlesitekit.data` registry and its stores. See [#2241](https://github.com/google/site-kit-wp/issues/2241).
+
+**Fixed**
+
+* Ensure x-axis labels of the All Traffic line chart are correctly aligned with the pie chart legend. See [#2738](https://github.com/google/site-kit-wp/issues/2738).
+* Avoid layout shift when enabling the Analytics module via the Site Kit dashboard CTA. See [#2719](https://github.com/google/site-kit-wp/issues/2719).
+* Avoid content shifts in All Traffic widget due to incorrect loading UI layout. See [#2710](https://github.com/google/site-kit-wp/issues/2710).
+* Only require going through the user input flow after setup if it has not been completed by the user before. See [#2603](https://github.com/google/site-kit-wp/issues/2603).
+
+= 1.25.0 =
+
+**Added**
+
+* Launch new All Traffic widget in the Site Kit dashboard, which surfaces more detailed information about channels, includes a time-based graph, and surfaces similar metrics for countries and devices the site is accessed from. See [#2429](https://github.com/google/site-kit-wp/issues/2429).
+
+**Enhanced**
+
+* Modify pie chart tooltip behavior for new All Traffic widget so that tooltips are only shown when hovering over a pie slice. See [#2701](https://github.com/google/site-kit-wp/issues/2701).
+* Store initial Site Kit version per user for more targeted messaging in the future and introduce `googlesitekit_reauthorize_user` action. See [#2692](https://github.com/google/site-kit-wp/issues/2692).
+* Improve user experience of new All Traffic widget for when it is loading and for when there is no relevant data available. See [#2675](https://github.com/google/site-kit-wp/issues/2675).
+* Fix layout of new All Traffic widget on mobile viewports to use a single column. See [#2663](https://github.com/google/site-kit-wp/issues/2663).
+* Add contextual documentation links to new All Traffic widget to explain special dimension values "(not set)" and "(other)". See [#2642](https://github.com/google/site-kit-wp/issues/2642).
+* Modify new All Traffic widget so that the line chart always uses the same color indicated by the currently selected pie slice. See [#2625](https://github.com/google/site-kit-wp/issues/2625).
+* Modify font styles in the new All Traffic widget to match font styles used in Search Funnel widget and elsewhere throughout the plugin. See [#2623](https://github.com/google/site-kit-wp/issues/2623).
+* Rely on new Search Console "fresh data" feature to display metrics as recent as 1 day ago, improving on the previous offset of 2 days. See [#2522](https://github.com/google/site-kit-wp/issues/2522).
+* Remove various old REST datapoints in AdSense, Analytics, and Search Console modules that were only present to access specific settings and unused. See [#2507](https://github.com/google/site-kit-wp/issues/2507).
+* Introduce `core/location` JS store, rely on it for redirects, and fix notification about unsatisfied scopes unnecessarily appearing before an OAuth redirect. See [#2497](https://github.com/google/site-kit-wp/issues/2497).
+* Get rid of remaining usage of legacy `dateRange` argument in AdSense widgets. See [#2477](https://github.com/google/site-kit-wp/issues/2477).
+* Improve JS API caching layer to cache certain error responses if they include a `cacheTTL` extra data property, allowing to avoid excessive Analytics API requests when the AdSense account is not linked. See [#2457](https://github.com/google/site-kit-wp/issues/2457).
+* Introduce infrastructure for dynamically controlled feature flags via a `googlesitekit_is_feature_enabled` filter. See [#2452](https://github.com/google/site-kit-wp/issues/2452).
+* Implement logic to automatically combine UI for widgets that are in special states, e.g. widgets without sufficient API response data, or widgets that require a specific module to be set up first. See [#2252](https://github.com/google/site-kit-wp/issues/2252).
+* Add widget contexts and register widget areas for Site Kit module pages. See [#2062](https://github.com/google/site-kit-wp/issues/2062).
+
+**Fixed**
+
+* Fix All Traffic widget UI bug where pie chart tooltips would flicker when hovering over them. See [#2709](https://github.com/google/site-kit-wp/issues/2709).
+* Ensure line chart in All Traffic is correctly aligned with the overall count and the pie chart at the bottom. See [#2708](https://github.com/google/site-kit-wp/issues/2708).
+* Fix performance lag across Site Kit screens due to a problem in the `getModules` selector of the `core/modules` store. See [#2691](https://github.com/google/site-kit-wp/issues/2691).
+* Fix bug where Tag Manager and Analytics snippet could be inserted twice on AMP pages. See [#2668](https://github.com/google/site-kit-wp/issues/2668).
+* Fix bug with All Traffic widget where selected pie slice would no longer remain selected when changing the current date range. See [#2644](https://github.com/google/site-kit-wp/issues/2644).
+* Fix graph in All Traffic widget to not cut off axis labels on viewports smaller than desktop. See [#2624](https://github.com/google/site-kit-wp/issues/2624).
+
+= 1.24.0 =
+
+**Added**
+
+* Implement `UserDimensionsPieChart` component for new Analytics All Traffic widget. See [#2425](https://github.com/google/site-kit-wp/issues/2425).
+* Implement main tabs UI for the new All Traffic widget. See [#2424](https://github.com/google/site-kit-wp/issues/2424).
+* Implement `TotalUserCount` component for new Analytics All Traffic widget. See [#2423](https://github.com/google/site-kit-wp/issues/2423).
+* Implement `UserCountGraph` component for new Analytics All Traffic widget. See [#2422](https://github.com/google/site-kit-wp/issues/2422).
+
+**Enhanced**
+
+* Add review and support links in the plugin's list table entry. See [#2516](https://github.com/google/site-kit-wp/issues/2516).
+* Rename `icon` argument of `registerWidgetArea` to `Icon` and require it to be a `WPComponent` (e.g. an SVG). See [#2505](https://github.com/google/site-kit-wp/issues/2505).
+* Improve UX for modifying user input settings, removing the requirement to click through subsequent questions when only wanting to change a specific response. See [#2499](https://github.com/google/site-kit-wp/issues/2499).
+* Implement dynamic source link in the new All Traffic widget. See [#2428](https://github.com/google/site-kit-wp/issues/2428).
+* Add interactivity to new All Traffic widget so that selecting a pie chart slice contextually updates the count and graph displayed. See [#2426](https://github.com/google/site-kit-wp/issues/2426).
+* Add support for a `dimensionFilters` argument to the Analytics `GET:report` REST datapoint in PHP and the `getReport` selector in JS. See [#2421](https://github.com/google/site-kit-wp/issues/2421).
+* Enhance `whenActive` higher-order component to accept a `FallbackComponent` as well as an `IncompleteComponent` prop. See [#2381](https://github.com/google/site-kit-wp/issues/2381).
+* Remove legacy publisher win notifications. See [#2285](https://github.com/google/site-kit-wp/issues/2285).
+* Add `storeName` argument to `registerModule` action of the `core/modules` store to specify the name of the JS datastore for the module. See [#2271](https://github.com/google/site-kit-wp/issues/2271).
+* Move date awareness for Search Console API requests to the client, allowing for more contextual date information to be available. See [#2237](https://github.com/google/site-kit-wp/issues/2237).
+* Move date awareness for Analytics API requests to the client, allowing for more contextual date information to be available. See [#2236](https://github.com/google/site-kit-wp/issues/2236).
+* Introduce `getGoogleSupportURL` selector to `core/site` store in JS. See [#2221](https://github.com/google/site-kit-wp/issues/2221).
+* Add support for an optional `SettingsSetupIncompleteComponent` argument to the `registerModule` action of the `core/modules` store, allowing developers to register a custom UI component for when the module is not fully connected. See [#2080](https://github.com/google/site-kit-wp/issues/2080).
+* Update the plugin's admin bar menu to rely on functional hook-based components using the datastore. See [#2076](https://github.com/google/site-kit-wp/issues/2076).
+* Update the plugin's WordPress dashboard widget to rely on functional hook-based components using the datastore. See [#2075](https://github.com/google/site-kit-wp/issues/2075).
+* Switch `core/user/data/user-input-settings` REST endpoint to use remote authentication service API endpoint. See [#2048](https://github.com/google/site-kit-wp/issues/2048).
+* Implement user input block to edit responses under `Site Kit > Settings > Admin Settings`. See [#2041](https://github.com/google/site-kit-wp/issues/2041).
+* Introduce reusable infrastructure for rendering tags, relying on new `Tag_Interface` and `Guard_Interface` interfaces as well as `Tag` and `Module_Tag` classes, now being used across all modules. See [#475](https://github.com/google/site-kit-wp/issues/475).
+
+**Fixed**
+
+* Fix AdSense overview graph UI so that the available space for the total numbers expands as necessary. See [#2555](https://github.com/google/site-kit-wp/issues/2555).
+* Prevent a remote notifications API request for development sites where the plugin is not using the authentication service. See [#2495](https://github.com/google/site-kit-wp/issues/2495).
+* Fix JavaScript error triggered upon resetting the plugin's data. See [#2478](https://github.com/google/site-kit-wp/issues/2478).
+* Update all Analytics deep links to use the `getServiceReportURL` selector for correct encoding of parameters and consistent behavior. See [#2405](https://github.com/google/site-kit-wp/issues/2405).
+* Fix bug in legacy API layer dealing with errors in a batch response that could result in infinite loading states on module pages. See [#2403](https://github.com/google/site-kit-wp/issues/2403).
+* Improve Analytics property matching logic so that users with many Analytics accounts do not run into user quota errors. See [#2218](https://github.com/google/site-kit-wp/issues/2218).
+* Introduce `numFmt` function for centralized Site Kit-specific number formatting, localize percentage formatting, and fix various number formatting inconsistencies. See [#2200](https://github.com/google/site-kit-wp/issues/2200).
+
+= 1.23.0 =
+
+**Added**
+
+* Scaffold components for a new version of the Analytics All Traffic widget. See [#2392](https://github.com/google/site-kit-wp/issues/2392).
+* Display graph with historic AdSense data on module page, showing earnings, RPM, impressions and CTR over time. See [#1921](https://github.com/google/site-kit-wp/issues/1921).
+
+**Enhanced**
+
+* Introduce `listFormat` function to format entries in a comma-separated list. See [#2486](https://github.com/google/site-kit-wp/issues/2486).
+* Rename arguments across various datastore actions requiring a `WPComponent` type to use capitalized names to better indicate a `WPComponent` (and not a `WPElement`) is required. See [#2413](https://github.com/google/site-kit-wp/issues/2413).
+* Improve validation of user input submission states. See [#2323](https://github.com/google/site-kit-wp/issues/2323).
+* Introduce `ActivateModuleCTA` and `CompleteModuleActivationCTA` components to centrally manage UI for those scenarios. See [#2299](https://github.com/google/site-kit-wp/issues/2299).
+* Remove legacy `googlesitekit.moduleHasSetupWizard` JS filter. See [#2291](https://github.com/google/site-kit-wp/issues/2291).
+* Remove legacy splash screen and the associated components. See [#2290](https://github.com/google/site-kit-wp/issues/2290).
+* Allow registering module icon SVGs via the `core/modules` action `registerModule`. See [#2143](https://github.com/google/site-kit-wp/issues/2143).
+
+**Fixed**
+
+* Fix various low-level technical bugs due to duplicate module initialization by relying on a single reused Webpack runtime across entrypoints. See [#2444](https://github.com/google/site-kit-wp/issues/2444).
+* Remove duplicate error message UI on top of module settings panel, since error messages are now displayed within the panel's main content already. See [#2396](https://github.com/google/site-kit-wp/issues/2396).
+* Fix component-specific initialization logic of Google charts library to prevent duplicate initialization. See [#2247](https://github.com/google/site-kit-wp/issues/2247).
+
+= 1.22.0 =
+
+**Added**
+
+* Surface WordPress-specific user experience recommendations in the PageSpeed Insights widget. See [#2390](https://github.com/google/site-kit-wp/issues/2390).
+* Add support for `checkRequirements` argument to `registerModule` action of `core/modules` store, which allows to block a module from being activated until certain requirements are met. See [#2130](https://github.com/google/site-kit-wp/issues/2130).
+
+**Enhanced**
+
+* Ensure that all URIs on the authentication service are automatically refreshed as necessary when connecting as a user to an already connected site, fixing issues where sites could get stuck after updating their URLs. See [#2383](https://github.com/google/site-kit-wp/issues/2383).
+* Move the date picker into the Site Kit header bar and make it sticky so that it is always visible when scrolling. See [#2331](https://github.com/google/site-kit-wp/issues/2331).
+* Remove outdated dashboard notification warning vaguely about missing permissions, which is now covered with more specific widget CTAs. See [#2329](https://github.com/google/site-kit-wp/issues/2329).
+* Add support for feature flags in PHP and experimentally require user input completion upon setup. See [#2316](https://github.com/google/site-kit-wp/issues/2316).
+* Implement success notification displayed after completing the user input flow. See [#2283](https://github.com/google/site-kit-wp/issues/2283).
+* Add support for displaying datastore-driven global error notifications in the plugin header. See [#2261](https://github.com/google/site-kit-wp/issues/2261).
+* Improve logic to determine whether a Search Console API report response is "empty", via new `isZeroReport` function for Search Console. See [#2244](https://github.com/google/site-kit-wp/issues/2244).
+* Improve logic to determine whether an Analytics API report response is "empty", via new `isZeroReport` function for Analytics. See [#2243](https://github.com/google/site-kit-wp/issues/2243).
+* Rely on JavaScript date parsing for AdSense widgets. See [#2235](https://github.com/google/site-kit-wp/issues/2235).
+* Add `core/modules` actions and selectors for managing module settings panel state. See [#2181](https://github.com/google/site-kit-wp/issues/2181).
+* Implement Site Kit dashboard notification for when requesting user input to be completed. See [#2043](https://github.com/google/site-kit-wp/issues/2043).
+* Implement exponential backoff to retry Google service API requests a limited amount of time if they fail with temporary errors. See [#1998](https://github.com/google/site-kit-wp/issues/1998).
+
+**Fixed**
+
+* Fix Search Console latest data threshold back to 2 days ago as that is the latest data the API provides. See [#2458](https://github.com/google/site-kit-wp/issues/2458).
+* Make e2e tests pass for WordPress 5.6. See [#2455](https://github.com/google/site-kit-wp/issues/2455).
+* Fix race condition where widgets could run into an error when their necessary datastore selector had not started resolving yet. See [#2436](https://github.com/google/site-kit-wp/issues/2436).
+* Fix various spelling errors throughout the UI of the plugin. See [#2401](https://github.com/google/site-kit-wp/issues/2401).
+* Flush browser session storage on plugin updates to prevent stale data from being served against new logic. See [#2334](https://github.com/google/site-kit-wp/issues/2334).
+* Ensure that REST API preloaded data is not computed and included outside of Site Kit admin screens. See [#2315](https://github.com/google/site-kit-wp/issues/2315).
+* Fix failing PHPUnit tests for compatibility with upcoming WordPress 5.6. See [#2264](https://github.com/google/site-kit-wp/issues/2264).
+* Fix broken Analytics frontend deep links on AdSense module page. See [#2228](https://github.com/google/site-kit-wp/issues/2228).
+
+= 1.21.0 =
+
+**Enhanced**
+
+* Include current user's Site Kit capabilities in Site Health report. See [#2314](https://github.com/google/site-kit-wp/issues/2314).
+* Mark user input state as completed once user has submitted their information. See [#2310](https://github.com/google/site-kit-wp/issues/2310).
+* Finalize copy for new `googlesitekit-user-input` screen. See [#2302](https://github.com/google/site-kit-wp/issues/2302).
+* Display informational warning before setup about limited support for WordPress versions before 5.0. See [#2289](https://github.com/google/site-kit-wp/issues/2289).
+* Modify Search Console API queries so that they include results up until one day ago. See [#2284](https://github.com/google/site-kit-wp/issues/2284).
+* Add support for widgets to have multiple (fallback) widths via `googlesitekit.widgets.registerWidget`, laying out widget grid with as few gaps as possible. See [#2251](https://github.com/google/site-kit-wp/issues/2251).
+* Modify widgets registered with `quarter` width to render for half the screen width on mobile viewports. See [#2250](https://github.com/google/site-kit-wp/issues/2250).
+* Introduce `ReportError` and `ReportZero` components which should be returned by widgets that are in error state or have no data to display. See [#2246](https://github.com/google/site-kit-wp/issues/2246).
+* Add JS utility functions `sumObjectListValue`, `averageObjectListValue`, and enhance capabilities of `extractForSparkline` function. See [#2245](https://github.com/google/site-kit-wp/issues/2245).
+* Improve logic to determine whether an AdSense API report response is "empty", via new `isZeroReport` function for AdSense. See [#2242](https://github.com/google/site-kit-wp/issues/2242).
+* Simplify adding strings only visible to screen reader users by implementing a `VisuallyHidden` component. See [#2165](https://github.com/google/site-kit-wp/issues/2165).
+* Reduce complexity of implementing and registering `settingsEdit` components for a module by centrally handling setting submission. See [#2137](https://github.com/google/site-kit-wp/issues/2137).
+* Modify the `createModuleStore` JavaScript function so that every module store has a `canSubmitChanges` selector and a `submitChanges` action. See [#2136](https://github.com/google/site-kit-wp/issues/2136).
+* Implement UI design for `googlesitekit-user-input` screen. See [#2040](https://github.com/google/site-kit-wp/issues/2040).
+* Simplify module class infrastructure and implement (internal) module registry. See [#1939](https://github.com/google/site-kit-wp/issues/1939).
+
+**Fixed**
+
+* Fix bug where Analytics widgets would fire their API requests even when the module wasn't completely set up, resulting in unnecessary error responses. See [#2358](https://github.com/google/site-kit-wp/issues/2358).
+* Fix JavaScript translations that were not appearing to work correctly, given the site uses WordPress >= 5.0, which is required for support of JavaScript translations. See [#2171](https://github.com/google/site-kit-wp/issues/2171).
+* Fix bug where a previous error from an action would not be cleared when trying the same action again. See [#2156](https://github.com/google/site-kit-wp/issues/2156).
+* Fix a few translation strings that were concatenating date ranges, making them correctly translatable. See [#2146](https://github.com/google/site-kit-wp/issues/2146).
+* Fix compatibility issue where `amp-auto-ads` element would not be present in AMP singular content when also using the Yoast SEO plugin. See [#2111](https://github.com/google/site-kit-wp/issues/2111).
+
+= 1.20.0 =
+
+**Added**
+
+* Implement post search widget using the new Widget API. See [#2023](https://github.com/google/site-kit-wp/issues/2023).
+* Allow registering a `settingsViewComponent` and `settingsEditComponent` when calling the `registerModule` action on the `core/modules` store. See [#1623](https://github.com/google/site-kit-wp/issues/1623).
+
+**Enhanced**
+
+* Unregister the site from the authentication service when the plugin is deleted. See [#2311](https://github.com/google/site-kit-wp/issues/2311).
+* Add selectors `canSubmitChanges` and `isDoingSubmitChanges` and action `submitChanges` to `core/modules` datastore. See [#2182](https://github.com/google/site-kit-wp/issues/2182).
+* Add selectors `getModuleDependencyNames` and `getModuleDependantNames` to `core/modules` store. See [#2180](https://github.com/google/site-kit-wp/issues/2180).
+* Allow registering a `setupComponent` when calling the `registerModule` action on the `core/modules` store. See [#2074](https://github.com/google/site-kit-wp/issues/2074).
+* Implement UI for new splash screen based on authentication service improvements. See [#2046](https://github.com/google/site-kit-wp/issues/2046).
+* Detect and store whether each user has already answered the user input questions to customize the plugin behavior. See [#2042](https://github.com/google/site-kit-wp/issues/2042).
+* Implement UI components to use in `googlesitekit-user-input` screen. See [#2039](https://github.com/google/site-kit-wp/issues/2039).
+* Add Analytics tracking events for API request errors. See [#1999](https://github.com/google/site-kit-wp/issues/1999).
+
+**Fixed**
+
+* Fix bug where errors would be inconsistently keyed and not cleared as expected in certain cases. See [#2210](https://github.com/google/site-kit-wp/issues/2210).
+* Fix Search Console deep links to point to correct locations in case of a domain property as well. See [#2110](https://github.com/google/site-kit-wp/issues/2110).
+* Fix accessibility issue with links opening in a new tab by annotating them with screen reader text informing about it. See [#2093](https://github.com/google/site-kit-wp/issues/2093).
+* Fix several UI loading state issues across module setup flows. See [#1995](https://github.com/google/site-kit-wp/issues/1995).
+* Display text field to specify name when creating a new Tag Manager container, and prevent duplicate names which could have resulted in an error before. See [#1817](https://github.com/google/site-kit-wp/issues/1817).
+* Remove usage of JavaScript chunk files to fix potential issues with certain server configurations. See [#1391](https://github.com/google/site-kit-wp/issues/1391).
+
+= 1.19.0 =
+
+**Added**
+
+* Introduce `getUserInputSettings` selector and `setUserInputSettings` and `saveUserInputSettings` actions on `core/user` store. See [#2037](https://github.com/google/site-kit-wp/issues/2037).
+* Introduce `core/user/data/user-input-settings` REST datapoint. See [#2036](https://github.com/google/site-kit-wp/issues/2036).
+
+**Enhanced**
+
+* Display notice about new Analytics and link to relevant support resource. See [#2219](https://github.com/google/site-kit-wp/issues/2219).
+* Make `canSubmitChanges` selectors throughout different module datastores more testable and consistent. See [#2108](https://github.com/google/site-kit-wp/issues/2108).
+* Enhance new widget API so that only widget areas that have active widgets are rendered. See [#2021](https://github.com/google/site-kit-wp/issues/2021).
+* Provide accurate deep links for all Search Console and Analytics widgets, pointing to the corresponding location in the Google service frontend. See [#1923](https://github.com/google/site-kit-wp/issues/1923).
+* Use direct SVG imports instead of an SVG sprite which can cause accessibility and testing issues. See [#1878](https://github.com/google/site-kit-wp/issues/1878).
+* Make AdSense module page UI more consistent with other modules, allowing to filter information by date instead of showing at-a-glance information for different date periods. See [#317](https://github.com/google/site-kit-wp/issues/317).
+
+**Fixed**
+
+* Fix bug where some data stores would be registered multiple times in JS. See [#2145](https://github.com/google/site-kit-wp/issues/2145).
+* Fix issue where admin bar would not show for URLs with unicode paths. Props kabirbd89. See [#1968](https://github.com/google/site-kit-wp/issues/1968).
+* Improve error handling during module setup and editing module settings so that any API errors are displayed. See [#1859](https://github.com/google/site-kit-wp/issues/1859).
+* Fix menu positioning bug that would move menu item for WP Engine and Bluehost hosting providers. See [#1541](https://github.com/google/site-kit-wp/issues/1541).
+
+= 1.18.0 =
+
+**Added**
+
+* Introduce several filters to allow blocking rendering or execution of Google service scripts in the frontend, allowing integration with e.g. 3P cookie consent plugins. See [#2087](https://github.com/google/site-kit-wp/issues/2087).
+* Introduce API layer for advanced Analytics event tracking configurations from other plugins. See [#1728](https://github.com/google/site-kit-wp/issues/1728).
+
+**Enhanced**
+
+* Introduce `googlesitekit_canonical_home_url` filter, allowing (e.g. multilingual) plugins that contextually alter the home URL to fix potential issues with Site Kit. See [#2131](https://github.com/google/site-kit-wp/issues/2131).
+* Remove unused properties in module PHP classes. See [#2050](https://github.com/google/site-kit-wp/issues/2050).
+* Scaffold new `googlesitekit-user-input` screen. See [#2038](https://github.com/google/site-kit-wp/issues/2038).
+* Expand `Widget` component to correctly align vertically and support optional header and footer component props. See [#2022](https://github.com/google/site-kit-wp/issues/2022).
+* Improve authentication service permissions link to check Site Kit permissions first while not exposing the actual URL on the client. See [#1985](https://github.com/google/site-kit-wp/issues/1985).
+* Introduce `User_Transients` PHP class for storing user-specific transients. See [#1964](https://github.com/google/site-kit-wp/issues/1964).
+* Introduce `getDateRangeDates()` selector to `core/user` datastore to retrieve actual date strings based on the current date range. See [#1925](https://github.com/google/site-kit-wp/issues/1925).
+* Display error notification when refreshing an access token failed due to missing Site Kit authentication service requirements. See [#1848](https://github.com/google/site-kit-wp/issues/1848).
+* Update the Reset Site Kit dialog message to be more clear. See [#1825](https://github.com/google/site-kit-wp/issues/1825).
+* Provide guidance in Analytics setup flow when Tag Manager is already active and its container is configured to use Analytics. See [#1382](https://github.com/google/site-kit-wp/issues/1382).
+* Provide guidance in Tag Manager setup flow when container is configured to use Analytics, including checks to ensure an eventual AMP container behaves correctly as well. See [#1381](https://github.com/google/site-kit-wp/issues/1381).
+* Remove Analytics module as requirement for Tag Manager module, decoupling them to be individual. See [#1380](https://github.com/google/site-kit-wp/issues/1380).
+
+**Fixed**
+
+* Fix new AdSense Top Earning Pages widget displaying error instead of CTA to link AdSense and Analytics. See [#2098](https://github.com/google/site-kit-wp/issues/2098).
+* Fix inconsistent loading state in Search Console Popular Keywords widget, which previously caused content shifting. See [#2013](https://github.com/google/site-kit-wp/issues/2013).
+* Show an error message if the URL for the single URL detail view cannot be identified as part of the site. See [#2001](https://github.com/google/site-kit-wp/issues/2001).
+* Improve support for URLs containing unicode, mixed case, and bidirectional control characters when requesting and sending data to Search Console. See [#1567](https://github.com/google/site-kit-wp/issues/1567).
+
+= 1.17.0 =
+
+**Enhanced**
+
+* Simplify module registration in JavaScript and only allow one registration call per module. See [#2024](https://github.com/google/site-kit-wp/issues/2024).
+* Improve accuracy of AdSense account status detection based on specific errors. See [#1919](https://github.com/google/site-kit-wp/issues/1919).
+* Migrate AdSense Top Earning Pages widget to new Widget API. See [#1902](https://github.com/google/site-kit-wp/issues/1902).
+* Migrate AdSense Summary widget to new Widget API. See [#1901](https://github.com/google/site-kit-wp/issues/1901).
+* Migrate Analytics Popular Pages widget to new Widget API. See [#1900](https://github.com/google/site-kit-wp/issues/1900).
+* Migrate Search Console Top Keywords widget to new Widget API. See [#1899](https://github.com/google/site-kit-wp/issues/1899).
+* Migrate Analytics Unique Visitors, Bounce Rate, and Goals widgets to new Widget API. See [#1898](https://github.com/google/site-kit-wp/issues/1898).
+* Store the site URL that is connected to the Site Kit authentication service and prompt users to reconnect if the site URL has changed, allowing to update the registered configuration and fix future connection issues. See [#1857](https://github.com/google/site-kit-wp/issues/1857).
+* Show a button to refresh PageSpeed Insights report data in the widget. Props amirsadeghian. See [#87](https://github.com/google/site-kit-wp/issues/87).
+
+**Fixed**
+
+* Fix initial datastore state being registered incorrectly to ensure consistent initial state. See [#2083](https://github.com/google/site-kit-wp/issues/2083).
+* Improve performance of datastores by avoiding unnecessary datastore updates. See [#2052](https://github.com/google/site-kit-wp/issues/2052).
+* Fix various translation strings to no longer violate localization best practices. See [#2049](https://github.com/google/site-kit-wp/issues/2049).
+* Fix console error when unfocusing and refocusing tab in AdSense setup flow. See [#2033](https://github.com/google/site-kit-wp/issues/2033).
+* Fix Search Console deep links for specific keywords in keywords widget to point to the correct location. See [#2019](https://github.com/google/site-kit-wp/issues/2019).
+* Fix tooltips for Bounce Rate and Session Duration in Analytics graph to format values correctly. See [#2008](https://github.com/google/site-kit-wp/issues/2008).
+* Provide site URL as fallback default value when creating a new Analytics account if site title is empty. See [#1960](https://github.com/google/site-kit-wp/issues/1960).
+* Avoid unnecessarily excessive requests to constantly check whether the active Analytics property and AdSense client are connected. See [#1858](https://github.com/google/site-kit-wp/issues/1858).
+* Only select Analytics default view for the active property automatically if it still exists. See [#1691](https://github.com/google/site-kit-wp/issues/1691).
+
+= 1.16.0 =
+
+**Enhanced**
+
+* Modify title links in Popular Pages table in Site Kit dashboard and WordPress dashboard widget to point to the details view for the relevant URL. See [#1922](https://github.com/google/site-kit-wp/issues/1922).
+* Migrate Search Console Impressions and Clicks widgets to new Widget API. See [#1897](https://github.com/google/site-kit-wp/issues/1897).
+* Migrate Analytics All Traffic widget to new Widget API. See [#1896](https://github.com/google/site-kit-wp/issues/1896).
+* For API errors about missing Google service permissions, clarify based on module ownership who to contact for more information. See [#1824](https://github.com/google/site-kit-wp/issues/1824).
+* Introduce concept of ownership for modules based on who set them up. See [#1743](https://github.com/google/site-kit-wp/issues/1743).
+
+**Fixed**
+
+* Improve entity detection so that single URL details view only works for URLs which do not result in a 404 per WordPress behavior. See [#1980](https://github.com/google/site-kit-wp/issues/1980).
+* Fix bug with URL-based entity detection where home page stats in Site Kit URL details view would not show up as expected. See [#1978](https://github.com/google/site-kit-wp/issues/1978).
+* Fix support for WordPress configurations using an HTTP proxy with or without authentication required. See [#1976](https://github.com/google/site-kit-wp/issues/1976).
+* Provide `permission_callback` to `core/search/data/post-search` datapoint and rely on higher-level `register_rest_route` function from WordPress core. See [#1924](https://github.com/google/site-kit-wp/issues/1924).
+* Fix console warning about event tracking timeout being unnecessarily raised. See [#1886](https://github.com/google/site-kit-wp/issues/1886).
+* Fix Analytics reporting graph tooltip to match Analytics frontend UI and expose the same information. See [#1836](https://github.com/google/site-kit-wp/issues/1836).
+* Update post search input to use a better maintained and more accessible autocomplete library. See [#1761](https://github.com/google/site-kit-wp/issues/1761).
+
+= 1.15.0 =
+
+**Enhanced**
+
+* Introduce more granular error handling, with consistent error behavior in every store and API request errors being automatically stored. See [#1814](https://github.com/google/site-kit-wp/issues/1814).
+* Enhance `getReport( options )` selector in `modules/adsense` store to allow for flexibly querying AdSense reports. See [#1776](https://github.com/google/site-kit-wp/issues/1776).
+* Add `getReport( options )` selector to `modules/search-console` store for querying Search Console reports. See [#1774](https://github.com/google/site-kit-wp/issues/1774).
+* Add copy-to-clipboard functionality and link to WordPress support forums to generic JavaScript error handler. See [#1184](https://github.com/google/site-kit-wp/issues/1184).
+* Enable Site Kit admin bar menu and URL details view for any WordPress content beyond single posts, for example category, tag, author, or post type archives. See [#174](https://github.com/google/site-kit-wp/issues/174).
+
+**Fixed**
+
+* Fix opting out of Analytics for logged in users not working correctly for Web Stories. See [#1920](https://github.com/google/site-kit-wp/issues/1920).
+* Ensure Search Console data in Site Kit only includes data for the current site even when using a domain property. See [#1917](https://github.com/google/site-kit-wp/issues/1917).
+* Fix internal error handling so that invalid usages of API-based selectors result in errors being thrown as expected. See [#1801](https://github.com/google/site-kit-wp/issues/1801).
+* Use hashes for all JavaScript asset file names to avoid stale versions from being served on hosts with aggressive caching. See [#1700](https://github.com/google/site-kit-wp/issues/1700).
+
+= 1.14.0 =
+
+**Enhanced**
+
+* Add new action hooks `googlesitekit_analytics_init_tag`, `googlesitekit_analytics_init_tag_amp`, `googlesitekit_adsense_init_tag`, `googlesitekit_adsense_init_tag_amp`, `googlesitekit_tagmanager_init_tag`, `googlesitekit_tagmanager_init_tag_amp` which fire when the respective tag will be printed for the current request, but _before_ any HTML output has been generated. See [#1862](https://github.com/google/site-kit-wp/issues/1862).
+* Clarify messaging on initial setup screen for secondary users who need to connect to Site Kit. Props sonjaleix. See [#1714](https://github.com/google/site-kit-wp/issues/1714).
+* Detect potential problems with issuing API requests to Google services and AMP prior to setup and inform the user about it. See [#1549](https://github.com/google/site-kit-wp/issues/1549).
+
+**Fixed**
+
+* Migrate away from using `AMP_Theme_Support::get_support_mode()` which will be deprecated in the AMP plugin version 2.0.0. Props maciejmackowiak. See [#1895](https://github.com/google/site-kit-wp/issues/1895).
+* Fix bug where certain React code being imported in third-party code could cause JavaScript errors. See [#1888](https://github.com/google/site-kit-wp/issues/1888).
+* Link to the Manage sites screen including an `hl` query parameter for a localized experience. See [#1860](https://github.com/google/site-kit-wp/issues/1860).
+* Fix bug where the displayed Analytics user count percentage change was slightly off from Analytics service frontend. See [#1681](https://github.com/google/site-kit-wp/issues/1681).
+* Fix bug where deep links to the AdSense service frontend could result in blank screens there for users with a single Google account logged in. See [#1652](https://github.com/google/site-kit-wp/issues/1652).
+* Consistently enhance deep links to Google services to support users logged into multiple Google accounts in their browser. See [#1456](https://github.com/google/site-kit-wp/issues/1456).
+* Fix inconsistency where Analytics numbers displayed for the last 90 days were slightly off from the values in the Analytics frontend. See [#1280](https://github.com/google/site-kit-wp/issues/1280).
+* Fix bug where another plugin (e.g. WP User Frontend) could mess up the post detection process within the Site Kit dashboard. See [#1253](https://github.com/google/site-kit-wp/issues/1253).
+* Fix bug where state of not having sufficient data for a Site Kit widget would sometimes incorrectly persist when switching the date range. See [#184](https://github.com/google/site-kit-wp/issues/184).
+
+= 1.13.1 =
+
+**Fixed**
+
+* Fix regression where Analytics top content wouldn't be sorted correctly by views. Props gmmedia. See [#1867](https://github.com/google/site-kit-wp/issues/1867).
+
+= 1.13.0 =
+
+**Added**
+
+* Introduce `registerModule` action to `core/modules` store, which allows for JS module registration and will in the future enable registration of module components. See [#1622](https://github.com/google/site-kit-wp/issues/1622).
+
+**Enhanced**
+
+* Add `getReport( options )` selector to `modules/analytics` store for querying Analytics reports. See [#1775](https://github.com/google/site-kit-wp/issues/1775).
+* Pass `hl` query parameter to Site Kit service for setup and authentication, for a localized experience. See [#1726](https://github.com/google/site-kit-wp/issues/1726).
+* Modify `getURLChannels` selector in `modules/adsense` store to require both `accountID` and `clientID` parameters, and no longer rely on infering AdSense account ID from client ID in general. See [#1709](https://github.com/google/site-kit-wp/issues/1709).
+* Implement logic and styling for managing widget areas and widgets in a dynamic grid, respective registered widget widths and aligning them properly. See [#1678](https://github.com/google/site-kit-wp/issues/1678).
+* Migrate the existing date range selector component to rely on the centrally managed date range from datastore. See [#1531](https://github.com/google/site-kit-wp/issues/1531).
+* Simplify detection of existing tags and combine functionality in the JS store. See [#1328](https://github.com/google/site-kit-wp/issues/1328).
+* Migrate PageSpeed Insights widget to use the new Site Kit widgets API. See [#1302](https://github.com/google/site-kit-wp/issues/1302).
+
+**Fixed**
+
+* No longer cache API response errors within batch requests. See [#1800](https://github.com/google/site-kit-wp/issues/1800).
+* Fix publisher win notifications regression where they would not be displayed anymore. See [#1781](https://github.com/google/site-kit-wp/issues/1781).
+* Fix new JS API layer to prefer `sessionStorage` over `localStorage` for caching. See [#1780](https://github.com/google/site-kit-wp/issues/1780).
+* Improve Google profile data lookup to retry periodically if it temporarily fails. See [#1731](https://github.com/google/site-kit-wp/issues/1731).
+* Display correct labels for Analytics top acquisition channels by relying on `ga:channelGrouping` dimension. See [#1719](https://github.com/google/site-kit-wp/issues/1719).
+* Handle error conditions more gracefully when refreshing access token fails due to e.g. the user having revoked access previously, providing the user with a link to resolve the problem. See [#1646](https://github.com/google/site-kit-wp/issues/1646).
+* Fix usage of `apiFetch` with a custom middleware to only rely on preloaded data for initial requests on pageload. See [#1611](https://github.com/google/site-kit-wp/issues/1611).
+* Fix notification bubble on Site Kit menu so that it only displays if there are actual notifications available. See [#1540](https://github.com/google/site-kit-wp/issues/1540).
+* Fix PHP warning that could occur when retrieving REST API information via help endpoint. Props majemedia. See [#1208](https://github.com/google/site-kit-wp/issues/1208).
+
+= 1.12.0 =
+
+**Added**
+
+* Add `getDateRange()` selector and `setDateRange( slug )` action to the `core/user` store. See [#1529](https://github.com/google/site-kit-wp/issues/1529).
+
+**Enhanced**
+
+* Introduce new `wrapWidget` setting to `core/widgets` store's `registerWidget` selector which adds the wrapping `Widget` component by default. See [#1724](https://github.com/google/site-kit-wp/issues/1724).
+* Deprecate `Module::get_datapoint_services()` PHP method in favor of `Module::get_datapoint_definitions()` for more flexibility in annotating API datapoints. See [#1609](https://github.com/google/site-kit-wp/issues/1609).
+* Only require the `https://www.googleapis.com/auth/tagmanager.readonly` scope by default for Tag Manager, and request write scopes only as needed for a specific action. See [#1608](https://github.com/google/site-kit-wp/issues/1608).
+* Redirect users to the setup screen when trying to access the Site Kit dashboard with insufficient permissions. See [#1526](https://github.com/google/site-kit-wp/issues/1526).
+* Implement widget areas using new Site Kit widgets API. See [#1392](https://github.com/google/site-kit-wp/issues/1392).
+* Significantly improve stability and maintainability of Tag Manager module setup and settings. See [#1386](https://github.com/google/site-kit-wp/issues/1386).
+* Update the majority of 3P dependencies to their latest versions. See [#1356](https://github.com/google/site-kit-wp/issues/1356).
+
+**Fixed**
+
+* Require `accountID` to be passed to `getProfiles` selector in `modules/analytics` store, in order to supported moved Analytics properties. See [#1707](https://github.com/google/site-kit-wp/issues/1707).
+* Fix bug where placing an invalid Analytics tag through another plugin could cause the Site Kit Analytics setup UI to break. See [#1651](https://github.com/google/site-kit-wp/issues/1651).
+* Fix bug where users with full Analytics access would see error message about lack of permissions, due to the property having been moved. See [#1548](https://github.com/google/site-kit-wp/issues/1548).
+
+= 1.11.1 =
+
+**Fixed**
+
+* Fix bug where users attempting to create a new Analytics view during module setup would be blocked from proceeding. See [#1754](https://github.com/google/site-kit-wp/issues/1754).
+
+= 1.11.0 =
+
+**Added**
+
+* Introduce base components for upcoming Site Kit Widgets API. See [#1300](https://github.com/google/site-kit-wp/issues/1300).
+
+**Enhanced**
+
+* Rename `wp google-site-kit auth revoke` to `wp google-site-kit auth disconnect` and adjust internal CLI commands infrastructure. See [#1677](https://github.com/google/site-kit-wp/issues/1677).
+* Significantly improve stability and maintainability of Optimize module setup and settings, and fix bug where editing Optimize settings with AMP active could cause an error due to the `ampExperimentJSON` module setting not being stored as JSON string. See [#1621](https://github.com/google/site-kit-wp/issues/1621).
+* Add `hasScope( scope )` selector to `core/user` store, which allows checking whether the user has explicitly granted access to the respective scope. See [#1610](https://github.com/google/site-kit-wp/issues/1610).
+* Introduce `modules/tagmanager` datastore to enable JS-based access to Tag Manager data. See [#1385](https://github.com/google/site-kit-wp/issues/1385).
+* Allow specifying Analytics view name when creating a new one, and display a deep link to modify view settings in Analytics module settings. See [#716](https://github.com/google/site-kit-wp/issues/716).
+
+**Fixed**
+
+* Fix admin tracking regression where snippet would not be loaded on the page. See [#1717](https://github.com/google/site-kit-wp/issues/1717).
+* Ensure ad blocker detection is active throughout the entire AdSense module setup. See [#1666](https://github.com/google/site-kit-wp/issues/1666).
+* Fix redirect to Google Analytics terms of service occasionally failing due to unnecessary extra redirect. See [#1632](https://github.com/google/site-kit-wp/issues/1632).
+* Fix bug `Cannot read property 'destroy' of undefined` from AMP experiment JSON field in Optimize module. See [#1605](https://github.com/google/site-kit-wp/issues/1605).
+
+= 1.10.0 =
+
+[Learn more about the new feature in this release](https://sitekit.withgoogle.com/news/understand-how-visitors-experience-your-pages-core-web-vitals-now-available-in-site-kit/)
+
+**Added**
+
+* Implement new version of PageSpeed Insights widget that focuses on core web vitals. See [#1636](https://github.com/google/site-kit-wp/issues/1636).
+* Introduce `modules/optimize` JS datastore for Optimize module. See [#1620](https://github.com/google/site-kit-wp/issues/1620).
+
+**Enhanced**
+
+* Detect current URL and related data when on the Site Kit screen for single URL details. See [#1653](https://github.com/google/site-kit-wp/issues/1653).
+* Implement tabbed UI for new web vitals widget separating between mobile and desktop as well as lab and field data. See [#1649](https://github.com/google/site-kit-wp/issues/1649).
+* Only load Site Kit-specific Analytics script on Site Kit admin screens. See [#1648](https://github.com/google/site-kit-wp/issues/1648).
+* Pass `user_roles` query parameter during setup. See [#1639](https://github.com/google/site-kit-wp/issues/1639).
+* Simplify module datastore creation by including `commonStore` in the store returned `googlesitekit.modules.createModuleStore`. See [#1607](https://github.com/google/site-kit-wp/issues/1607).
+* Add selectors to get module-specific admin screen URLs to every module datastore. See [#1559](https://github.com/google/site-kit-wp/issues/1559).
+* Fix accessibility issues in Site Kit settings due to semantically incorrect tag usage. See [#1557](https://github.com/google/site-kit-wp/issues/1557).
+* Add `getReport` selector to `modules/pagespeed-insights` datastore to get UX reports. See [#1426](https://github.com/google/site-kit-wp/issues/1426).
+* Implement meta programming approach for API-based datastore selectors and actions to reduce boilerplate. See [#1288](https://github.com/google/site-kit-wp/issues/1288).
+* Include anchor link in success notification after setting up PageSpeed Insights module. See [#532](https://github.com/google/site-kit-wp/issues/532).
+
+**Fixed**
+
+* Reduce bundle size of Analytics and Optimize module JS assets. See [#1661](https://github.com/google/site-kit-wp/issues/1661).
+* Do not run Site Kit assets logic when not applicable for the current user, avoiding unnecessary checks e.g. on the login screen. See [#1650](https://github.com/google/site-kit-wp/issues/1650).
+* Fix incompatibility with WooCommerce due to Webpack conflict. See [#1637](https://github.com/google/site-kit-wp/issues/1637).
+* Fix bug with event firing when activating or deactivating a module. See [#1629](https://github.com/google/site-kit-wp/issues/1629).
+* Enhance functionality of new `core/modules` store so that module activation/deactivation results in authentication data to be refreshed. See [#1507](https://github.com/google/site-kit-wp/issues/1507).
+* Fix ad blocker detection failing for popular AdBlock browser extension. See [#1491](https://github.com/google/site-kit-wp/issues/1491).
+* Ensure dashboard search form can only be submitted with valid content. See [#1434](https://github.com/google/site-kit-wp/issues/1434).
+* Fix Analytics data displayed for Users being partially incorrect due to incorrect date parsing. See [#1394](https://github.com/google/site-kit-wp/issues/1394).
+* Fix table content overflow issues in narrow viewports. Props AlexandreOrlowski. See [#1376](https://github.com/google/site-kit-wp/issues/1376).
+
+= 1.9.0 =
+
+**Added**
+
+* Introduce `modules/pagespeed-insights` datastore in JS. See [#1500](https://github.com/google/site-kit-wp/issues/1500).
+* Introduce `modules/search-console` datastore in JS. See [#1498](https://github.com/google/site-kit-wp/issues/1498).
+* Implement Site Kit widgets API datastore wrapper on `googlesitekit.widgets`. See [#1301](https://github.com/google/site-kit-wp/issues/1301).
+* Introduce `core/widgets` datastore for Site Kit widget registrations. See [#1298](https://github.com/google/site-kit-wp/issues/1298).
+* Integrate with the Analytics Provisioning API to enable creation of Analytics accounts directly from the plugin. See [#1271](https://github.com/google/site-kit-wp/issues/1271).
+* Introduce `modules/adsense` JavaScript datastore with core functionality for the AdSense module. See [#1247](https://github.com/google/site-kit-wp/issues/1247).
+* Add `create-account-ticket` datapoint for `Analytics` module that creates a new Analytics account ticket using the Provisioning API. See [#1212](https://github.com/google/site-kit-wp/issues/1212).
+* Add notifications functionality to `core/user` store. See [#1177](https://github.com/google/site-kit-wp/issues/1177).
+* Introduce `core/user` datastore for managing user-specific data in JS. See [#1175](https://github.com/google/site-kit-wp/issues/1175).
+
+**Enhanced**
+
+* Only request readonly OAuth scopes for each module by default, and prompt for additional scopes when needed for a specific action. See [#1566](https://github.com/google/site-kit-wp/issues/1566).
+* Wrap all JavaScript apps into `Root` component with essential providers, error handlers etc. See [#1530](https://github.com/google/site-kit-wp/issues/1530).
+* Introduce `core/forms` datastore to manage form state. See [#1510](https://github.com/google/site-kit-wp/issues/1510).
+* Render `amp-analytics` snippet for Web Stories. See [#1506](https://github.com/google/site-kit-wp/issues/1506).
+* Migrate PageSpeed Insights settings to using the datastore. See [#1501](https://github.com/google/site-kit-wp/issues/1501).
+* Display actual Search Console property used in settings, and migrate to using the datastore. See [#1499](https://github.com/google/site-kit-wp/issues/1499).
+* Rename Analytics profiles to views consistently. See [#1486](https://github.com/google/site-kit-wp/issues/1486).
+* Improve AdSense account status and site status detection logic to be more error-proof. See [#1332](https://github.com/google/site-kit-wp/issues/1332).
+* Add user profile information and verification state to `core/user` datastore. See [#1176](https://github.com/google/site-kit-wp/issues/1176).
+* Significantly improve stability and maintainability of AdSense module setup and settings. See [#1014](https://github.com/google/site-kit-wp/issues/1014).
+* Clarify message for when user needs to reauthenticate to grant required scopes. See [#189](https://github.com/google/site-kit-wp/issues/189).
+
+**Fixed**
+
+* Ensure all module caches are cleared when modifying Analytics settings. See [#1593](https://github.com/google/site-kit-wp/issues/1593).
+* Fix bugs where CTAs to link Analytics to AdSense would never show. See [#1545](https://github.com/google/site-kit-wp/issues/1545).
+* Fix AdSense report URL to not include user-specific affix. See [#1516](https://github.com/google/site-kit-wp/issues/1516).
+* Fix Search Console deep links to use the correct property identifier. See [#1497](https://github.com/google/site-kit-wp/issues/1497).
+* Fix bug where having a graylisted AdSense account would prevent the AdSense code from being placed. See [#1494](https://github.com/google/site-kit-wp/issues/1494).
+
+= 1.8.1 =
+
+**This release includes security fixes. An update is strongly recommended.**
+
+**Enhanced**
+
+* Check for users that verified through Site Kit without being authorized to do so, and disconnect them from Site Kit. See [#1573](https://github.com/google/site-kit-wp/issues/1573).
+* Provide `application_name` query parameter to authentication service. See [#1571](https://github.com/google/site-kit-wp/issues/1571).
+
+= 1.8.0 =
+
+**This release includes security fixes. An update is strongly recommended.**
+
+**Added**
+
+* Introduce standalone UI mode for plugin admin screens. Props EvanHerman. See [#1281](https://github.com/google/site-kit-wp/issues/1281).
+* Introduce `modules/analytics` datastore for managing Analytics state in JS. See [#1224](https://github.com/google/site-kit-wp/issues/1224).
+* Introduce `core/modules` datastore for managing module information and activation state. See [#1179](https://github.com/google/site-kit-wp/issues/1179).
+
+**Enhanced**
+
+* Preload REST API datapoints for `core/site` and `core/user` datastores to avoid firing these extra requests. See [#1478](https://github.com/google/site-kit-wp/issues/1478).
+* Add support for new Optimize container IDs starting in `OPT-`. See [#1471](https://github.com/google/site-kit-wp/issues/1471).
+* Improve alignment of dialog buttons. See [#1436](https://github.com/google/site-kit-wp/issues/1436).
+* Rely on the default profile specified in an Analytics property for the profile to pre-select in the dropdown in Analytics setup/settings. See [#1404](https://github.com/google/site-kit-wp/issues/1404).
+* Remove periods from single sentences in settings panel lists. See [#1401](https://github.com/google/site-kit-wp/issues/1401).
+* Add `googlesitekit.data.combineStores` utility function to combine multiple datastore objects. See [#1400](https://github.com/google/site-kit-wp/issues/1400).
+* Significantly improve stability and maintainability of Analytics module setup and settings. See [#1101](https://github.com/google/site-kit-wp/issues/1101).
+* Update Analytics control for whether to place snippet to use a toggle instead of radio buttons for consistency. See [#1048](https://github.com/google/site-kit-wp/issues/1048).
+
+**Fixed**
+
+* Fix bug where Analytics would never request AdSense metrics even with a successful AdSense connection. See [#1524](https://github.com/google/site-kit-wp/issues/1524).
+* Fix bug where `amp-auto-ads` snippet would not always be printed if the theme didn't support the `wp_body_open` action. See [#1495](https://github.com/google/site-kit-wp/issues/1495).
+* Do not request remote notifications if the site is not connected to the remote. See [#1479](https://github.com/google/site-kit-wp/issues/1479).
+* Update registered site name on authentication service when it is updated in WordPress. See [#1397](https://github.com/google/site-kit-wp/issues/1397).
+* Display only paths instead of full URLs in Analytics tables for better visibility and consistency with Analytics frontend. See [#1116](https://github.com/google/site-kit-wp/issues/1116).
+* Add missing translator comments to ease plugin localization for contributors. See [#820](https://github.com/google/site-kit-wp/issues/820).
+
+= 1.7.1 =
+
+**Added**
+
+* Add notifications functionality to `core/site` datastore. See [#1174](https://github.com/google/site-kit-wp/issues/1174).
+
+**Enhanced**
+
+* Add `rollbackSettings` action to settings datastores and refine overall datastore infrastructure. See [#1375](https://github.com/google/site-kit-wp/issues/1375).
+* Expand AdSense settings panel to expose more helpful information. See [#585](https://github.com/google/site-kit-wp/issues/585).
+
+**Fixed**
+
+* Fix bug where similar batch request to the API could occur multiple times. See [#1406](https://github.com/google/site-kit-wp/issues/1406).
+* Fix bug where single post stats would display the unique visitors from Search for the overall site instead of only that post. Props phamquangbaoplus. See [#1371](https://github.com/google/site-kit-wp/issues/1371).
+* Fix Analytics incorrectly triggering re-authentication notice when the user does not have any accounts. See [#1368](https://github.com/google/site-kit-wp/issues/1368).
+* Fix JS datastore actions to never have an associated control and reducer at the same time. See [#1361](https://github.com/google/site-kit-wp/issues/1361).
+* Place Tag Manager snippet for non-JavaScript support after opening `body` tag as commonly expected. Props ShahAaron. See [#1308](https://github.com/google/site-kit-wp/issues/1308).
+* Fix layout issue in Tag Manager settings panel when no container is selected. See [#1296](https://github.com/google/site-kit-wp/issues/1296).
+* Fix issue related to added `_gl` query parameter from AMP linker. Props ShahAaron. See [#1275](https://github.com/google/site-kit-wp/issues/1275).
+
+= 1.7.0 =
+
+**Enhanced**
+
+* Allow modules to register and enqueue their own assets by implementing a `Module_With_Assets` interface. See [#1319](https://github.com/google/site-kit-wp/issues/1319).
+* Decouple datastores from global registry by using `createRegistryControl` and `createRegistrySelector`. See [#1287](https://github.com/google/site-kit-wp/issues/1287).
+* Update datastore resolvers to only issue API requests when lacking data. See [#1286](https://github.com/google/site-kit-wp/issues/1286).
+* Add preloading middleware for REST API data and preload module settings routes on pageload. See [#1246](https://github.com/google/site-kit-wp/issues/1246).
+* Add more granular selectors to the `core/site` datastore. See [#1173](https://github.com/google/site-kit-wp/issues/1173).
+* Add several additional selectors for commonly used site data to the `core/site` datastore. See [#1000](https://github.com/google/site-kit-wp/issues/1000).
+
+**Fixed**
+
+* Fix bug where plugins modifying the site address during frontend requests would prevent the setup flow from being completed. See [#1357](https://github.com/google/site-kit-wp/issues/1357).
+* Fix bug where `googlesitekit.api.set` would not pass through request data correctly to the API endpoints. See [#1346](https://github.com/google/site-kit-wp/issues/1346).
+* Fix bug where using a WordPress locale with a third segment (e.g. formal variant) would cause JavaScript errors on some screens. See [#1309](https://github.com/google/site-kit-wp/issues/1309).
+* Do not revoke token remotely when token is deleted, unless explicitly requested via disconnect. See [#1305](https://github.com/google/site-kit-wp/issues/1305).
+* Fix unicode domains being displayed in punycode version in disconnect feedback message. See [#1297](https://github.com/google/site-kit-wp/issues/1297).
+* Fix bug where certain numbers were rounded differently from how the respective Google service rounds them. See [#1279](https://github.com/google/site-kit-wp/issues/1279).
+* Optimize JavaScript dependency loading, decreasing the chance of conflicts and reducing the plugin size. See [#1222](https://github.com/google/site-kit-wp/issues/1222).
+* Ensure the total user count in the Analytics module matches the numbers displayed in the Google Analytics frontend. See [#1202](https://github.com/google/site-kit-wp/issues/1202).
+
+= 1.6.0 =
+
+**Added**
+
+* Add support for reading and editing settings to datastores created via `googlesitekit.modules.createModuleStore`. See [#1249](https://github.com/google/site-kit-wp/issues/1249).
+* Introduce `googlesitekit-modules` asset with `createModuleStore` function to create a base datastore for a Site Kit module. See [#1063](https://github.com/google/site-kit-wp/issues/1063).
+
+**Enhanced**
+
+* Ensure module settings are consistently passed from PHP to JavaScript, and fix some minor logic issues in the consuming JavaScript code. See [#1245](https://github.com/google/site-kit-wp/issues/1245).
+* Automatically include a REST route to read and edit settings for every module that supports them. See [#1244](https://github.com/google/site-kit-wp/issues/1244).
+
+**Fixed**
+
+* Fix issue where users would get stuck on setup screen after seemingly successful completion of the setup flow on the authentication service. See [#1266](https://github.com/google/site-kit-wp/issues/1266).
+* Provide clear error message informing the user when they did not grant the necessary permissions, instead of a generic `access_denied` error code. See [#1192](https://github.com/google/site-kit-wp/issues/1192).
+* Fix JavaScript errors in AdSense screens that was a result of `Intl.NumberFormat.formatToParts` not being supported in Safari. See [#1107](https://github.com/google/site-kit-wp/issues/1107).
+* Fix JavaScript error `e.replace is not a function` in AdSense screens related to formatting numbers. See [#1092](https://github.com/google/site-kit-wp/issues/1092).
+* Fix problems around comparing domains with unicode characters that could result in blocking the plugin setup. See [#794](https://github.com/google/site-kit-wp/issues/794).
+
+= 1.5.1 =
+
+**Fixed**
+
+* Ensure tracking opt-out mechanism works consistently between both Analytics and Tag Manager in AMP, and fix regression with Site Kit admin bar menu no longer expanding on AMP pages. See [#1251](https://github.com/google/site-kit-wp/issues/1251).
+
+= 1.5.0 =
+
+**Added**
+
+* Expose `googlesitekit.data` registry and register initial `core/site` store on it. See [#999](https://github.com/google/site-kit-wp/issues/999).
+* Add user-facing warnings to Site Kit areas when JavaScript is disabled. Props Shavindra. See [#177](https://github.com/google/site-kit-wp/issues/177).
+
+**Enhanced**
+
+* Standardize several REST API route names for consistency with JavaScript API. See [#1178](https://github.com/google/site-kit-wp/issues/1178).
+* Fix various plugin setup issues related to inconsistent URLs by automatically updating registered URIs on the authentication service. See [#1034](https://github.com/google/site-kit-wp/issues/1034).
+* Improve asset handling in PHP by introducing dedicated data-only scripts, to use as dependencies. See [#1004](https://github.com/google/site-kit-wp/issues/1004).
+* Respect Analytics tracking exclusion of logged-in WordPress users also if Tag Manager is used. See [#944](https://github.com/google/site-kit-wp/issues/944).
+* Integrate with WordPress Site Health feature to provide contextual Site Kit information for support and troubleshooting. See [#169](https://github.com/google/site-kit-wp/issues/169).
+
+**Changed**
+
+* Display helpful link in previously empty PageSpeed Insights settings area. See [#1129](https://github.com/google/site-kit-wp/issues/1129).
+* Use latest product icon for the Optimize module. See [#969](https://github.com/google/site-kit-wp/issues/969).
+
+**Fixed**
+
+* Ensure date range selectors functionality is decoupled from localizable strings. See [#1183](https://github.com/google/site-kit-wp/issues/1183).
+* Fix bugs where some untranslated strings would show despite being translated, caused by too early usage of these strings in JavaScript. See [#1163](https://github.com/google/site-kit-wp/issues/1163).
+* Replace outdated AMP client ID mechanism for tracking AMP traffic with recommended AMP linker approach, and enable it by default. See [#1160](https://github.com/google/site-kit-wp/issues/1160).
+* Fix compatibility error where `google.charts.load` was not called before `google.charts.setOnLoadCallback`. See [#1155](https://github.com/google/site-kit-wp/issues/1155).
+* Do not show empty data table in Analytics module screen when there is no data to display. See [#464](https://github.com/google/site-kit-wp/issues/464).
+
+= 1.4.0 =
+
+**Enhanced**
+
+* Introduce basic notifications system for information displayed in the Site Kit dashboard. See [#1110](https://github.com/google/site-kit-wp/issues/1110).
+* Register all of the plugin's user options in WordPress via `register_meta()`. See [#1029](https://github.com/google/site-kit-wp/issues/1029).
+* Improve JS error handling consistently across individual React apps and allow for better contextualization. See [#943](https://github.com/google/site-kit-wp/issues/943).
+* Display information about lack of data instead of displaying empty top search queries box. Props Shavindra. See [#314](https://github.com/google/site-kit-wp/issues/314).
+* Ensure admin bar displays when at least Search Console or Analytics have stats for the current URL. See [#167](https://github.com/google/site-kit-wp/issues/167).
+
+**Fixed**
+
+* Fix minor bug causing potentially incorrect token expiry to be recorded. See [#1158](https://github.com/google/site-kit-wp/issues/1158).
+* Fix AMP violations when user is logged in and Site Kit admin bar menu is active. See [#1142](https://github.com/google/site-kit-wp/issues/1142).
+* Fix incompatibility issue with Jetpack by resolving bug where the bundled `lodash` was causing a conflict. See [#1141](https://github.com/google/site-kit-wp/issues/1141).
+* Fix double-rendered HTML markup on Site Kit dashboard screen. See [#1140](https://github.com/google/site-kit-wp/issues/1140).
+* Fix misleading sparkline color for metrics that should use the inverted color, such as bounce rate. See [#1128](https://github.com/google/site-kit-wp/issues/1128).
+* Work around [bug in ModSecurity](https://github.com/SpiderLabs/owasp-modsecurity-crs/issues/1451) by relying on only providing granted OAuth scopes in token API response. See [#1113](https://github.com/google/site-kit-wp/issues/1113).
+* Make JS and CSS asset names consistent. Props Shavindra. See [#1040](https://github.com/google/site-kit-wp/issues/1040).
+* Properly support paired AMP in Tag Manager module by allowing to select two different containers, one for `web` context and the other for `amp` context. Props kmwilkerson. See [#413](https://github.com/google/site-kit-wp/issues/413).
+* Fix accessibility issues in dialog component with potentially duplicate IDs and invalid ARIA attributes. See [#345](https://github.com/google/site-kit-wp/issues/345).
+* Fix issue where disconnecting a user from a site would disconnect that user from all their sites.
+
+= 1.3.1 =
+
+**Fixed**
+
+* Ensure `opcache_reset()` exists before calling it. See [#1136](https://github.com/google/site-kit-wp/issues/1136).
+
+= 1.3.0 =
+
+**Added**
+
+* Introduce `googlesitekit.data` registry for JS datastores. See [#997](https://github.com/google/site-kit-wp/issues/997).
+
+**Enhanced**
+
+* No longer delete plugin data when uninstalling and instead rely on the more explicit reset functionality. See [#1069](https://github.com/google/site-kit-wp/issues/1069).
+* Remove legacy migrations that were only relevant to pre-1.0.0 users. See [#1062](https://github.com/google/site-kit-wp/issues/1062).
+* Migrate stray module settings into object-like option for consistency and future scalability. See [#1030](https://github.com/google/site-kit-wp/issues/1030).
+* Introduce `core/site/data/connection` REST API route for retrieving site connection info. See [#998](https://github.com/google/site-kit-wp/issues/998).
+* Fully rely on Webpack for third-party dependencies and decouple from WordPress-shipped assets for more stability across all versions. See [#993](https://github.com/google/site-kit-wp/issues/993).
+* Inform the site owner about potential issues with their site that will likely cause problems when setting up the plugin. See [#933](https://github.com/google/site-kit-wp/issues/933).
+* Make opting in to tracking specific per user instead of per site. See [#913](https://github.com/google/site-kit-wp/issues/913).
+* Bump minimum required PHP version to 5.6, rely on up-to-date linting tools and fix various PHPCS issues. See [#547](https://github.com/google/site-kit-wp/issues/547).
+* Move REST route definitions into more applicable classes that handle the respective functionality. See [#166](https://github.com/google/site-kit-wp/issues/166).
+
+**Fixed**
+
+* Allow users with existing Tag Manager accounts to create additional accounts during module setup. See [#1080](https://github.com/google/site-kit-wp/issues/1080).
+* Fix partly outdated PHP files being served due to OpCache issues [currently not addressed by WordPress core](https://core.trac.wordpress.org/ticket/36455). See [#1066](https://github.com/google/site-kit-wp/issues/1066).
+* Prevent unexpected PageSpeed Insights API responses from breaking the dashboard. See [#1061](https://github.com/google/site-kit-wp/issues/1061).
+* Standardize GA tracking snippets and inconsistent data passed in events by introducing a proper tracking API in JavaScript. See [#1055](https://github.com/google/site-kit-wp/issues/1055).
+* Fix several temporary blank screen errors by loading script dependencies more reliably via Webpack. See [#1054](https://github.com/google/site-kit-wp/issues/1054).
+* Ensure that the Tag Manager snippet rendered is always compatible with the current context (AMP vs non-AMP). See [#1036](https://github.com/google/site-kit-wp/issues/1036).
+* Do not render `amp-auto-ads` element in AMP stories because it is invalid in that context. See [#979](https://github.com/google/site-kit-wp/issues/979).
+* Ensure that Google Charts JS library is loaded as expected even when a `window.google` global already exists because of another library. See [#939](https://github.com/google/site-kit-wp/issues/939).
+* Do not refetch PageSpeed Insights data when the date range selector is changed, as its data its date-unaware. See [#890](https://github.com/google/site-kit-wp/issues/890).
+* Fix incorrect change arrow direction and color on "inverted" properties like bounce rate. Props WebFactoryLtd. See [#481](https://github.com/google/site-kit-wp/issues/481).
+* Add missing support for Search Console domain properties and rely on the correct property when requesting Search Console data. Props IgorCode. See [#325](https://github.com/google/site-kit-wp/issues/325).
+
+= 1.2.0 =
+
+**Added**
+
+* Introduce new `googlesitekit.api` layer for accessing Site Kit datapoints with reliable caching. See [#953](https://github.com/google/site-kit-wp/issues/953).
+* Detect already existing Tag Manager snippets from other sources and inform about them in the setup flow. See [#433](https://github.com/google/site-kit-wp/issues/433).
+
+**Enhanced**
+
+* Introduce Site Kit-specific `Google_Client` implementation and use that throughout the codebase. See [#1003](https://github.com/google/site-kit-wp/issues/1003).
+* Reduce maintenance by implementing dynamic activation notice in React. See [#991](https://github.com/google/site-kit-wp/issues/991).
+* Include platform and plugin version information in API client requests. See [#989](https://github.com/google/site-kit-wp/issues/989).
+* Ensure that all module settings are properly registered in WordPress for consistent behavior. See [#859](https://github.com/google/site-kit-wp/issues/859).
+* Allow users to rely on `WP_PROXY_*` constants to use an HTTP proxy for requests issued by `Google_Client`. See [#661](https://github.com/google/site-kit-wp/issues/661).
+* Allow users that have existing Google Analytics account to create a new account in module setup and settings. See [#198](https://github.com/google/site-kit-wp/issues/198).
+* Remove very limited debug bar integration for now. See [#178](https://github.com/google/site-kit-wp/issues/178).
+
+**Fixed**
+
+* Fix bug and potential JavaScript error where user was able to select Analytics property before selecting an account. See [#1039](https://github.com/google/site-kit-wp/issues/1039).
+* Optimize initialization of the Google API client and minimize JavaScript assets and inline data being loaded in regular requests. See [#980](https://github.com/google/site-kit-wp/issues/980).
+* Fix Search Console average position graph to show the smallest value on top of the Y axis. Props connorhsm. See [#874](https://github.com/google/site-kit-wp/issues/874).
+* Display warnings about insufficient scopes across all Site Kit screens instead of only the dashboard, since they are just as relevant during setup. See [#729](https://github.com/google/site-kit-wp/issues/729).
+* Ensure that PageSpeed Insights module can be deactivated again once activated. See [#682](https://github.com/google/site-kit-wp/issues/682).
+
+= 1.1.4 =
+
+**Enhanced**
+
+* Improve compatibility with WordPress VIP environment. Props moraleida. See [#901](https://github.com/google/site-kit-wp/issues/901).
+* Update wording on setup screen for secondary users to clarify they need to connect their account, but not set up the plugin. See [#881](https://github.com/google/site-kit-wp/issues/881).
+* Use OAuth `login_hint` parameter to indicate that the user should use the same Google account across all modules. See [#867](https://github.com/google/site-kit-wp/issues/867).
+* Anonymize IP addresses by default in Google Analytics snippet, and grant the user control to modify with a new setting. Props gx10. See [#18](https://github.com/google/site-kit-wp/issues/18).
+
+**Fixed**
+
+* Fix compatibility issues with older versions of the AMP plugin. See [#975](https://github.com/google/site-kit-wp/issues/975).
+* Ensure that only options and user options starting with `googlesitekit_` (including underscore) are deleted on reset or disconnect. See [#968](https://github.com/google/site-kit-wp/issues/968).
+* Optimize disconnecting users by only running a single database query. See [#960](https://github.com/google/site-kit-wp/issues/960).
+* Ensure Site Kit admin bar content is styled independently from the current theme. See [#888](https://github.com/google/site-kit-wp/issues/888).
+* Fix bug in Analytics module setup where the user would not be informed about an existing tag before selecting a property. See [#803](https://github.com/google/site-kit-wp/issues/803).
+* Fix bug where admin bar stats would not display under certain circumstances when editing a post in the backend. See [#521](https://github.com/google/site-kit-wp/issues/521).
+* Display impressions before clicks in admin bar as that is the commonly expected order. See [#297](https://github.com/google/site-kit-wp/issues/297).
+
+= 1.1.3 =
+
+**Fixed**
+
+* Fix critical AdSense issue where users were not able to place the snippet and would end up on a blank screen under certain conditions. See [#891](https://github.com/google/site-kit-wp/issues/891).
+
+= 1.1.2 =
+
+**Enhanced**
+
+* Introduce new mechanism for a site to receive its credentials from the authentication service, replacing the previous mechanism using the REST API that was error-prone on certain environments. See [#905](https://github.com/google/site-kit-wp/issues/905).
+
+**Fixed**
+
+* Remove unnecessary logic to refresh an access token on login, since the Google API client already accounts for that. See [#903](https://github.com/google/site-kit-wp/issues/903).
+* Fix too long request URLs for Google API batch requests to use `POST` instead, as the query length was problematic on certain environments. Props sksaju. See [#779](https://github.com/google/site-kit-wp/issues/779).
+* Fix bug resulting in blank plugin dashboard screen under certain circumstances. Props ThomasTr. See [#767](https://github.com/google/site-kit-wp/issues/767).
+* Ensure that opting in or out of tracking takes effect immediately. See [#727](https://github.com/google/site-kit-wp/issues/727).
+* Fix spacing issue in Search Console step for local development setup. See [#637](https://github.com/google/site-kit-wp/issues/637).
+* Fix display of the disconnect modal which could potentially appear below the "section locked" indicator in the plugin settings UI. See [#636](https://github.com/google/site-kit-wp/issues/636).
+
+= 1.1.1 =
+
+**Fixed**
+
+* Fix reset and uninstall data removal by optimizing database queries. See [#809](https://github.com/google/site-kit-wp/issues/809).
+
+= 1.1.0 =
+
+**Enhanced**
+
+* Update usage of G icon in admin menu, dashboard widget and screen options to align better with WordPress admin UI. See [#877](https://github.com/google/site-kit-wp/issues/877).
+* Add support for site verification via file as primary method while keeping site verification via meta tag as fallback, resolving potential site verification failures. See [#836](https://github.com/google/site-kit-wp/issues/836).
+* Move checkbox above submit button in setup screen and banner for better accessibility. See [#788](https://github.com/google/site-kit-wp/issues/788).
+* Use more secure nonce generation mechanism for the authentication service. See [#756](https://github.com/google/site-kit-wp/issues/756).
+* Show PageSpeed Insights performance stats for every individual URL in its details view, accessible from Site Kit dashboard and admin bar. See [#654](https://github.com/google/site-kit-wp/issues/654).
+* Display Tag Manager container names instead of IDs in dropdowns for more user-friendly selection. See [#591](https://github.com/google/site-kit-wp/issues/591).
+* Remove redundant notification title for AdSense notifications. Props OisinOConnor. See [#586](https://github.com/google/site-kit-wp/issues/586).
+* Always use root domain for AdSense site because subdomains are typically not supported. Props OisinOConnor. See [#578](https://github.com/google/site-kit-wp/issues/578).
+* Add support for displaying the full Site Kit admin bar menu with stats also for AMP requests, by leveraging AMP's dev mode feature. See [#438](https://github.com/google/site-kit-wp/issues/438).
+* Simplify AdSense account status detection as a base for easier future enhancements and fixes. See [#427](https://github.com/google/site-kit-wp/issues/427).
+* Add a checkbox to allow disabling Analytics tracking for logged-in users, and introduce a filter to adjust the behavior programmatically. Props Paras16699. See [#88](https://github.com/google/site-kit-wp/issues/88).
+
+**Fixed**
+
+* Ensure that a newly created Tag Manager container is properly saved so that the module setup is completed. See [#821](https://github.com/google/site-kit-wp/issues/821).
+* Improve detection of existing AdSense snippets to cover more variants of snippets. See [#798](https://github.com/google/site-kit-wp/issues/798).
+* Only display the Reset button on the setup screen if there actually is something to reset, and provide a feedback notice. See [#758](https://github.com/google/site-kit-wp/issues/758).
+* Update incorrect message in development setup flow referring to site verification instead of Search Console. Props AVGP. See [#600](https://github.com/google/site-kit-wp/issues/600).
+* Only show Tag Manager containers that are relevant to the site's mode, and accordingly support AMP-first by only exposing AMP containers. See [#470](https://github.com/google/site-kit-wp/issues/470).
+
+= 1.0.4 =
+
+**Fixed**
+
+* Fix critical bug causing unnecessary requests to Google People API although no user is logged-in. See [#854](https://github.com/google/site-kit-wp/issues/854).
+
+= 1.0.3 =
+
+**Fixed**
+
+* Fix critical issue where an invalid refresh token would not revoke the current token, resulting in recurring requests with further attempts. See [#831](https://github.com/google/site-kit-wp/issues/831).
+* Fix REST request sending credentials potentially being blocked due to user agent.
+
+= 1.0.2 =
+
+**Enhanced**
+
+* Introduce Jest for JS unit tests, migrate existing tests, and improve various related infrastructure components. See [#524](https://github.com/google/site-kit-wp/issues/524).
+
+**Fixed**
+
+* Do not disconnect user when refreshing an access token randomly fails, and ensure the user sees an error message about any errors during the process. See [#818](https://github.com/google/site-kit-wp/issues/818).
+* Fix error that could occur when setting up a new Analytics profile from the module setup. See [#816](https://github.com/google/site-kit-wp/issues/816).
+* Fix bug where the site verification nonce was not sent to the authentication service. See [#797](https://github.com/google/site-kit-wp/issues/797).
+* Fix false positive when detecting existing Analytics tags, which previously blocked users from completing the module setup. See [#793](https://github.com/google/site-kit-wp/issues/793).
+* Ensure that `google-site-kit` translation strings in JavaScript files are maintained after minification so that they can be translated on wordpress.org. See [#782](https://github.com/google/site-kit-wp/issues/782).
+* Improve various translation strings by removing trailing spaces, adding a context, fixing capitalization, and more. Props pedro-mendonca. See [#769](https://github.com/google/site-kit-wp/issues/769).
+* Remove irrelevant translation strings from codebase by eliminating `@wordpress/components` dependency. See [#759](https://github.com/google/site-kit-wp/issues/759).
+* Improve detection of existing Analytics snippet by covering a further variant that is used e.g. by the Analytify plugin. Props ernee. See [#744](https://github.com/google/site-kit-wp/issues/744).
+* Improve UX and fix performance issues with excessive re-rendering in the module settings screen. See [#742](https://github.com/google/site-kit-wp/issues/742).
+* Fix style issues in various data tables which previously would break out of their parent containers on certain device widths. See [#480](https://github.com/google/site-kit-wp/issues/480).
+* Fix `Unknown error (code: checking requirements failed).` by resolving quota issues on the authentication service.
+* Improve stability of REST API request issued by the authentication service when setting up a new site.
+* Fix `Method not allowed` error on the authentication service.
+
+= 1.0.1 =
+
+**Fixed**
+
+* Ensure verification tokens and other plugin user data correctly get cleared when resetting the plugin before the user has authenticated. See [#771](https://github.com/google/site-kit-wp/issues/771).
+* Fix bug where the verification tag sent from the service to the plugin would result in a 404 response, preventing the verification from being completed. Props theeducatedbarfly. See [#765](https://github.com/google/site-kit-wp/issues/765).
+* Improve compatibility with sites that have a `http://` website address stored as `home_url`, but actually require HTTPS. Props drcrow. See [#760](https://github.com/google/site-kit-wp/issues/760).
+
+= 1.0.0 =
+
+**Enhanced**
+
+* Display a reset button alongside the setup button so that the plugin can also be reset before completing the initial flow. See [#753](https://github.com/google/site-kit-wp/issues/753).
+* Remove custom updater to instead fully rely on wordpress.org. See [#644](https://github.com/google/site-kit-wp/issues/644).
+
+**Fixed**
+
+* Correctly disconnect the user when revoking access from the proxy, and update the wording accordingly. See [#724](https://github.com/google/site-kit-wp/issues/724).
+* Show error message in PageSpeed Insights widget when API response incorrectly comes back with a score of 0. See [#723](https://github.com/google/site-kit-wp/issues/723).
diff --git a/wp-content/plugins/google-site-kit/third-party/firebase/php-jwt/src/BeforeValidException.php b/wp-content/plugins/google-site-kit/third-party/firebase/php-jwt/src/BeforeValidException.php
new file mode 100644
index 000000000..528ea1dfc
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/firebase/php-jwt/src/BeforeValidException.php
@@ -0,0 +1,7 @@
+
+ * @license http://opensource.org/licenses/BSD-3-Clause 3-clause BSD
+ * @link https://github.com/firebase/php-jwt
+ */
+class JWK
+{
+ /**
+ * Parse a set of JWK keys
+ *
+ * @param array $jwks The JSON Web Key Set as an associative array
+ *
+ * @return array An associative array that represents the set of keys
+ *
+ * @throws InvalidArgumentException Provided JWK Set is empty
+ * @throws UnexpectedValueException Provided JWK Set was invalid
+ * @throws DomainException OpenSSL failure
+ *
+ * @uses parseKey
+ */
+ public static function parseKeySet(array $jwks)
+ {
+ $keys = array();
+ if (!isset($jwks['keys'])) {
+ throw new \UnexpectedValueException('"keys" member must exist in the JWK Set');
+ }
+ if (empty($jwks['keys'])) {
+ throw new \InvalidArgumentException('JWK Set did not contain any keys');
+ }
+ foreach ($jwks['keys'] as $k => $v) {
+ $kid = isset($v['kid']) ? $v['kid'] : $k;
+ if ($key = self::parseKey($v)) {
+ $keys[$kid] = $key;
+ }
+ }
+ if (0 === \count($keys)) {
+ throw new \UnexpectedValueException('No supported algorithms found in JWK Set');
+ }
+ return $keys;
+ }
+ /**
+ * Parse a JWK key
+ *
+ * @param array $jwk An individual JWK
+ *
+ * @return resource|array An associative array that represents the key
+ *
+ * @throws InvalidArgumentException Provided JWK is empty
+ * @throws UnexpectedValueException Provided JWK was invalid
+ * @throws DomainException OpenSSL failure
+ *
+ * @uses createPemFromModulusAndExponent
+ */
+ public static function parseKey(array $jwk)
+ {
+ if (empty($jwk)) {
+ throw new \InvalidArgumentException('JWK must not be empty');
+ }
+ if (!isset($jwk['kty'])) {
+ throw new \UnexpectedValueException('JWK must contain a "kty" parameter');
+ }
+ switch ($jwk['kty']) {
+ case 'RSA':
+ if (!empty($jwk['d'])) {
+ throw new \UnexpectedValueException('RSA private keys are not supported');
+ }
+ if (!isset($jwk['n']) || !isset($jwk['e'])) {
+ throw new \UnexpectedValueException('RSA keys must contain values for both "n" and "e"');
+ }
+ $pem = self::createPemFromModulusAndExponent($jwk['n'], $jwk['e']);
+ $publicKey = \openssl_pkey_get_public($pem);
+ if (\false === $publicKey) {
+ throw new \DomainException('OpenSSL error: ' . \openssl_error_string());
+ }
+ return $publicKey;
+ default:
+ // Currently only RSA is supported
+ break;
+ }
+ }
+ /**
+ * Create a public key represented in PEM format from RSA modulus and exponent information
+ *
+ * @param string $n The RSA modulus encoded in Base64
+ * @param string $e The RSA exponent encoded in Base64
+ *
+ * @return string The RSA public key represented in PEM format
+ *
+ * @uses encodeLength
+ */
+ private static function createPemFromModulusAndExponent($n, $e)
+ {
+ $modulus = \Google\Site_Kit_Dependencies\Firebase\JWT\JWT::urlsafeB64Decode($n);
+ $publicExponent = \Google\Site_Kit_Dependencies\Firebase\JWT\JWT::urlsafeB64Decode($e);
+ $components = array('modulus' => \pack('Ca*a*', 2, self::encodeLength(\strlen($modulus)), $modulus), 'publicExponent' => \pack('Ca*a*', 2, self::encodeLength(\strlen($publicExponent)), $publicExponent));
+ $rsaPublicKey = \pack('Ca*a*a*', 48, self::encodeLength(\strlen($components['modulus']) + \strlen($components['publicExponent'])), $components['modulus'], $components['publicExponent']);
+ // sequence(oid(1.2.840.113549.1.1.1), null)) = rsaEncryption.
+ $rsaOID = \pack('H*', '300d06092a864886f70d0101010500');
+ // hex version of MA0GCSqGSIb3DQEBAQUA
+ $rsaPublicKey = \chr(0) . $rsaPublicKey;
+ $rsaPublicKey = \chr(3) . self::encodeLength(\strlen($rsaPublicKey)) . $rsaPublicKey;
+ $rsaPublicKey = \pack('Ca*a*', 48, self::encodeLength(\strlen($rsaOID . $rsaPublicKey)), $rsaOID . $rsaPublicKey);
+ $rsaPublicKey = "-----BEGIN PUBLIC KEY-----\r\n" . \chunk_split(\base64_encode($rsaPublicKey), 64) . '-----END PUBLIC KEY-----';
+ return $rsaPublicKey;
+ }
+ /**
+ * DER-encode the length
+ *
+ * DER supports lengths up to (2**8)**127, however, we'll only support lengths up to (2**8)**4. See
+ * {@link http://itu.int/ITU-T/studygroups/com17/languages/X.690-0207.pdf#p=13 X.690 paragraph 8.1.3} for more information.
+ *
+ * @param int $length
+ * @return string
+ */
+ private static function encodeLength($length)
+ {
+ if ($length <= 0x7f) {
+ return \chr($length);
+ }
+ $temp = \ltrim(\pack('N', $length), \chr(0));
+ return \pack('Ca*', 0x80 | \strlen($temp), $temp);
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/firebase/php-jwt/src/JWT.php b/wp-content/plugins/google-site-kit/third-party/firebase/php-jwt/src/JWT.php
new file mode 100644
index 000000000..83e230700
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/firebase/php-jwt/src/JWT.php
@@ -0,0 +1,519 @@
+
+ * @author Anant Narayanan
+ * @license http://opensource.org/licenses/BSD-3-Clause 3-clause BSD
+ * @link https://github.com/firebase/php-jwt
+ */
+class JWT
+{
+ const ASN1_INTEGER = 0x2;
+ const ASN1_SEQUENCE = 0x10;
+ const ASN1_BIT_STRING = 0x3;
+ /**
+ * When checking nbf, iat or expiration times,
+ * we want to provide some extra leeway time to
+ * account for clock skew.
+ */
+ public static $leeway = 0;
+ /**
+ * Allow the current timestamp to be specified.
+ * Useful for fixing a value within unit testing.
+ *
+ * Will default to PHP time() value if null.
+ */
+ public static $timestamp = null;
+ public static $supported_algs = array('ES384' => array('openssl', 'SHA384'), 'ES256' => array('openssl', 'SHA256'), 'HS256' => array('hash_hmac', 'SHA256'), 'HS384' => array('hash_hmac', 'SHA384'), 'HS512' => array('hash_hmac', 'SHA512'), 'RS256' => array('openssl', 'SHA256'), 'RS384' => array('openssl', 'SHA384'), 'RS512' => array('openssl', 'SHA512'), 'EdDSA' => array('sodium_crypto', 'EdDSA'));
+ /**
+ * Decodes a JWT string into a PHP object.
+ *
+ * @param string $jwt The JWT
+ * @param Key|array|mixed $keyOrKeyArray The Key or array of Key objects.
+ * If the algorithm used is asymmetric, this is the public key
+ * Each Key object contains an algorithm and matching key.
+ * Supported algorithms are 'ES384','ES256', 'HS256', 'HS384',
+ * 'HS512', 'RS256', 'RS384', and 'RS512'
+ * @param array $allowed_algs [DEPRECATED] List of supported verification algorithms. Only
+ * should be used for backwards compatibility.
+ *
+ * @return object The JWT's payload as a PHP object
+ *
+ * @throws InvalidArgumentException Provided JWT was empty
+ * @throws UnexpectedValueException Provided JWT was invalid
+ * @throws SignatureInvalidException Provided JWT was invalid because the signature verification failed
+ * @throws BeforeValidException Provided JWT is trying to be used before it's eligible as defined by 'nbf'
+ * @throws BeforeValidException Provided JWT is trying to be used before it's been created as defined by 'iat'
+ * @throws ExpiredException Provided JWT has since expired, as defined by the 'exp' claim
+ *
+ * @uses jsonDecode
+ * @uses urlsafeB64Decode
+ */
+ public static function decode($jwt, $keyOrKeyArray, array $allowed_algs = array())
+ {
+ $timestamp = \is_null(static::$timestamp) ? \time() : static::$timestamp;
+ if (empty($keyOrKeyArray)) {
+ throw new \InvalidArgumentException('Key may not be empty');
+ }
+ $tks = \explode('.', $jwt);
+ if (\count($tks) != 3) {
+ throw new \UnexpectedValueException('Wrong number of segments');
+ }
+ list($headb64, $bodyb64, $cryptob64) = $tks;
+ if (null === ($header = static::jsonDecode(static::urlsafeB64Decode($headb64)))) {
+ throw new \UnexpectedValueException('Invalid header encoding');
+ }
+ if (null === ($payload = static::jsonDecode(static::urlsafeB64Decode($bodyb64)))) {
+ throw new \UnexpectedValueException('Invalid claims encoding');
+ }
+ if (\false === ($sig = static::urlsafeB64Decode($cryptob64))) {
+ throw new \UnexpectedValueException('Invalid signature encoding');
+ }
+ if (empty($header->alg)) {
+ throw new \UnexpectedValueException('Empty algorithm');
+ }
+ if (empty(static::$supported_algs[$header->alg])) {
+ throw new \UnexpectedValueException('Algorithm not supported');
+ }
+ list($keyMaterial, $algorithm) = self::getKeyMaterialAndAlgorithm($keyOrKeyArray, empty($header->kid) ? null : $header->kid);
+ if (empty($algorithm)) {
+ // Use deprecated "allowed_algs" to determine if the algorithm is supported.
+ // This opens up the possibility of an attack in some implementations.
+ // @see https://github.com/firebase/php-jwt/issues/351
+ if (!\in_array($header->alg, $allowed_algs)) {
+ throw new \UnexpectedValueException('Algorithm not allowed');
+ }
+ } else {
+ // Check the algorithm
+ if (!self::constantTimeEquals($algorithm, $header->alg)) {
+ // See issue #351
+ throw new \UnexpectedValueException('Incorrect key for this algorithm');
+ }
+ }
+ if ($header->alg === 'ES256' || $header->alg === 'ES384') {
+ // OpenSSL expects an ASN.1 DER sequence for ES256/ES384 signatures
+ $sig = self::signatureToDER($sig);
+ }
+ if (!static::verify("{$headb64}.{$bodyb64}", $sig, $keyMaterial, $header->alg)) {
+ throw new \Google\Site_Kit_Dependencies\Firebase\JWT\SignatureInvalidException('Signature verification failed');
+ }
+ // Check the nbf if it is defined. This is the time that the
+ // token can actually be used. If it's not yet that time, abort.
+ if (isset($payload->nbf) && $payload->nbf > $timestamp + static::$leeway) {
+ throw new \Google\Site_Kit_Dependencies\Firebase\JWT\BeforeValidException('Cannot handle token prior to ' . \date(\DateTime::ISO8601, $payload->nbf));
+ }
+ // Check that this token has been created before 'now'. This prevents
+ // using tokens that have been created for later use (and haven't
+ // correctly used the nbf claim).
+ if (isset($payload->iat) && $payload->iat > $timestamp + static::$leeway) {
+ throw new \Google\Site_Kit_Dependencies\Firebase\JWT\BeforeValidException('Cannot handle token prior to ' . \date(\DateTime::ISO8601, $payload->iat));
+ }
+ // Check if this token has expired.
+ if (isset($payload->exp) && $timestamp - static::$leeway >= $payload->exp) {
+ throw new \Google\Site_Kit_Dependencies\Firebase\JWT\ExpiredException('Expired token');
+ }
+ return $payload;
+ }
+ /**
+ * Converts and signs a PHP object or array into a JWT string.
+ *
+ * @param object|array $payload PHP object or array
+ * @param string|resource $key The secret key.
+ * If the algorithm used is asymmetric, this is the private key
+ * @param string $alg The signing algorithm.
+ * Supported algorithms are 'ES384','ES256', 'HS256', 'HS384',
+ * 'HS512', 'RS256', 'RS384', and 'RS512'
+ * @param mixed $keyId
+ * @param array $head An array with header elements to attach
+ *
+ * @return string A signed JWT
+ *
+ * @uses jsonEncode
+ * @uses urlsafeB64Encode
+ */
+ public static function encode($payload, $key, $alg = 'HS256', $keyId = null, $head = null)
+ {
+ $header = array('typ' => 'JWT', 'alg' => $alg);
+ if ($keyId !== null) {
+ $header['kid'] = $keyId;
+ }
+ if (isset($head) && \is_array($head)) {
+ $header = \array_merge($head, $header);
+ }
+ $segments = array();
+ $segments[] = static::urlsafeB64Encode(static::jsonEncode($header));
+ $segments[] = static::urlsafeB64Encode(static::jsonEncode($payload));
+ $signing_input = \implode('.', $segments);
+ $signature = static::sign($signing_input, $key, $alg);
+ $segments[] = static::urlsafeB64Encode($signature);
+ return \implode('.', $segments);
+ }
+ /**
+ * Sign a string with a given key and algorithm.
+ *
+ * @param string $msg The message to sign
+ * @param string|resource $key The secret key
+ * @param string $alg The signing algorithm.
+ * Supported algorithms are 'ES384','ES256', 'HS256', 'HS384',
+ * 'HS512', 'RS256', 'RS384', and 'RS512'
+ *
+ * @return string An encrypted message
+ *
+ * @throws DomainException Unsupported algorithm or bad key was specified
+ */
+ public static function sign($msg, $key, $alg = 'HS256')
+ {
+ if (empty(static::$supported_algs[$alg])) {
+ throw new \DomainException('Algorithm not supported');
+ }
+ list($function, $algorithm) = static::$supported_algs[$alg];
+ switch ($function) {
+ case 'hash_hmac':
+ return \hash_hmac($algorithm, $msg, $key, \true);
+ case 'openssl':
+ $signature = '';
+ $success = \openssl_sign($msg, $signature, $key, $algorithm);
+ if (!$success) {
+ throw new \DomainException("OpenSSL unable to sign data");
+ }
+ if ($alg === 'ES256') {
+ $signature = self::signatureFromDER($signature, 256);
+ } elseif ($alg === 'ES384') {
+ $signature = self::signatureFromDER($signature, 384);
+ }
+ return $signature;
+ case 'sodium_crypto':
+ if (!\function_exists('sodium_crypto_sign_detached')) {
+ throw new \DomainException('libsodium is not available');
+ }
+ try {
+ // The last non-empty line is used as the key.
+ $lines = \array_filter(\explode("\n", $key));
+ $key = \base64_decode(\end($lines));
+ return \sodium_crypto_sign_detached($msg, $key);
+ } catch (\Exception $e) {
+ throw new \DomainException($e->getMessage(), 0, $e);
+ }
+ }
+ }
+ /**
+ * Verify a signature with the message, key and method. Not all methods
+ * are symmetric, so we must have a separate verify and sign method.
+ *
+ * @param string $msg The original message (header and body)
+ * @param string $signature The original signature
+ * @param string|resource $key For HS*, a string key works. for RS*, must be a resource of an openssl public key
+ * @param string $alg The algorithm
+ *
+ * @return bool
+ *
+ * @throws DomainException Invalid Algorithm, bad key, or OpenSSL failure
+ */
+ private static function verify($msg, $signature, $key, $alg)
+ {
+ if (empty(static::$supported_algs[$alg])) {
+ throw new \DomainException('Algorithm not supported');
+ }
+ list($function, $algorithm) = static::$supported_algs[$alg];
+ switch ($function) {
+ case 'openssl':
+ $success = \openssl_verify($msg, $signature, $key, $algorithm);
+ if ($success === 1) {
+ return \true;
+ } elseif ($success === 0) {
+ return \false;
+ }
+ // returns 1 on success, 0 on failure, -1 on error.
+ throw new \DomainException('OpenSSL error: ' . \openssl_error_string());
+ case 'sodium_crypto':
+ if (!\function_exists('sodium_crypto_sign_verify_detached')) {
+ throw new \DomainException('libsodium is not available');
+ }
+ try {
+ // The last non-empty line is used as the key.
+ $lines = \array_filter(\explode("\n", $key));
+ $key = \base64_decode(\end($lines));
+ return \sodium_crypto_sign_verify_detached($signature, $msg, $key);
+ } catch (\Exception $e) {
+ throw new \DomainException($e->getMessage(), 0, $e);
+ }
+ case 'hash_hmac':
+ default:
+ $hash = \hash_hmac($algorithm, $msg, $key, \true);
+ return self::constantTimeEquals($signature, $hash);
+ }
+ }
+ /**
+ * Decode a JSON string into a PHP object.
+ *
+ * @param string $input JSON string
+ *
+ * @return object Object representation of JSON string
+ *
+ * @throws DomainException Provided string was invalid JSON
+ */
+ public static function jsonDecode($input)
+ {
+ if (\version_compare(\PHP_VERSION, '5.4.0', '>=') && !(\defined('Google\\Site_Kit_Dependencies\\JSON_C_VERSION') && \PHP_INT_SIZE > 4)) {
+ /** In PHP >=5.4.0, json_decode() accepts an options parameter, that allows you
+ * to specify that large ints (like Steam Transaction IDs) should be treated as
+ * strings, rather than the PHP default behaviour of converting them to floats.
+ */
+ $obj = \json_decode($input, \false, 512, \JSON_BIGINT_AS_STRING);
+ } else {
+ /** Not all servers will support that, however, so for older versions we must
+ * manually detect large ints in the JSON string and quote them (thus converting
+ *them to strings) before decoding, hence the preg_replace() call.
+ */
+ $max_int_length = \strlen((string) \PHP_INT_MAX) - 1;
+ $json_without_bigints = \preg_replace('/:\\s*(-?\\d{' . $max_int_length . ',})/', ': "$1"', $input);
+ $obj = \json_decode($json_without_bigints);
+ }
+ if ($errno = \json_last_error()) {
+ static::handleJsonError($errno);
+ } elseif ($obj === null && $input !== 'null') {
+ throw new \DomainException('Null result with non-null input');
+ }
+ return $obj;
+ }
+ /**
+ * Encode a PHP object into a JSON string.
+ *
+ * @param object|array $input A PHP object or array
+ *
+ * @return string JSON representation of the PHP object or array
+ *
+ * @throws DomainException Provided object could not be encoded to valid JSON
+ */
+ public static function jsonEncode($input)
+ {
+ $json = \json_encode($input);
+ if ($errno = \json_last_error()) {
+ static::handleJsonError($errno);
+ } elseif ($json === 'null' && $input !== null) {
+ throw new \DomainException('Null result with non-null input');
+ }
+ return $json;
+ }
+ /**
+ * Decode a string with URL-safe Base64.
+ *
+ * @param string $input A Base64 encoded string
+ *
+ * @return string A decoded string
+ */
+ public static function urlsafeB64Decode($input)
+ {
+ $remainder = \strlen($input) % 4;
+ if ($remainder) {
+ $padlen = 4 - $remainder;
+ $input .= \str_repeat('=', $padlen);
+ }
+ return \base64_decode(\strtr($input, '-_', '+/'));
+ }
+ /**
+ * Encode a string with URL-safe Base64.
+ *
+ * @param string $input The string you want encoded
+ *
+ * @return string The base64 encode of what you passed in
+ */
+ public static function urlsafeB64Encode($input)
+ {
+ return \str_replace('=', '', \strtr(\base64_encode($input), '+/', '-_'));
+ }
+ /**
+ * Determine if an algorithm has been provided for each Key
+ *
+ * @param Key|array|mixed $keyOrKeyArray
+ * @param string|null $kid
+ *
+ * @throws UnexpectedValueException
+ *
+ * @return array containing the keyMaterial and algorithm
+ */
+ private static function getKeyMaterialAndAlgorithm($keyOrKeyArray, $kid = null)
+ {
+ if (\is_string($keyOrKeyArray) || \is_resource($keyOrKeyArray) || $keyOrKeyArray instanceof \OpenSSLAsymmetricKey) {
+ return array($keyOrKeyArray, null);
+ }
+ if ($keyOrKeyArray instanceof \Google\Site_Kit_Dependencies\Firebase\JWT\Key) {
+ return array($keyOrKeyArray->getKeyMaterial(), $keyOrKeyArray->getAlgorithm());
+ }
+ if (\is_array($keyOrKeyArray) || $keyOrKeyArray instanceof \ArrayAccess) {
+ if (!isset($kid)) {
+ throw new \UnexpectedValueException('"kid" empty, unable to lookup correct key');
+ }
+ if (!isset($keyOrKeyArray[$kid])) {
+ throw new \UnexpectedValueException('"kid" invalid, unable to lookup correct key');
+ }
+ $key = $keyOrKeyArray[$kid];
+ if ($key instanceof \Google\Site_Kit_Dependencies\Firebase\JWT\Key) {
+ return array($key->getKeyMaterial(), $key->getAlgorithm());
+ }
+ return array($key, null);
+ }
+ throw new \UnexpectedValueException('$keyOrKeyArray must be a string|resource key, an array of string|resource keys, ' . 'an instance of Firebase\\JWT\\Key key or an array of Firebase\\JWT\\Key keys');
+ }
+ /**
+ * @param string $left
+ * @param string $right
+ * @return bool
+ */
+ public static function constantTimeEquals($left, $right)
+ {
+ if (\function_exists('hash_equals')) {
+ return \hash_equals($left, $right);
+ }
+ $len = \min(static::safeStrlen($left), static::safeStrlen($right));
+ $status = 0;
+ for ($i = 0; $i < $len; $i++) {
+ $status |= \ord($left[$i]) ^ \ord($right[$i]);
+ }
+ $status |= static::safeStrlen($left) ^ static::safeStrlen($right);
+ return $status === 0;
+ }
+ /**
+ * Helper method to create a JSON error.
+ *
+ * @param int $errno An error number from json_last_error()
+ *
+ * @return void
+ */
+ private static function handleJsonError($errno)
+ {
+ $messages = array(\JSON_ERROR_DEPTH => 'Maximum stack depth exceeded', \JSON_ERROR_STATE_MISMATCH => 'Invalid or malformed JSON', \JSON_ERROR_CTRL_CHAR => 'Unexpected control character found', \JSON_ERROR_SYNTAX => 'Syntax error, malformed JSON', \JSON_ERROR_UTF8 => 'Malformed UTF-8 characters');
+ throw new \DomainException(isset($messages[$errno]) ? $messages[$errno] : 'Unknown JSON error: ' . $errno);
+ }
+ /**
+ * Get the number of bytes in cryptographic strings.
+ *
+ * @param string $str
+ *
+ * @return int
+ */
+ private static function safeStrlen($str)
+ {
+ if (\function_exists('mb_strlen')) {
+ return \mb_strlen($str, '8bit');
+ }
+ return \strlen($str);
+ }
+ /**
+ * Convert an ECDSA signature to an ASN.1 DER sequence
+ *
+ * @param string $sig The ECDSA signature to convert
+ * @return string The encoded DER object
+ */
+ private static function signatureToDER($sig)
+ {
+ // Separate the signature into r-value and s-value
+ list($r, $s) = \str_split($sig, (int) (\strlen($sig) / 2));
+ // Trim leading zeros
+ $r = \ltrim($r, "\0");
+ $s = \ltrim($s, "\0");
+ // Convert r-value and s-value from unsigned big-endian integers to
+ // signed two's complement
+ if (\ord($r[0]) > 0x7f) {
+ $r = "\0" . $r;
+ }
+ if (\ord($s[0]) > 0x7f) {
+ $s = "\0" . $s;
+ }
+ return self::encodeDER(self::ASN1_SEQUENCE, self::encodeDER(self::ASN1_INTEGER, $r) . self::encodeDER(self::ASN1_INTEGER, $s));
+ }
+ /**
+ * Encodes a value into a DER object.
+ *
+ * @param int $type DER tag
+ * @param string $value the value to encode
+ * @return string the encoded object
+ */
+ private static function encodeDER($type, $value)
+ {
+ $tag_header = 0;
+ if ($type === self::ASN1_SEQUENCE) {
+ $tag_header |= 0x20;
+ }
+ // Type
+ $der = \chr($tag_header | $type);
+ // Length
+ $der .= \chr(\strlen($value));
+ return $der . $value;
+ }
+ /**
+ * Encodes signature from a DER object.
+ *
+ * @param string $der binary signature in DER format
+ * @param int $keySize the number of bits in the key
+ * @return string the signature
+ */
+ private static function signatureFromDER($der, $keySize)
+ {
+ // OpenSSL returns the ECDSA signatures as a binary ASN.1 DER SEQUENCE
+ list($offset, $_) = self::readDER($der);
+ list($offset, $r) = self::readDER($der, $offset);
+ list($offset, $s) = self::readDER($der, $offset);
+ // Convert r-value and s-value from signed two's compliment to unsigned
+ // big-endian integers
+ $r = \ltrim($r, "\0");
+ $s = \ltrim($s, "\0");
+ // Pad out r and s so that they are $keySize bits long
+ $r = \str_pad($r, $keySize / 8, "\0", \STR_PAD_LEFT);
+ $s = \str_pad($s, $keySize / 8, "\0", \STR_PAD_LEFT);
+ return $r . $s;
+ }
+ /**
+ * Reads binary DER-encoded data and decodes into a single object
+ *
+ * @param string $der the binary data in DER format
+ * @param int $offset the offset of the data stream containing the object
+ * to decode
+ * @return array [$offset, $data] the new offset and the decoded object
+ */
+ private static function readDER($der, $offset = 0)
+ {
+ $pos = $offset;
+ $size = \strlen($der);
+ $constructed = \ord($der[$pos]) >> 5 & 0x1;
+ $type = \ord($der[$pos++]) & 0x1f;
+ // Length
+ $len = \ord($der[$pos++]);
+ if ($len & 0x80) {
+ $n = $len & 0x1f;
+ $len = 0;
+ while ($n-- && $pos < $size) {
+ $len = $len << 8 | \ord($der[$pos++]);
+ }
+ }
+ // Value
+ if ($type == self::ASN1_BIT_STRING) {
+ $pos++;
+ // Skip the first contents octet (padding indicator)
+ $data = \substr($der, $pos, $len - 1);
+ $pos += $len - 1;
+ } elseif (!$constructed) {
+ $data = \substr($der, $pos, $len);
+ $pos += $len;
+ } else {
+ $data = null;
+ }
+ return array($pos, $data);
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/firebase/php-jwt/src/Key.php b/wp-content/plugins/google-site-kit/third-party/firebase/php-jwt/src/Key.php
new file mode 100644
index 000000000..8c6df511a
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/firebase/php-jwt/src/Key.php
@@ -0,0 +1,47 @@
+keyMaterial = $keyMaterial;
+ $this->algorithm = $algorithm;
+ }
+ /**
+ * Return the algorithm valid for this key
+ *
+ * @return string
+ */
+ public function getAlgorithm()
+ {
+ return $this->algorithm;
+ }
+ /**
+ * @return string|resource|OpenSSLAsymmetricKey
+ */
+ public function getKeyMaterial()
+ {
+ return $this->keyMaterial;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/firebase/php-jwt/src/SignatureInvalidException.php b/wp-content/plugins/google-site-kit/third-party/firebase/php-jwt/src/SignatureInvalidException.php
new file mode 100644
index 000000000..9859c306d
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/firebase/php-jwt/src/SignatureInvalidException.php
@@ -0,0 +1,7 @@
+
+ * The Subscribe with Google Publication APIs enable a publisher to fetch
+ * information related to their SwG subscriptions, including the entitlement
+ * status of users who are requesting publisher content and the publications
+ * owned by the publisher.
+ *
+ *
+ * For more information about this service, see the API
+ * Documentation
+ *
+ *
+ * @author Google, Inc.
+ */
+class Google_Service_SubscribewithGoogle extends \Google\Site_Kit_Dependencies\Google_Service
+{
+ /** See your primary Google Account email address. */
+ const USERINFO_EMAIL = "https://www.googleapis.com/auth/userinfo.email";
+ public $publications;
+ public $publications_entitlements;
+ /**
+ * Constructs the internal representation of the SubscribewithGoogle service.
+ *
+ * @param Google_Client $client
+ */
+ public function __construct(\Google\Site_Kit_Dependencies\Google_Client $client)
+ {
+ parent::__construct($client);
+ $this->rootUrl = 'https://subscribewithgoogle.googleapis.com/';
+ $this->servicePath = '';
+ $this->batchPath = 'batch';
+ $this->version = 'v1';
+ $this->serviceName = 'subscribewithgoogle';
+ $this->publications = new \Google\Site_Kit_Dependencies\Google_Service_SubscribewithGoogle_Publications_Resource($this, $this->serviceName, 'publications', array('methods' => array('list' => array('path' => 'v1/publications', 'httpMethod' => 'GET', 'parameters' => array('pageSize' => array('location' => 'query', 'type' => 'integer'), 'filter' => array('location' => 'query', 'type' => 'string'), 'pageToken' => array('location' => 'query', 'type' => 'string'))))));
+ $this->publications_entitlements = new \Google\Site_Kit_Dependencies\Google_Service_SubscribewithGoogle_PublicationsEntitlements_Resource($this, $this->serviceName, 'entitlements', array('methods' => array('list' => array('path' => 'v1/publications/{publicationId}/entitlements', 'httpMethod' => 'GET', 'parameters' => array('publicationId' => array('location' => 'path', 'type' => 'string', 'required' => \true), 'pageSize' => array('location' => 'query', 'type' => 'integer'), 'pageToken' => array('location' => 'query', 'type' => 'string'))))));
+ }
+}
+/**
+ * The "publications" collection of methods.
+ * Typical usage is:
+ *
+ * $subscribewithgoogleService = new Google_Service_SubscribewithGoogle(...);
+ * $publications = $subscribewithgoogleService->publications;
+ *
+ */
+class Google_Service_SubscribewithGoogle_Publications_Resource extends \Google\Site_Kit_Dependencies\Google_Service_Resource
+{
+ /**
+ * List all publications based on the filter, only the publications owned by the
+ * current user will be returned (publications.listPublications)
+ *
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param int pageSize LINT.IfChange The maximum number of publications to
+ * return, the service may return fewer than this value. if unspecified, at most
+ * 100 publications will be returned. The maximum value is 1000; values above
+ * 1000 will be coerced to 1000. LINT.ThenChange(//depot/google3/java/com/google
+ * /subscribewithgoogle/client/opservice/ListPublicationsPromiseGraph.java)
+ * @opt_param string filter Filters the publications list. e.g.
+ * verified_domains: "xyz.com" Grammar defined as https://google.aip.dev/160.
+ * @opt_param string pageToken A token identifying a page of results the server
+ * should return.
+ * @return Google_Service_SubscribewithGoogle_ListPublicationsResponse
+ */
+ public function listPublications($optParams = array())
+ {
+ $params = array();
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', array($params), Google_Service_SubscribewithGoogle_ListPublicationsResponse::class);
+ }
+}
+/**
+ * The "entitlements" collection of methods.
+ * Typical usage is:
+ *
+ * $subscribewithgoogleService = new Google_Service_SubscribewithGoogle(...);
+ * $entitlements = $subscribewithgoogleService->entitlements;
+ *
+ */
+class Google_Service_SubscribewithGoogle_PublicationsEntitlements_Resource extends \Google\Site_Kit_Dependencies\Google_Service_Resource
+{
+ /**
+ * Gets a set of entitlements for the user for this publication. The publication
+ * can fetch entitlements on behalf of a user authenticated via OAuth2.
+ * (entitlements.listPublicationsEntitlements)
+ *
+ * @param string $publicationId Mapped to the URL.
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param int pageSize Requested page size. If unspecified, server will pick
+ * an appropriate default.
+ * @opt_param string pageToken A token identifying a page of results the server
+ * should return. Typically, this is the value of
+ * ListEntitlementsResponse.next_page_token returned from the previous call to
+ * `ListEntitlements` method.
+ * @return Google_Service_SubscribewithGoogle_ListEntitlementsResponse
+ */
+ public function listPublicationsEntitlements($publicationId, $optParams = array())
+ {
+ $params = array('publicationId' => $publicationId);
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', array($params), Google_Service_SubscribewithGoogle_ListEntitlementsResponse::class);
+ }
+}
+class Google_Service_SubscribewithGoogle_BusinessPredicates extends \Google\Site_Kit_Dependencies\Google_Model
+{
+ protected $internal_gapi_mappings = array();
+ public $canSell;
+ public $supportsSiteKit;
+ public function setCanSell($canSell)
+ {
+ $this->canSell = $canSell;
+ }
+ public function getCanSell()
+ {
+ return $this->canSell;
+ }
+ public function setSupportsSiteKit($supportsSiteKit)
+ {
+ $this->supportsSiteKit = $supportsSiteKit;
+ }
+ public function getSupportsSiteKit()
+ {
+ return $this->supportsSiteKit;
+ }
+}
+class Google_Service_SubscribewithGoogle_Entitlement extends \Google\Site_Kit_Dependencies\Google_Collection
+{
+ protected $collection_key = 'products';
+ protected $internal_gapi_mappings = array();
+ public $name;
+ public $products;
+ public $source;
+ public $subscriptionToken;
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ public function getName()
+ {
+ return $this->name;
+ }
+ public function setProducts($products)
+ {
+ $this->products = $products;
+ }
+ public function getProducts()
+ {
+ return $this->products;
+ }
+ public function setSource($source)
+ {
+ $this->source = $source;
+ }
+ public function getSource()
+ {
+ return $this->source;
+ }
+ public function setSubscriptionToken($subscriptionToken)
+ {
+ $this->subscriptionToken = $subscriptionToken;
+ }
+ public function getSubscriptionToken()
+ {
+ return $this->subscriptionToken;
+ }
+}
+class Google_Service_SubscribewithGoogle_ListEntitlementsResponse extends \Google\Site_Kit_Dependencies\Google_Collection
+{
+ protected $collection_key = 'entitlements';
+ protected $internal_gapi_mappings = array();
+ protected $entitlementsType = Google_Service_SubscribewithGoogle_Entitlement::class;
+ protected $entitlementsDataType = 'array';
+ public $nextPageToken;
+ public function setEntitlements($entitlements)
+ {
+ $this->entitlements = $entitlements;
+ }
+ public function getEntitlements()
+ {
+ return $this->entitlements;
+ }
+ public function setNextPageToken($nextPageToken)
+ {
+ $this->nextPageToken = $nextPageToken;
+ }
+ public function getNextPageToken()
+ {
+ return $this->nextPageToken;
+ }
+}
+class Google_Service_SubscribewithGoogle_ListPublicationsResponse extends \Google\Site_Kit_Dependencies\Google_Collection
+{
+ protected $collection_key = 'publications';
+ protected $internal_gapi_mappings = array();
+ public $nextPageToken;
+ protected $publicationsType = Google_Service_SubscribewithGoogle_Publication::class;
+ protected $publicationsDataType = 'array';
+ public function setNextPageToken($nextPageToken)
+ {
+ $this->nextPageToken = $nextPageToken;
+ }
+ public function getNextPageToken()
+ {
+ return $this->nextPageToken;
+ }
+ public function setPublications($publications)
+ {
+ $this->publications = $publications;
+ }
+ public function getPublications()
+ {
+ return $this->publications;
+ }
+}
+class Google_Service_SubscribewithGoogle_PaymentOptions extends \Google\Site_Kit_Dependencies\Google_Model
+{
+ protected $internal_gapi_mappings = array();
+ public $contributions;
+ public $subscriptions;
+ public $thankStickers;
+ public function setContributions($contributions)
+ {
+ $this->contributions = $contributions;
+ }
+ public function getContributions()
+ {
+ return $this->contributions;
+ }
+ public function setSubscriptions($subscriptions)
+ {
+ $this->subscriptions = $subscriptions;
+ }
+ public function getSubscriptions()
+ {
+ return $this->subscriptions;
+ }
+ public function setThankStickers($thankStickers)
+ {
+ $this->thankStickers = $thankStickers;
+ }
+ public function getThankStickers()
+ {
+ return $this->thankStickers;
+ }
+}
+class Google_Service_SubscribewithGoogle_Product extends \Google\Site_Kit_Dependencies\Google_Model
+{
+ protected $internal_gapi_mappings = array();
+ public $name;
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ public function getName()
+ {
+ return $this->name;
+ }
+}
+class Google_Service_SubscribewithGoogle_Publication extends \Google\Site_Kit_Dependencies\Google_Collection
+{
+ protected $collection_key = 'verifiedDomains';
+ protected $internal_gapi_mappings = array();
+ public $displayName;
+ public $onboardingState;
+ protected $paymentOptionsType = Google_Service_SubscribewithGoogle_PaymentOptions::class;
+ protected $paymentOptionsDataType = '';
+ protected $productsType = Google_Service_SubscribewithGoogle_Product::class;
+ protected $productsDataType = 'array';
+ public $publicationId;
+ protected $publicationPredicatesType = Google_Service_SubscribewithGoogle_PublicationPredicates::class;
+ protected $publicationPredicatesDataType = '';
+ public $verifiedDomains;
+ public function setDisplayName($displayName)
+ {
+ $this->displayName = $displayName;
+ }
+ public function getDisplayName()
+ {
+ return $this->displayName;
+ }
+ public function setOnboardingState($onboardingState)
+ {
+ $this->onboardingState = $onboardingState;
+ }
+ public function getOnboardingState()
+ {
+ return $this->onboardingState;
+ }
+ public function setPaymentOptions(\Google\Site_Kit_Dependencies\Google_Service_SubscribewithGoogle_PaymentOptions $paymentOptions)
+ {
+ $this->paymentOptions = $paymentOptions;
+ }
+ public function getPaymentOptions()
+ {
+ return $this->paymentOptions;
+ }
+ public function setProducts($products)
+ {
+ $this->products = $products;
+ }
+ public function getProducts()
+ {
+ return $this->products;
+ }
+ public function setPublicationId($publicationId)
+ {
+ $this->publicationId = $publicationId;
+ }
+ public function getPublicationId()
+ {
+ return $this->publicationId;
+ }
+ public function setPublicationPredicates(\Google\Site_Kit_Dependencies\Google_Service_SubscribewithGoogle_PublicationPredicates $publicationPredicates)
+ {
+ $this->publicationPredicates = $publicationPredicates;
+ }
+ public function getPublicationPredicates()
+ {
+ return $this->publicationPredicates;
+ }
+ public function setVerifiedDomains($verifiedDomains)
+ {
+ $this->verifiedDomains = $verifiedDomains;
+ }
+ public function getVerifiedDomains()
+ {
+ return $this->verifiedDomains;
+ }
+}
+class Google_Service_SubscribewithGoogle_PublicationPredicates extends \Google\Site_Kit_Dependencies\Google_Model
+{
+ protected $internal_gapi_mappings = array();
+ protected $businessPredicatesType = Google_Service_SubscribewithGoogle_BusinessPredicates::class;
+ protected $businessPredicatesDataType = '';
+ public function setBusinessPredicates(\Google\Site_Kit_Dependencies\Google_Service_SubscribewithGoogle_BusinessPredicates $businessPredicates)
+ {
+ $this->businessPredicates = $businessPredicates;
+ }
+ public function getBusinessPredicates()
+ {
+ return $this->businessPredicates;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/autoload.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/autoload.php
new file mode 100644
index 000000000..0ec0e34b4
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/autoload.php
@@ -0,0 +1,26 @@
+ 'Google_Client', 'Google\\Site_Kit_Dependencies\\Google\\Service' => 'Google_Service', 'Google\\Site_Kit_Dependencies\\Google\\Service\\Resource' => 'Google_Service_Resource', 'Google\\Site_Kit_Dependencies\\Google\\Model' => 'Google_Model', 'Google\\Site_Kit_Dependencies\\Google\\Collection' => 'Google_Collection'];
+ foreach ($servicesClassMap as $alias => $class) {
+ \class_alias($class, $alias);
+ }
+ }
+}
+\spl_autoload_register(function ($class) {
+ if (0 === \strpos($class, 'Google_Service_')) {
+ // Autoload the new class, which will also create an alias for the
+ // old class by changing underscores to namespaces:
+ // Google_Service_Speech_Resource_Operations
+ // => Google\Service\Speech\Resource\Operations
+ $classExists = \class_exists($newClass = \str_replace('_', '\\', $class));
+ if ($classExists) {
+ return \true;
+ }
+ }
+}, \true, \true);
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense.php
new file mode 100644
index 000000000..18fb3b995
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense.php
@@ -0,0 +1,79 @@
+
+ * The AdSense Management API allows publishers to access their inventory and
+ * run earnings and performance reports.
+ *
+ *
+ * For more information about this service, see the API
+ * Documentation
+ *
+ *
+ * @author Google, Inc.
+ */
+class Adsense extends \Google\Site_Kit_Dependencies\Google\Service
+{
+ /** View and manage your AdSense data. */
+ const ADSENSE = "https://www.googleapis.com/auth/adsense";
+ /** View your AdSense data. */
+ const ADSENSE_READONLY = "https://www.googleapis.com/auth/adsense.readonly";
+ public $accounts;
+ public $accounts_adclients;
+ public $accounts_adclients_adunits;
+ public $accounts_adclients_customchannels;
+ public $accounts_adclients_urlchannels;
+ public $accounts_alerts;
+ public $accounts_payments;
+ public $accounts_reports;
+ public $accounts_reports_saved;
+ public $accounts_sites;
+ /**
+ * Constructs the internal representation of the Adsense service.
+ *
+ * @param Client|array $clientOrConfig The client used to deliver requests, or a
+ * config array to pass to a new Client instance.
+ * @param string $rootUrl The root URL used for requests to the service.
+ */
+ public function __construct($clientOrConfig = [], $rootUrl = null)
+ {
+ parent::__construct($clientOrConfig);
+ $this->rootUrl = $rootUrl ?: 'https://adsense.googleapis.com/';
+ $this->servicePath = '';
+ $this->batchPath = 'batch';
+ $this->version = 'v2';
+ $this->serviceName = 'adsense';
+ $this->accounts = new \Google\Site_Kit_Dependencies\Google\Service\Adsense\Resource\Accounts($this, $this->serviceName, 'accounts', ['methods' => ['get' => ['path' => 'v2/{+name}', 'httpMethod' => 'GET', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'getAdBlockingRecoveryTag' => ['path' => 'v2/{+name}/adBlockingRecoveryTag', 'httpMethod' => 'GET', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'v2/accounts', 'httpMethod' => 'GET', 'parameters' => ['pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'listChildAccounts' => ['path' => 'v2/{+parent}:listChildAccounts', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string']]]]]);
+ $this->accounts_adclients = new \Google\Site_Kit_Dependencies\Google\Service\Adsense\Resource\AccountsAdclients($this, $this->serviceName, 'adclients', ['methods' => ['get' => ['path' => 'v2/{+name}', 'httpMethod' => 'GET', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'getAdcode' => ['path' => 'v2/{+name}/adcode', 'httpMethod' => 'GET', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'v2/{+parent}/adclients', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string']]]]]);
+ $this->accounts_adclients_adunits = new \Google\Site_Kit_Dependencies\Google\Service\Adsense\Resource\AccountsAdclientsAdunits($this, $this->serviceName, 'adunits', ['methods' => ['create' => ['path' => 'v2/{+parent}/adunits', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'v2/{+name}', 'httpMethod' => 'GET', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'getAdcode' => ['path' => 'v2/{+name}/adcode', 'httpMethod' => 'GET', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'v2/{+parent}/adunits', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'listLinkedCustomChannels' => ['path' => 'v2/{+parent}:listLinkedCustomChannels', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'patch' => ['path' => 'v2/{+name}', 'httpMethod' => 'PATCH', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'updateMask' => ['location' => 'query', 'type' => 'string']]]]]);
+ $this->accounts_adclients_customchannels = new \Google\Site_Kit_Dependencies\Google\Service\Adsense\Resource\AccountsAdclientsCustomchannels($this, $this->serviceName, 'customchannels', ['methods' => ['create' => ['path' => 'v2/{+parent}/customchannels', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'delete' => ['path' => 'v2/{+name}', 'httpMethod' => 'DELETE', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'v2/{+name}', 'httpMethod' => 'GET', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'v2/{+parent}/customchannels', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'listLinkedAdUnits' => ['path' => 'v2/{+parent}:listLinkedAdUnits', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'patch' => ['path' => 'v2/{+name}', 'httpMethod' => 'PATCH', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'updateMask' => ['location' => 'query', 'type' => 'string']]]]]);
+ $this->accounts_adclients_urlchannels = new \Google\Site_Kit_Dependencies\Google\Service\Adsense\Resource\AccountsAdclientsUrlchannels($this, $this->serviceName, 'urlchannels', ['methods' => ['get' => ['path' => 'v2/{+name}', 'httpMethod' => 'GET', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'v2/{+parent}/urlchannels', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string']]]]]);
+ $this->accounts_alerts = new \Google\Site_Kit_Dependencies\Google\Service\Adsense\Resource\AccountsAlerts($this, $this->serviceName, 'alerts', ['methods' => ['list' => ['path' => 'v2/{+parent}/alerts', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'languageCode' => ['location' => 'query', 'type' => 'string']]]]]);
+ $this->accounts_payments = new \Google\Site_Kit_Dependencies\Google\Service\Adsense\Resource\AccountsPayments($this, $this->serviceName, 'payments', ['methods' => ['list' => ['path' => 'v2/{+parent}/payments', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]);
+ $this->accounts_reports = new \Google\Site_Kit_Dependencies\Google\Service\Adsense\Resource\AccountsReports($this, $this->serviceName, 'reports', ['methods' => ['generate' => ['path' => 'v2/{+account}/reports:generate', 'httpMethod' => 'GET', 'parameters' => ['account' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'currencyCode' => ['location' => 'query', 'type' => 'string'], 'dateRange' => ['location' => 'query', 'type' => 'string'], 'dimensions' => ['location' => 'query', 'type' => 'string', 'repeated' => \true], 'endDate.day' => ['location' => 'query', 'type' => 'integer'], 'endDate.month' => ['location' => 'query', 'type' => 'integer'], 'endDate.year' => ['location' => 'query', 'type' => 'integer'], 'filters' => ['location' => 'query', 'type' => 'string', 'repeated' => \true], 'languageCode' => ['location' => 'query', 'type' => 'string'], 'limit' => ['location' => 'query', 'type' => 'integer'], 'metrics' => ['location' => 'query', 'type' => 'string', 'repeated' => \true], 'orderBy' => ['location' => 'query', 'type' => 'string', 'repeated' => \true], 'reportingTimeZone' => ['location' => 'query', 'type' => 'string'], 'startDate.day' => ['location' => 'query', 'type' => 'integer'], 'startDate.month' => ['location' => 'query', 'type' => 'integer'], 'startDate.year' => ['location' => 'query', 'type' => 'integer']]], 'generateCsv' => ['path' => 'v2/{+account}/reports:generateCsv', 'httpMethod' => 'GET', 'parameters' => ['account' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'currencyCode' => ['location' => 'query', 'type' => 'string'], 'dateRange' => ['location' => 'query', 'type' => 'string'], 'dimensions' => ['location' => 'query', 'type' => 'string', 'repeated' => \true], 'endDate.day' => ['location' => 'query', 'type' => 'integer'], 'endDate.month' => ['location' => 'query', 'type' => 'integer'], 'endDate.year' => ['location' => 'query', 'type' => 'integer'], 'filters' => ['location' => 'query', 'type' => 'string', 'repeated' => \true], 'languageCode' => ['location' => 'query', 'type' => 'string'], 'limit' => ['location' => 'query', 'type' => 'integer'], 'metrics' => ['location' => 'query', 'type' => 'string', 'repeated' => \true], 'orderBy' => ['location' => 'query', 'type' => 'string', 'repeated' => \true], 'reportingTimeZone' => ['location' => 'query', 'type' => 'string'], 'startDate.day' => ['location' => 'query', 'type' => 'integer'], 'startDate.month' => ['location' => 'query', 'type' => 'integer'], 'startDate.year' => ['location' => 'query', 'type' => 'integer']]], 'getSaved' => ['path' => 'v2/{+name}/saved', 'httpMethod' => 'GET', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]);
+ $this->accounts_reports_saved = new \Google\Site_Kit_Dependencies\Google\Service\Adsense\Resource\AccountsReportsSaved($this, $this->serviceName, 'saved', ['methods' => ['generate' => ['path' => 'v2/{+name}/saved:generate', 'httpMethod' => 'GET', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'currencyCode' => ['location' => 'query', 'type' => 'string'], 'dateRange' => ['location' => 'query', 'type' => 'string'], 'endDate.day' => ['location' => 'query', 'type' => 'integer'], 'endDate.month' => ['location' => 'query', 'type' => 'integer'], 'endDate.year' => ['location' => 'query', 'type' => 'integer'], 'languageCode' => ['location' => 'query', 'type' => 'string'], 'reportingTimeZone' => ['location' => 'query', 'type' => 'string'], 'startDate.day' => ['location' => 'query', 'type' => 'integer'], 'startDate.month' => ['location' => 'query', 'type' => 'integer'], 'startDate.year' => ['location' => 'query', 'type' => 'integer']]], 'generateCsv' => ['path' => 'v2/{+name}/saved:generateCsv', 'httpMethod' => 'GET', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'currencyCode' => ['location' => 'query', 'type' => 'string'], 'dateRange' => ['location' => 'query', 'type' => 'string'], 'endDate.day' => ['location' => 'query', 'type' => 'integer'], 'endDate.month' => ['location' => 'query', 'type' => 'integer'], 'endDate.year' => ['location' => 'query', 'type' => 'integer'], 'languageCode' => ['location' => 'query', 'type' => 'string'], 'reportingTimeZone' => ['location' => 'query', 'type' => 'string'], 'startDate.day' => ['location' => 'query', 'type' => 'integer'], 'startDate.month' => ['location' => 'query', 'type' => 'integer'], 'startDate.year' => ['location' => 'query', 'type' => 'integer']]], 'list' => ['path' => 'v2/{+parent}/reports/saved', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string']]]]]);
+ $this->accounts_sites = new \Google\Site_Kit_Dependencies\Google\Service\Adsense\Resource\AccountsSites($this, $this->serviceName, 'sites', ['methods' => ['get' => ['path' => 'v2/{+name}', 'httpMethod' => 'GET', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'v2/{+parent}/sites', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string']]]]]);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Account.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Account.php
new file mode 100644
index 000000000..6121c81c2
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Account.php
@@ -0,0 +1,149 @@
+createTime = $createTime;
+ }
+ /**
+ * @return string
+ */
+ public function getCreateTime()
+ {
+ return $this->createTime;
+ }
+ /**
+ * @param string
+ */
+ public function setDisplayName($displayName)
+ {
+ $this->displayName = $displayName;
+ }
+ /**
+ * @return string
+ */
+ public function getDisplayName()
+ {
+ return $this->displayName;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param string[]
+ */
+ public function setPendingTasks($pendingTasks)
+ {
+ $this->pendingTasks = $pendingTasks;
+ }
+ /**
+ * @return string[]
+ */
+ public function getPendingTasks()
+ {
+ return $this->pendingTasks;
+ }
+ /**
+ * @param bool
+ */
+ public function setPremium($premium)
+ {
+ $this->premium = $premium;
+ }
+ /**
+ * @return bool
+ */
+ public function getPremium()
+ {
+ return $this->premium;
+ }
+ /**
+ * @param string
+ */
+ public function setState($state)
+ {
+ $this->state = $state;
+ }
+ /**
+ * @return string
+ */
+ public function getState()
+ {
+ return $this->state;
+ }
+ /**
+ * @param TimeZone
+ */
+ public function setTimeZone(\Google\Site_Kit_Dependencies\Google\Service\Adsense\TimeZone $timeZone)
+ {
+ $this->timeZone = $timeZone;
+ }
+ /**
+ * @return TimeZone
+ */
+ public function getTimeZone()
+ {
+ return $this->timeZone;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\Account::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_Account');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/AdBlockingRecoveryTag.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/AdBlockingRecoveryTag.php
new file mode 100644
index 000000000..5729f47d0
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/AdBlockingRecoveryTag.php
@@ -0,0 +1,60 @@
+errorProtectionCode = $errorProtectionCode;
+ }
+ /**
+ * @return string
+ */
+ public function getErrorProtectionCode()
+ {
+ return $this->errorProtectionCode;
+ }
+ /**
+ * @param string
+ */
+ public function setTag($tag)
+ {
+ $this->tag = $tag;
+ }
+ /**
+ * @return string
+ */
+ public function getTag()
+ {
+ return $this->tag;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\AdBlockingRecoveryTag::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_AdBlockingRecoveryTag');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/AdClient.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/AdClient.php
new file mode 100644
index 000000000..40a136ee6
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/AdClient.php
@@ -0,0 +1,96 @@
+name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param string
+ */
+ public function setProductCode($productCode)
+ {
+ $this->productCode = $productCode;
+ }
+ /**
+ * @return string
+ */
+ public function getProductCode()
+ {
+ return $this->productCode;
+ }
+ /**
+ * @param string
+ */
+ public function setReportingDimensionId($reportingDimensionId)
+ {
+ $this->reportingDimensionId = $reportingDimensionId;
+ }
+ /**
+ * @return string
+ */
+ public function getReportingDimensionId()
+ {
+ return $this->reportingDimensionId;
+ }
+ /**
+ * @param string
+ */
+ public function setState($state)
+ {
+ $this->state = $state;
+ }
+ /**
+ * @return string
+ */
+ public function getState()
+ {
+ return $this->state;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\AdClient::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_AdClient');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/AdClientAdCode.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/AdClientAdCode.php
new file mode 100644
index 000000000..f420e35a5
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/AdClientAdCode.php
@@ -0,0 +1,78 @@
+adCode = $adCode;
+ }
+ /**
+ * @return string
+ */
+ public function getAdCode()
+ {
+ return $this->adCode;
+ }
+ /**
+ * @param string
+ */
+ public function setAmpBody($ampBody)
+ {
+ $this->ampBody = $ampBody;
+ }
+ /**
+ * @return string
+ */
+ public function getAmpBody()
+ {
+ return $this->ampBody;
+ }
+ /**
+ * @param string
+ */
+ public function setAmpHead($ampHead)
+ {
+ $this->ampHead = $ampHead;
+ }
+ /**
+ * @return string
+ */
+ public function getAmpHead()
+ {
+ return $this->ampHead;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\AdClientAdCode::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_AdClientAdCode');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/AdUnit.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/AdUnit.php
new file mode 100644
index 000000000..52f0f0ac3
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/AdUnit.php
@@ -0,0 +1,112 @@
+contentAdsSettings = $contentAdsSettings;
+ }
+ /**
+ * @return ContentAdsSettings
+ */
+ public function getContentAdsSettings()
+ {
+ return $this->contentAdsSettings;
+ }
+ /**
+ * @param string
+ */
+ public function setDisplayName($displayName)
+ {
+ $this->displayName = $displayName;
+ }
+ /**
+ * @return string
+ */
+ public function getDisplayName()
+ {
+ return $this->displayName;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param string
+ */
+ public function setReportingDimensionId($reportingDimensionId)
+ {
+ $this->reportingDimensionId = $reportingDimensionId;
+ }
+ /**
+ * @return string
+ */
+ public function getReportingDimensionId()
+ {
+ return $this->reportingDimensionId;
+ }
+ /**
+ * @param string
+ */
+ public function setState($state)
+ {
+ $this->state = $state;
+ }
+ /**
+ * @return string
+ */
+ public function getState()
+ {
+ return $this->state;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\AdUnit::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_AdUnit');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/AdUnitAdCode.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/AdUnitAdCode.php
new file mode 100644
index 000000000..00de091cd
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/AdUnitAdCode.php
@@ -0,0 +1,42 @@
+adCode = $adCode;
+ }
+ /**
+ * @return string
+ */
+ public function getAdCode()
+ {
+ return $this->adCode;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\AdUnitAdCode::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_AdUnitAdCode');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/AdsenseEmpty.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/AdsenseEmpty.php
new file mode 100644
index 000000000..7486c0b46
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/AdsenseEmpty.php
@@ -0,0 +1,24 @@
+message = $message;
+ }
+ /**
+ * @return string
+ */
+ public function getMessage()
+ {
+ return $this->message;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param string
+ */
+ public function setSeverity($severity)
+ {
+ $this->severity = $severity;
+ }
+ /**
+ * @return string
+ */
+ public function getSeverity()
+ {
+ return $this->severity;
+ }
+ /**
+ * @param string
+ */
+ public function setType($type)
+ {
+ $this->type = $type;
+ }
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\Alert::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_Alert');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Cell.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Cell.php
new file mode 100644
index 000000000..c7f403e2f
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Cell.php
@@ -0,0 +1,42 @@
+value = $value;
+ }
+ /**
+ * @return string
+ */
+ public function getValue()
+ {
+ return $this->value;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\Cell::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_Cell');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ContentAdsSettings.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ContentAdsSettings.php
new file mode 100644
index 000000000..8692dbac5
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ContentAdsSettings.php
@@ -0,0 +1,60 @@
+size = $size;
+ }
+ /**
+ * @return string
+ */
+ public function getSize()
+ {
+ return $this->size;
+ }
+ /**
+ * @param string
+ */
+ public function setType($type)
+ {
+ $this->type = $type;
+ }
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\ContentAdsSettings::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_ContentAdsSettings');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/CustomChannel.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/CustomChannel.php
new file mode 100644
index 000000000..a81ee7329
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/CustomChannel.php
@@ -0,0 +1,96 @@
+active = $active;
+ }
+ /**
+ * @return bool
+ */
+ public function getActive()
+ {
+ return $this->active;
+ }
+ /**
+ * @param string
+ */
+ public function setDisplayName($displayName)
+ {
+ $this->displayName = $displayName;
+ }
+ /**
+ * @return string
+ */
+ public function getDisplayName()
+ {
+ return $this->displayName;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param string
+ */
+ public function setReportingDimensionId($reportingDimensionId)
+ {
+ $this->reportingDimensionId = $reportingDimensionId;
+ }
+ /**
+ * @return string
+ */
+ public function getReportingDimensionId()
+ {
+ return $this->reportingDimensionId;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\CustomChannel::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_CustomChannel');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Date.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Date.php
new file mode 100644
index 000000000..cb0b74d0f
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Date.php
@@ -0,0 +1,78 @@
+day = $day;
+ }
+ /**
+ * @return int
+ */
+ public function getDay()
+ {
+ return $this->day;
+ }
+ /**
+ * @param int
+ */
+ public function setMonth($month)
+ {
+ $this->month = $month;
+ }
+ /**
+ * @return int
+ */
+ public function getMonth()
+ {
+ return $this->month;
+ }
+ /**
+ * @param int
+ */
+ public function setYear($year)
+ {
+ $this->year = $year;
+ }
+ /**
+ * @return int
+ */
+ public function getYear()
+ {
+ return $this->year;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\Date::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_Date');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Header.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Header.php
new file mode 100644
index 000000000..a8ba3aeb0
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Header.php
@@ -0,0 +1,78 @@
+currencyCode = $currencyCode;
+ }
+ /**
+ * @return string
+ */
+ public function getCurrencyCode()
+ {
+ return $this->currencyCode;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param string
+ */
+ public function setType($type)
+ {
+ $this->type = $type;
+ }
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\Header::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_Header');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/HttpBody.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/HttpBody.php
new file mode 100644
index 000000000..c4abbc621
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/HttpBody.php
@@ -0,0 +1,79 @@
+contentType = $contentType;
+ }
+ /**
+ * @return string
+ */
+ public function getContentType()
+ {
+ return $this->contentType;
+ }
+ /**
+ * @param string
+ */
+ public function setData($data)
+ {
+ $this->data = $data;
+ }
+ /**
+ * @return string
+ */
+ public function getData()
+ {
+ return $this->data;
+ }
+ /**
+ * @param array[]
+ */
+ public function setExtensions($extensions)
+ {
+ $this->extensions = $extensions;
+ }
+ /**
+ * @return array[]
+ */
+ public function getExtensions()
+ {
+ return $this->extensions;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\HttpBody::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_HttpBody');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListAccountsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListAccountsResponse.php
new file mode 100644
index 000000000..522623742
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListAccountsResponse.php
@@ -0,0 +1,59 @@
+accounts = $accounts;
+ }
+ /**
+ * @return Account[]
+ */
+ public function getAccounts()
+ {
+ return $this->accounts;
+ }
+ /**
+ * @param string
+ */
+ public function setNextPageToken($nextPageToken)
+ {
+ $this->nextPageToken = $nextPageToken;
+ }
+ /**
+ * @return string
+ */
+ public function getNextPageToken()
+ {
+ return $this->nextPageToken;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\ListAccountsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_ListAccountsResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListAdClientsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListAdClientsResponse.php
new file mode 100644
index 000000000..0eea6cd90
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListAdClientsResponse.php
@@ -0,0 +1,59 @@
+adClients = $adClients;
+ }
+ /**
+ * @return AdClient[]
+ */
+ public function getAdClients()
+ {
+ return $this->adClients;
+ }
+ /**
+ * @param string
+ */
+ public function setNextPageToken($nextPageToken)
+ {
+ $this->nextPageToken = $nextPageToken;
+ }
+ /**
+ * @return string
+ */
+ public function getNextPageToken()
+ {
+ return $this->nextPageToken;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\ListAdClientsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_ListAdClientsResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListAdUnitsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListAdUnitsResponse.php
new file mode 100644
index 000000000..709d15aff
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListAdUnitsResponse.php
@@ -0,0 +1,59 @@
+adUnits = $adUnits;
+ }
+ /**
+ * @return AdUnit[]
+ */
+ public function getAdUnits()
+ {
+ return $this->adUnits;
+ }
+ /**
+ * @param string
+ */
+ public function setNextPageToken($nextPageToken)
+ {
+ $this->nextPageToken = $nextPageToken;
+ }
+ /**
+ * @return string
+ */
+ public function getNextPageToken()
+ {
+ return $this->nextPageToken;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\ListAdUnitsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_ListAdUnitsResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListAlertsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListAlertsResponse.php
new file mode 100644
index 000000000..d23a68a8d
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListAlertsResponse.php
@@ -0,0 +1,41 @@
+alerts = $alerts;
+ }
+ /**
+ * @return Alert[]
+ */
+ public function getAlerts()
+ {
+ return $this->alerts;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\ListAlertsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_ListAlertsResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListChildAccountsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListChildAccountsResponse.php
new file mode 100644
index 000000000..1668c3cce
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListChildAccountsResponse.php
@@ -0,0 +1,59 @@
+accounts = $accounts;
+ }
+ /**
+ * @return Account[]
+ */
+ public function getAccounts()
+ {
+ return $this->accounts;
+ }
+ /**
+ * @param string
+ */
+ public function setNextPageToken($nextPageToken)
+ {
+ $this->nextPageToken = $nextPageToken;
+ }
+ /**
+ * @return string
+ */
+ public function getNextPageToken()
+ {
+ return $this->nextPageToken;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\ListChildAccountsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_ListChildAccountsResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListCustomChannelsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListCustomChannelsResponse.php
new file mode 100644
index 000000000..be9035dcf
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListCustomChannelsResponse.php
@@ -0,0 +1,59 @@
+customChannels = $customChannels;
+ }
+ /**
+ * @return CustomChannel[]
+ */
+ public function getCustomChannels()
+ {
+ return $this->customChannels;
+ }
+ /**
+ * @param string
+ */
+ public function setNextPageToken($nextPageToken)
+ {
+ $this->nextPageToken = $nextPageToken;
+ }
+ /**
+ * @return string
+ */
+ public function getNextPageToken()
+ {
+ return $this->nextPageToken;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\ListCustomChannelsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_ListCustomChannelsResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListLinkedAdUnitsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListLinkedAdUnitsResponse.php
new file mode 100644
index 000000000..16afa8d89
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListLinkedAdUnitsResponse.php
@@ -0,0 +1,59 @@
+adUnits = $adUnits;
+ }
+ /**
+ * @return AdUnit[]
+ */
+ public function getAdUnits()
+ {
+ return $this->adUnits;
+ }
+ /**
+ * @param string
+ */
+ public function setNextPageToken($nextPageToken)
+ {
+ $this->nextPageToken = $nextPageToken;
+ }
+ /**
+ * @return string
+ */
+ public function getNextPageToken()
+ {
+ return $this->nextPageToken;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\ListLinkedAdUnitsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_ListLinkedAdUnitsResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListLinkedCustomChannelsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListLinkedCustomChannelsResponse.php
new file mode 100644
index 000000000..888ba6323
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListLinkedCustomChannelsResponse.php
@@ -0,0 +1,59 @@
+customChannels = $customChannels;
+ }
+ /**
+ * @return CustomChannel[]
+ */
+ public function getCustomChannels()
+ {
+ return $this->customChannels;
+ }
+ /**
+ * @param string
+ */
+ public function setNextPageToken($nextPageToken)
+ {
+ $this->nextPageToken = $nextPageToken;
+ }
+ /**
+ * @return string
+ */
+ public function getNextPageToken()
+ {
+ return $this->nextPageToken;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\ListLinkedCustomChannelsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_ListLinkedCustomChannelsResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListPaymentsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListPaymentsResponse.php
new file mode 100644
index 000000000..b8dc1c6a4
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListPaymentsResponse.php
@@ -0,0 +1,41 @@
+payments = $payments;
+ }
+ /**
+ * @return Payment[]
+ */
+ public function getPayments()
+ {
+ return $this->payments;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\ListPaymentsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_ListPaymentsResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListSavedReportsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListSavedReportsResponse.php
new file mode 100644
index 000000000..22a920f43
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListSavedReportsResponse.php
@@ -0,0 +1,59 @@
+nextPageToken = $nextPageToken;
+ }
+ /**
+ * @return string
+ */
+ public function getNextPageToken()
+ {
+ return $this->nextPageToken;
+ }
+ /**
+ * @param SavedReport[]
+ */
+ public function setSavedReports($savedReports)
+ {
+ $this->savedReports = $savedReports;
+ }
+ /**
+ * @return SavedReport[]
+ */
+ public function getSavedReports()
+ {
+ return $this->savedReports;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\ListSavedReportsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_ListSavedReportsResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListSitesResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListSitesResponse.php
new file mode 100644
index 000000000..39c170478
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListSitesResponse.php
@@ -0,0 +1,59 @@
+nextPageToken = $nextPageToken;
+ }
+ /**
+ * @return string
+ */
+ public function getNextPageToken()
+ {
+ return $this->nextPageToken;
+ }
+ /**
+ * @param Site[]
+ */
+ public function setSites($sites)
+ {
+ $this->sites = $sites;
+ }
+ /**
+ * @return Site[]
+ */
+ public function getSites()
+ {
+ return $this->sites;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\ListSitesResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_ListSitesResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListUrlChannelsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListUrlChannelsResponse.php
new file mode 100644
index 000000000..7b17bbfff
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ListUrlChannelsResponse.php
@@ -0,0 +1,59 @@
+nextPageToken = $nextPageToken;
+ }
+ /**
+ * @return string
+ */
+ public function getNextPageToken()
+ {
+ return $this->nextPageToken;
+ }
+ /**
+ * @param UrlChannel[]
+ */
+ public function setUrlChannels($urlChannels)
+ {
+ $this->urlChannels = $urlChannels;
+ }
+ /**
+ * @return UrlChannel[]
+ */
+ public function getUrlChannels()
+ {
+ return $this->urlChannels;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\ListUrlChannelsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_ListUrlChannelsResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Payment.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Payment.php
new file mode 100644
index 000000000..9705dc04c
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Payment.php
@@ -0,0 +1,76 @@
+amount = $amount;
+ }
+ /**
+ * @return string
+ */
+ public function getAmount()
+ {
+ return $this->amount;
+ }
+ /**
+ * @param Date
+ */
+ public function setDate(\Google\Site_Kit_Dependencies\Google\Service\Adsense\Date $date)
+ {
+ $this->date = $date;
+ }
+ /**
+ * @return Date
+ */
+ public function getDate()
+ {
+ return $this->date;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\Payment::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_Payment');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ReportResult.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ReportResult.php
new file mode 100644
index 000000000..fbd4fed01
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/ReportResult.php
@@ -0,0 +1,157 @@
+averages = $averages;
+ }
+ /**
+ * @return Row
+ */
+ public function getAverages()
+ {
+ return $this->averages;
+ }
+ /**
+ * @param Date
+ */
+ public function setEndDate(\Google\Site_Kit_Dependencies\Google\Service\Adsense\Date $endDate)
+ {
+ $this->endDate = $endDate;
+ }
+ /**
+ * @return Date
+ */
+ public function getEndDate()
+ {
+ return $this->endDate;
+ }
+ /**
+ * @param Header[]
+ */
+ public function setHeaders($headers)
+ {
+ $this->headers = $headers;
+ }
+ /**
+ * @return Header[]
+ */
+ public function getHeaders()
+ {
+ return $this->headers;
+ }
+ /**
+ * @param Row[]
+ */
+ public function setRows($rows)
+ {
+ $this->rows = $rows;
+ }
+ /**
+ * @return Row[]
+ */
+ public function getRows()
+ {
+ return $this->rows;
+ }
+ /**
+ * @param Date
+ */
+ public function setStartDate(\Google\Site_Kit_Dependencies\Google\Service\Adsense\Date $startDate)
+ {
+ $this->startDate = $startDate;
+ }
+ /**
+ * @return Date
+ */
+ public function getStartDate()
+ {
+ return $this->startDate;
+ }
+ /**
+ * @param string
+ */
+ public function setTotalMatchedRows($totalMatchedRows)
+ {
+ $this->totalMatchedRows = $totalMatchedRows;
+ }
+ /**
+ * @return string
+ */
+ public function getTotalMatchedRows()
+ {
+ return $this->totalMatchedRows;
+ }
+ /**
+ * @param Row
+ */
+ public function setTotals(\Google\Site_Kit_Dependencies\Google\Service\Adsense\Row $totals)
+ {
+ $this->totals = $totals;
+ }
+ /**
+ * @return Row
+ */
+ public function getTotals()
+ {
+ return $this->totals;
+ }
+ /**
+ * @param string[]
+ */
+ public function setWarnings($warnings)
+ {
+ $this->warnings = $warnings;
+ }
+ /**
+ * @return string[]
+ */
+ public function getWarnings()
+ {
+ return $this->warnings;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\ReportResult::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_ReportResult');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Resource/Accounts.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Resource/Accounts.php
new file mode 100644
index 000000000..92856a86a
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Resource/Accounts.php
@@ -0,0 +1,110 @@
+
+ * $adsenseService = new Google\Service\Adsense(...);
+ * $accounts = $adsenseService->accounts;
+ *
+ */
+class Accounts extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Gets information about the selected AdSense account. (accounts.get)
+ *
+ * @param string $name Required. Account to get information about. Format:
+ * accounts/{account}
+ * @param array $optParams Optional parameters.
+ * @return Account
+ */
+ public function get($name, $optParams = [])
+ {
+ $params = ['name' => $name];
+ $params = \array_merge($params, $optParams);
+ return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\Account::class);
+ }
+ /**
+ * Gets the ad blocking recovery tag of an account.
+ * (accounts.getAdBlockingRecoveryTag)
+ *
+ * @param string $name Required. The name of the account to get the tag for.
+ * Format: accounts/{account}
+ * @param array $optParams Optional parameters.
+ * @return AdBlockingRecoveryTag
+ */
+ public function getAdBlockingRecoveryTag($name, $optParams = [])
+ {
+ $params = ['name' => $name];
+ $params = \array_merge($params, $optParams);
+ return $this->call('getAdBlockingRecoveryTag', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\AdBlockingRecoveryTag::class);
+ }
+ /**
+ * Lists all accounts available to this user. (accounts.listAccounts)
+ *
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param int pageSize The maximum number of accounts to include in the
+ * response, used for paging. If unspecified, at most 10000 accounts will be
+ * returned. The maximum value is 10000; values above 10000 will be coerced to
+ * 10000.
+ * @opt_param string pageToken A page token, received from a previous
+ * `ListAccounts` call. Provide this to retrieve the subsequent page. When
+ * paginating, all other parameters provided to `ListAccounts` must match the
+ * call that provided the page token.
+ * @return ListAccountsResponse
+ */
+ public function listAccounts($optParams = [])
+ {
+ $params = [];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\ListAccountsResponse::class);
+ }
+ /**
+ * Lists all accounts directly managed by the given AdSense account.
+ * (accounts.listChildAccounts)
+ *
+ * @param string $parent Required. The parent account, which owns the child
+ * accounts. Format: accounts/{account}
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param int pageSize The maximum number of accounts to include in the
+ * response, used for paging. If unspecified, at most 10000 accounts will be
+ * returned. The maximum value is 10000; values above 10000 will be coerced to
+ * 10000.
+ * @opt_param string pageToken A page token, received from a previous
+ * `ListAccounts` call. Provide this to retrieve the subsequent page. When
+ * paginating, all other parameters provided to `ListAccounts` must match the
+ * call that provided the page token.
+ * @return ListChildAccountsResponse
+ */
+ public function listChildAccounts($parent, $optParams = [])
+ {
+ $params = ['parent' => $parent];
+ $params = \array_merge($params, $optParams);
+ return $this->call('listChildAccounts', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\ListChildAccountsResponse::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\Resource\Accounts::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_Resource_Accounts');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Resource/AccountsAdclients.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Resource/AccountsAdclients.php
new file mode 100644
index 000000000..12857c30a
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Resource/AccountsAdclients.php
@@ -0,0 +1,91 @@
+
+ * $adsenseService = new Google\Service\Adsense(...);
+ * $adclients = $adsenseService->adclients;
+ *
+ */
+class AccountsAdclients extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Gets the ad client from the given resource name. (adclients.get)
+ *
+ * @param string $name Required. The name of the ad client to retrieve. Format:
+ * accounts/{account}/adclients/{adclient}
+ * @param array $optParams Optional parameters.
+ * @return AdClient
+ */
+ public function get($name, $optParams = [])
+ {
+ $params = ['name' => $name];
+ $params = \array_merge($params, $optParams);
+ return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\AdClient::class);
+ }
+ /**
+ * Gets the AdSense code for a given ad client. This returns what was previously
+ * known as the 'auto ad code'. This is only supported for ad clients with a
+ * product_code of AFC. For more information, see [About the AdSense
+ * code](https://support.google.com/adsense/answer/9274634).
+ * (adclients.getAdcode)
+ *
+ * @param string $name Required. Name of the ad client for which to get the
+ * adcode. Format: accounts/{account}/adclients/{adclient}
+ * @param array $optParams Optional parameters.
+ * @return AdClientAdCode
+ */
+ public function getAdcode($name, $optParams = [])
+ {
+ $params = ['name' => $name];
+ $params = \array_merge($params, $optParams);
+ return $this->call('getAdcode', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\AdClientAdCode::class);
+ }
+ /**
+ * Lists all the ad clients available in an account.
+ * (adclients.listAccountsAdclients)
+ *
+ * @param string $parent Required. The account which owns the collection of ad
+ * clients. Format: accounts/{account}
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param int pageSize The maximum number of ad clients to include in the
+ * response, used for paging. If unspecified, at most 10000 ad clients will be
+ * returned. The maximum value is 10000; values above 10000 will be coerced to
+ * 10000.
+ * @opt_param string pageToken A page token, received from a previous
+ * `ListAdClients` call. Provide this to retrieve the subsequent page. When
+ * paginating, all other parameters provided to `ListAdClients` must match the
+ * call that provided the page token.
+ * @return ListAdClientsResponse
+ */
+ public function listAccountsAdclients($parent, $optParams = [])
+ {
+ $params = ['parent' => $parent];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\ListAdClientsResponse::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\Resource\AccountsAdclients::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_Resource_AccountsAdclients');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Resource/AccountsAdclientsAdunits.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Resource/AccountsAdclientsAdunits.php
new file mode 100644
index 000000000..214fa44e0
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Resource/AccountsAdclientsAdunits.php
@@ -0,0 +1,158 @@
+
+ * $adsenseService = new Google\Service\Adsense(...);
+ * $adunits = $adsenseService->adunits;
+ *
+ */
+class AccountsAdclientsAdunits extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Creates an ad unit. This method can only be used by projects enabled for the
+ * [AdSense for Platforms](https://developers.google.com/adsense/platforms/)
+ * product. Note that ad units can only be created for ad clients with an "AFC"
+ * product code. For more info see the [AdClient
+ * resource](/adsense/management/reference/rest/v2/accounts.adclients). For now,
+ * this method can only be used to create `DISPLAY` ad units. See:
+ * https://support.google.com/adsense/answer/9183566 (adunits.create)
+ *
+ * @param string $parent Required. Ad client to create an ad unit under. Format:
+ * accounts/{account}/adclients/{adclient}
+ * @param AdUnit $postBody
+ * @param array $optParams Optional parameters.
+ * @return AdUnit
+ */
+ public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\Adsense\AdUnit $postBody, $optParams = [])
+ {
+ $params = ['parent' => $parent, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\AdUnit::class);
+ }
+ /**
+ * Gets an ad unit from a specified account and ad client. (adunits.get)
+ *
+ * @param string $name Required. AdUnit to get information about. Format:
+ * accounts/{account}/adclients/{adclient}/adunits/{adunit}
+ * @param array $optParams Optional parameters.
+ * @return AdUnit
+ */
+ public function get($name, $optParams = [])
+ {
+ $params = ['name' => $name];
+ $params = \array_merge($params, $optParams);
+ return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\AdUnit::class);
+ }
+ /**
+ * Gets the ad unit code for a given ad unit. For more information, see [About
+ * the AdSense code](https://support.google.com/adsense/answer/9274634) and
+ * [Where to place the ad code in your
+ * HTML](https://support.google.com/adsense/answer/9190028). (adunits.getAdcode)
+ *
+ * @param string $name Required. Name of the adunit for which to get the adcode.
+ * Format: accounts/{account}/adclients/{adclient}/adunits/{adunit}
+ * @param array $optParams Optional parameters.
+ * @return AdUnitAdCode
+ */
+ public function getAdcode($name, $optParams = [])
+ {
+ $params = ['name' => $name];
+ $params = \array_merge($params, $optParams);
+ return $this->call('getAdcode', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\AdUnitAdCode::class);
+ }
+ /**
+ * Lists all ad units under a specified account and ad client.
+ * (adunits.listAccountsAdclientsAdunits)
+ *
+ * @param string $parent Required. The ad client which owns the collection of ad
+ * units. Format: accounts/{account}/adclients/{adclient}
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param int pageSize The maximum number of ad units to include in the
+ * response, used for paging. If unspecified, at most 10000 ad units will be
+ * returned. The maximum value is 10000; values above 10000 will be coerced to
+ * 10000.
+ * @opt_param string pageToken A page token, received from a previous
+ * `ListAdUnits` call. Provide this to retrieve the subsequent page. When
+ * paginating, all other parameters provided to `ListAdUnits` must match the
+ * call that provided the page token.
+ * @return ListAdUnitsResponse
+ */
+ public function listAccountsAdclientsAdunits($parent, $optParams = [])
+ {
+ $params = ['parent' => $parent];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\ListAdUnitsResponse::class);
+ }
+ /**
+ * Lists all the custom channels available for an ad unit.
+ * (adunits.listLinkedCustomChannels)
+ *
+ * @param string $parent Required. The ad unit which owns the collection of
+ * custom channels. Format:
+ * accounts/{account}/adclients/{adclient}/adunits/{adunit}
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param int pageSize The maximum number of custom channels to include in
+ * the response, used for paging. If unspecified, at most 10000 custom channels
+ * will be returned. The maximum value is 10000; values above 10000 will be
+ * coerced to 10000.
+ * @opt_param string pageToken A page token, received from a previous
+ * `ListLinkedCustomChannels` call. Provide this to retrieve the subsequent
+ * page. When paginating, all other parameters provided to
+ * `ListLinkedCustomChannels` must match the call that provided the page token.
+ * @return ListLinkedCustomChannelsResponse
+ */
+ public function listLinkedCustomChannels($parent, $optParams = [])
+ {
+ $params = ['parent' => $parent];
+ $params = \array_merge($params, $optParams);
+ return $this->call('listLinkedCustomChannels', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\ListLinkedCustomChannelsResponse::class);
+ }
+ /**
+ * Updates an ad unit. This method can only be used by projects enabled for the
+ * [AdSense for Platforms](https://developers.google.com/adsense/platforms/)
+ * product. For now, this method can only be used to update `DISPLAY` ad units.
+ * See: https://support.google.com/adsense/answer/9183566 (adunits.patch)
+ *
+ * @param string $name Output only. Resource name of the ad unit. Format:
+ * accounts/{account}/adclients/{adclient}/adunits/{adunit}
+ * @param AdUnit $postBody
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string updateMask The list of fields to update. If empty, a full
+ * update is performed.
+ * @return AdUnit
+ */
+ public function patch($name, \Google\Site_Kit_Dependencies\Google\Service\Adsense\AdUnit $postBody, $optParams = [])
+ {
+ $params = ['name' => $name, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\AdUnit::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\Resource\AccountsAdclientsAdunits::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_Resource_AccountsAdclientsAdunits');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Resource/AccountsAdclientsCustomchannels.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Resource/AccountsAdclientsCustomchannels.php
new file mode 100644
index 000000000..f760bbbc8
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Resource/AccountsAdclientsCustomchannels.php
@@ -0,0 +1,155 @@
+
+ * $adsenseService = new Google\Service\Adsense(...);
+ * $customchannels = $adsenseService->customchannels;
+ *
+ */
+class AccountsAdclientsCustomchannels extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Creates a custom channel. This method can only be used by projects enabled
+ * for the [AdSense for
+ * Platforms](https://developers.google.com/adsense/platforms/) product.
+ * (customchannels.create)
+ *
+ * @param string $parent Required. The ad client to create a custom channel
+ * under. Format: accounts/{account}/adclients/{adclient}
+ * @param CustomChannel $postBody
+ * @param array $optParams Optional parameters.
+ * @return CustomChannel
+ */
+ public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\Adsense\CustomChannel $postBody, $optParams = [])
+ {
+ $params = ['parent' => $parent, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\CustomChannel::class);
+ }
+ /**
+ * Deletes a custom channel. This method can only be used by projects enabled
+ * for the [AdSense for
+ * Platforms](https://developers.google.com/adsense/platforms/) product.
+ * (customchannels.delete)
+ *
+ * @param string $name Required. Name of the custom channel to delete. Format:
+ * accounts/{account}/adclients/{adclient}/customchannels/{customchannel}
+ * @param array $optParams Optional parameters.
+ * @return AdsenseEmpty
+ */
+ public function delete($name, $optParams = [])
+ {
+ $params = ['name' => $name];
+ $params = \array_merge($params, $optParams);
+ return $this->call('delete', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\AdsenseEmpty::class);
+ }
+ /**
+ * Gets information about the selected custom channel. (customchannels.get)
+ *
+ * @param string $name Required. Name of the custom channel. Format:
+ * accounts/{account}/adclients/{adclient}/customchannels/{customchannel}
+ * @param array $optParams Optional parameters.
+ * @return CustomChannel
+ */
+ public function get($name, $optParams = [])
+ {
+ $params = ['name' => $name];
+ $params = \array_merge($params, $optParams);
+ return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\CustomChannel::class);
+ }
+ /**
+ * Lists all the custom channels available in an ad client.
+ * (customchannels.listAccountsAdclientsCustomchannels)
+ *
+ * @param string $parent Required. The ad client which owns the collection of
+ * custom channels. Format: accounts/{account}/adclients/{adclient}
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param int pageSize The maximum number of custom channels to include in
+ * the response, used for paging. If unspecified, at most 10000 custom channels
+ * will be returned. The maximum value is 10000; values above 10000 will be
+ * coerced to 10000.
+ * @opt_param string pageToken A page token, received from a previous
+ * `ListCustomChannels` call. Provide this to retrieve the subsequent page. When
+ * paginating, all other parameters provided to `ListCustomChannels` must match
+ * the call that provided the page token.
+ * @return ListCustomChannelsResponse
+ */
+ public function listAccountsAdclientsCustomchannels($parent, $optParams = [])
+ {
+ $params = ['parent' => $parent];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\ListCustomChannelsResponse::class);
+ }
+ /**
+ * Lists all the ad units available for a custom channel.
+ * (customchannels.listLinkedAdUnits)
+ *
+ * @param string $parent Required. The custom channel which owns the collection
+ * of ad units. Format:
+ * accounts/{account}/adclients/{adclient}/customchannels/{customchannel}
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param int pageSize The maximum number of ad units to include in the
+ * response, used for paging. If unspecified, at most 10000 ad units will be
+ * returned. The maximum value is 10000; values above 10000 will be coerced to
+ * 10000.
+ * @opt_param string pageToken A page token, received from a previous
+ * `ListLinkedAdUnits` call. Provide this to retrieve the subsequent page. When
+ * paginating, all other parameters provided to `ListLinkedAdUnits` must match
+ * the call that provided the page token.
+ * @return ListLinkedAdUnitsResponse
+ */
+ public function listLinkedAdUnits($parent, $optParams = [])
+ {
+ $params = ['parent' => $parent];
+ $params = \array_merge($params, $optParams);
+ return $this->call('listLinkedAdUnits', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\ListLinkedAdUnitsResponse::class);
+ }
+ /**
+ * Updates a custom channel. This method can only be used by projects enabled
+ * for the [AdSense for
+ * Platforms](https://developers.google.com/adsense/platforms/) product.
+ * (customchannels.patch)
+ *
+ * @param string $name Output only. Resource name of the custom channel. Format:
+ * accounts/{account}/adclients/{adclient}/customchannels/{customchannel}
+ * @param CustomChannel $postBody
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string updateMask The list of fields to update. If empty, a full
+ * update is performed.
+ * @return CustomChannel
+ */
+ public function patch($name, \Google\Site_Kit_Dependencies\Google\Service\Adsense\CustomChannel $postBody, $optParams = [])
+ {
+ $params = ['name' => $name, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\CustomChannel::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\Resource\AccountsAdclientsCustomchannels::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_Resource_AccountsAdclientsCustomchannels');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Resource/AccountsAdclientsUrlchannels.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Resource/AccountsAdclientsUrlchannels.php
new file mode 100644
index 000000000..e994450d6
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Resource/AccountsAdclientsUrlchannels.php
@@ -0,0 +1,71 @@
+
+ * $adsenseService = new Google\Service\Adsense(...);
+ * $urlchannels = $adsenseService->urlchannels;
+ *
+ */
+class AccountsAdclientsUrlchannels extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Gets information about the selected url channel. (urlchannels.get)
+ *
+ * @param string $name Required. The name of the url channel to retrieve.
+ * Format: accounts/{account}/adclients/{adclient}/urlchannels/{urlchannel}
+ * @param array $optParams Optional parameters.
+ * @return UrlChannel
+ */
+ public function get($name, $optParams = [])
+ {
+ $params = ['name' => $name];
+ $params = \array_merge($params, $optParams);
+ return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\UrlChannel::class);
+ }
+ /**
+ * Lists active url channels. (urlchannels.listAccountsAdclientsUrlchannels)
+ *
+ * @param string $parent Required. The ad client which owns the collection of
+ * url channels. Format: accounts/{account}/adclients/{adclient}
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param int pageSize The maximum number of url channels to include in the
+ * response, used for paging. If unspecified, at most 10000 url channels will be
+ * returned. The maximum value is 10000; values above 10000 will be coerced to
+ * 10000.
+ * @opt_param string pageToken A page token, received from a previous
+ * `ListUrlChannels` call. Provide this to retrieve the subsequent page. When
+ * paginating, all other parameters provided to `ListUrlChannels` must match the
+ * call that provided the page token.
+ * @return ListUrlChannelsResponse
+ */
+ public function listAccountsAdclientsUrlchannels($parent, $optParams = [])
+ {
+ $params = ['parent' => $parent];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\ListUrlChannelsResponse::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\Resource\AccountsAdclientsUrlchannels::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_Resource_AccountsAdclientsUrlchannels');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Resource/AccountsAlerts.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Resource/AccountsAlerts.php
new file mode 100644
index 000000000..9e74e17d0
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Resource/AccountsAlerts.php
@@ -0,0 +1,53 @@
+
+ * $adsenseService = new Google\Service\Adsense(...);
+ * $alerts = $adsenseService->alerts;
+ *
+ */
+class AccountsAlerts extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Lists all the alerts available in an account. (alerts.listAccountsAlerts)
+ *
+ * @param string $parent Required. The account which owns the collection of
+ * alerts. Format: accounts/{account}
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string languageCode The language to use for translating alert
+ * messages. If unspecified, this defaults to the user's display language. If
+ * the given language is not supported, alerts will be returned in English. The
+ * language is specified as an [IETF BCP-47 language
+ * code](https://en.wikipedia.org/wiki/IETF_language_tag).
+ * @return ListAlertsResponse
+ */
+ public function listAccountsAlerts($parent, $optParams = [])
+ {
+ $params = ['parent' => $parent];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\ListAlertsResponse::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\Resource\AccountsAlerts::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_Resource_AccountsAlerts');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Resource/AccountsPayments.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Resource/AccountsPayments.php
new file mode 100644
index 000000000..615627ab0
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Resource/AccountsPayments.php
@@ -0,0 +1,48 @@
+
+ * $adsenseService = new Google\Service\Adsense(...);
+ * $payments = $adsenseService->payments;
+ *
+ */
+class AccountsPayments extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Lists all the payments available for an account.
+ * (payments.listAccountsPayments)
+ *
+ * @param string $parent Required. The account which owns the collection of
+ * payments. Format: accounts/{account}
+ * @param array $optParams Optional parameters.
+ * @return ListPaymentsResponse
+ */
+ public function listAccountsPayments($parent, $optParams = [])
+ {
+ $params = ['parent' => $parent];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\ListPaymentsResponse::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\Resource\AccountsPayments::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_Resource_AccountsPayments');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Resource/AccountsReports.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Resource/AccountsReports.php
new file mode 100644
index 000000000..bea64f657
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Resource/AccountsReports.php
@@ -0,0 +1,167 @@
+
+ * $adsenseService = new Google\Service\Adsense(...);
+ * $reports = $adsenseService->reports;
+ *
+ */
+class AccountsReports extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Generates an ad hoc report. (reports.generate)
+ *
+ * @param string $account Required. The account which owns the collection of
+ * reports. Format: accounts/{account}
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string currencyCode The [ISO-4217 currency
+ * code](https://en.wikipedia.org/wiki/ISO_4217) to use when reporting on
+ * monetary metrics. Defaults to the account's currency if not set.
+ * @opt_param string dateRange Date range of the report, if unset the range will
+ * be considered CUSTOM.
+ * @opt_param string dimensions Dimensions to base the report on.
+ * @opt_param int endDate.day Day of a month. Must be from 1 to 31 and valid for
+ * the year and month, or 0 to specify a year by itself or a year and month
+ * where the day isn't significant.
+ * @opt_param int endDate.month Month of a year. Must be from 1 to 12, or 0 to
+ * specify a year without a month and day.
+ * @opt_param int endDate.year Year of the date. Must be from 1 to 9999, or 0 to
+ * specify a date without a year.
+ * @opt_param string filters A list of
+ * [filters](/adsense/management/reporting/filtering) to apply to the report.
+ * All provided filters must match in order for the data to be included in the
+ * report.
+ * @opt_param string languageCode The language to use for translating report
+ * output. If unspecified, this defaults to English ("en"). If the given
+ * language is not supported, report output will be returned in English. The
+ * language is specified as an [IETF BCP-47 language
+ * code](https://en.wikipedia.org/wiki/IETF_language_tag).
+ * @opt_param int limit The maximum number of rows of report data to return.
+ * Reports producing more rows than the requested limit will be truncated. If
+ * unset, this defaults to 100,000 rows for `Reports.GenerateReport` and
+ * 1,000,000 rows for `Reports.GenerateCsvReport`, which are also the maximum
+ * values permitted here. Report truncation can be identified (for
+ * `Reports.GenerateReport` only) by comparing the number of rows returned to
+ * the value returned in `total_matched_rows`.
+ * @opt_param string metrics Required. Reporting metrics.
+ * @opt_param string orderBy The name of a dimension or metric to sort the
+ * resulting report on, can be prefixed with "+" to sort ascending or "-" to
+ * sort descending. If no prefix is specified, the column is sorted ascending.
+ * @opt_param string reportingTimeZone Timezone in which to generate the report.
+ * If unspecified, this defaults to the account timezone. For more information,
+ * see [changing the time zone of your
+ * reports](https://support.google.com/adsense/answer/9830725).
+ * @opt_param int startDate.day Day of a month. Must be from 1 to 31 and valid
+ * for the year and month, or 0 to specify a year by itself or a year and month
+ * where the day isn't significant.
+ * @opt_param int startDate.month Month of a year. Must be from 1 to 12, or 0 to
+ * specify a year without a month and day.
+ * @opt_param int startDate.year Year of the date. Must be from 1 to 9999, or 0
+ * to specify a date without a year.
+ * @return ReportResult
+ */
+ public function generate($account, $optParams = [])
+ {
+ $params = ['account' => $account];
+ $params = \array_merge($params, $optParams);
+ return $this->call('generate', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\ReportResult::class);
+ }
+ /**
+ * Generates a csv formatted ad hoc report. (reports.generateCsv)
+ *
+ * @param string $account Required. The account which owns the collection of
+ * reports. Format: accounts/{account}
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string currencyCode The [ISO-4217 currency
+ * code](https://en.wikipedia.org/wiki/ISO_4217) to use when reporting on
+ * monetary metrics. Defaults to the account's currency if not set.
+ * @opt_param string dateRange Date range of the report, if unset the range will
+ * be considered CUSTOM.
+ * @opt_param string dimensions Dimensions to base the report on.
+ * @opt_param int endDate.day Day of a month. Must be from 1 to 31 and valid for
+ * the year and month, or 0 to specify a year by itself or a year and month
+ * where the day isn't significant.
+ * @opt_param int endDate.month Month of a year. Must be from 1 to 12, or 0 to
+ * specify a year without a month and day.
+ * @opt_param int endDate.year Year of the date. Must be from 1 to 9999, or 0 to
+ * specify a date without a year.
+ * @opt_param string filters A list of
+ * [filters](/adsense/management/reporting/filtering) to apply to the report.
+ * All provided filters must match in order for the data to be included in the
+ * report.
+ * @opt_param string languageCode The language to use for translating report
+ * output. If unspecified, this defaults to English ("en"). If the given
+ * language is not supported, report output will be returned in English. The
+ * language is specified as an [IETF BCP-47 language
+ * code](https://en.wikipedia.org/wiki/IETF_language_tag).
+ * @opt_param int limit The maximum number of rows of report data to return.
+ * Reports producing more rows than the requested limit will be truncated. If
+ * unset, this defaults to 100,000 rows for `Reports.GenerateReport` and
+ * 1,000,000 rows for `Reports.GenerateCsvReport`, which are also the maximum
+ * values permitted here. Report truncation can be identified (for
+ * `Reports.GenerateReport` only) by comparing the number of rows returned to
+ * the value returned in `total_matched_rows`.
+ * @opt_param string metrics Required. Reporting metrics.
+ * @opt_param string orderBy The name of a dimension or metric to sort the
+ * resulting report on, can be prefixed with "+" to sort ascending or "-" to
+ * sort descending. If no prefix is specified, the column is sorted ascending.
+ * @opt_param string reportingTimeZone Timezone in which to generate the report.
+ * If unspecified, this defaults to the account timezone. For more information,
+ * see [changing the time zone of your
+ * reports](https://support.google.com/adsense/answer/9830725).
+ * @opt_param int startDate.day Day of a month. Must be from 1 to 31 and valid
+ * for the year and month, or 0 to specify a year by itself or a year and month
+ * where the day isn't significant.
+ * @opt_param int startDate.month Month of a year. Must be from 1 to 12, or 0 to
+ * specify a year without a month and day.
+ * @opt_param int startDate.year Year of the date. Must be from 1 to 9999, or 0
+ * to specify a date without a year.
+ * @return HttpBody
+ */
+ public function generateCsv($account, $optParams = [])
+ {
+ $params = ['account' => $account];
+ $params = \array_merge($params, $optParams);
+ return $this->call('generateCsv', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\HttpBody::class);
+ }
+ /**
+ * Gets the saved report from the given resource name. (reports.getSaved)
+ *
+ * @param string $name Required. The name of the saved report to retrieve.
+ * Format: accounts/{account}/reports/{report}
+ * @param array $optParams Optional parameters.
+ * @return SavedReport
+ */
+ public function getSaved($name, $optParams = [])
+ {
+ $params = ['name' => $name];
+ $params = \array_merge($params, $optParams);
+ return $this->call('getSaved', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\SavedReport::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\Resource\AccountsReports::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_Resource_AccountsReports');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Resource/AccountsReportsSaved.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Resource/AccountsReportsSaved.php
new file mode 100644
index 000000000..578906084
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Resource/AccountsReportsSaved.php
@@ -0,0 +1,144 @@
+
+ * $adsenseService = new Google\Service\Adsense(...);
+ * $saved = $adsenseService->saved;
+ *
+ */
+class AccountsReportsSaved extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Generates a saved report. (saved.generate)
+ *
+ * @param string $name Required. Name of the saved report. Format:
+ * accounts/{account}/reports/{report}
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string currencyCode The [ISO-4217 currency
+ * code](https://en.wikipedia.org/wiki/ISO_4217) to use when reporting on
+ * monetary metrics. Defaults to the account's currency if not set.
+ * @opt_param string dateRange Date range of the report, if unset the range will
+ * be considered CUSTOM.
+ * @opt_param int endDate.day Day of a month. Must be from 1 to 31 and valid for
+ * the year and month, or 0 to specify a year by itself or a year and month
+ * where the day isn't significant.
+ * @opt_param int endDate.month Month of a year. Must be from 1 to 12, or 0 to
+ * specify a year without a month and day.
+ * @opt_param int endDate.year Year of the date. Must be from 1 to 9999, or 0 to
+ * specify a date without a year.
+ * @opt_param string languageCode The language to use for translating report
+ * output. If unspecified, this defaults to English ("en"). If the given
+ * language is not supported, report output will be returned in English. The
+ * language is specified as an [IETF BCP-47 language
+ * code](https://en.wikipedia.org/wiki/IETF_language_tag).
+ * @opt_param string reportingTimeZone Timezone in which to generate the report.
+ * If unspecified, this defaults to the account timezone. For more information,
+ * see [changing the time zone of your
+ * reports](https://support.google.com/adsense/answer/9830725).
+ * @opt_param int startDate.day Day of a month. Must be from 1 to 31 and valid
+ * for the year and month, or 0 to specify a year by itself or a year and month
+ * where the day isn't significant.
+ * @opt_param int startDate.month Month of a year. Must be from 1 to 12, or 0 to
+ * specify a year without a month and day.
+ * @opt_param int startDate.year Year of the date. Must be from 1 to 9999, or 0
+ * to specify a date without a year.
+ * @return ReportResult
+ */
+ public function generate($name, $optParams = [])
+ {
+ $params = ['name' => $name];
+ $params = \array_merge($params, $optParams);
+ return $this->call('generate', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\ReportResult::class);
+ }
+ /**
+ * Generates a csv formatted saved report. (saved.generateCsv)
+ *
+ * @param string $name Required. Name of the saved report. Format:
+ * accounts/{account}/reports/{report}
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string currencyCode The [ISO-4217 currency
+ * code](https://en.wikipedia.org/wiki/ISO_4217) to use when reporting on
+ * monetary metrics. Defaults to the account's currency if not set.
+ * @opt_param string dateRange Date range of the report, if unset the range will
+ * be considered CUSTOM.
+ * @opt_param int endDate.day Day of a month. Must be from 1 to 31 and valid for
+ * the year and month, or 0 to specify a year by itself or a year and month
+ * where the day isn't significant.
+ * @opt_param int endDate.month Month of a year. Must be from 1 to 12, or 0 to
+ * specify a year without a month and day.
+ * @opt_param int endDate.year Year of the date. Must be from 1 to 9999, or 0 to
+ * specify a date without a year.
+ * @opt_param string languageCode The language to use for translating report
+ * output. If unspecified, this defaults to English ("en"). If the given
+ * language is not supported, report output will be returned in English. The
+ * language is specified as an [IETF BCP-47 language
+ * code](https://en.wikipedia.org/wiki/IETF_language_tag).
+ * @opt_param string reportingTimeZone Timezone in which to generate the report.
+ * If unspecified, this defaults to the account timezone. For more information,
+ * see [changing the time zone of your
+ * reports](https://support.google.com/adsense/answer/9830725).
+ * @opt_param int startDate.day Day of a month. Must be from 1 to 31 and valid
+ * for the year and month, or 0 to specify a year by itself or a year and month
+ * where the day isn't significant.
+ * @opt_param int startDate.month Month of a year. Must be from 1 to 12, or 0 to
+ * specify a year without a month and day.
+ * @opt_param int startDate.year Year of the date. Must be from 1 to 9999, or 0
+ * to specify a date without a year.
+ * @return HttpBody
+ */
+ public function generateCsv($name, $optParams = [])
+ {
+ $params = ['name' => $name];
+ $params = \array_merge($params, $optParams);
+ return $this->call('generateCsv', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\HttpBody::class);
+ }
+ /**
+ * Lists saved reports. (saved.listAccountsReportsSaved)
+ *
+ * @param string $parent Required. The account which owns the collection of
+ * reports. Format: accounts/{account}
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param int pageSize The maximum number of reports to include in the
+ * response, used for paging. If unspecified, at most 10000 reports will be
+ * returned. The maximum value is 10000; values above 10000 will be coerced to
+ * 10000.
+ * @opt_param string pageToken A page token, received from a previous
+ * `ListPayments` call. Provide this to retrieve the subsequent page. When
+ * paginating, all other parameters provided to `ListPayments` must match the
+ * call that provided the page token.
+ * @return ListSavedReportsResponse
+ */
+ public function listAccountsReportsSaved($parent, $optParams = [])
+ {
+ $params = ['parent' => $parent];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\ListSavedReportsResponse::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\Resource\AccountsReportsSaved::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_Resource_AccountsReportsSaved');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Resource/AccountsSites.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Resource/AccountsSites.php
new file mode 100644
index 000000000..ebf87cd6b
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Resource/AccountsSites.php
@@ -0,0 +1,71 @@
+
+ * $adsenseService = new Google\Service\Adsense(...);
+ * $sites = $adsenseService->sites;
+ *
+ */
+class AccountsSites extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Gets information about the selected site. (sites.get)
+ *
+ * @param string $name Required. Name of the site. Format:
+ * accounts/{account}/sites/{site}
+ * @param array $optParams Optional parameters.
+ * @return Site
+ */
+ public function get($name, $optParams = [])
+ {
+ $params = ['name' => $name];
+ $params = \array_merge($params, $optParams);
+ return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\Site::class);
+ }
+ /**
+ * Lists all the sites available in an account. (sites.listAccountsSites)
+ *
+ * @param string $parent Required. The account which owns the collection of
+ * sites. Format: accounts/{account}
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param int pageSize The maximum number of sites to include in the
+ * response, used for paging. If unspecified, at most 10000 sites will be
+ * returned. The maximum value is 10000; values above 10000 will be coerced to
+ * 10000.
+ * @opt_param string pageToken A page token, received from a previous
+ * `ListSites` call. Provide this to retrieve the subsequent page. When
+ * paginating, all other parameters provided to `ListSites` must match the call
+ * that provided the page token.
+ * @return ListSitesResponse
+ */
+ public function listAccountsSites($parent, $optParams = [])
+ {
+ $params = ['parent' => $parent];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Adsense\ListSitesResponse::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\Resource\AccountsSites::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_Resource_AccountsSites');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Row.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Row.php
new file mode 100644
index 000000000..3a53cd01f
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Row.php
@@ -0,0 +1,41 @@
+cells = $cells;
+ }
+ /**
+ * @return Cell[]
+ */
+ public function getCells()
+ {
+ return $this->cells;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\Row::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_Row');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/SavedReport.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/SavedReport.php
new file mode 100644
index 000000000..ea3ac0347
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/SavedReport.php
@@ -0,0 +1,60 @@
+name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param string
+ */
+ public function setTitle($title)
+ {
+ $this->title = $title;
+ }
+ /**
+ * @return string
+ */
+ public function getTitle()
+ {
+ return $this->title;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\SavedReport::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_SavedReport');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Site.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Site.php
new file mode 100644
index 000000000..57ea69a44
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/Site.php
@@ -0,0 +1,114 @@
+autoAdsEnabled = $autoAdsEnabled;
+ }
+ /**
+ * @return bool
+ */
+ public function getAutoAdsEnabled()
+ {
+ return $this->autoAdsEnabled;
+ }
+ /**
+ * @param string
+ */
+ public function setDomain($domain)
+ {
+ $this->domain = $domain;
+ }
+ /**
+ * @return string
+ */
+ public function getDomain()
+ {
+ return $this->domain;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param string
+ */
+ public function setReportingDimensionId($reportingDimensionId)
+ {
+ $this->reportingDimensionId = $reportingDimensionId;
+ }
+ /**
+ * @return string
+ */
+ public function getReportingDimensionId()
+ {
+ return $this->reportingDimensionId;
+ }
+ /**
+ * @param string
+ */
+ public function setState($state)
+ {
+ $this->state = $state;
+ }
+ /**
+ * @return string
+ */
+ public function getState()
+ {
+ return $this->state;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\Site::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_Site');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/TimeZone.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/TimeZone.php
new file mode 100644
index 000000000..28505839c
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/TimeZone.php
@@ -0,0 +1,60 @@
+id = $id;
+ }
+ /**
+ * @return string
+ */
+ public function getId()
+ {
+ return $this->id;
+ }
+ /**
+ * @param string
+ */
+ public function setVersion($version)
+ {
+ $this->version = $version;
+ }
+ /**
+ * @return string
+ */
+ public function getVersion()
+ {
+ return $this->version;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\TimeZone::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_TimeZone');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/UrlChannel.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/UrlChannel.php
new file mode 100644
index 000000000..9de12badc
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Adsense/UrlChannel.php
@@ -0,0 +1,78 @@
+name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param string
+ */
+ public function setReportingDimensionId($reportingDimensionId)
+ {
+ $this->reportingDimensionId = $reportingDimensionId;
+ }
+ /**
+ * @return string
+ */
+ public function getReportingDimensionId()
+ {
+ return $this->reportingDimensionId;
+ }
+ /**
+ * @param string
+ */
+ public function setUriPattern($uriPattern)
+ {
+ $this->uriPattern = $uriPattern;
+ }
+ /**
+ * @return string
+ */
+ public function getUriPattern()
+ {
+ return $this->uriPattern;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Adsense\UrlChannel::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Adsense_UrlChannel');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics.php
new file mode 100644
index 000000000..ed47f5d07
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics.php
@@ -0,0 +1,120 @@
+
+ * Views and manages your Google Analytics data.
+ *
+ *
+ * For more information about this service, see the API
+ * Documentation
+ *
+ *
+ * @author Google, Inc.
+ */
+class Analytics extends \Google\Site_Kit_Dependencies\Google\Service
+{
+ /** View and manage your Google Analytics data. */
+ const ANALYTICS = "https://www.googleapis.com/auth/analytics";
+ /** Edit Google Analytics management entities. */
+ const ANALYTICS_EDIT = "https://www.googleapis.com/auth/analytics.edit";
+ /** Manage Google Analytics Account users by email address. */
+ const ANALYTICS_MANAGE_USERS = "https://www.googleapis.com/auth/analytics.manage.users";
+ /** View Google Analytics user permissions. */
+ const ANALYTICS_MANAGE_USERS_READONLY = "https://www.googleapis.com/auth/analytics.manage.users.readonly";
+ /** Create a new Google Analytics account along with its default property and view. */
+ const ANALYTICS_PROVISION = "https://www.googleapis.com/auth/analytics.provision";
+ /** View your Google Analytics data. */
+ const ANALYTICS_READONLY = "https://www.googleapis.com/auth/analytics.readonly";
+ /** Manage Google Analytics user deletion requests. */
+ const ANALYTICS_USER_DELETION = "https://www.googleapis.com/auth/analytics.user.deletion";
+ public $data_ga;
+ public $data_mcf;
+ public $data_realtime;
+ public $management_accountSummaries;
+ public $management_accountUserLinks;
+ public $management_accounts;
+ public $management_clientId;
+ public $management_customDataSources;
+ public $management_customDimensions;
+ public $management_customMetrics;
+ public $management_experiments;
+ public $management_filters;
+ public $management_goals;
+ public $management_profileFilterLinks;
+ public $management_profileUserLinks;
+ public $management_profiles;
+ public $management_remarketingAudience;
+ public $management_segments;
+ public $management_unsampledReports;
+ public $management_uploads;
+ public $management_webPropertyAdWordsLinks;
+ public $management_webproperties;
+ public $management_webpropertyUserLinks;
+ public $metadata_columns;
+ public $provisioning;
+ public $userDeletion_userDeletionRequest;
+ /**
+ * Constructs the internal representation of the Analytics service.
+ *
+ * @param Client|array $clientOrConfig The client used to deliver requests, or a
+ * config array to pass to a new Client instance.
+ * @param string $rootUrl The root URL used for requests to the service.
+ */
+ public function __construct($clientOrConfig = [], $rootUrl = null)
+ {
+ parent::__construct($clientOrConfig);
+ $this->rootUrl = $rootUrl ?: 'https://analytics.googleapis.com/';
+ $this->servicePath = 'analytics/v3/';
+ $this->batchPath = 'batch/analytics/v3';
+ $this->version = 'v3';
+ $this->serviceName = 'analytics';
+ $this->data_ga = new \Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\DataGa($this, $this->serviceName, 'ga', ['methods' => ['get' => ['path' => 'data/ga', 'httpMethod' => 'GET', 'parameters' => ['ids' => ['location' => 'query', 'type' => 'string', 'required' => \true], 'start-date' => ['location' => 'query', 'type' => 'string', 'required' => \true], 'end-date' => ['location' => 'query', 'type' => 'string', 'required' => \true], 'metrics' => ['location' => 'query', 'type' => 'string', 'required' => \true], 'dimensions' => ['location' => 'query', 'type' => 'string'], 'filters' => ['location' => 'query', 'type' => 'string'], 'include-empty-rows' => ['location' => 'query', 'type' => 'boolean'], 'max-results' => ['location' => 'query', 'type' => 'integer'], 'output' => ['location' => 'query', 'type' => 'string'], 'samplingLevel' => ['location' => 'query', 'type' => 'string'], 'segment' => ['location' => 'query', 'type' => 'string'], 'sort' => ['location' => 'query', 'type' => 'string'], 'start-index' => ['location' => 'query', 'type' => 'integer']]]]]);
+ $this->data_mcf = new \Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\DataMcf($this, $this->serviceName, 'mcf', ['methods' => ['get' => ['path' => 'data/mcf', 'httpMethod' => 'GET', 'parameters' => ['ids' => ['location' => 'query', 'type' => 'string', 'required' => \true], 'start-date' => ['location' => 'query', 'type' => 'string', 'required' => \true], 'end-date' => ['location' => 'query', 'type' => 'string', 'required' => \true], 'metrics' => ['location' => 'query', 'type' => 'string', 'required' => \true], 'dimensions' => ['location' => 'query', 'type' => 'string'], 'filters' => ['location' => 'query', 'type' => 'string'], 'max-results' => ['location' => 'query', 'type' => 'integer'], 'samplingLevel' => ['location' => 'query', 'type' => 'string'], 'sort' => ['location' => 'query', 'type' => 'string'], 'start-index' => ['location' => 'query', 'type' => 'integer']]]]]);
+ $this->data_realtime = new \Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\DataRealtime($this, $this->serviceName, 'realtime', ['methods' => ['get' => ['path' => 'data/realtime', 'httpMethod' => 'GET', 'parameters' => ['ids' => ['location' => 'query', 'type' => 'string', 'required' => \true], 'metrics' => ['location' => 'query', 'type' => 'string', 'required' => \true], 'dimensions' => ['location' => 'query', 'type' => 'string'], 'filters' => ['location' => 'query', 'type' => 'string'], 'max-results' => ['location' => 'query', 'type' => 'integer'], 'sort' => ['location' => 'query', 'type' => 'string']]]]]);
+ $this->management_accountSummaries = new \Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementAccountSummaries($this, $this->serviceName, 'accountSummaries', ['methods' => ['list' => ['path' => 'management/accountSummaries', 'httpMethod' => 'GET', 'parameters' => ['max-results' => ['location' => 'query', 'type' => 'integer'], 'start-index' => ['location' => 'query', 'type' => 'integer']]]]]);
+ $this->management_accountUserLinks = new \Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementAccountUserLinks($this, $this->serviceName, 'accountUserLinks', ['methods' => ['delete' => ['path' => 'management/accounts/{accountId}/entityUserLinks/{linkId}', 'httpMethod' => 'DELETE', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'linkId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'insert' => ['path' => 'management/accounts/{accountId}/entityUserLinks', 'httpMethod' => 'POST', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'management/accounts/{accountId}/entityUserLinks', 'httpMethod' => 'GET', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'max-results' => ['location' => 'query', 'type' => 'integer'], 'start-index' => ['location' => 'query', 'type' => 'integer']]], 'update' => ['path' => 'management/accounts/{accountId}/entityUserLinks/{linkId}', 'httpMethod' => 'PUT', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'linkId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]);
+ $this->management_accounts = new \Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementAccounts($this, $this->serviceName, 'accounts', ['methods' => ['list' => ['path' => 'management/accounts', 'httpMethod' => 'GET', 'parameters' => ['max-results' => ['location' => 'query', 'type' => 'integer'], 'start-index' => ['location' => 'query', 'type' => 'integer']]]]]);
+ $this->management_clientId = new \Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementClientId($this, $this->serviceName, 'clientId', ['methods' => ['hashClientId' => ['path' => 'management/clientId:hashClientId', 'httpMethod' => 'POST', 'parameters' => []]]]);
+ $this->management_customDataSources = new \Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementCustomDataSources($this, $this->serviceName, 'customDataSources', ['methods' => ['list' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/customDataSources', 'httpMethod' => 'GET', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'max-results' => ['location' => 'query', 'type' => 'integer'], 'start-index' => ['location' => 'query', 'type' => 'integer']]]]]);
+ $this->management_customDimensions = new \Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementCustomDimensions($this, $this->serviceName, 'customDimensions', ['methods' => ['get' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/customDimensions/{customDimensionId}', 'httpMethod' => 'GET', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'customDimensionId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'insert' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/customDimensions', 'httpMethod' => 'POST', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/customDimensions', 'httpMethod' => 'GET', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'max-results' => ['location' => 'query', 'type' => 'integer'], 'start-index' => ['location' => 'query', 'type' => 'integer']]], 'patch' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/customDimensions/{customDimensionId}', 'httpMethod' => 'PATCH', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'customDimensionId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'ignoreCustomDataSourceLinks' => ['location' => 'query', 'type' => 'boolean']]], 'update' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/customDimensions/{customDimensionId}', 'httpMethod' => 'PUT', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'customDimensionId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'ignoreCustomDataSourceLinks' => ['location' => 'query', 'type' => 'boolean']]]]]);
+ $this->management_customMetrics = new \Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementCustomMetrics($this, $this->serviceName, 'customMetrics', ['methods' => ['get' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/customMetrics/{customMetricId}', 'httpMethod' => 'GET', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'customMetricId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'insert' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/customMetrics', 'httpMethod' => 'POST', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/customMetrics', 'httpMethod' => 'GET', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'max-results' => ['location' => 'query', 'type' => 'integer'], 'start-index' => ['location' => 'query', 'type' => 'integer']]], 'patch' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/customMetrics/{customMetricId}', 'httpMethod' => 'PATCH', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'customMetricId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'ignoreCustomDataSourceLinks' => ['location' => 'query', 'type' => 'boolean']]], 'update' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/customMetrics/{customMetricId}', 'httpMethod' => 'PUT', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'customMetricId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'ignoreCustomDataSourceLinks' => ['location' => 'query', 'type' => 'boolean']]]]]);
+ $this->management_experiments = new \Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementExperiments($this, $this->serviceName, 'experiments', ['methods' => ['delete' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/experiments/{experimentId}', 'httpMethod' => 'DELETE', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'profileId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'experimentId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/experiments/{experimentId}', 'httpMethod' => 'GET', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'profileId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'experimentId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'insert' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/experiments', 'httpMethod' => 'POST', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'profileId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/experiments', 'httpMethod' => 'GET', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'profileId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'max-results' => ['location' => 'query', 'type' => 'integer'], 'start-index' => ['location' => 'query', 'type' => 'integer']]], 'patch' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/experiments/{experimentId}', 'httpMethod' => 'PATCH', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'profileId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'experimentId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'update' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/experiments/{experimentId}', 'httpMethod' => 'PUT', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'profileId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'experimentId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]);
+ $this->management_filters = new \Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementFilters($this, $this->serviceName, 'filters', ['methods' => ['delete' => ['path' => 'management/accounts/{accountId}/filters/{filterId}', 'httpMethod' => 'DELETE', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'filterId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'management/accounts/{accountId}/filters/{filterId}', 'httpMethod' => 'GET', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'filterId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'insert' => ['path' => 'management/accounts/{accountId}/filters', 'httpMethod' => 'POST', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'management/accounts/{accountId}/filters', 'httpMethod' => 'GET', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'max-results' => ['location' => 'query', 'type' => 'integer'], 'start-index' => ['location' => 'query', 'type' => 'integer']]], 'patch' => ['path' => 'management/accounts/{accountId}/filters/{filterId}', 'httpMethod' => 'PATCH', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'filterId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'update' => ['path' => 'management/accounts/{accountId}/filters/{filterId}', 'httpMethod' => 'PUT', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'filterId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]);
+ $this->management_goals = new \Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementGoals($this, $this->serviceName, 'goals', ['methods' => ['get' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/goals/{goalId}', 'httpMethod' => 'GET', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'profileId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'goalId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'insert' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/goals', 'httpMethod' => 'POST', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'profileId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/goals', 'httpMethod' => 'GET', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'profileId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'max-results' => ['location' => 'query', 'type' => 'integer'], 'start-index' => ['location' => 'query', 'type' => 'integer']]], 'patch' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/goals/{goalId}', 'httpMethod' => 'PATCH', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'profileId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'goalId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'update' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/goals/{goalId}', 'httpMethod' => 'PUT', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'profileId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'goalId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]);
+ $this->management_profileFilterLinks = new \Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementProfileFilterLinks($this, $this->serviceName, 'profileFilterLinks', ['methods' => ['delete' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/profileFilterLinks/{linkId}', 'httpMethod' => 'DELETE', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'profileId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'linkId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/profileFilterLinks/{linkId}', 'httpMethod' => 'GET', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'profileId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'linkId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'insert' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/profileFilterLinks', 'httpMethod' => 'POST', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'profileId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/profileFilterLinks', 'httpMethod' => 'GET', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'profileId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'max-results' => ['location' => 'query', 'type' => 'integer'], 'start-index' => ['location' => 'query', 'type' => 'integer']]], 'patch' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/profileFilterLinks/{linkId}', 'httpMethod' => 'PATCH', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'profileId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'linkId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'update' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/profileFilterLinks/{linkId}', 'httpMethod' => 'PUT', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'profileId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'linkId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]);
+ $this->management_profileUserLinks = new \Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementProfileUserLinks($this, $this->serviceName, 'profileUserLinks', ['methods' => ['delete' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/entityUserLinks/{linkId}', 'httpMethod' => 'DELETE', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'profileId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'linkId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'insert' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/entityUserLinks', 'httpMethod' => 'POST', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'profileId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/entityUserLinks', 'httpMethod' => 'GET', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'profileId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'max-results' => ['location' => 'query', 'type' => 'integer'], 'start-index' => ['location' => 'query', 'type' => 'integer']]], 'update' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/entityUserLinks/{linkId}', 'httpMethod' => 'PUT', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'profileId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'linkId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]);
+ $this->management_profiles = new \Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementProfiles($this, $this->serviceName, 'profiles', ['methods' => ['delete' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}', 'httpMethod' => 'DELETE', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'profileId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}', 'httpMethod' => 'GET', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'profileId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'insert' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles', 'httpMethod' => 'POST', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles', 'httpMethod' => 'GET', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'max-results' => ['location' => 'query', 'type' => 'integer'], 'start-index' => ['location' => 'query', 'type' => 'integer']]], 'patch' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}', 'httpMethod' => 'PATCH', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'profileId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'update' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}', 'httpMethod' => 'PUT', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'profileId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]);
+ $this->management_remarketingAudience = new \Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementRemarketingAudience($this, $this->serviceName, 'remarketingAudience', ['methods' => ['delete' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/remarketingAudiences/{remarketingAudienceId}', 'httpMethod' => 'DELETE', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'remarketingAudienceId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/remarketingAudiences/{remarketingAudienceId}', 'httpMethod' => 'GET', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'remarketingAudienceId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'insert' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/remarketingAudiences', 'httpMethod' => 'POST', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/remarketingAudiences', 'httpMethod' => 'GET', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'max-results' => ['location' => 'query', 'type' => 'integer'], 'start-index' => ['location' => 'query', 'type' => 'integer'], 'type' => ['location' => 'query', 'type' => 'string']]], 'patch' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/remarketingAudiences/{remarketingAudienceId}', 'httpMethod' => 'PATCH', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'remarketingAudienceId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'update' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/remarketingAudiences/{remarketingAudienceId}', 'httpMethod' => 'PUT', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'remarketingAudienceId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]);
+ $this->management_segments = new \Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementSegments($this, $this->serviceName, 'segments', ['methods' => ['list' => ['path' => 'management/segments', 'httpMethod' => 'GET', 'parameters' => ['max-results' => ['location' => 'query', 'type' => 'integer'], 'start-index' => ['location' => 'query', 'type' => 'integer']]]]]);
+ $this->management_unsampledReports = new \Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementUnsampledReports($this, $this->serviceName, 'unsampledReports', ['methods' => ['delete' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/unsampledReports/{unsampledReportId}', 'httpMethod' => 'DELETE', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'profileId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'unsampledReportId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/unsampledReports/{unsampledReportId}', 'httpMethod' => 'GET', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'profileId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'unsampledReportId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'insert' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/unsampledReports', 'httpMethod' => 'POST', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'profileId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/unsampledReports', 'httpMethod' => 'GET', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'profileId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'max-results' => ['location' => 'query', 'type' => 'integer'], 'start-index' => ['location' => 'query', 'type' => 'integer']]]]]);
+ $this->management_uploads = new \Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementUploads($this, $this->serviceName, 'uploads', ['methods' => ['deleteUploadData' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/customDataSources/{customDataSourceId}/deleteUploadData', 'httpMethod' => 'POST', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'customDataSourceId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/customDataSources/{customDataSourceId}/uploads/{uploadId}', 'httpMethod' => 'GET', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'customDataSourceId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'uploadId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/customDataSources/{customDataSourceId}/uploads', 'httpMethod' => 'GET', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'customDataSourceId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'max-results' => ['location' => 'query', 'type' => 'integer'], 'start-index' => ['location' => 'query', 'type' => 'integer']]], 'uploadData' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/customDataSources/{customDataSourceId}/uploads', 'httpMethod' => 'POST', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'customDataSourceId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]);
+ $this->management_webPropertyAdWordsLinks = new \Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementWebPropertyAdWordsLinks($this, $this->serviceName, 'webPropertyAdWordsLinks', ['methods' => ['delete' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/entityAdWordsLinks/{webPropertyAdWordsLinkId}', 'httpMethod' => 'DELETE', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyAdWordsLinkId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/entityAdWordsLinks/{webPropertyAdWordsLinkId}', 'httpMethod' => 'GET', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyAdWordsLinkId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'insert' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/entityAdWordsLinks', 'httpMethod' => 'POST', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/entityAdWordsLinks', 'httpMethod' => 'GET', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'max-results' => ['location' => 'query', 'type' => 'integer'], 'start-index' => ['location' => 'query', 'type' => 'integer']]], 'patch' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/entityAdWordsLinks/{webPropertyAdWordsLinkId}', 'httpMethod' => 'PATCH', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyAdWordsLinkId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'update' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/entityAdWordsLinks/{webPropertyAdWordsLinkId}', 'httpMethod' => 'PUT', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyAdWordsLinkId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]);
+ $this->management_webproperties = new \Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementWebproperties($this, $this->serviceName, 'webproperties', ['methods' => ['get' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}', 'httpMethod' => 'GET', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'insert' => ['path' => 'management/accounts/{accountId}/webproperties', 'httpMethod' => 'POST', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'management/accounts/{accountId}/webproperties', 'httpMethod' => 'GET', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'max-results' => ['location' => 'query', 'type' => 'integer'], 'start-index' => ['location' => 'query', 'type' => 'integer']]], 'patch' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}', 'httpMethod' => 'PATCH', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'update' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}', 'httpMethod' => 'PUT', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]);
+ $this->management_webpropertyUserLinks = new \Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementWebpropertyUserLinks($this, $this->serviceName, 'webpropertyUserLinks', ['methods' => ['delete' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/entityUserLinks/{linkId}', 'httpMethod' => 'DELETE', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'linkId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'insert' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/entityUserLinks', 'httpMethod' => 'POST', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/entityUserLinks', 'httpMethod' => 'GET', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'max-results' => ['location' => 'query', 'type' => 'integer'], 'start-index' => ['location' => 'query', 'type' => 'integer']]], 'update' => ['path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/entityUserLinks/{linkId}', 'httpMethod' => 'PUT', 'parameters' => ['accountId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'webPropertyId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'linkId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]);
+ $this->metadata_columns = new \Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\MetadataColumns($this, $this->serviceName, 'columns', ['methods' => ['list' => ['path' => 'metadata/{reportType}/columns', 'httpMethod' => 'GET', 'parameters' => ['reportType' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]);
+ $this->provisioning = new \Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\Provisioning($this, $this->serviceName, 'provisioning', ['methods' => ['createAccountTicket' => ['path' => 'provisioning/createAccountTicket', 'httpMethod' => 'POST', 'parameters' => []], 'createAccountTree' => ['path' => 'provisioning/createAccountTree', 'httpMethod' => 'POST', 'parameters' => []]]]);
+ $this->userDeletion_userDeletionRequest = new \Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\UserDeletionUserDeletionRequest($this, $this->serviceName, 'userDeletionRequest', ['methods' => ['upsert' => ['path' => 'userDeletion/userDeletionRequests:upsert', 'httpMethod' => 'POST', 'parameters' => []]]]);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Account.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Account.php
new file mode 100644
index 000000000..0f7ce20be
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Account.php
@@ -0,0 +1,182 @@
+childLink = $childLink;
+ }
+ /**
+ * @return AccountChildLink
+ */
+ public function getChildLink()
+ {
+ return $this->childLink;
+ }
+ /**
+ * @param string
+ */
+ public function setCreated($created)
+ {
+ $this->created = $created;
+ }
+ /**
+ * @return string
+ */
+ public function getCreated()
+ {
+ return $this->created;
+ }
+ /**
+ * @param string
+ */
+ public function setId($id)
+ {
+ $this->id = $id;
+ }
+ /**
+ * @return string
+ */
+ public function getId()
+ {
+ return $this->id;
+ }
+ /**
+ * @param string
+ */
+ public function setKind($kind)
+ {
+ $this->kind = $kind;
+ }
+ /**
+ * @return string
+ */
+ public function getKind()
+ {
+ return $this->kind;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param AccountPermissions
+ */
+ public function setPermissions(\Google\Site_Kit_Dependencies\Google\Service\Analytics\AccountPermissions $permissions)
+ {
+ $this->permissions = $permissions;
+ }
+ /**
+ * @return AccountPermissions
+ */
+ public function getPermissions()
+ {
+ return $this->permissions;
+ }
+ /**
+ * @param string
+ */
+ public function setSelfLink($selfLink)
+ {
+ $this->selfLink = $selfLink;
+ }
+ /**
+ * @return string
+ */
+ public function getSelfLink()
+ {
+ return $this->selfLink;
+ }
+ /**
+ * @param bool
+ */
+ public function setStarred($starred)
+ {
+ $this->starred = $starred;
+ }
+ /**
+ * @return bool
+ */
+ public function getStarred()
+ {
+ return $this->starred;
+ }
+ /**
+ * @param string
+ */
+ public function setUpdated($updated)
+ {
+ $this->updated = $updated;
+ }
+ /**
+ * @return string
+ */
+ public function getUpdated()
+ {
+ return $this->updated;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Account::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Account');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/AccountChildLink.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/AccountChildLink.php
new file mode 100644
index 000000000..73c6dbbeb
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/AccountChildLink.php
@@ -0,0 +1,60 @@
+href = $href;
+ }
+ /**
+ * @return string
+ */
+ public function getHref()
+ {
+ return $this->href;
+ }
+ /**
+ * @param string
+ */
+ public function setType($type)
+ {
+ $this->type = $type;
+ }
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\AccountChildLink::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_AccountChildLink');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/AccountPermissions.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/AccountPermissions.php
new file mode 100644
index 000000000..e25c0bb70
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/AccountPermissions.php
@@ -0,0 +1,43 @@
+effective = $effective;
+ }
+ /**
+ * @return string[]
+ */
+ public function getEffective()
+ {
+ return $this->effective;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\AccountPermissions::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_AccountPermissions');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/AccountRef.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/AccountRef.php
new file mode 100644
index 000000000..a1871c2d9
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/AccountRef.php
@@ -0,0 +1,96 @@
+href = $href;
+ }
+ /**
+ * @return string
+ */
+ public function getHref()
+ {
+ return $this->href;
+ }
+ /**
+ * @param string
+ */
+ public function setId($id)
+ {
+ $this->id = $id;
+ }
+ /**
+ * @return string
+ */
+ public function getId()
+ {
+ return $this->id;
+ }
+ /**
+ * @param string
+ */
+ public function setKind($kind)
+ {
+ $this->kind = $kind;
+ }
+ /**
+ * @return string
+ */
+ public function getKind()
+ {
+ return $this->kind;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\AccountRef::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_AccountRef');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/AccountSummaries.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/AccountSummaries.php
new file mode 100644
index 000000000..8dd37b197
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/AccountSummaries.php
@@ -0,0 +1,167 @@
+items = $items;
+ }
+ /**
+ * @return AccountSummary[]
+ */
+ public function getItems()
+ {
+ return $this->items;
+ }
+ /**
+ * @param int
+ */
+ public function setItemsPerPage($itemsPerPage)
+ {
+ $this->itemsPerPage = $itemsPerPage;
+ }
+ /**
+ * @return int
+ */
+ public function getItemsPerPage()
+ {
+ return $this->itemsPerPage;
+ }
+ /**
+ * @param string
+ */
+ public function setKind($kind)
+ {
+ $this->kind = $kind;
+ }
+ /**
+ * @return string
+ */
+ public function getKind()
+ {
+ return $this->kind;
+ }
+ /**
+ * @param string
+ */
+ public function setNextLink($nextLink)
+ {
+ $this->nextLink = $nextLink;
+ }
+ /**
+ * @return string
+ */
+ public function getNextLink()
+ {
+ return $this->nextLink;
+ }
+ /**
+ * @param string
+ */
+ public function setPreviousLink($previousLink)
+ {
+ $this->previousLink = $previousLink;
+ }
+ /**
+ * @return string
+ */
+ public function getPreviousLink()
+ {
+ return $this->previousLink;
+ }
+ /**
+ * @param int
+ */
+ public function setStartIndex($startIndex)
+ {
+ $this->startIndex = $startIndex;
+ }
+ /**
+ * @return int
+ */
+ public function getStartIndex()
+ {
+ return $this->startIndex;
+ }
+ /**
+ * @param int
+ */
+ public function setTotalResults($totalResults)
+ {
+ $this->totalResults = $totalResults;
+ }
+ /**
+ * @return int
+ */
+ public function getTotalResults()
+ {
+ return $this->totalResults;
+ }
+ /**
+ * @param string
+ */
+ public function setUsername($username)
+ {
+ $this->username = $username;
+ }
+ /**
+ * @return string
+ */
+ public function getUsername()
+ {
+ return $this->username;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\AccountSummaries::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_AccountSummaries');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/AccountSummary.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/AccountSummary.php
new file mode 100644
index 000000000..0a5efdb52
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/AccountSummary.php
@@ -0,0 +1,113 @@
+id = $id;
+ }
+ /**
+ * @return string
+ */
+ public function getId()
+ {
+ return $this->id;
+ }
+ /**
+ * @param string
+ */
+ public function setKind($kind)
+ {
+ $this->kind = $kind;
+ }
+ /**
+ * @return string
+ */
+ public function getKind()
+ {
+ return $this->kind;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param bool
+ */
+ public function setStarred($starred)
+ {
+ $this->starred = $starred;
+ }
+ /**
+ * @return bool
+ */
+ public function getStarred()
+ {
+ return $this->starred;
+ }
+ /**
+ * @param WebPropertySummary[]
+ */
+ public function setWebProperties($webProperties)
+ {
+ $this->webProperties = $webProperties;
+ }
+ /**
+ * @return WebPropertySummary[]
+ */
+ public function getWebProperties()
+ {
+ return $this->webProperties;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\AccountSummary::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_AccountSummary');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/AccountTicket.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/AccountTicket.php
new file mode 100644
index 000000000..7542b242b
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/AccountTicket.php
@@ -0,0 +1,126 @@
+account = $account;
+ }
+ /**
+ * @return Account
+ */
+ public function getAccount()
+ {
+ return $this->account;
+ }
+ /**
+ * @param string
+ */
+ public function setId($id)
+ {
+ $this->id = $id;
+ }
+ /**
+ * @return string
+ */
+ public function getId()
+ {
+ return $this->id;
+ }
+ /**
+ * @param string
+ */
+ public function setKind($kind)
+ {
+ $this->kind = $kind;
+ }
+ /**
+ * @return string
+ */
+ public function getKind()
+ {
+ return $this->kind;
+ }
+ /**
+ * @param Profile
+ */
+ public function setProfile(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Profile $profile)
+ {
+ $this->profile = $profile;
+ }
+ /**
+ * @return Profile
+ */
+ public function getProfile()
+ {
+ return $this->profile;
+ }
+ /**
+ * @param string
+ */
+ public function setRedirectUri($redirectUri)
+ {
+ $this->redirectUri = $redirectUri;
+ }
+ /**
+ * @return string
+ */
+ public function getRedirectUri()
+ {
+ return $this->redirectUri;
+ }
+ /**
+ * @param Webproperty
+ */
+ public function setWebproperty(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Webproperty $webproperty)
+ {
+ $this->webproperty = $webproperty;
+ }
+ /**
+ * @return Webproperty
+ */
+ public function getWebproperty()
+ {
+ return $this->webproperty;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\AccountTicket::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_AccountTicket');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/AccountTreeRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/AccountTreeRequest.php
new file mode 100644
index 000000000..7cfd83b5e
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/AccountTreeRequest.php
@@ -0,0 +1,132 @@
+accountName = $accountName;
+ }
+ /**
+ * @return string
+ */
+ public function getAccountName()
+ {
+ return $this->accountName;
+ }
+ /**
+ * @param string
+ */
+ public function setKind($kind)
+ {
+ $this->kind = $kind;
+ }
+ /**
+ * @return string
+ */
+ public function getKind()
+ {
+ return $this->kind;
+ }
+ /**
+ * @param string
+ */
+ public function setProfileName($profileName)
+ {
+ $this->profileName = $profileName;
+ }
+ /**
+ * @return string
+ */
+ public function getProfileName()
+ {
+ return $this->profileName;
+ }
+ /**
+ * @param string
+ */
+ public function setTimezone($timezone)
+ {
+ $this->timezone = $timezone;
+ }
+ /**
+ * @return string
+ */
+ public function getTimezone()
+ {
+ return $this->timezone;
+ }
+ /**
+ * @param string
+ */
+ public function setWebpropertyName($webpropertyName)
+ {
+ $this->webpropertyName = $webpropertyName;
+ }
+ /**
+ * @return string
+ */
+ public function getWebpropertyName()
+ {
+ return $this->webpropertyName;
+ }
+ /**
+ * @param string
+ */
+ public function setWebsiteUrl($websiteUrl)
+ {
+ $this->websiteUrl = $websiteUrl;
+ }
+ /**
+ * @return string
+ */
+ public function getWebsiteUrl()
+ {
+ return $this->websiteUrl;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\AccountTreeRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_AccountTreeRequest');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/AccountTreeResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/AccountTreeResponse.php
new file mode 100644
index 000000000..91fc9cd48
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/AccountTreeResponse.php
@@ -0,0 +1,90 @@
+account = $account;
+ }
+ /**
+ * @return Account
+ */
+ public function getAccount()
+ {
+ return $this->account;
+ }
+ /**
+ * @param string
+ */
+ public function setKind($kind)
+ {
+ $this->kind = $kind;
+ }
+ /**
+ * @return string
+ */
+ public function getKind()
+ {
+ return $this->kind;
+ }
+ /**
+ * @param Profile
+ */
+ public function setProfile(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Profile $profile)
+ {
+ $this->profile = $profile;
+ }
+ /**
+ * @return Profile
+ */
+ public function getProfile()
+ {
+ return $this->profile;
+ }
+ /**
+ * @param Webproperty
+ */
+ public function setWebproperty(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Webproperty $webproperty)
+ {
+ $this->webproperty = $webproperty;
+ }
+ /**
+ * @return Webproperty
+ */
+ public function getWebproperty()
+ {
+ return $this->webproperty;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\AccountTreeResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_AccountTreeResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Accounts.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Accounts.php
new file mode 100644
index 000000000..1d6933c88
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Accounts.php
@@ -0,0 +1,167 @@
+items = $items;
+ }
+ /**
+ * @return Account[]
+ */
+ public function getItems()
+ {
+ return $this->items;
+ }
+ /**
+ * @param int
+ */
+ public function setItemsPerPage($itemsPerPage)
+ {
+ $this->itemsPerPage = $itemsPerPage;
+ }
+ /**
+ * @return int
+ */
+ public function getItemsPerPage()
+ {
+ return $this->itemsPerPage;
+ }
+ /**
+ * @param string
+ */
+ public function setKind($kind)
+ {
+ $this->kind = $kind;
+ }
+ /**
+ * @return string
+ */
+ public function getKind()
+ {
+ return $this->kind;
+ }
+ /**
+ * @param string
+ */
+ public function setNextLink($nextLink)
+ {
+ $this->nextLink = $nextLink;
+ }
+ /**
+ * @return string
+ */
+ public function getNextLink()
+ {
+ return $this->nextLink;
+ }
+ /**
+ * @param string
+ */
+ public function setPreviousLink($previousLink)
+ {
+ $this->previousLink = $previousLink;
+ }
+ /**
+ * @return string
+ */
+ public function getPreviousLink()
+ {
+ return $this->previousLink;
+ }
+ /**
+ * @param int
+ */
+ public function setStartIndex($startIndex)
+ {
+ $this->startIndex = $startIndex;
+ }
+ /**
+ * @return int
+ */
+ public function getStartIndex()
+ {
+ return $this->startIndex;
+ }
+ /**
+ * @param int
+ */
+ public function setTotalResults($totalResults)
+ {
+ $this->totalResults = $totalResults;
+ }
+ /**
+ * @return int
+ */
+ public function getTotalResults()
+ {
+ return $this->totalResults;
+ }
+ /**
+ * @param string
+ */
+ public function setUsername($username)
+ {
+ $this->username = $username;
+ }
+ /**
+ * @return string
+ */
+ public function getUsername()
+ {
+ return $this->username;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Accounts::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Accounts');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/AdWordsAccount.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/AdWordsAccount.php
new file mode 100644
index 000000000..4107c43f4
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/AdWordsAccount.php
@@ -0,0 +1,78 @@
+autoTaggingEnabled = $autoTaggingEnabled;
+ }
+ /**
+ * @return bool
+ */
+ public function getAutoTaggingEnabled()
+ {
+ return $this->autoTaggingEnabled;
+ }
+ /**
+ * @param string
+ */
+ public function setCustomerId($customerId)
+ {
+ $this->customerId = $customerId;
+ }
+ /**
+ * @return string
+ */
+ public function getCustomerId()
+ {
+ return $this->customerId;
+ }
+ /**
+ * @param string
+ */
+ public function setKind($kind)
+ {
+ $this->kind = $kind;
+ }
+ /**
+ * @return string
+ */
+ public function getKind()
+ {
+ return $this->kind;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\AdWordsAccount::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_AdWordsAccount');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/AnalyticsDataimportDeleteUploadDataRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/AnalyticsDataimportDeleteUploadDataRequest.php
new file mode 100644
index 000000000..248d304d1
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/AnalyticsDataimportDeleteUploadDataRequest.php
@@ -0,0 +1,43 @@
+customDataImportUids = $customDataImportUids;
+ }
+ /**
+ * @return string[]
+ */
+ public function getCustomDataImportUids()
+ {
+ return $this->customDataImportUids;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\AnalyticsDataimportDeleteUploadDataRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_AnalyticsDataimportDeleteUploadDataRequest');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Column.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Column.php
new file mode 100644
index 000000000..2ad966e66
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Column.php
@@ -0,0 +1,78 @@
+attributes = $attributes;
+ }
+ /**
+ * @return string[]
+ */
+ public function getAttributes()
+ {
+ return $this->attributes;
+ }
+ /**
+ * @param string
+ */
+ public function setId($id)
+ {
+ $this->id = $id;
+ }
+ /**
+ * @return string
+ */
+ public function getId()
+ {
+ return $this->id;
+ }
+ /**
+ * @param string
+ */
+ public function setKind($kind)
+ {
+ $this->kind = $kind;
+ }
+ /**
+ * @return string
+ */
+ public function getKind()
+ {
+ return $this->kind;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Column::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Column');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Columns.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Columns.php
new file mode 100644
index 000000000..e324981cd
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Columns.php
@@ -0,0 +1,113 @@
+attributeNames = $attributeNames;
+ }
+ /**
+ * @return string[]
+ */
+ public function getAttributeNames()
+ {
+ return $this->attributeNames;
+ }
+ /**
+ * @param string
+ */
+ public function setEtag($etag)
+ {
+ $this->etag = $etag;
+ }
+ /**
+ * @return string
+ */
+ public function getEtag()
+ {
+ return $this->etag;
+ }
+ /**
+ * @param Column[]
+ */
+ public function setItems($items)
+ {
+ $this->items = $items;
+ }
+ /**
+ * @return Column[]
+ */
+ public function getItems()
+ {
+ return $this->items;
+ }
+ /**
+ * @param string
+ */
+ public function setKind($kind)
+ {
+ $this->kind = $kind;
+ }
+ /**
+ * @return string
+ */
+ public function getKind()
+ {
+ return $this->kind;
+ }
+ /**
+ * @param int
+ */
+ public function setTotalResults($totalResults)
+ {
+ $this->totalResults = $totalResults;
+ }
+ /**
+ * @return int
+ */
+ public function getTotalResults()
+ {
+ return $this->totalResults;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Columns::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Columns');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/CustomDataSource.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/CustomDataSource.php
new file mode 100644
index 000000000..de1241945
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/CustomDataSource.php
@@ -0,0 +1,309 @@
+accountId = $accountId;
+ }
+ /**
+ * @return string
+ */
+ public function getAccountId()
+ {
+ return $this->accountId;
+ }
+ /**
+ * @param CustomDataSourceChildLink
+ */
+ public function setChildLink(\Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomDataSourceChildLink $childLink)
+ {
+ $this->childLink = $childLink;
+ }
+ /**
+ * @return CustomDataSourceChildLink
+ */
+ public function getChildLink()
+ {
+ return $this->childLink;
+ }
+ /**
+ * @param string
+ */
+ public function setCreated($created)
+ {
+ $this->created = $created;
+ }
+ /**
+ * @return string
+ */
+ public function getCreated()
+ {
+ return $this->created;
+ }
+ /**
+ * @param string
+ */
+ public function setDescription($description)
+ {
+ $this->description = $description;
+ }
+ /**
+ * @return string
+ */
+ public function getDescription()
+ {
+ return $this->description;
+ }
+ /**
+ * @param string
+ */
+ public function setId($id)
+ {
+ $this->id = $id;
+ }
+ /**
+ * @return string
+ */
+ public function getId()
+ {
+ return $this->id;
+ }
+ /**
+ * @param string
+ */
+ public function setImportBehavior($importBehavior)
+ {
+ $this->importBehavior = $importBehavior;
+ }
+ /**
+ * @return string
+ */
+ public function getImportBehavior()
+ {
+ return $this->importBehavior;
+ }
+ /**
+ * @param string
+ */
+ public function setKind($kind)
+ {
+ $this->kind = $kind;
+ }
+ /**
+ * @return string
+ */
+ public function getKind()
+ {
+ return $this->kind;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param CustomDataSourceParentLink
+ */
+ public function setParentLink(\Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomDataSourceParentLink $parentLink)
+ {
+ $this->parentLink = $parentLink;
+ }
+ /**
+ * @return CustomDataSourceParentLink
+ */
+ public function getParentLink()
+ {
+ return $this->parentLink;
+ }
+ /**
+ * @param string[]
+ */
+ public function setProfilesLinked($profilesLinked)
+ {
+ $this->profilesLinked = $profilesLinked;
+ }
+ /**
+ * @return string[]
+ */
+ public function getProfilesLinked()
+ {
+ return $this->profilesLinked;
+ }
+ /**
+ * @param string[]
+ */
+ public function setSchema($schema)
+ {
+ $this->schema = $schema;
+ }
+ /**
+ * @return string[]
+ */
+ public function getSchema()
+ {
+ return $this->schema;
+ }
+ /**
+ * @param string
+ */
+ public function setSelfLink($selfLink)
+ {
+ $this->selfLink = $selfLink;
+ }
+ /**
+ * @return string
+ */
+ public function getSelfLink()
+ {
+ return $this->selfLink;
+ }
+ /**
+ * @param string
+ */
+ public function setType($type)
+ {
+ $this->type = $type;
+ }
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+ /**
+ * @param string
+ */
+ public function setUpdated($updated)
+ {
+ $this->updated = $updated;
+ }
+ /**
+ * @return string
+ */
+ public function getUpdated()
+ {
+ return $this->updated;
+ }
+ /**
+ * @param string
+ */
+ public function setUploadType($uploadType)
+ {
+ $this->uploadType = $uploadType;
+ }
+ /**
+ * @return string
+ */
+ public function getUploadType()
+ {
+ return $this->uploadType;
+ }
+ /**
+ * @param string
+ */
+ public function setWebPropertyId($webPropertyId)
+ {
+ $this->webPropertyId = $webPropertyId;
+ }
+ /**
+ * @return string
+ */
+ public function getWebPropertyId()
+ {
+ return $this->webPropertyId;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomDataSource::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_CustomDataSource');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/CustomDataSourceChildLink.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/CustomDataSourceChildLink.php
new file mode 100644
index 000000000..5f65d269a
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/CustomDataSourceChildLink.php
@@ -0,0 +1,60 @@
+href = $href;
+ }
+ /**
+ * @return string
+ */
+ public function getHref()
+ {
+ return $this->href;
+ }
+ /**
+ * @param string
+ */
+ public function setType($type)
+ {
+ $this->type = $type;
+ }
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomDataSourceChildLink::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_CustomDataSourceChildLink');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/CustomDataSourceParentLink.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/CustomDataSourceParentLink.php
new file mode 100644
index 000000000..e0272a177
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/CustomDataSourceParentLink.php
@@ -0,0 +1,60 @@
+href = $href;
+ }
+ /**
+ * @return string
+ */
+ public function getHref()
+ {
+ return $this->href;
+ }
+ /**
+ * @param string
+ */
+ public function setType($type)
+ {
+ $this->type = $type;
+ }
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomDataSourceParentLink::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_CustomDataSourceParentLink');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/CustomDataSources.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/CustomDataSources.php
new file mode 100644
index 000000000..a20078cc2
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/CustomDataSources.php
@@ -0,0 +1,167 @@
+items = $items;
+ }
+ /**
+ * @return CustomDataSource[]
+ */
+ public function getItems()
+ {
+ return $this->items;
+ }
+ /**
+ * @param int
+ */
+ public function setItemsPerPage($itemsPerPage)
+ {
+ $this->itemsPerPage = $itemsPerPage;
+ }
+ /**
+ * @return int
+ */
+ public function getItemsPerPage()
+ {
+ return $this->itemsPerPage;
+ }
+ /**
+ * @param string
+ */
+ public function setKind($kind)
+ {
+ $this->kind = $kind;
+ }
+ /**
+ * @return string
+ */
+ public function getKind()
+ {
+ return $this->kind;
+ }
+ /**
+ * @param string
+ */
+ public function setNextLink($nextLink)
+ {
+ $this->nextLink = $nextLink;
+ }
+ /**
+ * @return string
+ */
+ public function getNextLink()
+ {
+ return $this->nextLink;
+ }
+ /**
+ * @param string
+ */
+ public function setPreviousLink($previousLink)
+ {
+ $this->previousLink = $previousLink;
+ }
+ /**
+ * @return string
+ */
+ public function getPreviousLink()
+ {
+ return $this->previousLink;
+ }
+ /**
+ * @param int
+ */
+ public function setStartIndex($startIndex)
+ {
+ $this->startIndex = $startIndex;
+ }
+ /**
+ * @return int
+ */
+ public function getStartIndex()
+ {
+ return $this->startIndex;
+ }
+ /**
+ * @param int
+ */
+ public function setTotalResults($totalResults)
+ {
+ $this->totalResults = $totalResults;
+ }
+ /**
+ * @return int
+ */
+ public function getTotalResults()
+ {
+ return $this->totalResults;
+ }
+ /**
+ * @param string
+ */
+ public function setUsername($username)
+ {
+ $this->username = $username;
+ }
+ /**
+ * @return string
+ */
+ public function getUsername()
+ {
+ return $this->username;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomDataSources::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_CustomDataSources');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/CustomDimension.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/CustomDimension.php
new file mode 100644
index 000000000..52e4d3b70
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/CustomDimension.php
@@ -0,0 +1,238 @@
+accountId = $accountId;
+ }
+ /**
+ * @return string
+ */
+ public function getAccountId()
+ {
+ return $this->accountId;
+ }
+ /**
+ * @param bool
+ */
+ public function setActive($active)
+ {
+ $this->active = $active;
+ }
+ /**
+ * @return bool
+ */
+ public function getActive()
+ {
+ return $this->active;
+ }
+ /**
+ * @param string
+ */
+ public function setCreated($created)
+ {
+ $this->created = $created;
+ }
+ /**
+ * @return string
+ */
+ public function getCreated()
+ {
+ return $this->created;
+ }
+ /**
+ * @param string
+ */
+ public function setId($id)
+ {
+ $this->id = $id;
+ }
+ /**
+ * @return string
+ */
+ public function getId()
+ {
+ return $this->id;
+ }
+ /**
+ * @param int
+ */
+ public function setIndex($index)
+ {
+ $this->index = $index;
+ }
+ /**
+ * @return int
+ */
+ public function getIndex()
+ {
+ return $this->index;
+ }
+ /**
+ * @param string
+ */
+ public function setKind($kind)
+ {
+ $this->kind = $kind;
+ }
+ /**
+ * @return string
+ */
+ public function getKind()
+ {
+ return $this->kind;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param CustomDimensionParentLink
+ */
+ public function setParentLink(\Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomDimensionParentLink $parentLink)
+ {
+ $this->parentLink = $parentLink;
+ }
+ /**
+ * @return CustomDimensionParentLink
+ */
+ public function getParentLink()
+ {
+ return $this->parentLink;
+ }
+ /**
+ * @param string
+ */
+ public function setScope($scope)
+ {
+ $this->scope = $scope;
+ }
+ /**
+ * @return string
+ */
+ public function getScope()
+ {
+ return $this->scope;
+ }
+ /**
+ * @param string
+ */
+ public function setSelfLink($selfLink)
+ {
+ $this->selfLink = $selfLink;
+ }
+ /**
+ * @return string
+ */
+ public function getSelfLink()
+ {
+ return $this->selfLink;
+ }
+ /**
+ * @param string
+ */
+ public function setUpdated($updated)
+ {
+ $this->updated = $updated;
+ }
+ /**
+ * @return string
+ */
+ public function getUpdated()
+ {
+ return $this->updated;
+ }
+ /**
+ * @param string
+ */
+ public function setWebPropertyId($webPropertyId)
+ {
+ $this->webPropertyId = $webPropertyId;
+ }
+ /**
+ * @return string
+ */
+ public function getWebPropertyId()
+ {
+ return $this->webPropertyId;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomDimension::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_CustomDimension');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/CustomDimensionParentLink.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/CustomDimensionParentLink.php
new file mode 100644
index 000000000..2bce1ffc9
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/CustomDimensionParentLink.php
@@ -0,0 +1,60 @@
+href = $href;
+ }
+ /**
+ * @return string
+ */
+ public function getHref()
+ {
+ return $this->href;
+ }
+ /**
+ * @param string
+ */
+ public function setType($type)
+ {
+ $this->type = $type;
+ }
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomDimensionParentLink::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_CustomDimensionParentLink');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/CustomDimensions.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/CustomDimensions.php
new file mode 100644
index 000000000..b94f9a6c6
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/CustomDimensions.php
@@ -0,0 +1,167 @@
+items = $items;
+ }
+ /**
+ * @return CustomDimension[]
+ */
+ public function getItems()
+ {
+ return $this->items;
+ }
+ /**
+ * @param int
+ */
+ public function setItemsPerPage($itemsPerPage)
+ {
+ $this->itemsPerPage = $itemsPerPage;
+ }
+ /**
+ * @return int
+ */
+ public function getItemsPerPage()
+ {
+ return $this->itemsPerPage;
+ }
+ /**
+ * @param string
+ */
+ public function setKind($kind)
+ {
+ $this->kind = $kind;
+ }
+ /**
+ * @return string
+ */
+ public function getKind()
+ {
+ return $this->kind;
+ }
+ /**
+ * @param string
+ */
+ public function setNextLink($nextLink)
+ {
+ $this->nextLink = $nextLink;
+ }
+ /**
+ * @return string
+ */
+ public function getNextLink()
+ {
+ return $this->nextLink;
+ }
+ /**
+ * @param string
+ */
+ public function setPreviousLink($previousLink)
+ {
+ $this->previousLink = $previousLink;
+ }
+ /**
+ * @return string
+ */
+ public function getPreviousLink()
+ {
+ return $this->previousLink;
+ }
+ /**
+ * @param int
+ */
+ public function setStartIndex($startIndex)
+ {
+ $this->startIndex = $startIndex;
+ }
+ /**
+ * @return int
+ */
+ public function getStartIndex()
+ {
+ return $this->startIndex;
+ }
+ /**
+ * @param int
+ */
+ public function setTotalResults($totalResults)
+ {
+ $this->totalResults = $totalResults;
+ }
+ /**
+ * @return int
+ */
+ public function getTotalResults()
+ {
+ return $this->totalResults;
+ }
+ /**
+ * @param string
+ */
+ public function setUsername($username)
+ {
+ $this->username = $username;
+ }
+ /**
+ * @return string
+ */
+ public function getUsername()
+ {
+ return $this->username;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomDimensions::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_CustomDimensions');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/CustomMetric.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/CustomMetric.php
new file mode 100644
index 000000000..146386e00
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/CustomMetric.php
@@ -0,0 +1,293 @@
+ "max_value", "minValue" => "min_value"];
+ /**
+ * @var string
+ */
+ public $accountId;
+ /**
+ * @var bool
+ */
+ public $active;
+ /**
+ * @var string
+ */
+ public $created;
+ /**
+ * @var string
+ */
+ public $id;
+ /**
+ * @var int
+ */
+ public $index;
+ /**
+ * @var string
+ */
+ public $kind;
+ /**
+ * @var string
+ */
+ public $maxValue;
+ /**
+ * @var string
+ */
+ public $minValue;
+ /**
+ * @var string
+ */
+ public $name;
+ protected $parentLinkType = \Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomMetricParentLink::class;
+ protected $parentLinkDataType = '';
+ /**
+ * @var string
+ */
+ public $scope;
+ /**
+ * @var string
+ */
+ public $selfLink;
+ /**
+ * @var string
+ */
+ public $type;
+ /**
+ * @var string
+ */
+ public $updated;
+ /**
+ * @var string
+ */
+ public $webPropertyId;
+ /**
+ * @param string
+ */
+ public function setAccountId($accountId)
+ {
+ $this->accountId = $accountId;
+ }
+ /**
+ * @return string
+ */
+ public function getAccountId()
+ {
+ return $this->accountId;
+ }
+ /**
+ * @param bool
+ */
+ public function setActive($active)
+ {
+ $this->active = $active;
+ }
+ /**
+ * @return bool
+ */
+ public function getActive()
+ {
+ return $this->active;
+ }
+ /**
+ * @param string
+ */
+ public function setCreated($created)
+ {
+ $this->created = $created;
+ }
+ /**
+ * @return string
+ */
+ public function getCreated()
+ {
+ return $this->created;
+ }
+ /**
+ * @param string
+ */
+ public function setId($id)
+ {
+ $this->id = $id;
+ }
+ /**
+ * @return string
+ */
+ public function getId()
+ {
+ return $this->id;
+ }
+ /**
+ * @param int
+ */
+ public function setIndex($index)
+ {
+ $this->index = $index;
+ }
+ /**
+ * @return int
+ */
+ public function getIndex()
+ {
+ return $this->index;
+ }
+ /**
+ * @param string
+ */
+ public function setKind($kind)
+ {
+ $this->kind = $kind;
+ }
+ /**
+ * @return string
+ */
+ public function getKind()
+ {
+ return $this->kind;
+ }
+ /**
+ * @param string
+ */
+ public function setMaxValue($maxValue)
+ {
+ $this->maxValue = $maxValue;
+ }
+ /**
+ * @return string
+ */
+ public function getMaxValue()
+ {
+ return $this->maxValue;
+ }
+ /**
+ * @param string
+ */
+ public function setMinValue($minValue)
+ {
+ $this->minValue = $minValue;
+ }
+ /**
+ * @return string
+ */
+ public function getMinValue()
+ {
+ return $this->minValue;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param CustomMetricParentLink
+ */
+ public function setParentLink(\Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomMetricParentLink $parentLink)
+ {
+ $this->parentLink = $parentLink;
+ }
+ /**
+ * @return CustomMetricParentLink
+ */
+ public function getParentLink()
+ {
+ return $this->parentLink;
+ }
+ /**
+ * @param string
+ */
+ public function setScope($scope)
+ {
+ $this->scope = $scope;
+ }
+ /**
+ * @return string
+ */
+ public function getScope()
+ {
+ return $this->scope;
+ }
+ /**
+ * @param string
+ */
+ public function setSelfLink($selfLink)
+ {
+ $this->selfLink = $selfLink;
+ }
+ /**
+ * @return string
+ */
+ public function getSelfLink()
+ {
+ return $this->selfLink;
+ }
+ /**
+ * @param string
+ */
+ public function setType($type)
+ {
+ $this->type = $type;
+ }
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+ /**
+ * @param string
+ */
+ public function setUpdated($updated)
+ {
+ $this->updated = $updated;
+ }
+ /**
+ * @return string
+ */
+ public function getUpdated()
+ {
+ return $this->updated;
+ }
+ /**
+ * @param string
+ */
+ public function setWebPropertyId($webPropertyId)
+ {
+ $this->webPropertyId = $webPropertyId;
+ }
+ /**
+ * @return string
+ */
+ public function getWebPropertyId()
+ {
+ return $this->webPropertyId;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomMetric::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_CustomMetric');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/CustomMetricParentLink.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/CustomMetricParentLink.php
new file mode 100644
index 000000000..2fecbf869
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/CustomMetricParentLink.php
@@ -0,0 +1,60 @@
+href = $href;
+ }
+ /**
+ * @return string
+ */
+ public function getHref()
+ {
+ return $this->href;
+ }
+ /**
+ * @param string
+ */
+ public function setType($type)
+ {
+ $this->type = $type;
+ }
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomMetricParentLink::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_CustomMetricParentLink');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/CustomMetrics.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/CustomMetrics.php
new file mode 100644
index 000000000..f7e0777c0
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/CustomMetrics.php
@@ -0,0 +1,167 @@
+items = $items;
+ }
+ /**
+ * @return CustomMetric[]
+ */
+ public function getItems()
+ {
+ return $this->items;
+ }
+ /**
+ * @param int
+ */
+ public function setItemsPerPage($itemsPerPage)
+ {
+ $this->itemsPerPage = $itemsPerPage;
+ }
+ /**
+ * @return int
+ */
+ public function getItemsPerPage()
+ {
+ return $this->itemsPerPage;
+ }
+ /**
+ * @param string
+ */
+ public function setKind($kind)
+ {
+ $this->kind = $kind;
+ }
+ /**
+ * @return string
+ */
+ public function getKind()
+ {
+ return $this->kind;
+ }
+ /**
+ * @param string
+ */
+ public function setNextLink($nextLink)
+ {
+ $this->nextLink = $nextLink;
+ }
+ /**
+ * @return string
+ */
+ public function getNextLink()
+ {
+ return $this->nextLink;
+ }
+ /**
+ * @param string
+ */
+ public function setPreviousLink($previousLink)
+ {
+ $this->previousLink = $previousLink;
+ }
+ /**
+ * @return string
+ */
+ public function getPreviousLink()
+ {
+ return $this->previousLink;
+ }
+ /**
+ * @param int
+ */
+ public function setStartIndex($startIndex)
+ {
+ $this->startIndex = $startIndex;
+ }
+ /**
+ * @return int
+ */
+ public function getStartIndex()
+ {
+ return $this->startIndex;
+ }
+ /**
+ * @param int
+ */
+ public function setTotalResults($totalResults)
+ {
+ $this->totalResults = $totalResults;
+ }
+ /**
+ * @return int
+ */
+ public function getTotalResults()
+ {
+ return $this->totalResults;
+ }
+ /**
+ * @param string
+ */
+ public function setUsername($username)
+ {
+ $this->username = $username;
+ }
+ /**
+ * @return string
+ */
+ public function getUsername()
+ {
+ return $this->username;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomMetrics::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_CustomMetrics');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/EntityAdWordsLink.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/EntityAdWordsLink.php
new file mode 100644
index 000000000..43c5a81c2
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/EntityAdWordsLink.php
@@ -0,0 +1,147 @@
+adWordsAccounts = $adWordsAccounts;
+ }
+ /**
+ * @return AdWordsAccount[]
+ */
+ public function getAdWordsAccounts()
+ {
+ return $this->adWordsAccounts;
+ }
+ /**
+ * @param EntityAdWordsLinkEntity
+ */
+ public function setEntity(\Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityAdWordsLinkEntity $entity)
+ {
+ $this->entity = $entity;
+ }
+ /**
+ * @return EntityAdWordsLinkEntity
+ */
+ public function getEntity()
+ {
+ return $this->entity;
+ }
+ /**
+ * @param string
+ */
+ public function setId($id)
+ {
+ $this->id = $id;
+ }
+ /**
+ * @return string
+ */
+ public function getId()
+ {
+ return $this->id;
+ }
+ /**
+ * @param string
+ */
+ public function setKind($kind)
+ {
+ $this->kind = $kind;
+ }
+ /**
+ * @return string
+ */
+ public function getKind()
+ {
+ return $this->kind;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param string[]
+ */
+ public function setProfileIds($profileIds)
+ {
+ $this->profileIds = $profileIds;
+ }
+ /**
+ * @return string[]
+ */
+ public function getProfileIds()
+ {
+ return $this->profileIds;
+ }
+ /**
+ * @param string
+ */
+ public function setSelfLink($selfLink)
+ {
+ $this->selfLink = $selfLink;
+ }
+ /**
+ * @return string
+ */
+ public function getSelfLink()
+ {
+ return $this->selfLink;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityAdWordsLink::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_EntityAdWordsLink');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/EntityAdWordsLinkEntity.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/EntityAdWordsLinkEntity.php
new file mode 100644
index 000000000..db70ce1c4
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/EntityAdWordsLinkEntity.php
@@ -0,0 +1,40 @@
+webPropertyRef = $webPropertyRef;
+ }
+ /**
+ * @return WebPropertyRef
+ */
+ public function getWebPropertyRef()
+ {
+ return $this->webPropertyRef;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityAdWordsLinkEntity::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_EntityAdWordsLinkEntity');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/EntityAdWordsLinks.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/EntityAdWordsLinks.php
new file mode 100644
index 000000000..437e3a2a1
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/EntityAdWordsLinks.php
@@ -0,0 +1,149 @@
+items = $items;
+ }
+ /**
+ * @return EntityAdWordsLink[]
+ */
+ public function getItems()
+ {
+ return $this->items;
+ }
+ /**
+ * @param int
+ */
+ public function setItemsPerPage($itemsPerPage)
+ {
+ $this->itemsPerPage = $itemsPerPage;
+ }
+ /**
+ * @return int
+ */
+ public function getItemsPerPage()
+ {
+ return $this->itemsPerPage;
+ }
+ /**
+ * @param string
+ */
+ public function setKind($kind)
+ {
+ $this->kind = $kind;
+ }
+ /**
+ * @return string
+ */
+ public function getKind()
+ {
+ return $this->kind;
+ }
+ /**
+ * @param string
+ */
+ public function setNextLink($nextLink)
+ {
+ $this->nextLink = $nextLink;
+ }
+ /**
+ * @return string
+ */
+ public function getNextLink()
+ {
+ return $this->nextLink;
+ }
+ /**
+ * @param string
+ */
+ public function setPreviousLink($previousLink)
+ {
+ $this->previousLink = $previousLink;
+ }
+ /**
+ * @return string
+ */
+ public function getPreviousLink()
+ {
+ return $this->previousLink;
+ }
+ /**
+ * @param int
+ */
+ public function setStartIndex($startIndex)
+ {
+ $this->startIndex = $startIndex;
+ }
+ /**
+ * @return int
+ */
+ public function getStartIndex()
+ {
+ return $this->startIndex;
+ }
+ /**
+ * @param int
+ */
+ public function setTotalResults($totalResults)
+ {
+ $this->totalResults = $totalResults;
+ }
+ /**
+ * @return int
+ */
+ public function getTotalResults()
+ {
+ return $this->totalResults;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityAdWordsLinks::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_EntityAdWordsLinks');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/EntityUserLink.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/EntityUserLink.php
new file mode 100644
index 000000000..bae296871
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/EntityUserLink.php
@@ -0,0 +1,126 @@
+entity = $entity;
+ }
+ /**
+ * @return EntityUserLinkEntity
+ */
+ public function getEntity()
+ {
+ return $this->entity;
+ }
+ /**
+ * @param string
+ */
+ public function setId($id)
+ {
+ $this->id = $id;
+ }
+ /**
+ * @return string
+ */
+ public function getId()
+ {
+ return $this->id;
+ }
+ /**
+ * @param string
+ */
+ public function setKind($kind)
+ {
+ $this->kind = $kind;
+ }
+ /**
+ * @return string
+ */
+ public function getKind()
+ {
+ return $this->kind;
+ }
+ /**
+ * @param EntityUserLinkPermissions
+ */
+ public function setPermissions(\Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityUserLinkPermissions $permissions)
+ {
+ $this->permissions = $permissions;
+ }
+ /**
+ * @return EntityUserLinkPermissions
+ */
+ public function getPermissions()
+ {
+ return $this->permissions;
+ }
+ /**
+ * @param string
+ */
+ public function setSelfLink($selfLink)
+ {
+ $this->selfLink = $selfLink;
+ }
+ /**
+ * @return string
+ */
+ public function getSelfLink()
+ {
+ return $this->selfLink;
+ }
+ /**
+ * @param UserRef
+ */
+ public function setUserRef(\Google\Site_Kit_Dependencies\Google\Service\Analytics\UserRef $userRef)
+ {
+ $this->userRef = $userRef;
+ }
+ /**
+ * @return UserRef
+ */
+ public function getUserRef()
+ {
+ return $this->userRef;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityUserLink::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_EntityUserLink');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/EntityUserLinkEntity.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/EntityUserLinkEntity.php
new file mode 100644
index 000000000..bccc7a98d
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/EntityUserLinkEntity.php
@@ -0,0 +1,72 @@
+accountRef = $accountRef;
+ }
+ /**
+ * @return AccountRef
+ */
+ public function getAccountRef()
+ {
+ return $this->accountRef;
+ }
+ /**
+ * @param ProfileRef
+ */
+ public function setProfileRef(\Google\Site_Kit_Dependencies\Google\Service\Analytics\ProfileRef $profileRef)
+ {
+ $this->profileRef = $profileRef;
+ }
+ /**
+ * @return ProfileRef
+ */
+ public function getProfileRef()
+ {
+ return $this->profileRef;
+ }
+ /**
+ * @param WebPropertyRef
+ */
+ public function setWebPropertyRef(\Google\Site_Kit_Dependencies\Google\Service\Analytics\WebPropertyRef $webPropertyRef)
+ {
+ $this->webPropertyRef = $webPropertyRef;
+ }
+ /**
+ * @return WebPropertyRef
+ */
+ public function getWebPropertyRef()
+ {
+ return $this->webPropertyRef;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityUserLinkEntity::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_EntityUserLinkEntity');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/EntityUserLinkPermissions.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/EntityUserLinkPermissions.php
new file mode 100644
index 000000000..d4d11c678
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/EntityUserLinkPermissions.php
@@ -0,0 +1,61 @@
+effective = $effective;
+ }
+ /**
+ * @return string[]
+ */
+ public function getEffective()
+ {
+ return $this->effective;
+ }
+ /**
+ * @param string[]
+ */
+ public function setLocal($local)
+ {
+ $this->local = $local;
+ }
+ /**
+ * @return string[]
+ */
+ public function getLocal()
+ {
+ return $this->local;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityUserLinkPermissions::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_EntityUserLinkPermissions');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/EntityUserLinks.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/EntityUserLinks.php
new file mode 100644
index 000000000..38fa41d73
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/EntityUserLinks.php
@@ -0,0 +1,149 @@
+items = $items;
+ }
+ /**
+ * @return EntityUserLink[]
+ */
+ public function getItems()
+ {
+ return $this->items;
+ }
+ /**
+ * @param int
+ */
+ public function setItemsPerPage($itemsPerPage)
+ {
+ $this->itemsPerPage = $itemsPerPage;
+ }
+ /**
+ * @return int
+ */
+ public function getItemsPerPage()
+ {
+ return $this->itemsPerPage;
+ }
+ /**
+ * @param string
+ */
+ public function setKind($kind)
+ {
+ $this->kind = $kind;
+ }
+ /**
+ * @return string
+ */
+ public function getKind()
+ {
+ return $this->kind;
+ }
+ /**
+ * @param string
+ */
+ public function setNextLink($nextLink)
+ {
+ $this->nextLink = $nextLink;
+ }
+ /**
+ * @return string
+ */
+ public function getNextLink()
+ {
+ return $this->nextLink;
+ }
+ /**
+ * @param string
+ */
+ public function setPreviousLink($previousLink)
+ {
+ $this->previousLink = $previousLink;
+ }
+ /**
+ * @return string
+ */
+ public function getPreviousLink()
+ {
+ return $this->previousLink;
+ }
+ /**
+ * @param int
+ */
+ public function setStartIndex($startIndex)
+ {
+ $this->startIndex = $startIndex;
+ }
+ /**
+ * @return int
+ */
+ public function getStartIndex()
+ {
+ return $this->startIndex;
+ }
+ /**
+ * @param int
+ */
+ public function setTotalResults($totalResults)
+ {
+ $this->totalResults = $totalResults;
+ }
+ /**
+ * @return int
+ */
+ public function getTotalResults()
+ {
+ return $this->totalResults;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityUserLinks::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_EntityUserLinks');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Experiment.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Experiment.php
new file mode 100644
index 000000000..7007e8740
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Experiment.php
@@ -0,0 +1,507 @@
+accountId = $accountId;
+ }
+ /**
+ * @return string
+ */
+ public function getAccountId()
+ {
+ return $this->accountId;
+ }
+ /**
+ * @param string
+ */
+ public function setCreated($created)
+ {
+ $this->created = $created;
+ }
+ /**
+ * @return string
+ */
+ public function getCreated()
+ {
+ return $this->created;
+ }
+ /**
+ * @param string
+ */
+ public function setDescription($description)
+ {
+ $this->description = $description;
+ }
+ /**
+ * @return string
+ */
+ public function getDescription()
+ {
+ return $this->description;
+ }
+ /**
+ * @param bool
+ */
+ public function setEditableInGaUi($editableInGaUi)
+ {
+ $this->editableInGaUi = $editableInGaUi;
+ }
+ /**
+ * @return bool
+ */
+ public function getEditableInGaUi()
+ {
+ return $this->editableInGaUi;
+ }
+ /**
+ * @param string
+ */
+ public function setEndTime($endTime)
+ {
+ $this->endTime = $endTime;
+ }
+ /**
+ * @return string
+ */
+ public function getEndTime()
+ {
+ return $this->endTime;
+ }
+ /**
+ * @param bool
+ */
+ public function setEqualWeighting($equalWeighting)
+ {
+ $this->equalWeighting = $equalWeighting;
+ }
+ /**
+ * @return bool
+ */
+ public function getEqualWeighting()
+ {
+ return $this->equalWeighting;
+ }
+ /**
+ * @param string
+ */
+ public function setId($id)
+ {
+ $this->id = $id;
+ }
+ /**
+ * @return string
+ */
+ public function getId()
+ {
+ return $this->id;
+ }
+ /**
+ * @param string
+ */
+ public function setInternalWebPropertyId($internalWebPropertyId)
+ {
+ $this->internalWebPropertyId = $internalWebPropertyId;
+ }
+ /**
+ * @return string
+ */
+ public function getInternalWebPropertyId()
+ {
+ return $this->internalWebPropertyId;
+ }
+ /**
+ * @param string
+ */
+ public function setKind($kind)
+ {
+ $this->kind = $kind;
+ }
+ /**
+ * @return string
+ */
+ public function getKind()
+ {
+ return $this->kind;
+ }
+ /**
+ * @param int
+ */
+ public function setMinimumExperimentLengthInDays($minimumExperimentLengthInDays)
+ {
+ $this->minimumExperimentLengthInDays = $minimumExperimentLengthInDays;
+ }
+ /**
+ * @return int
+ */
+ public function getMinimumExperimentLengthInDays()
+ {
+ return $this->minimumExperimentLengthInDays;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param string
+ */
+ public function setObjectiveMetric($objectiveMetric)
+ {
+ $this->objectiveMetric = $objectiveMetric;
+ }
+ /**
+ * @return string
+ */
+ public function getObjectiveMetric()
+ {
+ return $this->objectiveMetric;
+ }
+ /**
+ * @param string
+ */
+ public function setOptimizationType($optimizationType)
+ {
+ $this->optimizationType = $optimizationType;
+ }
+ /**
+ * @return string
+ */
+ public function getOptimizationType()
+ {
+ return $this->optimizationType;
+ }
+ /**
+ * @param ExperimentParentLink
+ */
+ public function setParentLink(\Google\Site_Kit_Dependencies\Google\Service\Analytics\ExperimentParentLink $parentLink)
+ {
+ $this->parentLink = $parentLink;
+ }
+ /**
+ * @return ExperimentParentLink
+ */
+ public function getParentLink()
+ {
+ return $this->parentLink;
+ }
+ /**
+ * @param string
+ */
+ public function setProfileId($profileId)
+ {
+ $this->profileId = $profileId;
+ }
+ /**
+ * @return string
+ */
+ public function getProfileId()
+ {
+ return $this->profileId;
+ }
+ /**
+ * @param string
+ */
+ public function setReasonExperimentEnded($reasonExperimentEnded)
+ {
+ $this->reasonExperimentEnded = $reasonExperimentEnded;
+ }
+ /**
+ * @return string
+ */
+ public function getReasonExperimentEnded()
+ {
+ return $this->reasonExperimentEnded;
+ }
+ /**
+ * @param bool
+ */
+ public function setRewriteVariationUrlsAsOriginal($rewriteVariationUrlsAsOriginal)
+ {
+ $this->rewriteVariationUrlsAsOriginal = $rewriteVariationUrlsAsOriginal;
+ }
+ /**
+ * @return bool
+ */
+ public function getRewriteVariationUrlsAsOriginal()
+ {
+ return $this->rewriteVariationUrlsAsOriginal;
+ }
+ /**
+ * @param string
+ */
+ public function setSelfLink($selfLink)
+ {
+ $this->selfLink = $selfLink;
+ }
+ /**
+ * @return string
+ */
+ public function getSelfLink()
+ {
+ return $this->selfLink;
+ }
+ /**
+ * @param string
+ */
+ public function setServingFramework($servingFramework)
+ {
+ $this->servingFramework = $servingFramework;
+ }
+ /**
+ * @return string
+ */
+ public function getServingFramework()
+ {
+ return $this->servingFramework;
+ }
+ /**
+ * @param string
+ */
+ public function setSnippet($snippet)
+ {
+ $this->snippet = $snippet;
+ }
+ /**
+ * @return string
+ */
+ public function getSnippet()
+ {
+ return $this->snippet;
+ }
+ /**
+ * @param string
+ */
+ public function setStartTime($startTime)
+ {
+ $this->startTime = $startTime;
+ }
+ /**
+ * @return string
+ */
+ public function getStartTime()
+ {
+ return $this->startTime;
+ }
+ /**
+ * @param string
+ */
+ public function setStatus($status)
+ {
+ $this->status = $status;
+ }
+ /**
+ * @return string
+ */
+ public function getStatus()
+ {
+ return $this->status;
+ }
+ public function setTrafficCoverage($trafficCoverage)
+ {
+ $this->trafficCoverage = $trafficCoverage;
+ }
+ public function getTrafficCoverage()
+ {
+ return $this->trafficCoverage;
+ }
+ /**
+ * @param string
+ */
+ public function setUpdated($updated)
+ {
+ $this->updated = $updated;
+ }
+ /**
+ * @return string
+ */
+ public function getUpdated()
+ {
+ return $this->updated;
+ }
+ /**
+ * @param ExperimentVariations[]
+ */
+ public function setVariations($variations)
+ {
+ $this->variations = $variations;
+ }
+ /**
+ * @return ExperimentVariations[]
+ */
+ public function getVariations()
+ {
+ return $this->variations;
+ }
+ /**
+ * @param string
+ */
+ public function setWebPropertyId($webPropertyId)
+ {
+ $this->webPropertyId = $webPropertyId;
+ }
+ /**
+ * @return string
+ */
+ public function getWebPropertyId()
+ {
+ return $this->webPropertyId;
+ }
+ public function setWinnerConfidenceLevel($winnerConfidenceLevel)
+ {
+ $this->winnerConfidenceLevel = $winnerConfidenceLevel;
+ }
+ public function getWinnerConfidenceLevel()
+ {
+ return $this->winnerConfidenceLevel;
+ }
+ /**
+ * @param bool
+ */
+ public function setWinnerFound($winnerFound)
+ {
+ $this->winnerFound = $winnerFound;
+ }
+ /**
+ * @return bool
+ */
+ public function getWinnerFound()
+ {
+ return $this->winnerFound;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Experiment::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Experiment');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/ExperimentParentLink.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/ExperimentParentLink.php
new file mode 100644
index 000000000..2a4cd4b7f
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/ExperimentParentLink.php
@@ -0,0 +1,60 @@
+href = $href;
+ }
+ /**
+ * @return string
+ */
+ public function getHref()
+ {
+ return $this->href;
+ }
+ /**
+ * @param string
+ */
+ public function setType($type)
+ {
+ $this->type = $type;
+ }
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\ExperimentParentLink::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_ExperimentParentLink');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/ExperimentVariations.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/ExperimentVariations.php
new file mode 100644
index 000000000..ff74f27ae
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/ExperimentVariations.php
@@ -0,0 +1,105 @@
+name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param string
+ */
+ public function setStatus($status)
+ {
+ $this->status = $status;
+ }
+ /**
+ * @return string
+ */
+ public function getStatus()
+ {
+ return $this->status;
+ }
+ /**
+ * @param string
+ */
+ public function setUrl($url)
+ {
+ $this->url = $url;
+ }
+ /**
+ * @return string
+ */
+ public function getUrl()
+ {
+ return $this->url;
+ }
+ public function setWeight($weight)
+ {
+ $this->weight = $weight;
+ }
+ public function getWeight()
+ {
+ return $this->weight;
+ }
+ /**
+ * @param bool
+ */
+ public function setWon($won)
+ {
+ $this->won = $won;
+ }
+ /**
+ * @return bool
+ */
+ public function getWon()
+ {
+ return $this->won;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\ExperimentVariations::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_ExperimentVariations');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Experiments.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Experiments.php
new file mode 100644
index 000000000..7c93f29de
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Experiments.php
@@ -0,0 +1,167 @@
+items = $items;
+ }
+ /**
+ * @return Experiment[]
+ */
+ public function getItems()
+ {
+ return $this->items;
+ }
+ /**
+ * @param int
+ */
+ public function setItemsPerPage($itemsPerPage)
+ {
+ $this->itemsPerPage = $itemsPerPage;
+ }
+ /**
+ * @return int
+ */
+ public function getItemsPerPage()
+ {
+ return $this->itemsPerPage;
+ }
+ /**
+ * @param string
+ */
+ public function setKind($kind)
+ {
+ $this->kind = $kind;
+ }
+ /**
+ * @return string
+ */
+ public function getKind()
+ {
+ return $this->kind;
+ }
+ /**
+ * @param string
+ */
+ public function setNextLink($nextLink)
+ {
+ $this->nextLink = $nextLink;
+ }
+ /**
+ * @return string
+ */
+ public function getNextLink()
+ {
+ return $this->nextLink;
+ }
+ /**
+ * @param string
+ */
+ public function setPreviousLink($previousLink)
+ {
+ $this->previousLink = $previousLink;
+ }
+ /**
+ * @return string
+ */
+ public function getPreviousLink()
+ {
+ return $this->previousLink;
+ }
+ /**
+ * @param int
+ */
+ public function setStartIndex($startIndex)
+ {
+ $this->startIndex = $startIndex;
+ }
+ /**
+ * @return int
+ */
+ public function getStartIndex()
+ {
+ return $this->startIndex;
+ }
+ /**
+ * @param int
+ */
+ public function setTotalResults($totalResults)
+ {
+ $this->totalResults = $totalResults;
+ }
+ /**
+ * @return int
+ */
+ public function getTotalResults()
+ {
+ return $this->totalResults;
+ }
+ /**
+ * @param string
+ */
+ public function setUsername($username)
+ {
+ $this->username = $username;
+ }
+ /**
+ * @return string
+ */
+ public function getUsername()
+ {
+ return $this->username;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Experiments::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Experiments');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Filter.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Filter.php
new file mode 100644
index 000000000..cd9986180
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Filter.php
@@ -0,0 +1,280 @@
+accountId = $accountId;
+ }
+ /**
+ * @return string
+ */
+ public function getAccountId()
+ {
+ return $this->accountId;
+ }
+ /**
+ * @param FilterAdvancedDetails
+ */
+ public function setAdvancedDetails(\Google\Site_Kit_Dependencies\Google\Service\Analytics\FilterAdvancedDetails $advancedDetails)
+ {
+ $this->advancedDetails = $advancedDetails;
+ }
+ /**
+ * @return FilterAdvancedDetails
+ */
+ public function getAdvancedDetails()
+ {
+ return $this->advancedDetails;
+ }
+ /**
+ * @param string
+ */
+ public function setCreated($created)
+ {
+ $this->created = $created;
+ }
+ /**
+ * @return string
+ */
+ public function getCreated()
+ {
+ return $this->created;
+ }
+ /**
+ * @param FilterExpression
+ */
+ public function setExcludeDetails(\Google\Site_Kit_Dependencies\Google\Service\Analytics\FilterExpression $excludeDetails)
+ {
+ $this->excludeDetails = $excludeDetails;
+ }
+ /**
+ * @return FilterExpression
+ */
+ public function getExcludeDetails()
+ {
+ return $this->excludeDetails;
+ }
+ /**
+ * @param string
+ */
+ public function setId($id)
+ {
+ $this->id = $id;
+ }
+ /**
+ * @return string
+ */
+ public function getId()
+ {
+ return $this->id;
+ }
+ /**
+ * @param FilterExpression
+ */
+ public function setIncludeDetails(\Google\Site_Kit_Dependencies\Google\Service\Analytics\FilterExpression $includeDetails)
+ {
+ $this->includeDetails = $includeDetails;
+ }
+ /**
+ * @return FilterExpression
+ */
+ public function getIncludeDetails()
+ {
+ return $this->includeDetails;
+ }
+ /**
+ * @param string
+ */
+ public function setKind($kind)
+ {
+ $this->kind = $kind;
+ }
+ /**
+ * @return string
+ */
+ public function getKind()
+ {
+ return $this->kind;
+ }
+ /**
+ * @param FilterLowercaseDetails
+ */
+ public function setLowercaseDetails(\Google\Site_Kit_Dependencies\Google\Service\Analytics\FilterLowercaseDetails $lowercaseDetails)
+ {
+ $this->lowercaseDetails = $lowercaseDetails;
+ }
+ /**
+ * @return FilterLowercaseDetails
+ */
+ public function getLowercaseDetails()
+ {
+ return $this->lowercaseDetails;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param FilterParentLink
+ */
+ public function setParentLink(\Google\Site_Kit_Dependencies\Google\Service\Analytics\FilterParentLink $parentLink)
+ {
+ $this->parentLink = $parentLink;
+ }
+ /**
+ * @return FilterParentLink
+ */
+ public function getParentLink()
+ {
+ return $this->parentLink;
+ }
+ /**
+ * @param FilterSearchAndReplaceDetails
+ */
+ public function setSearchAndReplaceDetails(\Google\Site_Kit_Dependencies\Google\Service\Analytics\FilterSearchAndReplaceDetails $searchAndReplaceDetails)
+ {
+ $this->searchAndReplaceDetails = $searchAndReplaceDetails;
+ }
+ /**
+ * @return FilterSearchAndReplaceDetails
+ */
+ public function getSearchAndReplaceDetails()
+ {
+ return $this->searchAndReplaceDetails;
+ }
+ /**
+ * @param string
+ */
+ public function setSelfLink($selfLink)
+ {
+ $this->selfLink = $selfLink;
+ }
+ /**
+ * @return string
+ */
+ public function getSelfLink()
+ {
+ return $this->selfLink;
+ }
+ /**
+ * @param string
+ */
+ public function setType($type)
+ {
+ $this->type = $type;
+ }
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+ /**
+ * @param string
+ */
+ public function setUpdated($updated)
+ {
+ $this->updated = $updated;
+ }
+ /**
+ * @return string
+ */
+ public function getUpdated()
+ {
+ return $this->updated;
+ }
+ /**
+ * @param FilterUppercaseDetails
+ */
+ public function setUppercaseDetails(\Google\Site_Kit_Dependencies\Google\Service\Analytics\FilterUppercaseDetails $uppercaseDetails)
+ {
+ $this->uppercaseDetails = $uppercaseDetails;
+ }
+ /**
+ * @return FilterUppercaseDetails
+ */
+ public function getUppercaseDetails()
+ {
+ return $this->uppercaseDetails;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Filter::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Filter');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/FilterAdvancedDetails.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/FilterAdvancedDetails.php
new file mode 100644
index 000000000..966d5363c
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/FilterAdvancedDetails.php
@@ -0,0 +1,258 @@
+caseSensitive = $caseSensitive;
+ }
+ /**
+ * @return bool
+ */
+ public function getCaseSensitive()
+ {
+ return $this->caseSensitive;
+ }
+ /**
+ * @param string
+ */
+ public function setExtractA($extractA)
+ {
+ $this->extractA = $extractA;
+ }
+ /**
+ * @return string
+ */
+ public function getExtractA()
+ {
+ return $this->extractA;
+ }
+ /**
+ * @param string
+ */
+ public function setExtractB($extractB)
+ {
+ $this->extractB = $extractB;
+ }
+ /**
+ * @return string
+ */
+ public function getExtractB()
+ {
+ return $this->extractB;
+ }
+ /**
+ * @param string
+ */
+ public function setFieldA($fieldA)
+ {
+ $this->fieldA = $fieldA;
+ }
+ /**
+ * @return string
+ */
+ public function getFieldA()
+ {
+ return $this->fieldA;
+ }
+ /**
+ * @param int
+ */
+ public function setFieldAIndex($fieldAIndex)
+ {
+ $this->fieldAIndex = $fieldAIndex;
+ }
+ /**
+ * @return int
+ */
+ public function getFieldAIndex()
+ {
+ return $this->fieldAIndex;
+ }
+ /**
+ * @param bool
+ */
+ public function setFieldARequired($fieldARequired)
+ {
+ $this->fieldARequired = $fieldARequired;
+ }
+ /**
+ * @return bool
+ */
+ public function getFieldARequired()
+ {
+ return $this->fieldARequired;
+ }
+ /**
+ * @param string
+ */
+ public function setFieldB($fieldB)
+ {
+ $this->fieldB = $fieldB;
+ }
+ /**
+ * @return string
+ */
+ public function getFieldB()
+ {
+ return $this->fieldB;
+ }
+ /**
+ * @param int
+ */
+ public function setFieldBIndex($fieldBIndex)
+ {
+ $this->fieldBIndex = $fieldBIndex;
+ }
+ /**
+ * @return int
+ */
+ public function getFieldBIndex()
+ {
+ return $this->fieldBIndex;
+ }
+ /**
+ * @param bool
+ */
+ public function setFieldBRequired($fieldBRequired)
+ {
+ $this->fieldBRequired = $fieldBRequired;
+ }
+ /**
+ * @return bool
+ */
+ public function getFieldBRequired()
+ {
+ return $this->fieldBRequired;
+ }
+ /**
+ * @param string
+ */
+ public function setOutputConstructor($outputConstructor)
+ {
+ $this->outputConstructor = $outputConstructor;
+ }
+ /**
+ * @return string
+ */
+ public function getOutputConstructor()
+ {
+ return $this->outputConstructor;
+ }
+ /**
+ * @param string
+ */
+ public function setOutputToField($outputToField)
+ {
+ $this->outputToField = $outputToField;
+ }
+ /**
+ * @return string
+ */
+ public function getOutputToField()
+ {
+ return $this->outputToField;
+ }
+ /**
+ * @param int
+ */
+ public function setOutputToFieldIndex($outputToFieldIndex)
+ {
+ $this->outputToFieldIndex = $outputToFieldIndex;
+ }
+ /**
+ * @return int
+ */
+ public function getOutputToFieldIndex()
+ {
+ return $this->outputToFieldIndex;
+ }
+ /**
+ * @param bool
+ */
+ public function setOverrideOutputField($overrideOutputField)
+ {
+ $this->overrideOutputField = $overrideOutputField;
+ }
+ /**
+ * @return bool
+ */
+ public function getOverrideOutputField()
+ {
+ return $this->overrideOutputField;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\FilterAdvancedDetails::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_FilterAdvancedDetails');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/FilterExpression.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/FilterExpression.php
new file mode 100644
index 000000000..0fb1a1e14
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/FilterExpression.php
@@ -0,0 +1,132 @@
+caseSensitive = $caseSensitive;
+ }
+ /**
+ * @return bool
+ */
+ public function getCaseSensitive()
+ {
+ return $this->caseSensitive;
+ }
+ /**
+ * @param string
+ */
+ public function setExpressionValue($expressionValue)
+ {
+ $this->expressionValue = $expressionValue;
+ }
+ /**
+ * @return string
+ */
+ public function getExpressionValue()
+ {
+ return $this->expressionValue;
+ }
+ /**
+ * @param string
+ */
+ public function setField($field)
+ {
+ $this->field = $field;
+ }
+ /**
+ * @return string
+ */
+ public function getField()
+ {
+ return $this->field;
+ }
+ /**
+ * @param int
+ */
+ public function setFieldIndex($fieldIndex)
+ {
+ $this->fieldIndex = $fieldIndex;
+ }
+ /**
+ * @return int
+ */
+ public function getFieldIndex()
+ {
+ return $this->fieldIndex;
+ }
+ /**
+ * @param string
+ */
+ public function setKind($kind)
+ {
+ $this->kind = $kind;
+ }
+ /**
+ * @return string
+ */
+ public function getKind()
+ {
+ return $this->kind;
+ }
+ /**
+ * @param string
+ */
+ public function setMatchType($matchType)
+ {
+ $this->matchType = $matchType;
+ }
+ /**
+ * @return string
+ */
+ public function getMatchType()
+ {
+ return $this->matchType;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\FilterExpression::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_FilterExpression');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/FilterLowercaseDetails.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/FilterLowercaseDetails.php
new file mode 100644
index 000000000..1000f7355
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/FilterLowercaseDetails.php
@@ -0,0 +1,60 @@
+field = $field;
+ }
+ /**
+ * @return string
+ */
+ public function getField()
+ {
+ return $this->field;
+ }
+ /**
+ * @param int
+ */
+ public function setFieldIndex($fieldIndex)
+ {
+ $this->fieldIndex = $fieldIndex;
+ }
+ /**
+ * @return int
+ */
+ public function getFieldIndex()
+ {
+ return $this->fieldIndex;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\FilterLowercaseDetails::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_FilterLowercaseDetails');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/FilterParentLink.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/FilterParentLink.php
new file mode 100644
index 000000000..b0a18519e
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/FilterParentLink.php
@@ -0,0 +1,60 @@
+href = $href;
+ }
+ /**
+ * @return string
+ */
+ public function getHref()
+ {
+ return $this->href;
+ }
+ /**
+ * @param string
+ */
+ public function setType($type)
+ {
+ $this->type = $type;
+ }
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\FilterParentLink::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_FilterParentLink');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/FilterRef.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/FilterRef.php
new file mode 100644
index 000000000..7a25bf6d1
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/FilterRef.php
@@ -0,0 +1,114 @@
+accountId = $accountId;
+ }
+ /**
+ * @return string
+ */
+ public function getAccountId()
+ {
+ return $this->accountId;
+ }
+ /**
+ * @param string
+ */
+ public function setHref($href)
+ {
+ $this->href = $href;
+ }
+ /**
+ * @return string
+ */
+ public function getHref()
+ {
+ return $this->href;
+ }
+ /**
+ * @param string
+ */
+ public function setId($id)
+ {
+ $this->id = $id;
+ }
+ /**
+ * @return string
+ */
+ public function getId()
+ {
+ return $this->id;
+ }
+ /**
+ * @param string
+ */
+ public function setKind($kind)
+ {
+ $this->kind = $kind;
+ }
+ /**
+ * @return string
+ */
+ public function getKind()
+ {
+ return $this->kind;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\FilterRef::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_FilterRef');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/FilterSearchAndReplaceDetails.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/FilterSearchAndReplaceDetails.php
new file mode 100644
index 000000000..1fb437fa0
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/FilterSearchAndReplaceDetails.php
@@ -0,0 +1,114 @@
+caseSensitive = $caseSensitive;
+ }
+ /**
+ * @return bool
+ */
+ public function getCaseSensitive()
+ {
+ return $this->caseSensitive;
+ }
+ /**
+ * @param string
+ */
+ public function setField($field)
+ {
+ $this->field = $field;
+ }
+ /**
+ * @return string
+ */
+ public function getField()
+ {
+ return $this->field;
+ }
+ /**
+ * @param int
+ */
+ public function setFieldIndex($fieldIndex)
+ {
+ $this->fieldIndex = $fieldIndex;
+ }
+ /**
+ * @return int
+ */
+ public function getFieldIndex()
+ {
+ return $this->fieldIndex;
+ }
+ /**
+ * @param string
+ */
+ public function setReplaceString($replaceString)
+ {
+ $this->replaceString = $replaceString;
+ }
+ /**
+ * @return string
+ */
+ public function getReplaceString()
+ {
+ return $this->replaceString;
+ }
+ /**
+ * @param string
+ */
+ public function setSearchString($searchString)
+ {
+ $this->searchString = $searchString;
+ }
+ /**
+ * @return string
+ */
+ public function getSearchString()
+ {
+ return $this->searchString;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\FilterSearchAndReplaceDetails::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_FilterSearchAndReplaceDetails');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/FilterUppercaseDetails.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/FilterUppercaseDetails.php
new file mode 100644
index 000000000..88870bc2d
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/FilterUppercaseDetails.php
@@ -0,0 +1,60 @@
+field = $field;
+ }
+ /**
+ * @return string
+ */
+ public function getField()
+ {
+ return $this->field;
+ }
+ /**
+ * @param int
+ */
+ public function setFieldIndex($fieldIndex)
+ {
+ $this->fieldIndex = $fieldIndex;
+ }
+ /**
+ * @return int
+ */
+ public function getFieldIndex()
+ {
+ return $this->fieldIndex;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\FilterUppercaseDetails::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_FilterUppercaseDetails');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Filters.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Filters.php
new file mode 100644
index 000000000..7e38448ea
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Filters.php
@@ -0,0 +1,167 @@
+items = $items;
+ }
+ /**
+ * @return Filter[]
+ */
+ public function getItems()
+ {
+ return $this->items;
+ }
+ /**
+ * @param int
+ */
+ public function setItemsPerPage($itemsPerPage)
+ {
+ $this->itemsPerPage = $itemsPerPage;
+ }
+ /**
+ * @return int
+ */
+ public function getItemsPerPage()
+ {
+ return $this->itemsPerPage;
+ }
+ /**
+ * @param string
+ */
+ public function setKind($kind)
+ {
+ $this->kind = $kind;
+ }
+ /**
+ * @return string
+ */
+ public function getKind()
+ {
+ return $this->kind;
+ }
+ /**
+ * @param string
+ */
+ public function setNextLink($nextLink)
+ {
+ $this->nextLink = $nextLink;
+ }
+ /**
+ * @return string
+ */
+ public function getNextLink()
+ {
+ return $this->nextLink;
+ }
+ /**
+ * @param string
+ */
+ public function setPreviousLink($previousLink)
+ {
+ $this->previousLink = $previousLink;
+ }
+ /**
+ * @return string
+ */
+ public function getPreviousLink()
+ {
+ return $this->previousLink;
+ }
+ /**
+ * @param int
+ */
+ public function setStartIndex($startIndex)
+ {
+ $this->startIndex = $startIndex;
+ }
+ /**
+ * @return int
+ */
+ public function getStartIndex()
+ {
+ return $this->startIndex;
+ }
+ /**
+ * @param int
+ */
+ public function setTotalResults($totalResults)
+ {
+ $this->totalResults = $totalResults;
+ }
+ /**
+ * @return int
+ */
+ public function getTotalResults()
+ {
+ return $this->totalResults;
+ }
+ /**
+ * @param string
+ */
+ public function setUsername($username)
+ {
+ $this->username = $username;
+ }
+ /**
+ * @return string
+ */
+ public function getUsername()
+ {
+ return $this->username;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Filters::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Filters');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GaData.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GaData.php
new file mode 100644
index 000000000..3adad19f3
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GaData.php
@@ -0,0 +1,323 @@
+columnHeaders = $columnHeaders;
+ }
+ /**
+ * @return GaDataColumnHeaders[]
+ */
+ public function getColumnHeaders()
+ {
+ return $this->columnHeaders;
+ }
+ /**
+ * @param bool
+ */
+ public function setContainsSampledData($containsSampledData)
+ {
+ $this->containsSampledData = $containsSampledData;
+ }
+ /**
+ * @return bool
+ */
+ public function getContainsSampledData()
+ {
+ return $this->containsSampledData;
+ }
+ /**
+ * @param string
+ */
+ public function setDataLastRefreshed($dataLastRefreshed)
+ {
+ $this->dataLastRefreshed = $dataLastRefreshed;
+ }
+ /**
+ * @return string
+ */
+ public function getDataLastRefreshed()
+ {
+ return $this->dataLastRefreshed;
+ }
+ /**
+ * @param GaDataDataTable
+ */
+ public function setDataTable(\Google\Site_Kit_Dependencies\Google\Service\Analytics\GaDataDataTable $dataTable)
+ {
+ $this->dataTable = $dataTable;
+ }
+ /**
+ * @return GaDataDataTable
+ */
+ public function getDataTable()
+ {
+ return $this->dataTable;
+ }
+ /**
+ * @param string
+ */
+ public function setId($id)
+ {
+ $this->id = $id;
+ }
+ /**
+ * @return string
+ */
+ public function getId()
+ {
+ return $this->id;
+ }
+ /**
+ * @param int
+ */
+ public function setItemsPerPage($itemsPerPage)
+ {
+ $this->itemsPerPage = $itemsPerPage;
+ }
+ /**
+ * @return int
+ */
+ public function getItemsPerPage()
+ {
+ return $this->itemsPerPage;
+ }
+ /**
+ * @param string
+ */
+ public function setKind($kind)
+ {
+ $this->kind = $kind;
+ }
+ /**
+ * @return string
+ */
+ public function getKind()
+ {
+ return $this->kind;
+ }
+ /**
+ * @param string
+ */
+ public function setNextLink($nextLink)
+ {
+ $this->nextLink = $nextLink;
+ }
+ /**
+ * @return string
+ */
+ public function getNextLink()
+ {
+ return $this->nextLink;
+ }
+ /**
+ * @param string
+ */
+ public function setPreviousLink($previousLink)
+ {
+ $this->previousLink = $previousLink;
+ }
+ /**
+ * @return string
+ */
+ public function getPreviousLink()
+ {
+ return $this->previousLink;
+ }
+ /**
+ * @param GaDataProfileInfo
+ */
+ public function setProfileInfo(\Google\Site_Kit_Dependencies\Google\Service\Analytics\GaDataProfileInfo $profileInfo)
+ {
+ $this->profileInfo = $profileInfo;
+ }
+ /**
+ * @return GaDataProfileInfo
+ */
+ public function getProfileInfo()
+ {
+ return $this->profileInfo;
+ }
+ /**
+ * @param GaDataQuery
+ */
+ public function setQuery(\Google\Site_Kit_Dependencies\Google\Service\Analytics\GaDataQuery $query)
+ {
+ $this->query = $query;
+ }
+ /**
+ * @return GaDataQuery
+ */
+ public function getQuery()
+ {
+ return $this->query;
+ }
+ /**
+ * @param string[]
+ */
+ public function setRows($rows)
+ {
+ $this->rows = $rows;
+ }
+ /**
+ * @return string[]
+ */
+ public function getRows()
+ {
+ return $this->rows;
+ }
+ /**
+ * @param string
+ */
+ public function setSampleSize($sampleSize)
+ {
+ $this->sampleSize = $sampleSize;
+ }
+ /**
+ * @return string
+ */
+ public function getSampleSize()
+ {
+ return $this->sampleSize;
+ }
+ /**
+ * @param string
+ */
+ public function setSampleSpace($sampleSpace)
+ {
+ $this->sampleSpace = $sampleSpace;
+ }
+ /**
+ * @return string
+ */
+ public function getSampleSpace()
+ {
+ return $this->sampleSpace;
+ }
+ /**
+ * @param string
+ */
+ public function setSelfLink($selfLink)
+ {
+ $this->selfLink = $selfLink;
+ }
+ /**
+ * @return string
+ */
+ public function getSelfLink()
+ {
+ return $this->selfLink;
+ }
+ /**
+ * @param int
+ */
+ public function setTotalResults($totalResults)
+ {
+ $this->totalResults = $totalResults;
+ }
+ /**
+ * @return int
+ */
+ public function getTotalResults()
+ {
+ return $this->totalResults;
+ }
+ /**
+ * @param string[]
+ */
+ public function setTotalsForAllResults($totalsForAllResults)
+ {
+ $this->totalsForAllResults = $totalsForAllResults;
+ }
+ /**
+ * @return string[]
+ */
+ public function getTotalsForAllResults()
+ {
+ return $this->totalsForAllResults;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\GaData::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_GaData');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GaDataColumnHeaders.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GaDataColumnHeaders.php
new file mode 100644
index 000000000..2535bc831
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GaDataColumnHeaders.php
@@ -0,0 +1,78 @@
+columnType = $columnType;
+ }
+ /**
+ * @return string
+ */
+ public function getColumnType()
+ {
+ return $this->columnType;
+ }
+ /**
+ * @param string
+ */
+ public function setDataType($dataType)
+ {
+ $this->dataType = $dataType;
+ }
+ /**
+ * @return string
+ */
+ public function getDataType()
+ {
+ return $this->dataType;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\GaDataColumnHeaders::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_GaDataColumnHeaders');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GaDataDataTable.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GaDataDataTable.php
new file mode 100644
index 000000000..1ecb3cce0
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GaDataDataTable.php
@@ -0,0 +1,57 @@
+cols = $cols;
+ }
+ /**
+ * @return GaDataDataTableCols[]
+ */
+ public function getCols()
+ {
+ return $this->cols;
+ }
+ /**
+ * @param GaDataDataTableRows[]
+ */
+ public function setRows($rows)
+ {
+ $this->rows = $rows;
+ }
+ /**
+ * @return GaDataDataTableRows[]
+ */
+ public function getRows()
+ {
+ return $this->rows;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\GaDataDataTable::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_GaDataDataTable');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GaDataDataTableCols.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GaDataDataTableCols.php
new file mode 100644
index 000000000..f9d519a21
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GaDataDataTableCols.php
@@ -0,0 +1,78 @@
+id = $id;
+ }
+ /**
+ * @return string
+ */
+ public function getId()
+ {
+ return $this->id;
+ }
+ /**
+ * @param string
+ */
+ public function setLabel($label)
+ {
+ $this->label = $label;
+ }
+ /**
+ * @return string
+ */
+ public function getLabel()
+ {
+ return $this->label;
+ }
+ /**
+ * @param string
+ */
+ public function setType($type)
+ {
+ $this->type = $type;
+ }
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\GaDataDataTableCols::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_GaDataDataTableCols');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GaDataDataTableRows.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GaDataDataTableRows.php
new file mode 100644
index 000000000..04b30fe95
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GaDataDataTableRows.php
@@ -0,0 +1,41 @@
+c = $c;
+ }
+ /**
+ * @return GaDataDataTableRowsC[]
+ */
+ public function getC()
+ {
+ return $this->c;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\GaDataDataTableRows::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_GaDataDataTableRows');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GaDataDataTableRowsC.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GaDataDataTableRowsC.php
new file mode 100644
index 000000000..6d6b989e2
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GaDataDataTableRowsC.php
@@ -0,0 +1,42 @@
+v = $v;
+ }
+ /**
+ * @return string
+ */
+ public function getV()
+ {
+ return $this->v;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\GaDataDataTableRowsC::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_GaDataDataTableRowsC');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GaDataProfileInfo.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GaDataProfileInfo.php
new file mode 100644
index 000000000..08f71ed85
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GaDataProfileInfo.php
@@ -0,0 +1,132 @@
+accountId = $accountId;
+ }
+ /**
+ * @return string
+ */
+ public function getAccountId()
+ {
+ return $this->accountId;
+ }
+ /**
+ * @param string
+ */
+ public function setInternalWebPropertyId($internalWebPropertyId)
+ {
+ $this->internalWebPropertyId = $internalWebPropertyId;
+ }
+ /**
+ * @return string
+ */
+ public function getInternalWebPropertyId()
+ {
+ return $this->internalWebPropertyId;
+ }
+ /**
+ * @param string
+ */
+ public function setProfileId($profileId)
+ {
+ $this->profileId = $profileId;
+ }
+ /**
+ * @return string
+ */
+ public function getProfileId()
+ {
+ return $this->profileId;
+ }
+ /**
+ * @param string
+ */
+ public function setProfileName($profileName)
+ {
+ $this->profileName = $profileName;
+ }
+ /**
+ * @return string
+ */
+ public function getProfileName()
+ {
+ return $this->profileName;
+ }
+ /**
+ * @param string
+ */
+ public function setTableId($tableId)
+ {
+ $this->tableId = $tableId;
+ }
+ /**
+ * @return string
+ */
+ public function getTableId()
+ {
+ return $this->tableId;
+ }
+ /**
+ * @param string
+ */
+ public function setWebPropertyId($webPropertyId)
+ {
+ $this->webPropertyId = $webPropertyId;
+ }
+ /**
+ * @return string
+ */
+ public function getWebPropertyId()
+ {
+ return $this->webPropertyId;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\GaDataProfileInfo::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_GaDataProfileInfo');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GaDataQuery.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GaDataQuery.php
new file mode 100644
index 000000000..92c679f51
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GaDataQuery.php
@@ -0,0 +1,224 @@
+ "end-date", "maxResults" => "max-results", "startDate" => "start-date", "startIndex" => "start-index"];
+ /**
+ * @var string
+ */
+ public $dimensions;
+ /**
+ * @var string
+ */
+ public $endDate;
+ /**
+ * @var string
+ */
+ public $filters;
+ /**
+ * @var string
+ */
+ public $ids;
+ /**
+ * @var int
+ */
+ public $maxResults;
+ /**
+ * @var string[]
+ */
+ public $metrics;
+ /**
+ * @var string
+ */
+ public $samplingLevel;
+ /**
+ * @var string
+ */
+ public $segment;
+ /**
+ * @var string[]
+ */
+ public $sort;
+ /**
+ * @var string
+ */
+ public $startDate;
+ /**
+ * @var int
+ */
+ public $startIndex;
+ /**
+ * @param string
+ */
+ public function setDimensions($dimensions)
+ {
+ $this->dimensions = $dimensions;
+ }
+ /**
+ * @return string
+ */
+ public function getDimensions()
+ {
+ return $this->dimensions;
+ }
+ /**
+ * @param string
+ */
+ public function setEndDate($endDate)
+ {
+ $this->endDate = $endDate;
+ }
+ /**
+ * @return string
+ */
+ public function getEndDate()
+ {
+ return $this->endDate;
+ }
+ /**
+ * @param string
+ */
+ public function setFilters($filters)
+ {
+ $this->filters = $filters;
+ }
+ /**
+ * @return string
+ */
+ public function getFilters()
+ {
+ return $this->filters;
+ }
+ /**
+ * @param string
+ */
+ public function setIds($ids)
+ {
+ $this->ids = $ids;
+ }
+ /**
+ * @return string
+ */
+ public function getIds()
+ {
+ return $this->ids;
+ }
+ /**
+ * @param int
+ */
+ public function setMaxResults($maxResults)
+ {
+ $this->maxResults = $maxResults;
+ }
+ /**
+ * @return int
+ */
+ public function getMaxResults()
+ {
+ return $this->maxResults;
+ }
+ /**
+ * @param string[]
+ */
+ public function setMetrics($metrics)
+ {
+ $this->metrics = $metrics;
+ }
+ /**
+ * @return string[]
+ */
+ public function getMetrics()
+ {
+ return $this->metrics;
+ }
+ /**
+ * @param string
+ */
+ public function setSamplingLevel($samplingLevel)
+ {
+ $this->samplingLevel = $samplingLevel;
+ }
+ /**
+ * @return string
+ */
+ public function getSamplingLevel()
+ {
+ return $this->samplingLevel;
+ }
+ /**
+ * @param string
+ */
+ public function setSegment($segment)
+ {
+ $this->segment = $segment;
+ }
+ /**
+ * @return string
+ */
+ public function getSegment()
+ {
+ return $this->segment;
+ }
+ /**
+ * @param string[]
+ */
+ public function setSort($sort)
+ {
+ $this->sort = $sort;
+ }
+ /**
+ * @return string[]
+ */
+ public function getSort()
+ {
+ return $this->sort;
+ }
+ /**
+ * @param string
+ */
+ public function setStartDate($startDate)
+ {
+ $this->startDate = $startDate;
+ }
+ /**
+ * @return string
+ */
+ public function getStartDate()
+ {
+ return $this->startDate;
+ }
+ /**
+ * @param int
+ */
+ public function setStartIndex($startIndex)
+ {
+ $this->startIndex = $startIndex;
+ }
+ /**
+ * @return int
+ */
+ public function getStartIndex()
+ {
+ return $this->startIndex;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\GaDataQuery::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_GaDataQuery');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Goal.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Goal.php
new file mode 100644
index 000000000..8964f2732
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Goal.php
@@ -0,0 +1,338 @@
+accountId = $accountId;
+ }
+ /**
+ * @return string
+ */
+ public function getAccountId()
+ {
+ return $this->accountId;
+ }
+ /**
+ * @param bool
+ */
+ public function setActive($active)
+ {
+ $this->active = $active;
+ }
+ /**
+ * @return bool
+ */
+ public function getActive()
+ {
+ return $this->active;
+ }
+ /**
+ * @param string
+ */
+ public function setCreated($created)
+ {
+ $this->created = $created;
+ }
+ /**
+ * @return string
+ */
+ public function getCreated()
+ {
+ return $this->created;
+ }
+ /**
+ * @param GoalEventDetails
+ */
+ public function setEventDetails(\Google\Site_Kit_Dependencies\Google\Service\Analytics\GoalEventDetails $eventDetails)
+ {
+ $this->eventDetails = $eventDetails;
+ }
+ /**
+ * @return GoalEventDetails
+ */
+ public function getEventDetails()
+ {
+ return $this->eventDetails;
+ }
+ /**
+ * @param string
+ */
+ public function setId($id)
+ {
+ $this->id = $id;
+ }
+ /**
+ * @return string
+ */
+ public function getId()
+ {
+ return $this->id;
+ }
+ /**
+ * @param string
+ */
+ public function setInternalWebPropertyId($internalWebPropertyId)
+ {
+ $this->internalWebPropertyId = $internalWebPropertyId;
+ }
+ /**
+ * @return string
+ */
+ public function getInternalWebPropertyId()
+ {
+ return $this->internalWebPropertyId;
+ }
+ /**
+ * @param string
+ */
+ public function setKind($kind)
+ {
+ $this->kind = $kind;
+ }
+ /**
+ * @return string
+ */
+ public function getKind()
+ {
+ return $this->kind;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param GoalParentLink
+ */
+ public function setParentLink(\Google\Site_Kit_Dependencies\Google\Service\Analytics\GoalParentLink $parentLink)
+ {
+ $this->parentLink = $parentLink;
+ }
+ /**
+ * @return GoalParentLink
+ */
+ public function getParentLink()
+ {
+ return $this->parentLink;
+ }
+ /**
+ * @param string
+ */
+ public function setProfileId($profileId)
+ {
+ $this->profileId = $profileId;
+ }
+ /**
+ * @return string
+ */
+ public function getProfileId()
+ {
+ return $this->profileId;
+ }
+ /**
+ * @param string
+ */
+ public function setSelfLink($selfLink)
+ {
+ $this->selfLink = $selfLink;
+ }
+ /**
+ * @return string
+ */
+ public function getSelfLink()
+ {
+ return $this->selfLink;
+ }
+ /**
+ * @param string
+ */
+ public function setType($type)
+ {
+ $this->type = $type;
+ }
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+ /**
+ * @param string
+ */
+ public function setUpdated($updated)
+ {
+ $this->updated = $updated;
+ }
+ /**
+ * @return string
+ */
+ public function getUpdated()
+ {
+ return $this->updated;
+ }
+ /**
+ * @param GoalUrlDestinationDetails
+ */
+ public function setUrlDestinationDetails(\Google\Site_Kit_Dependencies\Google\Service\Analytics\GoalUrlDestinationDetails $urlDestinationDetails)
+ {
+ $this->urlDestinationDetails = $urlDestinationDetails;
+ }
+ /**
+ * @return GoalUrlDestinationDetails
+ */
+ public function getUrlDestinationDetails()
+ {
+ return $this->urlDestinationDetails;
+ }
+ /**
+ * @param float
+ */
+ public function setValue($value)
+ {
+ $this->value = $value;
+ }
+ /**
+ * @return float
+ */
+ public function getValue()
+ {
+ return $this->value;
+ }
+ /**
+ * @param GoalVisitNumPagesDetails
+ */
+ public function setVisitNumPagesDetails(\Google\Site_Kit_Dependencies\Google\Service\Analytics\GoalVisitNumPagesDetails $visitNumPagesDetails)
+ {
+ $this->visitNumPagesDetails = $visitNumPagesDetails;
+ }
+ /**
+ * @return GoalVisitNumPagesDetails
+ */
+ public function getVisitNumPagesDetails()
+ {
+ return $this->visitNumPagesDetails;
+ }
+ /**
+ * @param GoalVisitTimeOnSiteDetails
+ */
+ public function setVisitTimeOnSiteDetails(\Google\Site_Kit_Dependencies\Google\Service\Analytics\GoalVisitTimeOnSiteDetails $visitTimeOnSiteDetails)
+ {
+ $this->visitTimeOnSiteDetails = $visitTimeOnSiteDetails;
+ }
+ /**
+ * @return GoalVisitTimeOnSiteDetails
+ */
+ public function getVisitTimeOnSiteDetails()
+ {
+ return $this->visitTimeOnSiteDetails;
+ }
+ /**
+ * @param string
+ */
+ public function setWebPropertyId($webPropertyId)
+ {
+ $this->webPropertyId = $webPropertyId;
+ }
+ /**
+ * @return string
+ */
+ public function getWebPropertyId()
+ {
+ return $this->webPropertyId;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Goal::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Goal');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GoalEventDetails.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GoalEventDetails.php
new file mode 100644
index 000000000..545f520d2
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GoalEventDetails.php
@@ -0,0 +1,59 @@
+eventConditions = $eventConditions;
+ }
+ /**
+ * @return GoalEventDetailsEventConditions[]
+ */
+ public function getEventConditions()
+ {
+ return $this->eventConditions;
+ }
+ /**
+ * @param bool
+ */
+ public function setUseEventValue($useEventValue)
+ {
+ $this->useEventValue = $useEventValue;
+ }
+ /**
+ * @return bool
+ */
+ public function getUseEventValue()
+ {
+ return $this->useEventValue;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\GoalEventDetails::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_GoalEventDetails');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GoalEventDetailsEventConditions.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GoalEventDetailsEventConditions.php
new file mode 100644
index 000000000..be454caa0
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GoalEventDetailsEventConditions.php
@@ -0,0 +1,114 @@
+comparisonType = $comparisonType;
+ }
+ /**
+ * @return string
+ */
+ public function getComparisonType()
+ {
+ return $this->comparisonType;
+ }
+ /**
+ * @param string
+ */
+ public function setComparisonValue($comparisonValue)
+ {
+ $this->comparisonValue = $comparisonValue;
+ }
+ /**
+ * @return string
+ */
+ public function getComparisonValue()
+ {
+ return $this->comparisonValue;
+ }
+ /**
+ * @param string
+ */
+ public function setExpression($expression)
+ {
+ $this->expression = $expression;
+ }
+ /**
+ * @return string
+ */
+ public function getExpression()
+ {
+ return $this->expression;
+ }
+ /**
+ * @param string
+ */
+ public function setMatchType($matchType)
+ {
+ $this->matchType = $matchType;
+ }
+ /**
+ * @return string
+ */
+ public function getMatchType()
+ {
+ return $this->matchType;
+ }
+ /**
+ * @param string
+ */
+ public function setType($type)
+ {
+ $this->type = $type;
+ }
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\GoalEventDetailsEventConditions::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_GoalEventDetailsEventConditions');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GoalParentLink.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GoalParentLink.php
new file mode 100644
index 000000000..5338b65e0
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GoalParentLink.php
@@ -0,0 +1,60 @@
+href = $href;
+ }
+ /**
+ * @return string
+ */
+ public function getHref()
+ {
+ return $this->href;
+ }
+ /**
+ * @param string
+ */
+ public function setType($type)
+ {
+ $this->type = $type;
+ }
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\GoalParentLink::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_GoalParentLink');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GoalUrlDestinationDetails.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GoalUrlDestinationDetails.php
new file mode 100644
index 000000000..8a180f5cf
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GoalUrlDestinationDetails.php
@@ -0,0 +1,113 @@
+caseSensitive = $caseSensitive;
+ }
+ /**
+ * @return bool
+ */
+ public function getCaseSensitive()
+ {
+ return $this->caseSensitive;
+ }
+ /**
+ * @param bool
+ */
+ public function setFirstStepRequired($firstStepRequired)
+ {
+ $this->firstStepRequired = $firstStepRequired;
+ }
+ /**
+ * @return bool
+ */
+ public function getFirstStepRequired()
+ {
+ return $this->firstStepRequired;
+ }
+ /**
+ * @param string
+ */
+ public function setMatchType($matchType)
+ {
+ $this->matchType = $matchType;
+ }
+ /**
+ * @return string
+ */
+ public function getMatchType()
+ {
+ return $this->matchType;
+ }
+ /**
+ * @param GoalUrlDestinationDetailsSteps[]
+ */
+ public function setSteps($steps)
+ {
+ $this->steps = $steps;
+ }
+ /**
+ * @return GoalUrlDestinationDetailsSteps[]
+ */
+ public function getSteps()
+ {
+ return $this->steps;
+ }
+ /**
+ * @param string
+ */
+ public function setUrl($url)
+ {
+ $this->url = $url;
+ }
+ /**
+ * @return string
+ */
+ public function getUrl()
+ {
+ return $this->url;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\GoalUrlDestinationDetails::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_GoalUrlDestinationDetails');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GoalUrlDestinationDetailsSteps.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GoalUrlDestinationDetailsSteps.php
new file mode 100644
index 000000000..07052c368
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GoalUrlDestinationDetailsSteps.php
@@ -0,0 +1,78 @@
+name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param int
+ */
+ public function setNumber($number)
+ {
+ $this->number = $number;
+ }
+ /**
+ * @return int
+ */
+ public function getNumber()
+ {
+ return $this->number;
+ }
+ /**
+ * @param string
+ */
+ public function setUrl($url)
+ {
+ $this->url = $url;
+ }
+ /**
+ * @return string
+ */
+ public function getUrl()
+ {
+ return $this->url;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\GoalUrlDestinationDetailsSteps::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_GoalUrlDestinationDetailsSteps');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GoalVisitNumPagesDetails.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GoalVisitNumPagesDetails.php
new file mode 100644
index 000000000..60d45baa8
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GoalVisitNumPagesDetails.php
@@ -0,0 +1,60 @@
+comparisonType = $comparisonType;
+ }
+ /**
+ * @return string
+ */
+ public function getComparisonType()
+ {
+ return $this->comparisonType;
+ }
+ /**
+ * @param string
+ */
+ public function setComparisonValue($comparisonValue)
+ {
+ $this->comparisonValue = $comparisonValue;
+ }
+ /**
+ * @return string
+ */
+ public function getComparisonValue()
+ {
+ return $this->comparisonValue;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\GoalVisitNumPagesDetails::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_GoalVisitNumPagesDetails');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GoalVisitTimeOnSiteDetails.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GoalVisitTimeOnSiteDetails.php
new file mode 100644
index 000000000..f57e80e41
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/GoalVisitTimeOnSiteDetails.php
@@ -0,0 +1,60 @@
+comparisonType = $comparisonType;
+ }
+ /**
+ * @return string
+ */
+ public function getComparisonType()
+ {
+ return $this->comparisonType;
+ }
+ /**
+ * @param string
+ */
+ public function setComparisonValue($comparisonValue)
+ {
+ $this->comparisonValue = $comparisonValue;
+ }
+ /**
+ * @return string
+ */
+ public function getComparisonValue()
+ {
+ return $this->comparisonValue;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\GoalVisitTimeOnSiteDetails::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_GoalVisitTimeOnSiteDetails');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Goals.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Goals.php
new file mode 100644
index 000000000..c2f40f585
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Goals.php
@@ -0,0 +1,167 @@
+items = $items;
+ }
+ /**
+ * @return Goal[]
+ */
+ public function getItems()
+ {
+ return $this->items;
+ }
+ /**
+ * @param int
+ */
+ public function setItemsPerPage($itemsPerPage)
+ {
+ $this->itemsPerPage = $itemsPerPage;
+ }
+ /**
+ * @return int
+ */
+ public function getItemsPerPage()
+ {
+ return $this->itemsPerPage;
+ }
+ /**
+ * @param string
+ */
+ public function setKind($kind)
+ {
+ $this->kind = $kind;
+ }
+ /**
+ * @return string
+ */
+ public function getKind()
+ {
+ return $this->kind;
+ }
+ /**
+ * @param string
+ */
+ public function setNextLink($nextLink)
+ {
+ $this->nextLink = $nextLink;
+ }
+ /**
+ * @return string
+ */
+ public function getNextLink()
+ {
+ return $this->nextLink;
+ }
+ /**
+ * @param string
+ */
+ public function setPreviousLink($previousLink)
+ {
+ $this->previousLink = $previousLink;
+ }
+ /**
+ * @return string
+ */
+ public function getPreviousLink()
+ {
+ return $this->previousLink;
+ }
+ /**
+ * @param int
+ */
+ public function setStartIndex($startIndex)
+ {
+ $this->startIndex = $startIndex;
+ }
+ /**
+ * @return int
+ */
+ public function getStartIndex()
+ {
+ return $this->startIndex;
+ }
+ /**
+ * @param int
+ */
+ public function setTotalResults($totalResults)
+ {
+ $this->totalResults = $totalResults;
+ }
+ /**
+ * @return int
+ */
+ public function getTotalResults()
+ {
+ return $this->totalResults;
+ }
+ /**
+ * @param string
+ */
+ public function setUsername($username)
+ {
+ $this->username = $username;
+ }
+ /**
+ * @return string
+ */
+ public function getUsername()
+ {
+ return $this->username;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Goals::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Goals');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/HashClientIdRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/HashClientIdRequest.php
new file mode 100644
index 000000000..1c2a52864
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/HashClientIdRequest.php
@@ -0,0 +1,78 @@
+clientId = $clientId;
+ }
+ /**
+ * @return string
+ */
+ public function getClientId()
+ {
+ return $this->clientId;
+ }
+ /**
+ * @param string
+ */
+ public function setKind($kind)
+ {
+ $this->kind = $kind;
+ }
+ /**
+ * @return string
+ */
+ public function getKind()
+ {
+ return $this->kind;
+ }
+ /**
+ * @param string
+ */
+ public function setWebPropertyId($webPropertyId)
+ {
+ $this->webPropertyId = $webPropertyId;
+ }
+ /**
+ * @return string
+ */
+ public function getWebPropertyId()
+ {
+ return $this->webPropertyId;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\HashClientIdRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_HashClientIdRequest');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/HashClientIdResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/HashClientIdResponse.php
new file mode 100644
index 000000000..a6024ec3d
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/HashClientIdResponse.php
@@ -0,0 +1,96 @@
+clientId = $clientId;
+ }
+ /**
+ * @return string
+ */
+ public function getClientId()
+ {
+ return $this->clientId;
+ }
+ /**
+ * @param string
+ */
+ public function setHashedClientId($hashedClientId)
+ {
+ $this->hashedClientId = $hashedClientId;
+ }
+ /**
+ * @return string
+ */
+ public function getHashedClientId()
+ {
+ return $this->hashedClientId;
+ }
+ /**
+ * @param string
+ */
+ public function setKind($kind)
+ {
+ $this->kind = $kind;
+ }
+ /**
+ * @return string
+ */
+ public function getKind()
+ {
+ return $this->kind;
+ }
+ /**
+ * @param string
+ */
+ public function setWebPropertyId($webPropertyId)
+ {
+ $this->webPropertyId = $webPropertyId;
+ }
+ /**
+ * @return string
+ */
+ public function getWebPropertyId()
+ {
+ return $this->webPropertyId;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\HashClientIdResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_HashClientIdResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/IncludeConditions.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/IncludeConditions.php
new file mode 100644
index 000000000..232828918
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/IncludeConditions.php
@@ -0,0 +1,114 @@
+daysToLookBack = $daysToLookBack;
+ }
+ /**
+ * @return int
+ */
+ public function getDaysToLookBack()
+ {
+ return $this->daysToLookBack;
+ }
+ /**
+ * @param bool
+ */
+ public function setIsSmartList($isSmartList)
+ {
+ $this->isSmartList = $isSmartList;
+ }
+ /**
+ * @return bool
+ */
+ public function getIsSmartList()
+ {
+ return $this->isSmartList;
+ }
+ /**
+ * @param string
+ */
+ public function setKind($kind)
+ {
+ $this->kind = $kind;
+ }
+ /**
+ * @return string
+ */
+ public function getKind()
+ {
+ return $this->kind;
+ }
+ /**
+ * @param int
+ */
+ public function setMembershipDurationDays($membershipDurationDays)
+ {
+ $this->membershipDurationDays = $membershipDurationDays;
+ }
+ /**
+ * @return int
+ */
+ public function getMembershipDurationDays()
+ {
+ return $this->membershipDurationDays;
+ }
+ /**
+ * @param string
+ */
+ public function setSegment($segment)
+ {
+ $this->segment = $segment;
+ }
+ /**
+ * @return string
+ */
+ public function getSegment()
+ {
+ return $this->segment;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\IncludeConditions::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_IncludeConditions');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/LinkedForeignAccount.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/LinkedForeignAccount.php
new file mode 100644
index 000000000..418c90451
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/LinkedForeignAccount.php
@@ -0,0 +1,204 @@
+accountId = $accountId;
+ }
+ /**
+ * @return string
+ */
+ public function getAccountId()
+ {
+ return $this->accountId;
+ }
+ /**
+ * @param bool
+ */
+ public function setEligibleForSearch($eligibleForSearch)
+ {
+ $this->eligibleForSearch = $eligibleForSearch;
+ }
+ /**
+ * @return bool
+ */
+ public function getEligibleForSearch()
+ {
+ return $this->eligibleForSearch;
+ }
+ /**
+ * @param string
+ */
+ public function setId($id)
+ {
+ $this->id = $id;
+ }
+ /**
+ * @return string
+ */
+ public function getId()
+ {
+ return $this->id;
+ }
+ /**
+ * @param string
+ */
+ public function setInternalWebPropertyId($internalWebPropertyId)
+ {
+ $this->internalWebPropertyId = $internalWebPropertyId;
+ }
+ /**
+ * @return string
+ */
+ public function getInternalWebPropertyId()
+ {
+ return $this->internalWebPropertyId;
+ }
+ /**
+ * @param string
+ */
+ public function setKind($kind)
+ {
+ $this->kind = $kind;
+ }
+ /**
+ * @return string
+ */
+ public function getKind()
+ {
+ return $this->kind;
+ }
+ /**
+ * @param string
+ */
+ public function setLinkedAccountId($linkedAccountId)
+ {
+ $this->linkedAccountId = $linkedAccountId;
+ }
+ /**
+ * @return string
+ */
+ public function getLinkedAccountId()
+ {
+ return $this->linkedAccountId;
+ }
+ /**
+ * @param string
+ */
+ public function setRemarketingAudienceId($remarketingAudienceId)
+ {
+ $this->remarketingAudienceId = $remarketingAudienceId;
+ }
+ /**
+ * @return string
+ */
+ public function getRemarketingAudienceId()
+ {
+ return $this->remarketingAudienceId;
+ }
+ /**
+ * @param string
+ */
+ public function setStatus($status)
+ {
+ $this->status = $status;
+ }
+ /**
+ * @return string
+ */
+ public function getStatus()
+ {
+ return $this->status;
+ }
+ /**
+ * @param string
+ */
+ public function setType($type)
+ {
+ $this->type = $type;
+ }
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+ /**
+ * @param string
+ */
+ public function setWebPropertyId($webPropertyId)
+ {
+ $this->webPropertyId = $webPropertyId;
+ }
+ /**
+ * @return string
+ */
+ public function getWebPropertyId()
+ {
+ return $this->webPropertyId;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\LinkedForeignAccount::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_LinkedForeignAccount');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/McfData.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/McfData.php
new file mode 100644
index 000000000..be9d07168
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/McfData.php
@@ -0,0 +1,287 @@
+columnHeaders = $columnHeaders;
+ }
+ /**
+ * @return McfDataColumnHeaders[]
+ */
+ public function getColumnHeaders()
+ {
+ return $this->columnHeaders;
+ }
+ /**
+ * @param bool
+ */
+ public function setContainsSampledData($containsSampledData)
+ {
+ $this->containsSampledData = $containsSampledData;
+ }
+ /**
+ * @return bool
+ */
+ public function getContainsSampledData()
+ {
+ return $this->containsSampledData;
+ }
+ /**
+ * @param string
+ */
+ public function setId($id)
+ {
+ $this->id = $id;
+ }
+ /**
+ * @return string
+ */
+ public function getId()
+ {
+ return $this->id;
+ }
+ /**
+ * @param int
+ */
+ public function setItemsPerPage($itemsPerPage)
+ {
+ $this->itemsPerPage = $itemsPerPage;
+ }
+ /**
+ * @return int
+ */
+ public function getItemsPerPage()
+ {
+ return $this->itemsPerPage;
+ }
+ /**
+ * @param string
+ */
+ public function setKind($kind)
+ {
+ $this->kind = $kind;
+ }
+ /**
+ * @return string
+ */
+ public function getKind()
+ {
+ return $this->kind;
+ }
+ /**
+ * @param string
+ */
+ public function setNextLink($nextLink)
+ {
+ $this->nextLink = $nextLink;
+ }
+ /**
+ * @return string
+ */
+ public function getNextLink()
+ {
+ return $this->nextLink;
+ }
+ /**
+ * @param string
+ */
+ public function setPreviousLink($previousLink)
+ {
+ $this->previousLink = $previousLink;
+ }
+ /**
+ * @return string
+ */
+ public function getPreviousLink()
+ {
+ return $this->previousLink;
+ }
+ /**
+ * @param McfDataProfileInfo
+ */
+ public function setProfileInfo(\Google\Site_Kit_Dependencies\Google\Service\Analytics\McfDataProfileInfo $profileInfo)
+ {
+ $this->profileInfo = $profileInfo;
+ }
+ /**
+ * @return McfDataProfileInfo
+ */
+ public function getProfileInfo()
+ {
+ return $this->profileInfo;
+ }
+ /**
+ * @param McfDataQuery
+ */
+ public function setQuery(\Google\Site_Kit_Dependencies\Google\Service\Analytics\McfDataQuery $query)
+ {
+ $this->query = $query;
+ }
+ /**
+ * @return McfDataQuery
+ */
+ public function getQuery()
+ {
+ return $this->query;
+ }
+ /**
+ * @param McfDataRows[]
+ */
+ public function setRows($rows)
+ {
+ $this->rows = $rows;
+ }
+ /**
+ * @return McfDataRows[]
+ */
+ public function getRows()
+ {
+ return $this->rows;
+ }
+ /**
+ * @param string
+ */
+ public function setSampleSize($sampleSize)
+ {
+ $this->sampleSize = $sampleSize;
+ }
+ /**
+ * @return string
+ */
+ public function getSampleSize()
+ {
+ return $this->sampleSize;
+ }
+ /**
+ * @param string
+ */
+ public function setSampleSpace($sampleSpace)
+ {
+ $this->sampleSpace = $sampleSpace;
+ }
+ /**
+ * @return string
+ */
+ public function getSampleSpace()
+ {
+ return $this->sampleSpace;
+ }
+ /**
+ * @param string
+ */
+ public function setSelfLink($selfLink)
+ {
+ $this->selfLink = $selfLink;
+ }
+ /**
+ * @return string
+ */
+ public function getSelfLink()
+ {
+ return $this->selfLink;
+ }
+ /**
+ * @param int
+ */
+ public function setTotalResults($totalResults)
+ {
+ $this->totalResults = $totalResults;
+ }
+ /**
+ * @return int
+ */
+ public function getTotalResults()
+ {
+ return $this->totalResults;
+ }
+ /**
+ * @param string[]
+ */
+ public function setTotalsForAllResults($totalsForAllResults)
+ {
+ $this->totalsForAllResults = $totalsForAllResults;
+ }
+ /**
+ * @return string[]
+ */
+ public function getTotalsForAllResults()
+ {
+ return $this->totalsForAllResults;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\McfData::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_McfData');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/McfDataColumnHeaders.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/McfDataColumnHeaders.php
new file mode 100644
index 000000000..76741e993
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/McfDataColumnHeaders.php
@@ -0,0 +1,78 @@
+columnType = $columnType;
+ }
+ /**
+ * @return string
+ */
+ public function getColumnType()
+ {
+ return $this->columnType;
+ }
+ /**
+ * @param string
+ */
+ public function setDataType($dataType)
+ {
+ $this->dataType = $dataType;
+ }
+ /**
+ * @return string
+ */
+ public function getDataType()
+ {
+ return $this->dataType;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\McfDataColumnHeaders::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_McfDataColumnHeaders');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/McfDataProfileInfo.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/McfDataProfileInfo.php
new file mode 100644
index 000000000..05c609878
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/McfDataProfileInfo.php
@@ -0,0 +1,132 @@
+accountId = $accountId;
+ }
+ /**
+ * @return string
+ */
+ public function getAccountId()
+ {
+ return $this->accountId;
+ }
+ /**
+ * @param string
+ */
+ public function setInternalWebPropertyId($internalWebPropertyId)
+ {
+ $this->internalWebPropertyId = $internalWebPropertyId;
+ }
+ /**
+ * @return string
+ */
+ public function getInternalWebPropertyId()
+ {
+ return $this->internalWebPropertyId;
+ }
+ /**
+ * @param string
+ */
+ public function setProfileId($profileId)
+ {
+ $this->profileId = $profileId;
+ }
+ /**
+ * @return string
+ */
+ public function getProfileId()
+ {
+ return $this->profileId;
+ }
+ /**
+ * @param string
+ */
+ public function setProfileName($profileName)
+ {
+ $this->profileName = $profileName;
+ }
+ /**
+ * @return string
+ */
+ public function getProfileName()
+ {
+ return $this->profileName;
+ }
+ /**
+ * @param string
+ */
+ public function setTableId($tableId)
+ {
+ $this->tableId = $tableId;
+ }
+ /**
+ * @return string
+ */
+ public function getTableId()
+ {
+ return $this->tableId;
+ }
+ /**
+ * @param string
+ */
+ public function setWebPropertyId($webPropertyId)
+ {
+ $this->webPropertyId = $webPropertyId;
+ }
+ /**
+ * @return string
+ */
+ public function getWebPropertyId()
+ {
+ return $this->webPropertyId;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\McfDataProfileInfo::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_McfDataProfileInfo');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/McfDataQuery.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/McfDataQuery.php
new file mode 100644
index 000000000..e4e870cb9
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/McfDataQuery.php
@@ -0,0 +1,224 @@
+ "end-date", "maxResults" => "max-results", "startDate" => "start-date", "startIndex" => "start-index"];
+ /**
+ * @var string
+ */
+ public $dimensions;
+ /**
+ * @var string
+ */
+ public $endDate;
+ /**
+ * @var string
+ */
+ public $filters;
+ /**
+ * @var string
+ */
+ public $ids;
+ /**
+ * @var int
+ */
+ public $maxResults;
+ /**
+ * @var string[]
+ */
+ public $metrics;
+ /**
+ * @var string
+ */
+ public $samplingLevel;
+ /**
+ * @var string
+ */
+ public $segment;
+ /**
+ * @var string[]
+ */
+ public $sort;
+ /**
+ * @var string
+ */
+ public $startDate;
+ /**
+ * @var int
+ */
+ public $startIndex;
+ /**
+ * @param string
+ */
+ public function setDimensions($dimensions)
+ {
+ $this->dimensions = $dimensions;
+ }
+ /**
+ * @return string
+ */
+ public function getDimensions()
+ {
+ return $this->dimensions;
+ }
+ /**
+ * @param string
+ */
+ public function setEndDate($endDate)
+ {
+ $this->endDate = $endDate;
+ }
+ /**
+ * @return string
+ */
+ public function getEndDate()
+ {
+ return $this->endDate;
+ }
+ /**
+ * @param string
+ */
+ public function setFilters($filters)
+ {
+ $this->filters = $filters;
+ }
+ /**
+ * @return string
+ */
+ public function getFilters()
+ {
+ return $this->filters;
+ }
+ /**
+ * @param string
+ */
+ public function setIds($ids)
+ {
+ $this->ids = $ids;
+ }
+ /**
+ * @return string
+ */
+ public function getIds()
+ {
+ return $this->ids;
+ }
+ /**
+ * @param int
+ */
+ public function setMaxResults($maxResults)
+ {
+ $this->maxResults = $maxResults;
+ }
+ /**
+ * @return int
+ */
+ public function getMaxResults()
+ {
+ return $this->maxResults;
+ }
+ /**
+ * @param string[]
+ */
+ public function setMetrics($metrics)
+ {
+ $this->metrics = $metrics;
+ }
+ /**
+ * @return string[]
+ */
+ public function getMetrics()
+ {
+ return $this->metrics;
+ }
+ /**
+ * @param string
+ */
+ public function setSamplingLevel($samplingLevel)
+ {
+ $this->samplingLevel = $samplingLevel;
+ }
+ /**
+ * @return string
+ */
+ public function getSamplingLevel()
+ {
+ return $this->samplingLevel;
+ }
+ /**
+ * @param string
+ */
+ public function setSegment($segment)
+ {
+ $this->segment = $segment;
+ }
+ /**
+ * @return string
+ */
+ public function getSegment()
+ {
+ return $this->segment;
+ }
+ /**
+ * @param string[]
+ */
+ public function setSort($sort)
+ {
+ $this->sort = $sort;
+ }
+ /**
+ * @return string[]
+ */
+ public function getSort()
+ {
+ return $this->sort;
+ }
+ /**
+ * @param string
+ */
+ public function setStartDate($startDate)
+ {
+ $this->startDate = $startDate;
+ }
+ /**
+ * @return string
+ */
+ public function getStartDate()
+ {
+ return $this->startDate;
+ }
+ /**
+ * @param int
+ */
+ public function setStartIndex($startIndex)
+ {
+ $this->startIndex = $startIndex;
+ }
+ /**
+ * @return int
+ */
+ public function getStartIndex()
+ {
+ return $this->startIndex;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\McfDataQuery::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_McfDataQuery');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/McfDataRows.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/McfDataRows.php
new file mode 100644
index 000000000..bc3833360
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/McfDataRows.php
@@ -0,0 +1,59 @@
+conversionPathValue = $conversionPathValue;
+ }
+ /**
+ * @return McfDataRowsConversionPathValue[]
+ */
+ public function getConversionPathValue()
+ {
+ return $this->conversionPathValue;
+ }
+ /**
+ * @param string
+ */
+ public function setPrimitiveValue($primitiveValue)
+ {
+ $this->primitiveValue = $primitiveValue;
+ }
+ /**
+ * @return string
+ */
+ public function getPrimitiveValue()
+ {
+ return $this->primitiveValue;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\McfDataRows::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_McfDataRows');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/McfDataRowsConversionPathValue.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/McfDataRowsConversionPathValue.php
new file mode 100644
index 000000000..93d9af54f
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/McfDataRowsConversionPathValue.php
@@ -0,0 +1,60 @@
+interactionType = $interactionType;
+ }
+ /**
+ * @return string
+ */
+ public function getInteractionType()
+ {
+ return $this->interactionType;
+ }
+ /**
+ * @param string
+ */
+ public function setNodeValue($nodeValue)
+ {
+ $this->nodeValue = $nodeValue;
+ }
+ /**
+ * @return string
+ */
+ public function getNodeValue()
+ {
+ return $this->nodeValue;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\McfDataRowsConversionPathValue::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_McfDataRowsConversionPathValue');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Profile.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Profile.php
new file mode 100644
index 000000000..f60a018d8
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Profile.php
@@ -0,0 +1,486 @@
+accountId = $accountId;
+ }
+ /**
+ * @return string
+ */
+ public function getAccountId()
+ {
+ return $this->accountId;
+ }
+ /**
+ * @param bool
+ */
+ public function setBotFilteringEnabled($botFilteringEnabled)
+ {
+ $this->botFilteringEnabled = $botFilteringEnabled;
+ }
+ /**
+ * @return bool
+ */
+ public function getBotFilteringEnabled()
+ {
+ return $this->botFilteringEnabled;
+ }
+ /**
+ * @param ProfileChildLink
+ */
+ public function setChildLink(\Google\Site_Kit_Dependencies\Google\Service\Analytics\ProfileChildLink $childLink)
+ {
+ $this->childLink = $childLink;
+ }
+ /**
+ * @return ProfileChildLink
+ */
+ public function getChildLink()
+ {
+ return $this->childLink;
+ }
+ /**
+ * @param string
+ */
+ public function setCreated($created)
+ {
+ $this->created = $created;
+ }
+ /**
+ * @return string
+ */
+ public function getCreated()
+ {
+ return $this->created;
+ }
+ /**
+ * @param string
+ */
+ public function setCurrency($currency)
+ {
+ $this->currency = $currency;
+ }
+ /**
+ * @return string
+ */
+ public function getCurrency()
+ {
+ return $this->currency;
+ }
+ /**
+ * @param string
+ */
+ public function setDefaultPage($defaultPage)
+ {
+ $this->defaultPage = $defaultPage;
+ }
+ /**
+ * @return string
+ */
+ public function getDefaultPage()
+ {
+ return $this->defaultPage;
+ }
+ /**
+ * @param bool
+ */
+ public function setECommerceTracking($eCommerceTracking)
+ {
+ $this->eCommerceTracking = $eCommerceTracking;
+ }
+ /**
+ * @return bool
+ */
+ public function getECommerceTracking()
+ {
+ return $this->eCommerceTracking;
+ }
+ /**
+ * @param bool
+ */
+ public function setEnhancedECommerceTracking($enhancedECommerceTracking)
+ {
+ $this->enhancedECommerceTracking = $enhancedECommerceTracking;
+ }
+ /**
+ * @return bool
+ */
+ public function getEnhancedECommerceTracking()
+ {
+ return $this->enhancedECommerceTracking;
+ }
+ /**
+ * @param string
+ */
+ public function setExcludeQueryParameters($excludeQueryParameters)
+ {
+ $this->excludeQueryParameters = $excludeQueryParameters;
+ }
+ /**
+ * @return string
+ */
+ public function getExcludeQueryParameters()
+ {
+ return $this->excludeQueryParameters;
+ }
+ /**
+ * @param string
+ */
+ public function setId($id)
+ {
+ $this->id = $id;
+ }
+ /**
+ * @return string
+ */
+ public function getId()
+ {
+ return $this->id;
+ }
+ /**
+ * @param string
+ */
+ public function setInternalWebPropertyId($internalWebPropertyId)
+ {
+ $this->internalWebPropertyId = $internalWebPropertyId;
+ }
+ /**
+ * @return string
+ */
+ public function getInternalWebPropertyId()
+ {
+ return $this->internalWebPropertyId;
+ }
+ /**
+ * @param string
+ */
+ public function setKind($kind)
+ {
+ $this->kind = $kind;
+ }
+ /**
+ * @return string
+ */
+ public function getKind()
+ {
+ return $this->kind;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param ProfileParentLink
+ */
+ public function setParentLink(\Google\Site_Kit_Dependencies\Google\Service\Analytics\ProfileParentLink $parentLink)
+ {
+ $this->parentLink = $parentLink;
+ }
+ /**
+ * @return ProfileParentLink
+ */
+ public function getParentLink()
+ {
+ return $this->parentLink;
+ }
+ /**
+ * @param ProfilePermissions
+ */
+ public function setPermissions(\Google\Site_Kit_Dependencies\Google\Service\Analytics\ProfilePermissions $permissions)
+ {
+ $this->permissions = $permissions;
+ }
+ /**
+ * @return ProfilePermissions
+ */
+ public function getPermissions()
+ {
+ return $this->permissions;
+ }
+ /**
+ * @param string
+ */
+ public function setSelfLink($selfLink)
+ {
+ $this->selfLink = $selfLink;
+ }
+ /**
+ * @return string
+ */
+ public function getSelfLink()
+ {
+ return $this->selfLink;
+ }
+ /**
+ * @param string
+ */
+ public function setSiteSearchCategoryParameters($siteSearchCategoryParameters)
+ {
+ $this->siteSearchCategoryParameters = $siteSearchCategoryParameters;
+ }
+ /**
+ * @return string
+ */
+ public function getSiteSearchCategoryParameters()
+ {
+ return $this->siteSearchCategoryParameters;
+ }
+ /**
+ * @param string
+ */
+ public function setSiteSearchQueryParameters($siteSearchQueryParameters)
+ {
+ $this->siteSearchQueryParameters = $siteSearchQueryParameters;
+ }
+ /**
+ * @return string
+ */
+ public function getSiteSearchQueryParameters()
+ {
+ return $this->siteSearchQueryParameters;
+ }
+ /**
+ * @param bool
+ */
+ public function setStarred($starred)
+ {
+ $this->starred = $starred;
+ }
+ /**
+ * @return bool
+ */
+ public function getStarred()
+ {
+ return $this->starred;
+ }
+ /**
+ * @param bool
+ */
+ public function setStripSiteSearchCategoryParameters($stripSiteSearchCategoryParameters)
+ {
+ $this->stripSiteSearchCategoryParameters = $stripSiteSearchCategoryParameters;
+ }
+ /**
+ * @return bool
+ */
+ public function getStripSiteSearchCategoryParameters()
+ {
+ return $this->stripSiteSearchCategoryParameters;
+ }
+ /**
+ * @param bool
+ */
+ public function setStripSiteSearchQueryParameters($stripSiteSearchQueryParameters)
+ {
+ $this->stripSiteSearchQueryParameters = $stripSiteSearchQueryParameters;
+ }
+ /**
+ * @return bool
+ */
+ public function getStripSiteSearchQueryParameters()
+ {
+ return $this->stripSiteSearchQueryParameters;
+ }
+ /**
+ * @param string
+ */
+ public function setTimezone($timezone)
+ {
+ $this->timezone = $timezone;
+ }
+ /**
+ * @return string
+ */
+ public function getTimezone()
+ {
+ return $this->timezone;
+ }
+ /**
+ * @param string
+ */
+ public function setType($type)
+ {
+ $this->type = $type;
+ }
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+ /**
+ * @param string
+ */
+ public function setUpdated($updated)
+ {
+ $this->updated = $updated;
+ }
+ /**
+ * @return string
+ */
+ public function getUpdated()
+ {
+ return $this->updated;
+ }
+ /**
+ * @param string
+ */
+ public function setWebPropertyId($webPropertyId)
+ {
+ $this->webPropertyId = $webPropertyId;
+ }
+ /**
+ * @return string
+ */
+ public function getWebPropertyId()
+ {
+ return $this->webPropertyId;
+ }
+ /**
+ * @param string
+ */
+ public function setWebsiteUrl($websiteUrl)
+ {
+ $this->websiteUrl = $websiteUrl;
+ }
+ /**
+ * @return string
+ */
+ public function getWebsiteUrl()
+ {
+ return $this->websiteUrl;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Profile::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Profile');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/ProfileChildLink.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/ProfileChildLink.php
new file mode 100644
index 000000000..9d01ef0d5
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/ProfileChildLink.php
@@ -0,0 +1,60 @@
+href = $href;
+ }
+ /**
+ * @return string
+ */
+ public function getHref()
+ {
+ return $this->href;
+ }
+ /**
+ * @param string
+ */
+ public function setType($type)
+ {
+ $this->type = $type;
+ }
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\ProfileChildLink::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_ProfileChildLink');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/ProfileFilterLink.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/ProfileFilterLink.php
new file mode 100644
index 000000000..06b772b26
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/ProfileFilterLink.php
@@ -0,0 +1,128 @@
+filterRef = $filterRef;
+ }
+ /**
+ * @return FilterRef
+ */
+ public function getFilterRef()
+ {
+ return $this->filterRef;
+ }
+ /**
+ * @param string
+ */
+ public function setId($id)
+ {
+ $this->id = $id;
+ }
+ /**
+ * @return string
+ */
+ public function getId()
+ {
+ return $this->id;
+ }
+ /**
+ * @param string
+ */
+ public function setKind($kind)
+ {
+ $this->kind = $kind;
+ }
+ /**
+ * @return string
+ */
+ public function getKind()
+ {
+ return $this->kind;
+ }
+ /**
+ * @param ProfileRef
+ */
+ public function setProfileRef(\Google\Site_Kit_Dependencies\Google\Service\Analytics\ProfileRef $profileRef)
+ {
+ $this->profileRef = $profileRef;
+ }
+ /**
+ * @return ProfileRef
+ */
+ public function getProfileRef()
+ {
+ return $this->profileRef;
+ }
+ /**
+ * @param int
+ */
+ public function setRank($rank)
+ {
+ $this->rank = $rank;
+ }
+ /**
+ * @return int
+ */
+ public function getRank()
+ {
+ return $this->rank;
+ }
+ /**
+ * @param string
+ */
+ public function setSelfLink($selfLink)
+ {
+ $this->selfLink = $selfLink;
+ }
+ /**
+ * @return string
+ */
+ public function getSelfLink()
+ {
+ return $this->selfLink;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\ProfileFilterLink::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_ProfileFilterLink');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/ProfileFilterLinks.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/ProfileFilterLinks.php
new file mode 100644
index 000000000..da7d44b1f
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/ProfileFilterLinks.php
@@ -0,0 +1,167 @@
+items = $items;
+ }
+ /**
+ * @return ProfileFilterLink[]
+ */
+ public function getItems()
+ {
+ return $this->items;
+ }
+ /**
+ * @param int
+ */
+ public function setItemsPerPage($itemsPerPage)
+ {
+ $this->itemsPerPage = $itemsPerPage;
+ }
+ /**
+ * @return int
+ */
+ public function getItemsPerPage()
+ {
+ return $this->itemsPerPage;
+ }
+ /**
+ * @param string
+ */
+ public function setKind($kind)
+ {
+ $this->kind = $kind;
+ }
+ /**
+ * @return string
+ */
+ public function getKind()
+ {
+ return $this->kind;
+ }
+ /**
+ * @param string
+ */
+ public function setNextLink($nextLink)
+ {
+ $this->nextLink = $nextLink;
+ }
+ /**
+ * @return string
+ */
+ public function getNextLink()
+ {
+ return $this->nextLink;
+ }
+ /**
+ * @param string
+ */
+ public function setPreviousLink($previousLink)
+ {
+ $this->previousLink = $previousLink;
+ }
+ /**
+ * @return string
+ */
+ public function getPreviousLink()
+ {
+ return $this->previousLink;
+ }
+ /**
+ * @param int
+ */
+ public function setStartIndex($startIndex)
+ {
+ $this->startIndex = $startIndex;
+ }
+ /**
+ * @return int
+ */
+ public function getStartIndex()
+ {
+ return $this->startIndex;
+ }
+ /**
+ * @param int
+ */
+ public function setTotalResults($totalResults)
+ {
+ $this->totalResults = $totalResults;
+ }
+ /**
+ * @return int
+ */
+ public function getTotalResults()
+ {
+ return $this->totalResults;
+ }
+ /**
+ * @param string
+ */
+ public function setUsername($username)
+ {
+ $this->username = $username;
+ }
+ /**
+ * @return string
+ */
+ public function getUsername()
+ {
+ return $this->username;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\ProfileFilterLinks::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_ProfileFilterLinks');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/ProfileParentLink.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/ProfileParentLink.php
new file mode 100644
index 000000000..849289632
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/ProfileParentLink.php
@@ -0,0 +1,60 @@
+href = $href;
+ }
+ /**
+ * @return string
+ */
+ public function getHref()
+ {
+ return $this->href;
+ }
+ /**
+ * @param string
+ */
+ public function setType($type)
+ {
+ $this->type = $type;
+ }
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\ProfileParentLink::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_ProfileParentLink');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/ProfilePermissions.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/ProfilePermissions.php
new file mode 100644
index 000000000..a0ff859b2
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/ProfilePermissions.php
@@ -0,0 +1,43 @@
+effective = $effective;
+ }
+ /**
+ * @return string[]
+ */
+ public function getEffective()
+ {
+ return $this->effective;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\ProfilePermissions::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_ProfilePermissions');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/ProfileRef.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/ProfileRef.php
new file mode 100644
index 000000000..8575bb0b3
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/ProfileRef.php
@@ -0,0 +1,150 @@
+accountId = $accountId;
+ }
+ /**
+ * @return string
+ */
+ public function getAccountId()
+ {
+ return $this->accountId;
+ }
+ /**
+ * @param string
+ */
+ public function setHref($href)
+ {
+ $this->href = $href;
+ }
+ /**
+ * @return string
+ */
+ public function getHref()
+ {
+ return $this->href;
+ }
+ /**
+ * @param string
+ */
+ public function setId($id)
+ {
+ $this->id = $id;
+ }
+ /**
+ * @return string
+ */
+ public function getId()
+ {
+ return $this->id;
+ }
+ /**
+ * @param string
+ */
+ public function setInternalWebPropertyId($internalWebPropertyId)
+ {
+ $this->internalWebPropertyId = $internalWebPropertyId;
+ }
+ /**
+ * @return string
+ */
+ public function getInternalWebPropertyId()
+ {
+ return $this->internalWebPropertyId;
+ }
+ /**
+ * @param string
+ */
+ public function setKind($kind)
+ {
+ $this->kind = $kind;
+ }
+ /**
+ * @return string
+ */
+ public function getKind()
+ {
+ return $this->kind;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param string
+ */
+ public function setWebPropertyId($webPropertyId)
+ {
+ $this->webPropertyId = $webPropertyId;
+ }
+ /**
+ * @return string
+ */
+ public function getWebPropertyId()
+ {
+ return $this->webPropertyId;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\ProfileRef::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_ProfileRef');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/ProfileSummary.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/ProfileSummary.php
new file mode 100644
index 000000000..afdddeb0e
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/ProfileSummary.php
@@ -0,0 +1,114 @@
+id = $id;
+ }
+ /**
+ * @return string
+ */
+ public function getId()
+ {
+ return $this->id;
+ }
+ /**
+ * @param string
+ */
+ public function setKind($kind)
+ {
+ $this->kind = $kind;
+ }
+ /**
+ * @return string
+ */
+ public function getKind()
+ {
+ return $this->kind;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param bool
+ */
+ public function setStarred($starred)
+ {
+ $this->starred = $starred;
+ }
+ /**
+ * @return bool
+ */
+ public function getStarred()
+ {
+ return $this->starred;
+ }
+ /**
+ * @param string
+ */
+ public function setType($type)
+ {
+ $this->type = $type;
+ }
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\ProfileSummary::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_ProfileSummary');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Profiles.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Profiles.php
new file mode 100644
index 000000000..6f24f0c41
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Profiles.php
@@ -0,0 +1,167 @@
+items = $items;
+ }
+ /**
+ * @return Profile[]
+ */
+ public function getItems()
+ {
+ return $this->items;
+ }
+ /**
+ * @param int
+ */
+ public function setItemsPerPage($itemsPerPage)
+ {
+ $this->itemsPerPage = $itemsPerPage;
+ }
+ /**
+ * @return int
+ */
+ public function getItemsPerPage()
+ {
+ return $this->itemsPerPage;
+ }
+ /**
+ * @param string
+ */
+ public function setKind($kind)
+ {
+ $this->kind = $kind;
+ }
+ /**
+ * @return string
+ */
+ public function getKind()
+ {
+ return $this->kind;
+ }
+ /**
+ * @param string
+ */
+ public function setNextLink($nextLink)
+ {
+ $this->nextLink = $nextLink;
+ }
+ /**
+ * @return string
+ */
+ public function getNextLink()
+ {
+ return $this->nextLink;
+ }
+ /**
+ * @param string
+ */
+ public function setPreviousLink($previousLink)
+ {
+ $this->previousLink = $previousLink;
+ }
+ /**
+ * @return string
+ */
+ public function getPreviousLink()
+ {
+ return $this->previousLink;
+ }
+ /**
+ * @param int
+ */
+ public function setStartIndex($startIndex)
+ {
+ $this->startIndex = $startIndex;
+ }
+ /**
+ * @return int
+ */
+ public function getStartIndex()
+ {
+ return $this->startIndex;
+ }
+ /**
+ * @param int
+ */
+ public function setTotalResults($totalResults)
+ {
+ $this->totalResults = $totalResults;
+ }
+ /**
+ * @return int
+ */
+ public function getTotalResults()
+ {
+ return $this->totalResults;
+ }
+ /**
+ * @param string
+ */
+ public function setUsername($username)
+ {
+ $this->username = $username;
+ }
+ /**
+ * @return string
+ */
+ public function getUsername()
+ {
+ return $this->username;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Profiles::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Profiles');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/RealtimeData.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/RealtimeData.php
new file mode 100644
index 000000000..2c1f5781d
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/RealtimeData.php
@@ -0,0 +1,181 @@
+columnHeaders = $columnHeaders;
+ }
+ /**
+ * @return RealtimeDataColumnHeaders[]
+ */
+ public function getColumnHeaders()
+ {
+ return $this->columnHeaders;
+ }
+ /**
+ * @param string
+ */
+ public function setId($id)
+ {
+ $this->id = $id;
+ }
+ /**
+ * @return string
+ */
+ public function getId()
+ {
+ return $this->id;
+ }
+ /**
+ * @param string
+ */
+ public function setKind($kind)
+ {
+ $this->kind = $kind;
+ }
+ /**
+ * @return string
+ */
+ public function getKind()
+ {
+ return $this->kind;
+ }
+ /**
+ * @param RealtimeDataProfileInfo
+ */
+ public function setProfileInfo(\Google\Site_Kit_Dependencies\Google\Service\Analytics\RealtimeDataProfileInfo $profileInfo)
+ {
+ $this->profileInfo = $profileInfo;
+ }
+ /**
+ * @return RealtimeDataProfileInfo
+ */
+ public function getProfileInfo()
+ {
+ return $this->profileInfo;
+ }
+ /**
+ * @param RealtimeDataQuery
+ */
+ public function setQuery(\Google\Site_Kit_Dependencies\Google\Service\Analytics\RealtimeDataQuery $query)
+ {
+ $this->query = $query;
+ }
+ /**
+ * @return RealtimeDataQuery
+ */
+ public function getQuery()
+ {
+ return $this->query;
+ }
+ /**
+ * @param string[]
+ */
+ public function setRows($rows)
+ {
+ $this->rows = $rows;
+ }
+ /**
+ * @return string[]
+ */
+ public function getRows()
+ {
+ return $this->rows;
+ }
+ /**
+ * @param string
+ */
+ public function setSelfLink($selfLink)
+ {
+ $this->selfLink = $selfLink;
+ }
+ /**
+ * @return string
+ */
+ public function getSelfLink()
+ {
+ return $this->selfLink;
+ }
+ /**
+ * @param int
+ */
+ public function setTotalResults($totalResults)
+ {
+ $this->totalResults = $totalResults;
+ }
+ /**
+ * @return int
+ */
+ public function getTotalResults()
+ {
+ return $this->totalResults;
+ }
+ /**
+ * @param string[]
+ */
+ public function setTotalsForAllResults($totalsForAllResults)
+ {
+ $this->totalsForAllResults = $totalsForAllResults;
+ }
+ /**
+ * @return string[]
+ */
+ public function getTotalsForAllResults()
+ {
+ return $this->totalsForAllResults;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\RealtimeData::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_RealtimeData');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/RealtimeDataColumnHeaders.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/RealtimeDataColumnHeaders.php
new file mode 100644
index 000000000..481d139ea
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/RealtimeDataColumnHeaders.php
@@ -0,0 +1,78 @@
+columnType = $columnType;
+ }
+ /**
+ * @return string
+ */
+ public function getColumnType()
+ {
+ return $this->columnType;
+ }
+ /**
+ * @param string
+ */
+ public function setDataType($dataType)
+ {
+ $this->dataType = $dataType;
+ }
+ /**
+ * @return string
+ */
+ public function getDataType()
+ {
+ return $this->dataType;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\RealtimeDataColumnHeaders::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_RealtimeDataColumnHeaders');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/RealtimeDataProfileInfo.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/RealtimeDataProfileInfo.php
new file mode 100644
index 000000000..d673b30da
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/RealtimeDataProfileInfo.php
@@ -0,0 +1,132 @@
+accountId = $accountId;
+ }
+ /**
+ * @return string
+ */
+ public function getAccountId()
+ {
+ return $this->accountId;
+ }
+ /**
+ * @param string
+ */
+ public function setInternalWebPropertyId($internalWebPropertyId)
+ {
+ $this->internalWebPropertyId = $internalWebPropertyId;
+ }
+ /**
+ * @return string
+ */
+ public function getInternalWebPropertyId()
+ {
+ return $this->internalWebPropertyId;
+ }
+ /**
+ * @param string
+ */
+ public function setProfileId($profileId)
+ {
+ $this->profileId = $profileId;
+ }
+ /**
+ * @return string
+ */
+ public function getProfileId()
+ {
+ return $this->profileId;
+ }
+ /**
+ * @param string
+ */
+ public function setProfileName($profileName)
+ {
+ $this->profileName = $profileName;
+ }
+ /**
+ * @return string
+ */
+ public function getProfileName()
+ {
+ return $this->profileName;
+ }
+ /**
+ * @param string
+ */
+ public function setTableId($tableId)
+ {
+ $this->tableId = $tableId;
+ }
+ /**
+ * @return string
+ */
+ public function getTableId()
+ {
+ return $this->tableId;
+ }
+ /**
+ * @param string
+ */
+ public function setWebPropertyId($webPropertyId)
+ {
+ $this->webPropertyId = $webPropertyId;
+ }
+ /**
+ * @return string
+ */
+ public function getWebPropertyId()
+ {
+ return $this->webPropertyId;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\RealtimeDataProfileInfo::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_RealtimeDataProfileInfo');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/RealtimeDataQuery.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/RealtimeDataQuery.php
new file mode 100644
index 000000000..2007bdc9c
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/RealtimeDataQuery.php
@@ -0,0 +1,134 @@
+ "max-results"];
+ /**
+ * @var string
+ */
+ public $dimensions;
+ /**
+ * @var string
+ */
+ public $filters;
+ /**
+ * @var string
+ */
+ public $ids;
+ /**
+ * @var int
+ */
+ public $maxResults;
+ /**
+ * @var string[]
+ */
+ public $metrics;
+ /**
+ * @var string[]
+ */
+ public $sort;
+ /**
+ * @param string
+ */
+ public function setDimensions($dimensions)
+ {
+ $this->dimensions = $dimensions;
+ }
+ /**
+ * @return string
+ */
+ public function getDimensions()
+ {
+ return $this->dimensions;
+ }
+ /**
+ * @param string
+ */
+ public function setFilters($filters)
+ {
+ $this->filters = $filters;
+ }
+ /**
+ * @return string
+ */
+ public function getFilters()
+ {
+ return $this->filters;
+ }
+ /**
+ * @param string
+ */
+ public function setIds($ids)
+ {
+ $this->ids = $ids;
+ }
+ /**
+ * @return string
+ */
+ public function getIds()
+ {
+ return $this->ids;
+ }
+ /**
+ * @param int
+ */
+ public function setMaxResults($maxResults)
+ {
+ $this->maxResults = $maxResults;
+ }
+ /**
+ * @return int
+ */
+ public function getMaxResults()
+ {
+ return $this->maxResults;
+ }
+ /**
+ * @param string[]
+ */
+ public function setMetrics($metrics)
+ {
+ $this->metrics = $metrics;
+ }
+ /**
+ * @return string[]
+ */
+ public function getMetrics()
+ {
+ return $this->metrics;
+ }
+ /**
+ * @param string[]
+ */
+ public function setSort($sort)
+ {
+ $this->sort = $sort;
+ }
+ /**
+ * @return string[]
+ */
+ public function getSort()
+ {
+ return $this->sort;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\RealtimeDataQuery::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_RealtimeDataQuery');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/RemarketingAudience.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/RemarketingAudience.php
new file mode 100644
index 000000000..80cefd063
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/RemarketingAudience.php
@@ -0,0 +1,271 @@
+accountId = $accountId;
+ }
+ /**
+ * @return string
+ */
+ public function getAccountId()
+ {
+ return $this->accountId;
+ }
+ /**
+ * @param RemarketingAudienceAudienceDefinition
+ */
+ public function setAudienceDefinition(\Google\Site_Kit_Dependencies\Google\Service\Analytics\RemarketingAudienceAudienceDefinition $audienceDefinition)
+ {
+ $this->audienceDefinition = $audienceDefinition;
+ }
+ /**
+ * @return RemarketingAudienceAudienceDefinition
+ */
+ public function getAudienceDefinition()
+ {
+ return $this->audienceDefinition;
+ }
+ /**
+ * @param string
+ */
+ public function setAudienceType($audienceType)
+ {
+ $this->audienceType = $audienceType;
+ }
+ /**
+ * @return string
+ */
+ public function getAudienceType()
+ {
+ return $this->audienceType;
+ }
+ /**
+ * @param string
+ */
+ public function setCreated($created)
+ {
+ $this->created = $created;
+ }
+ /**
+ * @return string
+ */
+ public function getCreated()
+ {
+ return $this->created;
+ }
+ /**
+ * @param string
+ */
+ public function setDescription($description)
+ {
+ $this->description = $description;
+ }
+ /**
+ * @return string
+ */
+ public function getDescription()
+ {
+ return $this->description;
+ }
+ /**
+ * @param string
+ */
+ public function setId($id)
+ {
+ $this->id = $id;
+ }
+ /**
+ * @return string
+ */
+ public function getId()
+ {
+ return $this->id;
+ }
+ /**
+ * @param string
+ */
+ public function setInternalWebPropertyId($internalWebPropertyId)
+ {
+ $this->internalWebPropertyId = $internalWebPropertyId;
+ }
+ /**
+ * @return string
+ */
+ public function getInternalWebPropertyId()
+ {
+ return $this->internalWebPropertyId;
+ }
+ /**
+ * @param string
+ */
+ public function setKind($kind)
+ {
+ $this->kind = $kind;
+ }
+ /**
+ * @return string
+ */
+ public function getKind()
+ {
+ return $this->kind;
+ }
+ /**
+ * @param LinkedForeignAccount[]
+ */
+ public function setLinkedAdAccounts($linkedAdAccounts)
+ {
+ $this->linkedAdAccounts = $linkedAdAccounts;
+ }
+ /**
+ * @return LinkedForeignAccount[]
+ */
+ public function getLinkedAdAccounts()
+ {
+ return $this->linkedAdAccounts;
+ }
+ /**
+ * @param string[]
+ */
+ public function setLinkedViews($linkedViews)
+ {
+ $this->linkedViews = $linkedViews;
+ }
+ /**
+ * @return string[]
+ */
+ public function getLinkedViews()
+ {
+ return $this->linkedViews;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param RemarketingAudienceStateBasedAudienceDefinition
+ */
+ public function setStateBasedAudienceDefinition(\Google\Site_Kit_Dependencies\Google\Service\Analytics\RemarketingAudienceStateBasedAudienceDefinition $stateBasedAudienceDefinition)
+ {
+ $this->stateBasedAudienceDefinition = $stateBasedAudienceDefinition;
+ }
+ /**
+ * @return RemarketingAudienceStateBasedAudienceDefinition
+ */
+ public function getStateBasedAudienceDefinition()
+ {
+ return $this->stateBasedAudienceDefinition;
+ }
+ /**
+ * @param string
+ */
+ public function setUpdated($updated)
+ {
+ $this->updated = $updated;
+ }
+ /**
+ * @return string
+ */
+ public function getUpdated()
+ {
+ return $this->updated;
+ }
+ /**
+ * @param string
+ */
+ public function setWebPropertyId($webPropertyId)
+ {
+ $this->webPropertyId = $webPropertyId;
+ }
+ /**
+ * @return string
+ */
+ public function getWebPropertyId()
+ {
+ return $this->webPropertyId;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\RemarketingAudience::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_RemarketingAudience');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/RemarketingAudienceAudienceDefinition.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/RemarketingAudienceAudienceDefinition.php
new file mode 100644
index 000000000..00b66cc83
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/RemarketingAudienceAudienceDefinition.php
@@ -0,0 +1,40 @@
+includeConditions = $includeConditions;
+ }
+ /**
+ * @return IncludeConditions
+ */
+ public function getIncludeConditions()
+ {
+ return $this->includeConditions;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\RemarketingAudienceAudienceDefinition::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_RemarketingAudienceAudienceDefinition');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/RemarketingAudienceStateBasedAudienceDefinition.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/RemarketingAudienceStateBasedAudienceDefinition.php
new file mode 100644
index 000000000..f936b5aa9
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/RemarketingAudienceStateBasedAudienceDefinition.php
@@ -0,0 +1,56 @@
+excludeConditions = $excludeConditions;
+ }
+ /**
+ * @return RemarketingAudienceStateBasedAudienceDefinitionExcludeConditions
+ */
+ public function getExcludeConditions()
+ {
+ return $this->excludeConditions;
+ }
+ /**
+ * @param IncludeConditions
+ */
+ public function setIncludeConditions(\Google\Site_Kit_Dependencies\Google\Service\Analytics\IncludeConditions $includeConditions)
+ {
+ $this->includeConditions = $includeConditions;
+ }
+ /**
+ * @return IncludeConditions
+ */
+ public function getIncludeConditions()
+ {
+ return $this->includeConditions;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\RemarketingAudienceStateBasedAudienceDefinition::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_RemarketingAudienceStateBasedAudienceDefinition');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/RemarketingAudienceStateBasedAudienceDefinitionExcludeConditions.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/RemarketingAudienceStateBasedAudienceDefinitionExcludeConditions.php
new file mode 100644
index 000000000..c9238a6ba
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/RemarketingAudienceStateBasedAudienceDefinitionExcludeConditions.php
@@ -0,0 +1,60 @@
+exclusionDuration = $exclusionDuration;
+ }
+ /**
+ * @return string
+ */
+ public function getExclusionDuration()
+ {
+ return $this->exclusionDuration;
+ }
+ /**
+ * @param string
+ */
+ public function setSegment($segment)
+ {
+ $this->segment = $segment;
+ }
+ /**
+ * @return string
+ */
+ public function getSegment()
+ {
+ return $this->segment;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\RemarketingAudienceStateBasedAudienceDefinitionExcludeConditions::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_RemarketingAudienceStateBasedAudienceDefinitionExcludeConditions');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/RemarketingAudiences.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/RemarketingAudiences.php
new file mode 100644
index 000000000..83bcf993f
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/RemarketingAudiences.php
@@ -0,0 +1,167 @@
+items = $items;
+ }
+ /**
+ * @return RemarketingAudience[]
+ */
+ public function getItems()
+ {
+ return $this->items;
+ }
+ /**
+ * @param int
+ */
+ public function setItemsPerPage($itemsPerPage)
+ {
+ $this->itemsPerPage = $itemsPerPage;
+ }
+ /**
+ * @return int
+ */
+ public function getItemsPerPage()
+ {
+ return $this->itemsPerPage;
+ }
+ /**
+ * @param string
+ */
+ public function setKind($kind)
+ {
+ $this->kind = $kind;
+ }
+ /**
+ * @return string
+ */
+ public function getKind()
+ {
+ return $this->kind;
+ }
+ /**
+ * @param string
+ */
+ public function setNextLink($nextLink)
+ {
+ $this->nextLink = $nextLink;
+ }
+ /**
+ * @return string
+ */
+ public function getNextLink()
+ {
+ return $this->nextLink;
+ }
+ /**
+ * @param string
+ */
+ public function setPreviousLink($previousLink)
+ {
+ $this->previousLink = $previousLink;
+ }
+ /**
+ * @return string
+ */
+ public function getPreviousLink()
+ {
+ return $this->previousLink;
+ }
+ /**
+ * @param int
+ */
+ public function setStartIndex($startIndex)
+ {
+ $this->startIndex = $startIndex;
+ }
+ /**
+ * @return int
+ */
+ public function getStartIndex()
+ {
+ return $this->startIndex;
+ }
+ /**
+ * @param int
+ */
+ public function setTotalResults($totalResults)
+ {
+ $this->totalResults = $totalResults;
+ }
+ /**
+ * @return int
+ */
+ public function getTotalResults()
+ {
+ return $this->totalResults;
+ }
+ /**
+ * @param string
+ */
+ public function setUsername($username)
+ {
+ $this->username = $username;
+ }
+ /**
+ * @return string
+ */
+ public function getUsername()
+ {
+ return $this->username;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\RemarketingAudiences::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_RemarketingAudiences');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/Data.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/Data.php
new file mode 100644
index 000000000..447e5aa3f
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/Data.php
@@ -0,0 +1,32 @@
+
+ * $analyticsService = new Google\Service\Analytics(...);
+ * $data = $analyticsService->data;
+ *
+ */
+class Data extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\Data::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Resource_Data');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/DataGa.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/DataGa.php
new file mode 100644
index 000000000..b796c05a4
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/DataGa.php
@@ -0,0 +1,72 @@
+
+ * $analyticsService = new Google\Service\Analytics(...);
+ * $ga = $analyticsService->ga;
+ *
+ */
+class DataGa extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Returns Analytics data for a view (profile). (ga.get)
+ *
+ * @param string $ids Unique table ID for retrieving Analytics data. Table ID is
+ * of the form ga:XXXX, where XXXX is the Analytics view (profile) ID.
+ * @param string $startDate Start date for fetching Analytics data. Requests can
+ * specify a start date formatted as YYYY-MM-DD, or as a relative date (e.g.,
+ * today, yesterday, or 7daysAgo). The default value is 7daysAgo.
+ * @param string $endDate End date for fetching Analytics data. Request can
+ * should specify an end date formatted as YYYY-MM-DD, or as a relative date
+ * (e.g., today, yesterday, or 7daysAgo). The default value is yesterday.
+ * @param string $metrics A comma-separated list of Analytics metrics. E.g.,
+ * 'ga:sessions,ga:pageviews'. At least one metric must be specified.
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string dimensions A comma-separated list of Analytics dimensions.
+ * E.g., 'ga:browser,ga:city'.
+ * @opt_param string filters A comma-separated list of dimension or metric
+ * filters to be applied to Analytics data.
+ * @opt_param bool include-empty-rows The response will include empty rows if
+ * this parameter is set to true, the default is true
+ * @opt_param int max-results The maximum number of entries to include in this
+ * feed.
+ * @opt_param string output The selected format for the response. Default format
+ * is JSON.
+ * @opt_param string samplingLevel The desired sampling level.
+ * @opt_param string segment An Analytics segment to be applied to data.
+ * @opt_param string sort A comma-separated list of dimensions or metrics that
+ * determine the sort order for Analytics data.
+ * @opt_param int start-index An index of the first entity to retrieve. Use this
+ * parameter as a pagination mechanism along with the max-results parameter.
+ * @return GaData
+ */
+ public function get($ids, $startDate, $endDate, $metrics, $optParams = [])
+ {
+ $params = ['ids' => $ids, 'start-date' => $startDate, 'end-date' => $endDate, 'metrics' => $metrics];
+ $params = \array_merge($params, $optParams);
+ return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\GaData::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\DataGa::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Resource_DataGa');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/DataMcf.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/DataMcf.php
new file mode 100644
index 000000000..195efa433
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/DataMcf.php
@@ -0,0 +1,68 @@
+
+ * $analyticsService = new Google\Service\Analytics(...);
+ * $mcf = $analyticsService->mcf;
+ *
+ */
+class DataMcf extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Returns Analytics Multi-Channel Funnels data for a view (profile). (mcf.get)
+ *
+ * @param string $ids Unique table ID for retrieving Analytics data. Table ID is
+ * of the form ga:XXXX, where XXXX is the Analytics view (profile) ID.
+ * @param string $startDate Start date for fetching Analytics data. Requests can
+ * specify a start date formatted as YYYY-MM-DD, or as a relative date (e.g.,
+ * today, yesterday, or 7daysAgo). The default value is 7daysAgo.
+ * @param string $endDate End date for fetching Analytics data. Requests can
+ * specify a start date formatted as YYYY-MM-DD, or as a relative date (e.g.,
+ * today, yesterday, or 7daysAgo). The default value is 7daysAgo.
+ * @param string $metrics A comma-separated list of Multi-Channel Funnels
+ * metrics. E.g., 'mcf:totalConversions,mcf:totalConversionValue'. At least one
+ * metric must be specified.
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string dimensions A comma-separated list of Multi-Channel Funnels
+ * dimensions. E.g., 'mcf:source,mcf:medium'.
+ * @opt_param string filters A comma-separated list of dimension or metric
+ * filters to be applied to the Analytics data.
+ * @opt_param int max-results The maximum number of entries to include in this
+ * feed.
+ * @opt_param string samplingLevel The desired sampling level.
+ * @opt_param string sort A comma-separated list of dimensions or metrics that
+ * determine the sort order for the Analytics data.
+ * @opt_param int start-index An index of the first entity to retrieve. Use this
+ * parameter as a pagination mechanism along with the max-results parameter.
+ * @return McfData
+ */
+ public function get($ids, $startDate, $endDate, $metrics, $optParams = [])
+ {
+ $params = ['ids' => $ids, 'start-date' => $startDate, 'end-date' => $endDate, 'metrics' => $metrics];
+ $params = \array_merge($params, $optParams);
+ return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\McfData::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\DataMcf::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Resource_DataMcf');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/DataRealtime.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/DataRealtime.php
new file mode 100644
index 000000000..6c44ea45e
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/DataRealtime.php
@@ -0,0 +1,58 @@
+
+ * $analyticsService = new Google\Service\Analytics(...);
+ * $realtime = $analyticsService->realtime;
+ *
+ */
+class DataRealtime extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Returns real time data for a view (profile). (realtime.get)
+ *
+ * @param string $ids Unique table ID for retrieving real time data. Table ID is
+ * of the form ga:XXXX, where XXXX is the Analytics view (profile) ID.
+ * @param string $metrics A comma-separated list of real time metrics. E.g.,
+ * 'rt:activeUsers'. At least one metric must be specified.
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string dimensions A comma-separated list of real time dimensions.
+ * E.g., 'rt:medium,rt:city'.
+ * @opt_param string filters A comma-separated list of dimension or metric
+ * filters to be applied to real time data.
+ * @opt_param int max-results The maximum number of entries to include in this
+ * feed.
+ * @opt_param string sort A comma-separated list of dimensions or metrics that
+ * determine the sort order for real time data.
+ * @return RealtimeData
+ */
+ public function get($ids, $metrics, $optParams = [])
+ {
+ $params = ['ids' => $ids, 'metrics' => $metrics];
+ $params = \array_merge($params, $optParams);
+ return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\RealtimeData::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\DataRealtime::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Resource_DataRealtime');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/Management.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/Management.php
new file mode 100644
index 000000000..b694a67a3
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/Management.php
@@ -0,0 +1,32 @@
+
+ * $analyticsService = new Google\Service\Analytics(...);
+ * $management = $analyticsService->management;
+ *
+ */
+class Management extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\Management::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Resource_Management');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementAccountSummaries.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementAccountSummaries.php
new file mode 100644
index 000000000..5ce61cdca
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementAccountSummaries.php
@@ -0,0 +1,52 @@
+
+ * $analyticsService = new Google\Service\Analytics(...);
+ * $accountSummaries = $analyticsService->accountSummaries;
+ *
+ */
+class ManagementAccountSummaries extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Lists account summaries (lightweight tree comprised of
+ * accounts/properties/profiles) to which the user has access.
+ * (accountSummaries.listManagementAccountSummaries)
+ *
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param int max-results The maximum number of account summaries to include
+ * in this response, where the largest acceptable value is 1000.
+ * @opt_param int start-index An index of the first entity to retrieve. Use this
+ * parameter as a pagination mechanism along with the max-results parameter.
+ * @return AccountSummaries
+ */
+ public function listManagementAccountSummaries($optParams = [])
+ {
+ $params = [];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\AccountSummaries::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementAccountSummaries::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Resource_ManagementAccountSummaries');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementAccountUserLinks.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementAccountUserLinks.php
new file mode 100644
index 000000000..50ce31554
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementAccountUserLinks.php
@@ -0,0 +1,97 @@
+
+ * $analyticsService = new Google\Service\Analytics(...);
+ * $accountUserLinks = $analyticsService->accountUserLinks;
+ *
+ */
+class ManagementAccountUserLinks extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Removes a user from the given account. (accountUserLinks.delete)
+ *
+ * @param string $accountId Account ID to delete the user link for.
+ * @param string $linkId Link ID to delete the user link for.
+ * @param array $optParams Optional parameters.
+ */
+ public function delete($accountId, $linkId, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'linkId' => $linkId];
+ $params = \array_merge($params, $optParams);
+ return $this->call('delete', [$params]);
+ }
+ /**
+ * Adds a new user to the given account. (accountUserLinks.insert)
+ *
+ * @param string $accountId Account ID to create the user link for.
+ * @param EntityUserLink $postBody
+ * @param array $optParams Optional parameters.
+ * @return EntityUserLink
+ */
+ public function insert($accountId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityUserLink $postBody, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('insert', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityUserLink::class);
+ }
+ /**
+ * Lists account-user links for a given account.
+ * (accountUserLinks.listManagementAccountUserLinks)
+ *
+ * @param string $accountId Account ID to retrieve the user links for.
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param int max-results The maximum number of account-user links to
+ * include in this response.
+ * @opt_param int start-index An index of the first account-user link to
+ * retrieve. Use this parameter as a pagination mechanism along with the max-
+ * results parameter.
+ * @return EntityUserLinks
+ */
+ public function listManagementAccountUserLinks($accountId, $optParams = [])
+ {
+ $params = ['accountId' => $accountId];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityUserLinks::class);
+ }
+ /**
+ * Updates permissions for an existing user on the given account.
+ * (accountUserLinks.update)
+ *
+ * @param string $accountId Account ID to update the account-user link for.
+ * @param string $linkId Link ID to update the account-user link for.
+ * @param EntityUserLink $postBody
+ * @param array $optParams Optional parameters.
+ * @return EntityUserLink
+ */
+ public function update($accountId, $linkId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityUserLink $postBody, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'linkId' => $linkId, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('update', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityUserLink::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementAccountUserLinks::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Resource_ManagementAccountUserLinks');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementAccounts.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementAccounts.php
new file mode 100644
index 000000000..b98bf51ad
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementAccounts.php
@@ -0,0 +1,52 @@
+
+ * $analyticsService = new Google\Service\Analytics(...);
+ * $accounts = $analyticsService->accounts;
+ *
+ */
+class ManagementAccounts extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Lists all accounts to which the user has access.
+ * (accounts.listManagementAccounts)
+ *
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param int max-results The maximum number of accounts to include in this
+ * response.
+ * @opt_param int start-index An index of the first account to retrieve. Use
+ * this parameter as a pagination mechanism along with the max-results
+ * parameter.
+ * @return Accounts
+ */
+ public function listManagementAccounts($optParams = [])
+ {
+ $params = [];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Accounts::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementAccounts::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Resource_ManagementAccounts');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementClientId.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementClientId.php
new file mode 100644
index 000000000..847acd795
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementClientId.php
@@ -0,0 +1,47 @@
+
+ * $analyticsService = new Google\Service\Analytics(...);
+ * $clientId = $analyticsService->clientId;
+ *
+ */
+class ManagementClientId extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Hashes the given Client ID. (clientId.hashClientId)
+ *
+ * @param HashClientIdRequest $postBody
+ * @param array $optParams Optional parameters.
+ * @return HashClientIdResponse
+ */
+ public function hashClientId(\Google\Site_Kit_Dependencies\Google\Service\Analytics\HashClientIdRequest $postBody, $optParams = [])
+ {
+ $params = ['postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('hashClientId', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\HashClientIdResponse::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementClientId::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Resource_ManagementClientId');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementCustomDataSources.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementCustomDataSources.php
new file mode 100644
index 000000000..049445301
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementCustomDataSources.php
@@ -0,0 +1,55 @@
+
+ * $analyticsService = new Google\Service\Analytics(...);
+ * $customDataSources = $analyticsService->customDataSources;
+ *
+ */
+class ManagementCustomDataSources extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * List custom data sources to which the user has access.
+ * (customDataSources.listManagementCustomDataSources)
+ *
+ * @param string $accountId Account Id for the custom data sources to retrieve.
+ * @param string $webPropertyId Web property Id for the custom data sources to
+ * retrieve.
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param int max-results The maximum number of custom data sources to
+ * include in this response.
+ * @opt_param int start-index A 1-based index of the first custom data source to
+ * retrieve. Use this parameter as a pagination mechanism along with the max-
+ * results parameter.
+ * @return CustomDataSources
+ */
+ public function listManagementCustomDataSources($accountId, $webPropertyId, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomDataSources::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementCustomDataSources::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Resource_ManagementCustomDataSources');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementCustomDimensions.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementCustomDimensions.php
new file mode 100644
index 000000000..787db2012
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementCustomDimensions.php
@@ -0,0 +1,132 @@
+
+ * $analyticsService = new Google\Service\Analytics(...);
+ * $customDimensions = $analyticsService->customDimensions;
+ *
+ */
+class ManagementCustomDimensions extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Get a custom dimension to which the user has access. (customDimensions.get)
+ *
+ * @param string $accountId Account ID for the custom dimension to retrieve.
+ * @param string $webPropertyId Web property ID for the custom dimension to
+ * retrieve.
+ * @param string $customDimensionId The ID of the custom dimension to retrieve.
+ * @param array $optParams Optional parameters.
+ * @return CustomDimension
+ */
+ public function get($accountId, $webPropertyId, $customDimensionId, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'customDimensionId' => $customDimensionId];
+ $params = \array_merge($params, $optParams);
+ return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomDimension::class);
+ }
+ /**
+ * Create a new custom dimension. (customDimensions.insert)
+ *
+ * @param string $accountId Account ID for the custom dimension to create.
+ * @param string $webPropertyId Web property ID for the custom dimension to
+ * create.
+ * @param CustomDimension $postBody
+ * @param array $optParams Optional parameters.
+ * @return CustomDimension
+ */
+ public function insert($accountId, $webPropertyId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomDimension $postBody, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('insert', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomDimension::class);
+ }
+ /**
+ * Lists custom dimensions to which the user has access.
+ * (customDimensions.listManagementCustomDimensions)
+ *
+ * @param string $accountId Account ID for the custom dimensions to retrieve.
+ * @param string $webPropertyId Web property ID for the custom dimensions to
+ * retrieve.
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param int max-results The maximum number of custom dimensions to include
+ * in this response.
+ * @opt_param int start-index An index of the first entity to retrieve. Use this
+ * parameter as a pagination mechanism along with the max-results parameter.
+ * @return CustomDimensions
+ */
+ public function listManagementCustomDimensions($accountId, $webPropertyId, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomDimensions::class);
+ }
+ /**
+ * Updates an existing custom dimension. This method supports patch semantics.
+ * (customDimensions.patch)
+ *
+ * @param string $accountId Account ID for the custom dimension to update.
+ * @param string $webPropertyId Web property ID for the custom dimension to
+ * update.
+ * @param string $customDimensionId Custom dimension ID for the custom dimension
+ * to update.
+ * @param CustomDimension $postBody
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param bool ignoreCustomDataSourceLinks Force the update and ignore any
+ * warnings related to the custom dimension being linked to a custom data source
+ * / data set.
+ * @return CustomDimension
+ */
+ public function patch($accountId, $webPropertyId, $customDimensionId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomDimension $postBody, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'customDimensionId' => $customDimensionId, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomDimension::class);
+ }
+ /**
+ * Updates an existing custom dimension. (customDimensions.update)
+ *
+ * @param string $accountId Account ID for the custom dimension to update.
+ * @param string $webPropertyId Web property ID for the custom dimension to
+ * update.
+ * @param string $customDimensionId Custom dimension ID for the custom dimension
+ * to update.
+ * @param CustomDimension $postBody
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param bool ignoreCustomDataSourceLinks Force the update and ignore any
+ * warnings related to the custom dimension being linked to a custom data source
+ * / data set.
+ * @return CustomDimension
+ */
+ public function update($accountId, $webPropertyId, $customDimensionId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomDimension $postBody, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'customDimensionId' => $customDimensionId, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('update', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomDimension::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementCustomDimensions::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Resource_ManagementCustomDimensions');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementCustomMetrics.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementCustomMetrics.php
new file mode 100644
index 000000000..4ea90812f
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementCustomMetrics.php
@@ -0,0 +1,130 @@
+
+ * $analyticsService = new Google\Service\Analytics(...);
+ * $customMetrics = $analyticsService->customMetrics;
+ *
+ */
+class ManagementCustomMetrics extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Get a custom metric to which the user has access. (customMetrics.get)
+ *
+ * @param string $accountId Account ID for the custom metric to retrieve.
+ * @param string $webPropertyId Web property ID for the custom metric to
+ * retrieve.
+ * @param string $customMetricId The ID of the custom metric to retrieve.
+ * @param array $optParams Optional parameters.
+ * @return CustomMetric
+ */
+ public function get($accountId, $webPropertyId, $customMetricId, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'customMetricId' => $customMetricId];
+ $params = \array_merge($params, $optParams);
+ return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomMetric::class);
+ }
+ /**
+ * Create a new custom metric. (customMetrics.insert)
+ *
+ * @param string $accountId Account ID for the custom metric to create.
+ * @param string $webPropertyId Web property ID for the custom dimension to
+ * create.
+ * @param CustomMetric $postBody
+ * @param array $optParams Optional parameters.
+ * @return CustomMetric
+ */
+ public function insert($accountId, $webPropertyId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomMetric $postBody, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('insert', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomMetric::class);
+ }
+ /**
+ * Lists custom metrics to which the user has access.
+ * (customMetrics.listManagementCustomMetrics)
+ *
+ * @param string $accountId Account ID for the custom metrics to retrieve.
+ * @param string $webPropertyId Web property ID for the custom metrics to
+ * retrieve.
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param int max-results The maximum number of custom metrics to include in
+ * this response.
+ * @opt_param int start-index An index of the first entity to retrieve. Use this
+ * parameter as a pagination mechanism along with the max-results parameter.
+ * @return CustomMetrics
+ */
+ public function listManagementCustomMetrics($accountId, $webPropertyId, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomMetrics::class);
+ }
+ /**
+ * Updates an existing custom metric. This method supports patch semantics.
+ * (customMetrics.patch)
+ *
+ * @param string $accountId Account ID for the custom metric to update.
+ * @param string $webPropertyId Web property ID for the custom metric to update.
+ * @param string $customMetricId Custom metric ID for the custom metric to
+ * update.
+ * @param CustomMetric $postBody
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param bool ignoreCustomDataSourceLinks Force the update and ignore any
+ * warnings related to the custom metric being linked to a custom data source /
+ * data set.
+ * @return CustomMetric
+ */
+ public function patch($accountId, $webPropertyId, $customMetricId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomMetric $postBody, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'customMetricId' => $customMetricId, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomMetric::class);
+ }
+ /**
+ * Updates an existing custom metric. (customMetrics.update)
+ *
+ * @param string $accountId Account ID for the custom metric to update.
+ * @param string $webPropertyId Web property ID for the custom metric to update.
+ * @param string $customMetricId Custom metric ID for the custom metric to
+ * update.
+ * @param CustomMetric $postBody
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param bool ignoreCustomDataSourceLinks Force the update and ignore any
+ * warnings related to the custom metric being linked to a custom data source /
+ * data set.
+ * @return CustomMetric
+ */
+ public function update($accountId, $webPropertyId, $customMetricId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomMetric $postBody, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'customMetricId' => $customMetricId, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('update', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\CustomMetric::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementCustomMetrics::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Resource_ManagementCustomMetrics');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementExperiments.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementExperiments.php
new file mode 100644
index 000000000..9d58d92c2
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementExperiments.php
@@ -0,0 +1,138 @@
+
+ * $analyticsService = new Google\Service\Analytics(...);
+ * $experiments = $analyticsService->experiments;
+ *
+ */
+class ManagementExperiments extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Delete an experiment. (experiments.delete)
+ *
+ * @param string $accountId Account ID to which the experiment belongs
+ * @param string $webPropertyId Web property ID to which the experiment belongs
+ * @param string $profileId View (Profile) ID to which the experiment belongs
+ * @param string $experimentId ID of the experiment to delete
+ * @param array $optParams Optional parameters.
+ */
+ public function delete($accountId, $webPropertyId, $profileId, $experimentId, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'experimentId' => $experimentId];
+ $params = \array_merge($params, $optParams);
+ return $this->call('delete', [$params]);
+ }
+ /**
+ * Returns an experiment to which the user has access. (experiments.get)
+ *
+ * @param string $accountId Account ID to retrieve the experiment for.
+ * @param string $webPropertyId Web property ID to retrieve the experiment for.
+ * @param string $profileId View (Profile) ID to retrieve the experiment for.
+ * @param string $experimentId Experiment ID to retrieve the experiment for.
+ * @param array $optParams Optional parameters.
+ * @return Experiment
+ */
+ public function get($accountId, $webPropertyId, $profileId, $experimentId, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'experimentId' => $experimentId];
+ $params = \array_merge($params, $optParams);
+ return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Experiment::class);
+ }
+ /**
+ * Create a new experiment. (experiments.insert)
+ *
+ * @param string $accountId Account ID to create the experiment for.
+ * @param string $webPropertyId Web property ID to create the experiment for.
+ * @param string $profileId View (Profile) ID to create the experiment for.
+ * @param Experiment $postBody
+ * @param array $optParams Optional parameters.
+ * @return Experiment
+ */
+ public function insert($accountId, $webPropertyId, $profileId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\Experiment $postBody, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('insert', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Experiment::class);
+ }
+ /**
+ * Lists experiments to which the user has access.
+ * (experiments.listManagementExperiments)
+ *
+ * @param string $accountId Account ID to retrieve experiments for.
+ * @param string $webPropertyId Web property ID to retrieve experiments for.
+ * @param string $profileId View (Profile) ID to retrieve experiments for.
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param int max-results The maximum number of experiments to include in
+ * this response.
+ * @opt_param int start-index An index of the first experiment to retrieve. Use
+ * this parameter as a pagination mechanism along with the max-results
+ * parameter.
+ * @return Experiments
+ */
+ public function listManagementExperiments($accountId, $webPropertyId, $profileId, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Experiments::class);
+ }
+ /**
+ * Update an existing experiment. This method supports patch semantics.
+ * (experiments.patch)
+ *
+ * @param string $accountId Account ID of the experiment to update.
+ * @param string $webPropertyId Web property ID of the experiment to update.
+ * @param string $profileId View (Profile) ID of the experiment to update.
+ * @param string $experimentId Experiment ID of the experiment to update.
+ * @param Experiment $postBody
+ * @param array $optParams Optional parameters.
+ * @return Experiment
+ */
+ public function patch($accountId, $webPropertyId, $profileId, $experimentId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\Experiment $postBody, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'experimentId' => $experimentId, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Experiment::class);
+ }
+ /**
+ * Update an existing experiment. (experiments.update)
+ *
+ * @param string $accountId Account ID of the experiment to update.
+ * @param string $webPropertyId Web property ID of the experiment to update.
+ * @param string $profileId View (Profile) ID of the experiment to update.
+ * @param string $experimentId Experiment ID of the experiment to update.
+ * @param Experiment $postBody
+ * @param array $optParams Optional parameters.
+ * @return Experiment
+ */
+ public function update($accountId, $webPropertyId, $profileId, $experimentId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\Experiment $postBody, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'experimentId' => $experimentId, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('update', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Experiment::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementExperiments::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Resource_ManagementExperiments');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementFilters.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementFilters.php
new file mode 100644
index 000000000..f4ed9ecb8
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementFilters.php
@@ -0,0 +1,125 @@
+
+ * $analyticsService = new Google\Service\Analytics(...);
+ * $filters = $analyticsService->filters;
+ *
+ */
+class ManagementFilters extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Delete a filter. (filters.delete)
+ *
+ * @param string $accountId Account ID to delete the filter for.
+ * @param string $filterId ID of the filter to be deleted.
+ * @param array $optParams Optional parameters.
+ * @return Filter
+ */
+ public function delete($accountId, $filterId, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'filterId' => $filterId];
+ $params = \array_merge($params, $optParams);
+ return $this->call('delete', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Filter::class);
+ }
+ /**
+ * Returns filters to which the user has access. (filters.get)
+ *
+ * @param string $accountId Account ID to retrieve filters for.
+ * @param string $filterId Filter ID to retrieve filters for.
+ * @param array $optParams Optional parameters.
+ * @return Filter
+ */
+ public function get($accountId, $filterId, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'filterId' => $filterId];
+ $params = \array_merge($params, $optParams);
+ return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Filter::class);
+ }
+ /**
+ * Create a new filter. (filters.insert)
+ *
+ * @param string $accountId Account ID to create filter for.
+ * @param Filter $postBody
+ * @param array $optParams Optional parameters.
+ * @return Filter
+ */
+ public function insert($accountId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\Filter $postBody, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('insert', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Filter::class);
+ }
+ /**
+ * Lists all filters for an account (filters.listManagementFilters)
+ *
+ * @param string $accountId Account ID to retrieve filters for.
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param int max-results The maximum number of filters to include in this
+ * response.
+ * @opt_param int start-index An index of the first entity to retrieve. Use this
+ * parameter as a pagination mechanism along with the max-results parameter.
+ * @return Filters
+ */
+ public function listManagementFilters($accountId, $optParams = [])
+ {
+ $params = ['accountId' => $accountId];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Filters::class);
+ }
+ /**
+ * Updates an existing filter. This method supports patch semantics.
+ * (filters.patch)
+ *
+ * @param string $accountId Account ID to which the filter belongs.
+ * @param string $filterId ID of the filter to be updated.
+ * @param Filter $postBody
+ * @param array $optParams Optional parameters.
+ * @return Filter
+ */
+ public function patch($accountId, $filterId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\Filter $postBody, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'filterId' => $filterId, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Filter::class);
+ }
+ /**
+ * Updates an existing filter. (filters.update)
+ *
+ * @param string $accountId Account ID to which the filter belongs.
+ * @param string $filterId ID of the filter to be updated.
+ * @param Filter $postBody
+ * @param array $optParams Optional parameters.
+ * @return Filter
+ */
+ public function update($accountId, $filterId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\Filter $postBody, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'filterId' => $filterId, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('update', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Filter::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementFilters::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Resource_ManagementFilters');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementGoals.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementGoals.php
new file mode 100644
index 000000000..d98341f31
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementGoals.php
@@ -0,0 +1,126 @@
+
+ * $analyticsService = new Google\Service\Analytics(...);
+ * $goals = $analyticsService->goals;
+ *
+ */
+class ManagementGoals extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Gets a goal to which the user has access. (goals.get)
+ *
+ * @param string $accountId Account ID to retrieve the goal for.
+ * @param string $webPropertyId Web property ID to retrieve the goal for.
+ * @param string $profileId View (Profile) ID to retrieve the goal for.
+ * @param string $goalId Goal ID to retrieve the goal for.
+ * @param array $optParams Optional parameters.
+ * @return Goal
+ */
+ public function get($accountId, $webPropertyId, $profileId, $goalId, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'goalId' => $goalId];
+ $params = \array_merge($params, $optParams);
+ return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Goal::class);
+ }
+ /**
+ * Create a new goal. (goals.insert)
+ *
+ * @param string $accountId Account ID to create the goal for.
+ * @param string $webPropertyId Web property ID to create the goal for.
+ * @param string $profileId View (Profile) ID to create the goal for.
+ * @param Goal $postBody
+ * @param array $optParams Optional parameters.
+ * @return Goal
+ */
+ public function insert($accountId, $webPropertyId, $profileId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\Goal $postBody, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('insert', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Goal::class);
+ }
+ /**
+ * Lists goals to which the user has access. (goals.listManagementGoals)
+ *
+ * @param string $accountId Account ID to retrieve goals for. Can either be a
+ * specific account ID or '~all', which refers to all the accounts that user has
+ * access to.
+ * @param string $webPropertyId Web property ID to retrieve goals for. Can
+ * either be a specific web property ID or '~all', which refers to all the web
+ * properties that user has access to.
+ * @param string $profileId View (Profile) ID to retrieve goals for. Can either
+ * be a specific view (profile) ID or '~all', which refers to all the views
+ * (profiles) that user has access to.
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param int max-results The maximum number of goals to include in this
+ * response.
+ * @opt_param int start-index An index of the first goal to retrieve. Use this
+ * parameter as a pagination mechanism along with the max-results parameter.
+ * @return Goals
+ */
+ public function listManagementGoals($accountId, $webPropertyId, $profileId, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Goals::class);
+ }
+ /**
+ * Updates an existing goal. This method supports patch semantics. (goals.patch)
+ *
+ * @param string $accountId Account ID to update the goal.
+ * @param string $webPropertyId Web property ID to update the goal.
+ * @param string $profileId View (Profile) ID to update the goal.
+ * @param string $goalId Index of the goal to be updated.
+ * @param Goal $postBody
+ * @param array $optParams Optional parameters.
+ * @return Goal
+ */
+ public function patch($accountId, $webPropertyId, $profileId, $goalId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\Goal $postBody, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'goalId' => $goalId, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Goal::class);
+ }
+ /**
+ * Updates an existing goal. (goals.update)
+ *
+ * @param string $accountId Account ID to update the goal.
+ * @param string $webPropertyId Web property ID to update the goal.
+ * @param string $profileId View (Profile) ID to update the goal.
+ * @param string $goalId Index of the goal to be updated.
+ * @param Goal $postBody
+ * @param array $optParams Optional parameters.
+ * @return Goal
+ */
+ public function update($accountId, $webPropertyId, $profileId, $goalId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\Goal $postBody, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'goalId' => $goalId, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('update', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Goal::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementGoals::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Resource_ManagementGoals');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementProfileFilterLinks.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementProfileFilterLinks.php
new file mode 100644
index 000000000..3d359354d
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementProfileFilterLinks.php
@@ -0,0 +1,146 @@
+
+ * $analyticsService = new Google\Service\Analytics(...);
+ * $profileFilterLinks = $analyticsService->profileFilterLinks;
+ *
+ */
+class ManagementProfileFilterLinks extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Delete a profile filter link. (profileFilterLinks.delete)
+ *
+ * @param string $accountId Account ID to which the profile filter link belongs.
+ * @param string $webPropertyId Web property Id to which the profile filter link
+ * belongs.
+ * @param string $profileId Profile ID to which the filter link belongs.
+ * @param string $linkId ID of the profile filter link to delete.
+ * @param array $optParams Optional parameters.
+ */
+ public function delete($accountId, $webPropertyId, $profileId, $linkId, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'linkId' => $linkId];
+ $params = \array_merge($params, $optParams);
+ return $this->call('delete', [$params]);
+ }
+ /**
+ * Returns a single profile filter link. (profileFilterLinks.get)
+ *
+ * @param string $accountId Account ID to retrieve profile filter link for.
+ * @param string $webPropertyId Web property Id to retrieve profile filter link
+ * for.
+ * @param string $profileId Profile ID to retrieve filter link for.
+ * @param string $linkId ID of the profile filter link.
+ * @param array $optParams Optional parameters.
+ * @return ProfileFilterLink
+ */
+ public function get($accountId, $webPropertyId, $profileId, $linkId, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'linkId' => $linkId];
+ $params = \array_merge($params, $optParams);
+ return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\ProfileFilterLink::class);
+ }
+ /**
+ * Create a new profile filter link. (profileFilterLinks.insert)
+ *
+ * @param string $accountId Account ID to create profile filter link for.
+ * @param string $webPropertyId Web property Id to create profile filter link
+ * for.
+ * @param string $profileId Profile ID to create filter link for.
+ * @param ProfileFilterLink $postBody
+ * @param array $optParams Optional parameters.
+ * @return ProfileFilterLink
+ */
+ public function insert($accountId, $webPropertyId, $profileId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\ProfileFilterLink $postBody, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('insert', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\ProfileFilterLink::class);
+ }
+ /**
+ * Lists all profile filter links for a profile.
+ * (profileFilterLinks.listManagementProfileFilterLinks)
+ *
+ * @param string $accountId Account ID to retrieve profile filter links for.
+ * @param string $webPropertyId Web property Id for profile filter links for.
+ * Can either be a specific web property ID or '~all', which refers to all the
+ * web properties that user has access to.
+ * @param string $profileId Profile ID to retrieve filter links for. Can either
+ * be a specific profile ID or '~all', which refers to all the profiles that
+ * user has access to.
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param int max-results The maximum number of profile filter links to
+ * include in this response.
+ * @opt_param int start-index An index of the first entity to retrieve. Use this
+ * parameter as a pagination mechanism along with the max-results parameter.
+ * @return ProfileFilterLinks
+ */
+ public function listManagementProfileFilterLinks($accountId, $webPropertyId, $profileId, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\ProfileFilterLinks::class);
+ }
+ /**
+ * Update an existing profile filter link. This method supports patch semantics.
+ * (profileFilterLinks.patch)
+ *
+ * @param string $accountId Account ID to which profile filter link belongs.
+ * @param string $webPropertyId Web property Id to which profile filter link
+ * belongs
+ * @param string $profileId Profile ID to which filter link belongs
+ * @param string $linkId ID of the profile filter link to be updated.
+ * @param ProfileFilterLink $postBody
+ * @param array $optParams Optional parameters.
+ * @return ProfileFilterLink
+ */
+ public function patch($accountId, $webPropertyId, $profileId, $linkId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\ProfileFilterLink $postBody, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'linkId' => $linkId, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\ProfileFilterLink::class);
+ }
+ /**
+ * Update an existing profile filter link. (profileFilterLinks.update)
+ *
+ * @param string $accountId Account ID to which profile filter link belongs.
+ * @param string $webPropertyId Web property Id to which profile filter link
+ * belongs
+ * @param string $profileId Profile ID to which filter link belongs
+ * @param string $linkId ID of the profile filter link to be updated.
+ * @param ProfileFilterLink $postBody
+ * @param array $optParams Optional parameters.
+ * @return ProfileFilterLink
+ */
+ public function update($accountId, $webPropertyId, $profileId, $linkId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\ProfileFilterLink $postBody, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'linkId' => $linkId, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('update', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\ProfileFilterLink::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementProfileFilterLinks::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Resource_ManagementProfileFilterLinks');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementProfileUserLinks.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementProfileUserLinks.php
new file mode 100644
index 000000000..816761a34
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementProfileUserLinks.php
@@ -0,0 +1,110 @@
+
+ * $analyticsService = new Google\Service\Analytics(...);
+ * $profileUserLinks = $analyticsService->profileUserLinks;
+ *
+ */
+class ManagementProfileUserLinks extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Removes a user from the given view (profile). (profileUserLinks.delete)
+ *
+ * @param string $accountId Account ID to delete the user link for.
+ * @param string $webPropertyId Web Property ID to delete the user link for.
+ * @param string $profileId View (Profile) ID to delete the user link for.
+ * @param string $linkId Link ID to delete the user link for.
+ * @param array $optParams Optional parameters.
+ */
+ public function delete($accountId, $webPropertyId, $profileId, $linkId, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'linkId' => $linkId];
+ $params = \array_merge($params, $optParams);
+ return $this->call('delete', [$params]);
+ }
+ /**
+ * Adds a new user to the given view (profile). (profileUserLinks.insert)
+ *
+ * @param string $accountId Account ID to create the user link for.
+ * @param string $webPropertyId Web Property ID to create the user link for.
+ * @param string $profileId View (Profile) ID to create the user link for.
+ * @param EntityUserLink $postBody
+ * @param array $optParams Optional parameters.
+ * @return EntityUserLink
+ */
+ public function insert($accountId, $webPropertyId, $profileId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityUserLink $postBody, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('insert', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityUserLink::class);
+ }
+ /**
+ * Lists profile-user links for a given view (profile).
+ * (profileUserLinks.listManagementProfileUserLinks)
+ *
+ * @param string $accountId Account ID which the given view (profile) belongs
+ * to.
+ * @param string $webPropertyId Web Property ID which the given view (profile)
+ * belongs to. Can either be a specific web property ID or '~all', which refers
+ * to all the web properties that user has access to.
+ * @param string $profileId View (Profile) ID to retrieve the profile-user links
+ * for. Can either be a specific profile ID or '~all', which refers to all the
+ * profiles that user has access to.
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param int max-results The maximum number of profile-user links to
+ * include in this response.
+ * @opt_param int start-index An index of the first profile-user link to
+ * retrieve. Use this parameter as a pagination mechanism along with the max-
+ * results parameter.
+ * @return EntityUserLinks
+ */
+ public function listManagementProfileUserLinks($accountId, $webPropertyId, $profileId, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityUserLinks::class);
+ }
+ /**
+ * Updates permissions for an existing user on the given view (profile).
+ * (profileUserLinks.update)
+ *
+ * @param string $accountId Account ID to update the user link for.
+ * @param string $webPropertyId Web Property ID to update the user link for.
+ * @param string $profileId View (Profile ID) to update the user link for.
+ * @param string $linkId Link ID to update the user link for.
+ * @param EntityUserLink $postBody
+ * @param array $optParams Optional parameters.
+ * @return EntityUserLink
+ */
+ public function update($accountId, $webPropertyId, $profileId, $linkId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityUserLink $postBody, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'linkId' => $linkId, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('update', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityUserLink::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementProfileUserLinks::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Resource_ManagementProfileUserLinks');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementProfiles.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementProfiles.php
new file mode 100644
index 000000000..4e1f07217
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementProfiles.php
@@ -0,0 +1,141 @@
+
+ * $analyticsService = new Google\Service\Analytics(...);
+ * $profiles = $analyticsService->profiles;
+ *
+ */
+class ManagementProfiles extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Deletes a view (profile). (profiles.delete)
+ *
+ * @param string $accountId Account ID to delete the view (profile) for.
+ * @param string $webPropertyId Web property ID to delete the view (profile)
+ * for.
+ * @param string $profileId ID of the view (profile) to be deleted.
+ * @param array $optParams Optional parameters.
+ */
+ public function delete($accountId, $webPropertyId, $profileId, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId];
+ $params = \array_merge($params, $optParams);
+ return $this->call('delete', [$params]);
+ }
+ /**
+ * Gets a view (profile) to which the user has access. (profiles.get)
+ *
+ * @param string $accountId Account ID to retrieve the view (profile) for.
+ * @param string $webPropertyId Web property ID to retrieve the view (profile)
+ * for.
+ * @param string $profileId View (Profile) ID to retrieve the view (profile)
+ * for.
+ * @param array $optParams Optional parameters.
+ * @return Profile
+ */
+ public function get($accountId, $webPropertyId, $profileId, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId];
+ $params = \array_merge($params, $optParams);
+ return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Profile::class);
+ }
+ /**
+ * Create a new view (profile). (profiles.insert)
+ *
+ * @param string $accountId Account ID to create the view (profile) for.
+ * @param string $webPropertyId Web property ID to create the view (profile)
+ * for.
+ * @param Profile $postBody
+ * @param array $optParams Optional parameters.
+ * @return Profile
+ */
+ public function insert($accountId, $webPropertyId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\Profile $postBody, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('insert', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Profile::class);
+ }
+ /**
+ * Lists views (profiles) to which the user has access.
+ * (profiles.listManagementProfiles)
+ *
+ * @param string $accountId Account ID for the view (profiles) to retrieve. Can
+ * either be a specific account ID or '~all', which refers to all the accounts
+ * to which the user has access.
+ * @param string $webPropertyId Web property ID for the views (profiles) to
+ * retrieve. Can either be a specific web property ID or '~all', which refers to
+ * all the web properties to which the user has access.
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param int max-results The maximum number of views (profiles) to include
+ * in this response.
+ * @opt_param int start-index An index of the first entity to retrieve. Use this
+ * parameter as a pagination mechanism along with the max-results parameter.
+ * @return Profiles
+ */
+ public function listManagementProfiles($accountId, $webPropertyId, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Profiles::class);
+ }
+ /**
+ * Updates an existing view (profile). This method supports patch semantics.
+ * (profiles.patch)
+ *
+ * @param string $accountId Account ID to which the view (profile) belongs
+ * @param string $webPropertyId Web property ID to which the view (profile)
+ * belongs
+ * @param string $profileId ID of the view (profile) to be updated.
+ * @param Profile $postBody
+ * @param array $optParams Optional parameters.
+ * @return Profile
+ */
+ public function patch($accountId, $webPropertyId, $profileId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\Profile $postBody, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Profile::class);
+ }
+ /**
+ * Updates an existing view (profile). (profiles.update)
+ *
+ * @param string $accountId Account ID to which the view (profile) belongs
+ * @param string $webPropertyId Web property ID to which the view (profile)
+ * belongs
+ * @param string $profileId ID of the view (profile) to be updated.
+ * @param Profile $postBody
+ * @param array $optParams Optional parameters.
+ * @return Profile
+ */
+ public function update($accountId, $webPropertyId, $profileId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\Profile $postBody, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('update', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Profile::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementProfiles::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Resource_ManagementProfiles');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementRemarketingAudience.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementRemarketingAudience.php
new file mode 100644
index 000000000..b326f42fe
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementRemarketingAudience.php
@@ -0,0 +1,149 @@
+
+ * $analyticsService = new Google\Service\Analytics(...);
+ * $remarketingAudience = $analyticsService->remarketingAudience;
+ *
+ */
+class ManagementRemarketingAudience extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Delete a remarketing audience. (remarketingAudience.delete)
+ *
+ * @param string $accountId Account ID to which the remarketing audience
+ * belongs.
+ * @param string $webPropertyId Web property ID to which the remarketing
+ * audience belongs.
+ * @param string $remarketingAudienceId The ID of the remarketing audience to
+ * delete.
+ * @param array $optParams Optional parameters.
+ */
+ public function delete($accountId, $webPropertyId, $remarketingAudienceId, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'remarketingAudienceId' => $remarketingAudienceId];
+ $params = \array_merge($params, $optParams);
+ return $this->call('delete', [$params]);
+ }
+ /**
+ * Gets a remarketing audience to which the user has access.
+ * (remarketingAudience.get)
+ *
+ * @param string $accountId The account ID of the remarketing audience to
+ * retrieve.
+ * @param string $webPropertyId The web property ID of the remarketing audience
+ * to retrieve.
+ * @param string $remarketingAudienceId The ID of the remarketing audience to
+ * retrieve.
+ * @param array $optParams Optional parameters.
+ * @return RemarketingAudience
+ */
+ public function get($accountId, $webPropertyId, $remarketingAudienceId, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'remarketingAudienceId' => $remarketingAudienceId];
+ $params = \array_merge($params, $optParams);
+ return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\RemarketingAudience::class);
+ }
+ /**
+ * Creates a new remarketing audience. (remarketingAudience.insert)
+ *
+ * @param string $accountId The account ID for which to create the remarketing
+ * audience.
+ * @param string $webPropertyId Web property ID for which to create the
+ * remarketing audience.
+ * @param RemarketingAudience $postBody
+ * @param array $optParams Optional parameters.
+ * @return RemarketingAudience
+ */
+ public function insert($accountId, $webPropertyId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\RemarketingAudience $postBody, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('insert', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\RemarketingAudience::class);
+ }
+ /**
+ * Lists remarketing audiences to which the user has access.
+ * (remarketingAudience.listManagementRemarketingAudience)
+ *
+ * @param string $accountId The account ID of the remarketing audiences to
+ * retrieve.
+ * @param string $webPropertyId The web property ID of the remarketing audiences
+ * to retrieve.
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param int max-results The maximum number of remarketing audiences to
+ * include in this response.
+ * @opt_param int start-index An index of the first entity to retrieve. Use this
+ * parameter as a pagination mechanism along with the max-results parameter.
+ * @opt_param string type
+ * @return RemarketingAudiences
+ */
+ public function listManagementRemarketingAudience($accountId, $webPropertyId, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\RemarketingAudiences::class);
+ }
+ /**
+ * Updates an existing remarketing audience. This method supports patch
+ * semantics. (remarketingAudience.patch)
+ *
+ * @param string $accountId The account ID of the remarketing audience to
+ * update.
+ * @param string $webPropertyId The web property ID of the remarketing audience
+ * to update.
+ * @param string $remarketingAudienceId The ID of the remarketing audience to
+ * update.
+ * @param RemarketingAudience $postBody
+ * @param array $optParams Optional parameters.
+ * @return RemarketingAudience
+ */
+ public function patch($accountId, $webPropertyId, $remarketingAudienceId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\RemarketingAudience $postBody, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'remarketingAudienceId' => $remarketingAudienceId, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\RemarketingAudience::class);
+ }
+ /**
+ * Updates an existing remarketing audience. (remarketingAudience.update)
+ *
+ * @param string $accountId The account ID of the remarketing audience to
+ * update.
+ * @param string $webPropertyId The web property ID of the remarketing audience
+ * to update.
+ * @param string $remarketingAudienceId The ID of the remarketing audience to
+ * update.
+ * @param RemarketingAudience $postBody
+ * @param array $optParams Optional parameters.
+ * @return RemarketingAudience
+ */
+ public function update($accountId, $webPropertyId, $remarketingAudienceId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\RemarketingAudience $postBody, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'remarketingAudienceId' => $remarketingAudienceId, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('update', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\RemarketingAudience::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementRemarketingAudience::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Resource_ManagementRemarketingAudience');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementSegments.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementSegments.php
new file mode 100644
index 000000000..f4d526bcf
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementSegments.php
@@ -0,0 +1,52 @@
+
+ * $analyticsService = new Google\Service\Analytics(...);
+ * $segments = $analyticsService->segments;
+ *
+ */
+class ManagementSegments extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Lists segments to which the user has access.
+ * (segments.listManagementSegments)
+ *
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param int max-results The maximum number of segments to include in this
+ * response.
+ * @opt_param int start-index An index of the first segment to retrieve. Use
+ * this parameter as a pagination mechanism along with the max-results
+ * parameter.
+ * @return Segments
+ */
+ public function listManagementSegments($optParams = [])
+ {
+ $params = [];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Segments::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementSegments::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Resource_ManagementSegments');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementUnsampledReports.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementUnsampledReports.php
new file mode 100644
index 000000000..d2f4149fd
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementUnsampledReports.php
@@ -0,0 +1,111 @@
+
+ * $analyticsService = new Google\Service\Analytics(...);
+ * $unsampledReports = $analyticsService->unsampledReports;
+ *
+ */
+class ManagementUnsampledReports extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Deletes an unsampled report. (unsampledReports.delete)
+ *
+ * @param string $accountId Account ID to delete the unsampled report for.
+ * @param string $webPropertyId Web property ID to delete the unsampled reports
+ * for.
+ * @param string $profileId View (Profile) ID to delete the unsampled report
+ * for.
+ * @param string $unsampledReportId ID of the unsampled report to be deleted.
+ * @param array $optParams Optional parameters.
+ */
+ public function delete($accountId, $webPropertyId, $profileId, $unsampledReportId, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'unsampledReportId' => $unsampledReportId];
+ $params = \array_merge($params, $optParams);
+ return $this->call('delete', [$params]);
+ }
+ /**
+ * Returns a single unsampled report. (unsampledReports.get)
+ *
+ * @param string $accountId Account ID to retrieve unsampled report for.
+ * @param string $webPropertyId Web property ID to retrieve unsampled reports
+ * for.
+ * @param string $profileId View (Profile) ID to retrieve unsampled report for.
+ * @param string $unsampledReportId ID of the unsampled report to retrieve.
+ * @param array $optParams Optional parameters.
+ * @return UnsampledReport
+ */
+ public function get($accountId, $webPropertyId, $profileId, $unsampledReportId, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'unsampledReportId' => $unsampledReportId];
+ $params = \array_merge($params, $optParams);
+ return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\UnsampledReport::class);
+ }
+ /**
+ * Create a new unsampled report. (unsampledReports.insert)
+ *
+ * @param string $accountId Account ID to create the unsampled report for.
+ * @param string $webPropertyId Web property ID to create the unsampled report
+ * for.
+ * @param string $profileId View (Profile) ID to create the unsampled report
+ * for.
+ * @param UnsampledReport $postBody
+ * @param array $optParams Optional parameters.
+ * @return UnsampledReport
+ */
+ public function insert($accountId, $webPropertyId, $profileId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\UnsampledReport $postBody, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('insert', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\UnsampledReport::class);
+ }
+ /**
+ * Lists unsampled reports to which the user has access.
+ * (unsampledReports.listManagementUnsampledReports)
+ *
+ * @param string $accountId Account ID to retrieve unsampled reports for. Must
+ * be a specific account ID, ~all is not supported.
+ * @param string $webPropertyId Web property ID to retrieve unsampled reports
+ * for. Must be a specific web property ID, ~all is not supported.
+ * @param string $profileId View (Profile) ID to retrieve unsampled reports for.
+ * Must be a specific view (profile) ID, ~all is not supported.
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param int max-results The maximum number of unsampled reports to include
+ * in this response.
+ * @opt_param int start-index An index of the first unsampled report to
+ * retrieve. Use this parameter as a pagination mechanism along with the max-
+ * results parameter.
+ * @return UnsampledReports
+ */
+ public function listManagementUnsampledReports($accountId, $webPropertyId, $profileId, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\UnsampledReports::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementUnsampledReports::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Resource_ManagementUnsampledReports');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementUploads.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementUploads.php
new file mode 100644
index 000000000..f4ddd6306
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementUploads.php
@@ -0,0 +1,107 @@
+
+ * $analyticsService = new Google\Service\Analytics(...);
+ * $uploads = $analyticsService->uploads;
+ *
+ */
+class ManagementUploads extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Delete data associated with a previous upload. (uploads.deleteUploadData)
+ *
+ * @param string $accountId Account Id for the uploads to be deleted.
+ * @param string $webPropertyId Web property Id for the uploads to be deleted.
+ * @param string $customDataSourceId Custom data source Id for the uploads to be
+ * deleted.
+ * @param AnalyticsDataimportDeleteUploadDataRequest $postBody
+ * @param array $optParams Optional parameters.
+ */
+ public function deleteUploadData($accountId, $webPropertyId, $customDataSourceId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\AnalyticsDataimportDeleteUploadDataRequest $postBody, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'customDataSourceId' => $customDataSourceId, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('deleteUploadData', [$params]);
+ }
+ /**
+ * List uploads to which the user has access. (uploads.get)
+ *
+ * @param string $accountId Account Id for the upload to retrieve.
+ * @param string $webPropertyId Web property Id for the upload to retrieve.
+ * @param string $customDataSourceId Custom data source Id for upload to
+ * retrieve.
+ * @param string $uploadId Upload Id to retrieve.
+ * @param array $optParams Optional parameters.
+ * @return Upload
+ */
+ public function get($accountId, $webPropertyId, $customDataSourceId, $uploadId, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'customDataSourceId' => $customDataSourceId, 'uploadId' => $uploadId];
+ $params = \array_merge($params, $optParams);
+ return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Upload::class);
+ }
+ /**
+ * List uploads to which the user has access. (uploads.listManagementUploads)
+ *
+ * @param string $accountId Account Id for the uploads to retrieve.
+ * @param string $webPropertyId Web property Id for the uploads to retrieve.
+ * @param string $customDataSourceId Custom data source Id for uploads to
+ * retrieve.
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param int max-results The maximum number of uploads to include in this
+ * response.
+ * @opt_param int start-index A 1-based index of the first upload to retrieve.
+ * Use this parameter as a pagination mechanism along with the max-results
+ * parameter.
+ * @return Uploads
+ */
+ public function listManagementUploads($accountId, $webPropertyId, $customDataSourceId, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'customDataSourceId' => $customDataSourceId];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Uploads::class);
+ }
+ /**
+ * Upload data for a custom data source. (uploads.uploadData)
+ *
+ * @param string $accountId Account Id associated with the upload.
+ * @param string $webPropertyId Web property UA-string associated with the
+ * upload.
+ * @param string $customDataSourceId Custom data source Id to which the data
+ * being uploaded belongs.
+ * @param array $optParams Optional parameters.
+ * @return Upload
+ */
+ public function uploadData($accountId, $webPropertyId, $customDataSourceId, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'customDataSourceId' => $customDataSourceId];
+ $params = \array_merge($params, $optParams);
+ return $this->call('uploadData', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Upload::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementUploads::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Resource_ManagementUploads');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementWebPropertyAdWordsLinks.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementWebPropertyAdWordsLinks.php
new file mode 100644
index 000000000..1d12d1c94
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementWebPropertyAdWordsLinks.php
@@ -0,0 +1,145 @@
+
+ * $analyticsService = new Google\Service\Analytics(...);
+ * $webPropertyAdWordsLinks = $analyticsService->webPropertyAdWordsLinks;
+ *
+ */
+class ManagementWebPropertyAdWordsLinks extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Deletes a web property-Google Ads link. (webPropertyAdWordsLinks.delete)
+ *
+ * @param string $accountId ID of the account which the given web property
+ * belongs to.
+ * @param string $webPropertyId Web property ID to delete the Google Ads link
+ * for.
+ * @param string $webPropertyAdWordsLinkId Web property Google Ads link ID.
+ * @param array $optParams Optional parameters.
+ */
+ public function delete($accountId, $webPropertyId, $webPropertyAdWordsLinkId, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'webPropertyAdWordsLinkId' => $webPropertyAdWordsLinkId];
+ $params = \array_merge($params, $optParams);
+ return $this->call('delete', [$params]);
+ }
+ /**
+ * Returns a web property-Google Ads link to which the user has access.
+ * (webPropertyAdWordsLinks.get)
+ *
+ * @param string $accountId ID of the account which the given web property
+ * belongs to.
+ * @param string $webPropertyId Web property ID to retrieve the Google Ads link
+ * for.
+ * @param string $webPropertyAdWordsLinkId Web property-Google Ads link ID.
+ * @param array $optParams Optional parameters.
+ * @return EntityAdWordsLink
+ */
+ public function get($accountId, $webPropertyId, $webPropertyAdWordsLinkId, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'webPropertyAdWordsLinkId' => $webPropertyAdWordsLinkId];
+ $params = \array_merge($params, $optParams);
+ return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityAdWordsLink::class);
+ }
+ /**
+ * Creates a webProperty-Google Ads link. (webPropertyAdWordsLinks.insert)
+ *
+ * @param string $accountId ID of the Google Analytics account to create the
+ * link for.
+ * @param string $webPropertyId Web property ID to create the link for.
+ * @param EntityAdWordsLink $postBody
+ * @param array $optParams Optional parameters.
+ * @return EntityAdWordsLink
+ */
+ public function insert($accountId, $webPropertyId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityAdWordsLink $postBody, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('insert', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityAdWordsLink::class);
+ }
+ /**
+ * Lists webProperty-Google Ads links for a given web property.
+ * (webPropertyAdWordsLinks.listManagementWebPropertyAdWordsLinks)
+ *
+ * @param string $accountId ID of the account which the given web property
+ * belongs to.
+ * @param string $webPropertyId Web property ID to retrieve the Google Ads links
+ * for.
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param int max-results The maximum number of webProperty-Google Ads links
+ * to include in this response.
+ * @opt_param int start-index An index of the first webProperty-Google Ads link
+ * to retrieve. Use this parameter as a pagination mechanism along with the max-
+ * results parameter.
+ * @return EntityAdWordsLinks
+ */
+ public function listManagementWebPropertyAdWordsLinks($accountId, $webPropertyId, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityAdWordsLinks::class);
+ }
+ /**
+ * Updates an existing webProperty-Google Ads link. This method supports patch
+ * semantics. (webPropertyAdWordsLinks.patch)
+ *
+ * @param string $accountId ID of the account which the given web property
+ * belongs to.
+ * @param string $webPropertyId Web property ID to retrieve the Google Ads link
+ * for.
+ * @param string $webPropertyAdWordsLinkId Web property-Google Ads link ID.
+ * @param EntityAdWordsLink $postBody
+ * @param array $optParams Optional parameters.
+ * @return EntityAdWordsLink
+ */
+ public function patch($accountId, $webPropertyId, $webPropertyAdWordsLinkId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityAdWordsLink $postBody, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'webPropertyAdWordsLinkId' => $webPropertyAdWordsLinkId, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityAdWordsLink::class);
+ }
+ /**
+ * Updates an existing webProperty-Google Ads link.
+ * (webPropertyAdWordsLinks.update)
+ *
+ * @param string $accountId ID of the account which the given web property
+ * belongs to.
+ * @param string $webPropertyId Web property ID to retrieve the Google Ads link
+ * for.
+ * @param string $webPropertyAdWordsLinkId Web property-Google Ads link ID.
+ * @param EntityAdWordsLink $postBody
+ * @param array $optParams Optional parameters.
+ * @return EntityAdWordsLink
+ */
+ public function update($accountId, $webPropertyId, $webPropertyAdWordsLinkId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityAdWordsLink $postBody, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'webPropertyAdWordsLinkId' => $webPropertyAdWordsLinkId, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('update', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityAdWordsLink::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementWebPropertyAdWordsLinks::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Resource_ManagementWebPropertyAdWordsLinks');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementWebproperties.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementWebproperties.php
new file mode 100644
index 000000000..159d529bc
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementWebproperties.php
@@ -0,0 +1,116 @@
+
+ * $analyticsService = new Google\Service\Analytics(...);
+ * $webproperties = $analyticsService->webproperties;
+ *
+ */
+class ManagementWebproperties extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Gets a web property to which the user has access. (webproperties.get)
+ *
+ * @param string $accountId Account ID to retrieve the web property for.
+ * @param string $webPropertyId ID to retrieve the web property for.
+ * @param array $optParams Optional parameters.
+ * @return Webproperty
+ */
+ public function get($accountId, $webPropertyId, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId];
+ $params = \array_merge($params, $optParams);
+ return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Webproperty::class);
+ }
+ /**
+ * Create a new property if the account has fewer than 20 properties. Web
+ * properties are visible in the Google Analytics interface only if they have at
+ * least one profile. (webproperties.insert)
+ *
+ * @param string $accountId Account ID to create the web property for.
+ * @param Webproperty $postBody
+ * @param array $optParams Optional parameters.
+ * @return Webproperty
+ */
+ public function insert($accountId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\Webproperty $postBody, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('insert', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Webproperty::class);
+ }
+ /**
+ * Lists web properties to which the user has access.
+ * (webproperties.listManagementWebproperties)
+ *
+ * @param string $accountId Account ID to retrieve web properties for. Can
+ * either be a specific account ID or '~all', which refers to all the accounts
+ * that user has access to.
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param int max-results The maximum number of web properties to include in
+ * this response.
+ * @opt_param int start-index An index of the first entity to retrieve. Use this
+ * parameter as a pagination mechanism along with the max-results parameter.
+ * @return Webproperties
+ */
+ public function listManagementWebproperties($accountId, $optParams = [])
+ {
+ $params = ['accountId' => $accountId];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Webproperties::class);
+ }
+ /**
+ * Updates an existing web property. This method supports patch semantics.
+ * (webproperties.patch)
+ *
+ * @param string $accountId Account ID to which the web property belongs
+ * @param string $webPropertyId Web property ID
+ * @param Webproperty $postBody
+ * @param array $optParams Optional parameters.
+ * @return Webproperty
+ */
+ public function patch($accountId, $webPropertyId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\Webproperty $postBody, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Webproperty::class);
+ }
+ /**
+ * Updates an existing web property. (webproperties.update)
+ *
+ * @param string $accountId Account ID to which the web property belongs
+ * @param string $webPropertyId Web property ID
+ * @param Webproperty $postBody
+ * @param array $optParams Optional parameters.
+ * @return Webproperty
+ */
+ public function update($accountId, $webPropertyId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\Webproperty $postBody, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('update', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Webproperty::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementWebproperties::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Resource_ManagementWebproperties');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementWebpropertyUserLinks.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementWebpropertyUserLinks.php
new file mode 100644
index 000000000..efca0ab3d
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/ManagementWebpropertyUserLinks.php
@@ -0,0 +1,104 @@
+
+ * $analyticsService = new Google\Service\Analytics(...);
+ * $webpropertyUserLinks = $analyticsService->webpropertyUserLinks;
+ *
+ */
+class ManagementWebpropertyUserLinks extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Removes a user from the given web property. (webpropertyUserLinks.delete)
+ *
+ * @param string $accountId Account ID to delete the user link for.
+ * @param string $webPropertyId Web Property ID to delete the user link for.
+ * @param string $linkId Link ID to delete the user link for.
+ * @param array $optParams Optional parameters.
+ */
+ public function delete($accountId, $webPropertyId, $linkId, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'linkId' => $linkId];
+ $params = \array_merge($params, $optParams);
+ return $this->call('delete', [$params]);
+ }
+ /**
+ * Adds a new user to the given web property. (webpropertyUserLinks.insert)
+ *
+ * @param string $accountId Account ID to create the user link for.
+ * @param string $webPropertyId Web Property ID to create the user link for.
+ * @param EntityUserLink $postBody
+ * @param array $optParams Optional parameters.
+ * @return EntityUserLink
+ */
+ public function insert($accountId, $webPropertyId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityUserLink $postBody, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('insert', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityUserLink::class);
+ }
+ /**
+ * Lists webProperty-user links for a given web property.
+ * (webpropertyUserLinks.listManagementWebpropertyUserLinks)
+ *
+ * @param string $accountId Account ID which the given web property belongs to.
+ * @param string $webPropertyId Web Property ID for the webProperty-user links
+ * to retrieve. Can either be a specific web property ID or '~all', which refers
+ * to all the web properties that user has access to.
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param int max-results The maximum number of webProperty-user Links to
+ * include in this response.
+ * @opt_param int start-index An index of the first webProperty-user link to
+ * retrieve. Use this parameter as a pagination mechanism along with the max-
+ * results parameter.
+ * @return EntityUserLinks
+ */
+ public function listManagementWebpropertyUserLinks($accountId, $webPropertyId, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityUserLinks::class);
+ }
+ /**
+ * Updates permissions for an existing user on the given web property.
+ * (webpropertyUserLinks.update)
+ *
+ * @param string $accountId Account ID to update the account-user link for.
+ * @param string $webPropertyId Web property ID to update the account-user link
+ * for.
+ * @param string $linkId Link ID to update the account-user link for.
+ * @param EntityUserLink $postBody
+ * @param array $optParams Optional parameters.
+ * @return EntityUserLink
+ */
+ public function update($accountId, $webPropertyId, $linkId, \Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityUserLink $postBody, $optParams = [])
+ {
+ $params = ['accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'linkId' => $linkId, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('update', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\EntityUserLink::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\ManagementWebpropertyUserLinks::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Resource_ManagementWebpropertyUserLinks');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/Metadata.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/Metadata.php
new file mode 100644
index 000000000..5fbdc1675
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/Metadata.php
@@ -0,0 +1,32 @@
+
+ * $analyticsService = new Google\Service\Analytics(...);
+ * $metadata = $analyticsService->metadata;
+ *
+ */
+class Metadata extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\Metadata::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Resource_Metadata');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/MetadataColumns.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/MetadataColumns.php
new file mode 100644
index 000000000..b153d8025
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/MetadataColumns.php
@@ -0,0 +1,47 @@
+
+ * $analyticsService = new Google\Service\Analytics(...);
+ * $columns = $analyticsService->columns;
+ *
+ */
+class MetadataColumns extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Lists all columns for a report type (columns.listMetadataColumns)
+ *
+ * @param string $reportType Report type. Allowed Values: 'ga'. Where 'ga'
+ * corresponds to the Core Reporting API
+ * @param array $optParams Optional parameters.
+ * @return Columns
+ */
+ public function listMetadataColumns($reportType, $optParams = [])
+ {
+ $params = ['reportType' => $reportType];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\Columns::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\MetadataColumns::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Resource_MetadataColumns');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/Provisioning.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/Provisioning.php
new file mode 100644
index 000000000..4fee15b6c
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/Provisioning.php
@@ -0,0 +1,61 @@
+
+ * $analyticsService = new Google\Service\Analytics(...);
+ * $provisioning = $analyticsService->provisioning;
+ *
+ */
+class Provisioning extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Creates an account ticket. (provisioning.createAccountTicket)
+ *
+ * @param AccountTicket $postBody
+ * @param array $optParams Optional parameters.
+ * @return AccountTicket
+ */
+ public function createAccountTicket(\Google\Site_Kit_Dependencies\Google\Service\Analytics\AccountTicket $postBody, $optParams = [])
+ {
+ $params = ['postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('createAccountTicket', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\AccountTicket::class);
+ }
+ /**
+ * Provision account. (provisioning.createAccountTree)
+ *
+ * @param AccountTreeRequest $postBody
+ * @param array $optParams Optional parameters.
+ * @return AccountTreeResponse
+ */
+ public function createAccountTree(\Google\Site_Kit_Dependencies\Google\Service\Analytics\AccountTreeRequest $postBody, $optParams = [])
+ {
+ $params = ['postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('createAccountTree', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\AccountTreeResponse::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\Provisioning::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Resource_Provisioning');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/UserDeletion.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/UserDeletion.php
new file mode 100644
index 000000000..f2ee5ccfa
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/UserDeletion.php
@@ -0,0 +1,32 @@
+
+ * $analyticsService = new Google\Service\Analytics(...);
+ * $userDeletion = $analyticsService->userDeletion;
+ *
+ */
+class UserDeletion extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\UserDeletion::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Resource_UserDeletion');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/UserDeletionUserDeletionRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/UserDeletionUserDeletionRequest.php
new file mode 100644
index 000000000..eb1f33c95
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Resource/UserDeletionUserDeletionRequest.php
@@ -0,0 +1,46 @@
+
+ * $analyticsService = new Google\Service\Analytics(...);
+ * $userDeletionRequest = $analyticsService->userDeletionRequest;
+ *
+ */
+class UserDeletionUserDeletionRequest extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Insert or update a user deletion requests. (userDeletionRequest.upsert)
+ *
+ * @param UserDeletionRequest $postBody
+ * @param array $optParams Optional parameters.
+ * @return UserDeletionRequest
+ */
+ public function upsert(\Google\Site_Kit_Dependencies\Google\Service\Analytics\UserDeletionRequest $postBody, $optParams = [])
+ {
+ $params = ['postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('upsert', [$params], \Google\Site_Kit_Dependencies\Google\Service\Analytics\UserDeletionRequest::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Resource\UserDeletionUserDeletionRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Resource_UserDeletionUserDeletionRequest');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Segment.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Segment.php
new file mode 100644
index 000000000..485f89222
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Segment.php
@@ -0,0 +1,186 @@
+created = $created;
+ }
+ /**
+ * @return string
+ */
+ public function getCreated()
+ {
+ return $this->created;
+ }
+ /**
+ * @param string
+ */
+ public function setDefinition($definition)
+ {
+ $this->definition = $definition;
+ }
+ /**
+ * @return string
+ */
+ public function getDefinition()
+ {
+ return $this->definition;
+ }
+ /**
+ * @param string
+ */
+ public function setId($id)
+ {
+ $this->id = $id;
+ }
+ /**
+ * @return string
+ */
+ public function getId()
+ {
+ return $this->id;
+ }
+ /**
+ * @param string
+ */
+ public function setKind($kind)
+ {
+ $this->kind = $kind;
+ }
+ /**
+ * @return string
+ */
+ public function getKind()
+ {
+ return $this->kind;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param string
+ */
+ public function setSegmentId($segmentId)
+ {
+ $this->segmentId = $segmentId;
+ }
+ /**
+ * @return string
+ */
+ public function getSegmentId()
+ {
+ return $this->segmentId;
+ }
+ /**
+ * @param string
+ */
+ public function setSelfLink($selfLink)
+ {
+ $this->selfLink = $selfLink;
+ }
+ /**
+ * @return string
+ */
+ public function getSelfLink()
+ {
+ return $this->selfLink;
+ }
+ /**
+ * @param string
+ */
+ public function setType($type)
+ {
+ $this->type = $type;
+ }
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+ /**
+ * @param string
+ */
+ public function setUpdated($updated)
+ {
+ $this->updated = $updated;
+ }
+ /**
+ * @return string
+ */
+ public function getUpdated()
+ {
+ return $this->updated;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Segment::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Segment');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Segments.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Segments.php
new file mode 100644
index 000000000..6ee29076d
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Segments.php
@@ -0,0 +1,167 @@
+items = $items;
+ }
+ /**
+ * @return Segment[]
+ */
+ public function getItems()
+ {
+ return $this->items;
+ }
+ /**
+ * @param int
+ */
+ public function setItemsPerPage($itemsPerPage)
+ {
+ $this->itemsPerPage = $itemsPerPage;
+ }
+ /**
+ * @return int
+ */
+ public function getItemsPerPage()
+ {
+ return $this->itemsPerPage;
+ }
+ /**
+ * @param string
+ */
+ public function setKind($kind)
+ {
+ $this->kind = $kind;
+ }
+ /**
+ * @return string
+ */
+ public function getKind()
+ {
+ return $this->kind;
+ }
+ /**
+ * @param string
+ */
+ public function setNextLink($nextLink)
+ {
+ $this->nextLink = $nextLink;
+ }
+ /**
+ * @return string
+ */
+ public function getNextLink()
+ {
+ return $this->nextLink;
+ }
+ /**
+ * @param string
+ */
+ public function setPreviousLink($previousLink)
+ {
+ $this->previousLink = $previousLink;
+ }
+ /**
+ * @return string
+ */
+ public function getPreviousLink()
+ {
+ return $this->previousLink;
+ }
+ /**
+ * @param int
+ */
+ public function setStartIndex($startIndex)
+ {
+ $this->startIndex = $startIndex;
+ }
+ /**
+ * @return int
+ */
+ public function getStartIndex()
+ {
+ return $this->startIndex;
+ }
+ /**
+ * @param int
+ */
+ public function setTotalResults($totalResults)
+ {
+ $this->totalResults = $totalResults;
+ }
+ /**
+ * @return int
+ */
+ public function getTotalResults()
+ {
+ return $this->totalResults;
+ }
+ /**
+ * @param string
+ */
+ public function setUsername($username)
+ {
+ $this->username = $username;
+ }
+ /**
+ * @return string
+ */
+ public function getUsername()
+ {
+ return $this->username;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Segments::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Segments');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/UnsampledReport.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/UnsampledReport.php
new file mode 100644
index 000000000..d9c002229
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/UnsampledReport.php
@@ -0,0 +1,363 @@
+ "end-date", "startDate" => "start-date"];
+ /**
+ * @var string
+ */
+ public $accountId;
+ protected $cloudStorageDownloadDetailsType = \Google\Site_Kit_Dependencies\Google\Service\Analytics\UnsampledReportCloudStorageDownloadDetails::class;
+ protected $cloudStorageDownloadDetailsDataType = '';
+ /**
+ * @var string
+ */
+ public $created;
+ /**
+ * @var string
+ */
+ public $dimensions;
+ /**
+ * @var string
+ */
+ public $downloadType;
+ protected $driveDownloadDetailsType = \Google\Site_Kit_Dependencies\Google\Service\Analytics\UnsampledReportDriveDownloadDetails::class;
+ protected $driveDownloadDetailsDataType = '';
+ /**
+ * @var string
+ */
+ public $endDate;
+ /**
+ * @var string
+ */
+ public $filters;
+ /**
+ * @var string
+ */
+ public $id;
+ /**
+ * @var string
+ */
+ public $kind;
+ /**
+ * @var string
+ */
+ public $metrics;
+ /**
+ * @var string
+ */
+ public $profileId;
+ /**
+ * @var string
+ */
+ public $segment;
+ /**
+ * @var string
+ */
+ public $selfLink;
+ /**
+ * @var string
+ */
+ public $startDate;
+ /**
+ * @var string
+ */
+ public $status;
+ /**
+ * @var string
+ */
+ public $title;
+ /**
+ * @var string
+ */
+ public $updated;
+ /**
+ * @var string
+ */
+ public $webPropertyId;
+ /**
+ * @param string
+ */
+ public function setAccountId($accountId)
+ {
+ $this->accountId = $accountId;
+ }
+ /**
+ * @return string
+ */
+ public function getAccountId()
+ {
+ return $this->accountId;
+ }
+ /**
+ * @param UnsampledReportCloudStorageDownloadDetails
+ */
+ public function setCloudStorageDownloadDetails(\Google\Site_Kit_Dependencies\Google\Service\Analytics\UnsampledReportCloudStorageDownloadDetails $cloudStorageDownloadDetails)
+ {
+ $this->cloudStorageDownloadDetails = $cloudStorageDownloadDetails;
+ }
+ /**
+ * @return UnsampledReportCloudStorageDownloadDetails
+ */
+ public function getCloudStorageDownloadDetails()
+ {
+ return $this->cloudStorageDownloadDetails;
+ }
+ /**
+ * @param string
+ */
+ public function setCreated($created)
+ {
+ $this->created = $created;
+ }
+ /**
+ * @return string
+ */
+ public function getCreated()
+ {
+ return $this->created;
+ }
+ /**
+ * @param string
+ */
+ public function setDimensions($dimensions)
+ {
+ $this->dimensions = $dimensions;
+ }
+ /**
+ * @return string
+ */
+ public function getDimensions()
+ {
+ return $this->dimensions;
+ }
+ /**
+ * @param string
+ */
+ public function setDownloadType($downloadType)
+ {
+ $this->downloadType = $downloadType;
+ }
+ /**
+ * @return string
+ */
+ public function getDownloadType()
+ {
+ return $this->downloadType;
+ }
+ /**
+ * @param UnsampledReportDriveDownloadDetails
+ */
+ public function setDriveDownloadDetails(\Google\Site_Kit_Dependencies\Google\Service\Analytics\UnsampledReportDriveDownloadDetails $driveDownloadDetails)
+ {
+ $this->driveDownloadDetails = $driveDownloadDetails;
+ }
+ /**
+ * @return UnsampledReportDriveDownloadDetails
+ */
+ public function getDriveDownloadDetails()
+ {
+ return $this->driveDownloadDetails;
+ }
+ /**
+ * @param string
+ */
+ public function setEndDate($endDate)
+ {
+ $this->endDate = $endDate;
+ }
+ /**
+ * @return string
+ */
+ public function getEndDate()
+ {
+ return $this->endDate;
+ }
+ /**
+ * @param string
+ */
+ public function setFilters($filters)
+ {
+ $this->filters = $filters;
+ }
+ /**
+ * @return string
+ */
+ public function getFilters()
+ {
+ return $this->filters;
+ }
+ /**
+ * @param string
+ */
+ public function setId($id)
+ {
+ $this->id = $id;
+ }
+ /**
+ * @return string
+ */
+ public function getId()
+ {
+ return $this->id;
+ }
+ /**
+ * @param string
+ */
+ public function setKind($kind)
+ {
+ $this->kind = $kind;
+ }
+ /**
+ * @return string
+ */
+ public function getKind()
+ {
+ return $this->kind;
+ }
+ /**
+ * @param string
+ */
+ public function setMetrics($metrics)
+ {
+ $this->metrics = $metrics;
+ }
+ /**
+ * @return string
+ */
+ public function getMetrics()
+ {
+ return $this->metrics;
+ }
+ /**
+ * @param string
+ */
+ public function setProfileId($profileId)
+ {
+ $this->profileId = $profileId;
+ }
+ /**
+ * @return string
+ */
+ public function getProfileId()
+ {
+ return $this->profileId;
+ }
+ /**
+ * @param string
+ */
+ public function setSegment($segment)
+ {
+ $this->segment = $segment;
+ }
+ /**
+ * @return string
+ */
+ public function getSegment()
+ {
+ return $this->segment;
+ }
+ /**
+ * @param string
+ */
+ public function setSelfLink($selfLink)
+ {
+ $this->selfLink = $selfLink;
+ }
+ /**
+ * @return string
+ */
+ public function getSelfLink()
+ {
+ return $this->selfLink;
+ }
+ /**
+ * @param string
+ */
+ public function setStartDate($startDate)
+ {
+ $this->startDate = $startDate;
+ }
+ /**
+ * @return string
+ */
+ public function getStartDate()
+ {
+ return $this->startDate;
+ }
+ /**
+ * @param string
+ */
+ public function setStatus($status)
+ {
+ $this->status = $status;
+ }
+ /**
+ * @return string
+ */
+ public function getStatus()
+ {
+ return $this->status;
+ }
+ /**
+ * @param string
+ */
+ public function setTitle($title)
+ {
+ $this->title = $title;
+ }
+ /**
+ * @return string
+ */
+ public function getTitle()
+ {
+ return $this->title;
+ }
+ /**
+ * @param string
+ */
+ public function setUpdated($updated)
+ {
+ $this->updated = $updated;
+ }
+ /**
+ * @return string
+ */
+ public function getUpdated()
+ {
+ return $this->updated;
+ }
+ /**
+ * @param string
+ */
+ public function setWebPropertyId($webPropertyId)
+ {
+ $this->webPropertyId = $webPropertyId;
+ }
+ /**
+ * @return string
+ */
+ public function getWebPropertyId()
+ {
+ return $this->webPropertyId;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\UnsampledReport::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_UnsampledReport');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/UnsampledReportCloudStorageDownloadDetails.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/UnsampledReportCloudStorageDownloadDetails.php
new file mode 100644
index 000000000..2bfc28724
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/UnsampledReportCloudStorageDownloadDetails.php
@@ -0,0 +1,60 @@
+bucketId = $bucketId;
+ }
+ /**
+ * @return string
+ */
+ public function getBucketId()
+ {
+ return $this->bucketId;
+ }
+ /**
+ * @param string
+ */
+ public function setObjectId($objectId)
+ {
+ $this->objectId = $objectId;
+ }
+ /**
+ * @return string
+ */
+ public function getObjectId()
+ {
+ return $this->objectId;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\UnsampledReportCloudStorageDownloadDetails::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_UnsampledReportCloudStorageDownloadDetails');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/UnsampledReportDriveDownloadDetails.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/UnsampledReportDriveDownloadDetails.php
new file mode 100644
index 000000000..07f35cf89
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/UnsampledReportDriveDownloadDetails.php
@@ -0,0 +1,42 @@
+documentId = $documentId;
+ }
+ /**
+ * @return string
+ */
+ public function getDocumentId()
+ {
+ return $this->documentId;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\UnsampledReportDriveDownloadDetails::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_UnsampledReportDriveDownloadDetails');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/UnsampledReports.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/UnsampledReports.php
new file mode 100644
index 000000000..5a1464242
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/UnsampledReports.php
@@ -0,0 +1,167 @@
+items = $items;
+ }
+ /**
+ * @return UnsampledReport[]
+ */
+ public function getItems()
+ {
+ return $this->items;
+ }
+ /**
+ * @param int
+ */
+ public function setItemsPerPage($itemsPerPage)
+ {
+ $this->itemsPerPage = $itemsPerPage;
+ }
+ /**
+ * @return int
+ */
+ public function getItemsPerPage()
+ {
+ return $this->itemsPerPage;
+ }
+ /**
+ * @param string
+ */
+ public function setKind($kind)
+ {
+ $this->kind = $kind;
+ }
+ /**
+ * @return string
+ */
+ public function getKind()
+ {
+ return $this->kind;
+ }
+ /**
+ * @param string
+ */
+ public function setNextLink($nextLink)
+ {
+ $this->nextLink = $nextLink;
+ }
+ /**
+ * @return string
+ */
+ public function getNextLink()
+ {
+ return $this->nextLink;
+ }
+ /**
+ * @param string
+ */
+ public function setPreviousLink($previousLink)
+ {
+ $this->previousLink = $previousLink;
+ }
+ /**
+ * @return string
+ */
+ public function getPreviousLink()
+ {
+ return $this->previousLink;
+ }
+ /**
+ * @param int
+ */
+ public function setStartIndex($startIndex)
+ {
+ $this->startIndex = $startIndex;
+ }
+ /**
+ * @return int
+ */
+ public function getStartIndex()
+ {
+ return $this->startIndex;
+ }
+ /**
+ * @param int
+ */
+ public function setTotalResults($totalResults)
+ {
+ $this->totalResults = $totalResults;
+ }
+ /**
+ * @return int
+ */
+ public function getTotalResults()
+ {
+ return $this->totalResults;
+ }
+ /**
+ * @param string
+ */
+ public function setUsername($username)
+ {
+ $this->username = $username;
+ }
+ /**
+ * @return string
+ */
+ public function getUsername()
+ {
+ return $this->username;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\UnsampledReports::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_UnsampledReports');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Upload.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Upload.php
new file mode 100644
index 000000000..9fa6e5cd8
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Upload.php
@@ -0,0 +1,151 @@
+accountId = $accountId;
+ }
+ /**
+ * @return string
+ */
+ public function getAccountId()
+ {
+ return $this->accountId;
+ }
+ /**
+ * @param string
+ */
+ public function setCustomDataSourceId($customDataSourceId)
+ {
+ $this->customDataSourceId = $customDataSourceId;
+ }
+ /**
+ * @return string
+ */
+ public function getCustomDataSourceId()
+ {
+ return $this->customDataSourceId;
+ }
+ /**
+ * @param string[]
+ */
+ public function setErrors($errors)
+ {
+ $this->errors = $errors;
+ }
+ /**
+ * @return string[]
+ */
+ public function getErrors()
+ {
+ return $this->errors;
+ }
+ /**
+ * @param string
+ */
+ public function setId($id)
+ {
+ $this->id = $id;
+ }
+ /**
+ * @return string
+ */
+ public function getId()
+ {
+ return $this->id;
+ }
+ /**
+ * @param string
+ */
+ public function setKind($kind)
+ {
+ $this->kind = $kind;
+ }
+ /**
+ * @return string
+ */
+ public function getKind()
+ {
+ return $this->kind;
+ }
+ /**
+ * @param string
+ */
+ public function setStatus($status)
+ {
+ $this->status = $status;
+ }
+ /**
+ * @return string
+ */
+ public function getStatus()
+ {
+ return $this->status;
+ }
+ /**
+ * @param string
+ */
+ public function setUploadTime($uploadTime)
+ {
+ $this->uploadTime = $uploadTime;
+ }
+ /**
+ * @return string
+ */
+ public function getUploadTime()
+ {
+ return $this->uploadTime;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Upload::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Upload');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Uploads.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Uploads.php
new file mode 100644
index 000000000..e6c81e72b
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Uploads.php
@@ -0,0 +1,149 @@
+items = $items;
+ }
+ /**
+ * @return Upload[]
+ */
+ public function getItems()
+ {
+ return $this->items;
+ }
+ /**
+ * @param int
+ */
+ public function setItemsPerPage($itemsPerPage)
+ {
+ $this->itemsPerPage = $itemsPerPage;
+ }
+ /**
+ * @return int
+ */
+ public function getItemsPerPage()
+ {
+ return $this->itemsPerPage;
+ }
+ /**
+ * @param string
+ */
+ public function setKind($kind)
+ {
+ $this->kind = $kind;
+ }
+ /**
+ * @return string
+ */
+ public function getKind()
+ {
+ return $this->kind;
+ }
+ /**
+ * @param string
+ */
+ public function setNextLink($nextLink)
+ {
+ $this->nextLink = $nextLink;
+ }
+ /**
+ * @return string
+ */
+ public function getNextLink()
+ {
+ return $this->nextLink;
+ }
+ /**
+ * @param string
+ */
+ public function setPreviousLink($previousLink)
+ {
+ $this->previousLink = $previousLink;
+ }
+ /**
+ * @return string
+ */
+ public function getPreviousLink()
+ {
+ return $this->previousLink;
+ }
+ /**
+ * @param int
+ */
+ public function setStartIndex($startIndex)
+ {
+ $this->startIndex = $startIndex;
+ }
+ /**
+ * @return int
+ */
+ public function getStartIndex()
+ {
+ return $this->startIndex;
+ }
+ /**
+ * @param int
+ */
+ public function setTotalResults($totalResults)
+ {
+ $this->totalResults = $totalResults;
+ }
+ /**
+ * @return int
+ */
+ public function getTotalResults()
+ {
+ return $this->totalResults;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Uploads::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Uploads');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/UserDeletionRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/UserDeletionRequest.php
new file mode 100644
index 000000000..42e860a7b
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/UserDeletionRequest.php
@@ -0,0 +1,130 @@
+deletionRequestTime = $deletionRequestTime;
+ }
+ /**
+ * @return string
+ */
+ public function getDeletionRequestTime()
+ {
+ return $this->deletionRequestTime;
+ }
+ /**
+ * @param string
+ */
+ public function setFirebaseProjectId($firebaseProjectId)
+ {
+ $this->firebaseProjectId = $firebaseProjectId;
+ }
+ /**
+ * @return string
+ */
+ public function getFirebaseProjectId()
+ {
+ return $this->firebaseProjectId;
+ }
+ /**
+ * @param UserDeletionRequestId
+ */
+ public function setId(\Google\Site_Kit_Dependencies\Google\Service\Analytics\UserDeletionRequestId $id)
+ {
+ $this->id = $id;
+ }
+ /**
+ * @return UserDeletionRequestId
+ */
+ public function getId()
+ {
+ return $this->id;
+ }
+ /**
+ * @param string
+ */
+ public function setKind($kind)
+ {
+ $this->kind = $kind;
+ }
+ /**
+ * @return string
+ */
+ public function getKind()
+ {
+ return $this->kind;
+ }
+ /**
+ * @param string
+ */
+ public function setPropertyId($propertyId)
+ {
+ $this->propertyId = $propertyId;
+ }
+ /**
+ * @return string
+ */
+ public function getPropertyId()
+ {
+ return $this->propertyId;
+ }
+ /**
+ * @param string
+ */
+ public function setWebPropertyId($webPropertyId)
+ {
+ $this->webPropertyId = $webPropertyId;
+ }
+ /**
+ * @return string
+ */
+ public function getWebPropertyId()
+ {
+ return $this->webPropertyId;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\UserDeletionRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_UserDeletionRequest');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/UserDeletionRequestId.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/UserDeletionRequestId.php
new file mode 100644
index 000000000..d988b5f65
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/UserDeletionRequestId.php
@@ -0,0 +1,60 @@
+type = $type;
+ }
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+ /**
+ * @param string
+ */
+ public function setUserId($userId)
+ {
+ $this->userId = $userId;
+ }
+ /**
+ * @return string
+ */
+ public function getUserId()
+ {
+ return $this->userId;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\UserDeletionRequestId::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_UserDeletionRequestId');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/UserRef.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/UserRef.php
new file mode 100644
index 000000000..3324fa791
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/UserRef.php
@@ -0,0 +1,78 @@
+email = $email;
+ }
+ /**
+ * @return string
+ */
+ public function getEmail()
+ {
+ return $this->email;
+ }
+ /**
+ * @param string
+ */
+ public function setId($id)
+ {
+ $this->id = $id;
+ }
+ /**
+ * @return string
+ */
+ public function getId()
+ {
+ return $this->id;
+ }
+ /**
+ * @param string
+ */
+ public function setKind($kind)
+ {
+ $this->kind = $kind;
+ }
+ /**
+ * @return string
+ */
+ public function getKind()
+ {
+ return $this->kind;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\UserRef::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_UserRef');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/WebPropertyRef.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/WebPropertyRef.php
new file mode 100644
index 000000000..4e7202f02
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/WebPropertyRef.php
@@ -0,0 +1,132 @@
+accountId = $accountId;
+ }
+ /**
+ * @return string
+ */
+ public function getAccountId()
+ {
+ return $this->accountId;
+ }
+ /**
+ * @param string
+ */
+ public function setHref($href)
+ {
+ $this->href = $href;
+ }
+ /**
+ * @return string
+ */
+ public function getHref()
+ {
+ return $this->href;
+ }
+ /**
+ * @param string
+ */
+ public function setId($id)
+ {
+ $this->id = $id;
+ }
+ /**
+ * @return string
+ */
+ public function getId()
+ {
+ return $this->id;
+ }
+ /**
+ * @param string
+ */
+ public function setInternalWebPropertyId($internalWebPropertyId)
+ {
+ $this->internalWebPropertyId = $internalWebPropertyId;
+ }
+ /**
+ * @return string
+ */
+ public function getInternalWebPropertyId()
+ {
+ return $this->internalWebPropertyId;
+ }
+ /**
+ * @param string
+ */
+ public function setKind($kind)
+ {
+ $this->kind = $kind;
+ }
+ /**
+ * @return string
+ */
+ public function getKind()
+ {
+ return $this->kind;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\WebPropertyRef::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_WebPropertyRef');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/WebPropertySummary.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/WebPropertySummary.php
new file mode 100644
index 000000000..febe39c64
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/WebPropertySummary.php
@@ -0,0 +1,167 @@
+id = $id;
+ }
+ /**
+ * @return string
+ */
+ public function getId()
+ {
+ return $this->id;
+ }
+ /**
+ * @param string
+ */
+ public function setInternalWebPropertyId($internalWebPropertyId)
+ {
+ $this->internalWebPropertyId = $internalWebPropertyId;
+ }
+ /**
+ * @return string
+ */
+ public function getInternalWebPropertyId()
+ {
+ return $this->internalWebPropertyId;
+ }
+ /**
+ * @param string
+ */
+ public function setKind($kind)
+ {
+ $this->kind = $kind;
+ }
+ /**
+ * @return string
+ */
+ public function getKind()
+ {
+ return $this->kind;
+ }
+ /**
+ * @param string
+ */
+ public function setLevel($level)
+ {
+ $this->level = $level;
+ }
+ /**
+ * @return string
+ */
+ public function getLevel()
+ {
+ return $this->level;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param ProfileSummary[]
+ */
+ public function setProfiles($profiles)
+ {
+ $this->profiles = $profiles;
+ }
+ /**
+ * @return ProfileSummary[]
+ */
+ public function getProfiles()
+ {
+ return $this->profiles;
+ }
+ /**
+ * @param bool
+ */
+ public function setStarred($starred)
+ {
+ $this->starred = $starred;
+ }
+ /**
+ * @return bool
+ */
+ public function getStarred()
+ {
+ return $this->starred;
+ }
+ /**
+ * @param string
+ */
+ public function setWebsiteUrl($websiteUrl)
+ {
+ $this->websiteUrl = $websiteUrl;
+ }
+ /**
+ * @return string
+ */
+ public function getWebsiteUrl()
+ {
+ return $this->websiteUrl;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\WebPropertySummary::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_WebPropertySummary');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Webproperties.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Webproperties.php
new file mode 100644
index 000000000..aa686e39b
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Webproperties.php
@@ -0,0 +1,167 @@
+items = $items;
+ }
+ /**
+ * @return Webproperty[]
+ */
+ public function getItems()
+ {
+ return $this->items;
+ }
+ /**
+ * @param int
+ */
+ public function setItemsPerPage($itemsPerPage)
+ {
+ $this->itemsPerPage = $itemsPerPage;
+ }
+ /**
+ * @return int
+ */
+ public function getItemsPerPage()
+ {
+ return $this->itemsPerPage;
+ }
+ /**
+ * @param string
+ */
+ public function setKind($kind)
+ {
+ $this->kind = $kind;
+ }
+ /**
+ * @return string
+ */
+ public function getKind()
+ {
+ return $this->kind;
+ }
+ /**
+ * @param string
+ */
+ public function setNextLink($nextLink)
+ {
+ $this->nextLink = $nextLink;
+ }
+ /**
+ * @return string
+ */
+ public function getNextLink()
+ {
+ return $this->nextLink;
+ }
+ /**
+ * @param string
+ */
+ public function setPreviousLink($previousLink)
+ {
+ $this->previousLink = $previousLink;
+ }
+ /**
+ * @return string
+ */
+ public function getPreviousLink()
+ {
+ return $this->previousLink;
+ }
+ /**
+ * @param int
+ */
+ public function setStartIndex($startIndex)
+ {
+ $this->startIndex = $startIndex;
+ }
+ /**
+ * @return int
+ */
+ public function getStartIndex()
+ {
+ return $this->startIndex;
+ }
+ /**
+ * @param int
+ */
+ public function setTotalResults($totalResults)
+ {
+ $this->totalResults = $totalResults;
+ }
+ /**
+ * @return int
+ */
+ public function getTotalResults()
+ {
+ return $this->totalResults;
+ }
+ /**
+ * @param string
+ */
+ public function setUsername($username)
+ {
+ $this->username = $username;
+ }
+ /**
+ * @return string
+ */
+ public function getUsername()
+ {
+ return $this->username;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Webproperties::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Webproperties');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Webproperty.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Webproperty.php
new file mode 100644
index 000000000..6f31102a2
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/Webproperty.php
@@ -0,0 +1,360 @@
+accountId = $accountId;
+ }
+ /**
+ * @return string
+ */
+ public function getAccountId()
+ {
+ return $this->accountId;
+ }
+ /**
+ * @param WebpropertyChildLink
+ */
+ public function setChildLink(\Google\Site_Kit_Dependencies\Google\Service\Analytics\WebpropertyChildLink $childLink)
+ {
+ $this->childLink = $childLink;
+ }
+ /**
+ * @return WebpropertyChildLink
+ */
+ public function getChildLink()
+ {
+ return $this->childLink;
+ }
+ /**
+ * @param string
+ */
+ public function setCreated($created)
+ {
+ $this->created = $created;
+ }
+ /**
+ * @return string
+ */
+ public function getCreated()
+ {
+ return $this->created;
+ }
+ /**
+ * @param bool
+ */
+ public function setDataRetentionResetOnNewActivity($dataRetentionResetOnNewActivity)
+ {
+ $this->dataRetentionResetOnNewActivity = $dataRetentionResetOnNewActivity;
+ }
+ /**
+ * @return bool
+ */
+ public function getDataRetentionResetOnNewActivity()
+ {
+ return $this->dataRetentionResetOnNewActivity;
+ }
+ /**
+ * @param string
+ */
+ public function setDataRetentionTtl($dataRetentionTtl)
+ {
+ $this->dataRetentionTtl = $dataRetentionTtl;
+ }
+ /**
+ * @return string
+ */
+ public function getDataRetentionTtl()
+ {
+ return $this->dataRetentionTtl;
+ }
+ /**
+ * @param string
+ */
+ public function setDefaultProfileId($defaultProfileId)
+ {
+ $this->defaultProfileId = $defaultProfileId;
+ }
+ /**
+ * @return string
+ */
+ public function getDefaultProfileId()
+ {
+ return $this->defaultProfileId;
+ }
+ /**
+ * @param string
+ */
+ public function setId($id)
+ {
+ $this->id = $id;
+ }
+ /**
+ * @return string
+ */
+ public function getId()
+ {
+ return $this->id;
+ }
+ /**
+ * @param string
+ */
+ public function setIndustryVertical($industryVertical)
+ {
+ $this->industryVertical = $industryVertical;
+ }
+ /**
+ * @return string
+ */
+ public function getIndustryVertical()
+ {
+ return $this->industryVertical;
+ }
+ /**
+ * @param string
+ */
+ public function setInternalWebPropertyId($internalWebPropertyId)
+ {
+ $this->internalWebPropertyId = $internalWebPropertyId;
+ }
+ /**
+ * @return string
+ */
+ public function getInternalWebPropertyId()
+ {
+ return $this->internalWebPropertyId;
+ }
+ /**
+ * @param string
+ */
+ public function setKind($kind)
+ {
+ $this->kind = $kind;
+ }
+ /**
+ * @return string
+ */
+ public function getKind()
+ {
+ return $this->kind;
+ }
+ /**
+ * @param string
+ */
+ public function setLevel($level)
+ {
+ $this->level = $level;
+ }
+ /**
+ * @return string
+ */
+ public function getLevel()
+ {
+ return $this->level;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param WebpropertyParentLink
+ */
+ public function setParentLink(\Google\Site_Kit_Dependencies\Google\Service\Analytics\WebpropertyParentLink $parentLink)
+ {
+ $this->parentLink = $parentLink;
+ }
+ /**
+ * @return WebpropertyParentLink
+ */
+ public function getParentLink()
+ {
+ return $this->parentLink;
+ }
+ /**
+ * @param WebpropertyPermissions
+ */
+ public function setPermissions(\Google\Site_Kit_Dependencies\Google\Service\Analytics\WebpropertyPermissions $permissions)
+ {
+ $this->permissions = $permissions;
+ }
+ /**
+ * @return WebpropertyPermissions
+ */
+ public function getPermissions()
+ {
+ return $this->permissions;
+ }
+ /**
+ * @param int
+ */
+ public function setProfileCount($profileCount)
+ {
+ $this->profileCount = $profileCount;
+ }
+ /**
+ * @return int
+ */
+ public function getProfileCount()
+ {
+ return $this->profileCount;
+ }
+ /**
+ * @param string
+ */
+ public function setSelfLink($selfLink)
+ {
+ $this->selfLink = $selfLink;
+ }
+ /**
+ * @return string
+ */
+ public function getSelfLink()
+ {
+ return $this->selfLink;
+ }
+ /**
+ * @param bool
+ */
+ public function setStarred($starred)
+ {
+ $this->starred = $starred;
+ }
+ /**
+ * @return bool
+ */
+ public function getStarred()
+ {
+ return $this->starred;
+ }
+ /**
+ * @param string
+ */
+ public function setUpdated($updated)
+ {
+ $this->updated = $updated;
+ }
+ /**
+ * @return string
+ */
+ public function getUpdated()
+ {
+ return $this->updated;
+ }
+ /**
+ * @param string
+ */
+ public function setWebsiteUrl($websiteUrl)
+ {
+ $this->websiteUrl = $websiteUrl;
+ }
+ /**
+ * @return string
+ */
+ public function getWebsiteUrl()
+ {
+ return $this->websiteUrl;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\Webproperty::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_Webproperty');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/WebpropertyChildLink.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/WebpropertyChildLink.php
new file mode 100644
index 000000000..f0d9dbd1e
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/WebpropertyChildLink.php
@@ -0,0 +1,60 @@
+href = $href;
+ }
+ /**
+ * @return string
+ */
+ public function getHref()
+ {
+ return $this->href;
+ }
+ /**
+ * @param string
+ */
+ public function setType($type)
+ {
+ $this->type = $type;
+ }
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\WebpropertyChildLink::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_WebpropertyChildLink');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/WebpropertyParentLink.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/WebpropertyParentLink.php
new file mode 100644
index 000000000..1d3e4aeb6
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/WebpropertyParentLink.php
@@ -0,0 +1,60 @@
+href = $href;
+ }
+ /**
+ * @return string
+ */
+ public function getHref()
+ {
+ return $this->href;
+ }
+ /**
+ * @param string
+ */
+ public function setType($type)
+ {
+ $this->type = $type;
+ }
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\WebpropertyParentLink::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_WebpropertyParentLink');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/WebpropertyPermissions.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/WebpropertyPermissions.php
new file mode 100644
index 000000000..6904b5896
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Analytics/WebpropertyPermissions.php
@@ -0,0 +1,43 @@
+effective = $effective;
+ }
+ /**
+ * @return string[]
+ */
+ public function getEffective()
+ {
+ return $this->effective;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Analytics\WebpropertyPermissions::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Analytics_WebpropertyPermissions');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting.php
new file mode 100644
index 000000000..366b3f72a
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting.php
@@ -0,0 +1,62 @@
+
+ * Accesses Analytics report data.
+ *
+ *
+ * For more information about this service, see the API
+ * Documentation
+ *
+ *
+ * @author Google, Inc.
+ */
+class AnalyticsReporting extends \Google\Site_Kit_Dependencies\Google\Service
+{
+ /** View and manage your Google Analytics data. */
+ const ANALYTICS = "https://www.googleapis.com/auth/analytics";
+ /** See and download your Google Analytics data. */
+ const ANALYTICS_READONLY = "https://www.googleapis.com/auth/analytics.readonly";
+ public $reports;
+ public $userActivity;
+ /**
+ * Constructs the internal representation of the AnalyticsReporting service.
+ *
+ * @param Client|array $clientOrConfig The client used to deliver requests, or a
+ * config array to pass to a new Client instance.
+ * @param string $rootUrl The root URL used for requests to the service.
+ */
+ public function __construct($clientOrConfig = [], $rootUrl = null)
+ {
+ parent::__construct($clientOrConfig);
+ $this->rootUrl = $rootUrl ?: 'https://analyticsreporting.googleapis.com/';
+ $this->servicePath = '';
+ $this->batchPath = 'batch';
+ $this->version = 'v4';
+ $this->serviceName = 'analyticsreporting';
+ $this->reports = new \Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\Resource\Reports($this, $this->serviceName, 'reports', ['methods' => ['batchGet' => ['path' => 'v4/reports:batchGet', 'httpMethod' => 'POST', 'parameters' => []]]]);
+ $this->userActivity = new \Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\Resource\UserActivity($this, $this->serviceName, 'userActivity', ['methods' => ['search' => ['path' => 'v4/userActivity:search', 'httpMethod' => 'POST', 'parameters' => []]]]);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/Activity.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/Activity.php
new file mode 100644
index 000000000..af027e3cd
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/Activity.php
@@ -0,0 +1,283 @@
+activityTime = $activityTime;
+ }
+ /**
+ * @return string
+ */
+ public function getActivityTime()
+ {
+ return $this->activityTime;
+ }
+ /**
+ * @param string
+ */
+ public function setActivityType($activityType)
+ {
+ $this->activityType = $activityType;
+ }
+ /**
+ * @return string
+ */
+ public function getActivityType()
+ {
+ return $this->activityType;
+ }
+ /**
+ * @param ScreenviewData
+ */
+ public function setAppview(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\ScreenviewData $appview)
+ {
+ $this->appview = $appview;
+ }
+ /**
+ * @return ScreenviewData
+ */
+ public function getAppview()
+ {
+ return $this->appview;
+ }
+ /**
+ * @param string
+ */
+ public function setCampaign($campaign)
+ {
+ $this->campaign = $campaign;
+ }
+ /**
+ * @return string
+ */
+ public function getCampaign()
+ {
+ return $this->campaign;
+ }
+ /**
+ * @param string
+ */
+ public function setChannelGrouping($channelGrouping)
+ {
+ $this->channelGrouping = $channelGrouping;
+ }
+ /**
+ * @return string
+ */
+ public function getChannelGrouping()
+ {
+ return $this->channelGrouping;
+ }
+ /**
+ * @param CustomDimension[]
+ */
+ public function setCustomDimension($customDimension)
+ {
+ $this->customDimension = $customDimension;
+ }
+ /**
+ * @return CustomDimension[]
+ */
+ public function getCustomDimension()
+ {
+ return $this->customDimension;
+ }
+ /**
+ * @param EcommerceData
+ */
+ public function setEcommerce(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\EcommerceData $ecommerce)
+ {
+ $this->ecommerce = $ecommerce;
+ }
+ /**
+ * @return EcommerceData
+ */
+ public function getEcommerce()
+ {
+ return $this->ecommerce;
+ }
+ /**
+ * @param EventData
+ */
+ public function setEvent(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\EventData $event)
+ {
+ $this->event = $event;
+ }
+ /**
+ * @return EventData
+ */
+ public function getEvent()
+ {
+ return $this->event;
+ }
+ /**
+ * @param GoalSetData
+ */
+ public function setGoals(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\GoalSetData $goals)
+ {
+ $this->goals = $goals;
+ }
+ /**
+ * @return GoalSetData
+ */
+ public function getGoals()
+ {
+ return $this->goals;
+ }
+ /**
+ * @param string
+ */
+ public function setHostname($hostname)
+ {
+ $this->hostname = $hostname;
+ }
+ /**
+ * @return string
+ */
+ public function getHostname()
+ {
+ return $this->hostname;
+ }
+ /**
+ * @param string
+ */
+ public function setKeyword($keyword)
+ {
+ $this->keyword = $keyword;
+ }
+ /**
+ * @return string
+ */
+ public function getKeyword()
+ {
+ return $this->keyword;
+ }
+ /**
+ * @param string
+ */
+ public function setLandingPagePath($landingPagePath)
+ {
+ $this->landingPagePath = $landingPagePath;
+ }
+ /**
+ * @return string
+ */
+ public function getLandingPagePath()
+ {
+ return $this->landingPagePath;
+ }
+ /**
+ * @param string
+ */
+ public function setMedium($medium)
+ {
+ $this->medium = $medium;
+ }
+ /**
+ * @return string
+ */
+ public function getMedium()
+ {
+ return $this->medium;
+ }
+ /**
+ * @param PageviewData
+ */
+ public function setPageview(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\PageviewData $pageview)
+ {
+ $this->pageview = $pageview;
+ }
+ /**
+ * @return PageviewData
+ */
+ public function getPageview()
+ {
+ return $this->pageview;
+ }
+ /**
+ * @param string
+ */
+ public function setSource($source)
+ {
+ $this->source = $source;
+ }
+ /**
+ * @return string
+ */
+ public function getSource()
+ {
+ return $this->source;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\Activity::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_Activity');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/Cohort.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/Cohort.php
new file mode 100644
index 000000000..18a86e7a0
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/Cohort.php
@@ -0,0 +1,76 @@
+dateRange = $dateRange;
+ }
+ /**
+ * @return DateRange
+ */
+ public function getDateRange()
+ {
+ return $this->dateRange;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param string
+ */
+ public function setType($type)
+ {
+ $this->type = $type;
+ }
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\Cohort::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_Cohort');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/CohortGroup.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/CohortGroup.php
new file mode 100644
index 000000000..9c889dff6
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/CohortGroup.php
@@ -0,0 +1,59 @@
+cohorts = $cohorts;
+ }
+ /**
+ * @return Cohort[]
+ */
+ public function getCohorts()
+ {
+ return $this->cohorts;
+ }
+ /**
+ * @param bool
+ */
+ public function setLifetimeValue($lifetimeValue)
+ {
+ $this->lifetimeValue = $lifetimeValue;
+ }
+ /**
+ * @return bool
+ */
+ public function getLifetimeValue()
+ {
+ return $this->lifetimeValue;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\CohortGroup::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_CohortGroup');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/ColumnHeader.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/ColumnHeader.php
new file mode 100644
index 000000000..06deb4bec
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/ColumnHeader.php
@@ -0,0 +1,59 @@
+dimensions = $dimensions;
+ }
+ /**
+ * @return string[]
+ */
+ public function getDimensions()
+ {
+ return $this->dimensions;
+ }
+ /**
+ * @param MetricHeader
+ */
+ public function setMetricHeader(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\MetricHeader $metricHeader)
+ {
+ $this->metricHeader = $metricHeader;
+ }
+ /**
+ * @return MetricHeader
+ */
+ public function getMetricHeader()
+ {
+ return $this->metricHeader;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\ColumnHeader::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_ColumnHeader');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/CustomDimension.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/CustomDimension.php
new file mode 100644
index 000000000..30f007b90
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/CustomDimension.php
@@ -0,0 +1,60 @@
+index = $index;
+ }
+ /**
+ * @return int
+ */
+ public function getIndex()
+ {
+ return $this->index;
+ }
+ /**
+ * @param string
+ */
+ public function setValue($value)
+ {
+ $this->value = $value;
+ }
+ /**
+ * @return string
+ */
+ public function getValue()
+ {
+ return $this->value;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\CustomDimension::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_CustomDimension');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/DateRange.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/DateRange.php
new file mode 100644
index 000000000..14f2e5ab1
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/DateRange.php
@@ -0,0 +1,60 @@
+endDate = $endDate;
+ }
+ /**
+ * @return string
+ */
+ public function getEndDate()
+ {
+ return $this->endDate;
+ }
+ /**
+ * @param string
+ */
+ public function setStartDate($startDate)
+ {
+ $this->startDate = $startDate;
+ }
+ /**
+ * @return string
+ */
+ public function getStartDate()
+ {
+ return $this->startDate;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\DateRange::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_DateRange');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/DateRangeValues.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/DateRangeValues.php
new file mode 100644
index 000000000..5a0d4a1fa
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/DateRangeValues.php
@@ -0,0 +1,59 @@
+pivotValueRegions = $pivotValueRegions;
+ }
+ /**
+ * @return PivotValueRegion[]
+ */
+ public function getPivotValueRegions()
+ {
+ return $this->pivotValueRegions;
+ }
+ /**
+ * @param string[]
+ */
+ public function setValues($values)
+ {
+ $this->values = $values;
+ }
+ /**
+ * @return string[]
+ */
+ public function getValues()
+ {
+ return $this->values;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\DateRangeValues::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_DateRangeValues');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/Dimension.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/Dimension.php
new file mode 100644
index 000000000..682c40e1a
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/Dimension.php
@@ -0,0 +1,61 @@
+histogramBuckets = $histogramBuckets;
+ }
+ /**
+ * @return string[]
+ */
+ public function getHistogramBuckets()
+ {
+ return $this->histogramBuckets;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\Dimension::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_Dimension');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/DimensionFilter.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/DimensionFilter.php
new file mode 100644
index 000000000..c8b255cb8
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/DimensionFilter.php
@@ -0,0 +1,115 @@
+caseSensitive = $caseSensitive;
+ }
+ /**
+ * @return bool
+ */
+ public function getCaseSensitive()
+ {
+ return $this->caseSensitive;
+ }
+ /**
+ * @param string
+ */
+ public function setDimensionName($dimensionName)
+ {
+ $this->dimensionName = $dimensionName;
+ }
+ /**
+ * @return string
+ */
+ public function getDimensionName()
+ {
+ return $this->dimensionName;
+ }
+ /**
+ * @param string[]
+ */
+ public function setExpressions($expressions)
+ {
+ $this->expressions = $expressions;
+ }
+ /**
+ * @return string[]
+ */
+ public function getExpressions()
+ {
+ return $this->expressions;
+ }
+ /**
+ * @param bool
+ */
+ public function setNot($not)
+ {
+ $this->not = $not;
+ }
+ /**
+ * @return bool
+ */
+ public function getNot()
+ {
+ return $this->not;
+ }
+ /**
+ * @param string
+ */
+ public function setOperator($operator)
+ {
+ $this->operator = $operator;
+ }
+ /**
+ * @return string
+ */
+ public function getOperator()
+ {
+ return $this->operator;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\DimensionFilter::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_DimensionFilter');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/DimensionFilterClause.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/DimensionFilterClause.php
new file mode 100644
index 000000000..c331705ff
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/DimensionFilterClause.php
@@ -0,0 +1,59 @@
+filters = $filters;
+ }
+ /**
+ * @return DimensionFilter[]
+ */
+ public function getFilters()
+ {
+ return $this->filters;
+ }
+ /**
+ * @param string
+ */
+ public function setOperator($operator)
+ {
+ $this->operator = $operator;
+ }
+ /**
+ * @return string
+ */
+ public function getOperator()
+ {
+ return $this->operator;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\DimensionFilterClause::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_DimensionFilterClause');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/DynamicSegment.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/DynamicSegment.php
new file mode 100644
index 000000000..06b6a9cf7
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/DynamicSegment.php
@@ -0,0 +1,74 @@
+name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param SegmentDefinition
+ */
+ public function setSessionSegment(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\SegmentDefinition $sessionSegment)
+ {
+ $this->sessionSegment = $sessionSegment;
+ }
+ /**
+ * @return SegmentDefinition
+ */
+ public function getSessionSegment()
+ {
+ return $this->sessionSegment;
+ }
+ /**
+ * @param SegmentDefinition
+ */
+ public function setUserSegment(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\SegmentDefinition $userSegment)
+ {
+ $this->userSegment = $userSegment;
+ }
+ /**
+ * @return SegmentDefinition
+ */
+ public function getUserSegment()
+ {
+ return $this->userSegment;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\DynamicSegment::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_DynamicSegment');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/EcommerceData.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/EcommerceData.php
new file mode 100644
index 000000000..ca16b3b61
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/EcommerceData.php
@@ -0,0 +1,93 @@
+actionType = $actionType;
+ }
+ /**
+ * @return string
+ */
+ public function getActionType()
+ {
+ return $this->actionType;
+ }
+ /**
+ * @param string
+ */
+ public function setEcommerceType($ecommerceType)
+ {
+ $this->ecommerceType = $ecommerceType;
+ }
+ /**
+ * @return string
+ */
+ public function getEcommerceType()
+ {
+ return $this->ecommerceType;
+ }
+ /**
+ * @param ProductData[]
+ */
+ public function setProducts($products)
+ {
+ $this->products = $products;
+ }
+ /**
+ * @return ProductData[]
+ */
+ public function getProducts()
+ {
+ return $this->products;
+ }
+ /**
+ * @param TransactionData
+ */
+ public function setTransaction(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\TransactionData $transaction)
+ {
+ $this->transaction = $transaction;
+ }
+ /**
+ * @return TransactionData
+ */
+ public function getTransaction()
+ {
+ return $this->transaction;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\EcommerceData::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_EcommerceData');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/EventData.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/EventData.php
new file mode 100644
index 000000000..a9e933c76
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/EventData.php
@@ -0,0 +1,114 @@
+eventAction = $eventAction;
+ }
+ /**
+ * @return string
+ */
+ public function getEventAction()
+ {
+ return $this->eventAction;
+ }
+ /**
+ * @param string
+ */
+ public function setEventCategory($eventCategory)
+ {
+ $this->eventCategory = $eventCategory;
+ }
+ /**
+ * @return string
+ */
+ public function getEventCategory()
+ {
+ return $this->eventCategory;
+ }
+ /**
+ * @param string
+ */
+ public function setEventCount($eventCount)
+ {
+ $this->eventCount = $eventCount;
+ }
+ /**
+ * @return string
+ */
+ public function getEventCount()
+ {
+ return $this->eventCount;
+ }
+ /**
+ * @param string
+ */
+ public function setEventLabel($eventLabel)
+ {
+ $this->eventLabel = $eventLabel;
+ }
+ /**
+ * @return string
+ */
+ public function getEventLabel()
+ {
+ return $this->eventLabel;
+ }
+ /**
+ * @param string
+ */
+ public function setEventValue($eventValue)
+ {
+ $this->eventValue = $eventValue;
+ }
+ /**
+ * @return string
+ */
+ public function getEventValue()
+ {
+ return $this->eventValue;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\EventData::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_EventData');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/GetReportsRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/GetReportsRequest.php
new file mode 100644
index 000000000..8daae7794
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/GetReportsRequest.php
@@ -0,0 +1,59 @@
+reportRequests = $reportRequests;
+ }
+ /**
+ * @return ReportRequest[]
+ */
+ public function getReportRequests()
+ {
+ return $this->reportRequests;
+ }
+ /**
+ * @param bool
+ */
+ public function setUseResourceQuotas($useResourceQuotas)
+ {
+ $this->useResourceQuotas = $useResourceQuotas;
+ }
+ /**
+ * @return bool
+ */
+ public function getUseResourceQuotas()
+ {
+ return $this->useResourceQuotas;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\GetReportsRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_GetReportsRequest');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/GetReportsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/GetReportsResponse.php
new file mode 100644
index 000000000..4e67179d3
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/GetReportsResponse.php
@@ -0,0 +1,75 @@
+queryCost = $queryCost;
+ }
+ /**
+ * @return int
+ */
+ public function getQueryCost()
+ {
+ return $this->queryCost;
+ }
+ /**
+ * @param Report[]
+ */
+ public function setReports($reports)
+ {
+ $this->reports = $reports;
+ }
+ /**
+ * @return Report[]
+ */
+ public function getReports()
+ {
+ return $this->reports;
+ }
+ /**
+ * @param ResourceQuotasRemaining
+ */
+ public function setResourceQuotasRemaining(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\ResourceQuotasRemaining $resourceQuotasRemaining)
+ {
+ $this->resourceQuotasRemaining = $resourceQuotasRemaining;
+ }
+ /**
+ * @return ResourceQuotasRemaining
+ */
+ public function getResourceQuotasRemaining()
+ {
+ return $this->resourceQuotasRemaining;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\GetReportsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_GetReportsResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/GoalData.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/GoalData.php
new file mode 100644
index 000000000..8d6b08daa
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/GoalData.php
@@ -0,0 +1,159 @@
+goalCompletionLocation = $goalCompletionLocation;
+ }
+ /**
+ * @return string
+ */
+ public function getGoalCompletionLocation()
+ {
+ return $this->goalCompletionLocation;
+ }
+ /**
+ * @param string
+ */
+ public function setGoalCompletions($goalCompletions)
+ {
+ $this->goalCompletions = $goalCompletions;
+ }
+ /**
+ * @return string
+ */
+ public function getGoalCompletions()
+ {
+ return $this->goalCompletions;
+ }
+ /**
+ * @param int
+ */
+ public function setGoalIndex($goalIndex)
+ {
+ $this->goalIndex = $goalIndex;
+ }
+ /**
+ * @return int
+ */
+ public function getGoalIndex()
+ {
+ return $this->goalIndex;
+ }
+ /**
+ * @param string
+ */
+ public function setGoalName($goalName)
+ {
+ $this->goalName = $goalName;
+ }
+ /**
+ * @return string
+ */
+ public function getGoalName()
+ {
+ return $this->goalName;
+ }
+ /**
+ * @param string
+ */
+ public function setGoalPreviousStep1($goalPreviousStep1)
+ {
+ $this->goalPreviousStep1 = $goalPreviousStep1;
+ }
+ /**
+ * @return string
+ */
+ public function getGoalPreviousStep1()
+ {
+ return $this->goalPreviousStep1;
+ }
+ /**
+ * @param string
+ */
+ public function setGoalPreviousStep2($goalPreviousStep2)
+ {
+ $this->goalPreviousStep2 = $goalPreviousStep2;
+ }
+ /**
+ * @return string
+ */
+ public function getGoalPreviousStep2()
+ {
+ return $this->goalPreviousStep2;
+ }
+ /**
+ * @param string
+ */
+ public function setGoalPreviousStep3($goalPreviousStep3)
+ {
+ $this->goalPreviousStep3 = $goalPreviousStep3;
+ }
+ /**
+ * @return string
+ */
+ public function getGoalPreviousStep3()
+ {
+ return $this->goalPreviousStep3;
+ }
+ public function setGoalValue($goalValue)
+ {
+ $this->goalValue = $goalValue;
+ }
+ public function getGoalValue()
+ {
+ return $this->goalValue;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\GoalData::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_GoalData');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/GoalSetData.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/GoalSetData.php
new file mode 100644
index 000000000..9e98a9a0f
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/GoalSetData.php
@@ -0,0 +1,41 @@
+goals = $goals;
+ }
+ /**
+ * @return GoalData[]
+ */
+ public function getGoals()
+ {
+ return $this->goals;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\GoalSetData::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_GoalSetData');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/Metric.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/Metric.php
new file mode 100644
index 000000000..df5bbbda1
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/Metric.php
@@ -0,0 +1,78 @@
+alias = $alias;
+ }
+ /**
+ * @return string
+ */
+ public function getAlias()
+ {
+ return $this->alias;
+ }
+ /**
+ * @param string
+ */
+ public function setExpression($expression)
+ {
+ $this->expression = $expression;
+ }
+ /**
+ * @return string
+ */
+ public function getExpression()
+ {
+ return $this->expression;
+ }
+ /**
+ * @param string
+ */
+ public function setFormattingType($formattingType)
+ {
+ $this->formattingType = $formattingType;
+ }
+ /**
+ * @return string
+ */
+ public function getFormattingType()
+ {
+ return $this->formattingType;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\Metric::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_Metric');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/MetricFilter.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/MetricFilter.php
new file mode 100644
index 000000000..1faf4bc7a
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/MetricFilter.php
@@ -0,0 +1,96 @@
+comparisonValue = $comparisonValue;
+ }
+ /**
+ * @return string
+ */
+ public function getComparisonValue()
+ {
+ return $this->comparisonValue;
+ }
+ /**
+ * @param string
+ */
+ public function setMetricName($metricName)
+ {
+ $this->metricName = $metricName;
+ }
+ /**
+ * @return string
+ */
+ public function getMetricName()
+ {
+ return $this->metricName;
+ }
+ /**
+ * @param bool
+ */
+ public function setNot($not)
+ {
+ $this->not = $not;
+ }
+ /**
+ * @return bool
+ */
+ public function getNot()
+ {
+ return $this->not;
+ }
+ /**
+ * @param string
+ */
+ public function setOperator($operator)
+ {
+ $this->operator = $operator;
+ }
+ /**
+ * @return string
+ */
+ public function getOperator()
+ {
+ return $this->operator;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\MetricFilter::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_MetricFilter');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/MetricFilterClause.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/MetricFilterClause.php
new file mode 100644
index 000000000..ef3dc4b59
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/MetricFilterClause.php
@@ -0,0 +1,59 @@
+filters = $filters;
+ }
+ /**
+ * @return MetricFilter[]
+ */
+ public function getFilters()
+ {
+ return $this->filters;
+ }
+ /**
+ * @param string
+ */
+ public function setOperator($operator)
+ {
+ $this->operator = $operator;
+ }
+ /**
+ * @return string
+ */
+ public function getOperator()
+ {
+ return $this->operator;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\MetricFilterClause::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_MetricFilterClause');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/MetricHeader.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/MetricHeader.php
new file mode 100644
index 000000000..c83e5e1cc
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/MetricHeader.php
@@ -0,0 +1,57 @@
+metricHeaderEntries = $metricHeaderEntries;
+ }
+ /**
+ * @return MetricHeaderEntry[]
+ */
+ public function getMetricHeaderEntries()
+ {
+ return $this->metricHeaderEntries;
+ }
+ /**
+ * @param PivotHeader[]
+ */
+ public function setPivotHeaders($pivotHeaders)
+ {
+ $this->pivotHeaders = $pivotHeaders;
+ }
+ /**
+ * @return PivotHeader[]
+ */
+ public function getPivotHeaders()
+ {
+ return $this->pivotHeaders;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\MetricHeader::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_MetricHeader');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/MetricHeaderEntry.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/MetricHeaderEntry.php
new file mode 100644
index 000000000..669cae389
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/MetricHeaderEntry.php
@@ -0,0 +1,60 @@
+name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param string
+ */
+ public function setType($type)
+ {
+ $this->type = $type;
+ }
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\MetricHeaderEntry::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_MetricHeaderEntry');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/OrFiltersForSegment.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/OrFiltersForSegment.php
new file mode 100644
index 000000000..bb83099e1
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/OrFiltersForSegment.php
@@ -0,0 +1,41 @@
+segmentFilterClauses = $segmentFilterClauses;
+ }
+ /**
+ * @return SegmentFilterClause[]
+ */
+ public function getSegmentFilterClauses()
+ {
+ return $this->segmentFilterClauses;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\OrFiltersForSegment::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_OrFiltersForSegment');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/OrderBy.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/OrderBy.php
new file mode 100644
index 000000000..0758f95d4
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/OrderBy.php
@@ -0,0 +1,78 @@
+fieldName = $fieldName;
+ }
+ /**
+ * @return string
+ */
+ public function getFieldName()
+ {
+ return $this->fieldName;
+ }
+ /**
+ * @param string
+ */
+ public function setOrderType($orderType)
+ {
+ $this->orderType = $orderType;
+ }
+ /**
+ * @return string
+ */
+ public function getOrderType()
+ {
+ return $this->orderType;
+ }
+ /**
+ * @param string
+ */
+ public function setSortOrder($sortOrder)
+ {
+ $this->sortOrder = $sortOrder;
+ }
+ /**
+ * @return string
+ */
+ public function getSortOrder()
+ {
+ return $this->sortOrder;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\OrderBy::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_OrderBy');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/PageviewData.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/PageviewData.php
new file mode 100644
index 000000000..87edde277
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/PageviewData.php
@@ -0,0 +1,60 @@
+pagePath = $pagePath;
+ }
+ /**
+ * @return string
+ */
+ public function getPagePath()
+ {
+ return $this->pagePath;
+ }
+ /**
+ * @param string
+ */
+ public function setPageTitle($pageTitle)
+ {
+ $this->pageTitle = $pageTitle;
+ }
+ /**
+ * @return string
+ */
+ public function getPageTitle()
+ {
+ return $this->pageTitle;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\PageviewData::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_PageviewData');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/Pivot.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/Pivot.php
new file mode 100644
index 000000000..8c98ca4f7
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/Pivot.php
@@ -0,0 +1,109 @@
+dimensionFilterClauses = $dimensionFilterClauses;
+ }
+ /**
+ * @return DimensionFilterClause[]
+ */
+ public function getDimensionFilterClauses()
+ {
+ return $this->dimensionFilterClauses;
+ }
+ /**
+ * @param Dimension[]
+ */
+ public function setDimensions($dimensions)
+ {
+ $this->dimensions = $dimensions;
+ }
+ /**
+ * @return Dimension[]
+ */
+ public function getDimensions()
+ {
+ return $this->dimensions;
+ }
+ /**
+ * @param int
+ */
+ public function setMaxGroupCount($maxGroupCount)
+ {
+ $this->maxGroupCount = $maxGroupCount;
+ }
+ /**
+ * @return int
+ */
+ public function getMaxGroupCount()
+ {
+ return $this->maxGroupCount;
+ }
+ /**
+ * @param Metric[]
+ */
+ public function setMetrics($metrics)
+ {
+ $this->metrics = $metrics;
+ }
+ /**
+ * @return Metric[]
+ */
+ public function getMetrics()
+ {
+ return $this->metrics;
+ }
+ /**
+ * @param int
+ */
+ public function setStartGroup($startGroup)
+ {
+ $this->startGroup = $startGroup;
+ }
+ /**
+ * @return int
+ */
+ public function getStartGroup()
+ {
+ return $this->startGroup;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\Pivot::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_Pivot');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/PivotHeader.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/PivotHeader.php
new file mode 100644
index 000000000..cf2141a87
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/PivotHeader.php
@@ -0,0 +1,59 @@
+pivotHeaderEntries = $pivotHeaderEntries;
+ }
+ /**
+ * @return PivotHeaderEntry[]
+ */
+ public function getPivotHeaderEntries()
+ {
+ return $this->pivotHeaderEntries;
+ }
+ /**
+ * @param int
+ */
+ public function setTotalPivotGroupsCount($totalPivotGroupsCount)
+ {
+ $this->totalPivotGroupsCount = $totalPivotGroupsCount;
+ }
+ /**
+ * @return int
+ */
+ public function getTotalPivotGroupsCount()
+ {
+ return $this->totalPivotGroupsCount;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\PivotHeader::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_PivotHeader');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/PivotHeaderEntry.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/PivotHeaderEntry.php
new file mode 100644
index 000000000..a30b2043d
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/PivotHeaderEntry.php
@@ -0,0 +1,77 @@
+dimensionNames = $dimensionNames;
+ }
+ /**
+ * @return string[]
+ */
+ public function getDimensionNames()
+ {
+ return $this->dimensionNames;
+ }
+ /**
+ * @param string[]
+ */
+ public function setDimensionValues($dimensionValues)
+ {
+ $this->dimensionValues = $dimensionValues;
+ }
+ /**
+ * @return string[]
+ */
+ public function getDimensionValues()
+ {
+ return $this->dimensionValues;
+ }
+ /**
+ * @param MetricHeaderEntry
+ */
+ public function setMetric(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\MetricHeaderEntry $metric)
+ {
+ $this->metric = $metric;
+ }
+ /**
+ * @return MetricHeaderEntry
+ */
+ public function getMetric()
+ {
+ return $this->metric;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\PivotHeaderEntry::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_PivotHeaderEntry');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/PivotValueRegion.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/PivotValueRegion.php
new file mode 100644
index 000000000..c4e6febd4
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/PivotValueRegion.php
@@ -0,0 +1,43 @@
+values = $values;
+ }
+ /**
+ * @return string[]
+ */
+ public function getValues()
+ {
+ return $this->values;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\PivotValueRegion::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_PivotValueRegion');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/ProductData.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/ProductData.php
new file mode 100644
index 000000000..643a585dd
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/ProductData.php
@@ -0,0 +1,87 @@
+itemRevenue = $itemRevenue;
+ }
+ public function getItemRevenue()
+ {
+ return $this->itemRevenue;
+ }
+ /**
+ * @param string
+ */
+ public function setProductName($productName)
+ {
+ $this->productName = $productName;
+ }
+ /**
+ * @return string
+ */
+ public function getProductName()
+ {
+ return $this->productName;
+ }
+ /**
+ * @param string
+ */
+ public function setProductQuantity($productQuantity)
+ {
+ $this->productQuantity = $productQuantity;
+ }
+ /**
+ * @return string
+ */
+ public function getProductQuantity()
+ {
+ return $this->productQuantity;
+ }
+ /**
+ * @param string
+ */
+ public function setProductSku($productSku)
+ {
+ $this->productSku = $productSku;
+ }
+ /**
+ * @return string
+ */
+ public function getProductSku()
+ {
+ return $this->productSku;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\ProductData::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_ProductData');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/Report.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/Report.php
new file mode 100644
index 000000000..2a56e7a5d
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/Report.php
@@ -0,0 +1,74 @@
+columnHeader = $columnHeader;
+ }
+ /**
+ * @return ColumnHeader
+ */
+ public function getColumnHeader()
+ {
+ return $this->columnHeader;
+ }
+ /**
+ * @param ReportData
+ */
+ public function setData(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\ReportData $data)
+ {
+ $this->data = $data;
+ }
+ /**
+ * @return ReportData
+ */
+ public function getData()
+ {
+ return $this->data;
+ }
+ /**
+ * @param string
+ */
+ public function setNextPageToken($nextPageToken)
+ {
+ $this->nextPageToken = $nextPageToken;
+ }
+ /**
+ * @return string
+ */
+ public function getNextPageToken()
+ {
+ return $this->nextPageToken;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\Report::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_Report');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/ReportData.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/ReportData.php
new file mode 100644
index 000000000..f22f77cc0
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/ReportData.php
@@ -0,0 +1,197 @@
+dataLastRefreshed = $dataLastRefreshed;
+ }
+ /**
+ * @return string
+ */
+ public function getDataLastRefreshed()
+ {
+ return $this->dataLastRefreshed;
+ }
+ /**
+ * @param string
+ */
+ public function setEmptyReason($emptyReason)
+ {
+ $this->emptyReason = $emptyReason;
+ }
+ /**
+ * @return string
+ */
+ public function getEmptyReason()
+ {
+ return $this->emptyReason;
+ }
+ /**
+ * @param bool
+ */
+ public function setIsDataGolden($isDataGolden)
+ {
+ $this->isDataGolden = $isDataGolden;
+ }
+ /**
+ * @return bool
+ */
+ public function getIsDataGolden()
+ {
+ return $this->isDataGolden;
+ }
+ /**
+ * @param DateRangeValues[]
+ */
+ public function setMaximums($maximums)
+ {
+ $this->maximums = $maximums;
+ }
+ /**
+ * @return DateRangeValues[]
+ */
+ public function getMaximums()
+ {
+ return $this->maximums;
+ }
+ /**
+ * @param DateRangeValues[]
+ */
+ public function setMinimums($minimums)
+ {
+ $this->minimums = $minimums;
+ }
+ /**
+ * @return DateRangeValues[]
+ */
+ public function getMinimums()
+ {
+ return $this->minimums;
+ }
+ /**
+ * @param int
+ */
+ public function setRowCount($rowCount)
+ {
+ $this->rowCount = $rowCount;
+ }
+ /**
+ * @return int
+ */
+ public function getRowCount()
+ {
+ return $this->rowCount;
+ }
+ /**
+ * @param ReportRow[]
+ */
+ public function setRows($rows)
+ {
+ $this->rows = $rows;
+ }
+ /**
+ * @return ReportRow[]
+ */
+ public function getRows()
+ {
+ return $this->rows;
+ }
+ /**
+ * @param string[]
+ */
+ public function setSamplesReadCounts($samplesReadCounts)
+ {
+ $this->samplesReadCounts = $samplesReadCounts;
+ }
+ /**
+ * @return string[]
+ */
+ public function getSamplesReadCounts()
+ {
+ return $this->samplesReadCounts;
+ }
+ /**
+ * @param string[]
+ */
+ public function setSamplingSpaceSizes($samplingSpaceSizes)
+ {
+ $this->samplingSpaceSizes = $samplingSpaceSizes;
+ }
+ /**
+ * @return string[]
+ */
+ public function getSamplingSpaceSizes()
+ {
+ return $this->samplingSpaceSizes;
+ }
+ /**
+ * @param DateRangeValues[]
+ */
+ public function setTotals($totals)
+ {
+ $this->totals = $totals;
+ }
+ /**
+ * @return DateRangeValues[]
+ */
+ public function getTotals()
+ {
+ return $this->totals;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\ReportData::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_ReportData');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/ReportRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/ReportRequest.php
new file mode 100644
index 000000000..84e129cc8
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/ReportRequest.php
@@ -0,0 +1,313 @@
+cohortGroup = $cohortGroup;
+ }
+ /**
+ * @return CohortGroup
+ */
+ public function getCohortGroup()
+ {
+ return $this->cohortGroup;
+ }
+ /**
+ * @param DateRange[]
+ */
+ public function setDateRanges($dateRanges)
+ {
+ $this->dateRanges = $dateRanges;
+ }
+ /**
+ * @return DateRange[]
+ */
+ public function getDateRanges()
+ {
+ return $this->dateRanges;
+ }
+ /**
+ * @param DimensionFilterClause[]
+ */
+ public function setDimensionFilterClauses($dimensionFilterClauses)
+ {
+ $this->dimensionFilterClauses = $dimensionFilterClauses;
+ }
+ /**
+ * @return DimensionFilterClause[]
+ */
+ public function getDimensionFilterClauses()
+ {
+ return $this->dimensionFilterClauses;
+ }
+ /**
+ * @param Dimension[]
+ */
+ public function setDimensions($dimensions)
+ {
+ $this->dimensions = $dimensions;
+ }
+ /**
+ * @return Dimension[]
+ */
+ public function getDimensions()
+ {
+ return $this->dimensions;
+ }
+ /**
+ * @param string
+ */
+ public function setFiltersExpression($filtersExpression)
+ {
+ $this->filtersExpression = $filtersExpression;
+ }
+ /**
+ * @return string
+ */
+ public function getFiltersExpression()
+ {
+ return $this->filtersExpression;
+ }
+ /**
+ * @param bool
+ */
+ public function setHideTotals($hideTotals)
+ {
+ $this->hideTotals = $hideTotals;
+ }
+ /**
+ * @return bool
+ */
+ public function getHideTotals()
+ {
+ return $this->hideTotals;
+ }
+ /**
+ * @param bool
+ */
+ public function setHideValueRanges($hideValueRanges)
+ {
+ $this->hideValueRanges = $hideValueRanges;
+ }
+ /**
+ * @return bool
+ */
+ public function getHideValueRanges()
+ {
+ return $this->hideValueRanges;
+ }
+ /**
+ * @param bool
+ */
+ public function setIncludeEmptyRows($includeEmptyRows)
+ {
+ $this->includeEmptyRows = $includeEmptyRows;
+ }
+ /**
+ * @return bool
+ */
+ public function getIncludeEmptyRows()
+ {
+ return $this->includeEmptyRows;
+ }
+ /**
+ * @param MetricFilterClause[]
+ */
+ public function setMetricFilterClauses($metricFilterClauses)
+ {
+ $this->metricFilterClauses = $metricFilterClauses;
+ }
+ /**
+ * @return MetricFilterClause[]
+ */
+ public function getMetricFilterClauses()
+ {
+ return $this->metricFilterClauses;
+ }
+ /**
+ * @param Metric[]
+ */
+ public function setMetrics($metrics)
+ {
+ $this->metrics = $metrics;
+ }
+ /**
+ * @return Metric[]
+ */
+ public function getMetrics()
+ {
+ return $this->metrics;
+ }
+ /**
+ * @param OrderBy[]
+ */
+ public function setOrderBys($orderBys)
+ {
+ $this->orderBys = $orderBys;
+ }
+ /**
+ * @return OrderBy[]
+ */
+ public function getOrderBys()
+ {
+ return $this->orderBys;
+ }
+ /**
+ * @param int
+ */
+ public function setPageSize($pageSize)
+ {
+ $this->pageSize = $pageSize;
+ }
+ /**
+ * @return int
+ */
+ public function getPageSize()
+ {
+ return $this->pageSize;
+ }
+ /**
+ * @param string
+ */
+ public function setPageToken($pageToken)
+ {
+ $this->pageToken = $pageToken;
+ }
+ /**
+ * @return string
+ */
+ public function getPageToken()
+ {
+ return $this->pageToken;
+ }
+ /**
+ * @param Pivot[]
+ */
+ public function setPivots($pivots)
+ {
+ $this->pivots = $pivots;
+ }
+ /**
+ * @return Pivot[]
+ */
+ public function getPivots()
+ {
+ return $this->pivots;
+ }
+ /**
+ * @param string
+ */
+ public function setSamplingLevel($samplingLevel)
+ {
+ $this->samplingLevel = $samplingLevel;
+ }
+ /**
+ * @return string
+ */
+ public function getSamplingLevel()
+ {
+ return $this->samplingLevel;
+ }
+ /**
+ * @param Segment[]
+ */
+ public function setSegments($segments)
+ {
+ $this->segments = $segments;
+ }
+ /**
+ * @return Segment[]
+ */
+ public function getSegments()
+ {
+ return $this->segments;
+ }
+ /**
+ * @param string
+ */
+ public function setViewId($viewId)
+ {
+ $this->viewId = $viewId;
+ }
+ /**
+ * @return string
+ */
+ public function getViewId()
+ {
+ return $this->viewId;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\ReportRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_ReportRequest');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/ReportRow.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/ReportRow.php
new file mode 100644
index 000000000..c0a8a7bbe
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/ReportRow.php
@@ -0,0 +1,59 @@
+dimensions = $dimensions;
+ }
+ /**
+ * @return string[]
+ */
+ public function getDimensions()
+ {
+ return $this->dimensions;
+ }
+ /**
+ * @param DateRangeValues[]
+ */
+ public function setMetrics($metrics)
+ {
+ $this->metrics = $metrics;
+ }
+ /**
+ * @return DateRangeValues[]
+ */
+ public function getMetrics()
+ {
+ return $this->metrics;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\ReportRow::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_ReportRow');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/Resource/Reports.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/Resource/Reports.php
new file mode 100644
index 000000000..995aaaed3
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/Resource/Reports.php
@@ -0,0 +1,47 @@
+
+ * $analyticsreportingService = new Google\Service\AnalyticsReporting(...);
+ * $reports = $analyticsreportingService->reports;
+ *
+ */
+class Reports extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Returns the Analytics data. (reports.batchGet)
+ *
+ * @param GetReportsRequest $postBody
+ * @param array $optParams Optional parameters.
+ * @return GetReportsResponse
+ */
+ public function batchGet(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\GetReportsRequest $postBody, $optParams = [])
+ {
+ $params = ['postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('batchGet', [$params], \Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\GetReportsResponse::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\Resource\Reports::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_Resource_Reports');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/Resource/UserActivity.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/Resource/UserActivity.php
new file mode 100644
index 000000000..2a2ffec7e
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/Resource/UserActivity.php
@@ -0,0 +1,47 @@
+
+ * $analyticsreportingService = new Google\Service\AnalyticsReporting(...);
+ * $userActivity = $analyticsreportingService->userActivity;
+ *
+ */
+class UserActivity extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Returns User Activity data. (userActivity.search)
+ *
+ * @param SearchUserActivityRequest $postBody
+ * @param array $optParams Optional parameters.
+ * @return SearchUserActivityResponse
+ */
+ public function search(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\SearchUserActivityRequest $postBody, $optParams = [])
+ {
+ $params = ['postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('search', [$params], \Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\SearchUserActivityResponse::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\Resource\UserActivity::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_Resource_UserActivity');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/ResourceQuotasRemaining.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/ResourceQuotasRemaining.php
new file mode 100644
index 000000000..61b452381
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/ResourceQuotasRemaining.php
@@ -0,0 +1,60 @@
+dailyQuotaTokensRemaining = $dailyQuotaTokensRemaining;
+ }
+ /**
+ * @return int
+ */
+ public function getDailyQuotaTokensRemaining()
+ {
+ return $this->dailyQuotaTokensRemaining;
+ }
+ /**
+ * @param int
+ */
+ public function setHourlyQuotaTokensRemaining($hourlyQuotaTokensRemaining)
+ {
+ $this->hourlyQuotaTokensRemaining = $hourlyQuotaTokensRemaining;
+ }
+ /**
+ * @return int
+ */
+ public function getHourlyQuotaTokensRemaining()
+ {
+ return $this->hourlyQuotaTokensRemaining;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\ResourceQuotasRemaining::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_ResourceQuotasRemaining');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/ScreenviewData.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/ScreenviewData.php
new file mode 100644
index 000000000..0bde93c35
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/ScreenviewData.php
@@ -0,0 +1,96 @@
+appName = $appName;
+ }
+ /**
+ * @return string
+ */
+ public function getAppName()
+ {
+ return $this->appName;
+ }
+ /**
+ * @param string
+ */
+ public function setMobileDeviceBranding($mobileDeviceBranding)
+ {
+ $this->mobileDeviceBranding = $mobileDeviceBranding;
+ }
+ /**
+ * @return string
+ */
+ public function getMobileDeviceBranding()
+ {
+ return $this->mobileDeviceBranding;
+ }
+ /**
+ * @param string
+ */
+ public function setMobileDeviceModel($mobileDeviceModel)
+ {
+ $this->mobileDeviceModel = $mobileDeviceModel;
+ }
+ /**
+ * @return string
+ */
+ public function getMobileDeviceModel()
+ {
+ return $this->mobileDeviceModel;
+ }
+ /**
+ * @param string
+ */
+ public function setScreenName($screenName)
+ {
+ $this->screenName = $screenName;
+ }
+ /**
+ * @return string
+ */
+ public function getScreenName()
+ {
+ return $this->screenName;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\ScreenviewData::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_ScreenviewData');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/SearchUserActivityRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/SearchUserActivityRequest.php
new file mode 100644
index 000000000..36e0816f0
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/SearchUserActivityRequest.php
@@ -0,0 +1,129 @@
+activityTypes = $activityTypes;
+ }
+ /**
+ * @return string[]
+ */
+ public function getActivityTypes()
+ {
+ return $this->activityTypes;
+ }
+ /**
+ * @param DateRange
+ */
+ public function setDateRange(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\DateRange $dateRange)
+ {
+ $this->dateRange = $dateRange;
+ }
+ /**
+ * @return DateRange
+ */
+ public function getDateRange()
+ {
+ return $this->dateRange;
+ }
+ /**
+ * @param int
+ */
+ public function setPageSize($pageSize)
+ {
+ $this->pageSize = $pageSize;
+ }
+ /**
+ * @return int
+ */
+ public function getPageSize()
+ {
+ return $this->pageSize;
+ }
+ /**
+ * @param string
+ */
+ public function setPageToken($pageToken)
+ {
+ $this->pageToken = $pageToken;
+ }
+ /**
+ * @return string
+ */
+ public function getPageToken()
+ {
+ return $this->pageToken;
+ }
+ /**
+ * @param User
+ */
+ public function setUser(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\User $user)
+ {
+ $this->user = $user;
+ }
+ /**
+ * @return User
+ */
+ public function getUser()
+ {
+ return $this->user;
+ }
+ /**
+ * @param string
+ */
+ public function setViewId($viewId)
+ {
+ $this->viewId = $viewId;
+ }
+ /**
+ * @return string
+ */
+ public function getViewId()
+ {
+ return $this->viewId;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\SearchUserActivityRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_SearchUserActivityRequest');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/SearchUserActivityResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/SearchUserActivityResponse.php
new file mode 100644
index 000000000..bd0fae461
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/SearchUserActivityResponse.php
@@ -0,0 +1,86 @@
+nextPageToken = $nextPageToken;
+ }
+ /**
+ * @return string
+ */
+ public function getNextPageToken()
+ {
+ return $this->nextPageToken;
+ }
+ public function setSampleRate($sampleRate)
+ {
+ $this->sampleRate = $sampleRate;
+ }
+ public function getSampleRate()
+ {
+ return $this->sampleRate;
+ }
+ /**
+ * @param UserActivitySession[]
+ */
+ public function setSessions($sessions)
+ {
+ $this->sessions = $sessions;
+ }
+ /**
+ * @return UserActivitySession[]
+ */
+ public function getSessions()
+ {
+ return $this->sessions;
+ }
+ /**
+ * @param int
+ */
+ public function setTotalRows($totalRows)
+ {
+ $this->totalRows = $totalRows;
+ }
+ /**
+ * @return int
+ */
+ public function getTotalRows()
+ {
+ return $this->totalRows;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\SearchUserActivityResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_SearchUserActivityResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/Segment.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/Segment.php
new file mode 100644
index 000000000..e6f28d703
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/Segment.php
@@ -0,0 +1,58 @@
+dynamicSegment = $dynamicSegment;
+ }
+ /**
+ * @return DynamicSegment
+ */
+ public function getDynamicSegment()
+ {
+ return $this->dynamicSegment;
+ }
+ /**
+ * @param string
+ */
+ public function setSegmentId($segmentId)
+ {
+ $this->segmentId = $segmentId;
+ }
+ /**
+ * @return string
+ */
+ public function getSegmentId()
+ {
+ return $this->segmentId;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\Segment::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_Segment');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/SegmentDefinition.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/SegmentDefinition.php
new file mode 100644
index 000000000..918d47a39
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/SegmentDefinition.php
@@ -0,0 +1,41 @@
+segmentFilters = $segmentFilters;
+ }
+ /**
+ * @return SegmentFilter[]
+ */
+ public function getSegmentFilters()
+ {
+ return $this->segmentFilters;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\SegmentDefinition::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_SegmentDefinition');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/SegmentDimensionFilter.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/SegmentDimensionFilter.php
new file mode 100644
index 000000000..c45102f10
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/SegmentDimensionFilter.php
@@ -0,0 +1,133 @@
+caseSensitive = $caseSensitive;
+ }
+ /**
+ * @return bool
+ */
+ public function getCaseSensitive()
+ {
+ return $this->caseSensitive;
+ }
+ /**
+ * @param string
+ */
+ public function setDimensionName($dimensionName)
+ {
+ $this->dimensionName = $dimensionName;
+ }
+ /**
+ * @return string
+ */
+ public function getDimensionName()
+ {
+ return $this->dimensionName;
+ }
+ /**
+ * @param string[]
+ */
+ public function setExpressions($expressions)
+ {
+ $this->expressions = $expressions;
+ }
+ /**
+ * @return string[]
+ */
+ public function getExpressions()
+ {
+ return $this->expressions;
+ }
+ /**
+ * @param string
+ */
+ public function setMaxComparisonValue($maxComparisonValue)
+ {
+ $this->maxComparisonValue = $maxComparisonValue;
+ }
+ /**
+ * @return string
+ */
+ public function getMaxComparisonValue()
+ {
+ return $this->maxComparisonValue;
+ }
+ /**
+ * @param string
+ */
+ public function setMinComparisonValue($minComparisonValue)
+ {
+ $this->minComparisonValue = $minComparisonValue;
+ }
+ /**
+ * @return string
+ */
+ public function getMinComparisonValue()
+ {
+ return $this->minComparisonValue;
+ }
+ /**
+ * @param string
+ */
+ public function setOperator($operator)
+ {
+ $this->operator = $operator;
+ }
+ /**
+ * @return string
+ */
+ public function getOperator()
+ {
+ return $this->operator;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\SegmentDimensionFilter::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_SegmentDimensionFilter');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/SegmentFilter.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/SegmentFilter.php
new file mode 100644
index 000000000..8b3ea0277
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/SegmentFilter.php
@@ -0,0 +1,74 @@
+not = $not;
+ }
+ /**
+ * @return bool
+ */
+ public function getNot()
+ {
+ return $this->not;
+ }
+ /**
+ * @param SequenceSegment
+ */
+ public function setSequenceSegment(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\SequenceSegment $sequenceSegment)
+ {
+ $this->sequenceSegment = $sequenceSegment;
+ }
+ /**
+ * @return SequenceSegment
+ */
+ public function getSequenceSegment()
+ {
+ return $this->sequenceSegment;
+ }
+ /**
+ * @param SimpleSegment
+ */
+ public function setSimpleSegment(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\SimpleSegment $simpleSegment)
+ {
+ $this->simpleSegment = $simpleSegment;
+ }
+ /**
+ * @return SimpleSegment
+ */
+ public function getSimpleSegment()
+ {
+ return $this->simpleSegment;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\SegmentFilter::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_SegmentFilter');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/SegmentFilterClause.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/SegmentFilterClause.php
new file mode 100644
index 000000000..fb83f01bf
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/SegmentFilterClause.php
@@ -0,0 +1,74 @@
+dimensionFilter = $dimensionFilter;
+ }
+ /**
+ * @return SegmentDimensionFilter
+ */
+ public function getDimensionFilter()
+ {
+ return $this->dimensionFilter;
+ }
+ /**
+ * @param SegmentMetricFilter
+ */
+ public function setMetricFilter(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\SegmentMetricFilter $metricFilter)
+ {
+ $this->metricFilter = $metricFilter;
+ }
+ /**
+ * @return SegmentMetricFilter
+ */
+ public function getMetricFilter()
+ {
+ return $this->metricFilter;
+ }
+ /**
+ * @param bool
+ */
+ public function setNot($not)
+ {
+ $this->not = $not;
+ }
+ /**
+ * @return bool
+ */
+ public function getNot()
+ {
+ return $this->not;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\SegmentFilterClause::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_SegmentFilterClause');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/SegmentMetricFilter.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/SegmentMetricFilter.php
new file mode 100644
index 000000000..acc6cbc1f
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/SegmentMetricFilter.php
@@ -0,0 +1,114 @@
+comparisonValue = $comparisonValue;
+ }
+ /**
+ * @return string
+ */
+ public function getComparisonValue()
+ {
+ return $this->comparisonValue;
+ }
+ /**
+ * @param string
+ */
+ public function setMaxComparisonValue($maxComparisonValue)
+ {
+ $this->maxComparisonValue = $maxComparisonValue;
+ }
+ /**
+ * @return string
+ */
+ public function getMaxComparisonValue()
+ {
+ return $this->maxComparisonValue;
+ }
+ /**
+ * @param string
+ */
+ public function setMetricName($metricName)
+ {
+ $this->metricName = $metricName;
+ }
+ /**
+ * @return string
+ */
+ public function getMetricName()
+ {
+ return $this->metricName;
+ }
+ /**
+ * @param string
+ */
+ public function setOperator($operator)
+ {
+ $this->operator = $operator;
+ }
+ /**
+ * @return string
+ */
+ public function getOperator()
+ {
+ return $this->operator;
+ }
+ /**
+ * @param string
+ */
+ public function setScope($scope)
+ {
+ $this->scope = $scope;
+ }
+ /**
+ * @return string
+ */
+ public function getScope()
+ {
+ return $this->scope;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\SegmentMetricFilter::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_SegmentMetricFilter');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/SegmentSequenceStep.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/SegmentSequenceStep.php
new file mode 100644
index 000000000..acb964cf8
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/SegmentSequenceStep.php
@@ -0,0 +1,59 @@
+matchType = $matchType;
+ }
+ /**
+ * @return string
+ */
+ public function getMatchType()
+ {
+ return $this->matchType;
+ }
+ /**
+ * @param OrFiltersForSegment[]
+ */
+ public function setOrFiltersForSegment($orFiltersForSegment)
+ {
+ $this->orFiltersForSegment = $orFiltersForSegment;
+ }
+ /**
+ * @return OrFiltersForSegment[]
+ */
+ public function getOrFiltersForSegment()
+ {
+ return $this->orFiltersForSegment;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\SegmentSequenceStep::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_SegmentSequenceStep');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/SequenceSegment.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/SequenceSegment.php
new file mode 100644
index 000000000..47437b774
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/SequenceSegment.php
@@ -0,0 +1,59 @@
+firstStepShouldMatchFirstHit = $firstStepShouldMatchFirstHit;
+ }
+ /**
+ * @return bool
+ */
+ public function getFirstStepShouldMatchFirstHit()
+ {
+ return $this->firstStepShouldMatchFirstHit;
+ }
+ /**
+ * @param SegmentSequenceStep[]
+ */
+ public function setSegmentSequenceSteps($segmentSequenceSteps)
+ {
+ $this->segmentSequenceSteps = $segmentSequenceSteps;
+ }
+ /**
+ * @return SegmentSequenceStep[]
+ */
+ public function getSegmentSequenceSteps()
+ {
+ return $this->segmentSequenceSteps;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\SequenceSegment::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_SequenceSegment');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/SimpleSegment.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/SimpleSegment.php
new file mode 100644
index 000000000..878a70118
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/SimpleSegment.php
@@ -0,0 +1,41 @@
+orFiltersForSegment = $orFiltersForSegment;
+ }
+ /**
+ * @return OrFiltersForSegment[]
+ */
+ public function getOrFiltersForSegment()
+ {
+ return $this->orFiltersForSegment;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\SimpleSegment::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_SimpleSegment');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/TransactionData.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/TransactionData.php
new file mode 100644
index 000000000..b23c22839
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/TransactionData.php
@@ -0,0 +1,69 @@
+transactionId = $transactionId;
+ }
+ /**
+ * @return string
+ */
+ public function getTransactionId()
+ {
+ return $this->transactionId;
+ }
+ public function setTransactionRevenue($transactionRevenue)
+ {
+ $this->transactionRevenue = $transactionRevenue;
+ }
+ public function getTransactionRevenue()
+ {
+ return $this->transactionRevenue;
+ }
+ public function setTransactionShipping($transactionShipping)
+ {
+ $this->transactionShipping = $transactionShipping;
+ }
+ public function getTransactionShipping()
+ {
+ return $this->transactionShipping;
+ }
+ public function setTransactionTax($transactionTax)
+ {
+ $this->transactionTax = $transactionTax;
+ }
+ public function getTransactionTax()
+ {
+ return $this->transactionTax;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\TransactionData::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_TransactionData');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/User.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/User.php
new file mode 100644
index 000000000..1b6d54c1c
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/User.php
@@ -0,0 +1,60 @@
+type = $type;
+ }
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+ /**
+ * @param string
+ */
+ public function setUserId($userId)
+ {
+ $this->userId = $userId;
+ }
+ /**
+ * @return string
+ */
+ public function getUserId()
+ {
+ return $this->userId;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\User::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_User');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/UserActivitySession.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/UserActivitySession.php
new file mode 100644
index 000000000..5c6e8fab8
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/AnalyticsReporting/UserActivitySession.php
@@ -0,0 +1,131 @@
+activities = $activities;
+ }
+ /**
+ * @return Activity[]
+ */
+ public function getActivities()
+ {
+ return $this->activities;
+ }
+ /**
+ * @param string
+ */
+ public function setDataSource($dataSource)
+ {
+ $this->dataSource = $dataSource;
+ }
+ /**
+ * @return string
+ */
+ public function getDataSource()
+ {
+ return $this->dataSource;
+ }
+ /**
+ * @param string
+ */
+ public function setDeviceCategory($deviceCategory)
+ {
+ $this->deviceCategory = $deviceCategory;
+ }
+ /**
+ * @return string
+ */
+ public function getDeviceCategory()
+ {
+ return $this->deviceCategory;
+ }
+ /**
+ * @param string
+ */
+ public function setPlatform($platform)
+ {
+ $this->platform = $platform;
+ }
+ /**
+ * @return string
+ */
+ public function getPlatform()
+ {
+ return $this->platform;
+ }
+ /**
+ * @param string
+ */
+ public function setSessionDate($sessionDate)
+ {
+ $this->sessionDate = $sessionDate;
+ }
+ /**
+ * @return string
+ */
+ public function getSessionDate()
+ {
+ return $this->sessionDate;
+ }
+ /**
+ * @param string
+ */
+ public function setSessionId($sessionId)
+ {
+ $this->sessionId = $sessionId;
+ }
+ /**
+ * @return string
+ */
+ public function getSessionId()
+ {
+ return $this->sessionId;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\AnalyticsReporting\UserActivitySession::class, 'Google\\Site_Kit_Dependencies\\Google_Service_AnalyticsReporting_UserActivitySession');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin.php
new file mode 100644
index 000000000..f955bac36
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin.php
@@ -0,0 +1,94 @@
+
+
+*
+*
+* For more information about this service, see the API
+* Documentation
+*
+*
+* @author Google, Inc.
+*/
+class GoogleAnalyticsAdmin extends \Google\Site_Kit_Dependencies\Google\Service
+{
+ /** Edit Google Analytics management entities. */
+ const ANALYTICS_EDIT = "https://www.googleapis.com/auth/analytics.edit";
+ /** Manage Google Analytics Account users by email address. */
+ const ANALYTICS_MANAGE_USERS = "https://www.googleapis.com/auth/analytics.manage.users";
+ /** View Google Analytics user permissions. */
+ const ANALYTICS_MANAGE_USERS_READONLY = "https://www.googleapis.com/auth/analytics.manage.users.readonly";
+ /** See and download your Google Analytics data. */
+ const ANALYTICS_READONLY = "https://www.googleapis.com/auth/analytics.readonly";
+ public $accountSummaries;
+ public $accounts;
+ public $accounts_userLinks;
+ public $properties;
+ public $properties_audiences;
+ public $properties_conversionEvents;
+ public $properties_customDimensions;
+ public $properties_customMetrics;
+ public $properties_dataStreams;
+ public $properties_dataStreams_measurementProtocolSecrets;
+ public $properties_displayVideo360AdvertiserLinkProposals;
+ public $properties_displayVideo360AdvertiserLinks;
+ public $properties_firebaseLinks;
+ public $properties_googleAdsLinks;
+ public $properties_searchAds360Links;
+ public $properties_userLinks;
+ /**
+ * Constructs the internal representation of the GoogleAnalyticsAdmin service.
+ *
+ * @param Client|array $clientOrConfig The client used to deliver requests, or a
+ * config array to pass to a new Client instance.
+ * @param string $rootUrl The root URL used for requests to the service.
+ */
+ public function __construct($clientOrConfig = [], $rootUrl = null)
+ {
+ parent::__construct($clientOrConfig);
+ $this->rootUrl = $rootUrl ?: 'https://analyticsadmin.googleapis.com/';
+ $this->servicePath = '';
+ $this->batchPath = 'batch';
+ $this->version = 'v1alpha';
+ $this->serviceName = 'analyticsadmin';
+ $this->accountSummaries = new \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\AccountSummaries($this, $this->serviceName, 'accountSummaries', ['methods' => ['list' => ['path' => 'v1alpha/accountSummaries', 'httpMethod' => 'GET', 'parameters' => ['pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string']]]]]);
+ $this->accounts = new \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\Accounts($this, $this->serviceName, 'accounts', ['methods' => ['delete' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'DELETE', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'GET', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'getDataSharingSettings' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'GET', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'v1alpha/accounts', 'httpMethod' => 'GET', 'parameters' => ['pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string'], 'showDeleted' => ['location' => 'query', 'type' => 'boolean']]], 'patch' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'PATCH', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'updateMask' => ['location' => 'query', 'type' => 'string']]], 'provisionAccountTicket' => ['path' => 'v1alpha/accounts:provisionAccountTicket', 'httpMethod' => 'POST', 'parameters' => []], 'searchChangeHistoryEvents' => ['path' => 'v1alpha/{+account}:searchChangeHistoryEvents', 'httpMethod' => 'POST', 'parameters' => ['account' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]);
+ $this->accounts_userLinks = new \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\AccountsUserLinks($this, $this->serviceName, 'userLinks', ['methods' => ['audit' => ['path' => 'v1alpha/{+parent}/userLinks:audit', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'batchCreate' => ['path' => 'v1alpha/{+parent}/userLinks:batchCreate', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'batchDelete' => ['path' => 'v1alpha/{+parent}/userLinks:batchDelete', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'batchGet' => ['path' => 'v1alpha/{+parent}/userLinks:batchGet', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'names' => ['location' => 'query', 'type' => 'string', 'repeated' => \true]]], 'batchUpdate' => ['path' => 'v1alpha/{+parent}/userLinks:batchUpdate', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'create' => ['path' => 'v1alpha/{+parent}/userLinks', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'notifyNewUser' => ['location' => 'query', 'type' => 'boolean']]], 'delete' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'DELETE', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'GET', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'v1alpha/{+parent}/userLinks', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'patch' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'PATCH', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]);
+ $this->properties = new \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\Properties($this, $this->serviceName, 'properties', ['methods' => ['acknowledgeUserDataCollection' => ['path' => 'v1alpha/{+property}:acknowledgeUserDataCollection', 'httpMethod' => 'POST', 'parameters' => ['property' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'create' => ['path' => 'v1alpha/properties', 'httpMethod' => 'POST', 'parameters' => []], 'delete' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'DELETE', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'GET', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'getAttributionSettings' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'GET', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'getDataRetentionSettings' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'GET', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'getGoogleSignalsSettings' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'GET', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'v1alpha/properties', 'httpMethod' => 'GET', 'parameters' => ['filter' => ['location' => 'query', 'type' => 'string'], 'pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string'], 'showDeleted' => ['location' => 'query', 'type' => 'boolean']]], 'patch' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'PATCH', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'updateMask' => ['location' => 'query', 'type' => 'string']]], 'runAccessReport' => ['path' => 'v1alpha/{+entity}:runAccessReport', 'httpMethod' => 'POST', 'parameters' => ['entity' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'updateAttributionSettings' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'PATCH', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'updateMask' => ['location' => 'query', 'type' => 'string']]], 'updateDataRetentionSettings' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'PATCH', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'updateMask' => ['location' => 'query', 'type' => 'string']]], 'updateGoogleSignalsSettings' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'PATCH', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'updateMask' => ['location' => 'query', 'type' => 'string']]]]]);
+ $this->properties_audiences = new \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\PropertiesAudiences($this, $this->serviceName, 'audiences', ['methods' => ['archive' => ['path' => 'v1alpha/{+name}:archive', 'httpMethod' => 'POST', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'create' => ['path' => 'v1alpha/{+parent}/audiences', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'GET', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'v1alpha/{+parent}/audiences', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'patch' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'PATCH', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'updateMask' => ['location' => 'query', 'type' => 'string']]]]]);
+ $this->properties_conversionEvents = new \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\PropertiesConversionEvents($this, $this->serviceName, 'conversionEvents', ['methods' => ['create' => ['path' => 'v1alpha/{+parent}/conversionEvents', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'delete' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'DELETE', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'GET', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'v1alpha/{+parent}/conversionEvents', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string']]]]]);
+ $this->properties_customDimensions = new \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\PropertiesCustomDimensions($this, $this->serviceName, 'customDimensions', ['methods' => ['archive' => ['path' => 'v1alpha/{+name}:archive', 'httpMethod' => 'POST', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'create' => ['path' => 'v1alpha/{+parent}/customDimensions', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'GET', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'v1alpha/{+parent}/customDimensions', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'patch' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'PATCH', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'updateMask' => ['location' => 'query', 'type' => 'string']]]]]);
+ $this->properties_customMetrics = new \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\PropertiesCustomMetrics($this, $this->serviceName, 'customMetrics', ['methods' => ['archive' => ['path' => 'v1alpha/{+name}:archive', 'httpMethod' => 'POST', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'create' => ['path' => 'v1alpha/{+parent}/customMetrics', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'GET', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'v1alpha/{+parent}/customMetrics', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'patch' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'PATCH', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'updateMask' => ['location' => 'query', 'type' => 'string']]]]]);
+ $this->properties_dataStreams = new \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\PropertiesDataStreams($this, $this->serviceName, 'dataStreams', ['methods' => ['create' => ['path' => 'v1alpha/{+parent}/dataStreams', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'delete' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'DELETE', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'GET', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'getGlobalSiteTag' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'GET', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'v1alpha/{+parent}/dataStreams', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'patch' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'PATCH', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'updateMask' => ['location' => 'query', 'type' => 'string']]]]]);
+ $this->properties_dataStreams_measurementProtocolSecrets = new \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\PropertiesDataStreamsMeasurementProtocolSecrets($this, $this->serviceName, 'measurementProtocolSecrets', ['methods' => ['create' => ['path' => 'v1alpha/{+parent}/measurementProtocolSecrets', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'delete' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'DELETE', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'GET', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'v1alpha/{+parent}/measurementProtocolSecrets', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'patch' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'PATCH', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'updateMask' => ['location' => 'query', 'type' => 'string']]]]]);
+ $this->properties_displayVideo360AdvertiserLinkProposals = new \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\PropertiesDisplayVideo360AdvertiserLinkProposals($this, $this->serviceName, 'displayVideo360AdvertiserLinkProposals', ['methods' => ['approve' => ['path' => 'v1alpha/{+name}:approve', 'httpMethod' => 'POST', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'cancel' => ['path' => 'v1alpha/{+name}:cancel', 'httpMethod' => 'POST', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'create' => ['path' => 'v1alpha/{+parent}/displayVideo360AdvertiserLinkProposals', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'delete' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'DELETE', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'GET', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'v1alpha/{+parent}/displayVideo360AdvertiserLinkProposals', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string']]]]]);
+ $this->properties_displayVideo360AdvertiserLinks = new \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\PropertiesDisplayVideo360AdvertiserLinks($this, $this->serviceName, 'displayVideo360AdvertiserLinks', ['methods' => ['create' => ['path' => 'v1alpha/{+parent}/displayVideo360AdvertiserLinks', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'delete' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'DELETE', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'GET', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'v1alpha/{+parent}/displayVideo360AdvertiserLinks', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'patch' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'PATCH', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'updateMask' => ['location' => 'query', 'type' => 'string']]]]]);
+ $this->properties_firebaseLinks = new \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\PropertiesFirebaseLinks($this, $this->serviceName, 'firebaseLinks', ['methods' => ['create' => ['path' => 'v1alpha/{+parent}/firebaseLinks', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'delete' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'DELETE', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'v1alpha/{+parent}/firebaseLinks', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string']]]]]);
+ $this->properties_googleAdsLinks = new \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\PropertiesGoogleAdsLinks($this, $this->serviceName, 'googleAdsLinks', ['methods' => ['create' => ['path' => 'v1alpha/{+parent}/googleAdsLinks', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'delete' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'DELETE', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'v1alpha/{+parent}/googleAdsLinks', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'patch' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'PATCH', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'updateMask' => ['location' => 'query', 'type' => 'string']]]]]);
+ $this->properties_searchAds360Links = new \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\PropertiesSearchAds360Links($this, $this->serviceName, 'searchAds360Links', ['methods' => ['create' => ['path' => 'v1alpha/{+parent}/searchAds360Links', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'delete' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'DELETE', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'GET', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'v1alpha/{+parent}/searchAds360Links', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'patch' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'PATCH', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'updateMask' => ['location' => 'query', 'type' => 'string']]]]]);
+ $this->properties_userLinks = new \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\PropertiesUserLinks($this, $this->serviceName, 'userLinks', ['methods' => ['audit' => ['path' => 'v1alpha/{+parent}/userLinks:audit', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'batchCreate' => ['path' => 'v1alpha/{+parent}/userLinks:batchCreate', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'batchDelete' => ['path' => 'v1alpha/{+parent}/userLinks:batchDelete', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'batchGet' => ['path' => 'v1alpha/{+parent}/userLinks:batchGet', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'names' => ['location' => 'query', 'type' => 'string', 'repeated' => \true]]], 'batchUpdate' => ['path' => 'v1alpha/{+parent}/userLinks:batchUpdate', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'create' => ['path' => 'v1alpha/{+parent}/userLinks', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'notifyNewUser' => ['location' => 'query', 'type' => 'boolean']]], 'delete' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'DELETE', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'GET', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'v1alpha/{+parent}/userLinks', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'patch' => ['path' => 'v1alpha/{+name}', 'httpMethod' => 'PATCH', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessBetweenFilter.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessBetweenFilter.php
new file mode 100644
index 000000000..41d95b975
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessBetweenFilter.php
@@ -0,0 +1,56 @@
+fromValue = $fromValue;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaNumericValue
+ */
+ public function getFromValue()
+ {
+ return $this->fromValue;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaNumericValue
+ */
+ public function setToValue(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaNumericValue $toValue)
+ {
+ $this->toValue = $toValue;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaNumericValue
+ */
+ public function getToValue()
+ {
+ return $this->toValue;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessBetweenFilter::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAccessBetweenFilter');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessDateRange.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessDateRange.php
new file mode 100644
index 000000000..83a104383
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessDateRange.php
@@ -0,0 +1,60 @@
+endDate = $endDate;
+ }
+ /**
+ * @return string
+ */
+ public function getEndDate()
+ {
+ return $this->endDate;
+ }
+ /**
+ * @param string
+ */
+ public function setStartDate($startDate)
+ {
+ $this->startDate = $startDate;
+ }
+ /**
+ * @return string
+ */
+ public function getStartDate()
+ {
+ return $this->startDate;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessDateRange::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAccessDateRange');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessDimension.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessDimension.php
new file mode 100644
index 000000000..db85ad871
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessDimension.php
@@ -0,0 +1,42 @@
+dimensionName = $dimensionName;
+ }
+ /**
+ * @return string
+ */
+ public function getDimensionName()
+ {
+ return $this->dimensionName;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessDimension::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAccessDimension');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessDimensionHeader.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessDimensionHeader.php
new file mode 100644
index 000000000..be2b2d72f
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessDimensionHeader.php
@@ -0,0 +1,42 @@
+dimensionName = $dimensionName;
+ }
+ /**
+ * @return string
+ */
+ public function getDimensionName()
+ {
+ return $this->dimensionName;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessDimensionHeader::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAccessDimensionHeader');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessDimensionValue.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessDimensionValue.php
new file mode 100644
index 000000000..134344b5b
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessDimensionValue.php
@@ -0,0 +1,42 @@
+value = $value;
+ }
+ /**
+ * @return string
+ */
+ public function getValue()
+ {
+ return $this->value;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessDimensionValue::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAccessDimensionValue');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessFilter.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessFilter.php
new file mode 100644
index 000000000..51ce51670
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessFilter.php
@@ -0,0 +1,106 @@
+betweenFilter = $betweenFilter;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaAccessBetweenFilter
+ */
+ public function getBetweenFilter()
+ {
+ return $this->betweenFilter;
+ }
+ /**
+ * @param string
+ */
+ public function setFieldName($fieldName)
+ {
+ $this->fieldName = $fieldName;
+ }
+ /**
+ * @return string
+ */
+ public function getFieldName()
+ {
+ return $this->fieldName;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaAccessInListFilter
+ */
+ public function setInListFilter(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessInListFilter $inListFilter)
+ {
+ $this->inListFilter = $inListFilter;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaAccessInListFilter
+ */
+ public function getInListFilter()
+ {
+ return $this->inListFilter;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaAccessNumericFilter
+ */
+ public function setNumericFilter(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessNumericFilter $numericFilter)
+ {
+ $this->numericFilter = $numericFilter;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaAccessNumericFilter
+ */
+ public function getNumericFilter()
+ {
+ return $this->numericFilter;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaAccessStringFilter
+ */
+ public function setStringFilter(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessStringFilter $stringFilter)
+ {
+ $this->stringFilter = $stringFilter;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaAccessStringFilter
+ */
+ public function getStringFilter()
+ {
+ return $this->stringFilter;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessFilter::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAccessFilter');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessFilterExpression.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessFilterExpression.php
new file mode 100644
index 000000000..678e296f9
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessFilterExpression.php
@@ -0,0 +1,88 @@
+accessFilter = $accessFilter;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaAccessFilter
+ */
+ public function getAccessFilter()
+ {
+ return $this->accessFilter;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaAccessFilterExpressionList
+ */
+ public function setAndGroup(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessFilterExpressionList $andGroup)
+ {
+ $this->andGroup = $andGroup;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaAccessFilterExpressionList
+ */
+ public function getAndGroup()
+ {
+ return $this->andGroup;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaAccessFilterExpression
+ */
+ public function setNotExpression(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessFilterExpression $notExpression)
+ {
+ $this->notExpression = $notExpression;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaAccessFilterExpression
+ */
+ public function getNotExpression()
+ {
+ return $this->notExpression;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaAccessFilterExpressionList
+ */
+ public function setOrGroup(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessFilterExpressionList $orGroup)
+ {
+ $this->orGroup = $orGroup;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaAccessFilterExpressionList
+ */
+ public function getOrGroup()
+ {
+ return $this->orGroup;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessFilterExpression::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAccessFilterExpression');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessFilterExpressionList.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessFilterExpressionList.php
new file mode 100644
index 000000000..601a8e622
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessFilterExpressionList.php
@@ -0,0 +1,41 @@
+expressions = $expressions;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaAccessFilterExpression[]
+ */
+ public function getExpressions()
+ {
+ return $this->expressions;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessFilterExpressionList::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAccessFilterExpressionList');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessInListFilter.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessInListFilter.php
new file mode 100644
index 000000000..2f2a5789c
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessInListFilter.php
@@ -0,0 +1,61 @@
+caseSensitive = $caseSensitive;
+ }
+ /**
+ * @return bool
+ */
+ public function getCaseSensitive()
+ {
+ return $this->caseSensitive;
+ }
+ /**
+ * @param string[]
+ */
+ public function setValues($values)
+ {
+ $this->values = $values;
+ }
+ /**
+ * @return string[]
+ */
+ public function getValues()
+ {
+ return $this->values;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessInListFilter::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAccessInListFilter');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessMetric.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessMetric.php
new file mode 100644
index 000000000..acb5467ff
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessMetric.php
@@ -0,0 +1,42 @@
+metricName = $metricName;
+ }
+ /**
+ * @return string
+ */
+ public function getMetricName()
+ {
+ return $this->metricName;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessMetric::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAccessMetric');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessMetricHeader.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessMetricHeader.php
new file mode 100644
index 000000000..7f9ea1ce6
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessMetricHeader.php
@@ -0,0 +1,42 @@
+metricName = $metricName;
+ }
+ /**
+ * @return string
+ */
+ public function getMetricName()
+ {
+ return $this->metricName;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessMetricHeader::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAccessMetricHeader');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessMetricValue.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessMetricValue.php
new file mode 100644
index 000000000..e7ffc347a
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessMetricValue.php
@@ -0,0 +1,42 @@
+value = $value;
+ }
+ /**
+ * @return string
+ */
+ public function getValue()
+ {
+ return $this->value;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessMetricValue::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAccessMetricValue');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessNumericFilter.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessNumericFilter.php
new file mode 100644
index 000000000..37828c179
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessNumericFilter.php
@@ -0,0 +1,58 @@
+operation = $operation;
+ }
+ /**
+ * @return string
+ */
+ public function getOperation()
+ {
+ return $this->operation;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaNumericValue
+ */
+ public function setValue(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaNumericValue $value)
+ {
+ $this->value = $value;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaNumericValue
+ */
+ public function getValue()
+ {
+ return $this->value;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessNumericFilter::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAccessNumericFilter');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessOrderBy.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessOrderBy.php
new file mode 100644
index 000000000..a34757900
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessOrderBy.php
@@ -0,0 +1,74 @@
+desc = $desc;
+ }
+ /**
+ * @return bool
+ */
+ public function getDesc()
+ {
+ return $this->desc;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaAccessOrderByDimensionOrderBy
+ */
+ public function setDimension(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessOrderByDimensionOrderBy $dimension)
+ {
+ $this->dimension = $dimension;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaAccessOrderByDimensionOrderBy
+ */
+ public function getDimension()
+ {
+ return $this->dimension;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaAccessOrderByMetricOrderBy
+ */
+ public function setMetric(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessOrderByMetricOrderBy $metric)
+ {
+ $this->metric = $metric;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaAccessOrderByMetricOrderBy
+ */
+ public function getMetric()
+ {
+ return $this->metric;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessOrderBy::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAccessOrderBy');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessOrderByDimensionOrderBy.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessOrderByDimensionOrderBy.php
new file mode 100644
index 000000000..fa5450752
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessOrderByDimensionOrderBy.php
@@ -0,0 +1,60 @@
+dimensionName = $dimensionName;
+ }
+ /**
+ * @return string
+ */
+ public function getDimensionName()
+ {
+ return $this->dimensionName;
+ }
+ /**
+ * @param string
+ */
+ public function setOrderType($orderType)
+ {
+ $this->orderType = $orderType;
+ }
+ /**
+ * @return string
+ */
+ public function getOrderType()
+ {
+ return $this->orderType;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessOrderByDimensionOrderBy::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAccessOrderByDimensionOrderBy');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessOrderByMetricOrderBy.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessOrderByMetricOrderBy.php
new file mode 100644
index 000000000..27c807cfb
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessOrderByMetricOrderBy.php
@@ -0,0 +1,42 @@
+metricName = $metricName;
+ }
+ /**
+ * @return string
+ */
+ public function getMetricName()
+ {
+ return $this->metricName;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessOrderByMetricOrderBy::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAccessOrderByMetricOrderBy');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessQuota.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessQuota.php
new file mode 100644
index 000000000..46fac1cfe
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessQuota.php
@@ -0,0 +1,104 @@
+concurrentRequests = $concurrentRequests;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaAccessQuotaStatus
+ */
+ public function getConcurrentRequests()
+ {
+ return $this->concurrentRequests;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaAccessQuotaStatus
+ */
+ public function setServerErrorsPerProjectPerHour(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessQuotaStatus $serverErrorsPerProjectPerHour)
+ {
+ $this->serverErrorsPerProjectPerHour = $serverErrorsPerProjectPerHour;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaAccessQuotaStatus
+ */
+ public function getServerErrorsPerProjectPerHour()
+ {
+ return $this->serverErrorsPerProjectPerHour;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaAccessQuotaStatus
+ */
+ public function setTokensPerDay(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessQuotaStatus $tokensPerDay)
+ {
+ $this->tokensPerDay = $tokensPerDay;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaAccessQuotaStatus
+ */
+ public function getTokensPerDay()
+ {
+ return $this->tokensPerDay;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaAccessQuotaStatus
+ */
+ public function setTokensPerHour(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessQuotaStatus $tokensPerHour)
+ {
+ $this->tokensPerHour = $tokensPerHour;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaAccessQuotaStatus
+ */
+ public function getTokensPerHour()
+ {
+ return $this->tokensPerHour;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaAccessQuotaStatus
+ */
+ public function setTokensPerProjectPerHour(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessQuotaStatus $tokensPerProjectPerHour)
+ {
+ $this->tokensPerProjectPerHour = $tokensPerProjectPerHour;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaAccessQuotaStatus
+ */
+ public function getTokensPerProjectPerHour()
+ {
+ return $this->tokensPerProjectPerHour;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessQuota::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAccessQuota');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessQuotaStatus.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessQuotaStatus.php
new file mode 100644
index 000000000..eb6f73dc4
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessQuotaStatus.php
@@ -0,0 +1,60 @@
+consumed = $consumed;
+ }
+ /**
+ * @return int
+ */
+ public function getConsumed()
+ {
+ return $this->consumed;
+ }
+ /**
+ * @param int
+ */
+ public function setRemaining($remaining)
+ {
+ $this->remaining = $remaining;
+ }
+ /**
+ * @return int
+ */
+ public function getRemaining()
+ {
+ return $this->remaining;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessQuotaStatus::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAccessQuotaStatus');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessRow.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessRow.php
new file mode 100644
index 000000000..56aa22a2e
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessRow.php
@@ -0,0 +1,57 @@
+dimensionValues = $dimensionValues;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaAccessDimensionValue[]
+ */
+ public function getDimensionValues()
+ {
+ return $this->dimensionValues;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaAccessMetricValue[]
+ */
+ public function setMetricValues($metricValues)
+ {
+ $this->metricValues = $metricValues;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaAccessMetricValue[]
+ */
+ public function getMetricValues()
+ {
+ return $this->metricValues;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessRow::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAccessRow');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessStringFilter.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessStringFilter.php
new file mode 100644
index 000000000..26a3f77a0
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccessStringFilter.php
@@ -0,0 +1,78 @@
+caseSensitive = $caseSensitive;
+ }
+ /**
+ * @return bool
+ */
+ public function getCaseSensitive()
+ {
+ return $this->caseSensitive;
+ }
+ /**
+ * @param string
+ */
+ public function setMatchType($matchType)
+ {
+ $this->matchType = $matchType;
+ }
+ /**
+ * @return string
+ */
+ public function getMatchType()
+ {
+ return $this->matchType;
+ }
+ /**
+ * @param string
+ */
+ public function setValue($value)
+ {
+ $this->value = $value;
+ }
+ /**
+ * @return string
+ */
+ public function getValue()
+ {
+ return $this->value;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessStringFilter::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAccessStringFilter');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccount.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccount.php
new file mode 100644
index 000000000..02ccadf7a
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccount.php
@@ -0,0 +1,132 @@
+createTime = $createTime;
+ }
+ /**
+ * @return string
+ */
+ public function getCreateTime()
+ {
+ return $this->createTime;
+ }
+ /**
+ * @param bool
+ */
+ public function setDeleted($deleted)
+ {
+ $this->deleted = $deleted;
+ }
+ /**
+ * @return bool
+ */
+ public function getDeleted()
+ {
+ return $this->deleted;
+ }
+ /**
+ * @param string
+ */
+ public function setDisplayName($displayName)
+ {
+ $this->displayName = $displayName;
+ }
+ /**
+ * @return string
+ */
+ public function getDisplayName()
+ {
+ return $this->displayName;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param string
+ */
+ public function setRegionCode($regionCode)
+ {
+ $this->regionCode = $regionCode;
+ }
+ /**
+ * @return string
+ */
+ public function getRegionCode()
+ {
+ return $this->regionCode;
+ }
+ /**
+ * @param string
+ */
+ public function setUpdateTime($updateTime)
+ {
+ $this->updateTime = $updateTime;
+ }
+ /**
+ * @return string
+ */
+ public function getUpdateTime()
+ {
+ return $this->updateTime;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccount::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAccount');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccountSummary.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccountSummary.php
new file mode 100644
index 000000000..a7fdad345
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAccountSummary.php
@@ -0,0 +1,95 @@
+account = $account;
+ }
+ /**
+ * @return string
+ */
+ public function getAccount()
+ {
+ return $this->account;
+ }
+ /**
+ * @param string
+ */
+ public function setDisplayName($displayName)
+ {
+ $this->displayName = $displayName;
+ }
+ /**
+ * @return string
+ */
+ public function getDisplayName()
+ {
+ return $this->displayName;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaPropertySummary[]
+ */
+ public function setPropertySummaries($propertySummaries)
+ {
+ $this->propertySummaries = $propertySummaries;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaPropertySummary[]
+ */
+ public function getPropertySummaries()
+ {
+ return $this->propertySummaries;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccountSummary::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAccountSummary');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAcknowledgeUserDataCollectionRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAcknowledgeUserDataCollectionRequest.php
new file mode 100644
index 000000000..c8ba6e399
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAcknowledgeUserDataCollectionRequest.php
@@ -0,0 +1,42 @@
+acknowledgement = $acknowledgement;
+ }
+ /**
+ * @return string
+ */
+ public function getAcknowledgement()
+ {
+ return $this->acknowledgement;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAcknowledgeUserDataCollectionRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAcknowledgeUserDataCollectionRequest');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAcknowledgeUserDataCollectionResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAcknowledgeUserDataCollectionResponse.php
new file mode 100644
index 000000000..3538b8577
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAcknowledgeUserDataCollectionResponse.php
@@ -0,0 +1,24 @@
+createTime = $createTime;
+ }
+ /**
+ * @return string
+ */
+ public function getCreateTime()
+ {
+ return $this->createTime;
+ }
+ /**
+ * @param string
+ */
+ public function setDisplayName($displayName)
+ {
+ $this->displayName = $displayName;
+ }
+ /**
+ * @return string
+ */
+ public function getDisplayName()
+ {
+ return $this->displayName;
+ }
+ /**
+ * @param string
+ */
+ public function setFirebaseAppId($firebaseAppId)
+ {
+ $this->firebaseAppId = $firebaseAppId;
+ }
+ /**
+ * @return string
+ */
+ public function getFirebaseAppId()
+ {
+ return $this->firebaseAppId;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param string
+ */
+ public function setPackageName($packageName)
+ {
+ $this->packageName = $packageName;
+ }
+ /**
+ * @return string
+ */
+ public function getPackageName()
+ {
+ return $this->packageName;
+ }
+ /**
+ * @param string
+ */
+ public function setUpdateTime($updateTime)
+ {
+ $this->updateTime = $updateTime;
+ }
+ /**
+ * @return string
+ */
+ public function getUpdateTime()
+ {
+ return $this->updateTime;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAndroidAppDataStream::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAndroidAppDataStream');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaApproveDisplayVideo360AdvertiserLinkProposalRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaApproveDisplayVideo360AdvertiserLinkProposalRequest.php
new file mode 100644
index 000000000..bc8913c7f
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaApproveDisplayVideo360AdvertiserLinkProposalRequest.php
@@ -0,0 +1,24 @@
+displayVideo360AdvertiserLink = $displayVideo360AdvertiserLink;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLink
+ */
+ public function getDisplayVideo360AdvertiserLink()
+ {
+ return $this->displayVideo360AdvertiserLink;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaApproveDisplayVideo360AdvertiserLinkProposalResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaApproveDisplayVideo360AdvertiserLinkProposalResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaArchiveAudienceRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaArchiveAudienceRequest.php
new file mode 100644
index 000000000..3800b4e60
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaArchiveAudienceRequest.php
@@ -0,0 +1,24 @@
+acquisitionConversionEventLookbackWindow = $acquisitionConversionEventLookbackWindow;
+ }
+ /**
+ * @return string
+ */
+ public function getAcquisitionConversionEventLookbackWindow()
+ {
+ return $this->acquisitionConversionEventLookbackWindow;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param string
+ */
+ public function setOtherConversionEventLookbackWindow($otherConversionEventLookbackWindow)
+ {
+ $this->otherConversionEventLookbackWindow = $otherConversionEventLookbackWindow;
+ }
+ /**
+ * @return string
+ */
+ public function getOtherConversionEventLookbackWindow()
+ {
+ return $this->otherConversionEventLookbackWindow;
+ }
+ /**
+ * @param string
+ */
+ public function setReportingAttributionModel($reportingAttributionModel)
+ {
+ $this->reportingAttributionModel = $reportingAttributionModel;
+ }
+ /**
+ * @return string
+ */
+ public function getReportingAttributionModel()
+ {
+ return $this->reportingAttributionModel;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAttributionSettings::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAttributionSettings');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudience.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudience.php
new file mode 100644
index 000000000..a905e3c76
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudience.php
@@ -0,0 +1,165 @@
+adsPersonalizationEnabled = $adsPersonalizationEnabled;
+ }
+ /**
+ * @return bool
+ */
+ public function getAdsPersonalizationEnabled()
+ {
+ return $this->adsPersonalizationEnabled;
+ }
+ /**
+ * @param string
+ */
+ public function setDescription($description)
+ {
+ $this->description = $description;
+ }
+ /**
+ * @return string
+ */
+ public function getDescription()
+ {
+ return $this->description;
+ }
+ /**
+ * @param string
+ */
+ public function setDisplayName($displayName)
+ {
+ $this->displayName = $displayName;
+ }
+ /**
+ * @return string
+ */
+ public function getDisplayName()
+ {
+ return $this->displayName;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaAudienceEventTrigger
+ */
+ public function setEventTrigger(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudienceEventTrigger $eventTrigger)
+ {
+ $this->eventTrigger = $eventTrigger;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaAudienceEventTrigger
+ */
+ public function getEventTrigger()
+ {
+ return $this->eventTrigger;
+ }
+ /**
+ * @param string
+ */
+ public function setExclusionDurationMode($exclusionDurationMode)
+ {
+ $this->exclusionDurationMode = $exclusionDurationMode;
+ }
+ /**
+ * @return string
+ */
+ public function getExclusionDurationMode()
+ {
+ return $this->exclusionDurationMode;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaAudienceFilterClause[]
+ */
+ public function setFilterClauses($filterClauses)
+ {
+ $this->filterClauses = $filterClauses;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaAudienceFilterClause[]
+ */
+ public function getFilterClauses()
+ {
+ return $this->filterClauses;
+ }
+ /**
+ * @param int
+ */
+ public function setMembershipDurationDays($membershipDurationDays)
+ {
+ $this->membershipDurationDays = $membershipDurationDays;
+ }
+ /**
+ * @return int
+ */
+ public function getMembershipDurationDays()
+ {
+ return $this->membershipDurationDays;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudience::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAudience');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilter.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilter.php
new file mode 100644
index 000000000..1a096b04d
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilter.php
@@ -0,0 +1,142 @@
+atAnyPointInTime = $atAnyPointInTime;
+ }
+ /**
+ * @return bool
+ */
+ public function getAtAnyPointInTime()
+ {
+ return $this->atAnyPointInTime;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterBetweenFilter
+ */
+ public function setBetweenFilter(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterBetweenFilter $betweenFilter)
+ {
+ $this->betweenFilter = $betweenFilter;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterBetweenFilter
+ */
+ public function getBetweenFilter()
+ {
+ return $this->betweenFilter;
+ }
+ /**
+ * @param string
+ */
+ public function setFieldName($fieldName)
+ {
+ $this->fieldName = $fieldName;
+ }
+ /**
+ * @return string
+ */
+ public function getFieldName()
+ {
+ return $this->fieldName;
+ }
+ /**
+ * @param int
+ */
+ public function setInAnyNDayPeriod($inAnyNDayPeriod)
+ {
+ $this->inAnyNDayPeriod = $inAnyNDayPeriod;
+ }
+ /**
+ * @return int
+ */
+ public function getInAnyNDayPeriod()
+ {
+ return $this->inAnyNDayPeriod;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterInListFilter
+ */
+ public function setInListFilter(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterInListFilter $inListFilter)
+ {
+ $this->inListFilter = $inListFilter;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterInListFilter
+ */
+ public function getInListFilter()
+ {
+ return $this->inListFilter;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterNumericFilter
+ */
+ public function setNumericFilter(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterNumericFilter $numericFilter)
+ {
+ $this->numericFilter = $numericFilter;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterNumericFilter
+ */
+ public function getNumericFilter()
+ {
+ return $this->numericFilter;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterStringFilter
+ */
+ public function setStringFilter(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterStringFilter $stringFilter)
+ {
+ $this->stringFilter = $stringFilter;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterStringFilter
+ */
+ public function getStringFilter()
+ {
+ return $this->stringFilter;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilter::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilter');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterBetweenFilter.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterBetweenFilter.php
new file mode 100644
index 000000000..3c728de8d
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterBetweenFilter.php
@@ -0,0 +1,56 @@
+fromValue = $fromValue;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterNumericValue
+ */
+ public function getFromValue()
+ {
+ return $this->fromValue;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterNumericValue
+ */
+ public function setToValue(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterNumericValue $toValue)
+ {
+ $this->toValue = $toValue;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterNumericValue
+ */
+ public function getToValue()
+ {
+ return $this->toValue;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterBetweenFilter::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterBetweenFilter');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterInListFilter.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterInListFilter.php
new file mode 100644
index 000000000..a191cf220
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterInListFilter.php
@@ -0,0 +1,61 @@
+caseSensitive = $caseSensitive;
+ }
+ /**
+ * @return bool
+ */
+ public function getCaseSensitive()
+ {
+ return $this->caseSensitive;
+ }
+ /**
+ * @param string[]
+ */
+ public function setValues($values)
+ {
+ $this->values = $values;
+ }
+ /**
+ * @return string[]
+ */
+ public function getValues()
+ {
+ return $this->values;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterInListFilter::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterInListFilter');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterNumericFilter.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterNumericFilter.php
new file mode 100644
index 000000000..e99fdebb5
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterNumericFilter.php
@@ -0,0 +1,58 @@
+operation = $operation;
+ }
+ /**
+ * @return string
+ */
+ public function getOperation()
+ {
+ return $this->operation;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterNumericValue
+ */
+ public function setValue(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterNumericValue $value)
+ {
+ $this->value = $value;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterNumericValue
+ */
+ public function getValue()
+ {
+ return $this->value;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterNumericFilter::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterNumericFilter');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterNumericValue.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterNumericValue.php
new file mode 100644
index 000000000..671d90b3d
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterNumericValue.php
@@ -0,0 +1,51 @@
+doubleValue = $doubleValue;
+ }
+ public function getDoubleValue()
+ {
+ return $this->doubleValue;
+ }
+ /**
+ * @param string
+ */
+ public function setInt64Value($int64Value)
+ {
+ $this->int64Value = $int64Value;
+ }
+ /**
+ * @return string
+ */
+ public function getInt64Value()
+ {
+ return $this->int64Value;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterNumericValue::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterNumericValue');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterStringFilter.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterStringFilter.php
new file mode 100644
index 000000000..69683c6b5
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterStringFilter.php
@@ -0,0 +1,78 @@
+caseSensitive = $caseSensitive;
+ }
+ /**
+ * @return bool
+ */
+ public function getCaseSensitive()
+ {
+ return $this->caseSensitive;
+ }
+ /**
+ * @param string
+ */
+ public function setMatchType($matchType)
+ {
+ $this->matchType = $matchType;
+ }
+ /**
+ * @return string
+ */
+ public function getMatchType()
+ {
+ return $this->matchType;
+ }
+ /**
+ * @param string
+ */
+ public function setValue($value)
+ {
+ $this->value = $value;
+ }
+ /**
+ * @return string
+ */
+ public function getValue()
+ {
+ return $this->value;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterStringFilter::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilterStringFilter');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceEventFilter.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceEventFilter.php
new file mode 100644
index 000000000..a62647c7c
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceEventFilter.php
@@ -0,0 +1,58 @@
+eventName = $eventName;
+ }
+ /**
+ * @return string
+ */
+ public function getEventName()
+ {
+ return $this->eventName;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaAudienceFilterExpression
+ */
+ public function setEventParameterFilterExpression(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudienceFilterExpression $eventParameterFilterExpression)
+ {
+ $this->eventParameterFilterExpression = $eventParameterFilterExpression;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaAudienceFilterExpression
+ */
+ public function getEventParameterFilterExpression()
+ {
+ return $this->eventParameterFilterExpression;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudienceEventFilter::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAudienceEventFilter');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceEventTrigger.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceEventTrigger.php
new file mode 100644
index 000000000..543709143
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceEventTrigger.php
@@ -0,0 +1,60 @@
+eventName = $eventName;
+ }
+ /**
+ * @return string
+ */
+ public function getEventName()
+ {
+ return $this->eventName;
+ }
+ /**
+ * @param string
+ */
+ public function setLogCondition($logCondition)
+ {
+ $this->logCondition = $logCondition;
+ }
+ /**
+ * @return string
+ */
+ public function getLogCondition()
+ {
+ return $this->logCondition;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudienceEventTrigger::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAudienceEventTrigger');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceFilterClause.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceFilterClause.php
new file mode 100644
index 000000000..38838e8fe
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceFilterClause.php
@@ -0,0 +1,74 @@
+clauseType = $clauseType;
+ }
+ /**
+ * @return string
+ */
+ public function getClauseType()
+ {
+ return $this->clauseType;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaAudienceSequenceFilter
+ */
+ public function setSequenceFilter(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudienceSequenceFilter $sequenceFilter)
+ {
+ $this->sequenceFilter = $sequenceFilter;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaAudienceSequenceFilter
+ */
+ public function getSequenceFilter()
+ {
+ return $this->sequenceFilter;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaAudienceSimpleFilter
+ */
+ public function setSimpleFilter(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudienceSimpleFilter $simpleFilter)
+ {
+ $this->simpleFilter = $simpleFilter;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaAudienceSimpleFilter
+ */
+ public function getSimpleFilter()
+ {
+ return $this->simpleFilter;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudienceFilterClause::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAudienceFilterClause');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceFilterExpression.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceFilterExpression.php
new file mode 100644
index 000000000..069fce229
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceFilterExpression.php
@@ -0,0 +1,104 @@
+andGroup = $andGroup;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaAudienceFilterExpressionList
+ */
+ public function getAndGroup()
+ {
+ return $this->andGroup;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilter
+ */
+ public function setDimensionOrMetricFilter(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilter $dimensionOrMetricFilter)
+ {
+ $this->dimensionOrMetricFilter = $dimensionOrMetricFilter;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaAudienceDimensionOrMetricFilter
+ */
+ public function getDimensionOrMetricFilter()
+ {
+ return $this->dimensionOrMetricFilter;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaAudienceEventFilter
+ */
+ public function setEventFilter(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudienceEventFilter $eventFilter)
+ {
+ $this->eventFilter = $eventFilter;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaAudienceEventFilter
+ */
+ public function getEventFilter()
+ {
+ return $this->eventFilter;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaAudienceFilterExpression
+ */
+ public function setNotExpression(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudienceFilterExpression $notExpression)
+ {
+ $this->notExpression = $notExpression;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaAudienceFilterExpression
+ */
+ public function getNotExpression()
+ {
+ return $this->notExpression;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaAudienceFilterExpressionList
+ */
+ public function setOrGroup(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudienceFilterExpressionList $orGroup)
+ {
+ $this->orGroup = $orGroup;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaAudienceFilterExpressionList
+ */
+ public function getOrGroup()
+ {
+ return $this->orGroup;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudienceFilterExpression::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAudienceFilterExpression');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceFilterExpressionList.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceFilterExpressionList.php
new file mode 100644
index 000000000..ce487e01a
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceFilterExpressionList.php
@@ -0,0 +1,41 @@
+filterExpressions = $filterExpressions;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaAudienceFilterExpression[]
+ */
+ public function getFilterExpressions()
+ {
+ return $this->filterExpressions;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudienceFilterExpressionList::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAudienceFilterExpressionList');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceSequenceFilter.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceSequenceFilter.php
new file mode 100644
index 000000000..33f42fb1e
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceSequenceFilter.php
@@ -0,0 +1,77 @@
+scope = $scope;
+ }
+ /**
+ * @return string
+ */
+ public function getScope()
+ {
+ return $this->scope;
+ }
+ /**
+ * @param string
+ */
+ public function setSequenceMaximumDuration($sequenceMaximumDuration)
+ {
+ $this->sequenceMaximumDuration = $sequenceMaximumDuration;
+ }
+ /**
+ * @return string
+ */
+ public function getSequenceMaximumDuration()
+ {
+ return $this->sequenceMaximumDuration;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaAudienceSequenceFilterAudienceSequenceStep[]
+ */
+ public function setSequenceSteps($sequenceSteps)
+ {
+ $this->sequenceSteps = $sequenceSteps;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaAudienceSequenceFilterAudienceSequenceStep[]
+ */
+ public function getSequenceSteps()
+ {
+ return $this->sequenceSteps;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudienceSequenceFilter::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAudienceSequenceFilter');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceSequenceFilterAudienceSequenceStep.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceSequenceFilterAudienceSequenceStep.php
new file mode 100644
index 000000000..9e1ad8411
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceSequenceFilterAudienceSequenceStep.php
@@ -0,0 +1,94 @@
+constraintDuration = $constraintDuration;
+ }
+ /**
+ * @return string
+ */
+ public function getConstraintDuration()
+ {
+ return $this->constraintDuration;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaAudienceFilterExpression
+ */
+ public function setFilterExpression(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudienceFilterExpression $filterExpression)
+ {
+ $this->filterExpression = $filterExpression;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaAudienceFilterExpression
+ */
+ public function getFilterExpression()
+ {
+ return $this->filterExpression;
+ }
+ /**
+ * @param bool
+ */
+ public function setImmediatelyFollows($immediatelyFollows)
+ {
+ $this->immediatelyFollows = $immediatelyFollows;
+ }
+ /**
+ * @return bool
+ */
+ public function getImmediatelyFollows()
+ {
+ return $this->immediatelyFollows;
+ }
+ /**
+ * @param string
+ */
+ public function setScope($scope)
+ {
+ $this->scope = $scope;
+ }
+ /**
+ * @return string
+ */
+ public function getScope()
+ {
+ return $this->scope;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudienceSequenceFilterAudienceSequenceStep::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAudienceSequenceFilterAudienceSequenceStep');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceSimpleFilter.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceSimpleFilter.php
new file mode 100644
index 000000000..f73b1f363
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAudienceSimpleFilter.php
@@ -0,0 +1,58 @@
+filterExpression = $filterExpression;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaAudienceFilterExpression
+ */
+ public function getFilterExpression()
+ {
+ return $this->filterExpression;
+ }
+ /**
+ * @param string
+ */
+ public function setScope($scope)
+ {
+ $this->scope = $scope;
+ }
+ /**
+ * @return string
+ */
+ public function getScope()
+ {
+ return $this->scope;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudienceSimpleFilter::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAudienceSimpleFilter');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAuditUserLink.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAuditUserLink.php
new file mode 100644
index 000000000..a1ffdbe29
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAuditUserLink.php
@@ -0,0 +1,97 @@
+directRoles = $directRoles;
+ }
+ /**
+ * @return string[]
+ */
+ public function getDirectRoles()
+ {
+ return $this->directRoles;
+ }
+ /**
+ * @param string[]
+ */
+ public function setEffectiveRoles($effectiveRoles)
+ {
+ $this->effectiveRoles = $effectiveRoles;
+ }
+ /**
+ * @return string[]
+ */
+ public function getEffectiveRoles()
+ {
+ return $this->effectiveRoles;
+ }
+ /**
+ * @param string
+ */
+ public function setEmailAddress($emailAddress)
+ {
+ $this->emailAddress = $emailAddress;
+ }
+ /**
+ * @return string
+ */
+ public function getEmailAddress()
+ {
+ return $this->emailAddress;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAuditUserLink::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAuditUserLink');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAuditUserLinksRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAuditUserLinksRequest.php
new file mode 100644
index 000000000..28dde57de
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAuditUserLinksRequest.php
@@ -0,0 +1,60 @@
+pageSize = $pageSize;
+ }
+ /**
+ * @return int
+ */
+ public function getPageSize()
+ {
+ return $this->pageSize;
+ }
+ /**
+ * @param string
+ */
+ public function setPageToken($pageToken)
+ {
+ $this->pageToken = $pageToken;
+ }
+ /**
+ * @return string
+ */
+ public function getPageToken()
+ {
+ return $this->pageToken;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAuditUserLinksRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAuditUserLinksRequest');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAuditUserLinksResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAuditUserLinksResponse.php
new file mode 100644
index 000000000..3e97939f8
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaAuditUserLinksResponse.php
@@ -0,0 +1,59 @@
+nextPageToken = $nextPageToken;
+ }
+ /**
+ * @return string
+ */
+ public function getNextPageToken()
+ {
+ return $this->nextPageToken;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaAuditUserLink[]
+ */
+ public function setUserLinks($userLinks)
+ {
+ $this->userLinks = $userLinks;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaAuditUserLink[]
+ */
+ public function getUserLinks()
+ {
+ return $this->userLinks;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAuditUserLinksResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaAuditUserLinksResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaBatchCreateUserLinksRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaBatchCreateUserLinksRequest.php
new file mode 100644
index 000000000..1d6d25b85
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaBatchCreateUserLinksRequest.php
@@ -0,0 +1,59 @@
+notifyNewUsers = $notifyNewUsers;
+ }
+ /**
+ * @return bool
+ */
+ public function getNotifyNewUsers()
+ {
+ return $this->notifyNewUsers;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaCreateUserLinkRequest[]
+ */
+ public function setRequests($requests)
+ {
+ $this->requests = $requests;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaCreateUserLinkRequest[]
+ */
+ public function getRequests()
+ {
+ return $this->requests;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaBatchCreateUserLinksRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaBatchCreateUserLinksRequest');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaBatchCreateUserLinksResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaBatchCreateUserLinksResponse.php
new file mode 100644
index 000000000..1745ad3a0
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaBatchCreateUserLinksResponse.php
@@ -0,0 +1,41 @@
+userLinks = $userLinks;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaUserLink[]
+ */
+ public function getUserLinks()
+ {
+ return $this->userLinks;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaBatchCreateUserLinksResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaBatchCreateUserLinksResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaBatchDeleteUserLinksRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaBatchDeleteUserLinksRequest.php
new file mode 100644
index 000000000..8d045f29d
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaBatchDeleteUserLinksRequest.php
@@ -0,0 +1,41 @@
+requests = $requests;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaDeleteUserLinkRequest[]
+ */
+ public function getRequests()
+ {
+ return $this->requests;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaBatchDeleteUserLinksRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaBatchDeleteUserLinksRequest');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaBatchGetUserLinksResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaBatchGetUserLinksResponse.php
new file mode 100644
index 000000000..f012dbe90
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaBatchGetUserLinksResponse.php
@@ -0,0 +1,41 @@
+userLinks = $userLinks;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaUserLink[]
+ */
+ public function getUserLinks()
+ {
+ return $this->userLinks;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaBatchGetUserLinksResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaBatchGetUserLinksResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaBatchUpdateUserLinksRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaBatchUpdateUserLinksRequest.php
new file mode 100644
index 000000000..bade60186
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaBatchUpdateUserLinksRequest.php
@@ -0,0 +1,41 @@
+requests = $requests;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaUpdateUserLinkRequest[]
+ */
+ public function getRequests()
+ {
+ return $this->requests;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaBatchUpdateUserLinksRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaBatchUpdateUserLinksRequest');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaBatchUpdateUserLinksResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaBatchUpdateUserLinksResponse.php
new file mode 100644
index 000000000..ffef5780b
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaBatchUpdateUserLinksResponse.php
@@ -0,0 +1,41 @@
+userLinks = $userLinks;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaUserLink[]
+ */
+ public function getUserLinks()
+ {
+ return $this->userLinks;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaBatchUpdateUserLinksResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaBatchUpdateUserLinksResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaCancelDisplayVideo360AdvertiserLinkProposalRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaCancelDisplayVideo360AdvertiserLinkProposalRequest.php
new file mode 100644
index 000000000..45a09b2b2
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaCancelDisplayVideo360AdvertiserLinkProposalRequest.php
@@ -0,0 +1,24 @@
+action = $action;
+ }
+ /**
+ * @return string
+ */
+ public function getAction()
+ {
+ return $this->action;
+ }
+ /**
+ * @param string
+ */
+ public function setResource($resource)
+ {
+ $this->resource = $resource;
+ }
+ /**
+ * @return string
+ */
+ public function getResource()
+ {
+ return $this->resource;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaChangeHistoryChangeChangeHistoryResource
+ */
+ public function setResourceAfterChange(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaChangeHistoryChangeChangeHistoryResource $resourceAfterChange)
+ {
+ $this->resourceAfterChange = $resourceAfterChange;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaChangeHistoryChangeChangeHistoryResource
+ */
+ public function getResourceAfterChange()
+ {
+ return $this->resourceAfterChange;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaChangeHistoryChangeChangeHistoryResource
+ */
+ public function setResourceBeforeChange(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaChangeHistoryChangeChangeHistoryResource $resourceBeforeChange)
+ {
+ $this->resourceBeforeChange = $resourceBeforeChange;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaChangeHistoryChangeChangeHistoryResource
+ */
+ public function getResourceBeforeChange()
+ {
+ return $this->resourceBeforeChange;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaChangeHistoryChange::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaChangeHistoryChange');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaChangeHistoryChangeChangeHistoryResource.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaChangeHistoryChangeChangeHistoryResource.php
new file mode 100644
index 000000000..b1aa4122a
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaChangeHistoryChangeChangeHistoryResource.php
@@ -0,0 +1,280 @@
+account = $account;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaAccount
+ */
+ public function getAccount()
+ {
+ return $this->account;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaAttributionSettings
+ */
+ public function setAttributionSettings(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAttributionSettings $attributionSettings)
+ {
+ $this->attributionSettings = $attributionSettings;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaAttributionSettings
+ */
+ public function getAttributionSettings()
+ {
+ return $this->attributionSettings;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaConversionEvent
+ */
+ public function setConversionEvent(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaConversionEvent $conversionEvent)
+ {
+ $this->conversionEvent = $conversionEvent;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaConversionEvent
+ */
+ public function getConversionEvent()
+ {
+ return $this->conversionEvent;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaCustomDimension
+ */
+ public function setCustomDimension(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaCustomDimension $customDimension)
+ {
+ $this->customDimension = $customDimension;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaCustomDimension
+ */
+ public function getCustomDimension()
+ {
+ return $this->customDimension;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaCustomMetric
+ */
+ public function setCustomMetric(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaCustomMetric $customMetric)
+ {
+ $this->customMetric = $customMetric;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaCustomMetric
+ */
+ public function getCustomMetric()
+ {
+ return $this->customMetric;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaDataRetentionSettings
+ */
+ public function setDataRetentionSettings(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDataRetentionSettings $dataRetentionSettings)
+ {
+ $this->dataRetentionSettings = $dataRetentionSettings;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaDataRetentionSettings
+ */
+ public function getDataRetentionSettings()
+ {
+ return $this->dataRetentionSettings;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaDataStream
+ */
+ public function setDataStream(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDataStream $dataStream)
+ {
+ $this->dataStream = $dataStream;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaDataStream
+ */
+ public function getDataStream()
+ {
+ return $this->dataStream;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLink
+ */
+ public function setDisplayVideo360AdvertiserLink(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLink $displayVideo360AdvertiserLink)
+ {
+ $this->displayVideo360AdvertiserLink = $displayVideo360AdvertiserLink;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLink
+ */
+ public function getDisplayVideo360AdvertiserLink()
+ {
+ return $this->displayVideo360AdvertiserLink;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLinkProposal
+ */
+ public function setDisplayVideo360AdvertiserLinkProposal(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLinkProposal $displayVideo360AdvertiserLinkProposal)
+ {
+ $this->displayVideo360AdvertiserLinkProposal = $displayVideo360AdvertiserLinkProposal;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLinkProposal
+ */
+ public function getDisplayVideo360AdvertiserLinkProposal()
+ {
+ return $this->displayVideo360AdvertiserLinkProposal;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaExpandedDataSet
+ */
+ public function setExpandedDataSet(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaExpandedDataSet $expandedDataSet)
+ {
+ $this->expandedDataSet = $expandedDataSet;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaExpandedDataSet
+ */
+ public function getExpandedDataSet()
+ {
+ return $this->expandedDataSet;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaFirebaseLink
+ */
+ public function setFirebaseLink(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaFirebaseLink $firebaseLink)
+ {
+ $this->firebaseLink = $firebaseLink;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaFirebaseLink
+ */
+ public function getFirebaseLink()
+ {
+ return $this->firebaseLink;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaGoogleAdsLink
+ */
+ public function setGoogleAdsLink(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaGoogleAdsLink $googleAdsLink)
+ {
+ $this->googleAdsLink = $googleAdsLink;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaGoogleAdsLink
+ */
+ public function getGoogleAdsLink()
+ {
+ return $this->googleAdsLink;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaGoogleSignalsSettings
+ */
+ public function setGoogleSignalsSettings(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaGoogleSignalsSettings $googleSignalsSettings)
+ {
+ $this->googleSignalsSettings = $googleSignalsSettings;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaGoogleSignalsSettings
+ */
+ public function getGoogleSignalsSettings()
+ {
+ return $this->googleSignalsSettings;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret
+ */
+ public function setMeasurementProtocolSecret(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret $measurementProtocolSecret)
+ {
+ $this->measurementProtocolSecret = $measurementProtocolSecret;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret
+ */
+ public function getMeasurementProtocolSecret()
+ {
+ return $this->measurementProtocolSecret;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaProperty
+ */
+ public function setProperty(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaProperty $property)
+ {
+ $this->property = $property;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaProperty
+ */
+ public function getProperty()
+ {
+ return $this->property;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaSearchAds360Link
+ */
+ public function setSearchAds360Link(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaSearchAds360Link $searchAds360Link)
+ {
+ $this->searchAds360Link = $searchAds360Link;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaSearchAds360Link
+ */
+ public function getSearchAds360Link()
+ {
+ return $this->searchAds360Link;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaChangeHistoryChangeChangeHistoryResource::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaChangeHistoryChangeChangeHistoryResource');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaChangeHistoryEvent.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaChangeHistoryEvent.php
new file mode 100644
index 000000000..78d9cee95
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaChangeHistoryEvent.php
@@ -0,0 +1,131 @@
+actorType = $actorType;
+ }
+ /**
+ * @return string
+ */
+ public function getActorType()
+ {
+ return $this->actorType;
+ }
+ /**
+ * @param string
+ */
+ public function setChangeTime($changeTime)
+ {
+ $this->changeTime = $changeTime;
+ }
+ /**
+ * @return string
+ */
+ public function getChangeTime()
+ {
+ return $this->changeTime;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaChangeHistoryChange[]
+ */
+ public function setChanges($changes)
+ {
+ $this->changes = $changes;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaChangeHistoryChange[]
+ */
+ public function getChanges()
+ {
+ return $this->changes;
+ }
+ /**
+ * @param bool
+ */
+ public function setChangesFiltered($changesFiltered)
+ {
+ $this->changesFiltered = $changesFiltered;
+ }
+ /**
+ * @return bool
+ */
+ public function getChangesFiltered()
+ {
+ return $this->changesFiltered;
+ }
+ /**
+ * @param string
+ */
+ public function setId($id)
+ {
+ $this->id = $id;
+ }
+ /**
+ * @return string
+ */
+ public function getId()
+ {
+ return $this->id;
+ }
+ /**
+ * @param string
+ */
+ public function setUserActorEmail($userActorEmail)
+ {
+ $this->userActorEmail = $userActorEmail;
+ }
+ /**
+ * @return string
+ */
+ public function getUserActorEmail()
+ {
+ return $this->userActorEmail;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaChangeHistoryEvent::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaChangeHistoryEvent');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaConversionEvent.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaConversionEvent.php
new file mode 100644
index 000000000..1467ecf50
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaConversionEvent.php
@@ -0,0 +1,114 @@
+createTime = $createTime;
+ }
+ /**
+ * @return string
+ */
+ public function getCreateTime()
+ {
+ return $this->createTime;
+ }
+ /**
+ * @param bool
+ */
+ public function setCustom($custom)
+ {
+ $this->custom = $custom;
+ }
+ /**
+ * @return bool
+ */
+ public function getCustom()
+ {
+ return $this->custom;
+ }
+ /**
+ * @param bool
+ */
+ public function setDeletable($deletable)
+ {
+ $this->deletable = $deletable;
+ }
+ /**
+ * @return bool
+ */
+ public function getDeletable()
+ {
+ return $this->deletable;
+ }
+ /**
+ * @param string
+ */
+ public function setEventName($eventName)
+ {
+ $this->eventName = $eventName;
+ }
+ /**
+ * @return string
+ */
+ public function getEventName()
+ {
+ return $this->eventName;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaConversionEvent::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaConversionEvent');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaCreateUserLinkRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaCreateUserLinkRequest.php
new file mode 100644
index 000000000..714537cfd
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaCreateUserLinkRequest.php
@@ -0,0 +1,76 @@
+notifyNewUser = $notifyNewUser;
+ }
+ /**
+ * @return bool
+ */
+ public function getNotifyNewUser()
+ {
+ return $this->notifyNewUser;
+ }
+ /**
+ * @param string
+ */
+ public function setParent($parent)
+ {
+ $this->parent = $parent;
+ }
+ /**
+ * @return string
+ */
+ public function getParent()
+ {
+ return $this->parent;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaUserLink
+ */
+ public function setUserLink(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaUserLink $userLink)
+ {
+ $this->userLink = $userLink;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaUserLink
+ */
+ public function getUserLink()
+ {
+ return $this->userLink;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaCreateUserLinkRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaCreateUserLinkRequest');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaCustomDimension.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaCustomDimension.php
new file mode 100644
index 000000000..68298165d
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaCustomDimension.php
@@ -0,0 +1,132 @@
+description = $description;
+ }
+ /**
+ * @return string
+ */
+ public function getDescription()
+ {
+ return $this->description;
+ }
+ /**
+ * @param bool
+ */
+ public function setDisallowAdsPersonalization($disallowAdsPersonalization)
+ {
+ $this->disallowAdsPersonalization = $disallowAdsPersonalization;
+ }
+ /**
+ * @return bool
+ */
+ public function getDisallowAdsPersonalization()
+ {
+ return $this->disallowAdsPersonalization;
+ }
+ /**
+ * @param string
+ */
+ public function setDisplayName($displayName)
+ {
+ $this->displayName = $displayName;
+ }
+ /**
+ * @return string
+ */
+ public function getDisplayName()
+ {
+ return $this->displayName;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param string
+ */
+ public function setParameterName($parameterName)
+ {
+ $this->parameterName = $parameterName;
+ }
+ /**
+ * @return string
+ */
+ public function getParameterName()
+ {
+ return $this->parameterName;
+ }
+ /**
+ * @param string
+ */
+ public function setScope($scope)
+ {
+ $this->scope = $scope;
+ }
+ /**
+ * @return string
+ */
+ public function getScope()
+ {
+ return $this->scope;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaCustomDimension::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaCustomDimension');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaCustomMetric.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaCustomMetric.php
new file mode 100644
index 000000000..97445a9d7
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaCustomMetric.php
@@ -0,0 +1,151 @@
+description = $description;
+ }
+ /**
+ * @return string
+ */
+ public function getDescription()
+ {
+ return $this->description;
+ }
+ /**
+ * @param string
+ */
+ public function setDisplayName($displayName)
+ {
+ $this->displayName = $displayName;
+ }
+ /**
+ * @return string
+ */
+ public function getDisplayName()
+ {
+ return $this->displayName;
+ }
+ /**
+ * @param string
+ */
+ public function setMeasurementUnit($measurementUnit)
+ {
+ $this->measurementUnit = $measurementUnit;
+ }
+ /**
+ * @return string
+ */
+ public function getMeasurementUnit()
+ {
+ return $this->measurementUnit;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param string
+ */
+ public function setParameterName($parameterName)
+ {
+ $this->parameterName = $parameterName;
+ }
+ /**
+ * @return string
+ */
+ public function getParameterName()
+ {
+ return $this->parameterName;
+ }
+ /**
+ * @param string[]
+ */
+ public function setRestrictedMetricType($restrictedMetricType)
+ {
+ $this->restrictedMetricType = $restrictedMetricType;
+ }
+ /**
+ * @return string[]
+ */
+ public function getRestrictedMetricType()
+ {
+ return $this->restrictedMetricType;
+ }
+ /**
+ * @param string
+ */
+ public function setScope($scope)
+ {
+ $this->scope = $scope;
+ }
+ /**
+ * @return string
+ */
+ public function getScope()
+ {
+ return $this->scope;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaCustomMetric::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaCustomMetric');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDataRetentionSettings.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDataRetentionSettings.php
new file mode 100644
index 000000000..9e30733aa
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDataRetentionSettings.php
@@ -0,0 +1,78 @@
+eventDataRetention = $eventDataRetention;
+ }
+ /**
+ * @return string
+ */
+ public function getEventDataRetention()
+ {
+ return $this->eventDataRetention;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param bool
+ */
+ public function setResetUserDataOnNewActivity($resetUserDataOnNewActivity)
+ {
+ $this->resetUserDataOnNewActivity = $resetUserDataOnNewActivity;
+ }
+ /**
+ * @return bool
+ */
+ public function getResetUserDataOnNewActivity()
+ {
+ return $this->resetUserDataOnNewActivity;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDataRetentionSettings::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaDataRetentionSettings');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDataSharingSettings.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDataSharingSettings.php
new file mode 100644
index 000000000..86e231437
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDataSharingSettings.php
@@ -0,0 +1,132 @@
+name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param bool
+ */
+ public function setSharingWithGoogleAnySalesEnabled($sharingWithGoogleAnySalesEnabled)
+ {
+ $this->sharingWithGoogleAnySalesEnabled = $sharingWithGoogleAnySalesEnabled;
+ }
+ /**
+ * @return bool
+ */
+ public function getSharingWithGoogleAnySalesEnabled()
+ {
+ return $this->sharingWithGoogleAnySalesEnabled;
+ }
+ /**
+ * @param bool
+ */
+ public function setSharingWithGoogleAssignedSalesEnabled($sharingWithGoogleAssignedSalesEnabled)
+ {
+ $this->sharingWithGoogleAssignedSalesEnabled = $sharingWithGoogleAssignedSalesEnabled;
+ }
+ /**
+ * @return bool
+ */
+ public function getSharingWithGoogleAssignedSalesEnabled()
+ {
+ return $this->sharingWithGoogleAssignedSalesEnabled;
+ }
+ /**
+ * @param bool
+ */
+ public function setSharingWithGoogleProductsEnabled($sharingWithGoogleProductsEnabled)
+ {
+ $this->sharingWithGoogleProductsEnabled = $sharingWithGoogleProductsEnabled;
+ }
+ /**
+ * @return bool
+ */
+ public function getSharingWithGoogleProductsEnabled()
+ {
+ return $this->sharingWithGoogleProductsEnabled;
+ }
+ /**
+ * @param bool
+ */
+ public function setSharingWithGoogleSupportEnabled($sharingWithGoogleSupportEnabled)
+ {
+ $this->sharingWithGoogleSupportEnabled = $sharingWithGoogleSupportEnabled;
+ }
+ /**
+ * @return bool
+ */
+ public function getSharingWithGoogleSupportEnabled()
+ {
+ return $this->sharingWithGoogleSupportEnabled;
+ }
+ /**
+ * @param bool
+ */
+ public function setSharingWithOthersEnabled($sharingWithOthersEnabled)
+ {
+ $this->sharingWithOthersEnabled = $sharingWithOthersEnabled;
+ }
+ /**
+ * @return bool
+ */
+ public function getSharingWithOthersEnabled()
+ {
+ return $this->sharingWithOthersEnabled;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDataSharingSettings::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaDataSharingSettings');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDataStream.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDataStream.php
new file mode 100644
index 000000000..024229ce6
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDataStream.php
@@ -0,0 +1,162 @@
+androidAppStreamData = $androidAppStreamData;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaDataStreamAndroidAppStreamData
+ */
+ public function getAndroidAppStreamData()
+ {
+ return $this->androidAppStreamData;
+ }
+ /**
+ * @param string
+ */
+ public function setCreateTime($createTime)
+ {
+ $this->createTime = $createTime;
+ }
+ /**
+ * @return string
+ */
+ public function getCreateTime()
+ {
+ return $this->createTime;
+ }
+ /**
+ * @param string
+ */
+ public function setDisplayName($displayName)
+ {
+ $this->displayName = $displayName;
+ }
+ /**
+ * @return string
+ */
+ public function getDisplayName()
+ {
+ return $this->displayName;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaDataStreamIosAppStreamData
+ */
+ public function setIosAppStreamData(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDataStreamIosAppStreamData $iosAppStreamData)
+ {
+ $this->iosAppStreamData = $iosAppStreamData;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaDataStreamIosAppStreamData
+ */
+ public function getIosAppStreamData()
+ {
+ return $this->iosAppStreamData;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param string
+ */
+ public function setType($type)
+ {
+ $this->type = $type;
+ }
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+ /**
+ * @param string
+ */
+ public function setUpdateTime($updateTime)
+ {
+ $this->updateTime = $updateTime;
+ }
+ /**
+ * @return string
+ */
+ public function getUpdateTime()
+ {
+ return $this->updateTime;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaDataStreamWebStreamData
+ */
+ public function setWebStreamData(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDataStreamWebStreamData $webStreamData)
+ {
+ $this->webStreamData = $webStreamData;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaDataStreamWebStreamData
+ */
+ public function getWebStreamData()
+ {
+ return $this->webStreamData;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDataStream::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaDataStream');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDataStreamAndroidAppStreamData.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDataStreamAndroidAppStreamData.php
new file mode 100644
index 000000000..38bcdfbcc
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDataStreamAndroidAppStreamData.php
@@ -0,0 +1,60 @@
+firebaseAppId = $firebaseAppId;
+ }
+ /**
+ * @return string
+ */
+ public function getFirebaseAppId()
+ {
+ return $this->firebaseAppId;
+ }
+ /**
+ * @param string
+ */
+ public function setPackageName($packageName)
+ {
+ $this->packageName = $packageName;
+ }
+ /**
+ * @return string
+ */
+ public function getPackageName()
+ {
+ return $this->packageName;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDataStreamAndroidAppStreamData::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaDataStreamAndroidAppStreamData');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDataStreamIosAppStreamData.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDataStreamIosAppStreamData.php
new file mode 100644
index 000000000..33262a1d6
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDataStreamIosAppStreamData.php
@@ -0,0 +1,60 @@
+bundleId = $bundleId;
+ }
+ /**
+ * @return string
+ */
+ public function getBundleId()
+ {
+ return $this->bundleId;
+ }
+ /**
+ * @param string
+ */
+ public function setFirebaseAppId($firebaseAppId)
+ {
+ $this->firebaseAppId = $firebaseAppId;
+ }
+ /**
+ * @return string
+ */
+ public function getFirebaseAppId()
+ {
+ return $this->firebaseAppId;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDataStreamIosAppStreamData::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaDataStreamIosAppStreamData');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDataStreamWebStreamData.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDataStreamWebStreamData.php
new file mode 100644
index 000000000..3a7884399
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDataStreamWebStreamData.php
@@ -0,0 +1,78 @@
+defaultUri = $defaultUri;
+ }
+ /**
+ * @return string
+ */
+ public function getDefaultUri()
+ {
+ return $this->defaultUri;
+ }
+ /**
+ * @param string
+ */
+ public function setFirebaseAppId($firebaseAppId)
+ {
+ $this->firebaseAppId = $firebaseAppId;
+ }
+ /**
+ * @return string
+ */
+ public function getFirebaseAppId()
+ {
+ return $this->firebaseAppId;
+ }
+ /**
+ * @param string
+ */
+ public function setMeasurementId($measurementId)
+ {
+ $this->measurementId = $measurementId;
+ }
+ /**
+ * @return string
+ */
+ public function getMeasurementId()
+ {
+ return $this->measurementId;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDataStreamWebStreamData::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaDataStreamWebStreamData');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDeleteUserLinkRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDeleteUserLinkRequest.php
new file mode 100644
index 000000000..7ab1d5d66
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDeleteUserLinkRequest.php
@@ -0,0 +1,42 @@
+name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDeleteUserLinkRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaDeleteUserLinkRequest');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLink.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLink.php
new file mode 100644
index 000000000..66d3a4b2a
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLink.php
@@ -0,0 +1,132 @@
+adsPersonalizationEnabled = $adsPersonalizationEnabled;
+ }
+ /**
+ * @return bool
+ */
+ public function getAdsPersonalizationEnabled()
+ {
+ return $this->adsPersonalizationEnabled;
+ }
+ /**
+ * @param string
+ */
+ public function setAdvertiserDisplayName($advertiserDisplayName)
+ {
+ $this->advertiserDisplayName = $advertiserDisplayName;
+ }
+ /**
+ * @return string
+ */
+ public function getAdvertiserDisplayName()
+ {
+ return $this->advertiserDisplayName;
+ }
+ /**
+ * @param string
+ */
+ public function setAdvertiserId($advertiserId)
+ {
+ $this->advertiserId = $advertiserId;
+ }
+ /**
+ * @return string
+ */
+ public function getAdvertiserId()
+ {
+ return $this->advertiserId;
+ }
+ /**
+ * @param bool
+ */
+ public function setCampaignDataSharingEnabled($campaignDataSharingEnabled)
+ {
+ $this->campaignDataSharingEnabled = $campaignDataSharingEnabled;
+ }
+ /**
+ * @return bool
+ */
+ public function getCampaignDataSharingEnabled()
+ {
+ return $this->campaignDataSharingEnabled;
+ }
+ /**
+ * @param bool
+ */
+ public function setCostDataSharingEnabled($costDataSharingEnabled)
+ {
+ $this->costDataSharingEnabled = $costDataSharingEnabled;
+ }
+ /**
+ * @return bool
+ */
+ public function getCostDataSharingEnabled()
+ {
+ return $this->costDataSharingEnabled;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLink::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLink');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLinkProposal.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLinkProposal.php
new file mode 100644
index 000000000..adf60955f
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLinkProposal.php
@@ -0,0 +1,166 @@
+adsPersonalizationEnabled = $adsPersonalizationEnabled;
+ }
+ /**
+ * @return bool
+ */
+ public function getAdsPersonalizationEnabled()
+ {
+ return $this->adsPersonalizationEnabled;
+ }
+ /**
+ * @param string
+ */
+ public function setAdvertiserDisplayName($advertiserDisplayName)
+ {
+ $this->advertiserDisplayName = $advertiserDisplayName;
+ }
+ /**
+ * @return string
+ */
+ public function getAdvertiserDisplayName()
+ {
+ return $this->advertiserDisplayName;
+ }
+ /**
+ * @param string
+ */
+ public function setAdvertiserId($advertiserId)
+ {
+ $this->advertiserId = $advertiserId;
+ }
+ /**
+ * @return string
+ */
+ public function getAdvertiserId()
+ {
+ return $this->advertiserId;
+ }
+ /**
+ * @param bool
+ */
+ public function setCampaignDataSharingEnabled($campaignDataSharingEnabled)
+ {
+ $this->campaignDataSharingEnabled = $campaignDataSharingEnabled;
+ }
+ /**
+ * @return bool
+ */
+ public function getCampaignDataSharingEnabled()
+ {
+ return $this->campaignDataSharingEnabled;
+ }
+ /**
+ * @param bool
+ */
+ public function setCostDataSharingEnabled($costDataSharingEnabled)
+ {
+ $this->costDataSharingEnabled = $costDataSharingEnabled;
+ }
+ /**
+ * @return bool
+ */
+ public function getCostDataSharingEnabled()
+ {
+ return $this->costDataSharingEnabled;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaLinkProposalStatusDetails
+ */
+ public function setLinkProposalStatusDetails(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaLinkProposalStatusDetails $linkProposalStatusDetails)
+ {
+ $this->linkProposalStatusDetails = $linkProposalStatusDetails;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaLinkProposalStatusDetails
+ */
+ public function getLinkProposalStatusDetails()
+ {
+ return $this->linkProposalStatusDetails;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param string
+ */
+ public function setValidationEmail($validationEmail)
+ {
+ $this->validationEmail = $validationEmail;
+ }
+ /**
+ * @return string
+ */
+ public function getValidationEmail()
+ {
+ return $this->validationEmail;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLinkProposal::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLinkProposal');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaEnhancedMeasurementSettings.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaEnhancedMeasurementSettings.php
new file mode 100644
index 000000000..7a3d368fd
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaEnhancedMeasurementSettings.php
@@ -0,0 +1,132 @@
+fileDownloadsEnabled = $fileDownloadsEnabled;
+ }
+ public function getFileDownloadsEnabled()
+ {
+ return $this->fileDownloadsEnabled;
+ }
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ public function getName()
+ {
+ return $this->name;
+ }
+ public function setOutboundClicksEnabled($outboundClicksEnabled)
+ {
+ $this->outboundClicksEnabled = $outboundClicksEnabled;
+ }
+ public function getOutboundClicksEnabled()
+ {
+ return $this->outboundClicksEnabled;
+ }
+ public function setPageChangesEnabled($pageChangesEnabled)
+ {
+ $this->pageChangesEnabled = $pageChangesEnabled;
+ }
+ public function getPageChangesEnabled()
+ {
+ return $this->pageChangesEnabled;
+ }
+ public function setPageLoadsEnabled($pageLoadsEnabled)
+ {
+ $this->pageLoadsEnabled = $pageLoadsEnabled;
+ }
+ public function getPageLoadsEnabled()
+ {
+ return $this->pageLoadsEnabled;
+ }
+ public function setPageViewsEnabled($pageViewsEnabled)
+ {
+ $this->pageViewsEnabled = $pageViewsEnabled;
+ }
+ public function getPageViewsEnabled()
+ {
+ return $this->pageViewsEnabled;
+ }
+ public function setScrollsEnabled($scrollsEnabled)
+ {
+ $this->scrollsEnabled = $scrollsEnabled;
+ }
+ public function getScrollsEnabled()
+ {
+ return $this->scrollsEnabled;
+ }
+ public function setSearchQueryParameter($searchQueryParameter)
+ {
+ $this->searchQueryParameter = $searchQueryParameter;
+ }
+ public function getSearchQueryParameter()
+ {
+ return $this->searchQueryParameter;
+ }
+ public function setSiteSearchEnabled($siteSearchEnabled)
+ {
+ $this->siteSearchEnabled = $siteSearchEnabled;
+ }
+ public function getSiteSearchEnabled()
+ {
+ return $this->siteSearchEnabled;
+ }
+ public function setStreamEnabled($streamEnabled)
+ {
+ $this->streamEnabled = $streamEnabled;
+ }
+ public function getStreamEnabled()
+ {
+ return $this->streamEnabled;
+ }
+ public function setUriQueryParameter($uriQueryParameter)
+ {
+ $this->uriQueryParameter = $uriQueryParameter;
+ }
+ public function getUriQueryParameter()
+ {
+ return $this->uriQueryParameter;
+ }
+ public function setVideoEngagementEnabled($videoEngagementEnabled)
+ {
+ $this->videoEngagementEnabled = $videoEngagementEnabled;
+ }
+ public function getVideoEngagementEnabled()
+ {
+ return $this->videoEngagementEnabled;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaEnhancedMeasurementSettings::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaEnhancedMeasurementSettings');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaExpandedDataSet.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaExpandedDataSet.php
new file mode 100644
index 000000000..a2688ca1e
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaExpandedDataSet.php
@@ -0,0 +1,149 @@
+dataCollectionStartTime = $dataCollectionStartTime;
+ }
+ /**
+ * @return string
+ */
+ public function getDataCollectionStartTime()
+ {
+ return $this->dataCollectionStartTime;
+ }
+ /**
+ * @param string
+ */
+ public function setDescription($description)
+ {
+ $this->description = $description;
+ }
+ /**
+ * @return string
+ */
+ public function getDescription()
+ {
+ return $this->description;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpression
+ */
+ public function setDimensionFilterExpression(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpression $dimensionFilterExpression)
+ {
+ $this->dimensionFilterExpression = $dimensionFilterExpression;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpression
+ */
+ public function getDimensionFilterExpression()
+ {
+ return $this->dimensionFilterExpression;
+ }
+ /**
+ * @param string[]
+ */
+ public function setDimensionNames($dimensionNames)
+ {
+ $this->dimensionNames = $dimensionNames;
+ }
+ /**
+ * @return string[]
+ */
+ public function getDimensionNames()
+ {
+ return $this->dimensionNames;
+ }
+ /**
+ * @param string
+ */
+ public function setDisplayName($displayName)
+ {
+ $this->displayName = $displayName;
+ }
+ /**
+ * @return string
+ */
+ public function getDisplayName()
+ {
+ return $this->displayName;
+ }
+ /**
+ * @param string[]
+ */
+ public function setMetricNames($metricNames)
+ {
+ $this->metricNames = $metricNames;
+ }
+ /**
+ * @return string[]
+ */
+ public function getMetricNames()
+ {
+ return $this->metricNames;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaExpandedDataSet::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaExpandedDataSet');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaExpandedDataSetFilter.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaExpandedDataSetFilter.php
new file mode 100644
index 000000000..e71fa3095
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaExpandedDataSetFilter.php
@@ -0,0 +1,74 @@
+fieldName = $fieldName;
+ }
+ /**
+ * @return string
+ */
+ public function getFieldName()
+ {
+ return $this->fieldName;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaExpandedDataSetFilterInListFilter
+ */
+ public function setInListFilter(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaExpandedDataSetFilterInListFilter $inListFilter)
+ {
+ $this->inListFilter = $inListFilter;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaExpandedDataSetFilterInListFilter
+ */
+ public function getInListFilter()
+ {
+ return $this->inListFilter;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaExpandedDataSetFilterStringFilter
+ */
+ public function setStringFilter(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaExpandedDataSetFilterStringFilter $stringFilter)
+ {
+ $this->stringFilter = $stringFilter;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaExpandedDataSetFilterStringFilter
+ */
+ public function getStringFilter()
+ {
+ return $this->stringFilter;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaExpandedDataSetFilter::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaExpandedDataSetFilter');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpression.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpression.php
new file mode 100644
index 000000000..62820861e
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpression.php
@@ -0,0 +1,72 @@
+andGroup = $andGroup;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpressionList
+ */
+ public function getAndGroup()
+ {
+ return $this->andGroup;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaExpandedDataSetFilter
+ */
+ public function setFilter(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaExpandedDataSetFilter $filter)
+ {
+ $this->filter = $filter;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaExpandedDataSetFilter
+ */
+ public function getFilter()
+ {
+ return $this->filter;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpression
+ */
+ public function setNotExpression(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpression $notExpression)
+ {
+ $this->notExpression = $notExpression;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpression
+ */
+ public function getNotExpression()
+ {
+ return $this->notExpression;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpression::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpression');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpressionList.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpressionList.php
new file mode 100644
index 000000000..743fd95a0
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpressionList.php
@@ -0,0 +1,41 @@
+filterExpressions = $filterExpressions;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpression[]
+ */
+ public function getFilterExpressions()
+ {
+ return $this->filterExpressions;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpressionList::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpressionList');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaExpandedDataSetFilterInListFilter.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaExpandedDataSetFilterInListFilter.php
new file mode 100644
index 000000000..7a761ca47
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaExpandedDataSetFilterInListFilter.php
@@ -0,0 +1,61 @@
+caseSensitive = $caseSensitive;
+ }
+ /**
+ * @return bool
+ */
+ public function getCaseSensitive()
+ {
+ return $this->caseSensitive;
+ }
+ /**
+ * @param string[]
+ */
+ public function setValues($values)
+ {
+ $this->values = $values;
+ }
+ /**
+ * @return string[]
+ */
+ public function getValues()
+ {
+ return $this->values;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaExpandedDataSetFilterInListFilter::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaExpandedDataSetFilterInListFilter');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaExpandedDataSetFilterStringFilter.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaExpandedDataSetFilterStringFilter.php
new file mode 100644
index 000000000..5e80fd3a3
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaExpandedDataSetFilterStringFilter.php
@@ -0,0 +1,78 @@
+caseSensitive = $caseSensitive;
+ }
+ /**
+ * @return bool
+ */
+ public function getCaseSensitive()
+ {
+ return $this->caseSensitive;
+ }
+ /**
+ * @param string
+ */
+ public function setMatchType($matchType)
+ {
+ $this->matchType = $matchType;
+ }
+ /**
+ * @return string
+ */
+ public function getMatchType()
+ {
+ return $this->matchType;
+ }
+ /**
+ * @param string
+ */
+ public function setValue($value)
+ {
+ $this->value = $value;
+ }
+ /**
+ * @return string
+ */
+ public function getValue()
+ {
+ return $this->value;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaExpandedDataSetFilterStringFilter::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaExpandedDataSetFilterStringFilter');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaFirebaseLink.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaFirebaseLink.php
new file mode 100644
index 000000000..e58a1719a
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaFirebaseLink.php
@@ -0,0 +1,78 @@
+createTime = $createTime;
+ }
+ /**
+ * @return string
+ */
+ public function getCreateTime()
+ {
+ return $this->createTime;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param string
+ */
+ public function setProject($project)
+ {
+ $this->project = $project;
+ }
+ /**
+ * @return string
+ */
+ public function getProject()
+ {
+ return $this->project;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaFirebaseLink::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaFirebaseLink');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaGlobalSiteTag.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaGlobalSiteTag.php
new file mode 100644
index 000000000..e48af48c6
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaGlobalSiteTag.php
@@ -0,0 +1,60 @@
+name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param string
+ */
+ public function setSnippet($snippet)
+ {
+ $this->snippet = $snippet;
+ }
+ /**
+ * @return string
+ */
+ public function getSnippet()
+ {
+ return $this->snippet;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaGlobalSiteTag::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaGlobalSiteTag');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaGoogleAdsLink.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaGoogleAdsLink.php
new file mode 100644
index 000000000..8c4a86644
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaGoogleAdsLink.php
@@ -0,0 +1,150 @@
+adsPersonalizationEnabled = $adsPersonalizationEnabled;
+ }
+ /**
+ * @return bool
+ */
+ public function getAdsPersonalizationEnabled()
+ {
+ return $this->adsPersonalizationEnabled;
+ }
+ /**
+ * @param bool
+ */
+ public function setCanManageClients($canManageClients)
+ {
+ $this->canManageClients = $canManageClients;
+ }
+ /**
+ * @return bool
+ */
+ public function getCanManageClients()
+ {
+ return $this->canManageClients;
+ }
+ /**
+ * @param string
+ */
+ public function setCreateTime($createTime)
+ {
+ $this->createTime = $createTime;
+ }
+ /**
+ * @return string
+ */
+ public function getCreateTime()
+ {
+ return $this->createTime;
+ }
+ /**
+ * @param string
+ */
+ public function setCreatorEmailAddress($creatorEmailAddress)
+ {
+ $this->creatorEmailAddress = $creatorEmailAddress;
+ }
+ /**
+ * @return string
+ */
+ public function getCreatorEmailAddress()
+ {
+ return $this->creatorEmailAddress;
+ }
+ /**
+ * @param string
+ */
+ public function setCustomerId($customerId)
+ {
+ $this->customerId = $customerId;
+ }
+ /**
+ * @return string
+ */
+ public function getCustomerId()
+ {
+ return $this->customerId;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param string
+ */
+ public function setUpdateTime($updateTime)
+ {
+ $this->updateTime = $updateTime;
+ }
+ /**
+ * @return string
+ */
+ public function getUpdateTime()
+ {
+ return $this->updateTime;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaGoogleAdsLink::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaGoogleAdsLink');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaGoogleSignalsSettings.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaGoogleSignalsSettings.php
new file mode 100644
index 000000000..393e6a11e
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaGoogleSignalsSettings.php
@@ -0,0 +1,78 @@
+consent = $consent;
+ }
+ /**
+ * @return string
+ */
+ public function getConsent()
+ {
+ return $this->consent;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param string
+ */
+ public function setState($state)
+ {
+ $this->state = $state;
+ }
+ /**
+ * @return string
+ */
+ public function getState()
+ {
+ return $this->state;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaGoogleSignalsSettings::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaGoogleSignalsSettings');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaIosAppDataStream.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaIosAppDataStream.php
new file mode 100644
index 000000000..5a0c9cae6
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaIosAppDataStream.php
@@ -0,0 +1,132 @@
+bundleId = $bundleId;
+ }
+ /**
+ * @return string
+ */
+ public function getBundleId()
+ {
+ return $this->bundleId;
+ }
+ /**
+ * @param string
+ */
+ public function setCreateTime($createTime)
+ {
+ $this->createTime = $createTime;
+ }
+ /**
+ * @return string
+ */
+ public function getCreateTime()
+ {
+ return $this->createTime;
+ }
+ /**
+ * @param string
+ */
+ public function setDisplayName($displayName)
+ {
+ $this->displayName = $displayName;
+ }
+ /**
+ * @return string
+ */
+ public function getDisplayName()
+ {
+ return $this->displayName;
+ }
+ /**
+ * @param string
+ */
+ public function setFirebaseAppId($firebaseAppId)
+ {
+ $this->firebaseAppId = $firebaseAppId;
+ }
+ /**
+ * @return string
+ */
+ public function getFirebaseAppId()
+ {
+ return $this->firebaseAppId;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param string
+ */
+ public function setUpdateTime($updateTime)
+ {
+ $this->updateTime = $updateTime;
+ }
+ /**
+ * @return string
+ */
+ public function getUpdateTime()
+ {
+ return $this->updateTime;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaIosAppDataStream::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaIosAppDataStream');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaLinkProposalStatusDetails.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaLinkProposalStatusDetails.php
new file mode 100644
index 000000000..71b598042
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaLinkProposalStatusDetails.php
@@ -0,0 +1,78 @@
+linkProposalInitiatingProduct = $linkProposalInitiatingProduct;
+ }
+ /**
+ * @return string
+ */
+ public function getLinkProposalInitiatingProduct()
+ {
+ return $this->linkProposalInitiatingProduct;
+ }
+ /**
+ * @param string
+ */
+ public function setLinkProposalState($linkProposalState)
+ {
+ $this->linkProposalState = $linkProposalState;
+ }
+ /**
+ * @return string
+ */
+ public function getLinkProposalState()
+ {
+ return $this->linkProposalState;
+ }
+ /**
+ * @param string
+ */
+ public function setRequestorEmail($requestorEmail)
+ {
+ $this->requestorEmail = $requestorEmail;
+ }
+ /**
+ * @return string
+ */
+ public function getRequestorEmail()
+ {
+ return $this->requestorEmail;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaLinkProposalStatusDetails::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaLinkProposalStatusDetails');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListAccountSummariesResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListAccountSummariesResponse.php
new file mode 100644
index 000000000..2468c428a
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListAccountSummariesResponse.php
@@ -0,0 +1,59 @@
+accountSummaries = $accountSummaries;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaAccountSummary[]
+ */
+ public function getAccountSummaries()
+ {
+ return $this->accountSummaries;
+ }
+ /**
+ * @param string
+ */
+ public function setNextPageToken($nextPageToken)
+ {
+ $this->nextPageToken = $nextPageToken;
+ }
+ /**
+ * @return string
+ */
+ public function getNextPageToken()
+ {
+ return $this->nextPageToken;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListAccountSummariesResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaListAccountSummariesResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListAccountsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListAccountsResponse.php
new file mode 100644
index 000000000..1c1ba9978
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListAccountsResponse.php
@@ -0,0 +1,59 @@
+accounts = $accounts;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaAccount[]
+ */
+ public function getAccounts()
+ {
+ return $this->accounts;
+ }
+ /**
+ * @param string
+ */
+ public function setNextPageToken($nextPageToken)
+ {
+ $this->nextPageToken = $nextPageToken;
+ }
+ /**
+ * @return string
+ */
+ public function getNextPageToken()
+ {
+ return $this->nextPageToken;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListAccountsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaListAccountsResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListAndroidAppDataStreamsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListAndroidAppDataStreamsResponse.php
new file mode 100644
index 000000000..15444cb8b
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListAndroidAppDataStreamsResponse.php
@@ -0,0 +1,59 @@
+androidAppDataStreams = $androidAppDataStreams;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaAndroidAppDataStream[]
+ */
+ public function getAndroidAppDataStreams()
+ {
+ return $this->androidAppDataStreams;
+ }
+ /**
+ * @param string
+ */
+ public function setNextPageToken($nextPageToken)
+ {
+ $this->nextPageToken = $nextPageToken;
+ }
+ /**
+ * @return string
+ */
+ public function getNextPageToken()
+ {
+ return $this->nextPageToken;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListAndroidAppDataStreamsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaListAndroidAppDataStreamsResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListAudiencesResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListAudiencesResponse.php
new file mode 100644
index 000000000..64d4b8a0d
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListAudiencesResponse.php
@@ -0,0 +1,59 @@
+audiences = $audiences;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaAudience[]
+ */
+ public function getAudiences()
+ {
+ return $this->audiences;
+ }
+ /**
+ * @param string
+ */
+ public function setNextPageToken($nextPageToken)
+ {
+ $this->nextPageToken = $nextPageToken;
+ }
+ /**
+ * @return string
+ */
+ public function getNextPageToken()
+ {
+ return $this->nextPageToken;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListAudiencesResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaListAudiencesResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListConversionEventsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListConversionEventsResponse.php
new file mode 100644
index 000000000..a7fd982d6
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListConversionEventsResponse.php
@@ -0,0 +1,59 @@
+conversionEvents = $conversionEvents;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaConversionEvent[]
+ */
+ public function getConversionEvents()
+ {
+ return $this->conversionEvents;
+ }
+ /**
+ * @param string
+ */
+ public function setNextPageToken($nextPageToken)
+ {
+ $this->nextPageToken = $nextPageToken;
+ }
+ /**
+ * @return string
+ */
+ public function getNextPageToken()
+ {
+ return $this->nextPageToken;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListConversionEventsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaListConversionEventsResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListCustomDimensionsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListCustomDimensionsResponse.php
new file mode 100644
index 000000000..7fc5b08df
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListCustomDimensionsResponse.php
@@ -0,0 +1,59 @@
+customDimensions = $customDimensions;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaCustomDimension[]
+ */
+ public function getCustomDimensions()
+ {
+ return $this->customDimensions;
+ }
+ /**
+ * @param string
+ */
+ public function setNextPageToken($nextPageToken)
+ {
+ $this->nextPageToken = $nextPageToken;
+ }
+ /**
+ * @return string
+ */
+ public function getNextPageToken()
+ {
+ return $this->nextPageToken;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListCustomDimensionsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaListCustomDimensionsResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListCustomMetricsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListCustomMetricsResponse.php
new file mode 100644
index 000000000..99c4bec12
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListCustomMetricsResponse.php
@@ -0,0 +1,59 @@
+customMetrics = $customMetrics;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaCustomMetric[]
+ */
+ public function getCustomMetrics()
+ {
+ return $this->customMetrics;
+ }
+ /**
+ * @param string
+ */
+ public function setNextPageToken($nextPageToken)
+ {
+ $this->nextPageToken = $nextPageToken;
+ }
+ /**
+ * @return string
+ */
+ public function getNextPageToken()
+ {
+ return $this->nextPageToken;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListCustomMetricsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaListCustomMetricsResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListDataStreamsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListDataStreamsResponse.php
new file mode 100644
index 000000000..956d75412
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListDataStreamsResponse.php
@@ -0,0 +1,59 @@
+dataStreams = $dataStreams;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaDataStream[]
+ */
+ public function getDataStreams()
+ {
+ return $this->dataStreams;
+ }
+ /**
+ * @param string
+ */
+ public function setNextPageToken($nextPageToken)
+ {
+ $this->nextPageToken = $nextPageToken;
+ }
+ /**
+ * @return string
+ */
+ public function getNextPageToken()
+ {
+ return $this->nextPageToken;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListDataStreamsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaListDataStreamsResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListDisplayVideo360AdvertiserLinkProposalsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListDisplayVideo360AdvertiserLinkProposalsResponse.php
new file mode 100644
index 000000000..3f39b02f7
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListDisplayVideo360AdvertiserLinkProposalsResponse.php
@@ -0,0 +1,59 @@
+displayVideo360AdvertiserLinkProposals = $displayVideo360AdvertiserLinkProposals;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLinkProposal[]
+ */
+ public function getDisplayVideo360AdvertiserLinkProposals()
+ {
+ return $this->displayVideo360AdvertiserLinkProposals;
+ }
+ /**
+ * @param string
+ */
+ public function setNextPageToken($nextPageToken)
+ {
+ $this->nextPageToken = $nextPageToken;
+ }
+ /**
+ * @return string
+ */
+ public function getNextPageToken()
+ {
+ return $this->nextPageToken;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListDisplayVideo360AdvertiserLinkProposalsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaListDisplayVideo360AdvertiserLinkProposalsResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListDisplayVideo360AdvertiserLinksResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListDisplayVideo360AdvertiserLinksResponse.php
new file mode 100644
index 000000000..8cdf5fcf7
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListDisplayVideo360AdvertiserLinksResponse.php
@@ -0,0 +1,59 @@
+displayVideo360AdvertiserLinks = $displayVideo360AdvertiserLinks;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLink[]
+ */
+ public function getDisplayVideo360AdvertiserLinks()
+ {
+ return $this->displayVideo360AdvertiserLinks;
+ }
+ /**
+ * @param string
+ */
+ public function setNextPageToken($nextPageToken)
+ {
+ $this->nextPageToken = $nextPageToken;
+ }
+ /**
+ * @return string
+ */
+ public function getNextPageToken()
+ {
+ return $this->nextPageToken;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListDisplayVideo360AdvertiserLinksResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaListDisplayVideo360AdvertiserLinksResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListFirebaseLinksResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListFirebaseLinksResponse.php
new file mode 100644
index 000000000..a52c9fafa
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListFirebaseLinksResponse.php
@@ -0,0 +1,59 @@
+firebaseLinks = $firebaseLinks;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaFirebaseLink[]
+ */
+ public function getFirebaseLinks()
+ {
+ return $this->firebaseLinks;
+ }
+ /**
+ * @param string
+ */
+ public function setNextPageToken($nextPageToken)
+ {
+ $this->nextPageToken = $nextPageToken;
+ }
+ /**
+ * @return string
+ */
+ public function getNextPageToken()
+ {
+ return $this->nextPageToken;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListFirebaseLinksResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaListFirebaseLinksResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListGoogleAdsLinksResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListGoogleAdsLinksResponse.php
new file mode 100644
index 000000000..873513162
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListGoogleAdsLinksResponse.php
@@ -0,0 +1,59 @@
+googleAdsLinks = $googleAdsLinks;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaGoogleAdsLink[]
+ */
+ public function getGoogleAdsLinks()
+ {
+ return $this->googleAdsLinks;
+ }
+ /**
+ * @param string
+ */
+ public function setNextPageToken($nextPageToken)
+ {
+ $this->nextPageToken = $nextPageToken;
+ }
+ /**
+ * @return string
+ */
+ public function getNextPageToken()
+ {
+ return $this->nextPageToken;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListGoogleAdsLinksResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaListGoogleAdsLinksResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListIosAppDataStreamsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListIosAppDataStreamsResponse.php
new file mode 100644
index 000000000..55d4e4796
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListIosAppDataStreamsResponse.php
@@ -0,0 +1,59 @@
+iosAppDataStreams = $iosAppDataStreams;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaIosAppDataStream[]
+ */
+ public function getIosAppDataStreams()
+ {
+ return $this->iosAppDataStreams;
+ }
+ /**
+ * @param string
+ */
+ public function setNextPageToken($nextPageToken)
+ {
+ $this->nextPageToken = $nextPageToken;
+ }
+ /**
+ * @return string
+ */
+ public function getNextPageToken()
+ {
+ return $this->nextPageToken;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListIosAppDataStreamsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaListIosAppDataStreamsResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListMeasurementProtocolSecretsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListMeasurementProtocolSecretsResponse.php
new file mode 100644
index 000000000..bf02f2c68
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListMeasurementProtocolSecretsResponse.php
@@ -0,0 +1,59 @@
+measurementProtocolSecrets = $measurementProtocolSecrets;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret[]
+ */
+ public function getMeasurementProtocolSecrets()
+ {
+ return $this->measurementProtocolSecrets;
+ }
+ /**
+ * @param string
+ */
+ public function setNextPageToken($nextPageToken)
+ {
+ $this->nextPageToken = $nextPageToken;
+ }
+ /**
+ * @return string
+ */
+ public function getNextPageToken()
+ {
+ return $this->nextPageToken;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListMeasurementProtocolSecretsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaListMeasurementProtocolSecretsResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListPropertiesResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListPropertiesResponse.php
new file mode 100644
index 000000000..769abc00e
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListPropertiesResponse.php
@@ -0,0 +1,59 @@
+nextPageToken = $nextPageToken;
+ }
+ /**
+ * @return string
+ */
+ public function getNextPageToken()
+ {
+ return $this->nextPageToken;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaProperty[]
+ */
+ public function setProperties($properties)
+ {
+ $this->properties = $properties;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaProperty[]
+ */
+ public function getProperties()
+ {
+ return $this->properties;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListPropertiesResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaListPropertiesResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListSearchAds360LinksResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListSearchAds360LinksResponse.php
new file mode 100644
index 000000000..4b4a1c22d
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListSearchAds360LinksResponse.php
@@ -0,0 +1,59 @@
+nextPageToken = $nextPageToken;
+ }
+ /**
+ * @return string
+ */
+ public function getNextPageToken()
+ {
+ return $this->nextPageToken;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaSearchAds360Link[]
+ */
+ public function setSearchAds360Links($searchAds360Links)
+ {
+ $this->searchAds360Links = $searchAds360Links;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaSearchAds360Link[]
+ */
+ public function getSearchAds360Links()
+ {
+ return $this->searchAds360Links;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListSearchAds360LinksResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaListSearchAds360LinksResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListUserLinksResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListUserLinksResponse.php
new file mode 100644
index 000000000..6200d3ac6
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListUserLinksResponse.php
@@ -0,0 +1,59 @@
+nextPageToken = $nextPageToken;
+ }
+ /**
+ * @return string
+ */
+ public function getNextPageToken()
+ {
+ return $this->nextPageToken;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaUserLink[]
+ */
+ public function setUserLinks($userLinks)
+ {
+ $this->userLinks = $userLinks;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaUserLink[]
+ */
+ public function getUserLinks()
+ {
+ return $this->userLinks;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListUserLinksResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaListUserLinksResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListWebDataStreamsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListWebDataStreamsResponse.php
new file mode 100644
index 000000000..2939bd67c
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaListWebDataStreamsResponse.php
@@ -0,0 +1,59 @@
+nextPageToken = $nextPageToken;
+ }
+ /**
+ * @return string
+ */
+ public function getNextPageToken()
+ {
+ return $this->nextPageToken;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaWebDataStream[]
+ */
+ public function setWebDataStreams($webDataStreams)
+ {
+ $this->webDataStreams = $webDataStreams;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaWebDataStream[]
+ */
+ public function getWebDataStreams()
+ {
+ return $this->webDataStreams;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListWebDataStreamsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaListWebDataStreamsResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret.php
new file mode 100644
index 000000000..291b52673
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret.php
@@ -0,0 +1,78 @@
+displayName = $displayName;
+ }
+ /**
+ * @return string
+ */
+ public function getDisplayName()
+ {
+ return $this->displayName;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param string
+ */
+ public function setSecretValue($secretValue)
+ {
+ $this->secretValue = $secretValue;
+ }
+ /**
+ * @return string
+ */
+ public function getSecretValue()
+ {
+ return $this->secretValue;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaNumericValue.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaNumericValue.php
new file mode 100644
index 000000000..b579a02ad
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaNumericValue.php
@@ -0,0 +1,51 @@
+doubleValue = $doubleValue;
+ }
+ public function getDoubleValue()
+ {
+ return $this->doubleValue;
+ }
+ /**
+ * @param string
+ */
+ public function setInt64Value($int64Value)
+ {
+ $this->int64Value = $int64Value;
+ }
+ /**
+ * @return string
+ */
+ public function getInt64Value()
+ {
+ return $this->int64Value;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaNumericValue::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaNumericValue');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaProperty.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaProperty.php
new file mode 100644
index 000000000..b9599fdc1
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaProperty.php
@@ -0,0 +1,258 @@
+account = $account;
+ }
+ /**
+ * @return string
+ */
+ public function getAccount()
+ {
+ return $this->account;
+ }
+ /**
+ * @param string
+ */
+ public function setCreateTime($createTime)
+ {
+ $this->createTime = $createTime;
+ }
+ /**
+ * @return string
+ */
+ public function getCreateTime()
+ {
+ return $this->createTime;
+ }
+ /**
+ * @param string
+ */
+ public function setCurrencyCode($currencyCode)
+ {
+ $this->currencyCode = $currencyCode;
+ }
+ /**
+ * @return string
+ */
+ public function getCurrencyCode()
+ {
+ return $this->currencyCode;
+ }
+ /**
+ * @param string
+ */
+ public function setDeleteTime($deleteTime)
+ {
+ $this->deleteTime = $deleteTime;
+ }
+ /**
+ * @return string
+ */
+ public function getDeleteTime()
+ {
+ return $this->deleteTime;
+ }
+ /**
+ * @param string
+ */
+ public function setDisplayName($displayName)
+ {
+ $this->displayName = $displayName;
+ }
+ /**
+ * @return string
+ */
+ public function getDisplayName()
+ {
+ return $this->displayName;
+ }
+ /**
+ * @param string
+ */
+ public function setExpireTime($expireTime)
+ {
+ $this->expireTime = $expireTime;
+ }
+ /**
+ * @return string
+ */
+ public function getExpireTime()
+ {
+ return $this->expireTime;
+ }
+ /**
+ * @param string
+ */
+ public function setIndustryCategory($industryCategory)
+ {
+ $this->industryCategory = $industryCategory;
+ }
+ /**
+ * @return string
+ */
+ public function getIndustryCategory()
+ {
+ return $this->industryCategory;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param string
+ */
+ public function setParent($parent)
+ {
+ $this->parent = $parent;
+ }
+ /**
+ * @return string
+ */
+ public function getParent()
+ {
+ return $this->parent;
+ }
+ /**
+ * @param string
+ */
+ public function setPropertyType($propertyType)
+ {
+ $this->propertyType = $propertyType;
+ }
+ /**
+ * @return string
+ */
+ public function getPropertyType()
+ {
+ return $this->propertyType;
+ }
+ /**
+ * @param string
+ */
+ public function setServiceLevel($serviceLevel)
+ {
+ $this->serviceLevel = $serviceLevel;
+ }
+ /**
+ * @return string
+ */
+ public function getServiceLevel()
+ {
+ return $this->serviceLevel;
+ }
+ /**
+ * @param string
+ */
+ public function setTimeZone($timeZone)
+ {
+ $this->timeZone = $timeZone;
+ }
+ /**
+ * @return string
+ */
+ public function getTimeZone()
+ {
+ return $this->timeZone;
+ }
+ /**
+ * @param string
+ */
+ public function setUpdateTime($updateTime)
+ {
+ $this->updateTime = $updateTime;
+ }
+ /**
+ * @return string
+ */
+ public function getUpdateTime()
+ {
+ return $this->updateTime;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaProperty::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaProperty');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaPropertySummary.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaPropertySummary.php
new file mode 100644
index 000000000..c81a624ff
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaPropertySummary.php
@@ -0,0 +1,96 @@
+displayName = $displayName;
+ }
+ /**
+ * @return string
+ */
+ public function getDisplayName()
+ {
+ return $this->displayName;
+ }
+ /**
+ * @param string
+ */
+ public function setParent($parent)
+ {
+ $this->parent = $parent;
+ }
+ /**
+ * @return string
+ */
+ public function getParent()
+ {
+ return $this->parent;
+ }
+ /**
+ * @param string
+ */
+ public function setProperty($property)
+ {
+ $this->property = $property;
+ }
+ /**
+ * @return string
+ */
+ public function getProperty()
+ {
+ return $this->property;
+ }
+ /**
+ * @param string
+ */
+ public function setPropertyType($propertyType)
+ {
+ $this->propertyType = $propertyType;
+ }
+ /**
+ * @return string
+ */
+ public function getPropertyType()
+ {
+ return $this->propertyType;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaPropertySummary::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaPropertySummary');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaProvisionAccountTicketRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaProvisionAccountTicketRequest.php
new file mode 100644
index 000000000..fd37ac923
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaProvisionAccountTicketRequest.php
@@ -0,0 +1,58 @@
+account = $account;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaAccount
+ */
+ public function getAccount()
+ {
+ return $this->account;
+ }
+ /**
+ * @param string
+ */
+ public function setRedirectUri($redirectUri)
+ {
+ $this->redirectUri = $redirectUri;
+ }
+ /**
+ * @return string
+ */
+ public function getRedirectUri()
+ {
+ return $this->redirectUri;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaProvisionAccountTicketRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaProvisionAccountTicketRequest');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaProvisionAccountTicketResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaProvisionAccountTicketResponse.php
new file mode 100644
index 000000000..c5d929412
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaProvisionAccountTicketResponse.php
@@ -0,0 +1,42 @@
+accountTicketId = $accountTicketId;
+ }
+ /**
+ * @return string
+ */
+ public function getAccountTicketId()
+ {
+ return $this->accountTicketId;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaProvisionAccountTicketResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaProvisionAccountTicketResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaRunAccessReportRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaRunAccessReportRequest.php
new file mode 100644
index 000000000..b60b9e8bf
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaRunAccessReportRequest.php
@@ -0,0 +1,193 @@
+dateRanges = $dateRanges;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaAccessDateRange[]
+ */
+ public function getDateRanges()
+ {
+ return $this->dateRanges;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaAccessFilterExpression
+ */
+ public function setDimensionFilter(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessFilterExpression $dimensionFilter)
+ {
+ $this->dimensionFilter = $dimensionFilter;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaAccessFilterExpression
+ */
+ public function getDimensionFilter()
+ {
+ return $this->dimensionFilter;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaAccessDimension[]
+ */
+ public function setDimensions($dimensions)
+ {
+ $this->dimensions = $dimensions;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaAccessDimension[]
+ */
+ public function getDimensions()
+ {
+ return $this->dimensions;
+ }
+ /**
+ * @param string
+ */
+ public function setLimit($limit)
+ {
+ $this->limit = $limit;
+ }
+ /**
+ * @return string
+ */
+ public function getLimit()
+ {
+ return $this->limit;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaAccessFilterExpression
+ */
+ public function setMetricFilter(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessFilterExpression $metricFilter)
+ {
+ $this->metricFilter = $metricFilter;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaAccessFilterExpression
+ */
+ public function getMetricFilter()
+ {
+ return $this->metricFilter;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaAccessMetric[]
+ */
+ public function setMetrics($metrics)
+ {
+ $this->metrics = $metrics;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaAccessMetric[]
+ */
+ public function getMetrics()
+ {
+ return $this->metrics;
+ }
+ /**
+ * @param string
+ */
+ public function setOffset($offset)
+ {
+ $this->offset = $offset;
+ }
+ /**
+ * @return string
+ */
+ public function getOffset()
+ {
+ return $this->offset;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaAccessOrderBy[]
+ */
+ public function setOrderBys($orderBys)
+ {
+ $this->orderBys = $orderBys;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaAccessOrderBy[]
+ */
+ public function getOrderBys()
+ {
+ return $this->orderBys;
+ }
+ /**
+ * @param bool
+ */
+ public function setReturnEntityQuota($returnEntityQuota)
+ {
+ $this->returnEntityQuota = $returnEntityQuota;
+ }
+ /**
+ * @return bool
+ */
+ public function getReturnEntityQuota()
+ {
+ return $this->returnEntityQuota;
+ }
+ /**
+ * @param string
+ */
+ public function setTimeZone($timeZone)
+ {
+ $this->timeZone = $timeZone;
+ }
+ /**
+ * @return string
+ */
+ public function getTimeZone()
+ {
+ return $this->timeZone;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaRunAccessReportRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaRunAccessReportRequest');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaRunAccessReportResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaRunAccessReportResponse.php
new file mode 100644
index 000000000..a2e68e776
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaRunAccessReportResponse.php
@@ -0,0 +1,107 @@
+dimensionHeaders = $dimensionHeaders;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaAccessDimensionHeader[]
+ */
+ public function getDimensionHeaders()
+ {
+ return $this->dimensionHeaders;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaAccessMetricHeader[]
+ */
+ public function setMetricHeaders($metricHeaders)
+ {
+ $this->metricHeaders = $metricHeaders;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaAccessMetricHeader[]
+ */
+ public function getMetricHeaders()
+ {
+ return $this->metricHeaders;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaAccessQuota
+ */
+ public function setQuota(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccessQuota $quota)
+ {
+ $this->quota = $quota;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaAccessQuota
+ */
+ public function getQuota()
+ {
+ return $this->quota;
+ }
+ /**
+ * @param int
+ */
+ public function setRowCount($rowCount)
+ {
+ $this->rowCount = $rowCount;
+ }
+ /**
+ * @return int
+ */
+ public function getRowCount()
+ {
+ return $this->rowCount;
+ }
+ /**
+ * @param GoogleAnalyticsAdminV1alphaAccessRow[]
+ */
+ public function setRows($rows)
+ {
+ $this->rows = $rows;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaAccessRow[]
+ */
+ public function getRows()
+ {
+ return $this->rows;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaRunAccessReportResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaRunAccessReportResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaSearchAds360Link.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaSearchAds360Link.php
new file mode 100644
index 000000000..66e16ae21
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaSearchAds360Link.php
@@ -0,0 +1,150 @@
+adsPersonalizationEnabled = $adsPersonalizationEnabled;
+ }
+ /**
+ * @return bool
+ */
+ public function getAdsPersonalizationEnabled()
+ {
+ return $this->adsPersonalizationEnabled;
+ }
+ /**
+ * @param string
+ */
+ public function setAdvertiserDisplayName($advertiserDisplayName)
+ {
+ $this->advertiserDisplayName = $advertiserDisplayName;
+ }
+ /**
+ * @return string
+ */
+ public function getAdvertiserDisplayName()
+ {
+ return $this->advertiserDisplayName;
+ }
+ /**
+ * @param string
+ */
+ public function setAdvertiserId($advertiserId)
+ {
+ $this->advertiserId = $advertiserId;
+ }
+ /**
+ * @return string
+ */
+ public function getAdvertiserId()
+ {
+ return $this->advertiserId;
+ }
+ /**
+ * @param bool
+ */
+ public function setCampaignDataSharingEnabled($campaignDataSharingEnabled)
+ {
+ $this->campaignDataSharingEnabled = $campaignDataSharingEnabled;
+ }
+ /**
+ * @return bool
+ */
+ public function getCampaignDataSharingEnabled()
+ {
+ return $this->campaignDataSharingEnabled;
+ }
+ /**
+ * @param bool
+ */
+ public function setCostDataSharingEnabled($costDataSharingEnabled)
+ {
+ $this->costDataSharingEnabled = $costDataSharingEnabled;
+ }
+ /**
+ * @return bool
+ */
+ public function getCostDataSharingEnabled()
+ {
+ return $this->costDataSharingEnabled;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param bool
+ */
+ public function setSiteStatsSharingEnabled($siteStatsSharingEnabled)
+ {
+ $this->siteStatsSharingEnabled = $siteStatsSharingEnabled;
+ }
+ /**
+ * @return bool
+ */
+ public function getSiteStatsSharingEnabled()
+ {
+ return $this->siteStatsSharingEnabled;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaSearchAds360Link::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaSearchAds360Link');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaSearchChangeHistoryEventsRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaSearchChangeHistoryEventsRequest.php
new file mode 100644
index 000000000..d434286b8
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaSearchChangeHistoryEventsRequest.php
@@ -0,0 +1,169 @@
+action = $action;
+ }
+ /**
+ * @return string[]
+ */
+ public function getAction()
+ {
+ return $this->action;
+ }
+ /**
+ * @param string[]
+ */
+ public function setActorEmail($actorEmail)
+ {
+ $this->actorEmail = $actorEmail;
+ }
+ /**
+ * @return string[]
+ */
+ public function getActorEmail()
+ {
+ return $this->actorEmail;
+ }
+ /**
+ * @param string
+ */
+ public function setEarliestChangeTime($earliestChangeTime)
+ {
+ $this->earliestChangeTime = $earliestChangeTime;
+ }
+ /**
+ * @return string
+ */
+ public function getEarliestChangeTime()
+ {
+ return $this->earliestChangeTime;
+ }
+ /**
+ * @param string
+ */
+ public function setLatestChangeTime($latestChangeTime)
+ {
+ $this->latestChangeTime = $latestChangeTime;
+ }
+ /**
+ * @return string
+ */
+ public function getLatestChangeTime()
+ {
+ return $this->latestChangeTime;
+ }
+ /**
+ * @param int
+ */
+ public function setPageSize($pageSize)
+ {
+ $this->pageSize = $pageSize;
+ }
+ /**
+ * @return int
+ */
+ public function getPageSize()
+ {
+ return $this->pageSize;
+ }
+ /**
+ * @param string
+ */
+ public function setPageToken($pageToken)
+ {
+ $this->pageToken = $pageToken;
+ }
+ /**
+ * @return string
+ */
+ public function getPageToken()
+ {
+ return $this->pageToken;
+ }
+ /**
+ * @param string
+ */
+ public function setProperty($property)
+ {
+ $this->property = $property;
+ }
+ /**
+ * @return string
+ */
+ public function getProperty()
+ {
+ return $this->property;
+ }
+ /**
+ * @param string[]
+ */
+ public function setResourceType($resourceType)
+ {
+ $this->resourceType = $resourceType;
+ }
+ /**
+ * @return string[]
+ */
+ public function getResourceType()
+ {
+ return $this->resourceType;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaSearchChangeHistoryEventsRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaSearchChangeHistoryEventsRequest');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaSearchChangeHistoryEventsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaSearchChangeHistoryEventsResponse.php
new file mode 100644
index 000000000..d736495fa
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaSearchChangeHistoryEventsResponse.php
@@ -0,0 +1,59 @@
+changeHistoryEvents = $changeHistoryEvents;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaChangeHistoryEvent[]
+ */
+ public function getChangeHistoryEvents()
+ {
+ return $this->changeHistoryEvents;
+ }
+ /**
+ * @param string
+ */
+ public function setNextPageToken($nextPageToken)
+ {
+ $this->nextPageToken = $nextPageToken;
+ }
+ /**
+ * @return string
+ */
+ public function getNextPageToken()
+ {
+ return $this->nextPageToken;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaSearchChangeHistoryEventsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaSearchChangeHistoryEventsResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaUpdateUserLinkRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaUpdateUserLinkRequest.php
new file mode 100644
index 000000000..7d4ba8ed7
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaUpdateUserLinkRequest.php
@@ -0,0 +1,40 @@
+userLink = $userLink;
+ }
+ /**
+ * @return GoogleAnalyticsAdminV1alphaUserLink
+ */
+ public function getUserLink()
+ {
+ return $this->userLink;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaUpdateUserLinkRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaUpdateUserLinkRequest');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaUserLink.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaUserLink.php
new file mode 100644
index 000000000..9195966a8
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaUserLink.php
@@ -0,0 +1,79 @@
+directRoles = $directRoles;
+ }
+ /**
+ * @return string[]
+ */
+ public function getDirectRoles()
+ {
+ return $this->directRoles;
+ }
+ /**
+ * @param string
+ */
+ public function setEmailAddress($emailAddress)
+ {
+ $this->emailAddress = $emailAddress;
+ }
+ /**
+ * @return string
+ */
+ public function getEmailAddress()
+ {
+ return $this->emailAddress;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaUserLink::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaUserLink');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaWebDataStream.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaWebDataStream.php
new file mode 100644
index 000000000..fb2b65919
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleAnalyticsAdminV1alphaWebDataStream.php
@@ -0,0 +1,150 @@
+createTime = $createTime;
+ }
+ /**
+ * @return string
+ */
+ public function getCreateTime()
+ {
+ return $this->createTime;
+ }
+ /**
+ * @param string
+ */
+ public function setDefaultUri($defaultUri)
+ {
+ $this->defaultUri = $defaultUri;
+ }
+ /**
+ * @return string
+ */
+ public function getDefaultUri()
+ {
+ return $this->defaultUri;
+ }
+ /**
+ * @param string
+ */
+ public function setDisplayName($displayName)
+ {
+ $this->displayName = $displayName;
+ }
+ /**
+ * @return string
+ */
+ public function getDisplayName()
+ {
+ return $this->displayName;
+ }
+ /**
+ * @param string
+ */
+ public function setFirebaseAppId($firebaseAppId)
+ {
+ $this->firebaseAppId = $firebaseAppId;
+ }
+ /**
+ * @return string
+ */
+ public function getFirebaseAppId()
+ {
+ return $this->firebaseAppId;
+ }
+ /**
+ * @param string
+ */
+ public function setMeasurementId($measurementId)
+ {
+ $this->measurementId = $measurementId;
+ }
+ /**
+ * @return string
+ */
+ public function getMeasurementId()
+ {
+ return $this->measurementId;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param string
+ */
+ public function setUpdateTime($updateTime)
+ {
+ $this->updateTime = $updateTime;
+ }
+ /**
+ * @return string
+ */
+ public function getUpdateTime()
+ {
+ return $this->updateTime;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaWebDataStream::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_GoogleAnalyticsAdminV1alphaWebDataStream');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleProtobufEmpty.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleProtobufEmpty.php
new file mode 100644
index 000000000..5e21cc8a8
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/GoogleProtobufEmpty.php
@@ -0,0 +1,24 @@
+
+ * $analyticsadminService = new Google\Service\GoogleAnalyticsAdmin(...);
+ * $accountSummaries = $analyticsadminService->accountSummaries;
+ *
+ */
+class AccountSummaries extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Returns summaries of all accounts accessible by the caller.
+ * (accountSummaries.listAccountSummaries)
+ *
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param int pageSize The maximum number of AccountSummary resources to
+ * return. The service may return fewer than this value, even if there are
+ * additional pages. If unspecified, at most 50 resources will be returned. The
+ * maximum value is 200; (higher values will be coerced to the maximum)
+ * @opt_param string pageToken A page token, received from a previous
+ * `ListAccountSummaries` call. Provide this to retrieve the subsequent page.
+ * When paginating, all other parameters provided to `ListAccountSummaries` must
+ * match the call that provided the page token.
+ * @return GoogleAnalyticsAdminV1alphaListAccountSummariesResponse
+ */
+ public function listAccountSummaries($optParams = [])
+ {
+ $params = [];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListAccountSummariesResponse::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\AccountSummaries::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_Resource_AccountSummaries');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/Accounts.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/Accounts.php
new file mode 100644
index 000000000..c7585bce2
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/Accounts.php
@@ -0,0 +1,166 @@
+
+ * $analyticsadminService = new Google\Service\GoogleAnalyticsAdmin(...);
+ * $accounts = $analyticsadminService->accounts;
+ *
+ */
+class Accounts extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Marks target Account as soft-deleted (ie: "trashed") and returns it. This API
+ * does not have a method to restore soft-deleted accounts. However, they can be
+ * restored using the Trash Can UI. If the accounts are not restored before the
+ * expiration time, the account and all child resources (eg: Properties,
+ * GoogleAdsLinks, Streams, UserLinks) will be permanently purged.
+ * https://support.google.com/analytics/answer/6154772 Returns an error if the
+ * target is not found. (accounts.delete)
+ *
+ * @param string $name Required. The name of the Account to soft-delete. Format:
+ * accounts/{account} Example: "accounts/100"
+ * @param array $optParams Optional parameters.
+ * @return GoogleProtobufEmpty
+ */
+ public function delete($name, $optParams = [])
+ {
+ $params = ['name' => $name];
+ $params = \array_merge($params, $optParams);
+ return $this->call('delete', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleProtobufEmpty::class);
+ }
+ /**
+ * Lookup for a single Account. (accounts.get)
+ *
+ * @param string $name Required. The name of the account to lookup. Format:
+ * accounts/{account} Example: "accounts/100"
+ * @param array $optParams Optional parameters.
+ * @return GoogleAnalyticsAdminV1alphaAccount
+ */
+ public function get($name, $optParams = [])
+ {
+ $params = ['name' => $name];
+ $params = \array_merge($params, $optParams);
+ return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccount::class);
+ }
+ /**
+ * Get data sharing settings on an account. Data sharing settings are
+ * singletons. (accounts.getDataSharingSettings)
+ *
+ * @param string $name Required. The name of the settings to lookup. Format:
+ * accounts/{account}/dataSharingSettings Example:
+ * "accounts/1000/dataSharingSettings"
+ * @param array $optParams Optional parameters.
+ * @return GoogleAnalyticsAdminV1alphaDataSharingSettings
+ */
+ public function getDataSharingSettings($name, $optParams = [])
+ {
+ $params = ['name' => $name];
+ $params = \array_merge($params, $optParams);
+ return $this->call('getDataSharingSettings', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDataSharingSettings::class);
+ }
+ /**
+ * Returns all accounts accessible by the caller. Note that these accounts might
+ * not currently have GA4 properties. Soft-deleted (ie: "trashed") accounts are
+ * excluded by default. Returns an empty list if no relevant accounts are found.
+ * (accounts.listAccounts)
+ *
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param int pageSize The maximum number of resources to return. The
+ * service may return fewer than this value, even if there are additional pages.
+ * If unspecified, at most 50 resources will be returned. The maximum value is
+ * 200; (higher values will be coerced to the maximum)
+ * @opt_param string pageToken A page token, received from a previous
+ * `ListAccounts` call. Provide this to retrieve the subsequent page. When
+ * paginating, all other parameters provided to `ListAccounts` must match the
+ * call that provided the page token.
+ * @opt_param bool showDeleted Whether to include soft-deleted (ie: "trashed")
+ * Accounts in the results. Accounts can be inspected to determine whether they
+ * are deleted or not.
+ * @return GoogleAnalyticsAdminV1alphaListAccountsResponse
+ */
+ public function listAccounts($optParams = [])
+ {
+ $params = [];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListAccountsResponse::class);
+ }
+ /**
+ * Updates an account. (accounts.patch)
+ *
+ * @param string $name Output only. Resource name of this account. Format:
+ * accounts/{account} Example: "accounts/100"
+ * @param GoogleAnalyticsAdminV1alphaAccount $postBody
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string updateMask Required. The list of fields to be updated.
+ * Field names must be in snake case (e.g., "field_to_update"). Omitted fields
+ * will not be updated. To replace the entire entity, use one path with the
+ * string "*" to match all fields.
+ * @return GoogleAnalyticsAdminV1alphaAccount
+ */
+ public function patch($name, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccount $postBody, $optParams = [])
+ {
+ $params = ['name' => $name, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAccount::class);
+ }
+ /**
+ * Requests a ticket for creating an account. (accounts.provisionAccountTicket)
+ *
+ * @param GoogleAnalyticsAdminV1alphaProvisionAccountTicketRequest $postBody
+ * @param array $optParams Optional parameters.
+ * @return GoogleAnalyticsAdminV1alphaProvisionAccountTicketResponse
+ */
+ public function provisionAccountTicket(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaProvisionAccountTicketRequest $postBody, $optParams = [])
+ {
+ $params = ['postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('provisionAccountTicket', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaProvisionAccountTicketResponse::class);
+ }
+ /**
+ * Searches through all changes to an account or its children given the
+ * specified set of filters. (accounts.searchChangeHistoryEvents)
+ *
+ * @param string $account Required. The account resource for which to return
+ * change history resources.
+ * @param GoogleAnalyticsAdminV1alphaSearchChangeHistoryEventsRequest $postBody
+ * @param array $optParams Optional parameters.
+ * @return GoogleAnalyticsAdminV1alphaSearchChangeHistoryEventsResponse
+ */
+ public function searchChangeHistoryEvents($account, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaSearchChangeHistoryEventsRequest $postBody, $optParams = [])
+ {
+ $params = ['account' => $account, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('searchChangeHistoryEvents', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaSearchChangeHistoryEventsResponse::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\Accounts::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_Resource_Accounts');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/AccountsUserLinks.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/AccountsUserLinks.php
new file mode 100644
index 000000000..6974e6ec8
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/AccountsUserLinks.php
@@ -0,0 +1,222 @@
+
+ * $analyticsadminService = new Google\Service\GoogleAnalyticsAdmin(...);
+ * $userLinks = $analyticsadminService->userLinks;
+ *
+ */
+class AccountsUserLinks extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Lists all user links on an account or property, including implicit ones that
+ * come from effective permissions granted by groups or organization admin
+ * roles. If a returned user link does not have direct permissions, they cannot
+ * be removed from the account or property directly with the DeleteUserLink
+ * command. They have to be removed from the group/etc that gives them
+ * permissions, which is currently only usable/discoverable in the GA or GMP
+ * UIs. (userLinks.audit)
+ *
+ * @param string $parent Required. Example format: accounts/1234
+ * @param GoogleAnalyticsAdminV1alphaAuditUserLinksRequest $postBody
+ * @param array $optParams Optional parameters.
+ * @return GoogleAnalyticsAdminV1alphaAuditUserLinksResponse
+ */
+ public function audit($parent, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAuditUserLinksRequest $postBody, $optParams = [])
+ {
+ $params = ['parent' => $parent, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('audit', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAuditUserLinksResponse::class);
+ }
+ /**
+ * Creates information about multiple users' links to an account or property.
+ * This method is transactional. If any UserLink cannot be created, none of the
+ * UserLinks will be created. (userLinks.batchCreate)
+ *
+ * @param string $parent Required. The account or property that all user links
+ * in the request are for. This field is required. The parent field in the
+ * CreateUserLinkRequest messages must either be empty or match this field.
+ * Example format: accounts/1234
+ * @param GoogleAnalyticsAdminV1alphaBatchCreateUserLinksRequest $postBody
+ * @param array $optParams Optional parameters.
+ * @return GoogleAnalyticsAdminV1alphaBatchCreateUserLinksResponse
+ */
+ public function batchCreate($parent, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaBatchCreateUserLinksRequest $postBody, $optParams = [])
+ {
+ $params = ['parent' => $parent, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('batchCreate', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaBatchCreateUserLinksResponse::class);
+ }
+ /**
+ * Deletes information about multiple users' links to an account or property.
+ * (userLinks.batchDelete)
+ *
+ * @param string $parent Required. The account or property that all user links
+ * in the request are for. The parent of all values for user link names to
+ * delete must match this field. Example format: accounts/1234
+ * @param GoogleAnalyticsAdminV1alphaBatchDeleteUserLinksRequest $postBody
+ * @param array $optParams Optional parameters.
+ * @return GoogleProtobufEmpty
+ */
+ public function batchDelete($parent, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaBatchDeleteUserLinksRequest $postBody, $optParams = [])
+ {
+ $params = ['parent' => $parent, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('batchDelete', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleProtobufEmpty::class);
+ }
+ /**
+ * Gets information about multiple users' links to an account or property.
+ * (userLinks.batchGet)
+ *
+ * @param string $parent Required. The account or property that all user links
+ * in the request are for. The parent of all provided values for the 'names'
+ * field must match this field. Example format: accounts/1234
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string names Required. The names of the user links to retrieve. A
+ * maximum of 1000 user links can be retrieved in a batch. Format:
+ * accounts/{accountId}/userLinks/{userLinkId}
+ * @return GoogleAnalyticsAdminV1alphaBatchGetUserLinksResponse
+ */
+ public function batchGet($parent, $optParams = [])
+ {
+ $params = ['parent' => $parent];
+ $params = \array_merge($params, $optParams);
+ return $this->call('batchGet', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaBatchGetUserLinksResponse::class);
+ }
+ /**
+ * Updates information about multiple users' links to an account or property.
+ * (userLinks.batchUpdate)
+ *
+ * @param string $parent Required. The account or property that all user links
+ * in the request are for. The parent field in the UpdateUserLinkRequest
+ * messages must either be empty or match this field. Example format:
+ * accounts/1234
+ * @param GoogleAnalyticsAdminV1alphaBatchUpdateUserLinksRequest $postBody
+ * @param array $optParams Optional parameters.
+ * @return GoogleAnalyticsAdminV1alphaBatchUpdateUserLinksResponse
+ */
+ public function batchUpdate($parent, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaBatchUpdateUserLinksRequest $postBody, $optParams = [])
+ {
+ $params = ['parent' => $parent, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('batchUpdate', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaBatchUpdateUserLinksResponse::class);
+ }
+ /**
+ * Creates a user link on an account or property. If the user with the specified
+ * email already has permissions on the account or property, then the user's
+ * existing permissions will be unioned with the permissions specified in the
+ * new UserLink. (userLinks.create)
+ *
+ * @param string $parent Required. Example format: accounts/1234
+ * @param GoogleAnalyticsAdminV1alphaUserLink $postBody
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param bool notifyNewUser Optional. If set, then email the new user
+ * notifying them that they've been granted permissions to the resource.
+ * @return GoogleAnalyticsAdminV1alphaUserLink
+ */
+ public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaUserLink $postBody, $optParams = [])
+ {
+ $params = ['parent' => $parent, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaUserLink::class);
+ }
+ /**
+ * Deletes a user link on an account or property. (userLinks.delete)
+ *
+ * @param string $name Required. Example format: accounts/1234/userLinks/5678
+ * @param array $optParams Optional parameters.
+ * @return GoogleProtobufEmpty
+ */
+ public function delete($name, $optParams = [])
+ {
+ $params = ['name' => $name];
+ $params = \array_merge($params, $optParams);
+ return $this->call('delete', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleProtobufEmpty::class);
+ }
+ /**
+ * Gets information about a user's link to an account or property.
+ * (userLinks.get)
+ *
+ * @param string $name Required. Example format: accounts/1234/userLinks/5678
+ * @param array $optParams Optional parameters.
+ * @return GoogleAnalyticsAdminV1alphaUserLink
+ */
+ public function get($name, $optParams = [])
+ {
+ $params = ['name' => $name];
+ $params = \array_merge($params, $optParams);
+ return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaUserLink::class);
+ }
+ /**
+ * Lists all user links on an account or property.
+ * (userLinks.listAccountsUserLinks)
+ *
+ * @param string $parent Required. Example format: accounts/1234
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param int pageSize The maximum number of user links to return. The
+ * service may return fewer than this value. If unspecified, at most 200 user
+ * links will be returned. The maximum value is 500; values above 500 will be
+ * coerced to 500.
+ * @opt_param string pageToken A page token, received from a previous
+ * `ListUserLinks` call. Provide this to retrieve the subsequent page. When
+ * paginating, all other parameters provided to `ListUserLinks` must match the
+ * call that provided the page token.
+ * @return GoogleAnalyticsAdminV1alphaListUserLinksResponse
+ */
+ public function listAccountsUserLinks($parent, $optParams = [])
+ {
+ $params = ['parent' => $parent];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListUserLinksResponse::class);
+ }
+ /**
+ * Updates a user link on an account or property. (userLinks.patch)
+ *
+ * @param string $name Output only. Example format:
+ * properties/1234/userLinks/5678
+ * @param GoogleAnalyticsAdminV1alphaUserLink $postBody
+ * @param array $optParams Optional parameters.
+ * @return GoogleAnalyticsAdminV1alphaUserLink
+ */
+ public function patch($name, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaUserLink $postBody, $optParams = [])
+ {
+ $params = ['name' => $name, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaUserLink::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\AccountsUserLinks::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_Resource_AccountsUserLinks');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/Properties.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/Properties.php
new file mode 100644
index 000000000..5d46936ce
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/Properties.php
@@ -0,0 +1,304 @@
+
+ * $analyticsadminService = new Google\Service\GoogleAnalyticsAdmin(...);
+ * $properties = $analyticsadminService->properties;
+ *
+ */
+class Properties extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Acknowledges the terms of user data collection for the specified property.
+ * This acknowledgement must be completed (either in the Google Analytics UI or
+ * via this API) before MeasurementProtocolSecret resources may be created.
+ * (properties.acknowledgeUserDataCollection)
+ *
+ * @param string $property Required. The property for which to acknowledge user
+ * data collection.
+ * @param GoogleAnalyticsAdminV1alphaAcknowledgeUserDataCollectionRequest $postBody
+ * @param array $optParams Optional parameters.
+ * @return GoogleAnalyticsAdminV1alphaAcknowledgeUserDataCollectionResponse
+ */
+ public function acknowledgeUserDataCollection($property, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAcknowledgeUserDataCollectionRequest $postBody, $optParams = [])
+ {
+ $params = ['property' => $property, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('acknowledgeUserDataCollection', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAcknowledgeUserDataCollectionResponse::class);
+ }
+ /**
+ * Creates an "GA4" property with the specified location and attributes.
+ * (properties.create)
+ *
+ * @param GoogleAnalyticsAdminV1alphaProperty $postBody
+ * @param array $optParams Optional parameters.
+ * @return GoogleAnalyticsAdminV1alphaProperty
+ */
+ public function create(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaProperty $postBody, $optParams = [])
+ {
+ $params = ['postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaProperty::class);
+ }
+ /**
+ * Marks target Property as soft-deleted (ie: "trashed") and returns it. This
+ * API does not have a method to restore soft-deleted properties. However, they
+ * can be restored using the Trash Can UI. If the properties are not restored
+ * before the expiration time, the Property and all child resources (eg:
+ * GoogleAdsLinks, Streams, UserLinks) will be permanently purged.
+ * https://support.google.com/analytics/answer/6154772 Returns an error if the
+ * target is not found, or is not a GA4 Property. (properties.delete)
+ *
+ * @param string $name Required. The name of the Property to soft-delete.
+ * Format: properties/{property_id} Example: "properties/1000"
+ * @param array $optParams Optional parameters.
+ * @return GoogleAnalyticsAdminV1alphaProperty
+ */
+ public function delete($name, $optParams = [])
+ {
+ $params = ['name' => $name];
+ $params = \array_merge($params, $optParams);
+ return $this->call('delete', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaProperty::class);
+ }
+ /**
+ * Lookup for a single "GA4" Property. (properties.get)
+ *
+ * @param string $name Required. The name of the property to lookup. Format:
+ * properties/{property_id} Example: "properties/1000"
+ * @param array $optParams Optional parameters.
+ * @return GoogleAnalyticsAdminV1alphaProperty
+ */
+ public function get($name, $optParams = [])
+ {
+ $params = ['name' => $name];
+ $params = \array_merge($params, $optParams);
+ return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaProperty::class);
+ }
+ /**
+ * Lookup for a AttributionSettings singleton.
+ * (properties.getAttributionSettings)
+ *
+ * @param string $name Required. The name of the attribution settings to
+ * retrieve. Format: properties/{property}/attributionSettings
+ * @param array $optParams Optional parameters.
+ * @return GoogleAnalyticsAdminV1alphaAttributionSettings
+ */
+ public function getAttributionSettings($name, $optParams = [])
+ {
+ $params = ['name' => $name];
+ $params = \array_merge($params, $optParams);
+ return $this->call('getAttributionSettings', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAttributionSettings::class);
+ }
+ /**
+ * Returns the singleton data retention settings for this property.
+ * (properties.getDataRetentionSettings)
+ *
+ * @param string $name Required. The name of the settings to lookup. Format:
+ * properties/{property}/dataRetentionSettings Example:
+ * "properties/1000/dataRetentionSettings"
+ * @param array $optParams Optional parameters.
+ * @return GoogleAnalyticsAdminV1alphaDataRetentionSettings
+ */
+ public function getDataRetentionSettings($name, $optParams = [])
+ {
+ $params = ['name' => $name];
+ $params = \array_merge($params, $optParams);
+ return $this->call('getDataRetentionSettings', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDataRetentionSettings::class);
+ }
+ /**
+ * Lookup for Google Signals settings for a property.
+ * (properties.getGoogleSignalsSettings)
+ *
+ * @param string $name Required. The name of the google signals settings to
+ * retrieve. Format: properties/{property}/googleSignalsSettings
+ * @param array $optParams Optional parameters.
+ * @return GoogleAnalyticsAdminV1alphaGoogleSignalsSettings
+ */
+ public function getGoogleSignalsSettings($name, $optParams = [])
+ {
+ $params = ['name' => $name];
+ $params = \array_merge($params, $optParams);
+ return $this->call('getGoogleSignalsSettings', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaGoogleSignalsSettings::class);
+ }
+ /**
+ * Returns child Properties under the specified parent Account. Only "GA4"
+ * properties will be returned. Properties will be excluded if the caller does
+ * not have access. Soft-deleted (ie: "trashed") properties are excluded by
+ * default. Returns an empty list if no relevant properties are found.
+ * (properties.listProperties)
+ *
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string filter Required. An expression for filtering the results of
+ * the request. Fields eligible for filtering are: `parent:`(The resource name
+ * of the parent account/property) or `ancestor:`(The resource name of the
+ * parent account) or `firebase_project:`(The id or number of the linked
+ * firebase project). Some examples of filters: ``` | Filter | Description |
+ * |-----------------------------|-------------------------------------------| |
+ * parent:accounts/123 | The account with account id: 123. | |
+ * parent:properties/123 | The property with property id: 123. | |
+ * ancestor:accounts/123 | The account with account id: 123. | |
+ * firebase_project:project-id | The firebase project with id: project-id. | |
+ * firebase_project:123 | The firebase project with number: 123. | ```
+ * @opt_param int pageSize The maximum number of resources to return. The
+ * service may return fewer than this value, even if there are additional pages.
+ * If unspecified, at most 50 resources will be returned. The maximum value is
+ * 200; (higher values will be coerced to the maximum)
+ * @opt_param string pageToken A page token, received from a previous
+ * `ListProperties` call. Provide this to retrieve the subsequent page. When
+ * paginating, all other parameters provided to `ListProperties` must match the
+ * call that provided the page token.
+ * @opt_param bool showDeleted Whether to include soft-deleted (ie: "trashed")
+ * Properties in the results. Properties can be inspected to determine whether
+ * they are deleted or not.
+ * @return GoogleAnalyticsAdminV1alphaListPropertiesResponse
+ */
+ public function listProperties($optParams = [])
+ {
+ $params = [];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListPropertiesResponse::class);
+ }
+ /**
+ * Updates a property. (properties.patch)
+ *
+ * @param string $name Output only. Resource name of this property. Format:
+ * properties/{property_id} Example: "properties/1000"
+ * @param GoogleAnalyticsAdminV1alphaProperty $postBody
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string updateMask Required. The list of fields to be updated.
+ * Field names must be in snake case (e.g., "field_to_update"). Omitted fields
+ * will not be updated. To replace the entire entity, use one path with the
+ * string "*" to match all fields.
+ * @return GoogleAnalyticsAdminV1alphaProperty
+ */
+ public function patch($name, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaProperty $postBody, $optParams = [])
+ {
+ $params = ['name' => $name, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaProperty::class);
+ }
+ /**
+ * Returns a customized report of data access records. The report provides
+ * records of each time a user reads Google Analytics reporting data. Access
+ * records are retained for up to 2 years. Data Access Reports can be requested
+ * for a property. The property must be in Google Analytics 360. This method is
+ * only available to Administrators. These data access records include GA4 UI
+ * Reporting, GA4 UI Explorations, GA4 Data API, and other products like
+ * Firebase & Admob that can retrieve data from Google Analytics through a
+ * linkage. These records don't include property configuration changes like
+ * adding a stream or changing a property's time zone. For configuration change
+ * history, see [searchChangeHistoryEvents](https://developers.google.com/analyt
+ * ics/devguides/config/admin/v1/rest/v1alpha/accounts/searchChangeHistoryEvents
+ * ). (properties.runAccessReport)
+ *
+ * @param string $entity The Data Access Report is requested for this property.
+ * For example if "123" is your GA4 property ID, then entity should be
+ * "properties/123".
+ * @param GoogleAnalyticsAdminV1alphaRunAccessReportRequest $postBody
+ * @param array $optParams Optional parameters.
+ * @return GoogleAnalyticsAdminV1alphaRunAccessReportResponse
+ */
+ public function runAccessReport($entity, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaRunAccessReportRequest $postBody, $optParams = [])
+ {
+ $params = ['entity' => $entity, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('runAccessReport', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaRunAccessReportResponse::class);
+ }
+ /**
+ * Updates attribution settings on a property.
+ * (properties.updateAttributionSettings)
+ *
+ * @param string $name Output only. Resource name of this attribution settings
+ * resource. Format: properties/{property_id}/attributionSettings Example:
+ * "properties/1000/attributionSettings"
+ * @param GoogleAnalyticsAdminV1alphaAttributionSettings $postBody
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string updateMask Required. The list of fields to be updated.
+ * Field names must be in snake case (e.g., "field_to_update"). Omitted fields
+ * will not be updated. To replace the entire entity, use one path with the
+ * string "*" to match all fields.
+ * @return GoogleAnalyticsAdminV1alphaAttributionSettings
+ */
+ public function updateAttributionSettings($name, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAttributionSettings $postBody, $optParams = [])
+ {
+ $params = ['name' => $name, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('updateAttributionSettings', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAttributionSettings::class);
+ }
+ /**
+ * Updates the singleton data retention settings for this property.
+ * (properties.updateDataRetentionSettings)
+ *
+ * @param string $name Output only. Resource name for this DataRetentionSetting
+ * resource. Format: properties/{property}/dataRetentionSettings
+ * @param GoogleAnalyticsAdminV1alphaDataRetentionSettings $postBody
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string updateMask Required. The list of fields to be updated.
+ * Field names must be in snake case (e.g., "field_to_update"). Omitted fields
+ * will not be updated. To replace the entire entity, use one path with the
+ * string "*" to match all fields.
+ * @return GoogleAnalyticsAdminV1alphaDataRetentionSettings
+ */
+ public function updateDataRetentionSettings($name, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDataRetentionSettings $postBody, $optParams = [])
+ {
+ $params = ['name' => $name, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('updateDataRetentionSettings', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDataRetentionSettings::class);
+ }
+ /**
+ * Updates Google Signals settings for a property.
+ * (properties.updateGoogleSignalsSettings)
+ *
+ * @param string $name Output only. Resource name of this setting. Format:
+ * properties/{property_id}/googleSignalsSettings Example:
+ * "properties/1000/googleSignalsSettings"
+ * @param GoogleAnalyticsAdminV1alphaGoogleSignalsSettings $postBody
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string updateMask Required. The list of fields to be updated.
+ * Field names must be in snake case (e.g., "field_to_update"). Omitted fields
+ * will not be updated. To replace the entire entity, use one path with the
+ * string "*" to match all fields.
+ * @return GoogleAnalyticsAdminV1alphaGoogleSignalsSettings
+ */
+ public function updateGoogleSignalsSettings($name, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaGoogleSignalsSettings $postBody, $optParams = [])
+ {
+ $params = ['name' => $name, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('updateGoogleSignalsSettings', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaGoogleSignalsSettings::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\Properties::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_Resource_Properties');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesAndroidAppDataStreams.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesAndroidAppDataStreams.php
new file mode 100644
index 000000000..4fd7d7aec
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesAndroidAppDataStreams.php
@@ -0,0 +1,112 @@
+
+ * $analyticsadminService = new Google\Service\GoogleAnalyticsAdmin(...);
+ * $androidAppDataStreams = $analyticsadminService->androidAppDataStreams;
+ *
+ */
+class PropertiesAndroidAppDataStreams extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Deletes an android app stream on a property. (androidAppDataStreams.delete)
+ *
+ * @param string $name Required. The name of the android app data stream to
+ * delete. Format: properties/{property_id}/androidAppDataStreams/{stream_id}
+ * Example: "properties/123/androidAppDataStreams/456"
+ * @param array $optParams Optional parameters.
+ * @return GoogleProtobufEmpty
+ */
+ public function delete($name, $optParams = [])
+ {
+ $params = ['name' => $name];
+ $params = \array_merge($params, $optParams);
+ return $this->call('delete', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleProtobufEmpty::class);
+ }
+ /**
+ * Lookup for a single AndroidAppDataStream (androidAppDataStreams.get)
+ *
+ * @param string $name Required. The name of the android app data stream to
+ * lookup. Format: properties/{property_id}/androidAppDataStreams/{stream_id}
+ * Example: "properties/123/androidAppDataStreams/456"
+ * @param array $optParams Optional parameters.
+ * @return GoogleAnalyticsAdminV1alphaAndroidAppDataStream
+ */
+ public function get($name, $optParams = [])
+ {
+ $params = ['name' => $name];
+ $params = \array_merge($params, $optParams);
+ return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAndroidAppDataStream::class);
+ }
+ /**
+ * Returns child android app streams under the specified parent property.
+ * Android app streams will be excluded if the caller does not have access.
+ * Returns an empty list if no relevant android app streams are found.
+ * (androidAppDataStreams.listPropertiesAndroidAppDataStreams)
+ *
+ * @param string $parent Required. The name of the parent property. For example,
+ * to limit results to app streams under the property with Id 123:
+ * "properties/123"
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param int pageSize The maximum number of resources to return. If
+ * unspecified, at most 50 resources will be returned. The maximum value is 200;
+ * (higher values will be coerced to the maximum)
+ * @opt_param string pageToken A page token, received from a previous call.
+ * Provide this to retrieve the subsequent page. When paginating, all other
+ * parameters provided to `ListAndroidAppDataStreams` must match the call that
+ * provided the page token.
+ * @return GoogleAnalyticsAdminV1alphaListAndroidAppDataStreamsResponse
+ */
+ public function listPropertiesAndroidAppDataStreams($parent, $optParams = [])
+ {
+ $params = ['parent' => $parent];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListAndroidAppDataStreamsResponse::class);
+ }
+ /**
+ * Updates an android app stream on a property. (androidAppDataStreams.patch)
+ *
+ * @param string $name Output only. Resource name of this Data Stream. Format:
+ * properties/{property_id}/androidAppDataStreams/{stream_id} Example:
+ * "properties/1000/androidAppDataStreams/2000"
+ * @param GoogleAnalyticsAdminV1alphaAndroidAppDataStream $postBody
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string updateMask Required. The list of fields to be updated.
+ * Field names must be in snake case (e.g., "field_to_update"). Omitted fields
+ * will not be updated. To replace the entire entity, use one path with the
+ * string "*" to match all fields.
+ * @return GoogleAnalyticsAdminV1alphaAndroidAppDataStream
+ */
+ public function patch($name, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAndroidAppDataStream $postBody, $optParams = [])
+ {
+ $params = ['name' => $name, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAndroidAppDataStream::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\PropertiesAndroidAppDataStreams::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_Resource_PropertiesAndroidAppDataStreams');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesAndroidAppDataStreamsMeasurementProtocolSecrets.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesAndroidAppDataStreamsMeasurementProtocolSecrets.php
new file mode 100644
index 000000000..deffd8e01
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesAndroidAppDataStreamsMeasurementProtocolSecrets.php
@@ -0,0 +1,131 @@
+
+ * $analyticsadminService = new Google\Service\GoogleAnalyticsAdmin(...);
+ * $measurementProtocolSecrets = $analyticsadminService->measurementProtocolSecrets;
+ *
+ */
+class PropertiesAndroidAppDataStreamsMeasurementProtocolSecrets extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Creates a measurement protocol secret. (measurementProtocolSecrets.create)
+ *
+ * @param string $parent Required. The parent resource where this secret will be
+ * created. Any type of stream (WebDataStream, IosAppDataStream,
+ * AndroidAppDataStream) may be a parent. Format:
+ * properties/{property}/webDataStreams/{webDataStream}
+ * @param GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret $postBody
+ * @param array $optParams Optional parameters.
+ * @return GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret
+ */
+ public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret $postBody, $optParams = [])
+ {
+ $params = ['parent' => $parent, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret::class);
+ }
+ /**
+ * Deletes target MeasurementProtocolSecret. (measurementProtocolSecrets.delete)
+ *
+ * @param string $name Required. The name of the MeasurementProtocolSecret to
+ * delete. Format: properties/{property}/webDataStreams/{webDataStream}/measurem
+ * entProtocolSecrets/{measurementProtocolSecret} Note: Any type of stream
+ * (WebDataStream, IosAppDataStream, AndroidAppDataStream) may be a parent.
+ * @param array $optParams Optional parameters.
+ * @return GoogleProtobufEmpty
+ */
+ public function delete($name, $optParams = [])
+ {
+ $params = ['name' => $name];
+ $params = \array_merge($params, $optParams);
+ return $this->call('delete', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleProtobufEmpty::class);
+ }
+ /**
+ * Lookup for a single "GA4" MeasurementProtocolSecret.
+ * (measurementProtocolSecrets.get)
+ *
+ * @param string $name Required. The name of the measurement protocol secret to
+ * lookup. Format: properties/{property}/webDataStreams/{webDataStream}/measurem
+ * entProtocolSecrets/{measurementProtocolSecret} Note: Any type of stream
+ * (WebDataStream, IosAppDataStream, AndroidAppDataStream) may be a parent.
+ * @param array $optParams Optional parameters.
+ * @return GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret
+ */
+ public function get($name, $optParams = [])
+ {
+ $params = ['name' => $name];
+ $params = \array_merge($params, $optParams);
+ return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret::class);
+ }
+ /**
+ * Returns child MeasurementProtocolSecrets under the specified parent Property.
+ * (measurementProtocolSecrets.listPropertiesAndroidAppDataStreamsMeasurementPro
+ * tocolSecrets)
+ *
+ * @param string $parent Required. The resource name of the parent stream. Any
+ * type of stream (WebDataStream, IosAppDataStream, AndroidAppDataStream) may be
+ * a parent. Format: properties/{property}/webDataStreams/{webDataStream}/measur
+ * ementProtocolSecrets
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param int pageSize The maximum number of resources to return. If
+ * unspecified, at most 10 resources will be returned. The maximum value is 10.
+ * Higher values will be coerced to the maximum.
+ * @opt_param string pageToken A page token, received from a previous
+ * `ListMeasurementProtocolSecrets` call. Provide this to retrieve the
+ * subsequent page. When paginating, all other parameters provided to
+ * `ListMeasurementProtocolSecrets` must match the call that provided the page
+ * token.
+ * @return GoogleAnalyticsAdminV1alphaListMeasurementProtocolSecretsResponse
+ */
+ public function listPropertiesAndroidAppDataStreamsMeasurementProtocolSecrets($parent, $optParams = [])
+ {
+ $params = ['parent' => $parent];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListMeasurementProtocolSecretsResponse::class);
+ }
+ /**
+ * Updates a measurement protocol secret. (measurementProtocolSecrets.patch)
+ *
+ * @param string $name Output only. Resource name of this secret. This secret
+ * may be a child of any type of stream. Format: properties/{property}/webDataSt
+ * reams/{webDataStream}/measurementProtocolSecrets/{measurementProtocolSecret}
+ * @param GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret $postBody
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string updateMask The list of fields to be updated. Omitted fields
+ * will not be updated.
+ * @return GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret
+ */
+ public function patch($name, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret $postBody, $optParams = [])
+ {
+ $params = ['name' => $name, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\PropertiesAndroidAppDataStreamsMeasurementProtocolSecrets::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_Resource_PropertiesAndroidAppDataStreamsMeasurementProtocolSecrets');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesAudiences.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesAudiences.php
new file mode 100644
index 000000000..fed2f2209
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesAudiences.php
@@ -0,0 +1,123 @@
+
+ * $analyticsadminService = new Google\Service\GoogleAnalyticsAdmin(...);
+ * $audiences = $analyticsadminService->audiences;
+ *
+ */
+class PropertiesAudiences extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Archives an Audience on a property. (audiences.archive)
+ *
+ * @param string $name Required. Example format: properties/1234/audiences/5678
+ * @param GoogleAnalyticsAdminV1alphaArchiveAudienceRequest $postBody
+ * @param array $optParams Optional parameters.
+ * @return GoogleProtobufEmpty
+ */
+ public function archive($name, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaArchiveAudienceRequest $postBody, $optParams = [])
+ {
+ $params = ['name' => $name, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('archive', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleProtobufEmpty::class);
+ }
+ /**
+ * Creates an Audience. (audiences.create)
+ *
+ * @param string $parent Required. Example format: properties/1234
+ * @param GoogleAnalyticsAdminV1alphaAudience $postBody
+ * @param array $optParams Optional parameters.
+ * @return GoogleAnalyticsAdminV1alphaAudience
+ */
+ public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudience $postBody, $optParams = [])
+ {
+ $params = ['parent' => $parent, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudience::class);
+ }
+ /**
+ * Lookup for a single Audience. Audiences created before 2020 may not be
+ * supported. Default audiences will not show filter definitions.
+ * (audiences.get)
+ *
+ * @param string $name Required. The name of the Audience to get. Example
+ * format: properties/1234/audiences/5678
+ * @param array $optParams Optional parameters.
+ * @return GoogleAnalyticsAdminV1alphaAudience
+ */
+ public function get($name, $optParams = [])
+ {
+ $params = ['name' => $name];
+ $params = \array_merge($params, $optParams);
+ return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudience::class);
+ }
+ /**
+ * Lists Audiences on a property. Audiences created before 2020 may not be
+ * supported. Default audiences will not show filter definitions.
+ * (audiences.listPropertiesAudiences)
+ *
+ * @param string $parent Required. Example format: properties/1234
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param int pageSize The maximum number of resources to return. If
+ * unspecified, at most 50 resources will be returned. The maximum value is 200
+ * (higher values will be coerced to the maximum).
+ * @opt_param string pageToken A page token, received from a previous
+ * `ListAudiences` call. Provide this to retrieve the subsequent page. When
+ * paginating, all other parameters provided to `ListAudiences` must match the
+ * call that provided the page token.
+ * @return GoogleAnalyticsAdminV1alphaListAudiencesResponse
+ */
+ public function listPropertiesAudiences($parent, $optParams = [])
+ {
+ $params = ['parent' => $parent];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListAudiencesResponse::class);
+ }
+ /**
+ * Updates an Audience on a property. (audiences.patch)
+ *
+ * @param string $name Output only. The resource name for this Audience
+ * resource. Format: properties/{propertyId}/audiences/{audienceId}
+ * @param GoogleAnalyticsAdminV1alphaAudience $postBody
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string updateMask Required. The list of fields to be updated.
+ * Field names must be in snake case (e.g., "field_to_update"). Omitted fields
+ * will not be updated. To replace the entire entity, use one path with the
+ * string "*" to match all fields.
+ * @return GoogleAnalyticsAdminV1alphaAudience
+ */
+ public function patch($name, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudience $postBody, $optParams = [])
+ {
+ $params = ['name' => $name, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAudience::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\PropertiesAudiences::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_Resource_PropertiesAudiences');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesConversionEvents.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesConversionEvents.php
new file mode 100644
index 000000000..d78a1bdd7
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesConversionEvents.php
@@ -0,0 +1,105 @@
+
+ * $analyticsadminService = new Google\Service\GoogleAnalyticsAdmin(...);
+ * $conversionEvents = $analyticsadminService->conversionEvents;
+ *
+ */
+class PropertiesConversionEvents extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Creates a conversion event with the specified attributes.
+ * (conversionEvents.create)
+ *
+ * @param string $parent Required. The resource name of the parent property
+ * where this conversion event will be created. Format: properties/123
+ * @param GoogleAnalyticsAdminV1alphaConversionEvent $postBody
+ * @param array $optParams Optional parameters.
+ * @return GoogleAnalyticsAdminV1alphaConversionEvent
+ */
+ public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaConversionEvent $postBody, $optParams = [])
+ {
+ $params = ['parent' => $parent, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaConversionEvent::class);
+ }
+ /**
+ * Deletes a conversion event in a property. (conversionEvents.delete)
+ *
+ * @param string $name Required. The resource name of the conversion event to
+ * delete. Format: properties/{property}/conversionEvents/{conversion_event}
+ * Example: "properties/123/conversionEvents/456"
+ * @param array $optParams Optional parameters.
+ * @return GoogleProtobufEmpty
+ */
+ public function delete($name, $optParams = [])
+ {
+ $params = ['name' => $name];
+ $params = \array_merge($params, $optParams);
+ return $this->call('delete', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleProtobufEmpty::class);
+ }
+ /**
+ * Retrieve a single conversion event. (conversionEvents.get)
+ *
+ * @param string $name Required. The resource name of the conversion event to
+ * retrieve. Format: properties/{property}/conversionEvents/{conversion_event}
+ * Example: "properties/123/conversionEvents/456"
+ * @param array $optParams Optional parameters.
+ * @return GoogleAnalyticsAdminV1alphaConversionEvent
+ */
+ public function get($name, $optParams = [])
+ {
+ $params = ['name' => $name];
+ $params = \array_merge($params, $optParams);
+ return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaConversionEvent::class);
+ }
+ /**
+ * Returns a list of conversion events in the specified parent property. Returns
+ * an empty list if no conversion events are found.
+ * (conversionEvents.listPropertiesConversionEvents)
+ *
+ * @param string $parent Required. The resource name of the parent property.
+ * Example: 'properties/123'
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param int pageSize The maximum number of resources to return. If
+ * unspecified, at most 50 resources will be returned. The maximum value is 200;
+ * (higher values will be coerced to the maximum)
+ * @opt_param string pageToken A page token, received from a previous
+ * `ListConversionEvents` call. Provide this to retrieve the subsequent page.
+ * When paginating, all other parameters provided to `ListConversionEvents` must
+ * match the call that provided the page token.
+ * @return GoogleAnalyticsAdminV1alphaListConversionEventsResponse
+ */
+ public function listPropertiesConversionEvents($parent, $optParams = [])
+ {
+ $params = ['parent' => $parent];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListConversionEventsResponse::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\PropertiesConversionEvents::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_Resource_PropertiesConversionEvents');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesCustomDimensions.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesCustomDimensions.php
new file mode 100644
index 000000000..ce3d7c3c6
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesCustomDimensions.php
@@ -0,0 +1,120 @@
+
+ * $analyticsadminService = new Google\Service\GoogleAnalyticsAdmin(...);
+ * $customDimensions = $analyticsadminService->customDimensions;
+ *
+ */
+class PropertiesCustomDimensions extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Archives a CustomDimension on a property. (customDimensions.archive)
+ *
+ * @param string $name Required. The name of the CustomDimension to archive.
+ * Example format: properties/1234/customDimensions/5678
+ * @param GoogleAnalyticsAdminV1alphaArchiveCustomDimensionRequest $postBody
+ * @param array $optParams Optional parameters.
+ * @return GoogleProtobufEmpty
+ */
+ public function archive($name, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaArchiveCustomDimensionRequest $postBody, $optParams = [])
+ {
+ $params = ['name' => $name, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('archive', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleProtobufEmpty::class);
+ }
+ /**
+ * Creates a CustomDimension. (customDimensions.create)
+ *
+ * @param string $parent Required. Example format: properties/1234
+ * @param GoogleAnalyticsAdminV1alphaCustomDimension $postBody
+ * @param array $optParams Optional parameters.
+ * @return GoogleAnalyticsAdminV1alphaCustomDimension
+ */
+ public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaCustomDimension $postBody, $optParams = [])
+ {
+ $params = ['parent' => $parent, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaCustomDimension::class);
+ }
+ /**
+ * Lookup for a single CustomDimension. (customDimensions.get)
+ *
+ * @param string $name Required. The name of the CustomDimension to get. Example
+ * format: properties/1234/customDimensions/5678
+ * @param array $optParams Optional parameters.
+ * @return GoogleAnalyticsAdminV1alphaCustomDimension
+ */
+ public function get($name, $optParams = [])
+ {
+ $params = ['name' => $name];
+ $params = \array_merge($params, $optParams);
+ return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaCustomDimension::class);
+ }
+ /**
+ * Lists CustomDimensions on a property.
+ * (customDimensions.listPropertiesCustomDimensions)
+ *
+ * @param string $parent Required. Example format: properties/1234
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param int pageSize The maximum number of resources to return. If
+ * unspecified, at most 50 resources will be returned. The maximum value is 200
+ * (higher values will be coerced to the maximum).
+ * @opt_param string pageToken A page token, received from a previous
+ * `ListCustomDimensions` call. Provide this to retrieve the subsequent page.
+ * When paginating, all other parameters provided to `ListCustomDimensions` must
+ * match the call that provided the page token.
+ * @return GoogleAnalyticsAdminV1alphaListCustomDimensionsResponse
+ */
+ public function listPropertiesCustomDimensions($parent, $optParams = [])
+ {
+ $params = ['parent' => $parent];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListCustomDimensionsResponse::class);
+ }
+ /**
+ * Updates a CustomDimension on a property. (customDimensions.patch)
+ *
+ * @param string $name Output only. Resource name for this CustomDimension
+ * resource. Format: properties/{property}/customDimensions/{customDimension}
+ * @param GoogleAnalyticsAdminV1alphaCustomDimension $postBody
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string updateMask Required. The list of fields to be updated.
+ * Omitted fields will not be updated. To replace the entire entity, use one
+ * path with the string "*" to match all fields.
+ * @return GoogleAnalyticsAdminV1alphaCustomDimension
+ */
+ public function patch($name, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaCustomDimension $postBody, $optParams = [])
+ {
+ $params = ['name' => $name, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaCustomDimension::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\PropertiesCustomDimensions::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_Resource_PropertiesCustomDimensions');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesCustomMetrics.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesCustomMetrics.php
new file mode 100644
index 000000000..2db1af193
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesCustomMetrics.php
@@ -0,0 +1,120 @@
+
+ * $analyticsadminService = new Google\Service\GoogleAnalyticsAdmin(...);
+ * $customMetrics = $analyticsadminService->customMetrics;
+ *
+ */
+class PropertiesCustomMetrics extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Archives a CustomMetric on a property. (customMetrics.archive)
+ *
+ * @param string $name Required. The name of the CustomMetric to archive.
+ * Example format: properties/1234/customMetrics/5678
+ * @param GoogleAnalyticsAdminV1alphaArchiveCustomMetricRequest $postBody
+ * @param array $optParams Optional parameters.
+ * @return GoogleProtobufEmpty
+ */
+ public function archive($name, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaArchiveCustomMetricRequest $postBody, $optParams = [])
+ {
+ $params = ['name' => $name, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('archive', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleProtobufEmpty::class);
+ }
+ /**
+ * Creates a CustomMetric. (customMetrics.create)
+ *
+ * @param string $parent Required. Example format: properties/1234
+ * @param GoogleAnalyticsAdminV1alphaCustomMetric $postBody
+ * @param array $optParams Optional parameters.
+ * @return GoogleAnalyticsAdminV1alphaCustomMetric
+ */
+ public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaCustomMetric $postBody, $optParams = [])
+ {
+ $params = ['parent' => $parent, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaCustomMetric::class);
+ }
+ /**
+ * Lookup for a single CustomMetric. (customMetrics.get)
+ *
+ * @param string $name Required. The name of the CustomMetric to get. Example
+ * format: properties/1234/customMetrics/5678
+ * @param array $optParams Optional parameters.
+ * @return GoogleAnalyticsAdminV1alphaCustomMetric
+ */
+ public function get($name, $optParams = [])
+ {
+ $params = ['name' => $name];
+ $params = \array_merge($params, $optParams);
+ return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaCustomMetric::class);
+ }
+ /**
+ * Lists CustomMetrics on a property.
+ * (customMetrics.listPropertiesCustomMetrics)
+ *
+ * @param string $parent Required. Example format: properties/1234
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param int pageSize The maximum number of resources to return. If
+ * unspecified, at most 50 resources will be returned. The maximum value is 200
+ * (higher values will be coerced to the maximum).
+ * @opt_param string pageToken A page token, received from a previous
+ * `ListCustomMetrics` call. Provide this to retrieve the subsequent page. When
+ * paginating, all other parameters provided to `ListCustomMetrics` must match
+ * the call that provided the page token.
+ * @return GoogleAnalyticsAdminV1alphaListCustomMetricsResponse
+ */
+ public function listPropertiesCustomMetrics($parent, $optParams = [])
+ {
+ $params = ['parent' => $parent];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListCustomMetricsResponse::class);
+ }
+ /**
+ * Updates a CustomMetric on a property. (customMetrics.patch)
+ *
+ * @param string $name Output only. Resource name for this CustomMetric
+ * resource. Format: properties/{property}/customMetrics/{customMetric}
+ * @param GoogleAnalyticsAdminV1alphaCustomMetric $postBody
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string updateMask Required. The list of fields to be updated.
+ * Omitted fields will not be updated. To replace the entire entity, use one
+ * path with the string "*" to match all fields.
+ * @return GoogleAnalyticsAdminV1alphaCustomMetric
+ */
+ public function patch($name, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaCustomMetric $postBody, $optParams = [])
+ {
+ $params = ['name' => $name, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaCustomMetric::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\PropertiesCustomMetrics::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_Resource_PropertiesCustomMetrics');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesDataStreams.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesDataStreams.php
new file mode 100644
index 000000000..0ec2ff66c
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesDataStreams.php
@@ -0,0 +1,136 @@
+
+ * $analyticsadminService = new Google\Service\GoogleAnalyticsAdmin(...);
+ * $dataStreams = $analyticsadminService->dataStreams;
+ *
+ */
+class PropertiesDataStreams extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Creates a DataStream. (dataStreams.create)
+ *
+ * @param string $parent Required. Example format: properties/1234
+ * @param GoogleAnalyticsAdminV1alphaDataStream $postBody
+ * @param array $optParams Optional parameters.
+ * @return GoogleAnalyticsAdminV1alphaDataStream
+ */
+ public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDataStream $postBody, $optParams = [])
+ {
+ $params = ['parent' => $parent, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDataStream::class);
+ }
+ /**
+ * Deletes a DataStream on a property. (dataStreams.delete)
+ *
+ * @param string $name Required. The name of the DataStream to delete. Example
+ * format: properties/1234/dataStreams/5678
+ * @param array $optParams Optional parameters.
+ * @return GoogleProtobufEmpty
+ */
+ public function delete($name, $optParams = [])
+ {
+ $params = ['name' => $name];
+ $params = \array_merge($params, $optParams);
+ return $this->call('delete', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleProtobufEmpty::class);
+ }
+ /**
+ * Lookup for a single DataStream. (dataStreams.get)
+ *
+ * @param string $name Required. The name of the DataStream to get. Example
+ * format: properties/1234/dataStreams/5678
+ * @param array $optParams Optional parameters.
+ * @return GoogleAnalyticsAdminV1alphaDataStream
+ */
+ public function get($name, $optParams = [])
+ {
+ $params = ['name' => $name];
+ $params = \array_merge($params, $optParams);
+ return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDataStream::class);
+ }
+ /**
+ * Returns the Site Tag for the specified web stream. Site Tags are immutable
+ * singletons. (dataStreams.getGlobalSiteTag)
+ *
+ * @param string $name Required. The name of the site tag to lookup. Note that
+ * site tags are singletons and do not have unique IDs. Format:
+ * properties/{property_id}/dataStreams/{stream_id}/globalSiteTag Example:
+ * "properties/123/dataStreams/456/globalSiteTag"
+ * @param array $optParams Optional parameters.
+ * @return GoogleAnalyticsAdminV1alphaGlobalSiteTag
+ */
+ public function getGlobalSiteTag($name, $optParams = [])
+ {
+ $params = ['name' => $name];
+ $params = \array_merge($params, $optParams);
+ return $this->call('getGlobalSiteTag', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaGlobalSiteTag::class);
+ }
+ /**
+ * Lists DataStreams on a property. (dataStreams.listPropertiesDataStreams)
+ *
+ * @param string $parent Required. Example format: properties/1234
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param int pageSize The maximum number of resources to return. If
+ * unspecified, at most 50 resources will be returned. The maximum value is 200
+ * (higher values will be coerced to the maximum).
+ * @opt_param string pageToken A page token, received from a previous
+ * `ListDataStreams` call. Provide this to retrieve the subsequent page. When
+ * paginating, all other parameters provided to `ListDataStreams` must match the
+ * call that provided the page token.
+ * @return GoogleAnalyticsAdminV1alphaListDataStreamsResponse
+ */
+ public function listPropertiesDataStreams($parent, $optParams = [])
+ {
+ $params = ['parent' => $parent];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListDataStreamsResponse::class);
+ }
+ /**
+ * Updates a DataStream on a property. (dataStreams.patch)
+ *
+ * @param string $name Output only. Resource name of this Data Stream. Format:
+ * properties/{property_id}/dataStreams/{stream_id} Example:
+ * "properties/1000/dataStreams/2000"
+ * @param GoogleAnalyticsAdminV1alphaDataStream $postBody
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string updateMask Required. The list of fields to be updated.
+ * Omitted fields will not be updated. To replace the entire entity, use one
+ * path with the string "*" to match all fields.
+ * @return GoogleAnalyticsAdminV1alphaDataStream
+ */
+ public function patch($name, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDataStream $postBody, $optParams = [])
+ {
+ $params = ['name' => $name, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDataStream::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\PropertiesDataStreams::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_Resource_PropertiesDataStreams');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesDataStreamsMeasurementProtocolSecrets.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesDataStreamsMeasurementProtocolSecrets.php
new file mode 100644
index 000000000..9618986cb
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesDataStreamsMeasurementProtocolSecrets.php
@@ -0,0 +1,126 @@
+
+ * $analyticsadminService = new Google\Service\GoogleAnalyticsAdmin(...);
+ * $measurementProtocolSecrets = $analyticsadminService->measurementProtocolSecrets;
+ *
+ */
+class PropertiesDataStreamsMeasurementProtocolSecrets extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Creates a measurement protocol secret. (measurementProtocolSecrets.create)
+ *
+ * @param string $parent Required. The parent resource where this secret will be
+ * created. Format: properties/{property}/dataStreams/{dataStream}
+ * @param GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret $postBody
+ * @param array $optParams Optional parameters.
+ * @return GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret
+ */
+ public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret $postBody, $optParams = [])
+ {
+ $params = ['parent' => $parent, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret::class);
+ }
+ /**
+ * Deletes target MeasurementProtocolSecret. (measurementProtocolSecrets.delete)
+ *
+ * @param string $name Required. The name of the MeasurementProtocolSecret to
+ * delete. Format: properties/{property}/dataStreams/{dataStream}/measurementPro
+ * tocolSecrets/{measurementProtocolSecret}
+ * @param array $optParams Optional parameters.
+ * @return GoogleProtobufEmpty
+ */
+ public function delete($name, $optParams = [])
+ {
+ $params = ['name' => $name];
+ $params = \array_merge($params, $optParams);
+ return $this->call('delete', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleProtobufEmpty::class);
+ }
+ /**
+ * Lookup for a single "GA4" MeasurementProtocolSecret.
+ * (measurementProtocolSecrets.get)
+ *
+ * @param string $name Required. The name of the measurement protocol secret to
+ * lookup. Format: properties/{property}/dataStreams/{dataStream}/measurementPro
+ * tocolSecrets/{measurementProtocolSecret}
+ * @param array $optParams Optional parameters.
+ * @return GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret
+ */
+ public function get($name, $optParams = [])
+ {
+ $params = ['name' => $name];
+ $params = \array_merge($params, $optParams);
+ return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret::class);
+ }
+ /**
+ * Returns child MeasurementProtocolSecrets under the specified parent Property.
+ * (measurementProtocolSecrets.listPropertiesDataStreamsMeasurementProtocolSecre
+ * ts)
+ *
+ * @param string $parent Required. The resource name of the parent stream.
+ * Format:
+ * properties/{property}/dataStreams/{dataStream}/measurementProtocolSecrets
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param int pageSize The maximum number of resources to return. If
+ * unspecified, at most 10 resources will be returned. The maximum value is 10.
+ * Higher values will be coerced to the maximum.
+ * @opt_param string pageToken A page token, received from a previous
+ * `ListMeasurementProtocolSecrets` call. Provide this to retrieve the
+ * subsequent page. When paginating, all other parameters provided to
+ * `ListMeasurementProtocolSecrets` must match the call that provided the page
+ * token.
+ * @return GoogleAnalyticsAdminV1alphaListMeasurementProtocolSecretsResponse
+ */
+ public function listPropertiesDataStreamsMeasurementProtocolSecrets($parent, $optParams = [])
+ {
+ $params = ['parent' => $parent];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListMeasurementProtocolSecretsResponse::class);
+ }
+ /**
+ * Updates a measurement protocol secret. (measurementProtocolSecrets.patch)
+ *
+ * @param string $name Output only. Resource name of this secret. This secret
+ * may be a child of any type of stream. Format: properties/{property}/dataStrea
+ * ms/{dataStream}/measurementProtocolSecrets/{measurementProtocolSecret}
+ * @param GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret $postBody
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string updateMask The list of fields to be updated. Omitted fields
+ * will not be updated.
+ * @return GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret
+ */
+ public function patch($name, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret $postBody, $optParams = [])
+ {
+ $params = ['name' => $name, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\PropertiesDataStreamsMeasurementProtocolSecrets::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_Resource_PropertiesDataStreamsMeasurementProtocolSecrets');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesDisplayVideo360AdvertiserLinkProposals.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesDisplayVideo360AdvertiserLinkProposals.php
new file mode 100644
index 000000000..ed040ea27
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesDisplayVideo360AdvertiserLinkProposals.php
@@ -0,0 +1,148 @@
+
+ * $analyticsadminService = new Google\Service\GoogleAnalyticsAdmin(...);
+ * $displayVideo360AdvertiserLinkProposals = $analyticsadminService->displayVideo360AdvertiserLinkProposals;
+ *
+ */
+class PropertiesDisplayVideo360AdvertiserLinkProposals extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Approves a DisplayVideo360AdvertiserLinkProposal. The
+ * DisplayVideo360AdvertiserLinkProposal will be deleted and a new
+ * DisplayVideo360AdvertiserLink will be created.
+ * (displayVideo360AdvertiserLinkProposals.approve)
+ *
+ * @param string $name Required. The name of the
+ * DisplayVideo360AdvertiserLinkProposal to approve. Example format:
+ * properties/1234/displayVideo360AdvertiserLinkProposals/5678
+ * @param GoogleAnalyticsAdminV1alphaApproveDisplayVideo360AdvertiserLinkProposalRequest $postBody
+ * @param array $optParams Optional parameters.
+ * @return GoogleAnalyticsAdminV1alphaApproveDisplayVideo360AdvertiserLinkProposalResponse
+ */
+ public function approve($name, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaApproveDisplayVideo360AdvertiserLinkProposalRequest $postBody, $optParams = [])
+ {
+ $params = ['name' => $name, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('approve', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaApproveDisplayVideo360AdvertiserLinkProposalResponse::class);
+ }
+ /**
+ * Cancels a DisplayVideo360AdvertiserLinkProposal. Cancelling can mean either:
+ * - Declining a proposal initiated from Display & Video 360 - Withdrawing a
+ * proposal initiated from Google Analytics After being cancelled, a proposal
+ * will eventually be deleted automatically.
+ * (displayVideo360AdvertiserLinkProposals.cancel)
+ *
+ * @param string $name Required. The name of the
+ * DisplayVideo360AdvertiserLinkProposal to cancel. Example format:
+ * properties/1234/displayVideo360AdvertiserLinkProposals/5678
+ * @param GoogleAnalyticsAdminV1alphaCancelDisplayVideo360AdvertiserLinkProposalRequest $postBody
+ * @param array $optParams Optional parameters.
+ * @return GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLinkProposal
+ */
+ public function cancel($name, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaCancelDisplayVideo360AdvertiserLinkProposalRequest $postBody, $optParams = [])
+ {
+ $params = ['name' => $name, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('cancel', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLinkProposal::class);
+ }
+ /**
+ * Creates a DisplayVideo360AdvertiserLinkProposal.
+ * (displayVideo360AdvertiserLinkProposals.create)
+ *
+ * @param string $parent Required. Example format: properties/1234
+ * @param GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLinkProposal $postBody
+ * @param array $optParams Optional parameters.
+ * @return GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLinkProposal
+ */
+ public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLinkProposal $postBody, $optParams = [])
+ {
+ $params = ['parent' => $parent, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLinkProposal::class);
+ }
+ /**
+ * Deletes a DisplayVideo360AdvertiserLinkProposal on a property. This can only
+ * be used on cancelled proposals.
+ * (displayVideo360AdvertiserLinkProposals.delete)
+ *
+ * @param string $name Required. The name of the
+ * DisplayVideo360AdvertiserLinkProposal to delete. Example format:
+ * properties/1234/displayVideo360AdvertiserLinkProposals/5678
+ * @param array $optParams Optional parameters.
+ * @return GoogleProtobufEmpty
+ */
+ public function delete($name, $optParams = [])
+ {
+ $params = ['name' => $name];
+ $params = \array_merge($params, $optParams);
+ return $this->call('delete', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleProtobufEmpty::class);
+ }
+ /**
+ * Lookup for a single DisplayVideo360AdvertiserLinkProposal.
+ * (displayVideo360AdvertiserLinkProposals.get)
+ *
+ * @param string $name Required. The name of the
+ * DisplayVideo360AdvertiserLinkProposal to get. Example format:
+ * properties/1234/displayVideo360AdvertiserLinkProposals/5678
+ * @param array $optParams Optional parameters.
+ * @return GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLinkProposal
+ */
+ public function get($name, $optParams = [])
+ {
+ $params = ['name' => $name];
+ $params = \array_merge($params, $optParams);
+ return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLinkProposal::class);
+ }
+ /**
+ * Lists DisplayVideo360AdvertiserLinkProposals on a property. (displayVideo360A
+ * dvertiserLinkProposals.listPropertiesDisplayVideo360AdvertiserLinkProposals)
+ *
+ * @param string $parent Required. Example format: properties/1234
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param int pageSize The maximum number of resources to return. If
+ * unspecified, at most 50 resources will be returned. The maximum value is 200
+ * (higher values will be coerced to the maximum).
+ * @opt_param string pageToken A page token, received from a previous
+ * `ListDisplayVideo360AdvertiserLinkProposals` call. Provide this to retrieve
+ * the subsequent page. When paginating, all other parameters provided to
+ * `ListDisplayVideo360AdvertiserLinkProposals` must match the call that
+ * provided the page token.
+ * @return GoogleAnalyticsAdminV1alphaListDisplayVideo360AdvertiserLinkProposalsResponse
+ */
+ public function listPropertiesDisplayVideo360AdvertiserLinkProposals($parent, $optParams = [])
+ {
+ $params = ['parent' => $parent];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListDisplayVideo360AdvertiserLinkProposalsResponse::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\PropertiesDisplayVideo360AdvertiserLinkProposals::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_Resource_PropertiesDisplayVideo360AdvertiserLinkProposals');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesDisplayVideo360AdvertiserLinks.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesDisplayVideo360AdvertiserLinks.php
new file mode 100644
index 000000000..37601f884
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesDisplayVideo360AdvertiserLinks.php
@@ -0,0 +1,129 @@
+
+ * $analyticsadminService = new Google\Service\GoogleAnalyticsAdmin(...);
+ * $displayVideo360AdvertiserLinks = $analyticsadminService->displayVideo360AdvertiserLinks;
+ *
+ */
+class PropertiesDisplayVideo360AdvertiserLinks extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Creates a DisplayVideo360AdvertiserLink. This can only be utilized by users
+ * who have proper authorization both on the Google Analytics property and on
+ * the Display & Video 360 advertiser. Users who do not have access to the
+ * Display & Video 360 advertiser should instead seek to create a
+ * DisplayVideo360LinkProposal. (displayVideo360AdvertiserLinks.create)
+ *
+ * @param string $parent Required. Example format: properties/1234
+ * @param GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLink $postBody
+ * @param array $optParams Optional parameters.
+ * @return GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLink
+ */
+ public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLink $postBody, $optParams = [])
+ {
+ $params = ['parent' => $parent, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLink::class);
+ }
+ /**
+ * Deletes a DisplayVideo360AdvertiserLink on a property.
+ * (displayVideo360AdvertiserLinks.delete)
+ *
+ * @param string $name Required. The name of the DisplayVideo360AdvertiserLink
+ * to delete. Example format:
+ * properties/1234/displayVideo360AdvertiserLinks/5678
+ * @param array $optParams Optional parameters.
+ * @return GoogleProtobufEmpty
+ */
+ public function delete($name, $optParams = [])
+ {
+ $params = ['name' => $name];
+ $params = \array_merge($params, $optParams);
+ return $this->call('delete', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleProtobufEmpty::class);
+ }
+ /**
+ * Look up a single DisplayVideo360AdvertiserLink
+ * (displayVideo360AdvertiserLinks.get)
+ *
+ * @param string $name Required. The name of the DisplayVideo360AdvertiserLink
+ * to get. Example format: properties/1234/displayVideo360AdvertiserLink/5678
+ * @param array $optParams Optional parameters.
+ * @return GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLink
+ */
+ public function get($name, $optParams = [])
+ {
+ $params = ['name' => $name];
+ $params = \array_merge($params, $optParams);
+ return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLink::class);
+ }
+ /**
+ * Lists all DisplayVideo360AdvertiserLinks on a property.
+ * (displayVideo360AdvertiserLinks.listPropertiesDisplayVideo360AdvertiserLinks)
+ *
+ * @param string $parent Required. Example format: properties/1234
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param int pageSize The maximum number of resources to return. If
+ * unspecified, at most 50 resources will be returned. The maximum value is 200
+ * (higher values will be coerced to the maximum).
+ * @opt_param string pageToken A page token, received from a previous
+ * `ListDisplayVideo360AdvertiserLinks` call. Provide this to retrieve the
+ * subsequent page. When paginating, all other parameters provided to
+ * `ListDisplayVideo360AdvertiserLinks` must match the call that provided the
+ * page token.
+ * @return GoogleAnalyticsAdminV1alphaListDisplayVideo360AdvertiserLinksResponse
+ */
+ public function listPropertiesDisplayVideo360AdvertiserLinks($parent, $optParams = [])
+ {
+ $params = ['parent' => $parent];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListDisplayVideo360AdvertiserLinksResponse::class);
+ }
+ /**
+ * Updates a DisplayVideo360AdvertiserLink on a property.
+ * (displayVideo360AdvertiserLinks.patch)
+ *
+ * @param string $name Output only. The resource name for this
+ * DisplayVideo360AdvertiserLink resource. Format:
+ * properties/{propertyId}/displayVideo360AdvertiserLinks/{linkId} Note: linkId
+ * is not the Display & Video 360 Advertiser ID
+ * @param GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLink $postBody
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string updateMask Required. The list of fields to be updated.
+ * Omitted fields will not be updated. To replace the entire entity, use one
+ * path with the string "*" to match all fields.
+ * @return GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLink
+ */
+ public function patch($name, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLink $postBody, $optParams = [])
+ {
+ $params = ['name' => $name, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLink::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\PropertiesDisplayVideo360AdvertiserLinks::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_Resource_PropertiesDisplayVideo360AdvertiserLinks');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesFirebaseLinks.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesFirebaseLinks.php
new file mode 100644
index 000000000..0c6ffe356
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesFirebaseLinks.php
@@ -0,0 +1,90 @@
+
+ * $analyticsadminService = new Google\Service\GoogleAnalyticsAdmin(...);
+ * $firebaseLinks = $analyticsadminService->firebaseLinks;
+ *
+ */
+class PropertiesFirebaseLinks extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Creates a FirebaseLink. Properties can have at most one FirebaseLink.
+ * (firebaseLinks.create)
+ *
+ * @param string $parent Required. Format: properties/{property_id} Example:
+ * properties/1234
+ * @param GoogleAnalyticsAdminV1alphaFirebaseLink $postBody
+ * @param array $optParams Optional parameters.
+ * @return GoogleAnalyticsAdminV1alphaFirebaseLink
+ */
+ public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaFirebaseLink $postBody, $optParams = [])
+ {
+ $params = ['parent' => $parent, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaFirebaseLink::class);
+ }
+ /**
+ * Deletes a FirebaseLink on a property (firebaseLinks.delete)
+ *
+ * @param string $name Required. Format:
+ * properties/{property_id}/firebaseLinks/{firebase_link_id} Example:
+ * properties/1234/firebaseLinks/5678
+ * @param array $optParams Optional parameters.
+ * @return GoogleProtobufEmpty
+ */
+ public function delete($name, $optParams = [])
+ {
+ $params = ['name' => $name];
+ $params = \array_merge($params, $optParams);
+ return $this->call('delete', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleProtobufEmpty::class);
+ }
+ /**
+ * Lists FirebaseLinks on a property. Properties can have at most one
+ * FirebaseLink. (firebaseLinks.listPropertiesFirebaseLinks)
+ *
+ * @param string $parent Required. Format: properties/{property_id} Example:
+ * properties/1234
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param int pageSize The maximum number of resources to return. The
+ * service may return fewer than this value, even if there are additional pages.
+ * If unspecified, at most 50 resources will be returned. The maximum value is
+ * 200; (higher values will be coerced to the maximum)
+ * @opt_param string pageToken A page token, received from a previous
+ * `ListFirebaseLinks` call. Provide this to retrieve the subsequent page. When
+ * paginating, all other parameters provided to `ListProperties` must match the
+ * call that provided the page token.
+ * @return GoogleAnalyticsAdminV1alphaListFirebaseLinksResponse
+ */
+ public function listPropertiesFirebaseLinks($parent, $optParams = [])
+ {
+ $params = ['parent' => $parent];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListFirebaseLinksResponse::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\PropertiesFirebaseLinks::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_Resource_PropertiesFirebaseLinks');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesGoogleAdsLinks.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesGoogleAdsLinks.php
new file mode 100644
index 000000000..c203e6cba
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesGoogleAdsLinks.php
@@ -0,0 +1,106 @@
+
+ * $analyticsadminService = new Google\Service\GoogleAnalyticsAdmin(...);
+ * $googleAdsLinks = $analyticsadminService->googleAdsLinks;
+ *
+ */
+class PropertiesGoogleAdsLinks extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Creates a GoogleAdsLink. (googleAdsLinks.create)
+ *
+ * @param string $parent Required. Example format: properties/1234
+ * @param GoogleAnalyticsAdminV1alphaGoogleAdsLink $postBody
+ * @param array $optParams Optional parameters.
+ * @return GoogleAnalyticsAdminV1alphaGoogleAdsLink
+ */
+ public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaGoogleAdsLink $postBody, $optParams = [])
+ {
+ $params = ['parent' => $parent, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaGoogleAdsLink::class);
+ }
+ /**
+ * Deletes a GoogleAdsLink on a property (googleAdsLinks.delete)
+ *
+ * @param string $name Required. Example format:
+ * properties/1234/googleAdsLinks/5678
+ * @param array $optParams Optional parameters.
+ * @return GoogleProtobufEmpty
+ */
+ public function delete($name, $optParams = [])
+ {
+ $params = ['name' => $name];
+ $params = \array_merge($params, $optParams);
+ return $this->call('delete', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleProtobufEmpty::class);
+ }
+ /**
+ * Lists GoogleAdsLinks on a property.
+ * (googleAdsLinks.listPropertiesGoogleAdsLinks)
+ *
+ * @param string $parent Required. Example format: properties/1234
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param int pageSize The maximum number of resources to return. If
+ * unspecified, at most 50 resources will be returned. The maximum value is 200
+ * (higher values will be coerced to the maximum).
+ * @opt_param string pageToken A page token, received from a previous
+ * `ListGoogleAdsLinks` call. Provide this to retrieve the subsequent page. When
+ * paginating, all other parameters provided to `ListGoogleAdsLinks` must match
+ * the call that provided the page token.
+ * @return GoogleAnalyticsAdminV1alphaListGoogleAdsLinksResponse
+ */
+ public function listPropertiesGoogleAdsLinks($parent, $optParams = [])
+ {
+ $params = ['parent' => $parent];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListGoogleAdsLinksResponse::class);
+ }
+ /**
+ * Updates a GoogleAdsLink on a property (googleAdsLinks.patch)
+ *
+ * @param string $name Output only. Format:
+ * properties/{propertyId}/googleAdsLinks/{googleAdsLinkId} Note:
+ * googleAdsLinkId is not the Google Ads customer ID.
+ * @param GoogleAnalyticsAdminV1alphaGoogleAdsLink $postBody
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string updateMask Required. The list of fields to be updated.
+ * Field names must be in snake case (e.g., "field_to_update"). Omitted fields
+ * will not be updated. To replace the entire entity, use one path with the
+ * string "*" to match all fields.
+ * @return GoogleAnalyticsAdminV1alphaGoogleAdsLink
+ */
+ public function patch($name, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaGoogleAdsLink $postBody, $optParams = [])
+ {
+ $params = ['name' => $name, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaGoogleAdsLink::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\PropertiesGoogleAdsLinks::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_Resource_PropertiesGoogleAdsLinks');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesIosAppDataStreams.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesIosAppDataStreams.php
new file mode 100644
index 000000000..37ed73a8c
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesIosAppDataStreams.php
@@ -0,0 +1,112 @@
+
+ * $analyticsadminService = new Google\Service\GoogleAnalyticsAdmin(...);
+ * $iosAppDataStreams = $analyticsadminService->iosAppDataStreams;
+ *
+ */
+class PropertiesIosAppDataStreams extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Deletes an iOS app stream on a property. (iosAppDataStreams.delete)
+ *
+ * @param string $name Required. The name of the iOS app data stream to delete.
+ * Format: properties/{property_id}/iosAppDataStreams/{stream_id} Example:
+ * "properties/123/iosAppDataStreams/456"
+ * @param array $optParams Optional parameters.
+ * @return GoogleProtobufEmpty
+ */
+ public function delete($name, $optParams = [])
+ {
+ $params = ['name' => $name];
+ $params = \array_merge($params, $optParams);
+ return $this->call('delete', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleProtobufEmpty::class);
+ }
+ /**
+ * Lookup for a single IosAppDataStream (iosAppDataStreams.get)
+ *
+ * @param string $name Required. The name of the iOS app data stream to lookup.
+ * Format: properties/{property_id}/iosAppDataStreams/{stream_id} Example:
+ * "properties/123/iosAppDataStreams/456"
+ * @param array $optParams Optional parameters.
+ * @return GoogleAnalyticsAdminV1alphaIosAppDataStream
+ */
+ public function get($name, $optParams = [])
+ {
+ $params = ['name' => $name];
+ $params = \array_merge($params, $optParams);
+ return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaIosAppDataStream::class);
+ }
+ /**
+ * Returns child iOS app data streams under the specified parent property. iOS
+ * app data streams will be excluded if the caller does not have access. Returns
+ * an empty list if no relevant iOS app data streams are found.
+ * (iosAppDataStreams.listPropertiesIosAppDataStreams)
+ *
+ * @param string $parent Required. The name of the parent property. For example,
+ * to list results of app streams under the property with Id 123:
+ * "properties/123"
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param int pageSize The maximum number of resources to return. If
+ * unspecified, at most 50 resources will be returned. The maximum value is 200;
+ * (higher values will be coerced to the maximum)
+ * @opt_param string pageToken A page token, received from a previous
+ * `ListIosAppDataStreams` call. Provide this to retrieve the subsequent page.
+ * When paginating, all other parameters provided to `ListIosAppDataStreams`
+ * must match the call that provided the page token.
+ * @return GoogleAnalyticsAdminV1alphaListIosAppDataStreamsResponse
+ */
+ public function listPropertiesIosAppDataStreams($parent, $optParams = [])
+ {
+ $params = ['parent' => $parent];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListIosAppDataStreamsResponse::class);
+ }
+ /**
+ * Updates an iOS app stream on a property. (iosAppDataStreams.patch)
+ *
+ * @param string $name Output only. Resource name of this Data Stream. Format:
+ * properties/{property_id}/iosAppDataStreams/{stream_id} Example:
+ * "properties/1000/iosAppDataStreams/2000"
+ * @param GoogleAnalyticsAdminV1alphaIosAppDataStream $postBody
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string updateMask Required. The list of fields to be updated.
+ * Field names must be in snake case (e.g., "field_to_update"). Omitted fields
+ * will not be updated. To replace the entire entity, use one path with the
+ * string "*" to match all fields.
+ * @return GoogleAnalyticsAdminV1alphaIosAppDataStream
+ */
+ public function patch($name, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaIosAppDataStream $postBody, $optParams = [])
+ {
+ $params = ['name' => $name, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaIosAppDataStream::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\PropertiesIosAppDataStreams::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_Resource_PropertiesIosAppDataStreams');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesIosAppDataStreamsMeasurementProtocolSecrets.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesIosAppDataStreamsMeasurementProtocolSecrets.php
new file mode 100644
index 000000000..7c0147dfa
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesIosAppDataStreamsMeasurementProtocolSecrets.php
@@ -0,0 +1,131 @@
+
+ * $analyticsadminService = new Google\Service\GoogleAnalyticsAdmin(...);
+ * $measurementProtocolSecrets = $analyticsadminService->measurementProtocolSecrets;
+ *
+ */
+class PropertiesIosAppDataStreamsMeasurementProtocolSecrets extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Creates a measurement protocol secret. (measurementProtocolSecrets.create)
+ *
+ * @param string $parent Required. The parent resource where this secret will be
+ * created. Any type of stream (WebDataStream, IosAppDataStream,
+ * AndroidAppDataStream) may be a parent. Format:
+ * properties/{property}/webDataStreams/{webDataStream}
+ * @param GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret $postBody
+ * @param array $optParams Optional parameters.
+ * @return GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret
+ */
+ public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret $postBody, $optParams = [])
+ {
+ $params = ['parent' => $parent, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret::class);
+ }
+ /**
+ * Deletes target MeasurementProtocolSecret. (measurementProtocolSecrets.delete)
+ *
+ * @param string $name Required. The name of the MeasurementProtocolSecret to
+ * delete. Format: properties/{property}/webDataStreams/{webDataStream}/measurem
+ * entProtocolSecrets/{measurementProtocolSecret} Note: Any type of stream
+ * (WebDataStream, IosAppDataStream, AndroidAppDataStream) may be a parent.
+ * @param array $optParams Optional parameters.
+ * @return GoogleProtobufEmpty
+ */
+ public function delete($name, $optParams = [])
+ {
+ $params = ['name' => $name];
+ $params = \array_merge($params, $optParams);
+ return $this->call('delete', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleProtobufEmpty::class);
+ }
+ /**
+ * Lookup for a single "GA4" MeasurementProtocolSecret.
+ * (measurementProtocolSecrets.get)
+ *
+ * @param string $name Required. The name of the measurement protocol secret to
+ * lookup. Format: properties/{property}/webDataStreams/{webDataStream}/measurem
+ * entProtocolSecrets/{measurementProtocolSecret} Note: Any type of stream
+ * (WebDataStream, IosAppDataStream, AndroidAppDataStream) may be a parent.
+ * @param array $optParams Optional parameters.
+ * @return GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret
+ */
+ public function get($name, $optParams = [])
+ {
+ $params = ['name' => $name];
+ $params = \array_merge($params, $optParams);
+ return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret::class);
+ }
+ /**
+ * Returns child MeasurementProtocolSecrets under the specified parent Property.
+ * (measurementProtocolSecrets.listPropertiesIosAppDataStreamsMeasurementProtoco
+ * lSecrets)
+ *
+ * @param string $parent Required. The resource name of the parent stream. Any
+ * type of stream (WebDataStream, IosAppDataStream, AndroidAppDataStream) may be
+ * a parent. Format: properties/{property}/webDataStreams/{webDataStream}/measur
+ * ementProtocolSecrets
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param int pageSize The maximum number of resources to return. If
+ * unspecified, at most 10 resources will be returned. The maximum value is 10.
+ * Higher values will be coerced to the maximum.
+ * @opt_param string pageToken A page token, received from a previous
+ * `ListMeasurementProtocolSecrets` call. Provide this to retrieve the
+ * subsequent page. When paginating, all other parameters provided to
+ * `ListMeasurementProtocolSecrets` must match the call that provided the page
+ * token.
+ * @return GoogleAnalyticsAdminV1alphaListMeasurementProtocolSecretsResponse
+ */
+ public function listPropertiesIosAppDataStreamsMeasurementProtocolSecrets($parent, $optParams = [])
+ {
+ $params = ['parent' => $parent];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListMeasurementProtocolSecretsResponse::class);
+ }
+ /**
+ * Updates a measurement protocol secret. (measurementProtocolSecrets.patch)
+ *
+ * @param string $name Output only. Resource name of this secret. This secret
+ * may be a child of any type of stream. Format: properties/{property}/webDataSt
+ * reams/{webDataStream}/measurementProtocolSecrets/{measurementProtocolSecret}
+ * @param GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret $postBody
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string updateMask The list of fields to be updated. Omitted fields
+ * will not be updated.
+ * @return GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret
+ */
+ public function patch($name, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret $postBody, $optParams = [])
+ {
+ $params = ['name' => $name, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\PropertiesIosAppDataStreamsMeasurementProtocolSecrets::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_Resource_PropertiesIosAppDataStreamsMeasurementProtocolSecrets');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesSearchAds360Links.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesSearchAds360Links.php
new file mode 100644
index 000000000..1feffcfd7
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesSearchAds360Links.php
@@ -0,0 +1,119 @@
+
+ * $analyticsadminService = new Google\Service\GoogleAnalyticsAdmin(...);
+ * $searchAds360Links = $analyticsadminService->searchAds360Links;
+ *
+ */
+class PropertiesSearchAds360Links extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Creates a SearchAds360Link. (searchAds360Links.create)
+ *
+ * @param string $parent Required. Example format: properties/1234
+ * @param GoogleAnalyticsAdminV1alphaSearchAds360Link $postBody
+ * @param array $optParams Optional parameters.
+ * @return GoogleAnalyticsAdminV1alphaSearchAds360Link
+ */
+ public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaSearchAds360Link $postBody, $optParams = [])
+ {
+ $params = ['parent' => $parent, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaSearchAds360Link::class);
+ }
+ /**
+ * Deletes a SearchAds360Link on a property. (searchAds360Links.delete)
+ *
+ * @param string $name Required. The name of the SearchAds360Link to delete.
+ * Example format: properties/1234/SearchAds360Links/5678
+ * @param array $optParams Optional parameters.
+ * @return GoogleProtobufEmpty
+ */
+ public function delete($name, $optParams = [])
+ {
+ $params = ['name' => $name];
+ $params = \array_merge($params, $optParams);
+ return $this->call('delete', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleProtobufEmpty::class);
+ }
+ /**
+ * Look up a single SearchAds360Link (searchAds360Links.get)
+ *
+ * @param string $name Required. The name of the SearchAds360Link to get.
+ * Example format: properties/1234/SearchAds360Link/5678
+ * @param array $optParams Optional parameters.
+ * @return GoogleAnalyticsAdminV1alphaSearchAds360Link
+ */
+ public function get($name, $optParams = [])
+ {
+ $params = ['name' => $name];
+ $params = \array_merge($params, $optParams);
+ return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaSearchAds360Link::class);
+ }
+ /**
+ * Lists all SearchAds360Links on a property.
+ * (searchAds360Links.listPropertiesSearchAds360Links)
+ *
+ * @param string $parent Required. Example format: properties/1234
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param int pageSize The maximum number of resources to return. If
+ * unspecified, at most 50 resources will be returned. The maximum value is 200
+ * (higher values will be coerced to the maximum).
+ * @opt_param string pageToken A page token, received from a previous
+ * `ListSearchAds360Links` call. Provide this to retrieve the subsequent page.
+ * When paginating, all other parameters provided to `ListSearchAds360Links`
+ * must match the call that provided the page token.
+ * @return GoogleAnalyticsAdminV1alphaListSearchAds360LinksResponse
+ */
+ public function listPropertiesSearchAds360Links($parent, $optParams = [])
+ {
+ $params = ['parent' => $parent];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListSearchAds360LinksResponse::class);
+ }
+ /**
+ * Updates a SearchAds360Link on a property. (searchAds360Links.patch)
+ *
+ * @param string $name Output only. The resource name for this SearchAds360Link
+ * resource. Format: properties/{propertyId}/searchAds360Links/{linkId} Note:
+ * linkId is not the Search Ads 360 advertiser ID
+ * @param GoogleAnalyticsAdminV1alphaSearchAds360Link $postBody
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string updateMask Required. The list of fields to be updated.
+ * Omitted fields will not be updated. To replace the entire entity, use one
+ * path with the string "*" to match all fields.
+ * @return GoogleAnalyticsAdminV1alphaSearchAds360Link
+ */
+ public function patch($name, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaSearchAds360Link $postBody, $optParams = [])
+ {
+ $params = ['name' => $name, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaSearchAds360Link::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\PropertiesSearchAds360Links::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_Resource_PropertiesSearchAds360Links');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesUserLinks.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesUserLinks.php
new file mode 100644
index 000000000..8bb59a716
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesUserLinks.php
@@ -0,0 +1,222 @@
+
+ * $analyticsadminService = new Google\Service\GoogleAnalyticsAdmin(...);
+ * $userLinks = $analyticsadminService->userLinks;
+ *
+ */
+class PropertiesUserLinks extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Lists all user links on an account or property, including implicit ones that
+ * come from effective permissions granted by groups or organization admin
+ * roles. If a returned user link does not have direct permissions, they cannot
+ * be removed from the account or property directly with the DeleteUserLink
+ * command. They have to be removed from the group/etc that gives them
+ * permissions, which is currently only usable/discoverable in the GA or GMP
+ * UIs. (userLinks.audit)
+ *
+ * @param string $parent Required. Example format: accounts/1234
+ * @param GoogleAnalyticsAdminV1alphaAuditUserLinksRequest $postBody
+ * @param array $optParams Optional parameters.
+ * @return GoogleAnalyticsAdminV1alphaAuditUserLinksResponse
+ */
+ public function audit($parent, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAuditUserLinksRequest $postBody, $optParams = [])
+ {
+ $params = ['parent' => $parent, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('audit', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaAuditUserLinksResponse::class);
+ }
+ /**
+ * Creates information about multiple users' links to an account or property.
+ * This method is transactional. If any UserLink cannot be created, none of the
+ * UserLinks will be created. (userLinks.batchCreate)
+ *
+ * @param string $parent Required. The account or property that all user links
+ * in the request are for. This field is required. The parent field in the
+ * CreateUserLinkRequest messages must either be empty or match this field.
+ * Example format: accounts/1234
+ * @param GoogleAnalyticsAdminV1alphaBatchCreateUserLinksRequest $postBody
+ * @param array $optParams Optional parameters.
+ * @return GoogleAnalyticsAdminV1alphaBatchCreateUserLinksResponse
+ */
+ public function batchCreate($parent, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaBatchCreateUserLinksRequest $postBody, $optParams = [])
+ {
+ $params = ['parent' => $parent, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('batchCreate', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaBatchCreateUserLinksResponse::class);
+ }
+ /**
+ * Deletes information about multiple users' links to an account or property.
+ * (userLinks.batchDelete)
+ *
+ * @param string $parent Required. The account or property that all user links
+ * in the request are for. The parent of all values for user link names to
+ * delete must match this field. Example format: accounts/1234
+ * @param GoogleAnalyticsAdminV1alphaBatchDeleteUserLinksRequest $postBody
+ * @param array $optParams Optional parameters.
+ * @return GoogleProtobufEmpty
+ */
+ public function batchDelete($parent, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaBatchDeleteUserLinksRequest $postBody, $optParams = [])
+ {
+ $params = ['parent' => $parent, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('batchDelete', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleProtobufEmpty::class);
+ }
+ /**
+ * Gets information about multiple users' links to an account or property.
+ * (userLinks.batchGet)
+ *
+ * @param string $parent Required. The account or property that all user links
+ * in the request are for. The parent of all provided values for the 'names'
+ * field must match this field. Example format: accounts/1234
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string names Required. The names of the user links to retrieve. A
+ * maximum of 1000 user links can be retrieved in a batch. Format:
+ * accounts/{accountId}/userLinks/{userLinkId}
+ * @return GoogleAnalyticsAdminV1alphaBatchGetUserLinksResponse
+ */
+ public function batchGet($parent, $optParams = [])
+ {
+ $params = ['parent' => $parent];
+ $params = \array_merge($params, $optParams);
+ return $this->call('batchGet', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaBatchGetUserLinksResponse::class);
+ }
+ /**
+ * Updates information about multiple users' links to an account or property.
+ * (userLinks.batchUpdate)
+ *
+ * @param string $parent Required. The account or property that all user links
+ * in the request are for. The parent field in the UpdateUserLinkRequest
+ * messages must either be empty or match this field. Example format:
+ * accounts/1234
+ * @param GoogleAnalyticsAdminV1alphaBatchUpdateUserLinksRequest $postBody
+ * @param array $optParams Optional parameters.
+ * @return GoogleAnalyticsAdminV1alphaBatchUpdateUserLinksResponse
+ */
+ public function batchUpdate($parent, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaBatchUpdateUserLinksRequest $postBody, $optParams = [])
+ {
+ $params = ['parent' => $parent, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('batchUpdate', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaBatchUpdateUserLinksResponse::class);
+ }
+ /**
+ * Creates a user link on an account or property. If the user with the specified
+ * email already has permissions on the account or property, then the user's
+ * existing permissions will be unioned with the permissions specified in the
+ * new UserLink. (userLinks.create)
+ *
+ * @param string $parent Required. Example format: accounts/1234
+ * @param GoogleAnalyticsAdminV1alphaUserLink $postBody
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param bool notifyNewUser Optional. If set, then email the new user
+ * notifying them that they've been granted permissions to the resource.
+ * @return GoogleAnalyticsAdminV1alphaUserLink
+ */
+ public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaUserLink $postBody, $optParams = [])
+ {
+ $params = ['parent' => $parent, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaUserLink::class);
+ }
+ /**
+ * Deletes a user link on an account or property. (userLinks.delete)
+ *
+ * @param string $name Required. Example format: accounts/1234/userLinks/5678
+ * @param array $optParams Optional parameters.
+ * @return GoogleProtobufEmpty
+ */
+ public function delete($name, $optParams = [])
+ {
+ $params = ['name' => $name];
+ $params = \array_merge($params, $optParams);
+ return $this->call('delete', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleProtobufEmpty::class);
+ }
+ /**
+ * Gets information about a user's link to an account or property.
+ * (userLinks.get)
+ *
+ * @param string $name Required. Example format: accounts/1234/userLinks/5678
+ * @param array $optParams Optional parameters.
+ * @return GoogleAnalyticsAdminV1alphaUserLink
+ */
+ public function get($name, $optParams = [])
+ {
+ $params = ['name' => $name];
+ $params = \array_merge($params, $optParams);
+ return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaUserLink::class);
+ }
+ /**
+ * Lists all user links on an account or property.
+ * (userLinks.listPropertiesUserLinks)
+ *
+ * @param string $parent Required. Example format: accounts/1234
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param int pageSize The maximum number of user links to return. The
+ * service may return fewer than this value. If unspecified, at most 200 user
+ * links will be returned. The maximum value is 500; values above 500 will be
+ * coerced to 500.
+ * @opt_param string pageToken A page token, received from a previous
+ * `ListUserLinks` call. Provide this to retrieve the subsequent page. When
+ * paginating, all other parameters provided to `ListUserLinks` must match the
+ * call that provided the page token.
+ * @return GoogleAnalyticsAdminV1alphaListUserLinksResponse
+ */
+ public function listPropertiesUserLinks($parent, $optParams = [])
+ {
+ $params = ['parent' => $parent];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListUserLinksResponse::class);
+ }
+ /**
+ * Updates a user link on an account or property. (userLinks.patch)
+ *
+ * @param string $name Output only. Example format:
+ * properties/1234/userLinks/5678
+ * @param GoogleAnalyticsAdminV1alphaUserLink $postBody
+ * @param array $optParams Optional parameters.
+ * @return GoogleAnalyticsAdminV1alphaUserLink
+ */
+ public function patch($name, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaUserLink $postBody, $optParams = [])
+ {
+ $params = ['name' => $name, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaUserLink::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\PropertiesUserLinks::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_Resource_PropertiesUserLinks');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesWebDataStreams.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesWebDataStreams.php
new file mode 100644
index 000000000..a4cf22954
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesWebDataStreams.php
@@ -0,0 +1,128 @@
+
+ * $analyticsadminService = new Google\Service\GoogleAnalyticsAdmin(...);
+ * $webDataStreams = $analyticsadminService->webDataStreams;
+ *
+ */
+class PropertiesWebDataStreams extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Creates a web stream with the specified location and attributes.
+ * (webDataStreams.create)
+ *
+ * @param string $parent Required. The parent resource where this web data
+ * stream will be created. Format: properties/123
+ * @param GoogleAnalyticsAdminV1alphaWebDataStream $postBody
+ * @param array $optParams Optional parameters.
+ * @return GoogleAnalyticsAdminV1alphaWebDataStream
+ */
+ public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaWebDataStream $postBody, $optParams = [])
+ {
+ $params = ['parent' => $parent, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaWebDataStream::class);
+ }
+ /**
+ * Deletes a web stream on a property. (webDataStreams.delete)
+ *
+ * @param string $name Required. The name of the web data stream to delete.
+ * Format: properties/{property_id}/webDataStreams/{stream_id} Example:
+ * "properties/123/webDataStreams/456"
+ * @param array $optParams Optional parameters.
+ * @return GoogleProtobufEmpty
+ */
+ public function delete($name, $optParams = [])
+ {
+ $params = ['name' => $name];
+ $params = \array_merge($params, $optParams);
+ return $this->call('delete', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleProtobufEmpty::class);
+ }
+ /**
+ * Lookup for a single WebDataStream (webDataStreams.get)
+ *
+ * @param string $name Required. The name of the web data stream to lookup.
+ * Format: properties/{property_id}/webDataStreams/{stream_id} Example:
+ * "properties/123/webDataStreams/456"
+ * @param array $optParams Optional parameters.
+ * @return GoogleAnalyticsAdminV1alphaWebDataStream
+ */
+ public function get($name, $optParams = [])
+ {
+ $params = ['name' => $name];
+ $params = \array_merge($params, $optParams);
+ return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaWebDataStream::class);
+ }
+ /**
+ * Returns child web data streams under the specified parent property. Web data
+ * streams will be excluded if the caller does not have access. Returns an empty
+ * list if no relevant web data streams are found.
+ * (webDataStreams.listPropertiesWebDataStreams)
+ *
+ * @param string $parent Required. The name of the parent property. For example,
+ * to list results of web streams under the property with Id 123:
+ * "properties/123"
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param int pageSize The maximum number of resources to return. If
+ * unspecified, at most 50 resources will be returned. The maximum value is 200;
+ * (higher values will be coerced to the maximum)
+ * @opt_param string pageToken A page token, received from a previous
+ * `ListWebDataStreams` call. Provide this to retrieve the subsequent page. When
+ * paginating, all other parameters provided to `ListWebDataStreams` must match
+ * the call that provided the page token.
+ * @return GoogleAnalyticsAdminV1alphaListWebDataStreamsResponse
+ */
+ public function listPropertiesWebDataStreams($parent, $optParams = [])
+ {
+ $params = ['parent' => $parent];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListWebDataStreamsResponse::class);
+ }
+ /**
+ * Updates a web stream on a property. (webDataStreams.patch)
+ *
+ * @param string $name Output only. Resource name of this Data Stream. Format:
+ * properties/{property_id}/webDataStreams/{stream_id} Example:
+ * "properties/1000/webDataStreams/2000"
+ * @param GoogleAnalyticsAdminV1alphaWebDataStream $postBody
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string updateMask Required. The list of fields to be updated.
+ * Field names must be in snake case (e.g., "field_to_update"). Omitted fields
+ * will not be updated. To replace the entire entity, use one path with the
+ * string "*" to match all fields.
+ * @return GoogleAnalyticsAdminV1alphaWebDataStream
+ */
+ public function patch($name, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaWebDataStream $postBody, $optParams = [])
+ {
+ $params = ['name' => $name, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaWebDataStream::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\PropertiesWebDataStreams::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_Resource_PropertiesWebDataStreams');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesWebDataStreamsMeasurementProtocolSecrets.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesWebDataStreamsMeasurementProtocolSecrets.php
new file mode 100644
index 000000000..d9dc6675e
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/GoogleAnalyticsAdmin/Resource/PropertiesWebDataStreamsMeasurementProtocolSecrets.php
@@ -0,0 +1,131 @@
+
+ * $analyticsadminService = new Google\Service\GoogleAnalyticsAdmin(...);
+ * $measurementProtocolSecrets = $analyticsadminService->measurementProtocolSecrets;
+ *
+ */
+class PropertiesWebDataStreamsMeasurementProtocolSecrets extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Creates a measurement protocol secret. (measurementProtocolSecrets.create)
+ *
+ * @param string $parent Required. The parent resource where this secret will be
+ * created. Any type of stream (WebDataStream, IosAppDataStream,
+ * AndroidAppDataStream) may be a parent. Format:
+ * properties/{property}/webDataStreams/{webDataStream}
+ * @param GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret $postBody
+ * @param array $optParams Optional parameters.
+ * @return GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret
+ */
+ public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret $postBody, $optParams = [])
+ {
+ $params = ['parent' => $parent, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret::class);
+ }
+ /**
+ * Deletes target MeasurementProtocolSecret. (measurementProtocolSecrets.delete)
+ *
+ * @param string $name Required. The name of the MeasurementProtocolSecret to
+ * delete. Format: properties/{property}/webDataStreams/{webDataStream}/measurem
+ * entProtocolSecrets/{measurementProtocolSecret} Note: Any type of stream
+ * (WebDataStream, IosAppDataStream, AndroidAppDataStream) may be a parent.
+ * @param array $optParams Optional parameters.
+ * @return GoogleProtobufEmpty
+ */
+ public function delete($name, $optParams = [])
+ {
+ $params = ['name' => $name];
+ $params = \array_merge($params, $optParams);
+ return $this->call('delete', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleProtobufEmpty::class);
+ }
+ /**
+ * Lookup for a single "GA4" MeasurementProtocolSecret.
+ * (measurementProtocolSecrets.get)
+ *
+ * @param string $name Required. The name of the measurement protocol secret to
+ * lookup. Format: properties/{property}/webDataStreams/{webDataStream}/measurem
+ * entProtocolSecrets/{measurementProtocolSecret} Note: Any type of stream
+ * (WebDataStream, IosAppDataStream, AndroidAppDataStream) may be a parent.
+ * @param array $optParams Optional parameters.
+ * @return GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret
+ */
+ public function get($name, $optParams = [])
+ {
+ $params = ['name' => $name];
+ $params = \array_merge($params, $optParams);
+ return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret::class);
+ }
+ /**
+ * Returns child MeasurementProtocolSecrets under the specified parent Property.
+ * (measurementProtocolSecrets.listPropertiesWebDataStreamsMeasurementProtocolSe
+ * crets)
+ *
+ * @param string $parent Required. The resource name of the parent stream. Any
+ * type of stream (WebDataStream, IosAppDataStream, AndroidAppDataStream) may be
+ * a parent. Format: properties/{property}/webDataStreams/{webDataStream}/measur
+ * ementProtocolSecrets
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param int pageSize The maximum number of resources to return. If
+ * unspecified, at most 10 resources will be returned. The maximum value is 10.
+ * Higher values will be coerced to the maximum.
+ * @opt_param string pageToken A page token, received from a previous
+ * `ListMeasurementProtocolSecrets` call. Provide this to retrieve the
+ * subsequent page. When paginating, all other parameters provided to
+ * `ListMeasurementProtocolSecrets` must match the call that provided the page
+ * token.
+ * @return GoogleAnalyticsAdminV1alphaListMeasurementProtocolSecretsResponse
+ */
+ public function listPropertiesWebDataStreamsMeasurementProtocolSecrets($parent, $optParams = [])
+ {
+ $params = ['parent' => $parent];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaListMeasurementProtocolSecretsResponse::class);
+ }
+ /**
+ * Updates a measurement protocol secret. (measurementProtocolSecrets.patch)
+ *
+ * @param string $name Output only. Resource name of this secret. This secret
+ * may be a child of any type of stream. Format: properties/{property}/webDataSt
+ * reams/{webDataStream}/measurementProtocolSecrets/{measurementProtocolSecret}
+ * @param GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret $postBody
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string updateMask The list of fields to be updated. Omitted fields
+ * will not be updated.
+ * @return GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret
+ */
+ public function patch($name, \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret $postBody, $optParams = [])
+ {
+ $params = ['name' => $name, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\GoogleAnalyticsAdminV1alphaMeasurementProtocolSecret::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\GoogleAnalyticsAdmin\Resource\PropertiesWebDataStreamsMeasurementProtocolSecrets::class, 'Google\\Site_Kit_Dependencies\\Google_Service_GoogleAnalyticsAdmin_Resource_PropertiesWebDataStreamsMeasurementProtocolSecrets');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub.php
new file mode 100644
index 000000000..93867189e
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub.php
@@ -0,0 +1,64 @@
+
+ * This is an invitation-only API.
+ *
+ *
+ * For more information about this service, see the API
+ * Documentation
+ *
+ *
+ * @author Google, Inc.
+ */
+class Ideahub extends \Google\Site_Kit_Dependencies\Google\Service
+{
+ public $platforms_properties_ideaActivities;
+ public $platforms_properties_ideaStates;
+ public $platforms_properties_ideas;
+ public $platforms_properties_locales;
+ public $platforms_properties_topicStates;
+ /**
+ * Constructs the internal representation of the Ideahub service.
+ *
+ * @param Client|array $clientOrConfig The client used to deliver requests, or a
+ * config array to pass to a new Client instance.
+ * @param string $rootUrl The root URL used for requests to the service.
+ */
+ public function __construct($clientOrConfig = [], $rootUrl = null)
+ {
+ parent::__construct($clientOrConfig);
+ $this->rootUrl = $rootUrl ?: 'https://ideahub.googleapis.com/';
+ $this->servicePath = '';
+ $this->batchPath = 'batch';
+ $this->version = 'v1beta';
+ $this->serviceName = 'ideahub';
+ $this->platforms_properties_ideaActivities = new \Google\Site_Kit_Dependencies\Google\Service\Ideahub\Resource\PlatformsPropertiesIdeaActivities($this, $this->serviceName, 'ideaActivities', ['methods' => ['create' => ['path' => 'v1beta/{+parent}/ideaActivities', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]);
+ $this->platforms_properties_ideaStates = new \Google\Site_Kit_Dependencies\Google\Service\Ideahub\Resource\PlatformsPropertiesIdeaStates($this, $this->serviceName, 'ideaStates', ['methods' => ['patch' => ['path' => 'v1beta/{+name}', 'httpMethod' => 'PATCH', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'updateMask' => ['location' => 'query', 'type' => 'string']]]]]);
+ $this->platforms_properties_ideas = new \Google\Site_Kit_Dependencies\Google\Service\Ideahub\Resource\PlatformsPropertiesIdeas($this, $this->serviceName, 'ideas', ['methods' => ['list' => ['path' => 'v1beta/{+parent}/ideas', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'filter' => ['location' => 'query', 'type' => 'string'], 'orderBy' => ['location' => 'query', 'type' => 'string'], 'pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string']]]]]);
+ $this->platforms_properties_locales = new \Google\Site_Kit_Dependencies\Google\Service\Ideahub\Resource\PlatformsPropertiesLocales($this, $this->serviceName, 'locales', ['methods' => ['list' => ['path' => 'v1beta/{+parent}/locales', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string']]]]]);
+ $this->platforms_properties_topicStates = new \Google\Site_Kit_Dependencies\Google\Service\Ideahub\Resource\PlatformsPropertiesTopicStates($this, $this->serviceName, 'topicStates', ['methods' => ['patch' => ['path' => 'v1beta/{+name}', 'httpMethod' => 'PATCH', 'parameters' => ['name' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'updateMask' => ['location' => 'query', 'type' => 'string']]]]]);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Ideahub::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Ideahub');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1alphaAvailableLocale.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1alphaAvailableLocale.php
new file mode 100644
index 000000000..dd6eedb4e
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1alphaAvailableLocale.php
@@ -0,0 +1,42 @@
+locale = $locale;
+ }
+ public function getLocale()
+ {
+ return $this->locale;
+ }
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ public function getName()
+ {
+ return $this->name;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Ideahub\GoogleSearchIdeahubV1alphaAvailableLocale::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Ideahub_GoogleSearchIdeahubV1alphaAvailableLocale');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1alphaIdea.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1alphaIdea.php
new file mode 100644
index 000000000..3f7811bac
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1alphaIdea.php
@@ -0,0 +1,59 @@
+name = $name;
+ }
+ public function getName()
+ {
+ return $this->name;
+ }
+ public function setText($text)
+ {
+ $this->text = $text;
+ }
+ public function getText()
+ {
+ return $this->text;
+ }
+ /**
+ * @param GoogleSearchIdeahubV1alphaTopic[]
+ */
+ public function setTopics($topics)
+ {
+ $this->topics = $topics;
+ }
+ /**
+ * @return GoogleSearchIdeahubV1alphaTopic[]
+ */
+ public function getTopics()
+ {
+ return $this->topics;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Ideahub\GoogleSearchIdeahubV1alphaIdea::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Ideahub_GoogleSearchIdeahubV1alphaIdea');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1alphaIdeaActivity.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1alphaIdeaActivity.php
new file mode 100644
index 000000000..4f9d66396
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1alphaIdeaActivity.php
@@ -0,0 +1,70 @@
+ideas = $ideas;
+ }
+ public function getIdeas()
+ {
+ return $this->ideas;
+ }
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ public function getName()
+ {
+ return $this->name;
+ }
+ public function setTopics($topics)
+ {
+ $this->topics = $topics;
+ }
+ public function getTopics()
+ {
+ return $this->topics;
+ }
+ public function setType($type)
+ {
+ $this->type = $type;
+ }
+ public function getType()
+ {
+ return $this->type;
+ }
+ public function setUri($uri)
+ {
+ $this->uri = $uri;
+ }
+ public function getUri()
+ {
+ return $this->uri;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Ideahub\GoogleSearchIdeahubV1alphaIdeaActivity::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Ideahub_GoogleSearchIdeahubV1alphaIdeaActivity');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1alphaIdeaState.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1alphaIdeaState.php
new file mode 100644
index 000000000..ebf84c274
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1alphaIdeaState.php
@@ -0,0 +1,51 @@
+dismissed = $dismissed;
+ }
+ public function getDismissed()
+ {
+ return $this->dismissed;
+ }
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ public function getName()
+ {
+ return $this->name;
+ }
+ public function setSaved($saved)
+ {
+ $this->saved = $saved;
+ }
+ public function getSaved()
+ {
+ return $this->saved;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Ideahub\GoogleSearchIdeahubV1alphaIdeaState::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Ideahub_GoogleSearchIdeahubV1alphaIdeaState');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1alphaListAvailableLocalesResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1alphaListAvailableLocalesResponse.php
new file mode 100644
index 000000000..586f46596
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1alphaListAvailableLocalesResponse.php
@@ -0,0 +1,50 @@
+availableLocales = $availableLocales;
+ }
+ /**
+ * @return GoogleSearchIdeahubV1alphaAvailableLocale[]
+ */
+ public function getAvailableLocales()
+ {
+ return $this->availableLocales;
+ }
+ public function setNextPageToken($nextPageToken)
+ {
+ $this->nextPageToken = $nextPageToken;
+ }
+ public function getNextPageToken()
+ {
+ return $this->nextPageToken;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Ideahub\GoogleSearchIdeahubV1alphaListAvailableLocalesResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Ideahub_GoogleSearchIdeahubV1alphaListAvailableLocalesResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1alphaListIdeasResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1alphaListIdeasResponse.php
new file mode 100644
index 000000000..60a77e8ee
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1alphaListIdeasResponse.php
@@ -0,0 +1,50 @@
+ideas = $ideas;
+ }
+ /**
+ * @return GoogleSearchIdeahubV1alphaIdea[]
+ */
+ public function getIdeas()
+ {
+ return $this->ideas;
+ }
+ public function setNextPageToken($nextPageToken)
+ {
+ $this->nextPageToken = $nextPageToken;
+ }
+ public function getNextPageToken()
+ {
+ return $this->nextPageToken;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Ideahub\GoogleSearchIdeahubV1alphaListIdeasResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Ideahub_GoogleSearchIdeahubV1alphaListIdeasResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1alphaTopic.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1alphaTopic.php
new file mode 100644
index 000000000..b9a16d7b7
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1alphaTopic.php
@@ -0,0 +1,51 @@
+displayName = $displayName;
+ }
+ public function getDisplayName()
+ {
+ return $this->displayName;
+ }
+ public function setMid($mid)
+ {
+ $this->mid = $mid;
+ }
+ public function getMid()
+ {
+ return $this->mid;
+ }
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ public function getName()
+ {
+ return $this->name;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Ideahub\GoogleSearchIdeahubV1alphaTopic::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Ideahub_GoogleSearchIdeahubV1alphaTopic');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1alphaTopicState.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1alphaTopicState.php
new file mode 100644
index 000000000..45883bad8
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1alphaTopicState.php
@@ -0,0 +1,51 @@
+dismissed = $dismissed;
+ }
+ public function getDismissed()
+ {
+ return $this->dismissed;
+ }
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ public function getName()
+ {
+ return $this->name;
+ }
+ public function setSaved($saved)
+ {
+ $this->saved = $saved;
+ }
+ public function getSaved()
+ {
+ return $this->saved;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Ideahub\GoogleSearchIdeahubV1alphaTopicState::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Ideahub_GoogleSearchIdeahubV1alphaTopicState');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1betaAvailableLocale.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1betaAvailableLocale.php
new file mode 100644
index 000000000..9548d3729
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1betaAvailableLocale.php
@@ -0,0 +1,60 @@
+locale = $locale;
+ }
+ /**
+ * @return string
+ */
+ public function getLocale()
+ {
+ return $this->locale;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Ideahub\GoogleSearchIdeahubV1betaAvailableLocale::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Ideahub_GoogleSearchIdeahubV1betaAvailableLocale');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1betaIdea.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1betaIdea.php
new file mode 100644
index 000000000..597c195ed
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1betaIdea.php
@@ -0,0 +1,77 @@
+name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param string
+ */
+ public function setText($text)
+ {
+ $this->text = $text;
+ }
+ /**
+ * @return string
+ */
+ public function getText()
+ {
+ return $this->text;
+ }
+ /**
+ * @param GoogleSearchIdeahubV1betaTopic[]
+ */
+ public function setTopics($topics)
+ {
+ $this->topics = $topics;
+ }
+ /**
+ * @return GoogleSearchIdeahubV1betaTopic[]
+ */
+ public function getTopics()
+ {
+ return $this->topics;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Ideahub\GoogleSearchIdeahubV1betaIdea::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Ideahub_GoogleSearchIdeahubV1betaIdea');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1betaIdeaActivity.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1betaIdeaActivity.php
new file mode 100644
index 000000000..693880e10
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1betaIdeaActivity.php
@@ -0,0 +1,115 @@
+ideas = $ideas;
+ }
+ /**
+ * @return string[]
+ */
+ public function getIdeas()
+ {
+ return $this->ideas;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param string[]
+ */
+ public function setTopics($topics)
+ {
+ $this->topics = $topics;
+ }
+ /**
+ * @return string[]
+ */
+ public function getTopics()
+ {
+ return $this->topics;
+ }
+ /**
+ * @param string
+ */
+ public function setType($type)
+ {
+ $this->type = $type;
+ }
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+ /**
+ * @param string
+ */
+ public function setUri($uri)
+ {
+ $this->uri = $uri;
+ }
+ /**
+ * @return string
+ */
+ public function getUri()
+ {
+ return $this->uri;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Ideahub\GoogleSearchIdeahubV1betaIdeaActivity::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Ideahub_GoogleSearchIdeahubV1betaIdeaActivity');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1betaIdeaState.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1betaIdeaState.php
new file mode 100644
index 000000000..6e60c12a7
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1betaIdeaState.php
@@ -0,0 +1,78 @@
+dismissed = $dismissed;
+ }
+ /**
+ * @return bool
+ */
+ public function getDismissed()
+ {
+ return $this->dismissed;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param bool
+ */
+ public function setSaved($saved)
+ {
+ $this->saved = $saved;
+ }
+ /**
+ * @return bool
+ */
+ public function getSaved()
+ {
+ return $this->saved;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Ideahub\GoogleSearchIdeahubV1betaIdeaState::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Ideahub_GoogleSearchIdeahubV1betaIdeaState');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1betaListAvailableLocalesResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1betaListAvailableLocalesResponse.php
new file mode 100644
index 000000000..b569d69f7
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1betaListAvailableLocalesResponse.php
@@ -0,0 +1,59 @@
+availableLocales = $availableLocales;
+ }
+ /**
+ * @return GoogleSearchIdeahubV1betaAvailableLocale[]
+ */
+ public function getAvailableLocales()
+ {
+ return $this->availableLocales;
+ }
+ /**
+ * @param string
+ */
+ public function setNextPageToken($nextPageToken)
+ {
+ $this->nextPageToken = $nextPageToken;
+ }
+ /**
+ * @return string
+ */
+ public function getNextPageToken()
+ {
+ return $this->nextPageToken;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Ideahub\GoogleSearchIdeahubV1betaListAvailableLocalesResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Ideahub_GoogleSearchIdeahubV1betaListAvailableLocalesResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1betaListIdeasResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1betaListIdeasResponse.php
new file mode 100644
index 000000000..b055b4db5
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1betaListIdeasResponse.php
@@ -0,0 +1,59 @@
+ideas = $ideas;
+ }
+ /**
+ * @return GoogleSearchIdeahubV1betaIdea[]
+ */
+ public function getIdeas()
+ {
+ return $this->ideas;
+ }
+ /**
+ * @param string
+ */
+ public function setNextPageToken($nextPageToken)
+ {
+ $this->nextPageToken = $nextPageToken;
+ }
+ /**
+ * @return string
+ */
+ public function getNextPageToken()
+ {
+ return $this->nextPageToken;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Ideahub\GoogleSearchIdeahubV1betaListIdeasResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Ideahub_GoogleSearchIdeahubV1betaListIdeasResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1betaTopic.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1betaTopic.php
new file mode 100644
index 000000000..cb1b7af23
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1betaTopic.php
@@ -0,0 +1,78 @@
+displayName = $displayName;
+ }
+ /**
+ * @return string
+ */
+ public function getDisplayName()
+ {
+ return $this->displayName;
+ }
+ /**
+ * @param string
+ */
+ public function setMid($mid)
+ {
+ $this->mid = $mid;
+ }
+ /**
+ * @return string
+ */
+ public function getMid()
+ {
+ return $this->mid;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Ideahub\GoogleSearchIdeahubV1betaTopic::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Ideahub_GoogleSearchIdeahubV1betaTopic');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1betaTopicState.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1betaTopicState.php
new file mode 100644
index 000000000..e874a85ad
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/GoogleSearchIdeahubV1betaTopicState.php
@@ -0,0 +1,78 @@
+dismissed = $dismissed;
+ }
+ /**
+ * @return bool
+ */
+ public function getDismissed()
+ {
+ return $this->dismissed;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param bool
+ */
+ public function setSaved($saved)
+ {
+ $this->saved = $saved;
+ }
+ /**
+ * @return bool
+ */
+ public function getSaved()
+ {
+ return $this->saved;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Ideahub\GoogleSearchIdeahubV1betaTopicState::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Ideahub_GoogleSearchIdeahubV1betaTopicState');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/Resource/Ideas.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/Resource/Ideas.php
new file mode 100644
index 000000000..0d5fad0b7
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/Resource/Ideas.php
@@ -0,0 +1,63 @@
+
+ * $ideahubService = new Google\Service\Ideahub(...);
+ * $ideas = $ideahubService->ideas;
+ *
+ */
+class Ideas extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * List ideas for a given Creator and filter and sort options. (ideas.listIdeas)
+ *
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string filter Allows filtering. Supported syntax: * Filter
+ * expressions are made up of one or more restrictions. * Restrictions are
+ * implicitly combined, as if the `AND` operator was always used. The `OR`
+ * operator is currently unsupported. * Supported functions: - `saved(bool)`: If
+ * set to true, fetches only saved ideas. If set to false, fetches all except
+ * saved ideas. Can't be simultaneously used with `dismissed(bool)`. -
+ * `dismissed(bool)`: If set to true, fetches only dismissed ideas. Can't be
+ * simultaneously used with `saved(bool)`. The `false` value is currently
+ * unsupported. Examples: * `saved(true)` * `saved(false)` * `dismissed(true)`
+ * The length of this field should be no more than 500 characters.
+ * @opt_param string orderBy Order semantics described below.
+ * @opt_param int pageSize The maximum number of ideas per page. If unspecified,
+ * at most 10 ideas will be returned. The maximum value is 2000; values above
+ * 2000 will be coerced to 2000.
+ * @opt_param string pageToken Used to fetch next page.
+ * @opt_param string parent If defined, specifies the creator for which to
+ * filter by. Format: publishers/{publisher}/properties/{property}
+ * @return GoogleSearchIdeahubV1alphaListIdeasResponse
+ */
+ public function listIdeas($optParams = [])
+ {
+ $params = [];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Ideahub\GoogleSearchIdeahubV1alphaListIdeasResponse::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Ideahub\Resource\Ideas::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Ideahub_Resource_Ideas');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/Resource/Platforms.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/Resource/Platforms.php
new file mode 100644
index 000000000..e12f1fe13
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/Resource/Platforms.php
@@ -0,0 +1,32 @@
+
+ * $ideahubService = new Google\Service\Ideahub(...);
+ * $platforms = $ideahubService->platforms;
+ *
+ */
+class Platforms extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Ideahub\Resource\Platforms::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Ideahub_Resource_Platforms');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/Resource/PlatformsProperties.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/Resource/PlatformsProperties.php
new file mode 100644
index 000000000..05ffed9f1
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/Resource/PlatformsProperties.php
@@ -0,0 +1,32 @@
+
+ * $ideahubService = new Google\Service\Ideahub(...);
+ * $properties = $ideahubService->properties;
+ *
+ */
+class PlatformsProperties extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Ideahub\Resource\PlatformsProperties::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Ideahub_Resource_PlatformsProperties');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/Resource/PlatformsPropertiesIdeaActivities.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/Resource/PlatformsPropertiesIdeaActivities.php
new file mode 100644
index 000000000..1af93f7de
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/Resource/PlatformsPropertiesIdeaActivities.php
@@ -0,0 +1,48 @@
+
+ * $ideahubService = new Google\Service\Ideahub(...);
+ * $ideaActivities = $ideahubService->ideaActivities;
+ *
+ */
+class PlatformsPropertiesIdeaActivities extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Creates an idea activity entry. (ideaActivities.create)
+ *
+ * @param string $parent Required. The parent resource where this idea activity
+ * will be created. Format: platforms/{platform}/property/{property}
+ * @param GoogleSearchIdeahubV1betaIdeaActivity $postBody
+ * @param array $optParams Optional parameters.
+ * @return GoogleSearchIdeahubV1betaIdeaActivity
+ */
+ public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\Ideahub\GoogleSearchIdeahubV1betaIdeaActivity $postBody, $optParams = [])
+ {
+ $params = ['parent' => $parent, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\Ideahub\GoogleSearchIdeahubV1betaIdeaActivity::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Ideahub\Resource\PlatformsPropertiesIdeaActivities::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Ideahub_Resource_PlatformsPropertiesIdeaActivities');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/Resource/PlatformsPropertiesIdeaStates.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/Resource/PlatformsPropertiesIdeaStates.php
new file mode 100644
index 000000000..d439c63e2
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/Resource/PlatformsPropertiesIdeaStates.php
@@ -0,0 +1,50 @@
+
+ * $ideahubService = new Google\Service\Ideahub(...);
+ * $ideaStates = $ideahubService->ideaStates;
+ *
+ */
+class PlatformsPropertiesIdeaStates extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Update an idea state resource. (ideaStates.patch)
+ *
+ * @param string $name Unique identifier for the idea state. Format:
+ * platforms/{platform}/properties/{property}/ideaStates/{idea_state}
+ * @param GoogleSearchIdeahubV1betaIdeaState $postBody
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string updateMask The list of fields to be updated.
+ * @return GoogleSearchIdeahubV1betaIdeaState
+ */
+ public function patch($name, \Google\Site_Kit_Dependencies\Google\Service\Ideahub\GoogleSearchIdeahubV1betaIdeaState $postBody, $optParams = [])
+ {
+ $params = ['name' => $name, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\Ideahub\GoogleSearchIdeahubV1betaIdeaState::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Ideahub\Resource\PlatformsPropertiesIdeaStates::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Ideahub_Resource_PlatformsPropertiesIdeaStates');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/Resource/PlatformsPropertiesIdeas.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/Resource/PlatformsPropertiesIdeas.php
new file mode 100644
index 000000000..80d3778c2
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/Resource/PlatformsPropertiesIdeas.php
@@ -0,0 +1,64 @@
+
+ * $ideahubService = new Google\Service\Ideahub(...);
+ * $ideas = $ideahubService->ideas;
+ *
+ */
+class PlatformsPropertiesIdeas extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * List ideas for a given Creator and filter and sort options.
+ * (ideas.listPlatformsPropertiesIdeas)
+ *
+ * @param string $parent Required. If defined, specifies the creator for which
+ * to filter by. Format: publishers/{publisher}/properties/{property}
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string filter Allows filtering. Supported syntax: * Filter
+ * expressions are made up of one or more restrictions. * Restrictions are
+ * implicitly combined, as if the `AND` operator was always used. The `OR`
+ * operator is currently unsupported. * Supported functions: - `saved(bool)`: If
+ * set to true, fetches only saved ideas. If set to false, fetches all except
+ * saved ideas. Can't be simultaneously used with `dismissed(bool)`. -
+ * `dismissed(bool)`: If set to true, fetches only dismissed ideas. Can't be
+ * simultaneously used with `saved(bool)`. The `false` value is currently
+ * unsupported. Examples: * `saved(true)` * `saved(false)` * `dismissed(true)`
+ * The length of this field should be no more than 500 characters.
+ * @opt_param string orderBy Order semantics described below.
+ * @opt_param int pageSize The maximum number of ideas per page. If unspecified,
+ * at most 10 ideas will be returned. The maximum value is 2000; values above
+ * 2000 will be coerced to 2000.
+ * @opt_param string pageToken Used to fetch next page.
+ * @return GoogleSearchIdeahubV1betaListIdeasResponse
+ */
+ public function listPlatformsPropertiesIdeas($parent, $optParams = [])
+ {
+ $params = ['parent' => $parent];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Ideahub\GoogleSearchIdeahubV1betaListIdeasResponse::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Ideahub\Resource\PlatformsPropertiesIdeas::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Ideahub_Resource_PlatformsPropertiesIdeas');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/Resource/PlatformsPropertiesLocales.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/Resource/PlatformsPropertiesLocales.php
new file mode 100644
index 000000000..39b23140d
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/Resource/PlatformsPropertiesLocales.php
@@ -0,0 +1,56 @@
+
+ * $ideahubService = new Google\Service\Ideahub(...);
+ * $locales = $ideahubService->locales;
+ *
+ */
+class PlatformsPropertiesLocales extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Returns which locales ideas are available in for a given Creator.
+ * (locales.listPlatformsPropertiesLocales)
+ *
+ * @param string $parent Required. The web property to check idea availability
+ * for Format: platforms/{platform}/property/{property}
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param int pageSize The maximum number of locales to return. The service
+ * may return fewer than this value. If unspecified, at most 100 locales will be
+ * returned. The maximum value is 100; values above 100 will be coerced to 100.
+ * @opt_param string pageToken A page token, received from a previous
+ * `ListAvailableLocales` call. Provide this to retrieve the subsequent page.
+ * When paginating, all other parameters provided to `ListAvailableLocales` must
+ * match the call that provided the page token.
+ * @return GoogleSearchIdeahubV1betaListAvailableLocalesResponse
+ */
+ public function listPlatformsPropertiesLocales($parent, $optParams = [])
+ {
+ $params = ['parent' => $parent];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\Ideahub\GoogleSearchIdeahubV1betaListAvailableLocalesResponse::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Ideahub\Resource\PlatformsPropertiesLocales::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Ideahub_Resource_PlatformsPropertiesLocales');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/Resource/PlatformsPropertiesTopicStates.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/Resource/PlatformsPropertiesTopicStates.php
new file mode 100644
index 000000000..ca1751ff9
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/Ideahub/Resource/PlatformsPropertiesTopicStates.php
@@ -0,0 +1,50 @@
+
+ * $ideahubService = new Google\Service\Ideahub(...);
+ * $topicStates = $ideahubService->topicStates;
+ *
+ */
+class PlatformsPropertiesTopicStates extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Update a topic state resource. (topicStates.patch)
+ *
+ * @param string $name Unique identifier for the topic state. Format:
+ * platforms/{platform}/properties/{property}/topicStates/{topic_state}
+ * @param GoogleSearchIdeahubV1betaTopicState $postBody
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string updateMask The list of fields to be updated.
+ * @return GoogleSearchIdeahubV1betaTopicState
+ */
+ public function patch($name, \Google\Site_Kit_Dependencies\Google\Service\Ideahub\GoogleSearchIdeahubV1betaTopicState $postBody, $optParams = [])
+ {
+ $params = ['name' => $name, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\Ideahub\GoogleSearchIdeahubV1betaTopicState::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\Ideahub\Resource\PlatformsPropertiesTopicStates::class, 'Google\\Site_Kit_Dependencies\\Google_Service_Ideahub_Resource_PlatformsPropertiesTopicStates');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights.php
new file mode 100644
index 000000000..25137379a
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights.php
@@ -0,0 +1,61 @@
+
+ * The PageSpeed Insights API lets you analyze the performance of your website
+ * with a simple API. It offers tailored suggestions for how you can optimize
+ * your site, and lets you easily integrate PageSpeed Insights analysis into
+ * your development tools and workflow.
+ *
+ *
+ * For more information about this service, see the API
+ * Documentation
+ *
+ *
+ * @author Google, Inc.
+ */
+class PagespeedInsights extends \Google\Site_Kit_Dependencies\Google\Service
+{
+ /** Associate you with your personal info on Google. */
+ const OPENID = "openid";
+ public $pagespeedapi;
+ /**
+ * Constructs the internal representation of the PagespeedInsights service.
+ *
+ * @param Client|array $clientOrConfig The client used to deliver requests, or a
+ * config array to pass to a new Client instance.
+ * @param string $rootUrl The root URL used for requests to the service.
+ */
+ public function __construct($clientOrConfig = [], $rootUrl = null)
+ {
+ parent::__construct($clientOrConfig);
+ $this->rootUrl = $rootUrl ?: 'https://pagespeedonline.googleapis.com/';
+ $this->servicePath = '';
+ $this->batchPath = 'batch';
+ $this->version = 'v5';
+ $this->serviceName = 'pagespeedonline';
+ $this->pagespeedapi = new \Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\Resource\Pagespeedapi($this, $this->serviceName, 'pagespeedapi', ['methods' => ['runpagespeed' => ['path' => 'pagespeedonline/v5/runPagespeed', 'httpMethod' => 'GET', 'parameters' => ['url' => ['location' => 'query', 'type' => 'string', 'required' => \true], 'captchaToken' => ['location' => 'query', 'type' => 'string'], 'category' => ['location' => 'query', 'type' => 'string', 'repeated' => \true], 'locale' => ['location' => 'query', 'type' => 'string'], 'strategy' => ['location' => 'query', 'type' => 'string'], 'utm_campaign' => ['location' => 'query', 'type' => 'string'], 'utm_source' => ['location' => 'query', 'type' => 'string']]]]]);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PagespeedInsights');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/AuditRefs.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/AuditRefs.php
new file mode 100644
index 000000000..15595874e
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/AuditRefs.php
@@ -0,0 +1,106 @@
+acronym = $acronym;
+ }
+ /**
+ * @return string
+ */
+ public function getAcronym()
+ {
+ return $this->acronym;
+ }
+ /**
+ * @param string
+ */
+ public function setGroup($group)
+ {
+ $this->group = $group;
+ }
+ /**
+ * @return string
+ */
+ public function getGroup()
+ {
+ return $this->group;
+ }
+ /**
+ * @param string
+ */
+ public function setId($id)
+ {
+ $this->id = $id;
+ }
+ /**
+ * @return string
+ */
+ public function getId()
+ {
+ return $this->id;
+ }
+ /**
+ * @param string[]
+ */
+ public function setRelevantAudits($relevantAudits)
+ {
+ $this->relevantAudits = $relevantAudits;
+ }
+ /**
+ * @return string[]
+ */
+ public function getRelevantAudits()
+ {
+ return $this->relevantAudits;
+ }
+ public function setWeight($weight)
+ {
+ $this->weight = $weight;
+ }
+ public function getWeight()
+ {
+ return $this->weight;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\AuditRefs::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PagespeedInsights_AuditRefs');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/Bucket.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/Bucket.php
new file mode 100644
index 000000000..6d1051823
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/Bucket.php
@@ -0,0 +1,69 @@
+max = $max;
+ }
+ /**
+ * @return int
+ */
+ public function getMax()
+ {
+ return $this->max;
+ }
+ /**
+ * @param int
+ */
+ public function setMin($min)
+ {
+ $this->min = $min;
+ }
+ /**
+ * @return int
+ */
+ public function getMin()
+ {
+ return $this->min;
+ }
+ public function setProportion($proportion)
+ {
+ $this->proportion = $proportion;
+ }
+ public function getProportion()
+ {
+ return $this->proportion;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\Bucket::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PagespeedInsights_Bucket');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/Categories.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/Categories.php
new file mode 100644
index 000000000..7f4f42a05
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/Categories.php
@@ -0,0 +1,105 @@
+ "best-practices"];
+ protected $accessibilityType = \Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\LighthouseCategoryV5::class;
+ protected $accessibilityDataType = '';
+ protected $bestPracticesType = \Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\LighthouseCategoryV5::class;
+ protected $bestPracticesDataType = '';
+ protected $performanceType = \Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\LighthouseCategoryV5::class;
+ protected $performanceDataType = '';
+ protected $pwaType = \Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\LighthouseCategoryV5::class;
+ protected $pwaDataType = '';
+ protected $seoType = \Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\LighthouseCategoryV5::class;
+ protected $seoDataType = '';
+ /**
+ * @param LighthouseCategoryV5
+ */
+ public function setAccessibility(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\LighthouseCategoryV5 $accessibility)
+ {
+ $this->accessibility = $accessibility;
+ }
+ /**
+ * @return LighthouseCategoryV5
+ */
+ public function getAccessibility()
+ {
+ return $this->accessibility;
+ }
+ /**
+ * @param LighthouseCategoryV5
+ */
+ public function setBestPractices(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\LighthouseCategoryV5 $bestPractices)
+ {
+ $this->bestPractices = $bestPractices;
+ }
+ /**
+ * @return LighthouseCategoryV5
+ */
+ public function getBestPractices()
+ {
+ return $this->bestPractices;
+ }
+ /**
+ * @param LighthouseCategoryV5
+ */
+ public function setPerformance(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\LighthouseCategoryV5 $performance)
+ {
+ $this->performance = $performance;
+ }
+ /**
+ * @return LighthouseCategoryV5
+ */
+ public function getPerformance()
+ {
+ return $this->performance;
+ }
+ /**
+ * @param LighthouseCategoryV5
+ */
+ public function setPwa(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\LighthouseCategoryV5 $pwa)
+ {
+ $this->pwa = $pwa;
+ }
+ /**
+ * @return LighthouseCategoryV5
+ */
+ public function getPwa()
+ {
+ return $this->pwa;
+ }
+ /**
+ * @param LighthouseCategoryV5
+ */
+ public function setSeo(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\LighthouseCategoryV5 $seo)
+ {
+ $this->seo = $seo;
+ }
+ /**
+ * @return LighthouseCategoryV5
+ */
+ public function getSeo()
+ {
+ return $this->seo;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\Categories::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PagespeedInsights_Categories');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/CategoryGroupV5.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/CategoryGroupV5.php
new file mode 100644
index 000000000..6ff62e306
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/CategoryGroupV5.php
@@ -0,0 +1,60 @@
+description = $description;
+ }
+ /**
+ * @return string
+ */
+ public function getDescription()
+ {
+ return $this->description;
+ }
+ /**
+ * @param string
+ */
+ public function setTitle($title)
+ {
+ $this->title = $title;
+ }
+ /**
+ * @return string
+ */
+ public function getTitle()
+ {
+ return $this->title;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\CategoryGroupV5::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PagespeedInsights_CategoryGroupV5');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/ConfigSettings.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/ConfigSettings.php
new file mode 100644
index 000000000..1e7937092
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/ConfigSettings.php
@@ -0,0 +1,114 @@
+channel = $channel;
+ }
+ /**
+ * @return string
+ */
+ public function getChannel()
+ {
+ return $this->channel;
+ }
+ /**
+ * @param string
+ */
+ public function setEmulatedFormFactor($emulatedFormFactor)
+ {
+ $this->emulatedFormFactor = $emulatedFormFactor;
+ }
+ /**
+ * @return string
+ */
+ public function getEmulatedFormFactor()
+ {
+ return $this->emulatedFormFactor;
+ }
+ /**
+ * @param string
+ */
+ public function setFormFactor($formFactor)
+ {
+ $this->formFactor = $formFactor;
+ }
+ /**
+ * @return string
+ */
+ public function getFormFactor()
+ {
+ return $this->formFactor;
+ }
+ /**
+ * @param string
+ */
+ public function setLocale($locale)
+ {
+ $this->locale = $locale;
+ }
+ /**
+ * @return string
+ */
+ public function getLocale()
+ {
+ return $this->locale;
+ }
+ /**
+ * @param array
+ */
+ public function setOnlyCategories($onlyCategories)
+ {
+ $this->onlyCategories = $onlyCategories;
+ }
+ /**
+ * @return array
+ */
+ public function getOnlyCategories()
+ {
+ return $this->onlyCategories;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\ConfigSettings::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PagespeedInsights_ConfigSettings');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/Environment.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/Environment.php
new file mode 100644
index 000000000..b16cd9e34
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/Environment.php
@@ -0,0 +1,69 @@
+benchmarkIndex = $benchmarkIndex;
+ }
+ public function getBenchmarkIndex()
+ {
+ return $this->benchmarkIndex;
+ }
+ /**
+ * @param string
+ */
+ public function setHostUserAgent($hostUserAgent)
+ {
+ $this->hostUserAgent = $hostUserAgent;
+ }
+ /**
+ * @return string
+ */
+ public function getHostUserAgent()
+ {
+ return $this->hostUserAgent;
+ }
+ /**
+ * @param string
+ */
+ public function setNetworkUserAgent($networkUserAgent)
+ {
+ $this->networkUserAgent = $networkUserAgent;
+ }
+ /**
+ * @return string
+ */
+ public function getNetworkUserAgent()
+ {
+ return $this->networkUserAgent;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\Environment::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PagespeedInsights_Environment');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/I18n.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/I18n.php
new file mode 100644
index 000000000..a5ac2ae06
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/I18n.php
@@ -0,0 +1,40 @@
+rendererFormattedStrings = $rendererFormattedStrings;
+ }
+ /**
+ * @return RendererFormattedStrings
+ */
+ public function getRendererFormattedStrings()
+ {
+ return $this->rendererFormattedStrings;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\I18n::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PagespeedInsights_I18n');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/LighthouseAuditResultV5.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/LighthouseAuditResultV5.php
new file mode 100644
index 000000000..b7123eec7
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/LighthouseAuditResultV5.php
@@ -0,0 +1,231 @@
+description = $description;
+ }
+ /**
+ * @return string
+ */
+ public function getDescription()
+ {
+ return $this->description;
+ }
+ /**
+ * @param array[]
+ */
+ public function setDetails($details)
+ {
+ $this->details = $details;
+ }
+ /**
+ * @return array[]
+ */
+ public function getDetails()
+ {
+ return $this->details;
+ }
+ /**
+ * @param string
+ */
+ public function setDisplayValue($displayValue)
+ {
+ $this->displayValue = $displayValue;
+ }
+ /**
+ * @return string
+ */
+ public function getDisplayValue()
+ {
+ return $this->displayValue;
+ }
+ /**
+ * @param string
+ */
+ public function setErrorMessage($errorMessage)
+ {
+ $this->errorMessage = $errorMessage;
+ }
+ /**
+ * @return string
+ */
+ public function getErrorMessage()
+ {
+ return $this->errorMessage;
+ }
+ /**
+ * @param string
+ */
+ public function setExplanation($explanation)
+ {
+ $this->explanation = $explanation;
+ }
+ /**
+ * @return string
+ */
+ public function getExplanation()
+ {
+ return $this->explanation;
+ }
+ /**
+ * @param string
+ */
+ public function setId($id)
+ {
+ $this->id = $id;
+ }
+ /**
+ * @return string
+ */
+ public function getId()
+ {
+ return $this->id;
+ }
+ /**
+ * @param string
+ */
+ public function setNumericUnit($numericUnit)
+ {
+ $this->numericUnit = $numericUnit;
+ }
+ /**
+ * @return string
+ */
+ public function getNumericUnit()
+ {
+ return $this->numericUnit;
+ }
+ public function setNumericValue($numericValue)
+ {
+ $this->numericValue = $numericValue;
+ }
+ public function getNumericValue()
+ {
+ return $this->numericValue;
+ }
+ /**
+ * @param array
+ */
+ public function setScore($score)
+ {
+ $this->score = $score;
+ }
+ /**
+ * @return array
+ */
+ public function getScore()
+ {
+ return $this->score;
+ }
+ /**
+ * @param string
+ */
+ public function setScoreDisplayMode($scoreDisplayMode)
+ {
+ $this->scoreDisplayMode = $scoreDisplayMode;
+ }
+ /**
+ * @return string
+ */
+ public function getScoreDisplayMode()
+ {
+ return $this->scoreDisplayMode;
+ }
+ /**
+ * @param string
+ */
+ public function setTitle($title)
+ {
+ $this->title = $title;
+ }
+ /**
+ * @return string
+ */
+ public function getTitle()
+ {
+ return $this->title;
+ }
+ /**
+ * @param array
+ */
+ public function setWarnings($warnings)
+ {
+ $this->warnings = $warnings;
+ }
+ /**
+ * @return array
+ */
+ public function getWarnings()
+ {
+ return $this->warnings;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\LighthouseAuditResultV5::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PagespeedInsights_LighthouseAuditResultV5');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/LighthouseCategoryV5.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/LighthouseCategoryV5.php
new file mode 100644
index 000000000..aa8dbdc76
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/LighthouseCategoryV5.php
@@ -0,0 +1,131 @@
+auditRefs = $auditRefs;
+ }
+ /**
+ * @return AuditRefs[]
+ */
+ public function getAuditRefs()
+ {
+ return $this->auditRefs;
+ }
+ /**
+ * @param string
+ */
+ public function setDescription($description)
+ {
+ $this->description = $description;
+ }
+ /**
+ * @return string
+ */
+ public function getDescription()
+ {
+ return $this->description;
+ }
+ /**
+ * @param string
+ */
+ public function setId($id)
+ {
+ $this->id = $id;
+ }
+ /**
+ * @return string
+ */
+ public function getId()
+ {
+ return $this->id;
+ }
+ /**
+ * @param string
+ */
+ public function setManualDescription($manualDescription)
+ {
+ $this->manualDescription = $manualDescription;
+ }
+ /**
+ * @return string
+ */
+ public function getManualDescription()
+ {
+ return $this->manualDescription;
+ }
+ /**
+ * @param array
+ */
+ public function setScore($score)
+ {
+ $this->score = $score;
+ }
+ /**
+ * @return array
+ */
+ public function getScore()
+ {
+ return $this->score;
+ }
+ /**
+ * @param string
+ */
+ public function setTitle($title)
+ {
+ $this->title = $title;
+ }
+ /**
+ * @return string
+ */
+ public function getTitle()
+ {
+ return $this->title;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\LighthouseCategoryV5::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PagespeedInsights_LighthouseCategoryV5');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/LighthouseResultV5.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/LighthouseResultV5.php
new file mode 100644
index 000000000..8c56696c4
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/LighthouseResultV5.php
@@ -0,0 +1,277 @@
+audits = $audits;
+ }
+ /**
+ * @return LighthouseAuditResultV5[]
+ */
+ public function getAudits()
+ {
+ return $this->audits;
+ }
+ /**
+ * @param Categories
+ */
+ public function setCategories(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\Categories $categories)
+ {
+ $this->categories = $categories;
+ }
+ /**
+ * @return Categories
+ */
+ public function getCategories()
+ {
+ return $this->categories;
+ }
+ /**
+ * @param CategoryGroupV5[]
+ */
+ public function setCategoryGroups($categoryGroups)
+ {
+ $this->categoryGroups = $categoryGroups;
+ }
+ /**
+ * @return CategoryGroupV5[]
+ */
+ public function getCategoryGroups()
+ {
+ return $this->categoryGroups;
+ }
+ /**
+ * @param ConfigSettings
+ */
+ public function setConfigSettings(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\ConfigSettings $configSettings)
+ {
+ $this->configSettings = $configSettings;
+ }
+ /**
+ * @return ConfigSettings
+ */
+ public function getConfigSettings()
+ {
+ return $this->configSettings;
+ }
+ /**
+ * @param Environment
+ */
+ public function setEnvironment(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\Environment $environment)
+ {
+ $this->environment = $environment;
+ }
+ /**
+ * @return Environment
+ */
+ public function getEnvironment()
+ {
+ return $this->environment;
+ }
+ /**
+ * @param string
+ */
+ public function setFetchTime($fetchTime)
+ {
+ $this->fetchTime = $fetchTime;
+ }
+ /**
+ * @return string
+ */
+ public function getFetchTime()
+ {
+ return $this->fetchTime;
+ }
+ /**
+ * @param string
+ */
+ public function setFinalUrl($finalUrl)
+ {
+ $this->finalUrl = $finalUrl;
+ }
+ /**
+ * @return string
+ */
+ public function getFinalUrl()
+ {
+ return $this->finalUrl;
+ }
+ /**
+ * @param I18n
+ */
+ public function setI18n(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\I18n $i18n)
+ {
+ $this->i18n = $i18n;
+ }
+ /**
+ * @return I18n
+ */
+ public function getI18n()
+ {
+ return $this->i18n;
+ }
+ /**
+ * @param string
+ */
+ public function setLighthouseVersion($lighthouseVersion)
+ {
+ $this->lighthouseVersion = $lighthouseVersion;
+ }
+ /**
+ * @return string
+ */
+ public function getLighthouseVersion()
+ {
+ return $this->lighthouseVersion;
+ }
+ /**
+ * @param string
+ */
+ public function setRequestedUrl($requestedUrl)
+ {
+ $this->requestedUrl = $requestedUrl;
+ }
+ /**
+ * @return string
+ */
+ public function getRequestedUrl()
+ {
+ return $this->requestedUrl;
+ }
+ /**
+ * @param array[]
+ */
+ public function setRunWarnings($runWarnings)
+ {
+ $this->runWarnings = $runWarnings;
+ }
+ /**
+ * @return array[]
+ */
+ public function getRunWarnings()
+ {
+ return $this->runWarnings;
+ }
+ /**
+ * @param RuntimeError
+ */
+ public function setRuntimeError(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\RuntimeError $runtimeError)
+ {
+ $this->runtimeError = $runtimeError;
+ }
+ /**
+ * @return RuntimeError
+ */
+ public function getRuntimeError()
+ {
+ return $this->runtimeError;
+ }
+ /**
+ * @param StackPack[]
+ */
+ public function setStackPacks($stackPacks)
+ {
+ $this->stackPacks = $stackPacks;
+ }
+ /**
+ * @return StackPack[]
+ */
+ public function getStackPacks()
+ {
+ return $this->stackPacks;
+ }
+ /**
+ * @param Timing
+ */
+ public function setTiming(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\Timing $timing)
+ {
+ $this->timing = $timing;
+ }
+ /**
+ * @return Timing
+ */
+ public function getTiming()
+ {
+ return $this->timing;
+ }
+ /**
+ * @param string
+ */
+ public function setUserAgent($userAgent)
+ {
+ $this->userAgent = $userAgent;
+ }
+ /**
+ * @return string
+ */
+ public function getUserAgent()
+ {
+ return $this->userAgent;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\LighthouseResultV5::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PagespeedInsights_LighthouseResultV5');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/PagespeedApiLoadingExperienceV5.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/PagespeedApiLoadingExperienceV5.php
new file mode 100644
index 000000000..63b54ff6c
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/PagespeedApiLoadingExperienceV5.php
@@ -0,0 +1,113 @@
+ "initial_url", "originFallback" => "origin_fallback", "overallCategory" => "overall_category"];
+ /**
+ * @var string
+ */
+ public $id;
+ /**
+ * @var string
+ */
+ public $initialUrl;
+ protected $metricsType = \Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\UserPageLoadMetricV5::class;
+ protected $metricsDataType = 'map';
+ /**
+ * @var bool
+ */
+ public $originFallback;
+ /**
+ * @var string
+ */
+ public $overallCategory;
+ /**
+ * @param string
+ */
+ public function setId($id)
+ {
+ $this->id = $id;
+ }
+ /**
+ * @return string
+ */
+ public function getId()
+ {
+ return $this->id;
+ }
+ /**
+ * @param string
+ */
+ public function setInitialUrl($initialUrl)
+ {
+ $this->initialUrl = $initialUrl;
+ }
+ /**
+ * @return string
+ */
+ public function getInitialUrl()
+ {
+ return $this->initialUrl;
+ }
+ /**
+ * @param UserPageLoadMetricV5[]
+ */
+ public function setMetrics($metrics)
+ {
+ $this->metrics = $metrics;
+ }
+ /**
+ * @return UserPageLoadMetricV5[]
+ */
+ public function getMetrics()
+ {
+ return $this->metrics;
+ }
+ /**
+ * @param bool
+ */
+ public function setOriginFallback($originFallback)
+ {
+ $this->originFallback = $originFallback;
+ }
+ /**
+ * @return bool
+ */
+ public function getOriginFallback()
+ {
+ return $this->originFallback;
+ }
+ /**
+ * @param string
+ */
+ public function setOverallCategory($overallCategory)
+ {
+ $this->overallCategory = $overallCategory;
+ }
+ /**
+ * @return string
+ */
+ public function getOverallCategory()
+ {
+ return $this->overallCategory;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\PagespeedApiLoadingExperienceV5::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PagespeedInsights_PagespeedApiLoadingExperienceV5');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/PagespeedApiPagespeedResponseV5.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/PagespeedApiPagespeedResponseV5.php
new file mode 100644
index 000000000..5260bc000
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/PagespeedApiPagespeedResponseV5.php
@@ -0,0 +1,160 @@
+analysisUTCTimestamp = $analysisUTCTimestamp;
+ }
+ /**
+ * @return string
+ */
+ public function getAnalysisUTCTimestamp()
+ {
+ return $this->analysisUTCTimestamp;
+ }
+ /**
+ * @param string
+ */
+ public function setCaptchaResult($captchaResult)
+ {
+ $this->captchaResult = $captchaResult;
+ }
+ /**
+ * @return string
+ */
+ public function getCaptchaResult()
+ {
+ return $this->captchaResult;
+ }
+ /**
+ * @param string
+ */
+ public function setId($id)
+ {
+ $this->id = $id;
+ }
+ /**
+ * @return string
+ */
+ public function getId()
+ {
+ return $this->id;
+ }
+ /**
+ * @param string
+ */
+ public function setKind($kind)
+ {
+ $this->kind = $kind;
+ }
+ /**
+ * @return string
+ */
+ public function getKind()
+ {
+ return $this->kind;
+ }
+ /**
+ * @param LighthouseResultV5
+ */
+ public function setLighthouseResult(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\LighthouseResultV5 $lighthouseResult)
+ {
+ $this->lighthouseResult = $lighthouseResult;
+ }
+ /**
+ * @return LighthouseResultV5
+ */
+ public function getLighthouseResult()
+ {
+ return $this->lighthouseResult;
+ }
+ /**
+ * @param PagespeedApiLoadingExperienceV5
+ */
+ public function setLoadingExperience(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\PagespeedApiLoadingExperienceV5 $loadingExperience)
+ {
+ $this->loadingExperience = $loadingExperience;
+ }
+ /**
+ * @return PagespeedApiLoadingExperienceV5
+ */
+ public function getLoadingExperience()
+ {
+ return $this->loadingExperience;
+ }
+ /**
+ * @param PagespeedApiLoadingExperienceV5
+ */
+ public function setOriginLoadingExperience(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\PagespeedApiLoadingExperienceV5 $originLoadingExperience)
+ {
+ $this->originLoadingExperience = $originLoadingExperience;
+ }
+ /**
+ * @return PagespeedApiLoadingExperienceV5
+ */
+ public function getOriginLoadingExperience()
+ {
+ return $this->originLoadingExperience;
+ }
+ /**
+ * @param PagespeedVersion
+ */
+ public function setVersion(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\PagespeedVersion $version)
+ {
+ $this->version = $version;
+ }
+ /**
+ * @return PagespeedVersion
+ */
+ public function getVersion()
+ {
+ return $this->version;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\PagespeedApiPagespeedResponseV5::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PagespeedInsights_PagespeedApiPagespeedResponseV5');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/PagespeedVersion.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/PagespeedVersion.php
new file mode 100644
index 000000000..2b7a7a853
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/PagespeedVersion.php
@@ -0,0 +1,60 @@
+major = $major;
+ }
+ /**
+ * @return string
+ */
+ public function getMajor()
+ {
+ return $this->major;
+ }
+ /**
+ * @param string
+ */
+ public function setMinor($minor)
+ {
+ $this->minor = $minor;
+ }
+ /**
+ * @return string
+ */
+ public function getMinor()
+ {
+ return $this->minor;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\PagespeedVersion::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PagespeedInsights_PagespeedVersion');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/RendererFormattedStrings.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/RendererFormattedStrings.php
new file mode 100644
index 000000000..8a5bb8ed5
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/RendererFormattedStrings.php
@@ -0,0 +1,888 @@
+auditGroupExpandTooltip = $auditGroupExpandTooltip;
+ }
+ /**
+ * @return string
+ */
+ public function getAuditGroupExpandTooltip()
+ {
+ return $this->auditGroupExpandTooltip;
+ }
+ /**
+ * @param string
+ */
+ public function setCalculatorLink($calculatorLink)
+ {
+ $this->calculatorLink = $calculatorLink;
+ }
+ /**
+ * @return string
+ */
+ public function getCalculatorLink()
+ {
+ return $this->calculatorLink;
+ }
+ /**
+ * @param string
+ */
+ public function setCrcInitialNavigation($crcInitialNavigation)
+ {
+ $this->crcInitialNavigation = $crcInitialNavigation;
+ }
+ /**
+ * @return string
+ */
+ public function getCrcInitialNavigation()
+ {
+ return $this->crcInitialNavigation;
+ }
+ /**
+ * @param string
+ */
+ public function setCrcLongestDurationLabel($crcLongestDurationLabel)
+ {
+ $this->crcLongestDurationLabel = $crcLongestDurationLabel;
+ }
+ /**
+ * @return string
+ */
+ public function getCrcLongestDurationLabel()
+ {
+ return $this->crcLongestDurationLabel;
+ }
+ /**
+ * @param string
+ */
+ public function setDropdownCopyJSON($dropdownCopyJSON)
+ {
+ $this->dropdownCopyJSON = $dropdownCopyJSON;
+ }
+ /**
+ * @return string
+ */
+ public function getDropdownCopyJSON()
+ {
+ return $this->dropdownCopyJSON;
+ }
+ /**
+ * @param string
+ */
+ public function setDropdownDarkTheme($dropdownDarkTheme)
+ {
+ $this->dropdownDarkTheme = $dropdownDarkTheme;
+ }
+ /**
+ * @return string
+ */
+ public function getDropdownDarkTheme()
+ {
+ return $this->dropdownDarkTheme;
+ }
+ /**
+ * @param string
+ */
+ public function setDropdownPrintExpanded($dropdownPrintExpanded)
+ {
+ $this->dropdownPrintExpanded = $dropdownPrintExpanded;
+ }
+ /**
+ * @return string
+ */
+ public function getDropdownPrintExpanded()
+ {
+ return $this->dropdownPrintExpanded;
+ }
+ /**
+ * @param string
+ */
+ public function setDropdownPrintSummary($dropdownPrintSummary)
+ {
+ $this->dropdownPrintSummary = $dropdownPrintSummary;
+ }
+ /**
+ * @return string
+ */
+ public function getDropdownPrintSummary()
+ {
+ return $this->dropdownPrintSummary;
+ }
+ /**
+ * @param string
+ */
+ public function setDropdownSaveGist($dropdownSaveGist)
+ {
+ $this->dropdownSaveGist = $dropdownSaveGist;
+ }
+ /**
+ * @return string
+ */
+ public function getDropdownSaveGist()
+ {
+ return $this->dropdownSaveGist;
+ }
+ /**
+ * @param string
+ */
+ public function setDropdownSaveHTML($dropdownSaveHTML)
+ {
+ $this->dropdownSaveHTML = $dropdownSaveHTML;
+ }
+ /**
+ * @return string
+ */
+ public function getDropdownSaveHTML()
+ {
+ return $this->dropdownSaveHTML;
+ }
+ /**
+ * @param string
+ */
+ public function setDropdownSaveJSON($dropdownSaveJSON)
+ {
+ $this->dropdownSaveJSON = $dropdownSaveJSON;
+ }
+ /**
+ * @return string
+ */
+ public function getDropdownSaveJSON()
+ {
+ return $this->dropdownSaveJSON;
+ }
+ /**
+ * @param string
+ */
+ public function setDropdownViewer($dropdownViewer)
+ {
+ $this->dropdownViewer = $dropdownViewer;
+ }
+ /**
+ * @return string
+ */
+ public function getDropdownViewer()
+ {
+ return $this->dropdownViewer;
+ }
+ /**
+ * @param string
+ */
+ public function setErrorLabel($errorLabel)
+ {
+ $this->errorLabel = $errorLabel;
+ }
+ /**
+ * @return string
+ */
+ public function getErrorLabel()
+ {
+ return $this->errorLabel;
+ }
+ /**
+ * @param string
+ */
+ public function setErrorMissingAuditInfo($errorMissingAuditInfo)
+ {
+ $this->errorMissingAuditInfo = $errorMissingAuditInfo;
+ }
+ /**
+ * @return string
+ */
+ public function getErrorMissingAuditInfo()
+ {
+ return $this->errorMissingAuditInfo;
+ }
+ /**
+ * @param string
+ */
+ public function setFooterIssue($footerIssue)
+ {
+ $this->footerIssue = $footerIssue;
+ }
+ /**
+ * @return string
+ */
+ public function getFooterIssue()
+ {
+ return $this->footerIssue;
+ }
+ /**
+ * @param string
+ */
+ public function setLabDataTitle($labDataTitle)
+ {
+ $this->labDataTitle = $labDataTitle;
+ }
+ /**
+ * @return string
+ */
+ public function getLabDataTitle()
+ {
+ return $this->labDataTitle;
+ }
+ /**
+ * @param string
+ */
+ public function setLsPerformanceCategoryDescription($lsPerformanceCategoryDescription)
+ {
+ $this->lsPerformanceCategoryDescription = $lsPerformanceCategoryDescription;
+ }
+ /**
+ * @return string
+ */
+ public function getLsPerformanceCategoryDescription()
+ {
+ return $this->lsPerformanceCategoryDescription;
+ }
+ /**
+ * @param string
+ */
+ public function setManualAuditsGroupTitle($manualAuditsGroupTitle)
+ {
+ $this->manualAuditsGroupTitle = $manualAuditsGroupTitle;
+ }
+ /**
+ * @return string
+ */
+ public function getManualAuditsGroupTitle()
+ {
+ return $this->manualAuditsGroupTitle;
+ }
+ /**
+ * @param string
+ */
+ public function setNotApplicableAuditsGroupTitle($notApplicableAuditsGroupTitle)
+ {
+ $this->notApplicableAuditsGroupTitle = $notApplicableAuditsGroupTitle;
+ }
+ /**
+ * @return string
+ */
+ public function getNotApplicableAuditsGroupTitle()
+ {
+ return $this->notApplicableAuditsGroupTitle;
+ }
+ /**
+ * @param string
+ */
+ public function setOpportunityResourceColumnLabel($opportunityResourceColumnLabel)
+ {
+ $this->opportunityResourceColumnLabel = $opportunityResourceColumnLabel;
+ }
+ /**
+ * @return string
+ */
+ public function getOpportunityResourceColumnLabel()
+ {
+ return $this->opportunityResourceColumnLabel;
+ }
+ /**
+ * @param string
+ */
+ public function setOpportunitySavingsColumnLabel($opportunitySavingsColumnLabel)
+ {
+ $this->opportunitySavingsColumnLabel = $opportunitySavingsColumnLabel;
+ }
+ /**
+ * @return string
+ */
+ public function getOpportunitySavingsColumnLabel()
+ {
+ return $this->opportunitySavingsColumnLabel;
+ }
+ /**
+ * @param string
+ */
+ public function setPassedAuditsGroupTitle($passedAuditsGroupTitle)
+ {
+ $this->passedAuditsGroupTitle = $passedAuditsGroupTitle;
+ }
+ /**
+ * @return string
+ */
+ public function getPassedAuditsGroupTitle()
+ {
+ return $this->passedAuditsGroupTitle;
+ }
+ /**
+ * @param string
+ */
+ public function setRuntimeDesktopEmulation($runtimeDesktopEmulation)
+ {
+ $this->runtimeDesktopEmulation = $runtimeDesktopEmulation;
+ }
+ /**
+ * @return string
+ */
+ public function getRuntimeDesktopEmulation()
+ {
+ return $this->runtimeDesktopEmulation;
+ }
+ /**
+ * @param string
+ */
+ public function setRuntimeMobileEmulation($runtimeMobileEmulation)
+ {
+ $this->runtimeMobileEmulation = $runtimeMobileEmulation;
+ }
+ /**
+ * @return string
+ */
+ public function getRuntimeMobileEmulation()
+ {
+ return $this->runtimeMobileEmulation;
+ }
+ /**
+ * @param string
+ */
+ public function setRuntimeNoEmulation($runtimeNoEmulation)
+ {
+ $this->runtimeNoEmulation = $runtimeNoEmulation;
+ }
+ /**
+ * @return string
+ */
+ public function getRuntimeNoEmulation()
+ {
+ return $this->runtimeNoEmulation;
+ }
+ /**
+ * @param string
+ */
+ public function setRuntimeSettingsAxeVersion($runtimeSettingsAxeVersion)
+ {
+ $this->runtimeSettingsAxeVersion = $runtimeSettingsAxeVersion;
+ }
+ /**
+ * @return string
+ */
+ public function getRuntimeSettingsAxeVersion()
+ {
+ return $this->runtimeSettingsAxeVersion;
+ }
+ /**
+ * @param string
+ */
+ public function setRuntimeSettingsBenchmark($runtimeSettingsBenchmark)
+ {
+ $this->runtimeSettingsBenchmark = $runtimeSettingsBenchmark;
+ }
+ /**
+ * @return string
+ */
+ public function getRuntimeSettingsBenchmark()
+ {
+ return $this->runtimeSettingsBenchmark;
+ }
+ /**
+ * @param string
+ */
+ public function setRuntimeSettingsCPUThrottling($runtimeSettingsCPUThrottling)
+ {
+ $this->runtimeSettingsCPUThrottling = $runtimeSettingsCPUThrottling;
+ }
+ /**
+ * @return string
+ */
+ public function getRuntimeSettingsCPUThrottling()
+ {
+ return $this->runtimeSettingsCPUThrottling;
+ }
+ /**
+ * @param string
+ */
+ public function setRuntimeSettingsChannel($runtimeSettingsChannel)
+ {
+ $this->runtimeSettingsChannel = $runtimeSettingsChannel;
+ }
+ /**
+ * @return string
+ */
+ public function getRuntimeSettingsChannel()
+ {
+ return $this->runtimeSettingsChannel;
+ }
+ /**
+ * @param string
+ */
+ public function setRuntimeSettingsDevice($runtimeSettingsDevice)
+ {
+ $this->runtimeSettingsDevice = $runtimeSettingsDevice;
+ }
+ /**
+ * @return string
+ */
+ public function getRuntimeSettingsDevice()
+ {
+ return $this->runtimeSettingsDevice;
+ }
+ /**
+ * @param string
+ */
+ public function setRuntimeSettingsFetchTime($runtimeSettingsFetchTime)
+ {
+ $this->runtimeSettingsFetchTime = $runtimeSettingsFetchTime;
+ }
+ /**
+ * @return string
+ */
+ public function getRuntimeSettingsFetchTime()
+ {
+ return $this->runtimeSettingsFetchTime;
+ }
+ /**
+ * @param string
+ */
+ public function setRuntimeSettingsNetworkThrottling($runtimeSettingsNetworkThrottling)
+ {
+ $this->runtimeSettingsNetworkThrottling = $runtimeSettingsNetworkThrottling;
+ }
+ /**
+ * @return string
+ */
+ public function getRuntimeSettingsNetworkThrottling()
+ {
+ return $this->runtimeSettingsNetworkThrottling;
+ }
+ /**
+ * @param string
+ */
+ public function setRuntimeSettingsTitle($runtimeSettingsTitle)
+ {
+ $this->runtimeSettingsTitle = $runtimeSettingsTitle;
+ }
+ /**
+ * @return string
+ */
+ public function getRuntimeSettingsTitle()
+ {
+ return $this->runtimeSettingsTitle;
+ }
+ /**
+ * @param string
+ */
+ public function setRuntimeSettingsUA($runtimeSettingsUA)
+ {
+ $this->runtimeSettingsUA = $runtimeSettingsUA;
+ }
+ /**
+ * @return string
+ */
+ public function getRuntimeSettingsUA()
+ {
+ return $this->runtimeSettingsUA;
+ }
+ /**
+ * @param string
+ */
+ public function setRuntimeSettingsUANetwork($runtimeSettingsUANetwork)
+ {
+ $this->runtimeSettingsUANetwork = $runtimeSettingsUANetwork;
+ }
+ /**
+ * @return string
+ */
+ public function getRuntimeSettingsUANetwork()
+ {
+ return $this->runtimeSettingsUANetwork;
+ }
+ /**
+ * @param string
+ */
+ public function setRuntimeSettingsUrl($runtimeSettingsUrl)
+ {
+ $this->runtimeSettingsUrl = $runtimeSettingsUrl;
+ }
+ /**
+ * @return string
+ */
+ public function getRuntimeSettingsUrl()
+ {
+ return $this->runtimeSettingsUrl;
+ }
+ /**
+ * @param string
+ */
+ public function setRuntimeUnknown($runtimeUnknown)
+ {
+ $this->runtimeUnknown = $runtimeUnknown;
+ }
+ /**
+ * @return string
+ */
+ public function getRuntimeUnknown()
+ {
+ return $this->runtimeUnknown;
+ }
+ /**
+ * @param string
+ */
+ public function setScorescaleLabel($scorescaleLabel)
+ {
+ $this->scorescaleLabel = $scorescaleLabel;
+ }
+ /**
+ * @return string
+ */
+ public function getScorescaleLabel()
+ {
+ return $this->scorescaleLabel;
+ }
+ /**
+ * @param string
+ */
+ public function setShowRelevantAudits($showRelevantAudits)
+ {
+ $this->showRelevantAudits = $showRelevantAudits;
+ }
+ /**
+ * @return string
+ */
+ public function getShowRelevantAudits()
+ {
+ return $this->showRelevantAudits;
+ }
+ /**
+ * @param string
+ */
+ public function setSnippetCollapseButtonLabel($snippetCollapseButtonLabel)
+ {
+ $this->snippetCollapseButtonLabel = $snippetCollapseButtonLabel;
+ }
+ /**
+ * @return string
+ */
+ public function getSnippetCollapseButtonLabel()
+ {
+ return $this->snippetCollapseButtonLabel;
+ }
+ /**
+ * @param string
+ */
+ public function setSnippetExpandButtonLabel($snippetExpandButtonLabel)
+ {
+ $this->snippetExpandButtonLabel = $snippetExpandButtonLabel;
+ }
+ /**
+ * @return string
+ */
+ public function getSnippetExpandButtonLabel()
+ {
+ return $this->snippetExpandButtonLabel;
+ }
+ /**
+ * @param string
+ */
+ public function setThirdPartyResourcesLabel($thirdPartyResourcesLabel)
+ {
+ $this->thirdPartyResourcesLabel = $thirdPartyResourcesLabel;
+ }
+ /**
+ * @return string
+ */
+ public function getThirdPartyResourcesLabel()
+ {
+ return $this->thirdPartyResourcesLabel;
+ }
+ /**
+ * @param string
+ */
+ public function setThrottlingProvided($throttlingProvided)
+ {
+ $this->throttlingProvided = $throttlingProvided;
+ }
+ /**
+ * @return string
+ */
+ public function getThrottlingProvided()
+ {
+ return $this->throttlingProvided;
+ }
+ /**
+ * @param string
+ */
+ public function setToplevelWarningsMessage($toplevelWarningsMessage)
+ {
+ $this->toplevelWarningsMessage = $toplevelWarningsMessage;
+ }
+ /**
+ * @return string
+ */
+ public function getToplevelWarningsMessage()
+ {
+ return $this->toplevelWarningsMessage;
+ }
+ /**
+ * @param string
+ */
+ public function setVarianceDisclaimer($varianceDisclaimer)
+ {
+ $this->varianceDisclaimer = $varianceDisclaimer;
+ }
+ /**
+ * @return string
+ */
+ public function getVarianceDisclaimer()
+ {
+ return $this->varianceDisclaimer;
+ }
+ /**
+ * @param string
+ */
+ public function setViewTreemapLabel($viewTreemapLabel)
+ {
+ $this->viewTreemapLabel = $viewTreemapLabel;
+ }
+ /**
+ * @return string
+ */
+ public function getViewTreemapLabel()
+ {
+ return $this->viewTreemapLabel;
+ }
+ /**
+ * @param string
+ */
+ public function setWarningAuditsGroupTitle($warningAuditsGroupTitle)
+ {
+ $this->warningAuditsGroupTitle = $warningAuditsGroupTitle;
+ }
+ /**
+ * @return string
+ */
+ public function getWarningAuditsGroupTitle()
+ {
+ return $this->warningAuditsGroupTitle;
+ }
+ /**
+ * @param string
+ */
+ public function setWarningHeader($warningHeader)
+ {
+ $this->warningHeader = $warningHeader;
+ }
+ /**
+ * @return string
+ */
+ public function getWarningHeader()
+ {
+ return $this->warningHeader;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\RendererFormattedStrings::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PagespeedInsights_RendererFormattedStrings');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/Resource/Pagespeedapi.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/Resource/Pagespeedapi.php
new file mode 100644
index 000000000..a228c5353
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/Resource/Pagespeedapi.php
@@ -0,0 +1,58 @@
+
+ * $pagespeedonlineService = new Google\Service\PagespeedInsights(...);
+ * $pagespeedapi = $pagespeedonlineService->pagespeedapi;
+ *
+ */
+class Pagespeedapi extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Runs PageSpeed analysis on the page at the specified URL, and returns
+ * PageSpeed scores, a list of suggestions to make that page faster, and other
+ * information. (pagespeedapi.runpagespeed)
+ *
+ * @param string $url Required. The URL to fetch and analyze
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string captchaToken The captcha token passed when filling out a
+ * captcha.
+ * @opt_param string category A Lighthouse category to run; if none are given,
+ * only Performance category will be run
+ * @opt_param string locale The locale used to localize formatted results
+ * @opt_param string strategy The analysis strategy (desktop or mobile) to use,
+ * and desktop is the default
+ * @opt_param string utm_campaign Campaign name for analytics.
+ * @opt_param string utm_source Campaign source for analytics.
+ * @return PagespeedApiPagespeedResponseV5
+ */
+ public function runpagespeed($url, $optParams = [])
+ {
+ $params = ['url' => $url];
+ $params = \array_merge($params, $optParams);
+ return $this->call('runpagespeed', [$params], \Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\PagespeedApiPagespeedResponseV5::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\Resource\Pagespeedapi::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PagespeedInsights_Resource_Pagespeedapi');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/RuntimeError.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/RuntimeError.php
new file mode 100644
index 000000000..568a2342b
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/RuntimeError.php
@@ -0,0 +1,60 @@
+code = $code;
+ }
+ /**
+ * @return string
+ */
+ public function getCode()
+ {
+ return $this->code;
+ }
+ /**
+ * @param string
+ */
+ public function setMessage($message)
+ {
+ $this->message = $message;
+ }
+ /**
+ * @return string
+ */
+ public function getMessage()
+ {
+ return $this->message;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\RuntimeError::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PagespeedInsights_RuntimeError');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/StackPack.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/StackPack.php
new file mode 100644
index 000000000..75febb7db
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/StackPack.php
@@ -0,0 +1,96 @@
+descriptions = $descriptions;
+ }
+ /**
+ * @return string[]
+ */
+ public function getDescriptions()
+ {
+ return $this->descriptions;
+ }
+ /**
+ * @param string
+ */
+ public function setIconDataURL($iconDataURL)
+ {
+ $this->iconDataURL = $iconDataURL;
+ }
+ /**
+ * @return string
+ */
+ public function getIconDataURL()
+ {
+ return $this->iconDataURL;
+ }
+ /**
+ * @param string
+ */
+ public function setId($id)
+ {
+ $this->id = $id;
+ }
+ /**
+ * @return string
+ */
+ public function getId()
+ {
+ return $this->id;
+ }
+ /**
+ * @param string
+ */
+ public function setTitle($title)
+ {
+ $this->title = $title;
+ }
+ /**
+ * @return string
+ */
+ public function getTitle()
+ {
+ return $this->title;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\StackPack::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PagespeedInsights_StackPack');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/Timing.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/Timing.php
new file mode 100644
index 000000000..3b9c37faf
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/Timing.php
@@ -0,0 +1,33 @@
+total = $total;
+ }
+ public function getTotal()
+ {
+ return $this->total;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\Timing::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PagespeedInsights_Timing');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/UserPageLoadMetricV5.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/UserPageLoadMetricV5.php
new file mode 100644
index 000000000..2b4a95f95
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PagespeedInsights/UserPageLoadMetricV5.php
@@ -0,0 +1,131 @@
+category = $category;
+ }
+ /**
+ * @return string
+ */
+ public function getCategory()
+ {
+ return $this->category;
+ }
+ /**
+ * @param Bucket[]
+ */
+ public function setDistributions($distributions)
+ {
+ $this->distributions = $distributions;
+ }
+ /**
+ * @return Bucket[]
+ */
+ public function getDistributions()
+ {
+ return $this->distributions;
+ }
+ /**
+ * @param string
+ */
+ public function setFormFactor($formFactor)
+ {
+ $this->formFactor = $formFactor;
+ }
+ /**
+ * @return string
+ */
+ public function getFormFactor()
+ {
+ return $this->formFactor;
+ }
+ /**
+ * @param int
+ */
+ public function setMedian($median)
+ {
+ $this->median = $median;
+ }
+ /**
+ * @return int
+ */
+ public function getMedian()
+ {
+ return $this->median;
+ }
+ /**
+ * @param string
+ */
+ public function setMetricId($metricId)
+ {
+ $this->metricId = $metricId;
+ }
+ /**
+ * @return string
+ */
+ public function getMetricId()
+ {
+ return $this->metricId;
+ }
+ /**
+ * @param int
+ */
+ public function setPercentile($percentile)
+ {
+ $this->percentile = $percentile;
+ }
+ /**
+ * @return int
+ */
+ public function getPercentile()
+ {
+ return $this->percentile;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PagespeedInsights\UserPageLoadMetricV5::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PagespeedInsights_UserPageLoadMetricV5');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService.php
new file mode 100644
index 000000000..6cc6e8e90
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService.php
@@ -0,0 +1,88 @@
+
+ * Provides access to information about profiles and contacts.
+ *
+ *
+ * For more information about this service, see the API
+ * Documentation
+ *
+ *
+ * @author Google, Inc.
+ */
+class PeopleService extends \Google\Site_Kit_Dependencies\Google\Service
+{
+ /** See, edit, download, and permanently delete your contacts. */
+ const CONTACTS = "https://www.googleapis.com/auth/contacts";
+ /** See and download contact info automatically saved in your "Other contacts". */
+ const CONTACTS_OTHER_READONLY = "https://www.googleapis.com/auth/contacts.other.readonly";
+ /** See and download your contacts. */
+ const CONTACTS_READONLY = "https://www.googleapis.com/auth/contacts.readonly";
+ /** See and download your organization's GSuite directory. */
+ const DIRECTORY_READONLY = "https://www.googleapis.com/auth/directory.readonly";
+ /** View your street addresses. */
+ const USER_ADDRESSES_READ = "https://www.googleapis.com/auth/user.addresses.read";
+ /** See and download your exact date of birth. */
+ const USER_BIRTHDAY_READ = "https://www.googleapis.com/auth/user.birthday.read";
+ /** See and download all of your Google Account email addresses. */
+ const USER_EMAILS_READ = "https://www.googleapis.com/auth/user.emails.read";
+ /** See your gender. */
+ const USER_GENDER_READ = "https://www.googleapis.com/auth/user.gender.read";
+ /** See your education, work history and org info. */
+ const USER_ORGANIZATION_READ = "https://www.googleapis.com/auth/user.organization.read";
+ /** See and download your personal phone numbers. */
+ const USER_PHONENUMBERS_READ = "https://www.googleapis.com/auth/user.phonenumbers.read";
+ /** See your primary Google Account email address. */
+ const USERINFO_EMAIL = "https://www.googleapis.com/auth/userinfo.email";
+ /** See your personal info, including any personal info you've made publicly available. */
+ const USERINFO_PROFILE = "https://www.googleapis.com/auth/userinfo.profile";
+ public $contactGroups;
+ public $contactGroups_members;
+ public $otherContacts;
+ public $people;
+ public $people_connections;
+ /**
+ * Constructs the internal representation of the PeopleService service.
+ *
+ * @param Client|array $clientOrConfig The client used to deliver requests, or a
+ * config array to pass to a new Client instance.
+ * @param string $rootUrl The root URL used for requests to the service.
+ */
+ public function __construct($clientOrConfig = [], $rootUrl = null)
+ {
+ parent::__construct($clientOrConfig);
+ $this->rootUrl = $rootUrl ?: 'https://people.googleapis.com/';
+ $this->servicePath = '';
+ $this->batchPath = 'batch';
+ $this->version = 'v1';
+ $this->serviceName = 'people';
+ $this->contactGroups = new \Google\Site_Kit_Dependencies\Google\Service\PeopleService\Resource\ContactGroups($this, $this->serviceName, 'contactGroups', ['methods' => ['batchGet' => ['path' => 'v1/contactGroups:batchGet', 'httpMethod' => 'GET', 'parameters' => ['groupFields' => ['location' => 'query', 'type' => 'string'], 'maxMembers' => ['location' => 'query', 'type' => 'integer'], 'resourceNames' => ['location' => 'query', 'type' => 'string', 'repeated' => \true]]], 'create' => ['path' => 'v1/contactGroups', 'httpMethod' => 'POST', 'parameters' => []], 'delete' => ['path' => 'v1/{+resourceName}', 'httpMethod' => 'DELETE', 'parameters' => ['resourceName' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'deleteContacts' => ['location' => 'query', 'type' => 'boolean']]], 'get' => ['path' => 'v1/{+resourceName}', 'httpMethod' => 'GET', 'parameters' => ['resourceName' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'groupFields' => ['location' => 'query', 'type' => 'string'], 'maxMembers' => ['location' => 'query', 'type' => 'integer']]], 'list' => ['path' => 'v1/contactGroups', 'httpMethod' => 'GET', 'parameters' => ['groupFields' => ['location' => 'query', 'type' => 'string'], 'pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string'], 'syncToken' => ['location' => 'query', 'type' => 'string']]], 'update' => ['path' => 'v1/{+resourceName}', 'httpMethod' => 'PUT', 'parameters' => ['resourceName' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]);
+ $this->contactGroups_members = new \Google\Site_Kit_Dependencies\Google\Service\PeopleService\Resource\ContactGroupsMembers($this, $this->serviceName, 'members', ['methods' => ['modify' => ['path' => 'v1/{+resourceName}/members:modify', 'httpMethod' => 'POST', 'parameters' => ['resourceName' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]);
+ $this->otherContacts = new \Google\Site_Kit_Dependencies\Google\Service\PeopleService\Resource\OtherContacts($this, $this->serviceName, 'otherContacts', ['methods' => ['copyOtherContactToMyContactsGroup' => ['path' => 'v1/{+resourceName}:copyOtherContactToMyContactsGroup', 'httpMethod' => 'POST', 'parameters' => ['resourceName' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'v1/otherContacts', 'httpMethod' => 'GET', 'parameters' => ['pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string'], 'readMask' => ['location' => 'query', 'type' => 'string'], 'requestSyncToken' => ['location' => 'query', 'type' => 'boolean'], 'sources' => ['location' => 'query', 'type' => 'string', 'repeated' => \true], 'syncToken' => ['location' => 'query', 'type' => 'string']]], 'search' => ['path' => 'v1/otherContacts:search', 'httpMethod' => 'GET', 'parameters' => ['pageSize' => ['location' => 'query', 'type' => 'integer'], 'query' => ['location' => 'query', 'type' => 'string'], 'readMask' => ['location' => 'query', 'type' => 'string']]]]]);
+ $this->people = new \Google\Site_Kit_Dependencies\Google\Service\PeopleService\Resource\People($this, $this->serviceName, 'people', ['methods' => ['batchCreateContacts' => ['path' => 'v1/people:batchCreateContacts', 'httpMethod' => 'POST', 'parameters' => []], 'batchDeleteContacts' => ['path' => 'v1/people:batchDeleteContacts', 'httpMethod' => 'POST', 'parameters' => []], 'batchUpdateContacts' => ['path' => 'v1/people:batchUpdateContacts', 'httpMethod' => 'POST', 'parameters' => []], 'createContact' => ['path' => 'v1/people:createContact', 'httpMethod' => 'POST', 'parameters' => ['personFields' => ['location' => 'query', 'type' => 'string'], 'sources' => ['location' => 'query', 'type' => 'string', 'repeated' => \true]]], 'deleteContact' => ['path' => 'v1/{+resourceName}:deleteContact', 'httpMethod' => 'DELETE', 'parameters' => ['resourceName' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'deleteContactPhoto' => ['path' => 'v1/{+resourceName}:deleteContactPhoto', 'httpMethod' => 'DELETE', 'parameters' => ['resourceName' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'personFields' => ['location' => 'query', 'type' => 'string'], 'sources' => ['location' => 'query', 'type' => 'string', 'repeated' => \true]]], 'get' => ['path' => 'v1/{+resourceName}', 'httpMethod' => 'GET', 'parameters' => ['resourceName' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'personFields' => ['location' => 'query', 'type' => 'string'], 'requestMask.includeField' => ['location' => 'query', 'type' => 'string'], 'sources' => ['location' => 'query', 'type' => 'string', 'repeated' => \true]]], 'getBatchGet' => ['path' => 'v1/people:batchGet', 'httpMethod' => 'GET', 'parameters' => ['personFields' => ['location' => 'query', 'type' => 'string'], 'requestMask.includeField' => ['location' => 'query', 'type' => 'string'], 'resourceNames' => ['location' => 'query', 'type' => 'string', 'repeated' => \true], 'sources' => ['location' => 'query', 'type' => 'string', 'repeated' => \true]]], 'listDirectoryPeople' => ['path' => 'v1/people:listDirectoryPeople', 'httpMethod' => 'GET', 'parameters' => ['mergeSources' => ['location' => 'query', 'type' => 'string', 'repeated' => \true], 'pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string'], 'readMask' => ['location' => 'query', 'type' => 'string'], 'requestSyncToken' => ['location' => 'query', 'type' => 'boolean'], 'sources' => ['location' => 'query', 'type' => 'string', 'repeated' => \true], 'syncToken' => ['location' => 'query', 'type' => 'string']]], 'searchContacts' => ['path' => 'v1/people:searchContacts', 'httpMethod' => 'GET', 'parameters' => ['pageSize' => ['location' => 'query', 'type' => 'integer'], 'query' => ['location' => 'query', 'type' => 'string'], 'readMask' => ['location' => 'query', 'type' => 'string'], 'sources' => ['location' => 'query', 'type' => 'string', 'repeated' => \true]]], 'searchDirectoryPeople' => ['path' => 'v1/people:searchDirectoryPeople', 'httpMethod' => 'GET', 'parameters' => ['mergeSources' => ['location' => 'query', 'type' => 'string', 'repeated' => \true], 'pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string'], 'query' => ['location' => 'query', 'type' => 'string'], 'readMask' => ['location' => 'query', 'type' => 'string'], 'sources' => ['location' => 'query', 'type' => 'string', 'repeated' => \true]]], 'updateContact' => ['path' => 'v1/{+resourceName}:updateContact', 'httpMethod' => 'PATCH', 'parameters' => ['resourceName' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'personFields' => ['location' => 'query', 'type' => 'string'], 'sources' => ['location' => 'query', 'type' => 'string', 'repeated' => \true], 'updatePersonFields' => ['location' => 'query', 'type' => 'string']]], 'updateContactPhoto' => ['path' => 'v1/{+resourceName}:updateContactPhoto', 'httpMethod' => 'PATCH', 'parameters' => ['resourceName' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]);
+ $this->people_connections = new \Google\Site_Kit_Dependencies\Google\Service\PeopleService\Resource\PeopleConnections($this, $this->serviceName, 'connections', ['methods' => ['list' => ['path' => 'v1/{+resourceName}/connections', 'httpMethod' => 'GET', 'parameters' => ['resourceName' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string'], 'personFields' => ['location' => 'query', 'type' => 'string'], 'requestMask.includeField' => ['location' => 'query', 'type' => 'string'], 'requestSyncToken' => ['location' => 'query', 'type' => 'boolean'], 'sortOrder' => ['location' => 'query', 'type' => 'string'], 'sources' => ['location' => 'query', 'type' => 'string', 'repeated' => \true], 'syncToken' => ['location' => 'query', 'type' => 'string']]]]]);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Address.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Address.php
new file mode 100644
index 000000000..e1a970a27
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Address.php
@@ -0,0 +1,238 @@
+city = $city;
+ }
+ /**
+ * @return string
+ */
+ public function getCity()
+ {
+ return $this->city;
+ }
+ /**
+ * @param string
+ */
+ public function setCountry($country)
+ {
+ $this->country = $country;
+ }
+ /**
+ * @return string
+ */
+ public function getCountry()
+ {
+ return $this->country;
+ }
+ /**
+ * @param string
+ */
+ public function setCountryCode($countryCode)
+ {
+ $this->countryCode = $countryCode;
+ }
+ /**
+ * @return string
+ */
+ public function getCountryCode()
+ {
+ return $this->countryCode;
+ }
+ /**
+ * @param string
+ */
+ public function setExtendedAddress($extendedAddress)
+ {
+ $this->extendedAddress = $extendedAddress;
+ }
+ /**
+ * @return string
+ */
+ public function getExtendedAddress()
+ {
+ return $this->extendedAddress;
+ }
+ /**
+ * @param string
+ */
+ public function setFormattedType($formattedType)
+ {
+ $this->formattedType = $formattedType;
+ }
+ /**
+ * @return string
+ */
+ public function getFormattedType()
+ {
+ return $this->formattedType;
+ }
+ /**
+ * @param string
+ */
+ public function setFormattedValue($formattedValue)
+ {
+ $this->formattedValue = $formattedValue;
+ }
+ /**
+ * @return string
+ */
+ public function getFormattedValue()
+ {
+ return $this->formattedValue;
+ }
+ /**
+ * @param FieldMetadata
+ */
+ public function setMetadata(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\FieldMetadata $metadata)
+ {
+ $this->metadata = $metadata;
+ }
+ /**
+ * @return FieldMetadata
+ */
+ public function getMetadata()
+ {
+ return $this->metadata;
+ }
+ /**
+ * @param string
+ */
+ public function setPoBox($poBox)
+ {
+ $this->poBox = $poBox;
+ }
+ /**
+ * @return string
+ */
+ public function getPoBox()
+ {
+ return $this->poBox;
+ }
+ /**
+ * @param string
+ */
+ public function setPostalCode($postalCode)
+ {
+ $this->postalCode = $postalCode;
+ }
+ /**
+ * @return string
+ */
+ public function getPostalCode()
+ {
+ return $this->postalCode;
+ }
+ /**
+ * @param string
+ */
+ public function setRegion($region)
+ {
+ $this->region = $region;
+ }
+ /**
+ * @return string
+ */
+ public function getRegion()
+ {
+ return $this->region;
+ }
+ /**
+ * @param string
+ */
+ public function setStreetAddress($streetAddress)
+ {
+ $this->streetAddress = $streetAddress;
+ }
+ /**
+ * @return string
+ */
+ public function getStreetAddress()
+ {
+ return $this->streetAddress;
+ }
+ /**
+ * @param string
+ */
+ public function setType($type)
+ {
+ $this->type = $type;
+ }
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Address::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_Address');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/AgeRangeType.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/AgeRangeType.php
new file mode 100644
index 000000000..ea65b493b
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/AgeRangeType.php
@@ -0,0 +1,58 @@
+ageRange = $ageRange;
+ }
+ /**
+ * @return string
+ */
+ public function getAgeRange()
+ {
+ return $this->ageRange;
+ }
+ /**
+ * @param FieldMetadata
+ */
+ public function setMetadata(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\FieldMetadata $metadata)
+ {
+ $this->metadata = $metadata;
+ }
+ /**
+ * @return FieldMetadata
+ */
+ public function getMetadata()
+ {
+ return $this->metadata;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\AgeRangeType::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_AgeRangeType');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/BatchCreateContactsRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/BatchCreateContactsRequest.php
new file mode 100644
index 000000000..036c49b8a
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/BatchCreateContactsRequest.php
@@ -0,0 +1,77 @@
+contacts = $contacts;
+ }
+ /**
+ * @return ContactToCreate[]
+ */
+ public function getContacts()
+ {
+ return $this->contacts;
+ }
+ /**
+ * @param string
+ */
+ public function setReadMask($readMask)
+ {
+ $this->readMask = $readMask;
+ }
+ /**
+ * @return string
+ */
+ public function getReadMask()
+ {
+ return $this->readMask;
+ }
+ /**
+ * @param string[]
+ */
+ public function setSources($sources)
+ {
+ $this->sources = $sources;
+ }
+ /**
+ * @return string[]
+ */
+ public function getSources()
+ {
+ return $this->sources;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\BatchCreateContactsRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_BatchCreateContactsRequest');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/BatchCreateContactsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/BatchCreateContactsResponse.php
new file mode 100644
index 000000000..d772f1556
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/BatchCreateContactsResponse.php
@@ -0,0 +1,41 @@
+createdPeople = $createdPeople;
+ }
+ /**
+ * @return PersonResponse[]
+ */
+ public function getCreatedPeople()
+ {
+ return $this->createdPeople;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\BatchCreateContactsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_BatchCreateContactsResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/BatchDeleteContactsRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/BatchDeleteContactsRequest.php
new file mode 100644
index 000000000..e7cb3de38
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/BatchDeleteContactsRequest.php
@@ -0,0 +1,43 @@
+resourceNames = $resourceNames;
+ }
+ /**
+ * @return string[]
+ */
+ public function getResourceNames()
+ {
+ return $this->resourceNames;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\BatchDeleteContactsRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_BatchDeleteContactsRequest');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/BatchGetContactGroupsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/BatchGetContactGroupsResponse.php
new file mode 100644
index 000000000..4db2b24bf
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/BatchGetContactGroupsResponse.php
@@ -0,0 +1,41 @@
+responses = $responses;
+ }
+ /**
+ * @return ContactGroupResponse[]
+ */
+ public function getResponses()
+ {
+ return $this->responses;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\BatchGetContactGroupsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_BatchGetContactGroupsResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/BatchUpdateContactsRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/BatchUpdateContactsRequest.php
new file mode 100644
index 000000000..7359f1555
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/BatchUpdateContactsRequest.php
@@ -0,0 +1,95 @@
+contacts = $contacts;
+ }
+ /**
+ * @return Person[]
+ */
+ public function getContacts()
+ {
+ return $this->contacts;
+ }
+ /**
+ * @param string
+ */
+ public function setReadMask($readMask)
+ {
+ $this->readMask = $readMask;
+ }
+ /**
+ * @return string
+ */
+ public function getReadMask()
+ {
+ return $this->readMask;
+ }
+ /**
+ * @param string[]
+ */
+ public function setSources($sources)
+ {
+ $this->sources = $sources;
+ }
+ /**
+ * @return string[]
+ */
+ public function getSources()
+ {
+ return $this->sources;
+ }
+ /**
+ * @param string
+ */
+ public function setUpdateMask($updateMask)
+ {
+ $this->updateMask = $updateMask;
+ }
+ /**
+ * @return string
+ */
+ public function getUpdateMask()
+ {
+ return $this->updateMask;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\BatchUpdateContactsRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_BatchUpdateContactsRequest');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/BatchUpdateContactsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/BatchUpdateContactsResponse.php
new file mode 100644
index 000000000..6c0f1505f
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/BatchUpdateContactsResponse.php
@@ -0,0 +1,40 @@
+updateResult = $updateResult;
+ }
+ /**
+ * @return PersonResponse[]
+ */
+ public function getUpdateResult()
+ {
+ return $this->updateResult;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\BatchUpdateContactsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_BatchUpdateContactsResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Biography.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Biography.php
new file mode 100644
index 000000000..3fd9a4fd0
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Biography.php
@@ -0,0 +1,76 @@
+contentType = $contentType;
+ }
+ /**
+ * @return string
+ */
+ public function getContentType()
+ {
+ return $this->contentType;
+ }
+ /**
+ * @param FieldMetadata
+ */
+ public function setMetadata(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\FieldMetadata $metadata)
+ {
+ $this->metadata = $metadata;
+ }
+ /**
+ * @return FieldMetadata
+ */
+ public function getMetadata()
+ {
+ return $this->metadata;
+ }
+ /**
+ * @param string
+ */
+ public function setValue($value)
+ {
+ $this->value = $value;
+ }
+ /**
+ * @return string
+ */
+ public function getValue()
+ {
+ return $this->value;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Biography::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_Biography');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Birthday.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Birthday.php
new file mode 100644
index 000000000..dd5967b22
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Birthday.php
@@ -0,0 +1,74 @@
+date = $date;
+ }
+ /**
+ * @return Date
+ */
+ public function getDate()
+ {
+ return $this->date;
+ }
+ /**
+ * @param FieldMetadata
+ */
+ public function setMetadata(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\FieldMetadata $metadata)
+ {
+ $this->metadata = $metadata;
+ }
+ /**
+ * @return FieldMetadata
+ */
+ public function getMetadata()
+ {
+ return $this->metadata;
+ }
+ /**
+ * @param string
+ */
+ public function setText($text)
+ {
+ $this->text = $text;
+ }
+ /**
+ * @return string
+ */
+ public function getText()
+ {
+ return $this->text;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Birthday::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_Birthday');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/BraggingRights.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/BraggingRights.php
new file mode 100644
index 000000000..c6d39f3af
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/BraggingRights.php
@@ -0,0 +1,58 @@
+metadata = $metadata;
+ }
+ /**
+ * @return FieldMetadata
+ */
+ public function getMetadata()
+ {
+ return $this->metadata;
+ }
+ /**
+ * @param string
+ */
+ public function setValue($value)
+ {
+ $this->value = $value;
+ }
+ /**
+ * @return string
+ */
+ public function getValue()
+ {
+ return $this->value;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\BraggingRights::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_BraggingRights');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/CalendarUrl.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/CalendarUrl.php
new file mode 100644
index 000000000..fcabdd20f
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/CalendarUrl.php
@@ -0,0 +1,94 @@
+formattedType = $formattedType;
+ }
+ /**
+ * @return string
+ */
+ public function getFormattedType()
+ {
+ return $this->formattedType;
+ }
+ /**
+ * @param FieldMetadata
+ */
+ public function setMetadata(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\FieldMetadata $metadata)
+ {
+ $this->metadata = $metadata;
+ }
+ /**
+ * @return FieldMetadata
+ */
+ public function getMetadata()
+ {
+ return $this->metadata;
+ }
+ /**
+ * @param string
+ */
+ public function setType($type)
+ {
+ $this->type = $type;
+ }
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+ /**
+ * @param string
+ */
+ public function setUrl($url)
+ {
+ $this->url = $url;
+ }
+ /**
+ * @return string
+ */
+ public function getUrl()
+ {
+ return $this->url;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\CalendarUrl::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_CalendarUrl');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ClientData.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ClientData.php
new file mode 100644
index 000000000..a19b48c5a
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ClientData.php
@@ -0,0 +1,76 @@
+key = $key;
+ }
+ /**
+ * @return string
+ */
+ public function getKey()
+ {
+ return $this->key;
+ }
+ /**
+ * @param FieldMetadata
+ */
+ public function setMetadata(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\FieldMetadata $metadata)
+ {
+ $this->metadata = $metadata;
+ }
+ /**
+ * @return FieldMetadata
+ */
+ public function getMetadata()
+ {
+ return $this->metadata;
+ }
+ /**
+ * @param string
+ */
+ public function setValue($value)
+ {
+ $this->value = $value;
+ }
+ /**
+ * @return string
+ */
+ public function getValue()
+ {
+ return $this->value;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\ClientData::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_ClientData');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ContactGroup.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ContactGroup.php
new file mode 100644
index 000000000..df7c1bf29
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ContactGroup.php
@@ -0,0 +1,183 @@
+clientData = $clientData;
+ }
+ /**
+ * @return GroupClientData[]
+ */
+ public function getClientData()
+ {
+ return $this->clientData;
+ }
+ /**
+ * @param string
+ */
+ public function setEtag($etag)
+ {
+ $this->etag = $etag;
+ }
+ /**
+ * @return string
+ */
+ public function getEtag()
+ {
+ return $this->etag;
+ }
+ /**
+ * @param string
+ */
+ public function setFormattedName($formattedName)
+ {
+ $this->formattedName = $formattedName;
+ }
+ /**
+ * @return string
+ */
+ public function getFormattedName()
+ {
+ return $this->formattedName;
+ }
+ /**
+ * @param string
+ */
+ public function setGroupType($groupType)
+ {
+ $this->groupType = $groupType;
+ }
+ /**
+ * @return string
+ */
+ public function getGroupType()
+ {
+ return $this->groupType;
+ }
+ /**
+ * @param int
+ */
+ public function setMemberCount($memberCount)
+ {
+ $this->memberCount = $memberCount;
+ }
+ /**
+ * @return int
+ */
+ public function getMemberCount()
+ {
+ return $this->memberCount;
+ }
+ /**
+ * @param string[]
+ */
+ public function setMemberResourceNames($memberResourceNames)
+ {
+ $this->memberResourceNames = $memberResourceNames;
+ }
+ /**
+ * @return string[]
+ */
+ public function getMemberResourceNames()
+ {
+ return $this->memberResourceNames;
+ }
+ /**
+ * @param ContactGroupMetadata
+ */
+ public function setMetadata(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\ContactGroupMetadata $metadata)
+ {
+ $this->metadata = $metadata;
+ }
+ /**
+ * @return ContactGroupMetadata
+ */
+ public function getMetadata()
+ {
+ return $this->metadata;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param string
+ */
+ public function setResourceName($resourceName)
+ {
+ $this->resourceName = $resourceName;
+ }
+ /**
+ * @return string
+ */
+ public function getResourceName()
+ {
+ return $this->resourceName;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\ContactGroup::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_ContactGroup');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ContactGroupMembership.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ContactGroupMembership.php
new file mode 100644
index 000000000..ab042f8ac
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ContactGroupMembership.php
@@ -0,0 +1,60 @@
+contactGroupId = $contactGroupId;
+ }
+ /**
+ * @return string
+ */
+ public function getContactGroupId()
+ {
+ return $this->contactGroupId;
+ }
+ /**
+ * @param string
+ */
+ public function setContactGroupResourceName($contactGroupResourceName)
+ {
+ $this->contactGroupResourceName = $contactGroupResourceName;
+ }
+ /**
+ * @return string
+ */
+ public function getContactGroupResourceName()
+ {
+ return $this->contactGroupResourceName;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\ContactGroupMembership::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_ContactGroupMembership');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ContactGroupMetadata.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ContactGroupMetadata.php
new file mode 100644
index 000000000..8797576c4
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ContactGroupMetadata.php
@@ -0,0 +1,60 @@
+deleted = $deleted;
+ }
+ /**
+ * @return bool
+ */
+ public function getDeleted()
+ {
+ return $this->deleted;
+ }
+ /**
+ * @param string
+ */
+ public function setUpdateTime($updateTime)
+ {
+ $this->updateTime = $updateTime;
+ }
+ /**
+ * @return string
+ */
+ public function getUpdateTime()
+ {
+ return $this->updateTime;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\ContactGroupMetadata::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_ContactGroupMetadata');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ContactGroupResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ContactGroupResponse.php
new file mode 100644
index 000000000..604718922
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ContactGroupResponse.php
@@ -0,0 +1,74 @@
+contactGroup = $contactGroup;
+ }
+ /**
+ * @return ContactGroup
+ */
+ public function getContactGroup()
+ {
+ return $this->contactGroup;
+ }
+ /**
+ * @param string
+ */
+ public function setRequestedResourceName($requestedResourceName)
+ {
+ $this->requestedResourceName = $requestedResourceName;
+ }
+ /**
+ * @return string
+ */
+ public function getRequestedResourceName()
+ {
+ return $this->requestedResourceName;
+ }
+ /**
+ * @param Status
+ */
+ public function setStatus(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Status $status)
+ {
+ $this->status = $status;
+ }
+ /**
+ * @return Status
+ */
+ public function getStatus()
+ {
+ return $this->status;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\ContactGroupResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_ContactGroupResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ContactToCreate.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ContactToCreate.php
new file mode 100644
index 000000000..cc002c0e6
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ContactToCreate.php
@@ -0,0 +1,40 @@
+contactPerson = $contactPerson;
+ }
+ /**
+ * @return Person
+ */
+ public function getContactPerson()
+ {
+ return $this->contactPerson;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\ContactToCreate::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_ContactToCreate');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/CopyOtherContactToMyContactsGroupRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/CopyOtherContactToMyContactsGroupRequest.php
new file mode 100644
index 000000000..9b1f8cafa
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/CopyOtherContactToMyContactsGroupRequest.php
@@ -0,0 +1,79 @@
+copyMask = $copyMask;
+ }
+ /**
+ * @return string
+ */
+ public function getCopyMask()
+ {
+ return $this->copyMask;
+ }
+ /**
+ * @param string
+ */
+ public function setReadMask($readMask)
+ {
+ $this->readMask = $readMask;
+ }
+ /**
+ * @return string
+ */
+ public function getReadMask()
+ {
+ return $this->readMask;
+ }
+ /**
+ * @param string[]
+ */
+ public function setSources($sources)
+ {
+ $this->sources = $sources;
+ }
+ /**
+ * @return string[]
+ */
+ public function getSources()
+ {
+ return $this->sources;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\CopyOtherContactToMyContactsGroupRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_CopyOtherContactToMyContactsGroupRequest');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/CoverPhoto.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/CoverPhoto.php
new file mode 100644
index 000000000..53105acb8
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/CoverPhoto.php
@@ -0,0 +1,76 @@
+default = $default;
+ }
+ /**
+ * @return bool
+ */
+ public function getDefault()
+ {
+ return $this->default;
+ }
+ /**
+ * @param FieldMetadata
+ */
+ public function setMetadata(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\FieldMetadata $metadata)
+ {
+ $this->metadata = $metadata;
+ }
+ /**
+ * @return FieldMetadata
+ */
+ public function getMetadata()
+ {
+ return $this->metadata;
+ }
+ /**
+ * @param string
+ */
+ public function setUrl($url)
+ {
+ $this->url = $url;
+ }
+ /**
+ * @return string
+ */
+ public function getUrl()
+ {
+ return $this->url;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\CoverPhoto::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_CoverPhoto');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/CreateContactGroupRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/CreateContactGroupRequest.php
new file mode 100644
index 000000000..16d78c691
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/CreateContactGroupRequest.php
@@ -0,0 +1,58 @@
+contactGroup = $contactGroup;
+ }
+ /**
+ * @return ContactGroup
+ */
+ public function getContactGroup()
+ {
+ return $this->contactGroup;
+ }
+ /**
+ * @param string
+ */
+ public function setReadGroupFields($readGroupFields)
+ {
+ $this->readGroupFields = $readGroupFields;
+ }
+ /**
+ * @return string
+ */
+ public function getReadGroupFields()
+ {
+ return $this->readGroupFields;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\CreateContactGroupRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_CreateContactGroupRequest');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Date.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Date.php
new file mode 100644
index 000000000..440601670
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Date.php
@@ -0,0 +1,78 @@
+day = $day;
+ }
+ /**
+ * @return int
+ */
+ public function getDay()
+ {
+ return $this->day;
+ }
+ /**
+ * @param int
+ */
+ public function setMonth($month)
+ {
+ $this->month = $month;
+ }
+ /**
+ * @return int
+ */
+ public function getMonth()
+ {
+ return $this->month;
+ }
+ /**
+ * @param int
+ */
+ public function setYear($year)
+ {
+ $this->year = $year;
+ }
+ /**
+ * @return int
+ */
+ public function getYear()
+ {
+ return $this->year;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Date::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_Date');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/DeleteContactPhotoResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/DeleteContactPhotoResponse.php
new file mode 100644
index 000000000..ee1d03bec
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/DeleteContactPhotoResponse.php
@@ -0,0 +1,40 @@
+person = $person;
+ }
+ /**
+ * @return Person
+ */
+ public function getPerson()
+ {
+ return $this->person;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\DeleteContactPhotoResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_DeleteContactPhotoResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/DomainMembership.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/DomainMembership.php
new file mode 100644
index 000000000..2d4d118bb
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/DomainMembership.php
@@ -0,0 +1,42 @@
+inViewerDomain = $inViewerDomain;
+ }
+ /**
+ * @return bool
+ */
+ public function getInViewerDomain()
+ {
+ return $this->inViewerDomain;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\DomainMembership::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_DomainMembership');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/EmailAddress.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/EmailAddress.php
new file mode 100644
index 000000000..692acb5cf
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/EmailAddress.php
@@ -0,0 +1,112 @@
+displayName = $displayName;
+ }
+ /**
+ * @return string
+ */
+ public function getDisplayName()
+ {
+ return $this->displayName;
+ }
+ /**
+ * @param string
+ */
+ public function setFormattedType($formattedType)
+ {
+ $this->formattedType = $formattedType;
+ }
+ /**
+ * @return string
+ */
+ public function getFormattedType()
+ {
+ return $this->formattedType;
+ }
+ /**
+ * @param FieldMetadata
+ */
+ public function setMetadata(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\FieldMetadata $metadata)
+ {
+ $this->metadata = $metadata;
+ }
+ /**
+ * @return FieldMetadata
+ */
+ public function getMetadata()
+ {
+ return $this->metadata;
+ }
+ /**
+ * @param string
+ */
+ public function setType($type)
+ {
+ $this->type = $type;
+ }
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+ /**
+ * @param string
+ */
+ public function setValue($value)
+ {
+ $this->value = $value;
+ }
+ /**
+ * @return string
+ */
+ public function getValue()
+ {
+ return $this->value;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\EmailAddress::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_EmailAddress');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Event.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Event.php
new file mode 100644
index 000000000..e1aba7051
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Event.php
@@ -0,0 +1,92 @@
+date = $date;
+ }
+ /**
+ * @return Date
+ */
+ public function getDate()
+ {
+ return $this->date;
+ }
+ /**
+ * @param string
+ */
+ public function setFormattedType($formattedType)
+ {
+ $this->formattedType = $formattedType;
+ }
+ /**
+ * @return string
+ */
+ public function getFormattedType()
+ {
+ return $this->formattedType;
+ }
+ /**
+ * @param FieldMetadata
+ */
+ public function setMetadata(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\FieldMetadata $metadata)
+ {
+ $this->metadata = $metadata;
+ }
+ /**
+ * @return FieldMetadata
+ */
+ public function getMetadata()
+ {
+ return $this->metadata;
+ }
+ /**
+ * @param string
+ */
+ public function setType($type)
+ {
+ $this->type = $type;
+ }
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Event::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_Event');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ExternalId.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ExternalId.php
new file mode 100644
index 000000000..0e2950d61
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ExternalId.php
@@ -0,0 +1,94 @@
+formattedType = $formattedType;
+ }
+ /**
+ * @return string
+ */
+ public function getFormattedType()
+ {
+ return $this->formattedType;
+ }
+ /**
+ * @param FieldMetadata
+ */
+ public function setMetadata(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\FieldMetadata $metadata)
+ {
+ $this->metadata = $metadata;
+ }
+ /**
+ * @return FieldMetadata
+ */
+ public function getMetadata()
+ {
+ return $this->metadata;
+ }
+ /**
+ * @param string
+ */
+ public function setType($type)
+ {
+ $this->type = $type;
+ }
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+ /**
+ * @param string
+ */
+ public function setValue($value)
+ {
+ $this->value = $value;
+ }
+ /**
+ * @return string
+ */
+ public function getValue()
+ {
+ return $this->value;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\ExternalId::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_ExternalId');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/FieldMetadata.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/FieldMetadata.php
new file mode 100644
index 000000000..8551766d2
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/FieldMetadata.php
@@ -0,0 +1,94 @@
+primary = $primary;
+ }
+ /**
+ * @return bool
+ */
+ public function getPrimary()
+ {
+ return $this->primary;
+ }
+ /**
+ * @param Source
+ */
+ public function setSource(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Source $source)
+ {
+ $this->source = $source;
+ }
+ /**
+ * @return Source
+ */
+ public function getSource()
+ {
+ return $this->source;
+ }
+ /**
+ * @param bool
+ */
+ public function setSourcePrimary($sourcePrimary)
+ {
+ $this->sourcePrimary = $sourcePrimary;
+ }
+ /**
+ * @return bool
+ */
+ public function getSourcePrimary()
+ {
+ return $this->sourcePrimary;
+ }
+ /**
+ * @param bool
+ */
+ public function setVerified($verified)
+ {
+ $this->verified = $verified;
+ }
+ /**
+ * @return bool
+ */
+ public function getVerified()
+ {
+ return $this->verified;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\FieldMetadata::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_FieldMetadata');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/FileAs.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/FileAs.php
new file mode 100644
index 000000000..7ee228fa2
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/FileAs.php
@@ -0,0 +1,58 @@
+metadata = $metadata;
+ }
+ /**
+ * @return FieldMetadata
+ */
+ public function getMetadata()
+ {
+ return $this->metadata;
+ }
+ /**
+ * @param string
+ */
+ public function setValue($value)
+ {
+ $this->value = $value;
+ }
+ /**
+ * @return string
+ */
+ public function getValue()
+ {
+ return $this->value;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\FileAs::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_FileAs');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Gender.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Gender.php
new file mode 100644
index 000000000..a769b888d
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Gender.php
@@ -0,0 +1,94 @@
+addressMeAs = $addressMeAs;
+ }
+ /**
+ * @return string
+ */
+ public function getAddressMeAs()
+ {
+ return $this->addressMeAs;
+ }
+ /**
+ * @param string
+ */
+ public function setFormattedValue($formattedValue)
+ {
+ $this->formattedValue = $formattedValue;
+ }
+ /**
+ * @return string
+ */
+ public function getFormattedValue()
+ {
+ return $this->formattedValue;
+ }
+ /**
+ * @param FieldMetadata
+ */
+ public function setMetadata(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\FieldMetadata $metadata)
+ {
+ $this->metadata = $metadata;
+ }
+ /**
+ * @return FieldMetadata
+ */
+ public function getMetadata()
+ {
+ return $this->metadata;
+ }
+ /**
+ * @param string
+ */
+ public function setValue($value)
+ {
+ $this->value = $value;
+ }
+ /**
+ * @return string
+ */
+ public function getValue()
+ {
+ return $this->value;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Gender::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_Gender');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/GetPeopleResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/GetPeopleResponse.php
new file mode 100644
index 000000000..9a9dae053
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/GetPeopleResponse.php
@@ -0,0 +1,41 @@
+responses = $responses;
+ }
+ /**
+ * @return PersonResponse[]
+ */
+ public function getResponses()
+ {
+ return $this->responses;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\GetPeopleResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_GetPeopleResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/GroupClientData.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/GroupClientData.php
new file mode 100644
index 000000000..bd49c1f9c
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/GroupClientData.php
@@ -0,0 +1,60 @@
+key = $key;
+ }
+ /**
+ * @return string
+ */
+ public function getKey()
+ {
+ return $this->key;
+ }
+ /**
+ * @param string
+ */
+ public function setValue($value)
+ {
+ $this->value = $value;
+ }
+ /**
+ * @return string
+ */
+ public function getValue()
+ {
+ return $this->value;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\GroupClientData::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_GroupClientData');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ImClient.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ImClient.php
new file mode 100644
index 000000000..aed0455e9
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ImClient.php
@@ -0,0 +1,130 @@
+formattedProtocol = $formattedProtocol;
+ }
+ /**
+ * @return string
+ */
+ public function getFormattedProtocol()
+ {
+ return $this->formattedProtocol;
+ }
+ /**
+ * @param string
+ */
+ public function setFormattedType($formattedType)
+ {
+ $this->formattedType = $formattedType;
+ }
+ /**
+ * @return string
+ */
+ public function getFormattedType()
+ {
+ return $this->formattedType;
+ }
+ /**
+ * @param FieldMetadata
+ */
+ public function setMetadata(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\FieldMetadata $metadata)
+ {
+ $this->metadata = $metadata;
+ }
+ /**
+ * @return FieldMetadata
+ */
+ public function getMetadata()
+ {
+ return $this->metadata;
+ }
+ /**
+ * @param string
+ */
+ public function setProtocol($protocol)
+ {
+ $this->protocol = $protocol;
+ }
+ /**
+ * @return string
+ */
+ public function getProtocol()
+ {
+ return $this->protocol;
+ }
+ /**
+ * @param string
+ */
+ public function setType($type)
+ {
+ $this->type = $type;
+ }
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+ /**
+ * @param string
+ */
+ public function setUsername($username)
+ {
+ $this->username = $username;
+ }
+ /**
+ * @return string
+ */
+ public function getUsername()
+ {
+ return $this->username;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\ImClient::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_ImClient');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Interest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Interest.php
new file mode 100644
index 000000000..7d39ab1bd
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Interest.php
@@ -0,0 +1,58 @@
+metadata = $metadata;
+ }
+ /**
+ * @return FieldMetadata
+ */
+ public function getMetadata()
+ {
+ return $this->metadata;
+ }
+ /**
+ * @param string
+ */
+ public function setValue($value)
+ {
+ $this->value = $value;
+ }
+ /**
+ * @return string
+ */
+ public function getValue()
+ {
+ return $this->value;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Interest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_Interest');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ListConnectionsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ListConnectionsResponse.php
new file mode 100644
index 000000000..acbad1153
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ListConnectionsResponse.php
@@ -0,0 +1,113 @@
+connections = $connections;
+ }
+ /**
+ * @return Person[]
+ */
+ public function getConnections()
+ {
+ return $this->connections;
+ }
+ /**
+ * @param string
+ */
+ public function setNextPageToken($nextPageToken)
+ {
+ $this->nextPageToken = $nextPageToken;
+ }
+ /**
+ * @return string
+ */
+ public function getNextPageToken()
+ {
+ return $this->nextPageToken;
+ }
+ /**
+ * @param string
+ */
+ public function setNextSyncToken($nextSyncToken)
+ {
+ $this->nextSyncToken = $nextSyncToken;
+ }
+ /**
+ * @return string
+ */
+ public function getNextSyncToken()
+ {
+ return $this->nextSyncToken;
+ }
+ /**
+ * @param int
+ */
+ public function setTotalItems($totalItems)
+ {
+ $this->totalItems = $totalItems;
+ }
+ /**
+ * @return int
+ */
+ public function getTotalItems()
+ {
+ return $this->totalItems;
+ }
+ /**
+ * @param int
+ */
+ public function setTotalPeople($totalPeople)
+ {
+ $this->totalPeople = $totalPeople;
+ }
+ /**
+ * @return int
+ */
+ public function getTotalPeople()
+ {
+ return $this->totalPeople;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\ListConnectionsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_ListConnectionsResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ListContactGroupsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ListContactGroupsResponse.php
new file mode 100644
index 000000000..ee63ab745
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ListContactGroupsResponse.php
@@ -0,0 +1,95 @@
+contactGroups = $contactGroups;
+ }
+ /**
+ * @return ContactGroup[]
+ */
+ public function getContactGroups()
+ {
+ return $this->contactGroups;
+ }
+ /**
+ * @param string
+ */
+ public function setNextPageToken($nextPageToken)
+ {
+ $this->nextPageToken = $nextPageToken;
+ }
+ /**
+ * @return string
+ */
+ public function getNextPageToken()
+ {
+ return $this->nextPageToken;
+ }
+ /**
+ * @param string
+ */
+ public function setNextSyncToken($nextSyncToken)
+ {
+ $this->nextSyncToken = $nextSyncToken;
+ }
+ /**
+ * @return string
+ */
+ public function getNextSyncToken()
+ {
+ return $this->nextSyncToken;
+ }
+ /**
+ * @param int
+ */
+ public function setTotalItems($totalItems)
+ {
+ $this->totalItems = $totalItems;
+ }
+ /**
+ * @return int
+ */
+ public function getTotalItems()
+ {
+ return $this->totalItems;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\ListContactGroupsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_ListContactGroupsResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ListDirectoryPeopleResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ListDirectoryPeopleResponse.php
new file mode 100644
index 000000000..420949fd9
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ListDirectoryPeopleResponse.php
@@ -0,0 +1,77 @@
+nextPageToken = $nextPageToken;
+ }
+ /**
+ * @return string
+ */
+ public function getNextPageToken()
+ {
+ return $this->nextPageToken;
+ }
+ /**
+ * @param string
+ */
+ public function setNextSyncToken($nextSyncToken)
+ {
+ $this->nextSyncToken = $nextSyncToken;
+ }
+ /**
+ * @return string
+ */
+ public function getNextSyncToken()
+ {
+ return $this->nextSyncToken;
+ }
+ /**
+ * @param Person[]
+ */
+ public function setPeople($people)
+ {
+ $this->people = $people;
+ }
+ /**
+ * @return Person[]
+ */
+ public function getPeople()
+ {
+ return $this->people;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\ListDirectoryPeopleResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_ListDirectoryPeopleResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ListOtherContactsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ListOtherContactsResponse.php
new file mode 100644
index 000000000..ff1ce6749
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ListOtherContactsResponse.php
@@ -0,0 +1,95 @@
+nextPageToken = $nextPageToken;
+ }
+ /**
+ * @return string
+ */
+ public function getNextPageToken()
+ {
+ return $this->nextPageToken;
+ }
+ /**
+ * @param string
+ */
+ public function setNextSyncToken($nextSyncToken)
+ {
+ $this->nextSyncToken = $nextSyncToken;
+ }
+ /**
+ * @return string
+ */
+ public function getNextSyncToken()
+ {
+ return $this->nextSyncToken;
+ }
+ /**
+ * @param Person[]
+ */
+ public function setOtherContacts($otherContacts)
+ {
+ $this->otherContacts = $otherContacts;
+ }
+ /**
+ * @return Person[]
+ */
+ public function getOtherContacts()
+ {
+ return $this->otherContacts;
+ }
+ /**
+ * @param int
+ */
+ public function setTotalSize($totalSize)
+ {
+ $this->totalSize = $totalSize;
+ }
+ /**
+ * @return int
+ */
+ public function getTotalSize()
+ {
+ return $this->totalSize;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\ListOtherContactsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_ListOtherContactsResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Locale.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Locale.php
new file mode 100644
index 000000000..e3df3666f
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Locale.php
@@ -0,0 +1,58 @@
+metadata = $metadata;
+ }
+ /**
+ * @return FieldMetadata
+ */
+ public function getMetadata()
+ {
+ return $this->metadata;
+ }
+ /**
+ * @param string
+ */
+ public function setValue($value)
+ {
+ $this->value = $value;
+ }
+ /**
+ * @return string
+ */
+ public function getValue()
+ {
+ return $this->value;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Locale::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_Locale');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Location.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Location.php
new file mode 100644
index 000000000..65534477d
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Location.php
@@ -0,0 +1,166 @@
+buildingId = $buildingId;
+ }
+ /**
+ * @return string
+ */
+ public function getBuildingId()
+ {
+ return $this->buildingId;
+ }
+ /**
+ * @param bool
+ */
+ public function setCurrent($current)
+ {
+ $this->current = $current;
+ }
+ /**
+ * @return bool
+ */
+ public function getCurrent()
+ {
+ return $this->current;
+ }
+ /**
+ * @param string
+ */
+ public function setDeskCode($deskCode)
+ {
+ $this->deskCode = $deskCode;
+ }
+ /**
+ * @return string
+ */
+ public function getDeskCode()
+ {
+ return $this->deskCode;
+ }
+ /**
+ * @param string
+ */
+ public function setFloor($floor)
+ {
+ $this->floor = $floor;
+ }
+ /**
+ * @return string
+ */
+ public function getFloor()
+ {
+ return $this->floor;
+ }
+ /**
+ * @param string
+ */
+ public function setFloorSection($floorSection)
+ {
+ $this->floorSection = $floorSection;
+ }
+ /**
+ * @return string
+ */
+ public function getFloorSection()
+ {
+ return $this->floorSection;
+ }
+ /**
+ * @param FieldMetadata
+ */
+ public function setMetadata(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\FieldMetadata $metadata)
+ {
+ $this->metadata = $metadata;
+ }
+ /**
+ * @return FieldMetadata
+ */
+ public function getMetadata()
+ {
+ return $this->metadata;
+ }
+ /**
+ * @param string
+ */
+ public function setType($type)
+ {
+ $this->type = $type;
+ }
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+ /**
+ * @param string
+ */
+ public function setValue($value)
+ {
+ $this->value = $value;
+ }
+ /**
+ * @return string
+ */
+ public function getValue()
+ {
+ return $this->value;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Location::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_Location');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Membership.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Membership.php
new file mode 100644
index 000000000..31c9a7d45
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Membership.php
@@ -0,0 +1,72 @@
+contactGroupMembership = $contactGroupMembership;
+ }
+ /**
+ * @return ContactGroupMembership
+ */
+ public function getContactGroupMembership()
+ {
+ return $this->contactGroupMembership;
+ }
+ /**
+ * @param DomainMembership
+ */
+ public function setDomainMembership(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\DomainMembership $domainMembership)
+ {
+ $this->domainMembership = $domainMembership;
+ }
+ /**
+ * @return DomainMembership
+ */
+ public function getDomainMembership()
+ {
+ return $this->domainMembership;
+ }
+ /**
+ * @param FieldMetadata
+ */
+ public function setMetadata(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\FieldMetadata $metadata)
+ {
+ $this->metadata = $metadata;
+ }
+ /**
+ * @return FieldMetadata
+ */
+ public function getMetadata()
+ {
+ return $this->metadata;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Membership::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_Membership');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/MiscKeyword.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/MiscKeyword.php
new file mode 100644
index 000000000..afd2b4134
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/MiscKeyword.php
@@ -0,0 +1,94 @@
+formattedType = $formattedType;
+ }
+ /**
+ * @return string
+ */
+ public function getFormattedType()
+ {
+ return $this->formattedType;
+ }
+ /**
+ * @param FieldMetadata
+ */
+ public function setMetadata(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\FieldMetadata $metadata)
+ {
+ $this->metadata = $metadata;
+ }
+ /**
+ * @return FieldMetadata
+ */
+ public function getMetadata()
+ {
+ return $this->metadata;
+ }
+ /**
+ * @param string
+ */
+ public function setType($type)
+ {
+ $this->type = $type;
+ }
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+ /**
+ * @param string
+ */
+ public function setValue($value)
+ {
+ $this->value = $value;
+ }
+ /**
+ * @return string
+ */
+ public function getValue()
+ {
+ return $this->value;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\MiscKeyword::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_MiscKeyword');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ModifyContactGroupMembersRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ModifyContactGroupMembersRequest.php
new file mode 100644
index 000000000..a39d9b221
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ModifyContactGroupMembersRequest.php
@@ -0,0 +1,61 @@
+resourceNamesToAdd = $resourceNamesToAdd;
+ }
+ /**
+ * @return string[]
+ */
+ public function getResourceNamesToAdd()
+ {
+ return $this->resourceNamesToAdd;
+ }
+ /**
+ * @param string[]
+ */
+ public function setResourceNamesToRemove($resourceNamesToRemove)
+ {
+ $this->resourceNamesToRemove = $resourceNamesToRemove;
+ }
+ /**
+ * @return string[]
+ */
+ public function getResourceNamesToRemove()
+ {
+ return $this->resourceNamesToRemove;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\ModifyContactGroupMembersRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_ModifyContactGroupMembersRequest');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ModifyContactGroupMembersResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ModifyContactGroupMembersResponse.php
new file mode 100644
index 000000000..ea8ab76fa
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ModifyContactGroupMembersResponse.php
@@ -0,0 +1,61 @@
+canNotRemoveLastContactGroupResourceNames = $canNotRemoveLastContactGroupResourceNames;
+ }
+ /**
+ * @return string[]
+ */
+ public function getCanNotRemoveLastContactGroupResourceNames()
+ {
+ return $this->canNotRemoveLastContactGroupResourceNames;
+ }
+ /**
+ * @param string[]
+ */
+ public function setNotFoundResourceNames($notFoundResourceNames)
+ {
+ $this->notFoundResourceNames = $notFoundResourceNames;
+ }
+ /**
+ * @return string[]
+ */
+ public function getNotFoundResourceNames()
+ {
+ return $this->notFoundResourceNames;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\ModifyContactGroupMembersResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_ModifyContactGroupMembersResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Name.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Name.php
new file mode 100644
index 000000000..47481cb06
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Name.php
@@ -0,0 +1,292 @@
+displayName = $displayName;
+ }
+ /**
+ * @return string
+ */
+ public function getDisplayName()
+ {
+ return $this->displayName;
+ }
+ /**
+ * @param string
+ */
+ public function setDisplayNameLastFirst($displayNameLastFirst)
+ {
+ $this->displayNameLastFirst = $displayNameLastFirst;
+ }
+ /**
+ * @return string
+ */
+ public function getDisplayNameLastFirst()
+ {
+ return $this->displayNameLastFirst;
+ }
+ /**
+ * @param string
+ */
+ public function setFamilyName($familyName)
+ {
+ $this->familyName = $familyName;
+ }
+ /**
+ * @return string
+ */
+ public function getFamilyName()
+ {
+ return $this->familyName;
+ }
+ /**
+ * @param string
+ */
+ public function setGivenName($givenName)
+ {
+ $this->givenName = $givenName;
+ }
+ /**
+ * @return string
+ */
+ public function getGivenName()
+ {
+ return $this->givenName;
+ }
+ /**
+ * @param string
+ */
+ public function setHonorificPrefix($honorificPrefix)
+ {
+ $this->honorificPrefix = $honorificPrefix;
+ }
+ /**
+ * @return string
+ */
+ public function getHonorificPrefix()
+ {
+ return $this->honorificPrefix;
+ }
+ /**
+ * @param string
+ */
+ public function setHonorificSuffix($honorificSuffix)
+ {
+ $this->honorificSuffix = $honorificSuffix;
+ }
+ /**
+ * @return string
+ */
+ public function getHonorificSuffix()
+ {
+ return $this->honorificSuffix;
+ }
+ /**
+ * @param FieldMetadata
+ */
+ public function setMetadata(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\FieldMetadata $metadata)
+ {
+ $this->metadata = $metadata;
+ }
+ /**
+ * @return FieldMetadata
+ */
+ public function getMetadata()
+ {
+ return $this->metadata;
+ }
+ /**
+ * @param string
+ */
+ public function setMiddleName($middleName)
+ {
+ $this->middleName = $middleName;
+ }
+ /**
+ * @return string
+ */
+ public function getMiddleName()
+ {
+ return $this->middleName;
+ }
+ /**
+ * @param string
+ */
+ public function setPhoneticFamilyName($phoneticFamilyName)
+ {
+ $this->phoneticFamilyName = $phoneticFamilyName;
+ }
+ /**
+ * @return string
+ */
+ public function getPhoneticFamilyName()
+ {
+ return $this->phoneticFamilyName;
+ }
+ /**
+ * @param string
+ */
+ public function setPhoneticFullName($phoneticFullName)
+ {
+ $this->phoneticFullName = $phoneticFullName;
+ }
+ /**
+ * @return string
+ */
+ public function getPhoneticFullName()
+ {
+ return $this->phoneticFullName;
+ }
+ /**
+ * @param string
+ */
+ public function setPhoneticGivenName($phoneticGivenName)
+ {
+ $this->phoneticGivenName = $phoneticGivenName;
+ }
+ /**
+ * @return string
+ */
+ public function getPhoneticGivenName()
+ {
+ return $this->phoneticGivenName;
+ }
+ /**
+ * @param string
+ */
+ public function setPhoneticHonorificPrefix($phoneticHonorificPrefix)
+ {
+ $this->phoneticHonorificPrefix = $phoneticHonorificPrefix;
+ }
+ /**
+ * @return string
+ */
+ public function getPhoneticHonorificPrefix()
+ {
+ return $this->phoneticHonorificPrefix;
+ }
+ /**
+ * @param string
+ */
+ public function setPhoneticHonorificSuffix($phoneticHonorificSuffix)
+ {
+ $this->phoneticHonorificSuffix = $phoneticHonorificSuffix;
+ }
+ /**
+ * @return string
+ */
+ public function getPhoneticHonorificSuffix()
+ {
+ return $this->phoneticHonorificSuffix;
+ }
+ /**
+ * @param string
+ */
+ public function setPhoneticMiddleName($phoneticMiddleName)
+ {
+ $this->phoneticMiddleName = $phoneticMiddleName;
+ }
+ /**
+ * @return string
+ */
+ public function getPhoneticMiddleName()
+ {
+ return $this->phoneticMiddleName;
+ }
+ /**
+ * @param string
+ */
+ public function setUnstructuredName($unstructuredName)
+ {
+ $this->unstructuredName = $unstructuredName;
+ }
+ /**
+ * @return string
+ */
+ public function getUnstructuredName()
+ {
+ return $this->unstructuredName;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Name::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_Name');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Nickname.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Nickname.php
new file mode 100644
index 000000000..8d9bf86fd
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Nickname.php
@@ -0,0 +1,76 @@
+metadata = $metadata;
+ }
+ /**
+ * @return FieldMetadata
+ */
+ public function getMetadata()
+ {
+ return $this->metadata;
+ }
+ /**
+ * @param string
+ */
+ public function setType($type)
+ {
+ $this->type = $type;
+ }
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+ /**
+ * @param string
+ */
+ public function setValue($value)
+ {
+ $this->value = $value;
+ }
+ /**
+ * @return string
+ */
+ public function getValue()
+ {
+ return $this->value;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Nickname::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_Nickname');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Occupation.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Occupation.php
new file mode 100644
index 000000000..407d9b01e
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Occupation.php
@@ -0,0 +1,58 @@
+metadata = $metadata;
+ }
+ /**
+ * @return FieldMetadata
+ */
+ public function getMetadata()
+ {
+ return $this->metadata;
+ }
+ /**
+ * @param string
+ */
+ public function setValue($value)
+ {
+ $this->value = $value;
+ }
+ /**
+ * @return string
+ */
+ public function getValue()
+ {
+ return $this->value;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Occupation::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_Occupation');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Organization.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Organization.php
new file mode 100644
index 000000000..8b2a9bd3e
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Organization.php
@@ -0,0 +1,306 @@
+costCenter = $costCenter;
+ }
+ /**
+ * @return string
+ */
+ public function getCostCenter()
+ {
+ return $this->costCenter;
+ }
+ /**
+ * @param bool
+ */
+ public function setCurrent($current)
+ {
+ $this->current = $current;
+ }
+ /**
+ * @return bool
+ */
+ public function getCurrent()
+ {
+ return $this->current;
+ }
+ /**
+ * @param string
+ */
+ public function setDepartment($department)
+ {
+ $this->department = $department;
+ }
+ /**
+ * @return string
+ */
+ public function getDepartment()
+ {
+ return $this->department;
+ }
+ /**
+ * @param string
+ */
+ public function setDomain($domain)
+ {
+ $this->domain = $domain;
+ }
+ /**
+ * @return string
+ */
+ public function getDomain()
+ {
+ return $this->domain;
+ }
+ /**
+ * @param Date
+ */
+ public function setEndDate(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Date $endDate)
+ {
+ $this->endDate = $endDate;
+ }
+ /**
+ * @return Date
+ */
+ public function getEndDate()
+ {
+ return $this->endDate;
+ }
+ /**
+ * @param string
+ */
+ public function setFormattedType($formattedType)
+ {
+ $this->formattedType = $formattedType;
+ }
+ /**
+ * @return string
+ */
+ public function getFormattedType()
+ {
+ return $this->formattedType;
+ }
+ /**
+ * @param int
+ */
+ public function setFullTimeEquivalentMillipercent($fullTimeEquivalentMillipercent)
+ {
+ $this->fullTimeEquivalentMillipercent = $fullTimeEquivalentMillipercent;
+ }
+ /**
+ * @return int
+ */
+ public function getFullTimeEquivalentMillipercent()
+ {
+ return $this->fullTimeEquivalentMillipercent;
+ }
+ /**
+ * @param string
+ */
+ public function setJobDescription($jobDescription)
+ {
+ $this->jobDescription = $jobDescription;
+ }
+ /**
+ * @return string
+ */
+ public function getJobDescription()
+ {
+ return $this->jobDescription;
+ }
+ /**
+ * @param string
+ */
+ public function setLocation($location)
+ {
+ $this->location = $location;
+ }
+ /**
+ * @return string
+ */
+ public function getLocation()
+ {
+ return $this->location;
+ }
+ /**
+ * @param FieldMetadata
+ */
+ public function setMetadata(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\FieldMetadata $metadata)
+ {
+ $this->metadata = $metadata;
+ }
+ /**
+ * @return FieldMetadata
+ */
+ public function getMetadata()
+ {
+ return $this->metadata;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param string
+ */
+ public function setPhoneticName($phoneticName)
+ {
+ $this->phoneticName = $phoneticName;
+ }
+ /**
+ * @return string
+ */
+ public function getPhoneticName()
+ {
+ return $this->phoneticName;
+ }
+ /**
+ * @param Date
+ */
+ public function setStartDate(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Date $startDate)
+ {
+ $this->startDate = $startDate;
+ }
+ /**
+ * @return Date
+ */
+ public function getStartDate()
+ {
+ return $this->startDate;
+ }
+ /**
+ * @param string
+ */
+ public function setSymbol($symbol)
+ {
+ $this->symbol = $symbol;
+ }
+ /**
+ * @return string
+ */
+ public function getSymbol()
+ {
+ return $this->symbol;
+ }
+ /**
+ * @param string
+ */
+ public function setTitle($title)
+ {
+ $this->title = $title;
+ }
+ /**
+ * @return string
+ */
+ public function getTitle()
+ {
+ return $this->title;
+ }
+ /**
+ * @param string
+ */
+ public function setType($type)
+ {
+ $this->type = $type;
+ }
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Organization::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_Organization');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/PeopleEmpty.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/PeopleEmpty.php
new file mode 100644
index 000000000..6edc3462e
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/PeopleEmpty.php
@@ -0,0 +1,24 @@
+addresses = $addresses;
+ }
+ /**
+ * @return Address[]
+ */
+ public function getAddresses()
+ {
+ return $this->addresses;
+ }
+ /**
+ * @param string
+ */
+ public function setAgeRange($ageRange)
+ {
+ $this->ageRange = $ageRange;
+ }
+ /**
+ * @return string
+ */
+ public function getAgeRange()
+ {
+ return $this->ageRange;
+ }
+ /**
+ * @param AgeRangeType[]
+ */
+ public function setAgeRanges($ageRanges)
+ {
+ $this->ageRanges = $ageRanges;
+ }
+ /**
+ * @return AgeRangeType[]
+ */
+ public function getAgeRanges()
+ {
+ return $this->ageRanges;
+ }
+ /**
+ * @param Biography[]
+ */
+ public function setBiographies($biographies)
+ {
+ $this->biographies = $biographies;
+ }
+ /**
+ * @return Biography[]
+ */
+ public function getBiographies()
+ {
+ return $this->biographies;
+ }
+ /**
+ * @param Birthday[]
+ */
+ public function setBirthdays($birthdays)
+ {
+ $this->birthdays = $birthdays;
+ }
+ /**
+ * @return Birthday[]
+ */
+ public function getBirthdays()
+ {
+ return $this->birthdays;
+ }
+ /**
+ * @param BraggingRights[]
+ */
+ public function setBraggingRights($braggingRights)
+ {
+ $this->braggingRights = $braggingRights;
+ }
+ /**
+ * @return BraggingRights[]
+ */
+ public function getBraggingRights()
+ {
+ return $this->braggingRights;
+ }
+ /**
+ * @param CalendarUrl[]
+ */
+ public function setCalendarUrls($calendarUrls)
+ {
+ $this->calendarUrls = $calendarUrls;
+ }
+ /**
+ * @return CalendarUrl[]
+ */
+ public function getCalendarUrls()
+ {
+ return $this->calendarUrls;
+ }
+ /**
+ * @param ClientData[]
+ */
+ public function setClientData($clientData)
+ {
+ $this->clientData = $clientData;
+ }
+ /**
+ * @return ClientData[]
+ */
+ public function getClientData()
+ {
+ return $this->clientData;
+ }
+ /**
+ * @param CoverPhoto[]
+ */
+ public function setCoverPhotos($coverPhotos)
+ {
+ $this->coverPhotos = $coverPhotos;
+ }
+ /**
+ * @return CoverPhoto[]
+ */
+ public function getCoverPhotos()
+ {
+ return $this->coverPhotos;
+ }
+ /**
+ * @param EmailAddress[]
+ */
+ public function setEmailAddresses($emailAddresses)
+ {
+ $this->emailAddresses = $emailAddresses;
+ }
+ /**
+ * @return EmailAddress[]
+ */
+ public function getEmailAddresses()
+ {
+ return $this->emailAddresses;
+ }
+ /**
+ * @param string
+ */
+ public function setEtag($etag)
+ {
+ $this->etag = $etag;
+ }
+ /**
+ * @return string
+ */
+ public function getEtag()
+ {
+ return $this->etag;
+ }
+ /**
+ * @param Event[]
+ */
+ public function setEvents($events)
+ {
+ $this->events = $events;
+ }
+ /**
+ * @return Event[]
+ */
+ public function getEvents()
+ {
+ return $this->events;
+ }
+ /**
+ * @param ExternalId[]
+ */
+ public function setExternalIds($externalIds)
+ {
+ $this->externalIds = $externalIds;
+ }
+ /**
+ * @return ExternalId[]
+ */
+ public function getExternalIds()
+ {
+ return $this->externalIds;
+ }
+ /**
+ * @param FileAs[]
+ */
+ public function setFileAses($fileAses)
+ {
+ $this->fileAses = $fileAses;
+ }
+ /**
+ * @return FileAs[]
+ */
+ public function getFileAses()
+ {
+ return $this->fileAses;
+ }
+ /**
+ * @param Gender[]
+ */
+ public function setGenders($genders)
+ {
+ $this->genders = $genders;
+ }
+ /**
+ * @return Gender[]
+ */
+ public function getGenders()
+ {
+ return $this->genders;
+ }
+ /**
+ * @param ImClient[]
+ */
+ public function setImClients($imClients)
+ {
+ $this->imClients = $imClients;
+ }
+ /**
+ * @return ImClient[]
+ */
+ public function getImClients()
+ {
+ return $this->imClients;
+ }
+ /**
+ * @param Interest[]
+ */
+ public function setInterests($interests)
+ {
+ $this->interests = $interests;
+ }
+ /**
+ * @return Interest[]
+ */
+ public function getInterests()
+ {
+ return $this->interests;
+ }
+ /**
+ * @param Locale[]
+ */
+ public function setLocales($locales)
+ {
+ $this->locales = $locales;
+ }
+ /**
+ * @return Locale[]
+ */
+ public function getLocales()
+ {
+ return $this->locales;
+ }
+ /**
+ * @param Location[]
+ */
+ public function setLocations($locations)
+ {
+ $this->locations = $locations;
+ }
+ /**
+ * @return Location[]
+ */
+ public function getLocations()
+ {
+ return $this->locations;
+ }
+ /**
+ * @param Membership[]
+ */
+ public function setMemberships($memberships)
+ {
+ $this->memberships = $memberships;
+ }
+ /**
+ * @return Membership[]
+ */
+ public function getMemberships()
+ {
+ return $this->memberships;
+ }
+ /**
+ * @param PersonMetadata
+ */
+ public function setMetadata(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\PersonMetadata $metadata)
+ {
+ $this->metadata = $metadata;
+ }
+ /**
+ * @return PersonMetadata
+ */
+ public function getMetadata()
+ {
+ return $this->metadata;
+ }
+ /**
+ * @param MiscKeyword[]
+ */
+ public function setMiscKeywords($miscKeywords)
+ {
+ $this->miscKeywords = $miscKeywords;
+ }
+ /**
+ * @return MiscKeyword[]
+ */
+ public function getMiscKeywords()
+ {
+ return $this->miscKeywords;
+ }
+ /**
+ * @param Name[]
+ */
+ public function setNames($names)
+ {
+ $this->names = $names;
+ }
+ /**
+ * @return Name[]
+ */
+ public function getNames()
+ {
+ return $this->names;
+ }
+ /**
+ * @param Nickname[]
+ */
+ public function setNicknames($nicknames)
+ {
+ $this->nicknames = $nicknames;
+ }
+ /**
+ * @return Nickname[]
+ */
+ public function getNicknames()
+ {
+ return $this->nicknames;
+ }
+ /**
+ * @param Occupation[]
+ */
+ public function setOccupations($occupations)
+ {
+ $this->occupations = $occupations;
+ }
+ /**
+ * @return Occupation[]
+ */
+ public function getOccupations()
+ {
+ return $this->occupations;
+ }
+ /**
+ * @param Organization[]
+ */
+ public function setOrganizations($organizations)
+ {
+ $this->organizations = $organizations;
+ }
+ /**
+ * @return Organization[]
+ */
+ public function getOrganizations()
+ {
+ return $this->organizations;
+ }
+ /**
+ * @param PhoneNumber[]
+ */
+ public function setPhoneNumbers($phoneNumbers)
+ {
+ $this->phoneNumbers = $phoneNumbers;
+ }
+ /**
+ * @return PhoneNumber[]
+ */
+ public function getPhoneNumbers()
+ {
+ return $this->phoneNumbers;
+ }
+ /**
+ * @param Photo[]
+ */
+ public function setPhotos($photos)
+ {
+ $this->photos = $photos;
+ }
+ /**
+ * @return Photo[]
+ */
+ public function getPhotos()
+ {
+ return $this->photos;
+ }
+ /**
+ * @param Relation[]
+ */
+ public function setRelations($relations)
+ {
+ $this->relations = $relations;
+ }
+ /**
+ * @return Relation[]
+ */
+ public function getRelations()
+ {
+ return $this->relations;
+ }
+ /**
+ * @param RelationshipInterest[]
+ */
+ public function setRelationshipInterests($relationshipInterests)
+ {
+ $this->relationshipInterests = $relationshipInterests;
+ }
+ /**
+ * @return RelationshipInterest[]
+ */
+ public function getRelationshipInterests()
+ {
+ return $this->relationshipInterests;
+ }
+ /**
+ * @param RelationshipStatus[]
+ */
+ public function setRelationshipStatuses($relationshipStatuses)
+ {
+ $this->relationshipStatuses = $relationshipStatuses;
+ }
+ /**
+ * @return RelationshipStatus[]
+ */
+ public function getRelationshipStatuses()
+ {
+ return $this->relationshipStatuses;
+ }
+ /**
+ * @param Residence[]
+ */
+ public function setResidences($residences)
+ {
+ $this->residences = $residences;
+ }
+ /**
+ * @return Residence[]
+ */
+ public function getResidences()
+ {
+ return $this->residences;
+ }
+ /**
+ * @param string
+ */
+ public function setResourceName($resourceName)
+ {
+ $this->resourceName = $resourceName;
+ }
+ /**
+ * @return string
+ */
+ public function getResourceName()
+ {
+ return $this->resourceName;
+ }
+ /**
+ * @param SipAddress[]
+ */
+ public function setSipAddresses($sipAddresses)
+ {
+ $this->sipAddresses = $sipAddresses;
+ }
+ /**
+ * @return SipAddress[]
+ */
+ public function getSipAddresses()
+ {
+ return $this->sipAddresses;
+ }
+ /**
+ * @param Skill[]
+ */
+ public function setSkills($skills)
+ {
+ $this->skills = $skills;
+ }
+ /**
+ * @return Skill[]
+ */
+ public function getSkills()
+ {
+ return $this->skills;
+ }
+ /**
+ * @param Tagline[]
+ */
+ public function setTaglines($taglines)
+ {
+ $this->taglines = $taglines;
+ }
+ /**
+ * @return Tagline[]
+ */
+ public function getTaglines()
+ {
+ return $this->taglines;
+ }
+ /**
+ * @param Url[]
+ */
+ public function setUrls($urls)
+ {
+ $this->urls = $urls;
+ }
+ /**
+ * @return Url[]
+ */
+ public function getUrls()
+ {
+ return $this->urls;
+ }
+ /**
+ * @param UserDefined[]
+ */
+ public function setUserDefined($userDefined)
+ {
+ $this->userDefined = $userDefined;
+ }
+ /**
+ * @return UserDefined[]
+ */
+ public function getUserDefined()
+ {
+ return $this->userDefined;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Person::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_Person');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/PersonMetadata.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/PersonMetadata.php
new file mode 100644
index 000000000..f10bc02e3
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/PersonMetadata.php
@@ -0,0 +1,113 @@
+deleted = $deleted;
+ }
+ /**
+ * @return bool
+ */
+ public function getDeleted()
+ {
+ return $this->deleted;
+ }
+ /**
+ * @param string[]
+ */
+ public function setLinkedPeopleResourceNames($linkedPeopleResourceNames)
+ {
+ $this->linkedPeopleResourceNames = $linkedPeopleResourceNames;
+ }
+ /**
+ * @return string[]
+ */
+ public function getLinkedPeopleResourceNames()
+ {
+ return $this->linkedPeopleResourceNames;
+ }
+ /**
+ * @param string
+ */
+ public function setObjectType($objectType)
+ {
+ $this->objectType = $objectType;
+ }
+ /**
+ * @return string
+ */
+ public function getObjectType()
+ {
+ return $this->objectType;
+ }
+ /**
+ * @param string[]
+ */
+ public function setPreviousResourceNames($previousResourceNames)
+ {
+ $this->previousResourceNames = $previousResourceNames;
+ }
+ /**
+ * @return string[]
+ */
+ public function getPreviousResourceNames()
+ {
+ return $this->previousResourceNames;
+ }
+ /**
+ * @param Source[]
+ */
+ public function setSources($sources)
+ {
+ $this->sources = $sources;
+ }
+ /**
+ * @return Source[]
+ */
+ public function getSources()
+ {
+ return $this->sources;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\PersonMetadata::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_PersonMetadata');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/PersonResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/PersonResponse.php
new file mode 100644
index 000000000..b3aa43812
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/PersonResponse.php
@@ -0,0 +1,92 @@
+httpStatusCode = $httpStatusCode;
+ }
+ /**
+ * @return int
+ */
+ public function getHttpStatusCode()
+ {
+ return $this->httpStatusCode;
+ }
+ /**
+ * @param Person
+ */
+ public function setPerson(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Person $person)
+ {
+ $this->person = $person;
+ }
+ /**
+ * @return Person
+ */
+ public function getPerson()
+ {
+ return $this->person;
+ }
+ /**
+ * @param string
+ */
+ public function setRequestedResourceName($requestedResourceName)
+ {
+ $this->requestedResourceName = $requestedResourceName;
+ }
+ /**
+ * @return string
+ */
+ public function getRequestedResourceName()
+ {
+ return $this->requestedResourceName;
+ }
+ /**
+ * @param Status
+ */
+ public function setStatus(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Status $status)
+ {
+ $this->status = $status;
+ }
+ /**
+ * @return Status
+ */
+ public function getStatus()
+ {
+ return $this->status;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\PersonResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_PersonResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/PhoneNumber.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/PhoneNumber.php
new file mode 100644
index 000000000..f7dbb0a14
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/PhoneNumber.php
@@ -0,0 +1,112 @@
+canonicalForm = $canonicalForm;
+ }
+ /**
+ * @return string
+ */
+ public function getCanonicalForm()
+ {
+ return $this->canonicalForm;
+ }
+ /**
+ * @param string
+ */
+ public function setFormattedType($formattedType)
+ {
+ $this->formattedType = $formattedType;
+ }
+ /**
+ * @return string
+ */
+ public function getFormattedType()
+ {
+ return $this->formattedType;
+ }
+ /**
+ * @param FieldMetadata
+ */
+ public function setMetadata(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\FieldMetadata $metadata)
+ {
+ $this->metadata = $metadata;
+ }
+ /**
+ * @return FieldMetadata
+ */
+ public function getMetadata()
+ {
+ return $this->metadata;
+ }
+ /**
+ * @param string
+ */
+ public function setType($type)
+ {
+ $this->type = $type;
+ }
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+ /**
+ * @param string
+ */
+ public function setValue($value)
+ {
+ $this->value = $value;
+ }
+ /**
+ * @return string
+ */
+ public function getValue()
+ {
+ return $this->value;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\PhoneNumber::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_PhoneNumber');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Photo.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Photo.php
new file mode 100644
index 000000000..60a1850da
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Photo.php
@@ -0,0 +1,76 @@
+default = $default;
+ }
+ /**
+ * @return bool
+ */
+ public function getDefault()
+ {
+ return $this->default;
+ }
+ /**
+ * @param FieldMetadata
+ */
+ public function setMetadata(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\FieldMetadata $metadata)
+ {
+ $this->metadata = $metadata;
+ }
+ /**
+ * @return FieldMetadata
+ */
+ public function getMetadata()
+ {
+ return $this->metadata;
+ }
+ /**
+ * @param string
+ */
+ public function setUrl($url)
+ {
+ $this->url = $url;
+ }
+ /**
+ * @return string
+ */
+ public function getUrl()
+ {
+ return $this->url;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Photo::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_Photo');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ProfileMetadata.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ProfileMetadata.php
new file mode 100644
index 000000000..ddc584e8d
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/ProfileMetadata.php
@@ -0,0 +1,61 @@
+objectType = $objectType;
+ }
+ /**
+ * @return string
+ */
+ public function getObjectType()
+ {
+ return $this->objectType;
+ }
+ /**
+ * @param string[]
+ */
+ public function setUserTypes($userTypes)
+ {
+ $this->userTypes = $userTypes;
+ }
+ /**
+ * @return string[]
+ */
+ public function getUserTypes()
+ {
+ return $this->userTypes;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\ProfileMetadata::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_ProfileMetadata');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Relation.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Relation.php
new file mode 100644
index 000000000..ac308c9d9
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Relation.php
@@ -0,0 +1,94 @@
+formattedType = $formattedType;
+ }
+ /**
+ * @return string
+ */
+ public function getFormattedType()
+ {
+ return $this->formattedType;
+ }
+ /**
+ * @param FieldMetadata
+ */
+ public function setMetadata(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\FieldMetadata $metadata)
+ {
+ $this->metadata = $metadata;
+ }
+ /**
+ * @return FieldMetadata
+ */
+ public function getMetadata()
+ {
+ return $this->metadata;
+ }
+ /**
+ * @param string
+ */
+ public function setPerson($person)
+ {
+ $this->person = $person;
+ }
+ /**
+ * @return string
+ */
+ public function getPerson()
+ {
+ return $this->person;
+ }
+ /**
+ * @param string
+ */
+ public function setType($type)
+ {
+ $this->type = $type;
+ }
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Relation::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_Relation');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/RelationshipInterest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/RelationshipInterest.php
new file mode 100644
index 000000000..f663a8781
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/RelationshipInterest.php
@@ -0,0 +1,76 @@
+formattedValue = $formattedValue;
+ }
+ /**
+ * @return string
+ */
+ public function getFormattedValue()
+ {
+ return $this->formattedValue;
+ }
+ /**
+ * @param FieldMetadata
+ */
+ public function setMetadata(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\FieldMetadata $metadata)
+ {
+ $this->metadata = $metadata;
+ }
+ /**
+ * @return FieldMetadata
+ */
+ public function getMetadata()
+ {
+ return $this->metadata;
+ }
+ /**
+ * @param string
+ */
+ public function setValue($value)
+ {
+ $this->value = $value;
+ }
+ /**
+ * @return string
+ */
+ public function getValue()
+ {
+ return $this->value;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\RelationshipInterest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_RelationshipInterest');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/RelationshipStatus.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/RelationshipStatus.php
new file mode 100644
index 000000000..b74fbd50f
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/RelationshipStatus.php
@@ -0,0 +1,76 @@
+formattedValue = $formattedValue;
+ }
+ /**
+ * @return string
+ */
+ public function getFormattedValue()
+ {
+ return $this->formattedValue;
+ }
+ /**
+ * @param FieldMetadata
+ */
+ public function setMetadata(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\FieldMetadata $metadata)
+ {
+ $this->metadata = $metadata;
+ }
+ /**
+ * @return FieldMetadata
+ */
+ public function getMetadata()
+ {
+ return $this->metadata;
+ }
+ /**
+ * @param string
+ */
+ public function setValue($value)
+ {
+ $this->value = $value;
+ }
+ /**
+ * @return string
+ */
+ public function getValue()
+ {
+ return $this->value;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\RelationshipStatus::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_RelationshipStatus');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Residence.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Residence.php
new file mode 100644
index 000000000..7740bc2f0
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Residence.php
@@ -0,0 +1,76 @@
+current = $current;
+ }
+ /**
+ * @return bool
+ */
+ public function getCurrent()
+ {
+ return $this->current;
+ }
+ /**
+ * @param FieldMetadata
+ */
+ public function setMetadata(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\FieldMetadata $metadata)
+ {
+ $this->metadata = $metadata;
+ }
+ /**
+ * @return FieldMetadata
+ */
+ public function getMetadata()
+ {
+ return $this->metadata;
+ }
+ /**
+ * @param string
+ */
+ public function setValue($value)
+ {
+ $this->value = $value;
+ }
+ /**
+ * @return string
+ */
+ public function getValue()
+ {
+ return $this->value;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Residence::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_Residence');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Resource/ContactGroups.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Resource/ContactGroups.php
new file mode 100644
index 000000000..dba91f6b3
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Resource/ContactGroups.php
@@ -0,0 +1,168 @@
+
+ * $peopleService = new Google\Service\PeopleService(...);
+ * $contactGroups = $peopleService->contactGroups;
+ *
+ */
+class ContactGroups extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Get a list of contact groups owned by the authenticated user by specifying a
+ * list of contact group resource names. (contactGroups.batchGet)
+ *
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string groupFields Optional. A field mask to restrict which fields
+ * on the group are returned. Defaults to `metadata`, `groupType`,
+ * `memberCount`, and `name` if not set or set to empty. Valid fields are: *
+ * clientData * groupType * memberCount * metadata * name
+ * @opt_param int maxMembers Optional. Specifies the maximum number of members
+ * to return for each group. Defaults to 0 if not set, which will return zero
+ * members.
+ * @opt_param string resourceNames Required. The resource names of the contact
+ * groups to get. There is a maximum of 200 resource names.
+ * @return BatchGetContactGroupsResponse
+ */
+ public function batchGet($optParams = [])
+ {
+ $params = [];
+ $params = \array_merge($params, $optParams);
+ return $this->call('batchGet', [$params], \Google\Site_Kit_Dependencies\Google\Service\PeopleService\BatchGetContactGroupsResponse::class);
+ }
+ /**
+ * Create a new contact group owned by the authenticated user. Created contact
+ * group names must be unique to the users contact groups. Attempting to create
+ * a group with a duplicate name will return a HTTP 409 error. Mutate requests
+ * for the same user should be sent sequentially to avoid increased latency and
+ * failures. (contactGroups.create)
+ *
+ * @param CreateContactGroupRequest $postBody
+ * @param array $optParams Optional parameters.
+ * @return ContactGroup
+ */
+ public function create(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\CreateContactGroupRequest $postBody, $optParams = [])
+ {
+ $params = ['postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\PeopleService\ContactGroup::class);
+ }
+ /**
+ * Delete an existing contact group owned by the authenticated user by
+ * specifying a contact group resource name. Mutate requests for the same user
+ * should be sent sequentially to avoid increased latency and failures.
+ * (contactGroups.delete)
+ *
+ * @param string $resourceName Required. The resource name of the contact group
+ * to delete.
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param bool deleteContacts Optional. Set to true to also delete the
+ * contacts in the specified group.
+ * @return PeopleEmpty
+ */
+ public function delete($resourceName, $optParams = [])
+ {
+ $params = ['resourceName' => $resourceName];
+ $params = \array_merge($params, $optParams);
+ return $this->call('delete', [$params], \Google\Site_Kit_Dependencies\Google\Service\PeopleService\PeopleEmpty::class);
+ }
+ /**
+ * Get a specific contact group owned by the authenticated user by specifying a
+ * contact group resource name. (contactGroups.get)
+ *
+ * @param string $resourceName Required. The resource name of the contact group
+ * to get.
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string groupFields Optional. A field mask to restrict which fields
+ * on the group are returned. Defaults to `metadata`, `groupType`,
+ * `memberCount`, and `name` if not set or set to empty. Valid fields are: *
+ * clientData * groupType * memberCount * metadata * name
+ * @opt_param int maxMembers Optional. Specifies the maximum number of members
+ * to return. Defaults to 0 if not set, which will return zero members.
+ * @return ContactGroup
+ */
+ public function get($resourceName, $optParams = [])
+ {
+ $params = ['resourceName' => $resourceName];
+ $params = \array_merge($params, $optParams);
+ return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\PeopleService\ContactGroup::class);
+ }
+ /**
+ * List all contact groups owned by the authenticated user. Members of the
+ * contact groups are not populated. (contactGroups.listContactGroups)
+ *
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string groupFields Optional. A field mask to restrict which fields
+ * on the group are returned. Defaults to `metadata`, `groupType`,
+ * `memberCount`, and `name` if not set or set to empty. Valid fields are: *
+ * clientData * groupType * memberCount * metadata * name
+ * @opt_param int pageSize Optional. The maximum number of resources to return.
+ * Valid values are between 1 and 1000, inclusive. Defaults to 30 if not set or
+ * set to 0.
+ * @opt_param string pageToken Optional. The next_page_token value returned from
+ * a previous call to
+ * [ListContactGroups](/people/api/rest/v1/contactgroups/list). Requests the
+ * next page of resources.
+ * @opt_param string syncToken Optional. A sync token, returned by a previous
+ * call to `contactgroups.list`. Only resources changed since the sync token was
+ * created will be returned.
+ * @return ListContactGroupsResponse
+ */
+ public function listContactGroups($optParams = [])
+ {
+ $params = [];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\PeopleService\ListContactGroupsResponse::class);
+ }
+ /**
+ * Update the name of an existing contact group owned by the authenticated user.
+ * Updated contact group names must be unique to the users contact groups.
+ * Attempting to create a group with a duplicate name will return a HTTP 409
+ * error. Mutate requests for the same user should be sent sequentially to avoid
+ * increased latency and failures. (contactGroups.update)
+ *
+ * @param string $resourceName The resource name for the contact group, assigned
+ * by the server. An ASCII string, in the form of
+ * `contactGroups/{contact_group_id}`.
+ * @param UpdateContactGroupRequest $postBody
+ * @param array $optParams Optional parameters.
+ * @return ContactGroup
+ */
+ public function update($resourceName, \Google\Site_Kit_Dependencies\Google\Service\PeopleService\UpdateContactGroupRequest $postBody, $optParams = [])
+ {
+ $params = ['resourceName' => $resourceName, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('update', [$params], \Google\Site_Kit_Dependencies\Google\Service\PeopleService\ContactGroup::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Resource\ContactGroups::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_Resource_ContactGroups');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Resource/ContactGroupsMembers.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Resource/ContactGroupsMembers.php
new file mode 100644
index 000000000..cbc15f63d
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Resource/ContactGroupsMembers.php
@@ -0,0 +1,52 @@
+
+ * $peopleService = new Google\Service\PeopleService(...);
+ * $members = $peopleService->members;
+ *
+ */
+class ContactGroupsMembers extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Modify the members of a contact group owned by the authenticated user. The
+ * only system contact groups that can have members added are
+ * `contactGroups/myContacts` and `contactGroups/starred`. Other system contact
+ * groups are deprecated and can only have contacts removed. (members.modify)
+ *
+ * @param string $resourceName Required. The resource name of the contact group
+ * to modify.
+ * @param ModifyContactGroupMembersRequest $postBody
+ * @param array $optParams Optional parameters.
+ * @return ModifyContactGroupMembersResponse
+ */
+ public function modify($resourceName, \Google\Site_Kit_Dependencies\Google\Service\PeopleService\ModifyContactGroupMembersRequest $postBody, $optParams = [])
+ {
+ $params = ['resourceName' => $resourceName, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('modify', [$params], \Google\Site_Kit_Dependencies\Google\Service\PeopleService\ModifyContactGroupMembersResponse::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Resource\ContactGroupsMembers::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_Resource_ContactGroupsMembers');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Resource/OtherContacts.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Resource/OtherContacts.php
new file mode 100644
index 000000000..a4ba506dd
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Resource/OtherContacts.php
@@ -0,0 +1,147 @@
+
+ * $peopleService = new Google\Service\PeopleService(...);
+ * $otherContacts = $peopleService->otherContacts;
+ *
+ */
+class OtherContacts extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Copies an "Other contact" to a new contact in the user's "myContacts" group
+ * Mutate requests for the same user should be sent sequentially to avoid
+ * increased latency and failures.
+ * (otherContacts.copyOtherContactToMyContactsGroup)
+ *
+ * @param string $resourceName Required. The resource name of the "Other
+ * contact" to copy.
+ * @param CopyOtherContactToMyContactsGroupRequest $postBody
+ * @param array $optParams Optional parameters.
+ * @return Person
+ */
+ public function copyOtherContactToMyContactsGroup($resourceName, \Google\Site_Kit_Dependencies\Google\Service\PeopleService\CopyOtherContactToMyContactsGroupRequest $postBody, $optParams = [])
+ {
+ $params = ['resourceName' => $resourceName, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('copyOtherContactToMyContactsGroup', [$params], \Google\Site_Kit_Dependencies\Google\Service\PeopleService\Person::class);
+ }
+ /**
+ * List all "Other contacts", that is contacts that are not in a contact group.
+ * "Other contacts" are typically auto created contacts from interactions. Sync
+ * tokens expire 7 days after the full sync. A request with an expired sync
+ * token will get an error with an [google.rpc.ErrorInfo](https://cloud.google.c
+ * om/apis/design/errors#error_info) with reason "EXPIRED_SYNC_TOKEN". In the
+ * case of such an error clients should make a full sync request without a
+ * `sync_token`. The first page of a full sync request has an additional quota.
+ * If the quota is exceeded, a 429 error will be returned. This quota is fixed
+ * and can not be increased. When the `sync_token` is specified, resources
+ * deleted since the last sync will be returned as a person with
+ * `PersonMetadata.deleted` set to true. When the `page_token` or `sync_token`
+ * is specified, all other request parameters must match the first call. Writes
+ * may have a propagation delay of several minutes for sync requests.
+ * Incremental syncs are not intended for read-after-write use cases. See
+ * example usage at [List the user's other contacts that have
+ * changed](/people/v1/other-
+ * contacts#list_the_users_other_contacts_that_have_changed).
+ * (otherContacts.listOtherContacts)
+ *
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param int pageSize Optional. The number of "Other contacts" to include
+ * in the response. Valid values are between 1 and 1000, inclusive. Defaults to
+ * 100 if not set or set to 0.
+ * @opt_param string pageToken Optional. A page token, received from a previous
+ * response `next_page_token`. Provide this to retrieve the subsequent page.
+ * When paginating, all other parameters provided to `otherContacts.list` must
+ * match the first call that provided the page token.
+ * @opt_param string readMask Required. A field mask to restrict which fields on
+ * each person are returned. Multiple fields can be specified by separating them
+ * with commas. What values are valid depend on what ReadSourceType is used. If
+ * READ_SOURCE_TYPE_CONTACT is used, valid values are: * emailAddresses *
+ * metadata * names * phoneNumbers * photos If READ_SOURCE_TYPE_PROFILE is used,
+ * valid values are: * addresses * ageRanges * biographies * birthdays *
+ * calendarUrls * clientData * coverPhotos * emailAddresses * events *
+ * externalIds * genders * imClients * interests * locales * locations *
+ * memberships * metadata * miscKeywords * names * nicknames * occupations *
+ * organizations * phoneNumbers * photos * relations * sipAddresses * skills *
+ * urls * userDefined
+ * @opt_param bool requestSyncToken Optional. Whether the response should return
+ * `next_sync_token` on the last page of results. It can be used to get
+ * incremental changes since the last request by setting it on the request
+ * `sync_token`. More details about sync behavior at `otherContacts.list`.
+ * @opt_param string sources Optional. A mask of what source types to return.
+ * Defaults to READ_SOURCE_TYPE_CONTACT if not set. Possible values for this
+ * field are: * READ_SOURCE_TYPE_CONTACT *
+ * READ_SOURCE_TYPE_CONTACT,READ_SOURCE_TYPE_PROFILE Specifying
+ * READ_SOURCE_TYPE_PROFILE without specifying READ_SOURCE_TYPE_CONTACT is not
+ * permitted.
+ * @opt_param string syncToken Optional. A sync token, received from a previous
+ * response `next_sync_token` Provide this to retrieve only the resources
+ * changed since the last request. When syncing, all other parameters provided
+ * to `otherContacts.list` must match the first call that provided the sync
+ * token. More details about sync behavior at `otherContacts.list`.
+ * @return ListOtherContactsResponse
+ */
+ public function listOtherContacts($optParams = [])
+ {
+ $params = [];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\PeopleService\ListOtherContactsResponse::class);
+ }
+ /**
+ * Provides a list of contacts in the authenticated user's other contacts that
+ * matches the search query. The query matches on a contact's `names`,
+ * `emailAddresses`, and `phoneNumbers` fields that are from the OTHER_CONTACT
+ * source. **IMPORTANT**: Before searching, clients should send a warmup request
+ * with an empty query to update the cache. See
+ * https://developers.google.com/people/v1/other-
+ * contacts#search_the_users_other_contacts (otherContacts.search)
+ *
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param int pageSize Optional. The number of results to return. Defaults
+ * to 10 if field is not set, or set to 0. Values greater than 30 will be capped
+ * to 30.
+ * @opt_param string query Required. The plain-text query for the request. The
+ * query is used to match prefix phrases of the fields on a person. For example,
+ * a person with name "foo name" matches queries such as "f", "fo", "foo", "foo
+ * n", "nam", etc., but not "oo n".
+ * @opt_param string readMask Required. A field mask to restrict which fields on
+ * each person are returned. Multiple fields can be specified by separating them
+ * with commas. Valid values are: * emailAddresses * metadata * names *
+ * phoneNumbers
+ * @return SearchResponse
+ */
+ public function search($optParams = [])
+ {
+ $params = [];
+ $params = \array_merge($params, $optParams);
+ return $this->call('search', [$params], \Google\Site_Kit_Dependencies\Google\Service\PeopleService\SearchResponse::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Resource\OtherContacts::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_Resource_OtherContacts');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Resource/People.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Resource/People.php
new file mode 100644
index 000000000..521818a85
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Resource/People.php
@@ -0,0 +1,421 @@
+
+ * $peopleService = new Google\Service\PeopleService(...);
+ * $people = $peopleService->people;
+ *
+ */
+class People extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Create a batch of new contacts and return the PersonResponses for the newly
+ * Mutate requests for the same user should be sent sequentially to avoid
+ * increased latency and failures. (people.batchCreateContacts)
+ *
+ * @param BatchCreateContactsRequest $postBody
+ * @param array $optParams Optional parameters.
+ * @return BatchCreateContactsResponse
+ */
+ public function batchCreateContacts(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\BatchCreateContactsRequest $postBody, $optParams = [])
+ {
+ $params = ['postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('batchCreateContacts', [$params], \Google\Site_Kit_Dependencies\Google\Service\PeopleService\BatchCreateContactsResponse::class);
+ }
+ /**
+ * Delete a batch of contacts. Any non-contact data will not be deleted. Mutate
+ * requests for the same user should be sent sequentially to avoid increased
+ * latency and failures. (people.batchDeleteContacts)
+ *
+ * @param BatchDeleteContactsRequest $postBody
+ * @param array $optParams Optional parameters.
+ * @return PeopleEmpty
+ */
+ public function batchDeleteContacts(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\BatchDeleteContactsRequest $postBody, $optParams = [])
+ {
+ $params = ['postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('batchDeleteContacts', [$params], \Google\Site_Kit_Dependencies\Google\Service\PeopleService\PeopleEmpty::class);
+ }
+ /**
+ * Update a batch of contacts and return a map of resource names to
+ * PersonResponses for the updated contacts. Mutate requests for the same user
+ * should be sent sequentially to avoid increased latency and failures.
+ * (people.batchUpdateContacts)
+ *
+ * @param BatchUpdateContactsRequest $postBody
+ * @param array $optParams Optional parameters.
+ * @return BatchUpdateContactsResponse
+ */
+ public function batchUpdateContacts(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\BatchUpdateContactsRequest $postBody, $optParams = [])
+ {
+ $params = ['postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('batchUpdateContacts', [$params], \Google\Site_Kit_Dependencies\Google\Service\PeopleService\BatchUpdateContactsResponse::class);
+ }
+ /**
+ * Create a new contact and return the person resource for that contact. The
+ * request returns a 400 error if more than one field is specified on a field
+ * that is a singleton for contact sources: * biographies * birthdays * genders
+ * * names Mutate requests for the same user should be sent sequentially to
+ * avoid increased latency and failures. (people.createContact)
+ *
+ * @param Person $postBody
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string personFields Required. A field mask to restrict which
+ * fields on each person are returned. Multiple fields can be specified by
+ * separating them with commas. Defaults to all fields if not set. Valid values
+ * are: * addresses * ageRanges * biographies * birthdays * calendarUrls *
+ * clientData * coverPhotos * emailAddresses * events * externalIds * genders *
+ * imClients * interests * locales * locations * memberships * metadata *
+ * miscKeywords * names * nicknames * occupations * organizations * phoneNumbers
+ * * photos * relations * sipAddresses * skills * urls * userDefined
+ * @opt_param string sources Optional. A mask of what source types to return.
+ * Defaults to READ_SOURCE_TYPE_CONTACT and READ_SOURCE_TYPE_PROFILE if not set.
+ * @return Person
+ */
+ public function createContact(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Person $postBody, $optParams = [])
+ {
+ $params = ['postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('createContact', [$params], \Google\Site_Kit_Dependencies\Google\Service\PeopleService\Person::class);
+ }
+ /**
+ * Delete a contact person. Any non-contact data will not be deleted. Mutate
+ * requests for the same user should be sent sequentially to avoid increased
+ * latency and failures. (people.deleteContact)
+ *
+ * @param string $resourceName Required. The resource name of the contact to
+ * delete.
+ * @param array $optParams Optional parameters.
+ * @return PeopleEmpty
+ */
+ public function deleteContact($resourceName, $optParams = [])
+ {
+ $params = ['resourceName' => $resourceName];
+ $params = \array_merge($params, $optParams);
+ return $this->call('deleteContact', [$params], \Google\Site_Kit_Dependencies\Google\Service\PeopleService\PeopleEmpty::class);
+ }
+ /**
+ * Delete a contact's photo. Mutate requests for the same user should be done
+ * sequentially to avoid // lock contention. (people.deleteContactPhoto)
+ *
+ * @param string $resourceName Required. The resource name of the contact whose
+ * photo will be deleted.
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string personFields Optional. A field mask to restrict which
+ * fields on the person are returned. Multiple fields can be specified by
+ * separating them with commas. Defaults to empty if not set, which will skip
+ * the post mutate get. Valid values are: * addresses * ageRanges * biographies
+ * * birthdays * calendarUrls * clientData * coverPhotos * emailAddresses *
+ * events * externalIds * genders * imClients * interests * locales * locations
+ * * memberships * metadata * miscKeywords * names * nicknames * occupations *
+ * organizations * phoneNumbers * photos * relations * sipAddresses * skills *
+ * urls * userDefined
+ * @opt_param string sources Optional. A mask of what source types to return.
+ * Defaults to READ_SOURCE_TYPE_CONTACT and READ_SOURCE_TYPE_PROFILE if not set.
+ * @return DeleteContactPhotoResponse
+ */
+ public function deleteContactPhoto($resourceName, $optParams = [])
+ {
+ $params = ['resourceName' => $resourceName];
+ $params = \array_merge($params, $optParams);
+ return $this->call('deleteContactPhoto', [$params], \Google\Site_Kit_Dependencies\Google\Service\PeopleService\DeleteContactPhotoResponse::class);
+ }
+ /**
+ * Provides information about a person by specifying a resource name. Use
+ * `people/me` to indicate the authenticated user. The request returns a 400
+ * error if 'personFields' is not specified. (people.get)
+ *
+ * @param string $resourceName Required. The resource name of the person to
+ * provide information about. - To get information about the authenticated user,
+ * specify `people/me`. - To get information about a google account, specify
+ * `people/{account_id}`. - To get information about a contact, specify the
+ * resource name that identifies the contact as returned by
+ * `people.connections.list`.
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string personFields Required. A field mask to restrict which
+ * fields on the person are returned. Multiple fields can be specified by
+ * separating them with commas. Valid values are: * addresses * ageRanges *
+ * biographies * birthdays * calendarUrls * clientData * coverPhotos *
+ * emailAddresses * events * externalIds * genders * imClients * interests *
+ * locales * locations * memberships * metadata * miscKeywords * names *
+ * nicknames * occupations * organizations * phoneNumbers * photos * relations *
+ * sipAddresses * skills * urls * userDefined
+ * @opt_param string requestMask.includeField Required. Comma-separated list of
+ * person fields to be included in the response. Each path should start with
+ * `person.`: for example, `person.names` or `person.photos`.
+ * @opt_param string sources Optional. A mask of what source types to return.
+ * Defaults to READ_SOURCE_TYPE_PROFILE and READ_SOURCE_TYPE_CONTACT if not set.
+ * @return Person
+ */
+ public function get($resourceName, $optParams = [])
+ {
+ $params = ['resourceName' => $resourceName];
+ $params = \array_merge($params, $optParams);
+ return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\PeopleService\Person::class);
+ }
+ /**
+ * Provides information about a list of specific people by specifying a list of
+ * requested resource names. Use `people/me` to indicate the authenticated user.
+ * The request returns a 400 error if 'personFields' is not specified.
+ * (people.getBatchGet)
+ *
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string personFields Required. A field mask to restrict which
+ * fields on each person are returned. Multiple fields can be specified by
+ * separating them with commas. Valid values are: * addresses * ageRanges *
+ * biographies * birthdays * calendarUrls * clientData * coverPhotos *
+ * emailAddresses * events * externalIds * genders * imClients * interests *
+ * locales * locations * memberships * metadata * miscKeywords * names *
+ * nicknames * occupations * organizations * phoneNumbers * photos * relations *
+ * sipAddresses * skills * urls * userDefined
+ * @opt_param string requestMask.includeField Required. Comma-separated list of
+ * person fields to be included in the response. Each path should start with
+ * `person.`: for example, `person.names` or `person.photos`.
+ * @opt_param string resourceNames Required. The resource names of the people to
+ * provide information about. It's repeatable. The URL query parameter should be
+ * resourceNames==&... - To get information about the authenticated user,
+ * specify `people/me`. - To get information about a google account, specify
+ * `people/{account_id}`. - To get information about a contact, specify the
+ * resource name that identifies the contact as returned by
+ * `people.connections.list`. There is a maximum of 200 resource names.
+ * @opt_param string sources Optional. A mask of what source types to return.
+ * Defaults to READ_SOURCE_TYPE_CONTACT and READ_SOURCE_TYPE_PROFILE if not set.
+ * @return GetPeopleResponse
+ */
+ public function getBatchGet($optParams = [])
+ {
+ $params = [];
+ $params = \array_merge($params, $optParams);
+ return $this->call('getBatchGet', [$params], \Google\Site_Kit_Dependencies\Google\Service\PeopleService\GetPeopleResponse::class);
+ }
+ /**
+ * Provides a list of domain profiles and domain contacts in the authenticated
+ * user's domain directory. When the `sync_token` is specified, resources
+ * deleted since the last sync will be returned as a person with
+ * `PersonMetadata.deleted` set to true. When the `page_token` or `sync_token`
+ * is specified, all other request parameters must match the first call. Writes
+ * may have a propagation delay of several minutes for sync requests.
+ * Incremental syncs are not intended for read-after-write use cases. See
+ * example usage at [List the directory people that have
+ * changed](/people/v1/directory#list_the_directory_people_that_have_changed).
+ * (people.listDirectoryPeople)
+ *
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string mergeSources Optional. Additional data to merge into the
+ * directory sources if they are connected through verified join keys such as
+ * email addresses or phone numbers.
+ * @opt_param int pageSize Optional. The number of people to include in the
+ * response. Valid values are between 1 and 1000, inclusive. Defaults to 100 if
+ * not set or set to 0.
+ * @opt_param string pageToken Optional. A page token, received from a previous
+ * response `next_page_token`. Provide this to retrieve the subsequent page.
+ * When paginating, all other parameters provided to
+ * `people.listDirectoryPeople` must match the first call that provided the page
+ * token.
+ * @opt_param string readMask Required. A field mask to restrict which fields on
+ * each person are returned. Multiple fields can be specified by separating them
+ * with commas. Valid values are: * addresses * ageRanges * biographies *
+ * birthdays * calendarUrls * clientData * coverPhotos * emailAddresses * events
+ * * externalIds * genders * imClients * interests * locales * locations *
+ * memberships * metadata * miscKeywords * names * nicknames * occupations *
+ * organizations * phoneNumbers * photos * relations * sipAddresses * skills *
+ * urls * userDefined
+ * @opt_param bool requestSyncToken Optional. Whether the response should return
+ * `next_sync_token`. It can be used to get incremental changes since the last
+ * request by setting it on the request `sync_token`. More details about sync
+ * behavior at `people.listDirectoryPeople`.
+ * @opt_param string sources Required. Directory sources to return.
+ * @opt_param string syncToken Optional. A sync token, received from a previous
+ * response `next_sync_token` Provide this to retrieve only the resources
+ * changed since the last request. When syncing, all other parameters provided
+ * to `people.listDirectoryPeople` must match the first call that provided the
+ * sync token. More details about sync behavior at `people.listDirectoryPeople`.
+ * @return ListDirectoryPeopleResponse
+ */
+ public function listDirectoryPeople($optParams = [])
+ {
+ $params = [];
+ $params = \array_merge($params, $optParams);
+ return $this->call('listDirectoryPeople', [$params], \Google\Site_Kit_Dependencies\Google\Service\PeopleService\ListDirectoryPeopleResponse::class);
+ }
+ /**
+ * Provides a list of contacts in the authenticated user's grouped contacts that
+ * matches the search query. The query matches on a contact's `names`,
+ * `nickNames`, `emailAddresses`, `phoneNumbers`, and `organizations` fields
+ * that are from the CONTACT source. **IMPORTANT**: Before searching, clients
+ * should send a warmup request with an empty query to update the cache. See
+ * https://developers.google.com/people/v1/contacts#search_the_users_contacts
+ * (people.searchContacts)
+ *
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param int pageSize Optional. The number of results to return. Defaults
+ * to 10 if field is not set, or set to 0. Values greater than 30 will be capped
+ * to 30.
+ * @opt_param string query Required. The plain-text query for the request. The
+ * query is used to match prefix phrases of the fields on a person. For example,
+ * a person with name "foo name" matches queries such as "f", "fo", "foo", "foo
+ * n", "nam", etc., but not "oo n".
+ * @opt_param string readMask Required. A field mask to restrict which fields on
+ * each person are returned. Multiple fields can be specified by separating them
+ * with commas. Valid values are: * addresses * ageRanges * biographies *
+ * birthdays * calendarUrls * clientData * coverPhotos * emailAddresses * events
+ * * externalIds * genders * imClients * interests * locales * locations *
+ * memberships * metadata * miscKeywords * names * nicknames * occupations *
+ * organizations * phoneNumbers * photos * relations * sipAddresses * skills *
+ * urls * userDefined
+ * @opt_param string sources Optional. A mask of what source types to return.
+ * Defaults to READ_SOURCE_TYPE_CONTACT if not set.
+ * @return SearchResponse
+ */
+ public function searchContacts($optParams = [])
+ {
+ $params = [];
+ $params = \array_merge($params, $optParams);
+ return $this->call('searchContacts', [$params], \Google\Site_Kit_Dependencies\Google\Service\PeopleService\SearchResponse::class);
+ }
+ /**
+ * Provides a list of domain profiles and domain contacts in the authenticated
+ * user's domain directory that match the search query.
+ * (people.searchDirectoryPeople)
+ *
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string mergeSources Optional. Additional data to merge into the
+ * directory sources if they are connected through verified join keys such as
+ * email addresses or phone numbers.
+ * @opt_param int pageSize Optional. The number of people to include in the
+ * response. Valid values are between 1 and 500, inclusive. Defaults to 100 if
+ * not set or set to 0.
+ * @opt_param string pageToken Optional. A page token, received from a previous
+ * response `next_page_token`. Provide this to retrieve the subsequent page.
+ * When paginating, all other parameters provided to `SearchDirectoryPeople`
+ * must match the first call that provided the page token.
+ * @opt_param string query Required. Prefix query that matches fields in the
+ * person. Does NOT use the read_mask for determining what fields to match.
+ * @opt_param string readMask Required. A field mask to restrict which fields on
+ * each person are returned. Multiple fields can be specified by separating them
+ * with commas. Valid values are: * addresses * ageRanges * biographies *
+ * birthdays * calendarUrls * clientData * coverPhotos * emailAddresses * events
+ * * externalIds * genders * imClients * interests * locales * locations *
+ * memberships * metadata * miscKeywords * names * nicknames * occupations *
+ * organizations * phoneNumbers * photos * relations * sipAddresses * skills *
+ * urls * userDefined
+ * @opt_param string sources Required. Directory sources to return.
+ * @return SearchDirectoryPeopleResponse
+ */
+ public function searchDirectoryPeople($optParams = [])
+ {
+ $params = [];
+ $params = \array_merge($params, $optParams);
+ return $this->call('searchDirectoryPeople', [$params], \Google\Site_Kit_Dependencies\Google\Service\PeopleService\SearchDirectoryPeopleResponse::class);
+ }
+ /**
+ * Update contact data for an existing contact person. Any non-contact data will
+ * not be modified. Any non-contact data in the person to update will be
+ * ignored. All fields specified in the `update_mask` will be replaced. The
+ * server returns a 400 error if `person.metadata.sources` is not specified for
+ * the contact to be updated or if there is no contact source. The server
+ * returns a 400 error with reason `"failedPrecondition"` if
+ * `person.metadata.sources.etag` is different than the contact's etag, which
+ * indicates the contact has changed since its data was read. Clients should get
+ * the latest person and merge their updates into the latest person. The server
+ * returns a 400 error if `memberships` are being updated and there are no
+ * contact group memberships specified on the person. The server returns a 400
+ * error if more than one field is specified on a field that is a singleton for
+ * contact sources: * biographies * birthdays * genders * names Mutate requests
+ * for the same user should be sent sequentially to avoid increased latency and
+ * failures. (people.updateContact)
+ *
+ * @param string $resourceName The resource name for the person, assigned by the
+ * server. An ASCII string with a max length of 27 characters, in the form of
+ * `people/{person_id}`.
+ * @param Person $postBody
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string personFields Optional. A field mask to restrict which
+ * fields on each person are returned. Multiple fields can be specified by
+ * separating them with commas. Defaults to all fields if not set. Valid values
+ * are: * addresses * ageRanges * biographies * birthdays * calendarUrls *
+ * clientData * coverPhotos * emailAddresses * events * externalIds * genders *
+ * imClients * interests * locales * locations * memberships * metadata *
+ * miscKeywords * names * nicknames * occupations * organizations * phoneNumbers
+ * * photos * relations * sipAddresses * skills * urls * userDefined
+ * @opt_param string sources Optional. A mask of what source types to return.
+ * Defaults to READ_SOURCE_TYPE_CONTACT and READ_SOURCE_TYPE_PROFILE if not set.
+ * @opt_param string updatePersonFields Required. A field mask to restrict which
+ * fields on the person are updated. Multiple fields can be specified by
+ * separating them with commas. All updated fields will be replaced. Valid
+ * values are: * addresses * biographies * birthdays * calendarUrls * clientData
+ * * emailAddresses * events * externalIds * genders * imClients * interests *
+ * locales * locations * memberships * miscKeywords * names * nicknames *
+ * occupations * organizations * phoneNumbers * relations * sipAddresses * urls
+ * * userDefined
+ * @return Person
+ */
+ public function updateContact($resourceName, \Google\Site_Kit_Dependencies\Google\Service\PeopleService\Person $postBody, $optParams = [])
+ {
+ $params = ['resourceName' => $resourceName, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('updateContact', [$params], \Google\Site_Kit_Dependencies\Google\Service\PeopleService\Person::class);
+ }
+ /**
+ * Update a contact's photo. Mutate requests for the same user should be sent
+ * sequentially to avoid increased latency and failures.
+ * (people.updateContactPhoto)
+ *
+ * @param string $resourceName Required. Person resource name
+ * @param UpdateContactPhotoRequest $postBody
+ * @param array $optParams Optional parameters.
+ * @return UpdateContactPhotoResponse
+ */
+ public function updateContactPhoto($resourceName, \Google\Site_Kit_Dependencies\Google\Service\PeopleService\UpdateContactPhotoRequest $postBody, $optParams = [])
+ {
+ $params = ['resourceName' => $resourceName, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('updateContactPhoto', [$params], \Google\Site_Kit_Dependencies\Google\Service\PeopleService\UpdateContactPhotoResponse::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Resource\People::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_Resource_People');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Resource/PeopleConnections.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Resource/PeopleConnections.php
new file mode 100644
index 000000000..6cbc14167
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Resource/PeopleConnections.php
@@ -0,0 +1,94 @@
+
+ * $peopleService = new Google\Service\PeopleService(...);
+ * $connections = $peopleService->connections;
+ *
+ */
+class PeopleConnections extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Provides a list of the authenticated user's contacts. Sync tokens expire 7
+ * days after the full sync. A request with an expired sync token will get an
+ * error with an [google.rpc.ErrorInfo](https://cloud.google.com/apis/design/err
+ * ors#error_info) with reason "EXPIRED_SYNC_TOKEN". In the case of such an
+ * error clients should make a full sync request without a `sync_token`. The
+ * first page of a full sync request has an additional quota. If the quota is
+ * exceeded, a 429 error will be returned. This quota is fixed and can not be
+ * increased. When the `sync_token` is specified, resources deleted since the
+ * last sync will be returned as a person with `PersonMetadata.deleted` set to
+ * true. When the `page_token` or `sync_token` is specified, all other request
+ * parameters must match the first call. Writes may have a propagation delay of
+ * several minutes for sync requests. Incremental syncs are not intended for
+ * read-after-write use cases. See example usage at [List the user's contacts
+ * that have
+ * changed](/people/v1/contacts#list_the_users_contacts_that_have_changed).
+ * (connections.listPeopleConnections)
+ *
+ * @param string $resourceName Required. The resource name to return connections
+ * for. Only `people/me` is valid.
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param int pageSize Optional. The number of connections to include in the
+ * response. Valid values are between 1 and 1000, inclusive. Defaults to 100 if
+ * not set or set to 0.
+ * @opt_param string pageToken Optional. A page token, received from a previous
+ * response `next_page_token`. Provide this to retrieve the subsequent page.
+ * When paginating, all other parameters provided to `people.connections.list`
+ * must match the first call that provided the page token.
+ * @opt_param string personFields Required. A field mask to restrict which
+ * fields on each person are returned. Multiple fields can be specified by
+ * separating them with commas. Valid values are: * addresses * ageRanges *
+ * biographies * birthdays * calendarUrls * clientData * coverPhotos *
+ * emailAddresses * events * externalIds * genders * imClients * interests *
+ * locales * locations * memberships * metadata * miscKeywords * names *
+ * nicknames * occupations * organizations * phoneNumbers * photos * relations *
+ * sipAddresses * skills * urls * userDefined
+ * @opt_param string requestMask.includeField Required. Comma-separated list of
+ * person fields to be included in the response. Each path should start with
+ * `person.`: for example, `person.names` or `person.photos`.
+ * @opt_param bool requestSyncToken Optional. Whether the response should return
+ * `next_sync_token` on the last page of results. It can be used to get
+ * incremental changes since the last request by setting it on the request
+ * `sync_token`. More details about sync behavior at `people.connections.list`.
+ * @opt_param string sortOrder Optional. The order in which the connections
+ * should be sorted. Defaults to `LAST_MODIFIED_ASCENDING`.
+ * @opt_param string sources Optional. A mask of what source types to return.
+ * Defaults to READ_SOURCE_TYPE_CONTACT and READ_SOURCE_TYPE_PROFILE if not set.
+ * @opt_param string syncToken Optional. A sync token, received from a previous
+ * response `next_sync_token` Provide this to retrieve only the resources
+ * changed since the last request. When syncing, all other parameters provided
+ * to `people.connections.list` must match the first call that provided the sync
+ * token. More details about sync behavior at `people.connections.list`.
+ * @return ListConnectionsResponse
+ */
+ public function listPeopleConnections($resourceName, $optParams = [])
+ {
+ $params = ['resourceName' => $resourceName];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\PeopleService\ListConnectionsResponse::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Resource\PeopleConnections::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_Resource_PeopleConnections');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/SearchDirectoryPeopleResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/SearchDirectoryPeopleResponse.php
new file mode 100644
index 000000000..eee0ff8ce
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/SearchDirectoryPeopleResponse.php
@@ -0,0 +1,77 @@
+nextPageToken = $nextPageToken;
+ }
+ /**
+ * @return string
+ */
+ public function getNextPageToken()
+ {
+ return $this->nextPageToken;
+ }
+ /**
+ * @param Person[]
+ */
+ public function setPeople($people)
+ {
+ $this->people = $people;
+ }
+ /**
+ * @return Person[]
+ */
+ public function getPeople()
+ {
+ return $this->people;
+ }
+ /**
+ * @param int
+ */
+ public function setTotalSize($totalSize)
+ {
+ $this->totalSize = $totalSize;
+ }
+ /**
+ * @return int
+ */
+ public function getTotalSize()
+ {
+ return $this->totalSize;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\SearchDirectoryPeopleResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_SearchDirectoryPeopleResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/SearchResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/SearchResponse.php
new file mode 100644
index 000000000..166ac5cc5
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/SearchResponse.php
@@ -0,0 +1,41 @@
+results = $results;
+ }
+ /**
+ * @return SearchResult[]
+ */
+ public function getResults()
+ {
+ return $this->results;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\SearchResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_SearchResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/SearchResult.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/SearchResult.php
new file mode 100644
index 000000000..b2bc91cbf
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/SearchResult.php
@@ -0,0 +1,40 @@
+person = $person;
+ }
+ /**
+ * @return Person
+ */
+ public function getPerson()
+ {
+ return $this->person;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\SearchResult::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_SearchResult');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/SipAddress.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/SipAddress.php
new file mode 100644
index 000000000..4166bf0d2
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/SipAddress.php
@@ -0,0 +1,94 @@
+formattedType = $formattedType;
+ }
+ /**
+ * @return string
+ */
+ public function getFormattedType()
+ {
+ return $this->formattedType;
+ }
+ /**
+ * @param FieldMetadata
+ */
+ public function setMetadata(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\FieldMetadata $metadata)
+ {
+ $this->metadata = $metadata;
+ }
+ /**
+ * @return FieldMetadata
+ */
+ public function getMetadata()
+ {
+ return $this->metadata;
+ }
+ /**
+ * @param string
+ */
+ public function setType($type)
+ {
+ $this->type = $type;
+ }
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+ /**
+ * @param string
+ */
+ public function setValue($value)
+ {
+ $this->value = $value;
+ }
+ /**
+ * @return string
+ */
+ public function getValue()
+ {
+ return $this->value;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\SipAddress::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_SipAddress');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Skill.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Skill.php
new file mode 100644
index 000000000..c2763853f
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Skill.php
@@ -0,0 +1,58 @@
+metadata = $metadata;
+ }
+ /**
+ * @return FieldMetadata
+ */
+ public function getMetadata()
+ {
+ return $this->metadata;
+ }
+ /**
+ * @param string
+ */
+ public function setValue($value)
+ {
+ $this->value = $value;
+ }
+ /**
+ * @return string
+ */
+ public function getValue()
+ {
+ return $this->value;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Skill::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_Skill');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Source.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Source.php
new file mode 100644
index 000000000..6b36dd44d
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Source.php
@@ -0,0 +1,112 @@
+etag = $etag;
+ }
+ /**
+ * @return string
+ */
+ public function getEtag()
+ {
+ return $this->etag;
+ }
+ /**
+ * @param string
+ */
+ public function setId($id)
+ {
+ $this->id = $id;
+ }
+ /**
+ * @return string
+ */
+ public function getId()
+ {
+ return $this->id;
+ }
+ /**
+ * @param ProfileMetadata
+ */
+ public function setProfileMetadata(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\ProfileMetadata $profileMetadata)
+ {
+ $this->profileMetadata = $profileMetadata;
+ }
+ /**
+ * @return ProfileMetadata
+ */
+ public function getProfileMetadata()
+ {
+ return $this->profileMetadata;
+ }
+ /**
+ * @param string
+ */
+ public function setType($type)
+ {
+ $this->type = $type;
+ }
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+ /**
+ * @param string
+ */
+ public function setUpdateTime($updateTime)
+ {
+ $this->updateTime = $updateTime;
+ }
+ /**
+ * @return string
+ */
+ public function getUpdateTime()
+ {
+ return $this->updateTime;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Source::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_Source');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Status.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Status.php
new file mode 100644
index 000000000..8e35dbf2d
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Status.php
@@ -0,0 +1,79 @@
+code = $code;
+ }
+ /**
+ * @return int
+ */
+ public function getCode()
+ {
+ return $this->code;
+ }
+ /**
+ * @param array[]
+ */
+ public function setDetails($details)
+ {
+ $this->details = $details;
+ }
+ /**
+ * @return array[]
+ */
+ public function getDetails()
+ {
+ return $this->details;
+ }
+ /**
+ * @param string
+ */
+ public function setMessage($message)
+ {
+ $this->message = $message;
+ }
+ /**
+ * @return string
+ */
+ public function getMessage()
+ {
+ return $this->message;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Status::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_Status');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Tagline.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Tagline.php
new file mode 100644
index 000000000..92994d4bd
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Tagline.php
@@ -0,0 +1,58 @@
+metadata = $metadata;
+ }
+ /**
+ * @return FieldMetadata
+ */
+ public function getMetadata()
+ {
+ return $this->metadata;
+ }
+ /**
+ * @param string
+ */
+ public function setValue($value)
+ {
+ $this->value = $value;
+ }
+ /**
+ * @return string
+ */
+ public function getValue()
+ {
+ return $this->value;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Tagline::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_Tagline');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/UpdateContactGroupRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/UpdateContactGroupRequest.php
new file mode 100644
index 000000000..47d060206
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/UpdateContactGroupRequest.php
@@ -0,0 +1,76 @@
+contactGroup = $contactGroup;
+ }
+ /**
+ * @return ContactGroup
+ */
+ public function getContactGroup()
+ {
+ return $this->contactGroup;
+ }
+ /**
+ * @param string
+ */
+ public function setReadGroupFields($readGroupFields)
+ {
+ $this->readGroupFields = $readGroupFields;
+ }
+ /**
+ * @return string
+ */
+ public function getReadGroupFields()
+ {
+ return $this->readGroupFields;
+ }
+ /**
+ * @param string
+ */
+ public function setUpdateGroupFields($updateGroupFields)
+ {
+ $this->updateGroupFields = $updateGroupFields;
+ }
+ /**
+ * @return string
+ */
+ public function getUpdateGroupFields()
+ {
+ return $this->updateGroupFields;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\UpdateContactGroupRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_UpdateContactGroupRequest');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/UpdateContactPhotoRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/UpdateContactPhotoRequest.php
new file mode 100644
index 000000000..ed9301326
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/UpdateContactPhotoRequest.php
@@ -0,0 +1,79 @@
+personFields = $personFields;
+ }
+ /**
+ * @return string
+ */
+ public function getPersonFields()
+ {
+ return $this->personFields;
+ }
+ /**
+ * @param string
+ */
+ public function setPhotoBytes($photoBytes)
+ {
+ $this->photoBytes = $photoBytes;
+ }
+ /**
+ * @return string
+ */
+ public function getPhotoBytes()
+ {
+ return $this->photoBytes;
+ }
+ /**
+ * @param string[]
+ */
+ public function setSources($sources)
+ {
+ $this->sources = $sources;
+ }
+ /**
+ * @return string[]
+ */
+ public function getSources()
+ {
+ return $this->sources;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\UpdateContactPhotoRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_UpdateContactPhotoRequest');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/UpdateContactPhotoResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/UpdateContactPhotoResponse.php
new file mode 100644
index 000000000..47660b746
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/UpdateContactPhotoResponse.php
@@ -0,0 +1,40 @@
+person = $person;
+ }
+ /**
+ * @return Person
+ */
+ public function getPerson()
+ {
+ return $this->person;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\UpdateContactPhotoResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_UpdateContactPhotoResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Url.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Url.php
new file mode 100644
index 000000000..95adbc354
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/Url.php
@@ -0,0 +1,94 @@
+formattedType = $formattedType;
+ }
+ /**
+ * @return string
+ */
+ public function getFormattedType()
+ {
+ return $this->formattedType;
+ }
+ /**
+ * @param FieldMetadata
+ */
+ public function setMetadata(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\FieldMetadata $metadata)
+ {
+ $this->metadata = $metadata;
+ }
+ /**
+ * @return FieldMetadata
+ */
+ public function getMetadata()
+ {
+ return $this->metadata;
+ }
+ /**
+ * @param string
+ */
+ public function setType($type)
+ {
+ $this->type = $type;
+ }
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+ /**
+ * @param string
+ */
+ public function setValue($value)
+ {
+ $this->value = $value;
+ }
+ /**
+ * @return string
+ */
+ public function getValue()
+ {
+ return $this->value;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\Url::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_Url');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/UserDefined.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/UserDefined.php
new file mode 100644
index 000000000..e0381aa3b
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/PeopleService/UserDefined.php
@@ -0,0 +1,76 @@
+key = $key;
+ }
+ /**
+ * @return string
+ */
+ public function getKey()
+ {
+ return $this->key;
+ }
+ /**
+ * @param FieldMetadata
+ */
+ public function setMetadata(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\FieldMetadata $metadata)
+ {
+ $this->metadata = $metadata;
+ }
+ /**
+ * @return FieldMetadata
+ */
+ public function getMetadata()
+ {
+ return $this->metadata;
+ }
+ /**
+ * @param string
+ */
+ public function setValue($value)
+ {
+ $this->value = $value;
+ }
+ /**
+ * @return string
+ */
+ public function getValue()
+ {
+ return $this->value;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\PeopleService\UserDefined::class, 'Google\\Site_Kit_Dependencies\\Google_Service_PeopleService_UserDefined');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole.php
new file mode 100644
index 000000000..adeb8a1ae
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole.php
@@ -0,0 +1,69 @@
+
+ * The Search Console API provides access to both Search Console data (verified
+ * users only) and to public information on an URL basis (anyone)
+ *
+ *
+ * For more information about this service, see the API
+ * Documentation
+ *
+ *
+ * @author Google, Inc.
+ */
+class SearchConsole extends \Google\Site_Kit_Dependencies\Google\Service
+{
+ /** View and manage Search Console data for your verified sites. */
+ const WEBMASTERS = "https://www.googleapis.com/auth/webmasters";
+ /** View Search Console data for your verified sites. */
+ const WEBMASTERS_READONLY = "https://www.googleapis.com/auth/webmasters.readonly";
+ public $searchanalytics;
+ public $sitemaps;
+ public $sites;
+ public $urlInspection_index;
+ public $urlTestingTools_mobileFriendlyTest;
+ /**
+ * Constructs the internal representation of the SearchConsole service.
+ *
+ * @param Client|array $clientOrConfig The client used to deliver requests, or a
+ * config array to pass to a new Client instance.
+ * @param string $rootUrl The root URL used for requests to the service.
+ */
+ public function __construct($clientOrConfig = [], $rootUrl = null)
+ {
+ parent::__construct($clientOrConfig);
+ $this->rootUrl = $rootUrl ?: 'https://searchconsole.googleapis.com/';
+ $this->servicePath = '';
+ $this->batchPath = 'batch';
+ $this->version = 'v1';
+ $this->serviceName = 'searchconsole';
+ $this->searchanalytics = new \Google\Site_Kit_Dependencies\Google\Service\SearchConsole\Resource\Searchanalytics($this, $this->serviceName, 'searchanalytics', ['methods' => ['query' => ['path' => 'webmasters/v3/sites/{siteUrl}/searchAnalytics/query', 'httpMethod' => 'POST', 'parameters' => ['siteUrl' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]);
+ $this->sitemaps = new \Google\Site_Kit_Dependencies\Google\Service\SearchConsole\Resource\Sitemaps($this, $this->serviceName, 'sitemaps', ['methods' => ['delete' => ['path' => 'webmasters/v3/sites/{siteUrl}/sitemaps/{feedpath}', 'httpMethod' => 'DELETE', 'parameters' => ['siteUrl' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'feedpath' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'webmasters/v3/sites/{siteUrl}/sitemaps/{feedpath}', 'httpMethod' => 'GET', 'parameters' => ['siteUrl' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'feedpath' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'webmasters/v3/sites/{siteUrl}/sitemaps', 'httpMethod' => 'GET', 'parameters' => ['siteUrl' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'sitemapIndex' => ['location' => 'query', 'type' => 'string']]], 'submit' => ['path' => 'webmasters/v3/sites/{siteUrl}/sitemaps/{feedpath}', 'httpMethod' => 'PUT', 'parameters' => ['siteUrl' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'feedpath' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]);
+ $this->sites = new \Google\Site_Kit_Dependencies\Google\Service\SearchConsole\Resource\Sites($this, $this->serviceName, 'sites', ['methods' => ['add' => ['path' => 'webmasters/v3/sites/{siteUrl}', 'httpMethod' => 'PUT', 'parameters' => ['siteUrl' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'delete' => ['path' => 'webmasters/v3/sites/{siteUrl}', 'httpMethod' => 'DELETE', 'parameters' => ['siteUrl' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'webmasters/v3/sites/{siteUrl}', 'httpMethod' => 'GET', 'parameters' => ['siteUrl' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'webmasters/v3/sites', 'httpMethod' => 'GET', 'parameters' => []]]]);
+ $this->urlInspection_index = new \Google\Site_Kit_Dependencies\Google\Service\SearchConsole\Resource\UrlInspectionIndex($this, $this->serviceName, 'index', ['methods' => ['inspect' => ['path' => 'v1/urlInspection/index:inspect', 'httpMethod' => 'POST', 'parameters' => []]]]);
+ $this->urlTestingTools_mobileFriendlyTest = new \Google\Site_Kit_Dependencies\Google\Service\SearchConsole\Resource\UrlTestingToolsMobileFriendlyTest($this, $this->serviceName, 'mobileFriendlyTest', ['methods' => ['run' => ['path' => 'v1/urlTestingTools/mobileFriendlyTest:run', 'httpMethod' => 'POST', 'parameters' => []]]]);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/AmpInspectionResult.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/AmpInspectionResult.php
new file mode 100644
index 000000000..3447e8d9d
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/AmpInspectionResult.php
@@ -0,0 +1,167 @@
+ampIndexStatusVerdict = $ampIndexStatusVerdict;
+ }
+ /**
+ * @return string
+ */
+ public function getAmpIndexStatusVerdict()
+ {
+ return $this->ampIndexStatusVerdict;
+ }
+ /**
+ * @param string
+ */
+ public function setAmpUrl($ampUrl)
+ {
+ $this->ampUrl = $ampUrl;
+ }
+ /**
+ * @return string
+ */
+ public function getAmpUrl()
+ {
+ return $this->ampUrl;
+ }
+ /**
+ * @param string
+ */
+ public function setIndexingState($indexingState)
+ {
+ $this->indexingState = $indexingState;
+ }
+ /**
+ * @return string
+ */
+ public function getIndexingState()
+ {
+ return $this->indexingState;
+ }
+ /**
+ * @param AmpIssue[]
+ */
+ public function setIssues($issues)
+ {
+ $this->issues = $issues;
+ }
+ /**
+ * @return AmpIssue[]
+ */
+ public function getIssues()
+ {
+ return $this->issues;
+ }
+ /**
+ * @param string
+ */
+ public function setLastCrawlTime($lastCrawlTime)
+ {
+ $this->lastCrawlTime = $lastCrawlTime;
+ }
+ /**
+ * @return string
+ */
+ public function getLastCrawlTime()
+ {
+ return $this->lastCrawlTime;
+ }
+ /**
+ * @param string
+ */
+ public function setPageFetchState($pageFetchState)
+ {
+ $this->pageFetchState = $pageFetchState;
+ }
+ /**
+ * @return string
+ */
+ public function getPageFetchState()
+ {
+ return $this->pageFetchState;
+ }
+ /**
+ * @param string
+ */
+ public function setRobotsTxtState($robotsTxtState)
+ {
+ $this->robotsTxtState = $robotsTxtState;
+ }
+ /**
+ * @return string
+ */
+ public function getRobotsTxtState()
+ {
+ return $this->robotsTxtState;
+ }
+ /**
+ * @param string
+ */
+ public function setVerdict($verdict)
+ {
+ $this->verdict = $verdict;
+ }
+ /**
+ * @return string
+ */
+ public function getVerdict()
+ {
+ return $this->verdict;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\AmpInspectionResult::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_AmpInspectionResult');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/AmpIssue.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/AmpIssue.php
new file mode 100644
index 000000000..5de05509a
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/AmpIssue.php
@@ -0,0 +1,60 @@
+issueMessage = $issueMessage;
+ }
+ /**
+ * @return string
+ */
+ public function getIssueMessage()
+ {
+ return $this->issueMessage;
+ }
+ /**
+ * @param string
+ */
+ public function setSeverity($severity)
+ {
+ $this->severity = $severity;
+ }
+ /**
+ * @return string
+ */
+ public function getSeverity()
+ {
+ return $this->severity;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\AmpIssue::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_AmpIssue');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/ApiDataRow.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/ApiDataRow.php
new file mode 100644
index 000000000..f7fcf026d
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/ApiDataRow.php
@@ -0,0 +1,79 @@
+clicks = $clicks;
+ }
+ public function getClicks()
+ {
+ return $this->clicks;
+ }
+ public function setCtr($ctr)
+ {
+ $this->ctr = $ctr;
+ }
+ public function getCtr()
+ {
+ return $this->ctr;
+ }
+ public function setImpressions($impressions)
+ {
+ $this->impressions = $impressions;
+ }
+ public function getImpressions()
+ {
+ return $this->impressions;
+ }
+ /**
+ * @param string[]
+ */
+ public function setKeys($keys)
+ {
+ $this->keys = $keys;
+ }
+ /**
+ * @return string[]
+ */
+ public function getKeys()
+ {
+ return $this->keys;
+ }
+ public function setPosition($position)
+ {
+ $this->position = $position;
+ }
+ public function getPosition()
+ {
+ return $this->position;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\ApiDataRow::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_ApiDataRow');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/ApiDimensionFilter.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/ApiDimensionFilter.php
new file mode 100644
index 000000000..91c47092a
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/ApiDimensionFilter.php
@@ -0,0 +1,78 @@
+dimension = $dimension;
+ }
+ /**
+ * @return string
+ */
+ public function getDimension()
+ {
+ return $this->dimension;
+ }
+ /**
+ * @param string
+ */
+ public function setExpression($expression)
+ {
+ $this->expression = $expression;
+ }
+ /**
+ * @return string
+ */
+ public function getExpression()
+ {
+ return $this->expression;
+ }
+ /**
+ * @param string
+ */
+ public function setOperator($operator)
+ {
+ $this->operator = $operator;
+ }
+ /**
+ * @return string
+ */
+ public function getOperator()
+ {
+ return $this->operator;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\ApiDimensionFilter::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_ApiDimensionFilter');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/ApiDimensionFilterGroup.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/ApiDimensionFilterGroup.php
new file mode 100644
index 000000000..2422e1cc1
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/ApiDimensionFilterGroup.php
@@ -0,0 +1,59 @@
+filters = $filters;
+ }
+ /**
+ * @return ApiDimensionFilter[]
+ */
+ public function getFilters()
+ {
+ return $this->filters;
+ }
+ /**
+ * @param string
+ */
+ public function setGroupType($groupType)
+ {
+ $this->groupType = $groupType;
+ }
+ /**
+ * @return string
+ */
+ public function getGroupType()
+ {
+ return $this->groupType;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\ApiDimensionFilterGroup::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_ApiDimensionFilterGroup');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/BlockedResource.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/BlockedResource.php
new file mode 100644
index 000000000..bf4bae68e
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/BlockedResource.php
@@ -0,0 +1,42 @@
+url = $url;
+ }
+ /**
+ * @return string
+ */
+ public function getUrl()
+ {
+ return $this->url;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\BlockedResource::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_BlockedResource');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/DetectedItems.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/DetectedItems.php
new file mode 100644
index 000000000..f364ee74f
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/DetectedItems.php
@@ -0,0 +1,59 @@
+items = $items;
+ }
+ /**
+ * @return Item[]
+ */
+ public function getItems()
+ {
+ return $this->items;
+ }
+ /**
+ * @param string
+ */
+ public function setRichResultType($richResultType)
+ {
+ $this->richResultType = $richResultType;
+ }
+ /**
+ * @return string
+ */
+ public function getRichResultType()
+ {
+ return $this->richResultType;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\DetectedItems::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_DetectedItems');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/Image.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/Image.php
new file mode 100644
index 000000000..f77bcf5ce
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/Image.php
@@ -0,0 +1,60 @@
+data = $data;
+ }
+ /**
+ * @return string
+ */
+ public function getData()
+ {
+ return $this->data;
+ }
+ /**
+ * @param string
+ */
+ public function setMimeType($mimeType)
+ {
+ $this->mimeType = $mimeType;
+ }
+ /**
+ * @return string
+ */
+ public function getMimeType()
+ {
+ return $this->mimeType;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\Image::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_Image');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/IndexStatusInspectionResult.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/IndexStatusInspectionResult.php
new file mode 100644
index 000000000..e8c848ae9
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/IndexStatusInspectionResult.php
@@ -0,0 +1,223 @@
+coverageState = $coverageState;
+ }
+ /**
+ * @return string
+ */
+ public function getCoverageState()
+ {
+ return $this->coverageState;
+ }
+ /**
+ * @param string
+ */
+ public function setCrawledAs($crawledAs)
+ {
+ $this->crawledAs = $crawledAs;
+ }
+ /**
+ * @return string
+ */
+ public function getCrawledAs()
+ {
+ return $this->crawledAs;
+ }
+ /**
+ * @param string
+ */
+ public function setGoogleCanonical($googleCanonical)
+ {
+ $this->googleCanonical = $googleCanonical;
+ }
+ /**
+ * @return string
+ */
+ public function getGoogleCanonical()
+ {
+ return $this->googleCanonical;
+ }
+ /**
+ * @param string
+ */
+ public function setIndexingState($indexingState)
+ {
+ $this->indexingState = $indexingState;
+ }
+ /**
+ * @return string
+ */
+ public function getIndexingState()
+ {
+ return $this->indexingState;
+ }
+ /**
+ * @param string
+ */
+ public function setLastCrawlTime($lastCrawlTime)
+ {
+ $this->lastCrawlTime = $lastCrawlTime;
+ }
+ /**
+ * @return string
+ */
+ public function getLastCrawlTime()
+ {
+ return $this->lastCrawlTime;
+ }
+ /**
+ * @param string
+ */
+ public function setPageFetchState($pageFetchState)
+ {
+ $this->pageFetchState = $pageFetchState;
+ }
+ /**
+ * @return string
+ */
+ public function getPageFetchState()
+ {
+ return $this->pageFetchState;
+ }
+ /**
+ * @param string[]
+ */
+ public function setReferringUrls($referringUrls)
+ {
+ $this->referringUrls = $referringUrls;
+ }
+ /**
+ * @return string[]
+ */
+ public function getReferringUrls()
+ {
+ return $this->referringUrls;
+ }
+ /**
+ * @param string
+ */
+ public function setRobotsTxtState($robotsTxtState)
+ {
+ $this->robotsTxtState = $robotsTxtState;
+ }
+ /**
+ * @return string
+ */
+ public function getRobotsTxtState()
+ {
+ return $this->robotsTxtState;
+ }
+ /**
+ * @param string[]
+ */
+ public function setSitemap($sitemap)
+ {
+ $this->sitemap = $sitemap;
+ }
+ /**
+ * @return string[]
+ */
+ public function getSitemap()
+ {
+ return $this->sitemap;
+ }
+ /**
+ * @param string
+ */
+ public function setUserCanonical($userCanonical)
+ {
+ $this->userCanonical = $userCanonical;
+ }
+ /**
+ * @return string
+ */
+ public function getUserCanonical()
+ {
+ return $this->userCanonical;
+ }
+ /**
+ * @param string
+ */
+ public function setVerdict($verdict)
+ {
+ $this->verdict = $verdict;
+ }
+ /**
+ * @return string
+ */
+ public function getVerdict()
+ {
+ return $this->verdict;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\IndexStatusInspectionResult::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_IndexStatusInspectionResult');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/InspectUrlIndexRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/InspectUrlIndexRequest.php
new file mode 100644
index 000000000..744ac6f92
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/InspectUrlIndexRequest.php
@@ -0,0 +1,78 @@
+inspectionUrl = $inspectionUrl;
+ }
+ /**
+ * @return string
+ */
+ public function getInspectionUrl()
+ {
+ return $this->inspectionUrl;
+ }
+ /**
+ * @param string
+ */
+ public function setLanguageCode($languageCode)
+ {
+ $this->languageCode = $languageCode;
+ }
+ /**
+ * @return string
+ */
+ public function getLanguageCode()
+ {
+ return $this->languageCode;
+ }
+ /**
+ * @param string
+ */
+ public function setSiteUrl($siteUrl)
+ {
+ $this->siteUrl = $siteUrl;
+ }
+ /**
+ * @return string
+ */
+ public function getSiteUrl()
+ {
+ return $this->siteUrl;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\InspectUrlIndexRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_InspectUrlIndexRequest');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/InspectUrlIndexResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/InspectUrlIndexResponse.php
new file mode 100644
index 000000000..9bbb050a4
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/InspectUrlIndexResponse.php
@@ -0,0 +1,40 @@
+inspectionResult = $inspectionResult;
+ }
+ /**
+ * @return UrlInspectionResult
+ */
+ public function getInspectionResult()
+ {
+ return $this->inspectionResult;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\InspectUrlIndexResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_InspectUrlIndexResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/Item.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/Item.php
new file mode 100644
index 000000000..3e9ec6c1b
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/Item.php
@@ -0,0 +1,59 @@
+issues = $issues;
+ }
+ /**
+ * @return RichResultsIssue[]
+ */
+ public function getIssues()
+ {
+ return $this->issues;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\Item::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_Item');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/MobileFriendlyIssue.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/MobileFriendlyIssue.php
new file mode 100644
index 000000000..e4e24f827
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/MobileFriendlyIssue.php
@@ -0,0 +1,42 @@
+rule = $rule;
+ }
+ /**
+ * @return string
+ */
+ public function getRule()
+ {
+ return $this->rule;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\MobileFriendlyIssue::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_MobileFriendlyIssue');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/MobileUsabilityInspectionResult.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/MobileUsabilityInspectionResult.php
new file mode 100644
index 000000000..a2cd34454
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/MobileUsabilityInspectionResult.php
@@ -0,0 +1,59 @@
+issues = $issues;
+ }
+ /**
+ * @return MobileUsabilityIssue[]
+ */
+ public function getIssues()
+ {
+ return $this->issues;
+ }
+ /**
+ * @param string
+ */
+ public function setVerdict($verdict)
+ {
+ $this->verdict = $verdict;
+ }
+ /**
+ * @return string
+ */
+ public function getVerdict()
+ {
+ return $this->verdict;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\MobileUsabilityInspectionResult::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_MobileUsabilityInspectionResult');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/MobileUsabilityIssue.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/MobileUsabilityIssue.php
new file mode 100644
index 000000000..6b81e464b
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/MobileUsabilityIssue.php
@@ -0,0 +1,78 @@
+issueType = $issueType;
+ }
+ /**
+ * @return string
+ */
+ public function getIssueType()
+ {
+ return $this->issueType;
+ }
+ /**
+ * @param string
+ */
+ public function setMessage($message)
+ {
+ $this->message = $message;
+ }
+ /**
+ * @return string
+ */
+ public function getMessage()
+ {
+ return $this->message;
+ }
+ /**
+ * @param string
+ */
+ public function setSeverity($severity)
+ {
+ $this->severity = $severity;
+ }
+ /**
+ * @return string
+ */
+ public function getSeverity()
+ {
+ return $this->severity;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\MobileUsabilityIssue::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_MobileUsabilityIssue');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/Resource/Searchanalytics.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/Resource/Searchanalytics.php
new file mode 100644
index 000000000..a5a807696
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/Resource/Searchanalytics.php
@@ -0,0 +1,54 @@
+
+ * $searchconsoleService = new Google\Service\SearchConsole(...);
+ * $searchanalytics = $searchconsoleService->searchanalytics;
+ *
+ */
+class Searchanalytics extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Query your data with filters and parameters that you define. Returns zero or
+ * more rows grouped by the row keys that you define. You must define a date
+ * range of one or more days. When date is one of the group by values, any days
+ * without data are omitted from the result list. If you need to know which days
+ * have data, issue a broad date range query grouped by date for any metric, and
+ * see which day rows are returned. (searchanalytics.query)
+ *
+ * @param string $siteUrl The site's URL, including protocol. For example:
+ * `http://www.example.com/`.
+ * @param SearchAnalyticsQueryRequest $postBody
+ * @param array $optParams Optional parameters.
+ * @return SearchAnalyticsQueryResponse
+ */
+ public function query($siteUrl, \Google\Site_Kit_Dependencies\Google\Service\SearchConsole\SearchAnalyticsQueryRequest $postBody, $optParams = [])
+ {
+ $params = ['siteUrl' => $siteUrl, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('query', [$params], \Google\Site_Kit_Dependencies\Google\Service\SearchConsole\SearchAnalyticsQueryResponse::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\Resource\Searchanalytics::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_Resource_Searchanalytics');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/Resource/Sitemaps.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/Resource/Sitemaps.php
new file mode 100644
index 000000000..cb2be4e74
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/Resource/Sitemaps.php
@@ -0,0 +1,101 @@
+
+ * $searchconsoleService = new Google\Service\SearchConsole(...);
+ * $sitemaps = $searchconsoleService->sitemaps;
+ *
+ */
+class Sitemaps extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Deletes a sitemap from the Sitemaps report. Does not stop Google from
+ * crawling this sitemap or the URLs that were previously crawled in the deleted
+ * sitemap. (sitemaps.delete)
+ *
+ * @param string $siteUrl The site's URL, including protocol. For example:
+ * `http://www.example.com/`.
+ * @param string $feedpath The URL of the actual sitemap. For example:
+ * `http://www.example.com/sitemap.xml`.
+ * @param array $optParams Optional parameters.
+ */
+ public function delete($siteUrl, $feedpath, $optParams = [])
+ {
+ $params = ['siteUrl' => $siteUrl, 'feedpath' => $feedpath];
+ $params = \array_merge($params, $optParams);
+ return $this->call('delete', [$params]);
+ }
+ /**
+ * Retrieves information about a specific sitemap. (sitemaps.get)
+ *
+ * @param string $siteUrl The site's URL, including protocol. For example:
+ * `http://www.example.com/`.
+ * @param string $feedpath The URL of the actual sitemap. For example:
+ * `http://www.example.com/sitemap.xml`.
+ * @param array $optParams Optional parameters.
+ * @return WmxSitemap
+ */
+ public function get($siteUrl, $feedpath, $optParams = [])
+ {
+ $params = ['siteUrl' => $siteUrl, 'feedpath' => $feedpath];
+ $params = \array_merge($params, $optParams);
+ return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\SearchConsole\WmxSitemap::class);
+ }
+ /**
+ * Lists the [sitemaps-entries](/webmaster-tools/v3/sitemaps) submitted for this
+ * site, or included in the sitemap index file (if `sitemapIndex` is specified
+ * in the request). (sitemaps.listSitemaps)
+ *
+ * @param string $siteUrl The site's URL, including protocol. For example:
+ * `http://www.example.com/`.
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string sitemapIndex A URL of a site's sitemap index. For example:
+ * `http://www.example.com/sitemapindex.xml`.
+ * @return SitemapsListResponse
+ */
+ public function listSitemaps($siteUrl, $optParams = [])
+ {
+ $params = ['siteUrl' => $siteUrl];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\SearchConsole\SitemapsListResponse::class);
+ }
+ /**
+ * Submits a sitemap for a site. (sitemaps.submit)
+ *
+ * @param string $siteUrl The site's URL, including protocol. For example:
+ * `http://www.example.com/`.
+ * @param string $feedpath The URL of the actual sitemap. For example:
+ * `http://www.example.com/sitemap.xml`.
+ * @param array $optParams Optional parameters.
+ */
+ public function submit($siteUrl, $feedpath, $optParams = [])
+ {
+ $params = ['siteUrl' => $siteUrl, 'feedpath' => $feedpath];
+ $params = \array_merge($params, $optParams);
+ return $this->call('submit', [$params]);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\Resource\Sitemaps::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_Resource_Sitemaps');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/Resource/Sites.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/Resource/Sites.php
new file mode 100644
index 000000000..657755fc2
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/Resource/Sites.php
@@ -0,0 +1,86 @@
+
+ * $searchconsoleService = new Google\Service\SearchConsole(...);
+ * $sites = $searchconsoleService->sites;
+ *
+ */
+class Sites extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Adds a site to the set of the user's sites in Search Console. (sites.add)
+ *
+ * @param string $siteUrl The URL of the site to add.
+ * @param array $optParams Optional parameters.
+ */
+ public function add($siteUrl, $optParams = [])
+ {
+ $params = ['siteUrl' => $siteUrl];
+ $params = \array_merge($params, $optParams);
+ return $this->call('add', [$params]);
+ }
+ /**
+ * Removes a site from the set of the user's Search Console sites.
+ * (sites.delete)
+ *
+ * @param string $siteUrl The URI of the property as defined in Search Console.
+ * **Examples:** `http://www.example.com/` or `sc-domain:example.com`.
+ * @param array $optParams Optional parameters.
+ */
+ public function delete($siteUrl, $optParams = [])
+ {
+ $params = ['siteUrl' => $siteUrl];
+ $params = \array_merge($params, $optParams);
+ return $this->call('delete', [$params]);
+ }
+ /**
+ * Retrieves information about specific site. (sites.get)
+ *
+ * @param string $siteUrl The URI of the property as defined in Search Console.
+ * **Examples:** `http://www.example.com/` or `sc-domain:example.com`.
+ * @param array $optParams Optional parameters.
+ * @return WmxSite
+ */
+ public function get($siteUrl, $optParams = [])
+ {
+ $params = ['siteUrl' => $siteUrl];
+ $params = \array_merge($params, $optParams);
+ return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\SearchConsole\WmxSite::class);
+ }
+ /**
+ * Lists the user's Search Console sites. (sites.listSites)
+ *
+ * @param array $optParams Optional parameters.
+ * @return SitesListResponse
+ */
+ public function listSites($optParams = [])
+ {
+ $params = [];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\SearchConsole\SitesListResponse::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\Resource\Sites::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_Resource_Sites');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/Resource/UrlInspection.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/Resource/UrlInspection.php
new file mode 100644
index 000000000..2974fbbd3
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/Resource/UrlInspection.php
@@ -0,0 +1,32 @@
+
+ * $searchconsoleService = new Google\Service\SearchConsole(...);
+ * $urlInspection = $searchconsoleService->urlInspection;
+ *
+ */
+class UrlInspection extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\Resource\UrlInspection::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_Resource_UrlInspection');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/Resource/UrlInspectionIndex.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/Resource/UrlInspectionIndex.php
new file mode 100644
index 000000000..883be199d
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/Resource/UrlInspectionIndex.php
@@ -0,0 +1,47 @@
+
+ * $searchconsoleService = new Google\Service\SearchConsole(...);
+ * $index = $searchconsoleService->index;
+ *
+ */
+class UrlInspectionIndex extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Index inspection. (index.inspect)
+ *
+ * @param InspectUrlIndexRequest $postBody
+ * @param array $optParams Optional parameters.
+ * @return InspectUrlIndexResponse
+ */
+ public function inspect(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\InspectUrlIndexRequest $postBody, $optParams = [])
+ {
+ $params = ['postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('inspect', [$params], \Google\Site_Kit_Dependencies\Google\Service\SearchConsole\InspectUrlIndexResponse::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\Resource\UrlInspectionIndex::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_Resource_UrlInspectionIndex');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/Resource/UrlTestingTools.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/Resource/UrlTestingTools.php
new file mode 100644
index 000000000..6984151a4
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/Resource/UrlTestingTools.php
@@ -0,0 +1,32 @@
+
+ * $searchconsoleService = new Google\Service\SearchConsole(...);
+ * $urlTestingTools = $searchconsoleService->urlTestingTools;
+ *
+ */
+class UrlTestingTools extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\Resource\UrlTestingTools::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_Resource_UrlTestingTools');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/Resource/UrlTestingToolsMobileFriendlyTest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/Resource/UrlTestingToolsMobileFriendlyTest.php
new file mode 100644
index 000000000..2e06be643
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/Resource/UrlTestingToolsMobileFriendlyTest.php
@@ -0,0 +1,47 @@
+
+ * $searchconsoleService = new Google\Service\SearchConsole(...);
+ * $mobileFriendlyTest = $searchconsoleService->mobileFriendlyTest;
+ *
+ */
+class UrlTestingToolsMobileFriendlyTest extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Runs Mobile-Friendly Test for a given URL. (mobileFriendlyTest.run)
+ *
+ * @param RunMobileFriendlyTestRequest $postBody
+ * @param array $optParams Optional parameters.
+ * @return RunMobileFriendlyTestResponse
+ */
+ public function run(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\RunMobileFriendlyTestRequest $postBody, $optParams = [])
+ {
+ $params = ['postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('run', [$params], \Google\Site_Kit_Dependencies\Google\Service\SearchConsole\RunMobileFriendlyTestResponse::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\Resource\UrlTestingToolsMobileFriendlyTest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_Resource_UrlTestingToolsMobileFriendlyTest');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/ResourceIssue.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/ResourceIssue.php
new file mode 100644
index 000000000..56137817b
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/ResourceIssue.php
@@ -0,0 +1,40 @@
+blockedResource = $blockedResource;
+ }
+ /**
+ * @return BlockedResource
+ */
+ public function getBlockedResource()
+ {
+ return $this->blockedResource;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\ResourceIssue::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_ResourceIssue');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/RichResultsInspectionResult.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/RichResultsInspectionResult.php
new file mode 100644
index 000000000..ab988883d
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/RichResultsInspectionResult.php
@@ -0,0 +1,59 @@
+detectedItems = $detectedItems;
+ }
+ /**
+ * @return DetectedItems[]
+ */
+ public function getDetectedItems()
+ {
+ return $this->detectedItems;
+ }
+ /**
+ * @param string
+ */
+ public function setVerdict($verdict)
+ {
+ $this->verdict = $verdict;
+ }
+ /**
+ * @return string
+ */
+ public function getVerdict()
+ {
+ return $this->verdict;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\RichResultsInspectionResult::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_RichResultsInspectionResult');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/RichResultsIssue.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/RichResultsIssue.php
new file mode 100644
index 000000000..897e138d7
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/RichResultsIssue.php
@@ -0,0 +1,60 @@
+issueMessage = $issueMessage;
+ }
+ /**
+ * @return string
+ */
+ public function getIssueMessage()
+ {
+ return $this->issueMessage;
+ }
+ /**
+ * @param string
+ */
+ public function setSeverity($severity)
+ {
+ $this->severity = $severity;
+ }
+ /**
+ * @return string
+ */
+ public function getSeverity()
+ {
+ return $this->severity;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\RichResultsIssue::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_RichResultsIssue');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/RunMobileFriendlyTestRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/RunMobileFriendlyTestRequest.php
new file mode 100644
index 000000000..4f1f5b95e
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/RunMobileFriendlyTestRequest.php
@@ -0,0 +1,60 @@
+requestScreenshot = $requestScreenshot;
+ }
+ /**
+ * @return bool
+ */
+ public function getRequestScreenshot()
+ {
+ return $this->requestScreenshot;
+ }
+ /**
+ * @param string
+ */
+ public function setUrl($url)
+ {
+ $this->url = $url;
+ }
+ /**
+ * @return string
+ */
+ public function getUrl()
+ {
+ return $this->url;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\RunMobileFriendlyTestRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_RunMobileFriendlyTestRequest');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/RunMobileFriendlyTestResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/RunMobileFriendlyTestResponse.php
new file mode 100644
index 000000000..c11d7135f
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/RunMobileFriendlyTestResponse.php
@@ -0,0 +1,107 @@
+mobileFriendliness = $mobileFriendliness;
+ }
+ /**
+ * @return string
+ */
+ public function getMobileFriendliness()
+ {
+ return $this->mobileFriendliness;
+ }
+ /**
+ * @param MobileFriendlyIssue[]
+ */
+ public function setMobileFriendlyIssues($mobileFriendlyIssues)
+ {
+ $this->mobileFriendlyIssues = $mobileFriendlyIssues;
+ }
+ /**
+ * @return MobileFriendlyIssue[]
+ */
+ public function getMobileFriendlyIssues()
+ {
+ return $this->mobileFriendlyIssues;
+ }
+ /**
+ * @param ResourceIssue[]
+ */
+ public function setResourceIssues($resourceIssues)
+ {
+ $this->resourceIssues = $resourceIssues;
+ }
+ /**
+ * @return ResourceIssue[]
+ */
+ public function getResourceIssues()
+ {
+ return $this->resourceIssues;
+ }
+ /**
+ * @param Image
+ */
+ public function setScreenshot(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\Image $screenshot)
+ {
+ $this->screenshot = $screenshot;
+ }
+ /**
+ * @return Image
+ */
+ public function getScreenshot()
+ {
+ return $this->screenshot;
+ }
+ /**
+ * @param TestStatus
+ */
+ public function setTestStatus(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\TestStatus $testStatus)
+ {
+ $this->testStatus = $testStatus;
+ }
+ /**
+ * @return TestStatus
+ */
+ public function getTestStatus()
+ {
+ return $this->testStatus;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\RunMobileFriendlyTestResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_RunMobileFriendlyTestResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/SearchAnalyticsQueryRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/SearchAnalyticsQueryRequest.php
new file mode 100644
index 000000000..95e2e0bf8
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/SearchAnalyticsQueryRequest.php
@@ -0,0 +1,203 @@
+aggregationType = $aggregationType;
+ }
+ /**
+ * @return string
+ */
+ public function getAggregationType()
+ {
+ return $this->aggregationType;
+ }
+ /**
+ * @param string
+ */
+ public function setDataState($dataState)
+ {
+ $this->dataState = $dataState;
+ }
+ /**
+ * @return string
+ */
+ public function getDataState()
+ {
+ return $this->dataState;
+ }
+ /**
+ * @param ApiDimensionFilterGroup[]
+ */
+ public function setDimensionFilterGroups($dimensionFilterGroups)
+ {
+ $this->dimensionFilterGroups = $dimensionFilterGroups;
+ }
+ /**
+ * @return ApiDimensionFilterGroup[]
+ */
+ public function getDimensionFilterGroups()
+ {
+ return $this->dimensionFilterGroups;
+ }
+ /**
+ * @param string[]
+ */
+ public function setDimensions($dimensions)
+ {
+ $this->dimensions = $dimensions;
+ }
+ /**
+ * @return string[]
+ */
+ public function getDimensions()
+ {
+ return $this->dimensions;
+ }
+ /**
+ * @param string
+ */
+ public function setEndDate($endDate)
+ {
+ $this->endDate = $endDate;
+ }
+ /**
+ * @return string
+ */
+ public function getEndDate()
+ {
+ return $this->endDate;
+ }
+ /**
+ * @param int
+ */
+ public function setRowLimit($rowLimit)
+ {
+ $this->rowLimit = $rowLimit;
+ }
+ /**
+ * @return int
+ */
+ public function getRowLimit()
+ {
+ return $this->rowLimit;
+ }
+ /**
+ * @param string
+ */
+ public function setSearchType($searchType)
+ {
+ $this->searchType = $searchType;
+ }
+ /**
+ * @return string
+ */
+ public function getSearchType()
+ {
+ return $this->searchType;
+ }
+ /**
+ * @param string
+ */
+ public function setStartDate($startDate)
+ {
+ $this->startDate = $startDate;
+ }
+ /**
+ * @return string
+ */
+ public function getStartDate()
+ {
+ return $this->startDate;
+ }
+ /**
+ * @param int
+ */
+ public function setStartRow($startRow)
+ {
+ $this->startRow = $startRow;
+ }
+ /**
+ * @return int
+ */
+ public function getStartRow()
+ {
+ return $this->startRow;
+ }
+ /**
+ * @param string
+ */
+ public function setType($type)
+ {
+ $this->type = $type;
+ }
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\SearchAnalyticsQueryRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_SearchAnalyticsQueryRequest');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/SearchAnalyticsQueryResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/SearchAnalyticsQueryResponse.php
new file mode 100644
index 000000000..f998cab05
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/SearchAnalyticsQueryResponse.php
@@ -0,0 +1,59 @@
+responseAggregationType = $responseAggregationType;
+ }
+ /**
+ * @return string
+ */
+ public function getResponseAggregationType()
+ {
+ return $this->responseAggregationType;
+ }
+ /**
+ * @param ApiDataRow[]
+ */
+ public function setRows($rows)
+ {
+ $this->rows = $rows;
+ }
+ /**
+ * @return ApiDataRow[]
+ */
+ public function getRows()
+ {
+ return $this->rows;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\SearchAnalyticsQueryResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_SearchAnalyticsQueryResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/SitemapsListResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/SitemapsListResponse.php
new file mode 100644
index 000000000..d2e7904b5
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/SitemapsListResponse.php
@@ -0,0 +1,41 @@
+sitemap = $sitemap;
+ }
+ /**
+ * @return WmxSitemap[]
+ */
+ public function getSitemap()
+ {
+ return $this->sitemap;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\SitemapsListResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_SitemapsListResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/SitesListResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/SitesListResponse.php
new file mode 100644
index 000000000..7c4fe412c
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/SitesListResponse.php
@@ -0,0 +1,41 @@
+siteEntry = $siteEntry;
+ }
+ /**
+ * @return WmxSite[]
+ */
+ public function getSiteEntry()
+ {
+ return $this->siteEntry;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\SitesListResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_SitesListResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/TestStatus.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/TestStatus.php
new file mode 100644
index 000000000..ad3323ba3
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/TestStatus.php
@@ -0,0 +1,60 @@
+details = $details;
+ }
+ /**
+ * @return string
+ */
+ public function getDetails()
+ {
+ return $this->details;
+ }
+ /**
+ * @param string
+ */
+ public function setStatus($status)
+ {
+ $this->status = $status;
+ }
+ /**
+ * @return string
+ */
+ public function getStatus()
+ {
+ return $this->status;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\TestStatus::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_TestStatus');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/UrlInspectionResult.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/UrlInspectionResult.php
new file mode 100644
index 000000000..dfff7259f
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/UrlInspectionResult.php
@@ -0,0 +1,106 @@
+ampResult = $ampResult;
+ }
+ /**
+ * @return AmpInspectionResult
+ */
+ public function getAmpResult()
+ {
+ return $this->ampResult;
+ }
+ /**
+ * @param IndexStatusInspectionResult
+ */
+ public function setIndexStatusResult(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\IndexStatusInspectionResult $indexStatusResult)
+ {
+ $this->indexStatusResult = $indexStatusResult;
+ }
+ /**
+ * @return IndexStatusInspectionResult
+ */
+ public function getIndexStatusResult()
+ {
+ return $this->indexStatusResult;
+ }
+ /**
+ * @param string
+ */
+ public function setInspectionResultLink($inspectionResultLink)
+ {
+ $this->inspectionResultLink = $inspectionResultLink;
+ }
+ /**
+ * @return string
+ */
+ public function getInspectionResultLink()
+ {
+ return $this->inspectionResultLink;
+ }
+ /**
+ * @param MobileUsabilityInspectionResult
+ */
+ public function setMobileUsabilityResult(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\MobileUsabilityInspectionResult $mobileUsabilityResult)
+ {
+ $this->mobileUsabilityResult = $mobileUsabilityResult;
+ }
+ /**
+ * @return MobileUsabilityInspectionResult
+ */
+ public function getMobileUsabilityResult()
+ {
+ return $this->mobileUsabilityResult;
+ }
+ /**
+ * @param RichResultsInspectionResult
+ */
+ public function setRichResultsResult(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\RichResultsInspectionResult $richResultsResult)
+ {
+ $this->richResultsResult = $richResultsResult;
+ }
+ /**
+ * @return RichResultsInspectionResult
+ */
+ public function getRichResultsResult()
+ {
+ return $this->richResultsResult;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\UrlInspectionResult::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_UrlInspectionResult');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/WmxSite.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/WmxSite.php
new file mode 100644
index 000000000..dbc2de150
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/WmxSite.php
@@ -0,0 +1,60 @@
+permissionLevel = $permissionLevel;
+ }
+ /**
+ * @return string
+ */
+ public function getPermissionLevel()
+ {
+ return $this->permissionLevel;
+ }
+ /**
+ * @param string
+ */
+ public function setSiteUrl($siteUrl)
+ {
+ $this->siteUrl = $siteUrl;
+ }
+ /**
+ * @return string
+ */
+ public function getSiteUrl()
+ {
+ return $this->siteUrl;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\WmxSite::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_WmxSite');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/WmxSitemap.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/WmxSitemap.php
new file mode 100644
index 000000000..1778f055f
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/WmxSitemap.php
@@ -0,0 +1,185 @@
+contents = $contents;
+ }
+ /**
+ * @return WmxSitemapContent[]
+ */
+ public function getContents()
+ {
+ return $this->contents;
+ }
+ /**
+ * @param string
+ */
+ public function setErrors($errors)
+ {
+ $this->errors = $errors;
+ }
+ /**
+ * @return string
+ */
+ public function getErrors()
+ {
+ return $this->errors;
+ }
+ /**
+ * @param bool
+ */
+ public function setIsPending($isPending)
+ {
+ $this->isPending = $isPending;
+ }
+ /**
+ * @return bool
+ */
+ public function getIsPending()
+ {
+ return $this->isPending;
+ }
+ /**
+ * @param bool
+ */
+ public function setIsSitemapsIndex($isSitemapsIndex)
+ {
+ $this->isSitemapsIndex = $isSitemapsIndex;
+ }
+ /**
+ * @return bool
+ */
+ public function getIsSitemapsIndex()
+ {
+ return $this->isSitemapsIndex;
+ }
+ /**
+ * @param string
+ */
+ public function setLastDownloaded($lastDownloaded)
+ {
+ $this->lastDownloaded = $lastDownloaded;
+ }
+ /**
+ * @return string
+ */
+ public function getLastDownloaded()
+ {
+ return $this->lastDownloaded;
+ }
+ /**
+ * @param string
+ */
+ public function setLastSubmitted($lastSubmitted)
+ {
+ $this->lastSubmitted = $lastSubmitted;
+ }
+ /**
+ * @return string
+ */
+ public function getLastSubmitted()
+ {
+ return $this->lastSubmitted;
+ }
+ /**
+ * @param string
+ */
+ public function setPath($path)
+ {
+ $this->path = $path;
+ }
+ /**
+ * @return string
+ */
+ public function getPath()
+ {
+ return $this->path;
+ }
+ /**
+ * @param string
+ */
+ public function setType($type)
+ {
+ $this->type = $type;
+ }
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+ /**
+ * @param string
+ */
+ public function setWarnings($warnings)
+ {
+ $this->warnings = $warnings;
+ }
+ /**
+ * @return string
+ */
+ public function getWarnings()
+ {
+ return $this->warnings;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\WmxSitemap::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_WmxSitemap');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/WmxSitemapContent.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/WmxSitemapContent.php
new file mode 100644
index 000000000..15721ec4d
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SearchConsole/WmxSitemapContent.php
@@ -0,0 +1,78 @@
+indexed = $indexed;
+ }
+ /**
+ * @return string
+ */
+ public function getIndexed()
+ {
+ return $this->indexed;
+ }
+ /**
+ * @param string
+ */
+ public function setSubmitted($submitted)
+ {
+ $this->submitted = $submitted;
+ }
+ /**
+ * @return string
+ */
+ public function getSubmitted()
+ {
+ return $this->submitted;
+ }
+ /**
+ * @param string
+ */
+ public function setType($type)
+ {
+ $this->type = $type;
+ }
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SearchConsole\WmxSitemapContent::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SearchConsole_WmxSitemapContent');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SiteVerification.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SiteVerification.php
new file mode 100644
index 000000000..82892f075
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SiteVerification.php
@@ -0,0 +1,60 @@
+
+ * Verifies ownership of websites or domains with Google.
+ *
+ *
+ * For more information about this service, see the API
+ * Documentation
+ *
+ *
+ * @author Google, Inc.
+ */
+class SiteVerification extends \Google\Site_Kit_Dependencies\Google\Service
+{
+ /** Manage the list of sites and domains you control. */
+ const SITEVERIFICATION = "https://www.googleapis.com/auth/siteverification";
+ /** Manage your new site verifications with Google. */
+ const SITEVERIFICATION_VERIFY_ONLY = "https://www.googleapis.com/auth/siteverification.verify_only";
+ public $webResource;
+ /**
+ * Constructs the internal representation of the SiteVerification service.
+ *
+ * @param Client|array $clientOrConfig The client used to deliver requests, or a
+ * config array to pass to a new Client instance.
+ * @param string $rootUrl The root URL used for requests to the service.
+ */
+ public function __construct($clientOrConfig = [], $rootUrl = null)
+ {
+ parent::__construct($clientOrConfig);
+ $this->rootUrl = $rootUrl ?: 'https://www.googleapis.com/';
+ $this->servicePath = 'siteVerification/v1/';
+ $this->batchPath = 'batch/siteVerification/v1';
+ $this->version = 'v1';
+ $this->serviceName = 'siteVerification';
+ $this->webResource = new \Google\Site_Kit_Dependencies\Google\Service\SiteVerification\Resource\WebResource($this, $this->serviceName, 'webResource', ['methods' => ['delete' => ['path' => 'webResource/{id}', 'httpMethod' => 'DELETE', 'parameters' => ['id' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'webResource/{id}', 'httpMethod' => 'GET', 'parameters' => ['id' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'getToken' => ['path' => 'token', 'httpMethod' => 'POST', 'parameters' => []], 'insert' => ['path' => 'webResource', 'httpMethod' => 'POST', 'parameters' => ['verificationMethod' => ['location' => 'query', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'webResource', 'httpMethod' => 'GET', 'parameters' => []], 'patch' => ['path' => 'webResource/{id}', 'httpMethod' => 'PATCH', 'parameters' => ['id' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'update' => ['path' => 'webResource/{id}', 'httpMethod' => 'PUT', 'parameters' => ['id' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SiteVerification::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SiteVerification');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SiteVerification/Resource/WebResource.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SiteVerification/Resource/WebResource.php
new file mode 100644
index 000000000..324817bc3
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SiteVerification/Resource/WebResource.php
@@ -0,0 +1,132 @@
+
+ * $siteVerificationService = new Google\Service\SiteVerification(...);
+ * $webResource = $siteVerificationService->webResource;
+ *
+ */
+class WebResource extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Relinquish ownership of a website or domain. (webResource.delete)
+ *
+ * @param string $id The id of a verified site or domain.
+ * @param array $optParams Optional parameters.
+ */
+ public function delete($id, $optParams = [])
+ {
+ $params = ['id' => $id];
+ $params = \array_merge($params, $optParams);
+ return $this->call('delete', [$params]);
+ }
+ /**
+ * Get the most current data for a website or domain. (webResource.get)
+ *
+ * @param string $id The id of a verified site or domain.
+ * @param array $optParams Optional parameters.
+ * @return SiteVerificationWebResourceResource
+ */
+ public function get($id, $optParams = [])
+ {
+ $params = ['id' => $id];
+ $params = \array_merge($params, $optParams);
+ return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\SiteVerification\SiteVerificationWebResourceResource::class);
+ }
+ /**
+ * Get a verification token for placing on a website or domain.
+ * (webResource.getToken)
+ *
+ * @param SiteVerificationWebResourceGettokenRequest $postBody
+ * @param array $optParams Optional parameters.
+ * @return SiteVerificationWebResourceGettokenResponse
+ */
+ public function getToken(\Google\Site_Kit_Dependencies\Google\Service\SiteVerification\SiteVerificationWebResourceGettokenRequest $postBody, $optParams = [])
+ {
+ $params = ['postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('getToken', [$params], \Google\Site_Kit_Dependencies\Google\Service\SiteVerification\SiteVerificationWebResourceGettokenResponse::class);
+ }
+ /**
+ * Attempt verification of a website or domain. (webResource.insert)
+ *
+ * @param string $verificationMethod The method to use for verifying a site or
+ * domain.
+ * @param SiteVerificationWebResourceResource $postBody
+ * @param array $optParams Optional parameters.
+ * @return SiteVerificationWebResourceResource
+ */
+ public function insert($verificationMethod, \Google\Site_Kit_Dependencies\Google\Service\SiteVerification\SiteVerificationWebResourceResource $postBody, $optParams = [])
+ {
+ $params = ['verificationMethod' => $verificationMethod, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('insert', [$params], \Google\Site_Kit_Dependencies\Google\Service\SiteVerification\SiteVerificationWebResourceResource::class);
+ }
+ /**
+ * Get the list of your verified websites and domains.
+ * (webResource.listWebResource)
+ *
+ * @param array $optParams Optional parameters.
+ * @return SiteVerificationWebResourceListResponse
+ */
+ public function listWebResource($optParams = [])
+ {
+ $params = [];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\SiteVerification\SiteVerificationWebResourceListResponse::class);
+ }
+ /**
+ * Modify the list of owners for your website or domain. This method supports
+ * patch semantics. (webResource.patch)
+ *
+ * @param string $id The id of a verified site or domain.
+ * @param SiteVerificationWebResourceResource $postBody
+ * @param array $optParams Optional parameters.
+ * @return SiteVerificationWebResourceResource
+ */
+ public function patch($id, \Google\Site_Kit_Dependencies\Google\Service\SiteVerification\SiteVerificationWebResourceResource $postBody, $optParams = [])
+ {
+ $params = ['id' => $id, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('patch', [$params], \Google\Site_Kit_Dependencies\Google\Service\SiteVerification\SiteVerificationWebResourceResource::class);
+ }
+ /**
+ * Modify the list of owners for your website or domain. (webResource.update)
+ *
+ * @param string $id The id of a verified site or domain.
+ * @param SiteVerificationWebResourceResource $postBody
+ * @param array $optParams Optional parameters.
+ * @return SiteVerificationWebResourceResource
+ */
+ public function update($id, \Google\Site_Kit_Dependencies\Google\Service\SiteVerification\SiteVerificationWebResourceResource $postBody, $optParams = [])
+ {
+ $params = ['id' => $id, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('update', [$params], \Google\Site_Kit_Dependencies\Google\Service\SiteVerification\SiteVerificationWebResourceResource::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SiteVerification\Resource\WebResource::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SiteVerification_Resource_WebResource');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SiteVerification/SiteVerificationWebResourceGettokenRequest.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SiteVerification/SiteVerificationWebResourceGettokenRequest.php
new file mode 100644
index 000000000..ca640bbcd
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SiteVerification/SiteVerificationWebResourceGettokenRequest.php
@@ -0,0 +1,58 @@
+site = $site;
+ }
+ /**
+ * @return SiteVerificationWebResourceGettokenRequestSite
+ */
+ public function getSite()
+ {
+ return $this->site;
+ }
+ /**
+ * @param string
+ */
+ public function setVerificationMethod($verificationMethod)
+ {
+ $this->verificationMethod = $verificationMethod;
+ }
+ /**
+ * @return string
+ */
+ public function getVerificationMethod()
+ {
+ return $this->verificationMethod;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SiteVerification\SiteVerificationWebResourceGettokenRequest::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SiteVerification_SiteVerificationWebResourceGettokenRequest');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SiteVerification/SiteVerificationWebResourceGettokenRequestSite.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SiteVerification/SiteVerificationWebResourceGettokenRequestSite.php
new file mode 100644
index 000000000..a378dd277
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SiteVerification/SiteVerificationWebResourceGettokenRequestSite.php
@@ -0,0 +1,60 @@
+identifier = $identifier;
+ }
+ /**
+ * @return string
+ */
+ public function getIdentifier()
+ {
+ return $this->identifier;
+ }
+ /**
+ * @param string
+ */
+ public function setType($type)
+ {
+ $this->type = $type;
+ }
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SiteVerification\SiteVerificationWebResourceGettokenRequestSite::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SiteVerification_SiteVerificationWebResourceGettokenRequestSite');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SiteVerification/SiteVerificationWebResourceGettokenResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SiteVerification/SiteVerificationWebResourceGettokenResponse.php
new file mode 100644
index 000000000..fd44426e7
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SiteVerification/SiteVerificationWebResourceGettokenResponse.php
@@ -0,0 +1,60 @@
+method = $method;
+ }
+ /**
+ * @return string
+ */
+ public function getMethod()
+ {
+ return $this->method;
+ }
+ /**
+ * @param string
+ */
+ public function setToken($token)
+ {
+ $this->token = $token;
+ }
+ /**
+ * @return string
+ */
+ public function getToken()
+ {
+ return $this->token;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SiteVerification\SiteVerificationWebResourceGettokenResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SiteVerification_SiteVerificationWebResourceGettokenResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SiteVerification/SiteVerificationWebResourceListResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SiteVerification/SiteVerificationWebResourceListResponse.php
new file mode 100644
index 000000000..a4e5c0200
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SiteVerification/SiteVerificationWebResourceListResponse.php
@@ -0,0 +1,41 @@
+items = $items;
+ }
+ /**
+ * @return SiteVerificationWebResourceResource[]
+ */
+ public function getItems()
+ {
+ return $this->items;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SiteVerification\SiteVerificationWebResourceListResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SiteVerification_SiteVerificationWebResourceListResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SiteVerification/SiteVerificationWebResourceResource.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SiteVerification/SiteVerificationWebResourceResource.php
new file mode 100644
index 000000000..762447880
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SiteVerification/SiteVerificationWebResourceResource.php
@@ -0,0 +1,77 @@
+id = $id;
+ }
+ /**
+ * @return string
+ */
+ public function getId()
+ {
+ return $this->id;
+ }
+ /**
+ * @param string[]
+ */
+ public function setOwners($owners)
+ {
+ $this->owners = $owners;
+ }
+ /**
+ * @return string[]
+ */
+ public function getOwners()
+ {
+ return $this->owners;
+ }
+ /**
+ * @param SiteVerificationWebResourceResourceSite
+ */
+ public function setSite(\Google\Site_Kit_Dependencies\Google\Service\SiteVerification\SiteVerificationWebResourceResourceSite $site)
+ {
+ $this->site = $site;
+ }
+ /**
+ * @return SiteVerificationWebResourceResourceSite
+ */
+ public function getSite()
+ {
+ return $this->site;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SiteVerification\SiteVerificationWebResourceResource::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SiteVerification_SiteVerificationWebResourceResource');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SiteVerification/SiteVerificationWebResourceResourceSite.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SiteVerification/SiteVerificationWebResourceResourceSite.php
new file mode 100644
index 000000000..d01fdcd1b
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/SiteVerification/SiteVerificationWebResourceResourceSite.php
@@ -0,0 +1,60 @@
+identifier = $identifier;
+ }
+ /**
+ * @return string
+ */
+ public function getIdentifier()
+ {
+ return $this->identifier;
+ }
+ /**
+ * @param string
+ */
+ public function setType($type)
+ {
+ $this->type = $type;
+ }
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\SiteVerification\SiteVerificationWebResourceResourceSite::class, 'Google\\Site_Kit_Dependencies\\Google_Service_SiteVerification_SiteVerificationWebResourceResourceSite');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager.php
new file mode 100644
index 000000000..f14ad909a
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager.php
@@ -0,0 +1,102 @@
+
+ * This API allows clients to access and modify container and tag configuration.
+ *
+ *
+ * For more information about this service, see the API
+ * Documentation
+ *
+ *
+ * @author Google, Inc.
+ */
+class TagManager extends \Google\Site_Kit_Dependencies\Google\Service
+{
+ /** Delete your Google Tag Manager containers. */
+ const TAGMANAGER_DELETE_CONTAINERS = "https://www.googleapis.com/auth/tagmanager.delete.containers";
+ /** Manage your Google Tag Manager container and its subcomponents, excluding versioning and publishing. */
+ const TAGMANAGER_EDIT_CONTAINERS = "https://www.googleapis.com/auth/tagmanager.edit.containers";
+ /** Manage your Google Tag Manager container versions. */
+ const TAGMANAGER_EDIT_CONTAINERVERSIONS = "https://www.googleapis.com/auth/tagmanager.edit.containerversions";
+ /** View and manage your Google Tag Manager accounts. */
+ const TAGMANAGER_MANAGE_ACCOUNTS = "https://www.googleapis.com/auth/tagmanager.manage.accounts";
+ /** Manage user permissions of your Google Tag Manager account and container. */
+ const TAGMANAGER_MANAGE_USERS = "https://www.googleapis.com/auth/tagmanager.manage.users";
+ /** Publish your Google Tag Manager container versions. */
+ const TAGMANAGER_PUBLISH = "https://www.googleapis.com/auth/tagmanager.publish";
+ /** View your Google Tag Manager container and its subcomponents. */
+ const TAGMANAGER_READONLY = "https://www.googleapis.com/auth/tagmanager.readonly";
+ public $accounts;
+ public $accounts_containers;
+ public $accounts_containers_destinations;
+ public $accounts_containers_environments;
+ public $accounts_containers_version_headers;
+ public $accounts_containers_versions;
+ public $accounts_containers_workspaces;
+ public $accounts_containers_workspaces_built_in_variables;
+ public $accounts_containers_workspaces_clients;
+ public $accounts_containers_workspaces_folders;
+ public $accounts_containers_workspaces_gtag_config;
+ public $accounts_containers_workspaces_tags;
+ public $accounts_containers_workspaces_templates;
+ public $accounts_containers_workspaces_triggers;
+ public $accounts_containers_workspaces_variables;
+ public $accounts_containers_workspaces_zones;
+ public $accounts_user_permissions;
+ /**
+ * Constructs the internal representation of the TagManager service.
+ *
+ * @param Client|array $clientOrConfig The client used to deliver requests, or a
+ * config array to pass to a new Client instance.
+ * @param string $rootUrl The root URL used for requests to the service.
+ */
+ public function __construct($clientOrConfig = [], $rootUrl = null)
+ {
+ parent::__construct($clientOrConfig);
+ $this->rootUrl = $rootUrl ?: 'https://tagmanager.googleapis.com/';
+ $this->servicePath = '';
+ $this->batchPath = 'batch';
+ $this->version = 'v2';
+ $this->serviceName = 'tagmanager';
+ $this->accounts = new \Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\Accounts($this, $this->serviceName, 'accounts', ['methods' => ['get' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'GET', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'tagmanager/v2/accounts', 'httpMethod' => 'GET', 'parameters' => ['includeGoogleTags' => ['location' => 'query', 'type' => 'boolean'], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'update' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'PUT', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'fingerprint' => ['location' => 'query', 'type' => 'string']]]]]);
+ $this->accounts_containers = new \Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsContainers($this, $this->serviceName, 'containers', ['methods' => ['combine' => ['path' => 'tagmanager/v2/{+path}:combine', 'httpMethod' => 'POST', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'allowUserPermissionFeatureUpdate' => ['location' => 'query', 'type' => 'boolean'], 'containerId' => ['location' => 'query', 'type' => 'string'], 'settingSource' => ['location' => 'query', 'type' => 'string']]], 'create' => ['path' => 'tagmanager/v2/{+parent}/containers', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'delete' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'DELETE', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'GET', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'tagmanager/v2/{+parent}/containers', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'lookup' => ['path' => 'tagmanager/v2/accounts/containers:lookup', 'httpMethod' => 'GET', 'parameters' => ['destinationId' => ['location' => 'query', 'type' => 'string']]], 'move_tag_id' => ['path' => 'tagmanager/v2/{+path}:move_tag_id', 'httpMethod' => 'POST', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'allowUserPermissionFeatureUpdate' => ['location' => 'query', 'type' => 'boolean'], 'copySettings' => ['location' => 'query', 'type' => 'boolean'], 'copyTermsOfService' => ['location' => 'query', 'type' => 'boolean'], 'copyUsers' => ['location' => 'query', 'type' => 'boolean'], 'tagId' => ['location' => 'query', 'type' => 'string'], 'tagName' => ['location' => 'query', 'type' => 'string']]], 'snippet' => ['path' => 'tagmanager/v2/{+path}:snippet', 'httpMethod' => 'GET', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'update' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'PUT', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'fingerprint' => ['location' => 'query', 'type' => 'string']]]]]);
+ $this->accounts_containers_destinations = new \Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsContainersDestinations($this, $this->serviceName, 'destinations', ['methods' => ['get' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'GET', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'link' => ['path' => 'tagmanager/v2/{+parent}/destinations:link', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'allowUserPermissionFeatureUpdate' => ['location' => 'query', 'type' => 'boolean'], 'destinationId' => ['location' => 'query', 'type' => 'string']]], 'list' => ['path' => 'tagmanager/v2/{+parent}/destinations', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]);
+ $this->accounts_containers_environments = new \Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsContainersEnvironments($this, $this->serviceName, 'environments', ['methods' => ['create' => ['path' => 'tagmanager/v2/{+parent}/environments', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'delete' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'DELETE', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'GET', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'tagmanager/v2/{+parent}/environments', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'reauthorize' => ['path' => 'tagmanager/v2/{+path}:reauthorize', 'httpMethod' => 'POST', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'update' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'PUT', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'fingerprint' => ['location' => 'query', 'type' => 'string']]]]]);
+ $this->accounts_containers_version_headers = new \Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsContainersVersionHeaders($this, $this->serviceName, 'version_headers', ['methods' => ['latest' => ['path' => 'tagmanager/v2/{+parent}/version_headers:latest', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'tagmanager/v2/{+parent}/version_headers', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'includeDeleted' => ['location' => 'query', 'type' => 'boolean'], 'pageToken' => ['location' => 'query', 'type' => 'string']]]]]);
+ $this->accounts_containers_versions = new \Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsContainersVersions($this, $this->serviceName, 'versions', ['methods' => ['delete' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'DELETE', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'GET', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'containerVersionId' => ['location' => 'query', 'type' => 'string']]], 'live' => ['path' => 'tagmanager/v2/{+parent}/versions:live', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'publish' => ['path' => 'tagmanager/v2/{+path}:publish', 'httpMethod' => 'POST', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'fingerprint' => ['location' => 'query', 'type' => 'string']]], 'set_latest' => ['path' => 'tagmanager/v2/{+path}:set_latest', 'httpMethod' => 'POST', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'undelete' => ['path' => 'tagmanager/v2/{+path}:undelete', 'httpMethod' => 'POST', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'update' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'PUT', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'fingerprint' => ['location' => 'query', 'type' => 'string']]]]]);
+ $this->accounts_containers_workspaces = new \Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsContainersWorkspaces($this, $this->serviceName, 'workspaces', ['methods' => ['create' => ['path' => 'tagmanager/v2/{+parent}/workspaces', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'create_version' => ['path' => 'tagmanager/v2/{+path}:create_version', 'httpMethod' => 'POST', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'delete' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'DELETE', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'GET', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'getStatus' => ['path' => 'tagmanager/v2/{+path}/status', 'httpMethod' => 'GET', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'tagmanager/v2/{+parent}/workspaces', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'quick_preview' => ['path' => 'tagmanager/v2/{+path}:quick_preview', 'httpMethod' => 'POST', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'resolve_conflict' => ['path' => 'tagmanager/v2/{+path}:resolve_conflict', 'httpMethod' => 'POST', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'fingerprint' => ['location' => 'query', 'type' => 'string']]], 'sync' => ['path' => 'tagmanager/v2/{+path}:sync', 'httpMethod' => 'POST', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'update' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'PUT', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'fingerprint' => ['location' => 'query', 'type' => 'string']]]]]);
+ $this->accounts_containers_workspaces_built_in_variables = new \Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsContainersWorkspacesBuiltInVariables($this, $this->serviceName, 'built_in_variables', ['methods' => ['create' => ['path' => 'tagmanager/v2/{+parent}/built_in_variables', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'type' => ['location' => 'query', 'type' => 'string', 'repeated' => \true]]], 'delete' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'DELETE', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'type' => ['location' => 'query', 'type' => 'string', 'repeated' => \true]]], 'list' => ['path' => 'tagmanager/v2/{+parent}/built_in_variables', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'revert' => ['path' => 'tagmanager/v2/{+path}/built_in_variables:revert', 'httpMethod' => 'POST', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'type' => ['location' => 'query', 'type' => 'string']]]]]);
+ $this->accounts_containers_workspaces_clients = new \Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsContainersWorkspacesClients($this, $this->serviceName, 'clients', ['methods' => ['create' => ['path' => 'tagmanager/v2/{+parent}/clients', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'delete' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'DELETE', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'GET', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'tagmanager/v2/{+parent}/clients', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'revert' => ['path' => 'tagmanager/v2/{+path}:revert', 'httpMethod' => 'POST', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'fingerprint' => ['location' => 'query', 'type' => 'string']]], 'update' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'PUT', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'fingerprint' => ['location' => 'query', 'type' => 'string']]]]]);
+ $this->accounts_containers_workspaces_folders = new \Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsContainersWorkspacesFolders($this, $this->serviceName, 'folders', ['methods' => ['create' => ['path' => 'tagmanager/v2/{+parent}/folders', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'delete' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'DELETE', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'entities' => ['path' => 'tagmanager/v2/{+path}:entities', 'httpMethod' => 'POST', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'get' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'GET', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'tagmanager/v2/{+parent}/folders', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'move_entities_to_folder' => ['path' => 'tagmanager/v2/{+path}:move_entities_to_folder', 'httpMethod' => 'POST', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'tagId' => ['location' => 'query', 'type' => 'string', 'repeated' => \true], 'triggerId' => ['location' => 'query', 'type' => 'string', 'repeated' => \true], 'variableId' => ['location' => 'query', 'type' => 'string', 'repeated' => \true]]], 'revert' => ['path' => 'tagmanager/v2/{+path}:revert', 'httpMethod' => 'POST', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'fingerprint' => ['location' => 'query', 'type' => 'string']]], 'update' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'PUT', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'fingerprint' => ['location' => 'query', 'type' => 'string']]]]]);
+ $this->accounts_containers_workspaces_gtag_config = new \Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsContainersWorkspacesGtagConfig($this, $this->serviceName, 'gtag_config', ['methods' => ['create' => ['path' => 'tagmanager/v2/{+parent}/gtag_config', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'delete' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'DELETE', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'GET', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'tagmanager/v2/{+parent}/gtag_config', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'update' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'PUT', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'fingerprint' => ['location' => 'query', 'type' => 'string']]]]]);
+ $this->accounts_containers_workspaces_tags = new \Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsContainersWorkspacesTags($this, $this->serviceName, 'tags', ['methods' => ['create' => ['path' => 'tagmanager/v2/{+parent}/tags', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'delete' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'DELETE', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'GET', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'tagmanager/v2/{+parent}/tags', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'revert' => ['path' => 'tagmanager/v2/{+path}:revert', 'httpMethod' => 'POST', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'fingerprint' => ['location' => 'query', 'type' => 'string']]], 'update' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'PUT', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'fingerprint' => ['location' => 'query', 'type' => 'string']]]]]);
+ $this->accounts_containers_workspaces_templates = new \Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsContainersWorkspacesTemplates($this, $this->serviceName, 'templates', ['methods' => ['create' => ['path' => 'tagmanager/v2/{+parent}/templates', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'delete' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'DELETE', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'GET', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'tagmanager/v2/{+parent}/templates', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'revert' => ['path' => 'tagmanager/v2/{+path}:revert', 'httpMethod' => 'POST', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'fingerprint' => ['location' => 'query', 'type' => 'string']]], 'update' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'PUT', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'fingerprint' => ['location' => 'query', 'type' => 'string']]]]]);
+ $this->accounts_containers_workspaces_triggers = new \Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsContainersWorkspacesTriggers($this, $this->serviceName, 'triggers', ['methods' => ['create' => ['path' => 'tagmanager/v2/{+parent}/triggers', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'delete' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'DELETE', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'GET', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'tagmanager/v2/{+parent}/triggers', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'revert' => ['path' => 'tagmanager/v2/{+path}:revert', 'httpMethod' => 'POST', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'fingerprint' => ['location' => 'query', 'type' => 'string']]], 'update' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'PUT', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'fingerprint' => ['location' => 'query', 'type' => 'string']]]]]);
+ $this->accounts_containers_workspaces_variables = new \Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsContainersWorkspacesVariables($this, $this->serviceName, 'variables', ['methods' => ['create' => ['path' => 'tagmanager/v2/{+parent}/variables', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'delete' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'DELETE', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'GET', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'tagmanager/v2/{+parent}/variables', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'revert' => ['path' => 'tagmanager/v2/{+path}:revert', 'httpMethod' => 'POST', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'fingerprint' => ['location' => 'query', 'type' => 'string']]], 'update' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'PUT', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'fingerprint' => ['location' => 'query', 'type' => 'string']]]]]);
+ $this->accounts_containers_workspaces_zones = new \Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsContainersWorkspacesZones($this, $this->serviceName, 'zones', ['methods' => ['create' => ['path' => 'tagmanager/v2/{+parent}/zones', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'delete' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'DELETE', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'GET', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'tagmanager/v2/{+parent}/zones', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'revert' => ['path' => 'tagmanager/v2/{+path}:revert', 'httpMethod' => 'POST', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'fingerprint' => ['location' => 'query', 'type' => 'string']]], 'update' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'PUT', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'fingerprint' => ['location' => 'query', 'type' => 'string']]]]]);
+ $this->accounts_user_permissions = new \Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsUserPermissions($this, $this->serviceName, 'user_permissions', ['methods' => ['create' => ['path' => 'tagmanager/v2/{+parent}/user_permissions', 'httpMethod' => 'POST', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'delete' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'DELETE', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'GET', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'tagmanager/v2/{+parent}/user_permissions', 'httpMethod' => 'GET', 'parameters' => ['parent' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'update' => ['path' => 'tagmanager/v2/{+path}', 'httpMethod' => 'PUT', 'parameters' => ['path' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Account.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Account.php
new file mode 100644
index 000000000..a5b48c214
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Account.php
@@ -0,0 +1,148 @@
+accountId = $accountId;
+ }
+ /**
+ * @return string
+ */
+ public function getAccountId()
+ {
+ return $this->accountId;
+ }
+ /**
+ * @param AccountFeatures
+ */
+ public function setFeatures(\Google\Site_Kit_Dependencies\Google\Service\TagManager\AccountFeatures $features)
+ {
+ $this->features = $features;
+ }
+ /**
+ * @return AccountFeatures
+ */
+ public function getFeatures()
+ {
+ return $this->features;
+ }
+ /**
+ * @param string
+ */
+ public function setFingerprint($fingerprint)
+ {
+ $this->fingerprint = $fingerprint;
+ }
+ /**
+ * @return string
+ */
+ public function getFingerprint()
+ {
+ return $this->fingerprint;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param string
+ */
+ public function setPath($path)
+ {
+ $this->path = $path;
+ }
+ /**
+ * @return string
+ */
+ public function getPath()
+ {
+ return $this->path;
+ }
+ /**
+ * @param bool
+ */
+ public function setShareData($shareData)
+ {
+ $this->shareData = $shareData;
+ }
+ /**
+ * @return bool
+ */
+ public function getShareData()
+ {
+ return $this->shareData;
+ }
+ /**
+ * @param string
+ */
+ public function setTagManagerUrl($tagManagerUrl)
+ {
+ $this->tagManagerUrl = $tagManagerUrl;
+ }
+ /**
+ * @return string
+ */
+ public function getTagManagerUrl()
+ {
+ return $this->tagManagerUrl;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Account::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Account');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/AccountAccess.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/AccountAccess.php
new file mode 100644
index 000000000..81c5e08d9
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/AccountAccess.php
@@ -0,0 +1,42 @@
+permission = $permission;
+ }
+ /**
+ * @return string
+ */
+ public function getPermission()
+ {
+ return $this->permission;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\AccountAccess::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_AccountAccess');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/AccountFeatures.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/AccountFeatures.php
new file mode 100644
index 000000000..ebf0a3615
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/AccountFeatures.php
@@ -0,0 +1,60 @@
+supportMultipleContainers = $supportMultipleContainers;
+ }
+ /**
+ * @return bool
+ */
+ public function getSupportMultipleContainers()
+ {
+ return $this->supportMultipleContainers;
+ }
+ /**
+ * @param bool
+ */
+ public function setSupportUserPermissions($supportUserPermissions)
+ {
+ $this->supportUserPermissions = $supportUserPermissions;
+ }
+ /**
+ * @return bool
+ */
+ public function getSupportUserPermissions()
+ {
+ return $this->supportUserPermissions;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\AccountFeatures::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_AccountFeatures');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/BuiltInVariable.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/BuiltInVariable.php
new file mode 100644
index 000000000..c34536b6a
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/BuiltInVariable.php
@@ -0,0 +1,132 @@
+accountId = $accountId;
+ }
+ /**
+ * @return string
+ */
+ public function getAccountId()
+ {
+ return $this->accountId;
+ }
+ /**
+ * @param string
+ */
+ public function setContainerId($containerId)
+ {
+ $this->containerId = $containerId;
+ }
+ /**
+ * @return string
+ */
+ public function getContainerId()
+ {
+ return $this->containerId;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param string
+ */
+ public function setPath($path)
+ {
+ $this->path = $path;
+ }
+ /**
+ * @return string
+ */
+ public function getPath()
+ {
+ return $this->path;
+ }
+ /**
+ * @param string
+ */
+ public function setType($type)
+ {
+ $this->type = $type;
+ }
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+ /**
+ * @param string
+ */
+ public function setWorkspaceId($workspaceId)
+ {
+ $this->workspaceId = $workspaceId;
+ }
+ /**
+ * @return string
+ */
+ public function getWorkspaceId()
+ {
+ return $this->workspaceId;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\BuiltInVariable::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_BuiltInVariable');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Client.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Client.php
new file mode 100644
index 000000000..10197868e
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Client.php
@@ -0,0 +1,257 @@
+accountId = $accountId;
+ }
+ /**
+ * @return string
+ */
+ public function getAccountId()
+ {
+ return $this->accountId;
+ }
+ /**
+ * @param string
+ */
+ public function setClientId($clientId)
+ {
+ $this->clientId = $clientId;
+ }
+ /**
+ * @return string
+ */
+ public function getClientId()
+ {
+ return $this->clientId;
+ }
+ /**
+ * @param string
+ */
+ public function setContainerId($containerId)
+ {
+ $this->containerId = $containerId;
+ }
+ /**
+ * @return string
+ */
+ public function getContainerId()
+ {
+ return $this->containerId;
+ }
+ /**
+ * @param string
+ */
+ public function setFingerprint($fingerprint)
+ {
+ $this->fingerprint = $fingerprint;
+ }
+ /**
+ * @return string
+ */
+ public function getFingerprint()
+ {
+ return $this->fingerprint;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param string
+ */
+ public function setNotes($notes)
+ {
+ $this->notes = $notes;
+ }
+ /**
+ * @return string
+ */
+ public function getNotes()
+ {
+ return $this->notes;
+ }
+ /**
+ * @param Parameter[]
+ */
+ public function setParameter($parameter)
+ {
+ $this->parameter = $parameter;
+ }
+ /**
+ * @return Parameter[]
+ */
+ public function getParameter()
+ {
+ return $this->parameter;
+ }
+ /**
+ * @param string
+ */
+ public function setParentFolderId($parentFolderId)
+ {
+ $this->parentFolderId = $parentFolderId;
+ }
+ /**
+ * @return string
+ */
+ public function getParentFolderId()
+ {
+ return $this->parentFolderId;
+ }
+ /**
+ * @param string
+ */
+ public function setPath($path)
+ {
+ $this->path = $path;
+ }
+ /**
+ * @return string
+ */
+ public function getPath()
+ {
+ return $this->path;
+ }
+ /**
+ * @param int
+ */
+ public function setPriority($priority)
+ {
+ $this->priority = $priority;
+ }
+ /**
+ * @return int
+ */
+ public function getPriority()
+ {
+ return $this->priority;
+ }
+ /**
+ * @param string
+ */
+ public function setTagManagerUrl($tagManagerUrl)
+ {
+ $this->tagManagerUrl = $tagManagerUrl;
+ }
+ /**
+ * @return string
+ */
+ public function getTagManagerUrl()
+ {
+ return $this->tagManagerUrl;
+ }
+ /**
+ * @param string
+ */
+ public function setType($type)
+ {
+ $this->type = $type;
+ }
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+ /**
+ * @param string
+ */
+ public function setWorkspaceId($workspaceId)
+ {
+ $this->workspaceId = $workspaceId;
+ }
+ /**
+ * @return string
+ */
+ public function getWorkspaceId()
+ {
+ return $this->workspaceId;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Client::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Client');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Condition.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Condition.php
new file mode 100644
index 000000000..693463aae
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Condition.php
@@ -0,0 +1,59 @@
+parameter = $parameter;
+ }
+ /**
+ * @return Parameter[]
+ */
+ public function getParameter()
+ {
+ return $this->parameter;
+ }
+ /**
+ * @param string
+ */
+ public function setType($type)
+ {
+ $this->type = $type;
+ }
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Condition::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Condition');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Container.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Container.php
new file mode 100644
index 000000000..e10b13369
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Container.php
@@ -0,0 +1,257 @@
+accountId = $accountId;
+ }
+ /**
+ * @return string
+ */
+ public function getAccountId()
+ {
+ return $this->accountId;
+ }
+ /**
+ * @param string
+ */
+ public function setContainerId($containerId)
+ {
+ $this->containerId = $containerId;
+ }
+ /**
+ * @return string
+ */
+ public function getContainerId()
+ {
+ return $this->containerId;
+ }
+ /**
+ * @param string[]
+ */
+ public function setDomainName($domainName)
+ {
+ $this->domainName = $domainName;
+ }
+ /**
+ * @return string[]
+ */
+ public function getDomainName()
+ {
+ return $this->domainName;
+ }
+ /**
+ * @param ContainerFeatures
+ */
+ public function setFeatures(\Google\Site_Kit_Dependencies\Google\Service\TagManager\ContainerFeatures $features)
+ {
+ $this->features = $features;
+ }
+ /**
+ * @return ContainerFeatures
+ */
+ public function getFeatures()
+ {
+ return $this->features;
+ }
+ /**
+ * @param string
+ */
+ public function setFingerprint($fingerprint)
+ {
+ $this->fingerprint = $fingerprint;
+ }
+ /**
+ * @return string
+ */
+ public function getFingerprint()
+ {
+ return $this->fingerprint;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param string
+ */
+ public function setNotes($notes)
+ {
+ $this->notes = $notes;
+ }
+ /**
+ * @return string
+ */
+ public function getNotes()
+ {
+ return $this->notes;
+ }
+ /**
+ * @param string
+ */
+ public function setPath($path)
+ {
+ $this->path = $path;
+ }
+ /**
+ * @return string
+ */
+ public function getPath()
+ {
+ return $this->path;
+ }
+ /**
+ * @param string
+ */
+ public function setPublicId($publicId)
+ {
+ $this->publicId = $publicId;
+ }
+ /**
+ * @return string
+ */
+ public function getPublicId()
+ {
+ return $this->publicId;
+ }
+ /**
+ * @param string[]
+ */
+ public function setTagIds($tagIds)
+ {
+ $this->tagIds = $tagIds;
+ }
+ /**
+ * @return string[]
+ */
+ public function getTagIds()
+ {
+ return $this->tagIds;
+ }
+ /**
+ * @param string
+ */
+ public function setTagManagerUrl($tagManagerUrl)
+ {
+ $this->tagManagerUrl = $tagManagerUrl;
+ }
+ /**
+ * @return string
+ */
+ public function getTagManagerUrl()
+ {
+ return $this->tagManagerUrl;
+ }
+ /**
+ * @param string[]
+ */
+ public function setTaggingServerUrls($taggingServerUrls)
+ {
+ $this->taggingServerUrls = $taggingServerUrls;
+ }
+ /**
+ * @return string[]
+ */
+ public function getTaggingServerUrls()
+ {
+ return $this->taggingServerUrls;
+ }
+ /**
+ * @param string[]
+ */
+ public function setUsageContext($usageContext)
+ {
+ $this->usageContext = $usageContext;
+ }
+ /**
+ * @return string[]
+ */
+ public function getUsageContext()
+ {
+ return $this->usageContext;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Container::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Container');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ContainerAccess.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ContainerAccess.php
new file mode 100644
index 000000000..503e60487
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ContainerAccess.php
@@ -0,0 +1,60 @@
+containerId = $containerId;
+ }
+ /**
+ * @return string
+ */
+ public function getContainerId()
+ {
+ return $this->containerId;
+ }
+ /**
+ * @param string
+ */
+ public function setPermission($permission)
+ {
+ $this->permission = $permission;
+ }
+ /**
+ * @return string
+ */
+ public function getPermission()
+ {
+ return $this->permission;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\ContainerAccess::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_ContainerAccess');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ContainerFeatures.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ContainerFeatures.php
new file mode 100644
index 000000000..831e01017
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ContainerFeatures.php
@@ -0,0 +1,258 @@
+supportBuiltInVariables = $supportBuiltInVariables;
+ }
+ /**
+ * @return bool
+ */
+ public function getSupportBuiltInVariables()
+ {
+ return $this->supportBuiltInVariables;
+ }
+ /**
+ * @param bool
+ */
+ public function setSupportClients($supportClients)
+ {
+ $this->supportClients = $supportClients;
+ }
+ /**
+ * @return bool
+ */
+ public function getSupportClients()
+ {
+ return $this->supportClients;
+ }
+ /**
+ * @param bool
+ */
+ public function setSupportEnvironments($supportEnvironments)
+ {
+ $this->supportEnvironments = $supportEnvironments;
+ }
+ /**
+ * @return bool
+ */
+ public function getSupportEnvironments()
+ {
+ return $this->supportEnvironments;
+ }
+ /**
+ * @param bool
+ */
+ public function setSupportFolders($supportFolders)
+ {
+ $this->supportFolders = $supportFolders;
+ }
+ /**
+ * @return bool
+ */
+ public function getSupportFolders()
+ {
+ return $this->supportFolders;
+ }
+ /**
+ * @param bool
+ */
+ public function setSupportGtagConfigs($supportGtagConfigs)
+ {
+ $this->supportGtagConfigs = $supportGtagConfigs;
+ }
+ /**
+ * @return bool
+ */
+ public function getSupportGtagConfigs()
+ {
+ return $this->supportGtagConfigs;
+ }
+ /**
+ * @param bool
+ */
+ public function setSupportTags($supportTags)
+ {
+ $this->supportTags = $supportTags;
+ }
+ /**
+ * @return bool
+ */
+ public function getSupportTags()
+ {
+ return $this->supportTags;
+ }
+ /**
+ * @param bool
+ */
+ public function setSupportTemplates($supportTemplates)
+ {
+ $this->supportTemplates = $supportTemplates;
+ }
+ /**
+ * @return bool
+ */
+ public function getSupportTemplates()
+ {
+ return $this->supportTemplates;
+ }
+ /**
+ * @param bool
+ */
+ public function setSupportTriggers($supportTriggers)
+ {
+ $this->supportTriggers = $supportTriggers;
+ }
+ /**
+ * @return bool
+ */
+ public function getSupportTriggers()
+ {
+ return $this->supportTriggers;
+ }
+ /**
+ * @param bool
+ */
+ public function setSupportUserPermissions($supportUserPermissions)
+ {
+ $this->supportUserPermissions = $supportUserPermissions;
+ }
+ /**
+ * @return bool
+ */
+ public function getSupportUserPermissions()
+ {
+ return $this->supportUserPermissions;
+ }
+ /**
+ * @param bool
+ */
+ public function setSupportVariables($supportVariables)
+ {
+ $this->supportVariables = $supportVariables;
+ }
+ /**
+ * @return bool
+ */
+ public function getSupportVariables()
+ {
+ return $this->supportVariables;
+ }
+ /**
+ * @param bool
+ */
+ public function setSupportVersions($supportVersions)
+ {
+ $this->supportVersions = $supportVersions;
+ }
+ /**
+ * @return bool
+ */
+ public function getSupportVersions()
+ {
+ return $this->supportVersions;
+ }
+ /**
+ * @param bool
+ */
+ public function setSupportWorkspaces($supportWorkspaces)
+ {
+ $this->supportWorkspaces = $supportWorkspaces;
+ }
+ /**
+ * @return bool
+ */
+ public function getSupportWorkspaces()
+ {
+ return $this->supportWorkspaces;
+ }
+ /**
+ * @param bool
+ */
+ public function setSupportZones($supportZones)
+ {
+ $this->supportZones = $supportZones;
+ }
+ /**
+ * @return bool
+ */
+ public function getSupportZones()
+ {
+ return $this->supportZones;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\ContainerFeatures::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_ContainerFeatures');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ContainerVersion.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ContainerVersion.php
new file mode 100644
index 000000000..243d8be70
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ContainerVersion.php
@@ -0,0 +1,347 @@
+accountId = $accountId;
+ }
+ /**
+ * @return string
+ */
+ public function getAccountId()
+ {
+ return $this->accountId;
+ }
+ /**
+ * @param BuiltInVariable[]
+ */
+ public function setBuiltInVariable($builtInVariable)
+ {
+ $this->builtInVariable = $builtInVariable;
+ }
+ /**
+ * @return BuiltInVariable[]
+ */
+ public function getBuiltInVariable()
+ {
+ return $this->builtInVariable;
+ }
+ /**
+ * @param Client[]
+ */
+ public function setClient($client)
+ {
+ $this->client = $client;
+ }
+ /**
+ * @return Client[]
+ */
+ public function getClient()
+ {
+ return $this->client;
+ }
+ /**
+ * @param Container
+ */
+ public function setContainer(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Container $container)
+ {
+ $this->container = $container;
+ }
+ /**
+ * @return Container
+ */
+ public function getContainer()
+ {
+ return $this->container;
+ }
+ /**
+ * @param string
+ */
+ public function setContainerId($containerId)
+ {
+ $this->containerId = $containerId;
+ }
+ /**
+ * @return string
+ */
+ public function getContainerId()
+ {
+ return $this->containerId;
+ }
+ /**
+ * @param string
+ */
+ public function setContainerVersionId($containerVersionId)
+ {
+ $this->containerVersionId = $containerVersionId;
+ }
+ /**
+ * @return string
+ */
+ public function getContainerVersionId()
+ {
+ return $this->containerVersionId;
+ }
+ /**
+ * @param CustomTemplate[]
+ */
+ public function setCustomTemplate($customTemplate)
+ {
+ $this->customTemplate = $customTemplate;
+ }
+ /**
+ * @return CustomTemplate[]
+ */
+ public function getCustomTemplate()
+ {
+ return $this->customTemplate;
+ }
+ /**
+ * @param bool
+ */
+ public function setDeleted($deleted)
+ {
+ $this->deleted = $deleted;
+ }
+ /**
+ * @return bool
+ */
+ public function getDeleted()
+ {
+ return $this->deleted;
+ }
+ /**
+ * @param string
+ */
+ public function setDescription($description)
+ {
+ $this->description = $description;
+ }
+ /**
+ * @return string
+ */
+ public function getDescription()
+ {
+ return $this->description;
+ }
+ /**
+ * @param string
+ */
+ public function setFingerprint($fingerprint)
+ {
+ $this->fingerprint = $fingerprint;
+ }
+ /**
+ * @return string
+ */
+ public function getFingerprint()
+ {
+ return $this->fingerprint;
+ }
+ /**
+ * @param Folder[]
+ */
+ public function setFolder($folder)
+ {
+ $this->folder = $folder;
+ }
+ /**
+ * @return Folder[]
+ */
+ public function getFolder()
+ {
+ return $this->folder;
+ }
+ /**
+ * @param GtagConfig[]
+ */
+ public function setGtagConfig($gtagConfig)
+ {
+ $this->gtagConfig = $gtagConfig;
+ }
+ /**
+ * @return GtagConfig[]
+ */
+ public function getGtagConfig()
+ {
+ return $this->gtagConfig;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param string
+ */
+ public function setPath($path)
+ {
+ $this->path = $path;
+ }
+ /**
+ * @return string
+ */
+ public function getPath()
+ {
+ return $this->path;
+ }
+ /**
+ * @param Tag[]
+ */
+ public function setTag($tag)
+ {
+ $this->tag = $tag;
+ }
+ /**
+ * @return Tag[]
+ */
+ public function getTag()
+ {
+ return $this->tag;
+ }
+ /**
+ * @param string
+ */
+ public function setTagManagerUrl($tagManagerUrl)
+ {
+ $this->tagManagerUrl = $tagManagerUrl;
+ }
+ /**
+ * @return string
+ */
+ public function getTagManagerUrl()
+ {
+ return $this->tagManagerUrl;
+ }
+ /**
+ * @param Trigger[]
+ */
+ public function setTrigger($trigger)
+ {
+ $this->trigger = $trigger;
+ }
+ /**
+ * @return Trigger[]
+ */
+ public function getTrigger()
+ {
+ return $this->trigger;
+ }
+ /**
+ * @param Variable[]
+ */
+ public function setVariable($variable)
+ {
+ $this->variable = $variable;
+ }
+ /**
+ * @return Variable[]
+ */
+ public function getVariable()
+ {
+ return $this->variable;
+ }
+ /**
+ * @param Zone[]
+ */
+ public function setZone($zone)
+ {
+ $this->zone = $zone;
+ }
+ /**
+ * @return Zone[]
+ */
+ public function getZone()
+ {
+ return $this->zone;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\ContainerVersion::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_ContainerVersion');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ContainerVersionHeader.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ContainerVersionHeader.php
new file mode 100644
index 000000000..50af02c35
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ContainerVersionHeader.php
@@ -0,0 +1,294 @@
+accountId = $accountId;
+ }
+ /**
+ * @return string
+ */
+ public function getAccountId()
+ {
+ return $this->accountId;
+ }
+ /**
+ * @param string
+ */
+ public function setContainerId($containerId)
+ {
+ $this->containerId = $containerId;
+ }
+ /**
+ * @return string
+ */
+ public function getContainerId()
+ {
+ return $this->containerId;
+ }
+ /**
+ * @param string
+ */
+ public function setContainerVersionId($containerVersionId)
+ {
+ $this->containerVersionId = $containerVersionId;
+ }
+ /**
+ * @return string
+ */
+ public function getContainerVersionId()
+ {
+ return $this->containerVersionId;
+ }
+ /**
+ * @param bool
+ */
+ public function setDeleted($deleted)
+ {
+ $this->deleted = $deleted;
+ }
+ /**
+ * @return bool
+ */
+ public function getDeleted()
+ {
+ return $this->deleted;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param string
+ */
+ public function setNumClients($numClients)
+ {
+ $this->numClients = $numClients;
+ }
+ /**
+ * @return string
+ */
+ public function getNumClients()
+ {
+ return $this->numClients;
+ }
+ /**
+ * @param string
+ */
+ public function setNumCustomTemplates($numCustomTemplates)
+ {
+ $this->numCustomTemplates = $numCustomTemplates;
+ }
+ /**
+ * @return string
+ */
+ public function getNumCustomTemplates()
+ {
+ return $this->numCustomTemplates;
+ }
+ /**
+ * @param string
+ */
+ public function setNumGtagConfigs($numGtagConfigs)
+ {
+ $this->numGtagConfigs = $numGtagConfigs;
+ }
+ /**
+ * @return string
+ */
+ public function getNumGtagConfigs()
+ {
+ return $this->numGtagConfigs;
+ }
+ /**
+ * @param string
+ */
+ public function setNumMacros($numMacros)
+ {
+ $this->numMacros = $numMacros;
+ }
+ /**
+ * @return string
+ */
+ public function getNumMacros()
+ {
+ return $this->numMacros;
+ }
+ /**
+ * @param string
+ */
+ public function setNumRules($numRules)
+ {
+ $this->numRules = $numRules;
+ }
+ /**
+ * @return string
+ */
+ public function getNumRules()
+ {
+ return $this->numRules;
+ }
+ /**
+ * @param string
+ */
+ public function setNumTags($numTags)
+ {
+ $this->numTags = $numTags;
+ }
+ /**
+ * @return string
+ */
+ public function getNumTags()
+ {
+ return $this->numTags;
+ }
+ /**
+ * @param string
+ */
+ public function setNumTriggers($numTriggers)
+ {
+ $this->numTriggers = $numTriggers;
+ }
+ /**
+ * @return string
+ */
+ public function getNumTriggers()
+ {
+ return $this->numTriggers;
+ }
+ /**
+ * @param string
+ */
+ public function setNumVariables($numVariables)
+ {
+ $this->numVariables = $numVariables;
+ }
+ /**
+ * @return string
+ */
+ public function getNumVariables()
+ {
+ return $this->numVariables;
+ }
+ /**
+ * @param string
+ */
+ public function setNumZones($numZones)
+ {
+ $this->numZones = $numZones;
+ }
+ /**
+ * @return string
+ */
+ public function getNumZones()
+ {
+ return $this->numZones;
+ }
+ /**
+ * @param string
+ */
+ public function setPath($path)
+ {
+ $this->path = $path;
+ }
+ /**
+ * @return string
+ */
+ public function getPath()
+ {
+ return $this->path;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\ContainerVersionHeader::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_ContainerVersionHeader');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/CreateBuiltInVariableResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/CreateBuiltInVariableResponse.php
new file mode 100644
index 000000000..75db30d4f
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/CreateBuiltInVariableResponse.php
@@ -0,0 +1,41 @@
+builtInVariable = $builtInVariable;
+ }
+ /**
+ * @return BuiltInVariable[]
+ */
+ public function getBuiltInVariable()
+ {
+ return $this->builtInVariable;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\CreateBuiltInVariableResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_CreateBuiltInVariableResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/CreateContainerVersionRequestVersionOptions.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/CreateContainerVersionRequestVersionOptions.php
new file mode 100644
index 000000000..2445e46be
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/CreateContainerVersionRequestVersionOptions.php
@@ -0,0 +1,60 @@
+name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param string
+ */
+ public function setNotes($notes)
+ {
+ $this->notes = $notes;
+ }
+ /**
+ * @return string
+ */
+ public function getNotes()
+ {
+ return $this->notes;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\CreateContainerVersionRequestVersionOptions::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_CreateContainerVersionRequestVersionOptions');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/CreateContainerVersionResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/CreateContainerVersionResponse.php
new file mode 100644
index 000000000..f9f7e2584
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/CreateContainerVersionResponse.php
@@ -0,0 +1,92 @@
+compilerError = $compilerError;
+ }
+ /**
+ * @return bool
+ */
+ public function getCompilerError()
+ {
+ return $this->compilerError;
+ }
+ /**
+ * @param ContainerVersion
+ */
+ public function setContainerVersion(\Google\Site_Kit_Dependencies\Google\Service\TagManager\ContainerVersion $containerVersion)
+ {
+ $this->containerVersion = $containerVersion;
+ }
+ /**
+ * @return ContainerVersion
+ */
+ public function getContainerVersion()
+ {
+ return $this->containerVersion;
+ }
+ /**
+ * @param string
+ */
+ public function setNewWorkspacePath($newWorkspacePath)
+ {
+ $this->newWorkspacePath = $newWorkspacePath;
+ }
+ /**
+ * @return string
+ */
+ public function getNewWorkspacePath()
+ {
+ return $this->newWorkspacePath;
+ }
+ /**
+ * @param SyncStatus
+ */
+ public function setSyncStatus(\Google\Site_Kit_Dependencies\Google\Service\TagManager\SyncStatus $syncStatus)
+ {
+ $this->syncStatus = $syncStatus;
+ }
+ /**
+ * @return SyncStatus
+ */
+ public function getSyncStatus()
+ {
+ return $this->syncStatus;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\CreateContainerVersionResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_CreateContainerVersionResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/CustomTemplate.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/CustomTemplate.php
new file mode 100644
index 000000000..2b2ced0cb
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/CustomTemplate.php
@@ -0,0 +1,202 @@
+accountId = $accountId;
+ }
+ /**
+ * @return string
+ */
+ public function getAccountId()
+ {
+ return $this->accountId;
+ }
+ /**
+ * @param string
+ */
+ public function setContainerId($containerId)
+ {
+ $this->containerId = $containerId;
+ }
+ /**
+ * @return string
+ */
+ public function getContainerId()
+ {
+ return $this->containerId;
+ }
+ /**
+ * @param string
+ */
+ public function setFingerprint($fingerprint)
+ {
+ $this->fingerprint = $fingerprint;
+ }
+ /**
+ * @return string
+ */
+ public function getFingerprint()
+ {
+ return $this->fingerprint;
+ }
+ /**
+ * @param GalleryReference
+ */
+ public function setGalleryReference(\Google\Site_Kit_Dependencies\Google\Service\TagManager\GalleryReference $galleryReference)
+ {
+ $this->galleryReference = $galleryReference;
+ }
+ /**
+ * @return GalleryReference
+ */
+ public function getGalleryReference()
+ {
+ return $this->galleryReference;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param string
+ */
+ public function setPath($path)
+ {
+ $this->path = $path;
+ }
+ /**
+ * @return string
+ */
+ public function getPath()
+ {
+ return $this->path;
+ }
+ /**
+ * @param string
+ */
+ public function setTagManagerUrl($tagManagerUrl)
+ {
+ $this->tagManagerUrl = $tagManagerUrl;
+ }
+ /**
+ * @return string
+ */
+ public function getTagManagerUrl()
+ {
+ return $this->tagManagerUrl;
+ }
+ /**
+ * @param string
+ */
+ public function setTemplateData($templateData)
+ {
+ $this->templateData = $templateData;
+ }
+ /**
+ * @return string
+ */
+ public function getTemplateData()
+ {
+ return $this->templateData;
+ }
+ /**
+ * @param string
+ */
+ public function setTemplateId($templateId)
+ {
+ $this->templateId = $templateId;
+ }
+ /**
+ * @return string
+ */
+ public function getTemplateId()
+ {
+ return $this->templateId;
+ }
+ /**
+ * @param string
+ */
+ public function setWorkspaceId($workspaceId)
+ {
+ $this->workspaceId = $workspaceId;
+ }
+ /**
+ * @return string
+ */
+ public function getWorkspaceId()
+ {
+ return $this->workspaceId;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\CustomTemplate::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_CustomTemplate');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Destination.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Destination.php
new file mode 100644
index 000000000..9d4a9ca8c
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Destination.php
@@ -0,0 +1,168 @@
+accountId = $accountId;
+ }
+ /**
+ * @return string
+ */
+ public function getAccountId()
+ {
+ return $this->accountId;
+ }
+ /**
+ * @param string
+ */
+ public function setContainerId($containerId)
+ {
+ $this->containerId = $containerId;
+ }
+ /**
+ * @return string
+ */
+ public function getContainerId()
+ {
+ return $this->containerId;
+ }
+ /**
+ * @param string
+ */
+ public function setDestinationId($destinationId)
+ {
+ $this->destinationId = $destinationId;
+ }
+ /**
+ * @return string
+ */
+ public function getDestinationId()
+ {
+ return $this->destinationId;
+ }
+ /**
+ * @param string
+ */
+ public function setDestinationLinkId($destinationLinkId)
+ {
+ $this->destinationLinkId = $destinationLinkId;
+ }
+ /**
+ * @return string
+ */
+ public function getDestinationLinkId()
+ {
+ return $this->destinationLinkId;
+ }
+ /**
+ * @param string
+ */
+ public function setFingerprint($fingerprint)
+ {
+ $this->fingerprint = $fingerprint;
+ }
+ /**
+ * @return string
+ */
+ public function getFingerprint()
+ {
+ return $this->fingerprint;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param string
+ */
+ public function setPath($path)
+ {
+ $this->path = $path;
+ }
+ /**
+ * @return string
+ */
+ public function getPath()
+ {
+ return $this->path;
+ }
+ /**
+ * @param string
+ */
+ public function setTagManagerUrl($tagManagerUrl)
+ {
+ $this->tagManagerUrl = $tagManagerUrl;
+ }
+ /**
+ * @return string
+ */
+ public function getTagManagerUrl()
+ {
+ return $this->tagManagerUrl;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Destination::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Destination');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Entity.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Entity.php
new file mode 100644
index 000000000..502bb7f0e
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Entity.php
@@ -0,0 +1,122 @@
+changeStatus = $changeStatus;
+ }
+ /**
+ * @return string
+ */
+ public function getChangeStatus()
+ {
+ return $this->changeStatus;
+ }
+ /**
+ * @param Client
+ */
+ public function setClient(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Client $client)
+ {
+ $this->client = $client;
+ }
+ /**
+ * @return Client
+ */
+ public function getClient()
+ {
+ return $this->client;
+ }
+ /**
+ * @param Folder
+ */
+ public function setFolder(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Folder $folder)
+ {
+ $this->folder = $folder;
+ }
+ /**
+ * @return Folder
+ */
+ public function getFolder()
+ {
+ return $this->folder;
+ }
+ /**
+ * @param Tag
+ */
+ public function setTag(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Tag $tag)
+ {
+ $this->tag = $tag;
+ }
+ /**
+ * @return Tag
+ */
+ public function getTag()
+ {
+ return $this->tag;
+ }
+ /**
+ * @param Trigger
+ */
+ public function setTrigger(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Trigger $trigger)
+ {
+ $this->trigger = $trigger;
+ }
+ /**
+ * @return Trigger
+ */
+ public function getTrigger()
+ {
+ return $this->trigger;
+ }
+ /**
+ * @param Variable
+ */
+ public function setVariable(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Variable $variable)
+ {
+ $this->variable = $variable;
+ }
+ /**
+ * @return Variable
+ */
+ public function getVariable()
+ {
+ return $this->variable;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Entity::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Entity');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Environment.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Environment.php
new file mode 100644
index 000000000..1440a0c61
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Environment.php
@@ -0,0 +1,294 @@
+accountId = $accountId;
+ }
+ /**
+ * @return string
+ */
+ public function getAccountId()
+ {
+ return $this->accountId;
+ }
+ /**
+ * @param string
+ */
+ public function setAuthorizationCode($authorizationCode)
+ {
+ $this->authorizationCode = $authorizationCode;
+ }
+ /**
+ * @return string
+ */
+ public function getAuthorizationCode()
+ {
+ return $this->authorizationCode;
+ }
+ /**
+ * @param string
+ */
+ public function setAuthorizationTimestamp($authorizationTimestamp)
+ {
+ $this->authorizationTimestamp = $authorizationTimestamp;
+ }
+ /**
+ * @return string
+ */
+ public function getAuthorizationTimestamp()
+ {
+ return $this->authorizationTimestamp;
+ }
+ /**
+ * @param string
+ */
+ public function setContainerId($containerId)
+ {
+ $this->containerId = $containerId;
+ }
+ /**
+ * @return string
+ */
+ public function getContainerId()
+ {
+ return $this->containerId;
+ }
+ /**
+ * @param string
+ */
+ public function setContainerVersionId($containerVersionId)
+ {
+ $this->containerVersionId = $containerVersionId;
+ }
+ /**
+ * @return string
+ */
+ public function getContainerVersionId()
+ {
+ return $this->containerVersionId;
+ }
+ /**
+ * @param string
+ */
+ public function setDescription($description)
+ {
+ $this->description = $description;
+ }
+ /**
+ * @return string
+ */
+ public function getDescription()
+ {
+ return $this->description;
+ }
+ /**
+ * @param bool
+ */
+ public function setEnableDebug($enableDebug)
+ {
+ $this->enableDebug = $enableDebug;
+ }
+ /**
+ * @return bool
+ */
+ public function getEnableDebug()
+ {
+ return $this->enableDebug;
+ }
+ /**
+ * @param string
+ */
+ public function setEnvironmentId($environmentId)
+ {
+ $this->environmentId = $environmentId;
+ }
+ /**
+ * @return string
+ */
+ public function getEnvironmentId()
+ {
+ return $this->environmentId;
+ }
+ /**
+ * @param string
+ */
+ public function setFingerprint($fingerprint)
+ {
+ $this->fingerprint = $fingerprint;
+ }
+ /**
+ * @return string
+ */
+ public function getFingerprint()
+ {
+ return $this->fingerprint;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param string
+ */
+ public function setPath($path)
+ {
+ $this->path = $path;
+ }
+ /**
+ * @return string
+ */
+ public function getPath()
+ {
+ return $this->path;
+ }
+ /**
+ * @param string
+ */
+ public function setTagManagerUrl($tagManagerUrl)
+ {
+ $this->tagManagerUrl = $tagManagerUrl;
+ }
+ /**
+ * @return string
+ */
+ public function getTagManagerUrl()
+ {
+ return $this->tagManagerUrl;
+ }
+ /**
+ * @param string
+ */
+ public function setType($type)
+ {
+ $this->type = $type;
+ }
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+ /**
+ * @param string
+ */
+ public function setUrl($url)
+ {
+ $this->url = $url;
+ }
+ /**
+ * @return string
+ */
+ public function getUrl()
+ {
+ return $this->url;
+ }
+ /**
+ * @param string
+ */
+ public function setWorkspaceId($workspaceId)
+ {
+ $this->workspaceId = $workspaceId;
+ }
+ /**
+ * @return string
+ */
+ public function getWorkspaceId()
+ {
+ return $this->workspaceId;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Environment::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Environment');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Folder.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Folder.php
new file mode 100644
index 000000000..54c531b5f
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Folder.php
@@ -0,0 +1,186 @@
+accountId = $accountId;
+ }
+ /**
+ * @return string
+ */
+ public function getAccountId()
+ {
+ return $this->accountId;
+ }
+ /**
+ * @param string
+ */
+ public function setContainerId($containerId)
+ {
+ $this->containerId = $containerId;
+ }
+ /**
+ * @return string
+ */
+ public function getContainerId()
+ {
+ return $this->containerId;
+ }
+ /**
+ * @param string
+ */
+ public function setFingerprint($fingerprint)
+ {
+ $this->fingerprint = $fingerprint;
+ }
+ /**
+ * @return string
+ */
+ public function getFingerprint()
+ {
+ return $this->fingerprint;
+ }
+ /**
+ * @param string
+ */
+ public function setFolderId($folderId)
+ {
+ $this->folderId = $folderId;
+ }
+ /**
+ * @return string
+ */
+ public function getFolderId()
+ {
+ return $this->folderId;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param string
+ */
+ public function setNotes($notes)
+ {
+ $this->notes = $notes;
+ }
+ /**
+ * @return string
+ */
+ public function getNotes()
+ {
+ return $this->notes;
+ }
+ /**
+ * @param string
+ */
+ public function setPath($path)
+ {
+ $this->path = $path;
+ }
+ /**
+ * @return string
+ */
+ public function getPath()
+ {
+ return $this->path;
+ }
+ /**
+ * @param string
+ */
+ public function setTagManagerUrl($tagManagerUrl)
+ {
+ $this->tagManagerUrl = $tagManagerUrl;
+ }
+ /**
+ * @return string
+ */
+ public function getTagManagerUrl()
+ {
+ return $this->tagManagerUrl;
+ }
+ /**
+ * @param string
+ */
+ public function setWorkspaceId($workspaceId)
+ {
+ $this->workspaceId = $workspaceId;
+ }
+ /**
+ * @return string
+ */
+ public function getWorkspaceId()
+ {
+ return $this->workspaceId;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Folder::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Folder');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/FolderEntities.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/FolderEntities.php
new file mode 100644
index 000000000..9319fa3f1
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/FolderEntities.php
@@ -0,0 +1,91 @@
+nextPageToken = $nextPageToken;
+ }
+ /**
+ * @return string
+ */
+ public function getNextPageToken()
+ {
+ return $this->nextPageToken;
+ }
+ /**
+ * @param Tag[]
+ */
+ public function setTag($tag)
+ {
+ $this->tag = $tag;
+ }
+ /**
+ * @return Tag[]
+ */
+ public function getTag()
+ {
+ return $this->tag;
+ }
+ /**
+ * @param Trigger[]
+ */
+ public function setTrigger($trigger)
+ {
+ $this->trigger = $trigger;
+ }
+ /**
+ * @return Trigger[]
+ */
+ public function getTrigger()
+ {
+ return $this->trigger;
+ }
+ /**
+ * @param Variable[]
+ */
+ public function setVariable($variable)
+ {
+ $this->variable = $variable;
+ }
+ /**
+ * @return Variable[]
+ */
+ public function getVariable()
+ {
+ return $this->variable;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\FolderEntities::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_FolderEntities');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/GalleryReference.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/GalleryReference.php
new file mode 100644
index 000000000..4a0527b32
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/GalleryReference.php
@@ -0,0 +1,132 @@
+host = $host;
+ }
+ /**
+ * @return string
+ */
+ public function getHost()
+ {
+ return $this->host;
+ }
+ /**
+ * @param bool
+ */
+ public function setIsModified($isModified)
+ {
+ $this->isModified = $isModified;
+ }
+ /**
+ * @return bool
+ */
+ public function getIsModified()
+ {
+ return $this->isModified;
+ }
+ /**
+ * @param string
+ */
+ public function setOwner($owner)
+ {
+ $this->owner = $owner;
+ }
+ /**
+ * @return string
+ */
+ public function getOwner()
+ {
+ return $this->owner;
+ }
+ /**
+ * @param string
+ */
+ public function setRepository($repository)
+ {
+ $this->repository = $repository;
+ }
+ /**
+ * @return string
+ */
+ public function getRepository()
+ {
+ return $this->repository;
+ }
+ /**
+ * @param string
+ */
+ public function setSignature($signature)
+ {
+ $this->signature = $signature;
+ }
+ /**
+ * @return string
+ */
+ public function getSignature()
+ {
+ return $this->signature;
+ }
+ /**
+ * @param string
+ */
+ public function setVersion($version)
+ {
+ $this->version = $version;
+ }
+ /**
+ * @return string
+ */
+ public function getVersion()
+ {
+ return $this->version;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\GalleryReference::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_GalleryReference');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/GetContainerSnippetResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/GetContainerSnippetResponse.php
new file mode 100644
index 000000000..acf0bc688
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/GetContainerSnippetResponse.php
@@ -0,0 +1,42 @@
+snippet = $snippet;
+ }
+ /**
+ * @return string
+ */
+ public function getSnippet()
+ {
+ return $this->snippet;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\GetContainerSnippetResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_GetContainerSnippetResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/GetWorkspaceStatusResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/GetWorkspaceStatusResponse.php
new file mode 100644
index 000000000..512389bf5
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/GetWorkspaceStatusResponse.php
@@ -0,0 +1,57 @@
+mergeConflict = $mergeConflict;
+ }
+ /**
+ * @return MergeConflict[]
+ */
+ public function getMergeConflict()
+ {
+ return $this->mergeConflict;
+ }
+ /**
+ * @param Entity[]
+ */
+ public function setWorkspaceChange($workspaceChange)
+ {
+ $this->workspaceChange = $workspaceChange;
+ }
+ /**
+ * @return Entity[]
+ */
+ public function getWorkspaceChange()
+ {
+ return $this->workspaceChange;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\GetWorkspaceStatusResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_GetWorkspaceStatusResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/GtagConfig.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/GtagConfig.php
new file mode 100644
index 000000000..182b859ad
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/GtagConfig.php
@@ -0,0 +1,185 @@
+accountId = $accountId;
+ }
+ /**
+ * @return string
+ */
+ public function getAccountId()
+ {
+ return $this->accountId;
+ }
+ /**
+ * @param string
+ */
+ public function setContainerId($containerId)
+ {
+ $this->containerId = $containerId;
+ }
+ /**
+ * @return string
+ */
+ public function getContainerId()
+ {
+ return $this->containerId;
+ }
+ /**
+ * @param string
+ */
+ public function setFingerprint($fingerprint)
+ {
+ $this->fingerprint = $fingerprint;
+ }
+ /**
+ * @return string
+ */
+ public function getFingerprint()
+ {
+ return $this->fingerprint;
+ }
+ /**
+ * @param string
+ */
+ public function setGtagConfigId($gtagConfigId)
+ {
+ $this->gtagConfigId = $gtagConfigId;
+ }
+ /**
+ * @return string
+ */
+ public function getGtagConfigId()
+ {
+ return $this->gtagConfigId;
+ }
+ /**
+ * @param Parameter[]
+ */
+ public function setParameter($parameter)
+ {
+ $this->parameter = $parameter;
+ }
+ /**
+ * @return Parameter[]
+ */
+ public function getParameter()
+ {
+ return $this->parameter;
+ }
+ /**
+ * @param string
+ */
+ public function setPath($path)
+ {
+ $this->path = $path;
+ }
+ /**
+ * @return string
+ */
+ public function getPath()
+ {
+ return $this->path;
+ }
+ /**
+ * @param string
+ */
+ public function setTagManagerUrl($tagManagerUrl)
+ {
+ $this->tagManagerUrl = $tagManagerUrl;
+ }
+ /**
+ * @return string
+ */
+ public function getTagManagerUrl()
+ {
+ return $this->tagManagerUrl;
+ }
+ /**
+ * @param string
+ */
+ public function setType($type)
+ {
+ $this->type = $type;
+ }
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+ /**
+ * @param string
+ */
+ public function setWorkspaceId($workspaceId)
+ {
+ $this->workspaceId = $workspaceId;
+ }
+ /**
+ * @return string
+ */
+ public function getWorkspaceId()
+ {
+ return $this->workspaceId;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\GtagConfig::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_GtagConfig');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListAccountsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListAccountsResponse.php
new file mode 100644
index 000000000..73c53ddef
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListAccountsResponse.php
@@ -0,0 +1,59 @@
+account = $account;
+ }
+ /**
+ * @return Account[]
+ */
+ public function getAccount()
+ {
+ return $this->account;
+ }
+ /**
+ * @param string
+ */
+ public function setNextPageToken($nextPageToken)
+ {
+ $this->nextPageToken = $nextPageToken;
+ }
+ /**
+ * @return string
+ */
+ public function getNextPageToken()
+ {
+ return $this->nextPageToken;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\ListAccountsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_ListAccountsResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListClientsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListClientsResponse.php
new file mode 100644
index 000000000..defccbaef
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListClientsResponse.php
@@ -0,0 +1,59 @@
+client = $client;
+ }
+ /**
+ * @return Client[]
+ */
+ public function getClient()
+ {
+ return $this->client;
+ }
+ /**
+ * @param string
+ */
+ public function setNextPageToken($nextPageToken)
+ {
+ $this->nextPageToken = $nextPageToken;
+ }
+ /**
+ * @return string
+ */
+ public function getNextPageToken()
+ {
+ return $this->nextPageToken;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\ListClientsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_ListClientsResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListContainerVersionsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListContainerVersionsResponse.php
new file mode 100644
index 000000000..fc16cd5ca
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListContainerVersionsResponse.php
@@ -0,0 +1,59 @@
+containerVersionHeader = $containerVersionHeader;
+ }
+ /**
+ * @return ContainerVersionHeader[]
+ */
+ public function getContainerVersionHeader()
+ {
+ return $this->containerVersionHeader;
+ }
+ /**
+ * @param string
+ */
+ public function setNextPageToken($nextPageToken)
+ {
+ $this->nextPageToken = $nextPageToken;
+ }
+ /**
+ * @return string
+ */
+ public function getNextPageToken()
+ {
+ return $this->nextPageToken;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\ListContainerVersionsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_ListContainerVersionsResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListContainersResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListContainersResponse.php
new file mode 100644
index 000000000..f05b8da29
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListContainersResponse.php
@@ -0,0 +1,59 @@
+container = $container;
+ }
+ /**
+ * @return Container[]
+ */
+ public function getContainer()
+ {
+ return $this->container;
+ }
+ /**
+ * @param string
+ */
+ public function setNextPageToken($nextPageToken)
+ {
+ $this->nextPageToken = $nextPageToken;
+ }
+ /**
+ * @return string
+ */
+ public function getNextPageToken()
+ {
+ return $this->nextPageToken;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\ListContainersResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_ListContainersResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListDestinationsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListDestinationsResponse.php
new file mode 100644
index 000000000..fec587cba
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListDestinationsResponse.php
@@ -0,0 +1,59 @@
+destination = $destination;
+ }
+ /**
+ * @return Destination[]
+ */
+ public function getDestination()
+ {
+ return $this->destination;
+ }
+ /**
+ * @param string
+ */
+ public function setNextPageToken($nextPageToken)
+ {
+ $this->nextPageToken = $nextPageToken;
+ }
+ /**
+ * @return string
+ */
+ public function getNextPageToken()
+ {
+ return $this->nextPageToken;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\ListDestinationsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_ListDestinationsResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListEnabledBuiltInVariablesResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListEnabledBuiltInVariablesResponse.php
new file mode 100644
index 000000000..dabf83560
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListEnabledBuiltInVariablesResponse.php
@@ -0,0 +1,59 @@
+builtInVariable = $builtInVariable;
+ }
+ /**
+ * @return BuiltInVariable[]
+ */
+ public function getBuiltInVariable()
+ {
+ return $this->builtInVariable;
+ }
+ /**
+ * @param string
+ */
+ public function setNextPageToken($nextPageToken)
+ {
+ $this->nextPageToken = $nextPageToken;
+ }
+ /**
+ * @return string
+ */
+ public function getNextPageToken()
+ {
+ return $this->nextPageToken;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\ListEnabledBuiltInVariablesResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_ListEnabledBuiltInVariablesResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListEnvironmentsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListEnvironmentsResponse.php
new file mode 100644
index 000000000..f0be37597
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListEnvironmentsResponse.php
@@ -0,0 +1,59 @@
+environment = $environment;
+ }
+ /**
+ * @return Environment[]
+ */
+ public function getEnvironment()
+ {
+ return $this->environment;
+ }
+ /**
+ * @param string
+ */
+ public function setNextPageToken($nextPageToken)
+ {
+ $this->nextPageToken = $nextPageToken;
+ }
+ /**
+ * @return string
+ */
+ public function getNextPageToken()
+ {
+ return $this->nextPageToken;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\ListEnvironmentsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_ListEnvironmentsResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListFoldersResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListFoldersResponse.php
new file mode 100644
index 000000000..076694ea5
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListFoldersResponse.php
@@ -0,0 +1,59 @@
+folder = $folder;
+ }
+ /**
+ * @return Folder[]
+ */
+ public function getFolder()
+ {
+ return $this->folder;
+ }
+ /**
+ * @param string
+ */
+ public function setNextPageToken($nextPageToken)
+ {
+ $this->nextPageToken = $nextPageToken;
+ }
+ /**
+ * @return string
+ */
+ public function getNextPageToken()
+ {
+ return $this->nextPageToken;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\ListFoldersResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_ListFoldersResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListGtagConfigResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListGtagConfigResponse.php
new file mode 100644
index 000000000..4f8ce5857
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListGtagConfigResponse.php
@@ -0,0 +1,59 @@
+gtagConfig = $gtagConfig;
+ }
+ /**
+ * @return GtagConfig[]
+ */
+ public function getGtagConfig()
+ {
+ return $this->gtagConfig;
+ }
+ /**
+ * @param string
+ */
+ public function setNextPageToken($nextPageToken)
+ {
+ $this->nextPageToken = $nextPageToken;
+ }
+ /**
+ * @return string
+ */
+ public function getNextPageToken()
+ {
+ return $this->nextPageToken;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\ListGtagConfigResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_ListGtagConfigResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListTagsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListTagsResponse.php
new file mode 100644
index 000000000..496822700
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListTagsResponse.php
@@ -0,0 +1,59 @@
+nextPageToken = $nextPageToken;
+ }
+ /**
+ * @return string
+ */
+ public function getNextPageToken()
+ {
+ return $this->nextPageToken;
+ }
+ /**
+ * @param Tag[]
+ */
+ public function setTag($tag)
+ {
+ $this->tag = $tag;
+ }
+ /**
+ * @return Tag[]
+ */
+ public function getTag()
+ {
+ return $this->tag;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\ListTagsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_ListTagsResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListTemplatesResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListTemplatesResponse.php
new file mode 100644
index 000000000..4a1c03095
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListTemplatesResponse.php
@@ -0,0 +1,59 @@
+nextPageToken = $nextPageToken;
+ }
+ /**
+ * @return string
+ */
+ public function getNextPageToken()
+ {
+ return $this->nextPageToken;
+ }
+ /**
+ * @param CustomTemplate[]
+ */
+ public function setTemplate($template)
+ {
+ $this->template = $template;
+ }
+ /**
+ * @return CustomTemplate[]
+ */
+ public function getTemplate()
+ {
+ return $this->template;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\ListTemplatesResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_ListTemplatesResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListTriggersResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListTriggersResponse.php
new file mode 100644
index 000000000..e2b3b6418
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListTriggersResponse.php
@@ -0,0 +1,59 @@
+nextPageToken = $nextPageToken;
+ }
+ /**
+ * @return string
+ */
+ public function getNextPageToken()
+ {
+ return $this->nextPageToken;
+ }
+ /**
+ * @param Trigger[]
+ */
+ public function setTrigger($trigger)
+ {
+ $this->trigger = $trigger;
+ }
+ /**
+ * @return Trigger[]
+ */
+ public function getTrigger()
+ {
+ return $this->trigger;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\ListTriggersResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_ListTriggersResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListUserPermissionsResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListUserPermissionsResponse.php
new file mode 100644
index 000000000..9d4be8c09
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListUserPermissionsResponse.php
@@ -0,0 +1,59 @@
+nextPageToken = $nextPageToken;
+ }
+ /**
+ * @return string
+ */
+ public function getNextPageToken()
+ {
+ return $this->nextPageToken;
+ }
+ /**
+ * @param UserPermission[]
+ */
+ public function setUserPermission($userPermission)
+ {
+ $this->userPermission = $userPermission;
+ }
+ /**
+ * @return UserPermission[]
+ */
+ public function getUserPermission()
+ {
+ return $this->userPermission;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\ListUserPermissionsResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_ListUserPermissionsResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListVariablesResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListVariablesResponse.php
new file mode 100644
index 000000000..64a82c381
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListVariablesResponse.php
@@ -0,0 +1,59 @@
+nextPageToken = $nextPageToken;
+ }
+ /**
+ * @return string
+ */
+ public function getNextPageToken()
+ {
+ return $this->nextPageToken;
+ }
+ /**
+ * @param Variable[]
+ */
+ public function setVariable($variable)
+ {
+ $this->variable = $variable;
+ }
+ /**
+ * @return Variable[]
+ */
+ public function getVariable()
+ {
+ return $this->variable;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\ListVariablesResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_ListVariablesResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListWorkspacesResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListWorkspacesResponse.php
new file mode 100644
index 000000000..cf85a6d10
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListWorkspacesResponse.php
@@ -0,0 +1,59 @@
+nextPageToken = $nextPageToken;
+ }
+ /**
+ * @return string
+ */
+ public function getNextPageToken()
+ {
+ return $this->nextPageToken;
+ }
+ /**
+ * @param Workspace[]
+ */
+ public function setWorkspace($workspace)
+ {
+ $this->workspace = $workspace;
+ }
+ /**
+ * @return Workspace[]
+ */
+ public function getWorkspace()
+ {
+ return $this->workspace;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\ListWorkspacesResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_ListWorkspacesResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListZonesResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListZonesResponse.php
new file mode 100644
index 000000000..4644f094d
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ListZonesResponse.php
@@ -0,0 +1,59 @@
+nextPageToken = $nextPageToken;
+ }
+ /**
+ * @return string
+ */
+ public function getNextPageToken()
+ {
+ return $this->nextPageToken;
+ }
+ /**
+ * @param Zone[]
+ */
+ public function setZone($zone)
+ {
+ $this->zone = $zone;
+ }
+ /**
+ * @return Zone[]
+ */
+ public function getZone()
+ {
+ return $this->zone;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\ListZonesResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_ListZonesResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/MergeConflict.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/MergeConflict.php
new file mode 100644
index 000000000..ea2f21a7a
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/MergeConflict.php
@@ -0,0 +1,56 @@
+entityInBaseVersion = $entityInBaseVersion;
+ }
+ /**
+ * @return Entity
+ */
+ public function getEntityInBaseVersion()
+ {
+ return $this->entityInBaseVersion;
+ }
+ /**
+ * @param Entity
+ */
+ public function setEntityInWorkspace(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Entity $entityInWorkspace)
+ {
+ $this->entityInWorkspace = $entityInWorkspace;
+ }
+ /**
+ * @return Entity
+ */
+ public function getEntityInWorkspace()
+ {
+ return $this->entityInWorkspace;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\MergeConflict::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_MergeConflict');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Parameter.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Parameter.php
new file mode 100644
index 000000000..12c6008d1
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Parameter.php
@@ -0,0 +1,111 @@
+key = $key;
+ }
+ /**
+ * @return string
+ */
+ public function getKey()
+ {
+ return $this->key;
+ }
+ /**
+ * @param Parameter[]
+ */
+ public function setList($list)
+ {
+ $this->list = $list;
+ }
+ /**
+ * @return Parameter[]
+ */
+ public function getList()
+ {
+ return $this->list;
+ }
+ /**
+ * @param Parameter[]
+ */
+ public function setMap($map)
+ {
+ $this->map = $map;
+ }
+ /**
+ * @return Parameter[]
+ */
+ public function getMap()
+ {
+ return $this->map;
+ }
+ /**
+ * @param string
+ */
+ public function setType($type)
+ {
+ $this->type = $type;
+ }
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+ /**
+ * @param string
+ */
+ public function setValue($value)
+ {
+ $this->value = $value;
+ }
+ /**
+ * @return string
+ */
+ public function getValue()
+ {
+ return $this->value;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Parameter::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Parameter');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/PublishContainerVersionResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/PublishContainerVersionResponse.php
new file mode 100644
index 000000000..d7be2ad4e
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/PublishContainerVersionResponse.php
@@ -0,0 +1,58 @@
+compilerError = $compilerError;
+ }
+ /**
+ * @return bool
+ */
+ public function getCompilerError()
+ {
+ return $this->compilerError;
+ }
+ /**
+ * @param ContainerVersion
+ */
+ public function setContainerVersion(\Google\Site_Kit_Dependencies\Google\Service\TagManager\ContainerVersion $containerVersion)
+ {
+ $this->containerVersion = $containerVersion;
+ }
+ /**
+ * @return ContainerVersion
+ */
+ public function getContainerVersion()
+ {
+ return $this->containerVersion;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\PublishContainerVersionResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_PublishContainerVersionResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/QuickPreviewResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/QuickPreviewResponse.php
new file mode 100644
index 000000000..aeb684c1d
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/QuickPreviewResponse.php
@@ -0,0 +1,74 @@
+compilerError = $compilerError;
+ }
+ /**
+ * @return bool
+ */
+ public function getCompilerError()
+ {
+ return $this->compilerError;
+ }
+ /**
+ * @param ContainerVersion
+ */
+ public function setContainerVersion(\Google\Site_Kit_Dependencies\Google\Service\TagManager\ContainerVersion $containerVersion)
+ {
+ $this->containerVersion = $containerVersion;
+ }
+ /**
+ * @return ContainerVersion
+ */
+ public function getContainerVersion()
+ {
+ return $this->containerVersion;
+ }
+ /**
+ * @param SyncStatus
+ */
+ public function setSyncStatus(\Google\Site_Kit_Dependencies\Google\Service\TagManager\SyncStatus $syncStatus)
+ {
+ $this->syncStatus = $syncStatus;
+ }
+ /**
+ * @return SyncStatus
+ */
+ public function getSyncStatus()
+ {
+ return $this->syncStatus;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\QuickPreviewResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_QuickPreviewResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/Accounts.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/Accounts.php
new file mode 100644
index 000000000..359787050
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/Accounts.php
@@ -0,0 +1,83 @@
+
+ * $tagmanagerService = new Google\Service\TagManager(...);
+ * $accounts = $tagmanagerService->accounts;
+ *
+ */
+class Accounts extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Gets a GTM Account. (accounts.get)
+ *
+ * @param string $path GTM Account's API relative path. Example:
+ * accounts/{account_id}
+ * @param array $optParams Optional parameters.
+ * @return Account
+ */
+ public function get($path, $optParams = [])
+ {
+ $params = ['path' => $path];
+ $params = \array_merge($params, $optParams);
+ return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Account::class);
+ }
+ /**
+ * Lists all GTM Accounts that a user has access to. (accounts.listAccounts)
+ *
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param bool includeGoogleTags Also retrieve accounts associated with
+ * Google Tag when true.
+ * @opt_param string pageToken Continuation token for fetching the next page of
+ * results.
+ * @return ListAccountsResponse
+ */
+ public function listAccounts($optParams = [])
+ {
+ $params = [];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\ListAccountsResponse::class);
+ }
+ /**
+ * Updates a GTM Account. (accounts.update)
+ *
+ * @param string $path GTM Account's API relative path. Example:
+ * accounts/{account_id}
+ * @param Account $postBody
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string fingerprint When provided, this fingerprint must match the
+ * fingerprint of the account in storage.
+ * @return Account
+ */
+ public function update($path, \Google\Site_Kit_Dependencies\Google\Service\TagManager\Account $postBody, $optParams = [])
+ {
+ $params = ['path' => $path, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('update', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Account::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\Accounts::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Resource_Accounts');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainers.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainers.php
new file mode 100644
index 000000000..d2b5b27ef
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainers.php
@@ -0,0 +1,192 @@
+
+ * $tagmanagerService = new Google\Service\TagManager(...);
+ * $containers = $tagmanagerService->containers;
+ *
+ */
+class AccountsContainers extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Combines Containers. (containers.combine)
+ *
+ * @param string $path GTM Container's API relative path. Example:
+ * accounts/{account_id}/containers/{container_id}
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param bool allowUserPermissionFeatureUpdate Must be set to true to allow
+ * features.user_permissions to change from false to true. If this operation
+ * causes an update but this bit is false, the operation will fail.
+ * @opt_param string containerId ID of container that will be merged into the
+ * current container.
+ * @opt_param string settingSource Specify the source of config setting after
+ * combine
+ * @return Container
+ */
+ public function combine($path, $optParams = [])
+ {
+ $params = ['path' => $path];
+ $params = \array_merge($params, $optParams);
+ return $this->call('combine', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Container::class);
+ }
+ /**
+ * Creates a Container. (containers.create)
+ *
+ * @param string $parent GTM Account's API relative path. Example:
+ * accounts/{account_id}.
+ * @param Container $postBody
+ * @param array $optParams Optional parameters.
+ * @return Container
+ */
+ public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\TagManager\Container $postBody, $optParams = [])
+ {
+ $params = ['parent' => $parent, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Container::class);
+ }
+ /**
+ * Deletes a Container. (containers.delete)
+ *
+ * @param string $path GTM Container's API relative path. Example:
+ * accounts/{account_id}/containers/{container_id}
+ * @param array $optParams Optional parameters.
+ */
+ public function delete($path, $optParams = [])
+ {
+ $params = ['path' => $path];
+ $params = \array_merge($params, $optParams);
+ return $this->call('delete', [$params]);
+ }
+ /**
+ * Gets a Container. (containers.get)
+ *
+ * @param string $path GTM Container's API relative path. Example:
+ * accounts/{account_id}/containers/{container_id}
+ * @param array $optParams Optional parameters.
+ * @return Container
+ */
+ public function get($path, $optParams = [])
+ {
+ $params = ['path' => $path];
+ $params = \array_merge($params, $optParams);
+ return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Container::class);
+ }
+ /**
+ * Lists all Containers that belongs to a GTM Account.
+ * (containers.listAccountsContainers)
+ *
+ * @param string $parent GTM Account's API relative path. Example:
+ * accounts/{account_id}.
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string pageToken Continuation token for fetching the next page of
+ * results.
+ * @return ListContainersResponse
+ */
+ public function listAccountsContainers($parent, $optParams = [])
+ {
+ $params = ['parent' => $parent];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\ListContainersResponse::class);
+ }
+ /**
+ * Looks up a Container by destination ID. (containers.lookup)
+ *
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string destinationId Destination ID linked to a GTM Container,
+ * e.g. AW-123456789. Example:
+ * accounts/containers:lookup?destination_id={destination_id}.
+ * @return Container
+ */
+ public function lookup($optParams = [])
+ {
+ $params = [];
+ $params = \array_merge($params, $optParams);
+ return $this->call('lookup', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Container::class);
+ }
+ /**
+ * Move Tag ID out of a Container. (containers.move_tag_id)
+ *
+ * @param string $path GTM Container's API relative path. Example:
+ * accounts/{account_id}/containers/{container_id}
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param bool allowUserPermissionFeatureUpdate Must be set to true to allow
+ * features.user_permissions to change from false to true. If this operation
+ * causes an update but this bit is false, the operation will fail.
+ * @opt_param bool copySettings Whether or not to copy tag settings from this
+ * tag to the new tag.
+ * @opt_param bool copyTermsOfService Must be set to true to accept all terms of
+ * service agreements copied from the current tag to the newly created tag. If
+ * this bit is false, the operation will fail.
+ * @opt_param bool copyUsers Whether or not to copy users from this tag to the
+ * new tag.
+ * @opt_param string tagId Tag ID to be removed from the current Container.
+ * @opt_param string tagName The name for the newly created tag.
+ * @return Container
+ */
+ public function move_tag_id($path, $optParams = [])
+ {
+ $params = ['path' => $path];
+ $params = \array_merge($params, $optParams);
+ return $this->call('move_tag_id', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Container::class);
+ }
+ /**
+ * Gets the tagging snippet for a Container. (containers.snippet)
+ *
+ * @param string $path Container snippet's API relative path. Example:
+ * accounts/{account_id}/containers/{container_id}:snippet
+ * @param array $optParams Optional parameters.
+ * @return GetContainerSnippetResponse
+ */
+ public function snippet($path, $optParams = [])
+ {
+ $params = ['path' => $path];
+ $params = \array_merge($params, $optParams);
+ return $this->call('snippet', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\GetContainerSnippetResponse::class);
+ }
+ /**
+ * Updates a Container. (containers.update)
+ *
+ * @param string $path GTM Container's API relative path. Example:
+ * accounts/{account_id}/containers/{container_id}
+ * @param Container $postBody
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string fingerprint When provided, this fingerprint must match the
+ * fingerprint of the container in storage.
+ * @return Container
+ */
+ public function update($path, \Google\Site_Kit_Dependencies\Google\Service\TagManager\Container $postBody, $optParams = [])
+ {
+ $params = ['path' => $path, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('update', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Container::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsContainers::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Resource_AccountsContainers');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersDestinations.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersDestinations.php
new file mode 100644
index 000000000..b6aa9acba
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersDestinations.php
@@ -0,0 +1,85 @@
+
+ * $tagmanagerService = new Google\Service\TagManager(...);
+ * $destinations = $tagmanagerService->destinations;
+ *
+ */
+class AccountsContainersDestinations extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Gets a Destination. (destinations.get)
+ *
+ * @param string $path Google Tag Destination's API relative path. Example: acco
+ * unts/{account_id}/containers/{container_id}/destinations/{destination_link_id
+ * }
+ * @param array $optParams Optional parameters.
+ * @return Destination
+ */
+ public function get($path, $optParams = [])
+ {
+ $params = ['path' => $path];
+ $params = \array_merge($params, $optParams);
+ return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Destination::class);
+ }
+ /**
+ * Adds a Destination to this Container and removes it from the Container to
+ * which it is currently linked. (destinations.link)
+ *
+ * @param string $parent GTM parent Container's API relative path. Example:
+ * accounts/{account_id}/containers/{container_id}
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param bool allowUserPermissionFeatureUpdate Must be set to true to allow
+ * features.user_permissions to change from false to true. If this operation
+ * causes an update but this bit is false, the operation will fail.
+ * @opt_param string destinationId Destination ID to be linked to the current
+ * container.
+ * @return Destination
+ */
+ public function link($parent, $optParams = [])
+ {
+ $params = ['parent' => $parent];
+ $params = \array_merge($params, $optParams);
+ return $this->call('link', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Destination::class);
+ }
+ /**
+ * Lists all Destinations linked to a GTM Container.
+ * (destinations.listAccountsContainersDestinations)
+ *
+ * @param string $parent GTM parent Container's API relative path. Example:
+ * accounts/{account_id}/containers/{container_id}
+ * @param array $optParams Optional parameters.
+ * @return ListDestinationsResponse
+ */
+ public function listAccountsContainersDestinations($parent, $optParams = [])
+ {
+ $params = ['parent' => $parent];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\ListDestinationsResponse::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsContainersDestinations::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Resource_AccountsContainersDestinations');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersEnvironments.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersEnvironments.php
new file mode 100644
index 000000000..6c149e336
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersEnvironments.php
@@ -0,0 +1,128 @@
+
+ * $tagmanagerService = new Google\Service\TagManager(...);
+ * $environments = $tagmanagerService->environments;
+ *
+ */
+class AccountsContainersEnvironments extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Creates a GTM Environment. (environments.create)
+ *
+ * @param string $parent GTM Container's API relative path. Example:
+ * accounts/{account_id}/containers/{container_id}
+ * @param Environment $postBody
+ * @param array $optParams Optional parameters.
+ * @return Environment
+ */
+ public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\TagManager\Environment $postBody, $optParams = [])
+ {
+ $params = ['parent' => $parent, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Environment::class);
+ }
+ /**
+ * Deletes a GTM Environment. (environments.delete)
+ *
+ * @param string $path GTM Environment's API relative path. Example:
+ * accounts/{account_id}/containers/{container_id}/environments/{environment_id}
+ * @param array $optParams Optional parameters.
+ */
+ public function delete($path, $optParams = [])
+ {
+ $params = ['path' => $path];
+ $params = \array_merge($params, $optParams);
+ return $this->call('delete', [$params]);
+ }
+ /**
+ * Gets a GTM Environment. (environments.get)
+ *
+ * @param string $path GTM Environment's API relative path. Example:
+ * accounts/{account_id}/containers/{container_id}/environments/{environment_id}
+ * @param array $optParams Optional parameters.
+ * @return Environment
+ */
+ public function get($path, $optParams = [])
+ {
+ $params = ['path' => $path];
+ $params = \array_merge($params, $optParams);
+ return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Environment::class);
+ }
+ /**
+ * Lists all GTM Environments of a GTM Container.
+ * (environments.listAccountsContainersEnvironments)
+ *
+ * @param string $parent GTM Container's API relative path. Example:
+ * accounts/{account_id}/containers/{container_id}
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string pageToken Continuation token for fetching the next page of
+ * results.
+ * @return ListEnvironmentsResponse
+ */
+ public function listAccountsContainersEnvironments($parent, $optParams = [])
+ {
+ $params = ['parent' => $parent];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\ListEnvironmentsResponse::class);
+ }
+ /**
+ * Re-generates the authorization code for a GTM Environment.
+ * (environments.reauthorize)
+ *
+ * @param string $path GTM Environment's API relative path. Example:
+ * accounts/{account_id}/containers/{container_id}/environments/{environment_id}
+ * @param Environment $postBody
+ * @param array $optParams Optional parameters.
+ * @return Environment
+ */
+ public function reauthorize($path, \Google\Site_Kit_Dependencies\Google\Service\TagManager\Environment $postBody, $optParams = [])
+ {
+ $params = ['path' => $path, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('reauthorize', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Environment::class);
+ }
+ /**
+ * Updates a GTM Environment. (environments.update)
+ *
+ * @param string $path GTM Environment's API relative path. Example:
+ * accounts/{account_id}/containers/{container_id}/environments/{environment_id}
+ * @param Environment $postBody
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string fingerprint When provided, this fingerprint must match the
+ * fingerprint of the environment in storage.
+ * @return Environment
+ */
+ public function update($path, \Google\Site_Kit_Dependencies\Google\Service\TagManager\Environment $postBody, $optParams = [])
+ {
+ $params = ['path' => $path, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('update', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Environment::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsContainersEnvironments::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Resource_AccountsContainersEnvironments');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersVersionHeaders.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersVersionHeaders.php
new file mode 100644
index 000000000..00d25bc74
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersVersionHeaders.php
@@ -0,0 +1,68 @@
+
+ * $tagmanagerService = new Google\Service\TagManager(...);
+ * $version_headers = $tagmanagerService->version_headers;
+ *
+ */
+class AccountsContainersVersionHeaders extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Gets the latest container version header (version_headers.latest)
+ *
+ * @param string $parent GTM Container's API relative path. Example:
+ * accounts/{account_id}/containers/{container_id}
+ * @param array $optParams Optional parameters.
+ * @return ContainerVersionHeader
+ */
+ public function latest($parent, $optParams = [])
+ {
+ $params = ['parent' => $parent];
+ $params = \array_merge($params, $optParams);
+ return $this->call('latest', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\ContainerVersionHeader::class);
+ }
+ /**
+ * Lists all Container Versions of a GTM Container.
+ * (version_headers.listAccountsContainersVersionHeaders)
+ *
+ * @param string $parent GTM Container's API relative path. Example:
+ * accounts/{account_id}/containers/{container_id}
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param bool includeDeleted Also retrieve deleted (archived) versions when
+ * true.
+ * @opt_param string pageToken Continuation token for fetching the next page of
+ * results.
+ * @return ListContainerVersionsResponse
+ */
+ public function listAccountsContainersVersionHeaders($parent, $optParams = [])
+ {
+ $params = ['parent' => $parent];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\ListContainerVersionsResponse::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsContainersVersionHeaders::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Resource_AccountsContainersVersionHeaders');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersVersions.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersVersions.php
new file mode 100644
index 000000000..c40a6140b
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersVersions.php
@@ -0,0 +1,142 @@
+
+ * $tagmanagerService = new Google\Service\TagManager(...);
+ * $versions = $tagmanagerService->versions;
+ *
+ */
+class AccountsContainersVersions extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Deletes a Container Version. (versions.delete)
+ *
+ * @param string $path GTM ContainerVersion's API relative path. Example:
+ * accounts/{account_id}/containers/{container_id}/versions/{version_id}
+ * @param array $optParams Optional parameters.
+ */
+ public function delete($path, $optParams = [])
+ {
+ $params = ['path' => $path];
+ $params = \array_merge($params, $optParams);
+ return $this->call('delete', [$params]);
+ }
+ /**
+ * Gets a Container Version. (versions.get)
+ *
+ * @param string $path GTM ContainerVersion's API relative path. Example:
+ * accounts/{account_id}/containers/{container_id}/versions/{version_id}
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string containerVersionId The GTM ContainerVersion ID. Specify
+ * published to retrieve the currently published version.
+ * @return ContainerVersion
+ */
+ public function get($path, $optParams = [])
+ {
+ $params = ['path' => $path];
+ $params = \array_merge($params, $optParams);
+ return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\ContainerVersion::class);
+ }
+ /**
+ * Gets the live (i.e. published) container version (versions.live)
+ *
+ * @param string $parent GTM Container's API relative path. Example:
+ * accounts/{account_id}/containers/{container_id}
+ * @param array $optParams Optional parameters.
+ * @return ContainerVersion
+ */
+ public function live($parent, $optParams = [])
+ {
+ $params = ['parent' => $parent];
+ $params = \array_merge($params, $optParams);
+ return $this->call('live', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\ContainerVersion::class);
+ }
+ /**
+ * Publishes a Container Version. (versions.publish)
+ *
+ * @param string $path GTM ContainerVersion's API relative path. Example:
+ * accounts/{account_id}/containers/{container_id}/versions/{version_id}
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string fingerprint When provided, this fingerprint must match the
+ * fingerprint of the container version in storage.
+ * @return PublishContainerVersionResponse
+ */
+ public function publish($path, $optParams = [])
+ {
+ $params = ['path' => $path];
+ $params = \array_merge($params, $optParams);
+ return $this->call('publish', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\PublishContainerVersionResponse::class);
+ }
+ /**
+ * Sets the latest version used for synchronization of workspaces when detecting
+ * conflicts and errors. (versions.set_latest)
+ *
+ * @param string $path GTM ContainerVersion's API relative path. Example:
+ * accounts/{account_id}/containers/{container_id}/versions/{version_id}
+ * @param array $optParams Optional parameters.
+ * @return ContainerVersion
+ */
+ public function set_latest($path, $optParams = [])
+ {
+ $params = ['path' => $path];
+ $params = \array_merge($params, $optParams);
+ return $this->call('set_latest', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\ContainerVersion::class);
+ }
+ /**
+ * Undeletes a Container Version. (versions.undelete)
+ *
+ * @param string $path GTM ContainerVersion's API relative path. Example:
+ * accounts/{account_id}/containers/{container_id}/versions/{version_id}
+ * @param array $optParams Optional parameters.
+ * @return ContainerVersion
+ */
+ public function undelete($path, $optParams = [])
+ {
+ $params = ['path' => $path];
+ $params = \array_merge($params, $optParams);
+ return $this->call('undelete', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\ContainerVersion::class);
+ }
+ /**
+ * Updates a Container Version. (versions.update)
+ *
+ * @param string $path GTM ContainerVersion's API relative path. Example:
+ * accounts/{account_id}/containers/{container_id}/versions/{version_id}
+ * @param ContainerVersion $postBody
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string fingerprint When provided, this fingerprint must match the
+ * fingerprint of the container version in storage.
+ * @return ContainerVersion
+ */
+ public function update($path, \Google\Site_Kit_Dependencies\Google\Service\TagManager\ContainerVersion $postBody, $optParams = [])
+ {
+ $params = ['path' => $path, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('update', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\ContainerVersion::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsContainersVersions::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Resource_AccountsContainersVersions');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspaces.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspaces.php
new file mode 100644
index 000000000..4745f9f39
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspaces.php
@@ -0,0 +1,199 @@
+
+ * $tagmanagerService = new Google\Service\TagManager(...);
+ * $workspaces = $tagmanagerService->workspaces;
+ *
+ */
+class AccountsContainersWorkspaces extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Creates a Workspace. (workspaces.create)
+ *
+ * @param string $parent GTM parent Container's API relative path. Example:
+ * accounts/{account_id}/containers/{container_id}
+ * @param Workspace $postBody
+ * @param array $optParams Optional parameters.
+ * @return Workspace
+ */
+ public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\TagManager\Workspace $postBody, $optParams = [])
+ {
+ $params = ['parent' => $parent, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Workspace::class);
+ }
+ /**
+ * Creates a Container Version from the entities present in the workspace,
+ * deletes the workspace, and sets the base container version to the newly
+ * created version. (workspaces.create_version)
+ *
+ * @param string $path GTM Workspace's API relative path. Example:
+ * accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id}
+ * @param CreateContainerVersionRequestVersionOptions $postBody
+ * @param array $optParams Optional parameters.
+ * @return CreateContainerVersionResponse
+ */
+ public function create_version($path, \Google\Site_Kit_Dependencies\Google\Service\TagManager\CreateContainerVersionRequestVersionOptions $postBody, $optParams = [])
+ {
+ $params = ['path' => $path, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('create_version', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\CreateContainerVersionResponse::class);
+ }
+ /**
+ * Deletes a Workspace. (workspaces.delete)
+ *
+ * @param string $path GTM Workspace's API relative path. Example:
+ * accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id}
+ * @param array $optParams Optional parameters.
+ */
+ public function delete($path, $optParams = [])
+ {
+ $params = ['path' => $path];
+ $params = \array_merge($params, $optParams);
+ return $this->call('delete', [$params]);
+ }
+ /**
+ * Gets a Workspace. (workspaces.get)
+ *
+ * @param string $path GTM Workspace's API relative path. Example:
+ * accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id}
+ * @param array $optParams Optional parameters.
+ * @return Workspace
+ */
+ public function get($path, $optParams = [])
+ {
+ $params = ['path' => $path];
+ $params = \array_merge($params, $optParams);
+ return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Workspace::class);
+ }
+ /**
+ * Finds conflicting and modified entities in the workspace.
+ * (workspaces.getStatus)
+ *
+ * @param string $path GTM Workspace's API relative path. Example:
+ * accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id}
+ * @param array $optParams Optional parameters.
+ * @return GetWorkspaceStatusResponse
+ */
+ public function getStatus($path, $optParams = [])
+ {
+ $params = ['path' => $path];
+ $params = \array_merge($params, $optParams);
+ return $this->call('getStatus', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\GetWorkspaceStatusResponse::class);
+ }
+ /**
+ * Lists all Workspaces that belong to a GTM Container.
+ * (workspaces.listAccountsContainersWorkspaces)
+ *
+ * @param string $parent GTM parent Container's API relative path. Example:
+ * accounts/{account_id}/containers/{container_id}
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string pageToken Continuation token for fetching the next page of
+ * results.
+ * @return ListWorkspacesResponse
+ */
+ public function listAccountsContainersWorkspaces($parent, $optParams = [])
+ {
+ $params = ['parent' => $parent];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\ListWorkspacesResponse::class);
+ }
+ /**
+ * Quick previews a workspace by creating a fake container version from all
+ * entities in the provided workspace. (workspaces.quick_preview)
+ *
+ * @param string $path GTM Workspace's API relative path. Example:
+ * accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id}
+ * @param array $optParams Optional parameters.
+ * @return QuickPreviewResponse
+ */
+ public function quick_preview($path, $optParams = [])
+ {
+ $params = ['path' => $path];
+ $params = \array_merge($params, $optParams);
+ return $this->call('quick_preview', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\QuickPreviewResponse::class);
+ }
+ /**
+ * Resolves a merge conflict for a workspace entity by updating it to the
+ * resolved entity passed in the request. (workspaces.resolve_conflict)
+ *
+ * @param string $path GTM Workspace's API relative path. Example:
+ * accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id}
+ * @param Entity $postBody
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string fingerprint When provided, this fingerprint must match the
+ * fingerprint of the entity_in_workspace in the merge conflict.
+ */
+ public function resolve_conflict($path, \Google\Site_Kit_Dependencies\Google\Service\TagManager\Entity $postBody, $optParams = [])
+ {
+ $params = ['path' => $path, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('resolve_conflict', [$params]);
+ }
+ /**
+ * Syncs a workspace to the latest container version by updating all unmodified
+ * workspace entities and displaying conflicts for modified entities.
+ * (workspaces.sync)
+ *
+ * @param string $path GTM Workspace's API relative path. Example:
+ * accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id}
+ * @param array $optParams Optional parameters.
+ * @return SyncWorkspaceResponse
+ */
+ public function sync($path, $optParams = [])
+ {
+ $params = ['path' => $path];
+ $params = \array_merge($params, $optParams);
+ return $this->call('sync', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\SyncWorkspaceResponse::class);
+ }
+ /**
+ * Updates a Workspace. (workspaces.update)
+ *
+ * @param string $path GTM Workspace's API relative path. Example:
+ * accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id}
+ * @param Workspace $postBody
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string fingerprint When provided, this fingerprint must match the
+ * fingerprint of the workspace in storage.
+ * @return Workspace
+ */
+ public function update($path, \Google\Site_Kit_Dependencies\Google\Service\TagManager\Workspace $postBody, $optParams = [])
+ {
+ $params = ['path' => $path, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('update', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Workspace::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsContainersWorkspaces::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Resource_AccountsContainersWorkspaces');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesBuiltInVariables.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesBuiltInVariables.php
new file mode 100644
index 000000000..f1fb0ec39
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesBuiltInVariables.php
@@ -0,0 +1,103 @@
+
+ * $tagmanagerService = new Google\Service\TagManager(...);
+ * $built_in_variables = $tagmanagerService->built_in_variables;
+ *
+ */
+class AccountsContainersWorkspacesBuiltInVariables extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Creates one or more GTM Built-In Variables. (built_in_variables.create)
+ *
+ * @param string $parent GTM Workspace's API relative path. Example:
+ * accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id}
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string type The types of built-in variables to enable.
+ * @return CreateBuiltInVariableResponse
+ */
+ public function create($parent, $optParams = [])
+ {
+ $params = ['parent' => $parent];
+ $params = \array_merge($params, $optParams);
+ return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\CreateBuiltInVariableResponse::class);
+ }
+ /**
+ * Deletes one or more GTM Built-In Variables. (built_in_variables.delete)
+ *
+ * @param string $path GTM BuiltInVariable's API relative path. Example: account
+ * s/{account_id}/containers/{container_id}/workspaces/{workspace_id}/built_in_v
+ * ariables
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string type The types of built-in variables to delete.
+ */
+ public function delete($path, $optParams = [])
+ {
+ $params = ['path' => $path];
+ $params = \array_merge($params, $optParams);
+ return $this->call('delete', [$params]);
+ }
+ /**
+ * Lists all the enabled Built-In Variables of a GTM Container.
+ * (built_in_variables.listAccountsContainersWorkspacesBuiltInVariables)
+ *
+ * @param string $parent GTM Workspace's API relative path. Example:
+ * accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id}
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string pageToken Continuation token for fetching the next page of
+ * results.
+ * @return ListEnabledBuiltInVariablesResponse
+ */
+ public function listAccountsContainersWorkspacesBuiltInVariables($parent, $optParams = [])
+ {
+ $params = ['parent' => $parent];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\ListEnabledBuiltInVariablesResponse::class);
+ }
+ /**
+ * Reverts changes to a GTM Built-In Variables in a GTM Workspace.
+ * (built_in_variables.revert)
+ *
+ * @param string $path GTM BuiltInVariable's API relative path. Example: account
+ * s/{account_id}/containers/{container_id}/workspaces/{workspace_id}/built_in_v
+ * ariables
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string type The type of built-in variable to revert.
+ * @return RevertBuiltInVariableResponse
+ */
+ public function revert($path, $optParams = [])
+ {
+ $params = ['path' => $path];
+ $params = \array_merge($params, $optParams);
+ return $this->call('revert', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\RevertBuiltInVariableResponse::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsContainersWorkspacesBuiltInVariables::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Resource_AccountsContainersWorkspacesBuiltInVariables');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesClients.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesClients.php
new file mode 100644
index 000000000..edaea61f0
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesClients.php
@@ -0,0 +1,130 @@
+
+ * $tagmanagerService = new Google\Service\TagManager(...);
+ * $clients = $tagmanagerService->clients;
+ *
+ */
+class AccountsContainersWorkspacesClients extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Creates a GTM Client. (clients.create)
+ *
+ * @param string $parent GTM Workspace's API relative path. Example:
+ * accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id}
+ * @param Client $postBody
+ * @param array $optParams Optional parameters.
+ * @return Client
+ */
+ public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\TagManager\Client $postBody, $optParams = [])
+ {
+ $params = ['parent' => $parent, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Client::class);
+ }
+ /**
+ * Deletes a GTM Client. (clients.delete)
+ *
+ * @param string $path GTM Client's API relative path. Example: accounts/{accoun
+ * t_id}/containers/{container_id}/workspaces/{workspace_id}/clients/{client_id}
+ * @param array $optParams Optional parameters.
+ */
+ public function delete($path, $optParams = [])
+ {
+ $params = ['path' => $path];
+ $params = \array_merge($params, $optParams);
+ return $this->call('delete', [$params]);
+ }
+ /**
+ * Gets a GTM Client. (clients.get)
+ *
+ * @param string $path GTM Client's API relative path. Example: accounts/{accoun
+ * t_id}/containers/{container_id}/workspaces/{workspace_id}/clients/{client_id}
+ * @param array $optParams Optional parameters.
+ * @return Client
+ */
+ public function get($path, $optParams = [])
+ {
+ $params = ['path' => $path];
+ $params = \array_merge($params, $optParams);
+ return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Client::class);
+ }
+ /**
+ * Lists all GTM Clients of a GTM container workspace.
+ * (clients.listAccountsContainersWorkspacesClients)
+ *
+ * @param string $parent GTM Workspace's API relative path. Example:
+ * accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id}
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string pageToken Continuation token for fetching the next page of
+ * results.
+ * @return ListClientsResponse
+ */
+ public function listAccountsContainersWorkspacesClients($parent, $optParams = [])
+ {
+ $params = ['parent' => $parent];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\ListClientsResponse::class);
+ }
+ /**
+ * Reverts changes to a GTM Client in a GTM Workspace. (clients.revert)
+ *
+ * @param string $path GTM Client's API relative path. Example: accounts/{accoun
+ * t_id}/containers/{container_id}/workspaces/{workspace_id}/clients/{client_id}
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string fingerprint When provided, this fingerprint must match the
+ * fingerprint of the client in storage.
+ * @return RevertClientResponse
+ */
+ public function revert($path, $optParams = [])
+ {
+ $params = ['path' => $path];
+ $params = \array_merge($params, $optParams);
+ return $this->call('revert', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\RevertClientResponse::class);
+ }
+ /**
+ * Updates a GTM Client. (clients.update)
+ *
+ * @param string $path GTM Client's API relative path. Example: accounts/{accoun
+ * t_id}/containers/{container_id}/workspaces/{workspace_id}/clients/{client_id}
+ * @param Client $postBody
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string fingerprint When provided, this fingerprint must match the
+ * fingerprint of the client in storage.
+ * @return Client
+ */
+ public function update($path, \Google\Site_Kit_Dependencies\Google\Service\TagManager\Client $postBody, $optParams = [])
+ {
+ $params = ['path' => $path, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('update', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Client::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsContainersWorkspacesClients::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Resource_AccountsContainersWorkspacesClients');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesFolders.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesFolders.php
new file mode 100644
index 000000000..5cf2f2fc6
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesFolders.php
@@ -0,0 +1,166 @@
+
+ * $tagmanagerService = new Google\Service\TagManager(...);
+ * $folders = $tagmanagerService->folders;
+ *
+ */
+class AccountsContainersWorkspacesFolders extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Creates a GTM Folder. (folders.create)
+ *
+ * @param string $parent GTM Workspace's API relative path. Example:
+ * accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id}
+ * @param Folder $postBody
+ * @param array $optParams Optional parameters.
+ * @return Folder
+ */
+ public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\TagManager\Folder $postBody, $optParams = [])
+ {
+ $params = ['parent' => $parent, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Folder::class);
+ }
+ /**
+ * Deletes a GTM Folder. (folders.delete)
+ *
+ * @param string $path GTM Folder's API relative path. Example: accounts/{accoun
+ * t_id}/containers/{container_id}/workspaces/{workspace_id}/folders/{folder_id}
+ * @param array $optParams Optional parameters.
+ */
+ public function delete($path, $optParams = [])
+ {
+ $params = ['path' => $path];
+ $params = \array_merge($params, $optParams);
+ return $this->call('delete', [$params]);
+ }
+ /**
+ * List all entities in a GTM Folder. (folders.entities)
+ *
+ * @param string $path GTM Folder's API relative path. Example: accounts/{accoun
+ * t_id}/containers/{container_id}/workspaces/{workspace_id}/folders/{folder_id}
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string pageToken Continuation token for fetching the next page of
+ * results.
+ * @return FolderEntities
+ */
+ public function entities($path, $optParams = [])
+ {
+ $params = ['path' => $path];
+ $params = \array_merge($params, $optParams);
+ return $this->call('entities', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\FolderEntities::class);
+ }
+ /**
+ * Gets a GTM Folder. (folders.get)
+ *
+ * @param string $path GTM Folder's API relative path. Example: accounts/{accoun
+ * t_id}/containers/{container_id}/workspaces/{workspace_id}/folders/{folder_id}
+ * @param array $optParams Optional parameters.
+ * @return Folder
+ */
+ public function get($path, $optParams = [])
+ {
+ $params = ['path' => $path];
+ $params = \array_merge($params, $optParams);
+ return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Folder::class);
+ }
+ /**
+ * Lists all GTM Folders of a Container.
+ * (folders.listAccountsContainersWorkspacesFolders)
+ *
+ * @param string $parent GTM Workspace's API relative path. Example:
+ * accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id}
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string pageToken Continuation token for fetching the next page of
+ * results.
+ * @return ListFoldersResponse
+ */
+ public function listAccountsContainersWorkspacesFolders($parent, $optParams = [])
+ {
+ $params = ['parent' => $parent];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\ListFoldersResponse::class);
+ }
+ /**
+ * Moves entities to a GTM Folder. (folders.move_entities_to_folder)
+ *
+ * @param string $path GTM Folder's API relative path. Example: accounts/{accoun
+ * t_id}/containers/{container_id}/workspaces/{workspace_id}/folders/{folder_id}
+ * @param Folder $postBody
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string tagId The tags to be moved to the folder.
+ * @opt_param string triggerId The triggers to be moved to the folder.
+ * @opt_param string variableId The variables to be moved to the folder.
+ */
+ public function move_entities_to_folder($path, \Google\Site_Kit_Dependencies\Google\Service\TagManager\Folder $postBody, $optParams = [])
+ {
+ $params = ['path' => $path, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('move_entities_to_folder', [$params]);
+ }
+ /**
+ * Reverts changes to a GTM Folder in a GTM Workspace. (folders.revert)
+ *
+ * @param string $path GTM Folder's API relative path. Example: accounts/{accoun
+ * t_id}/containers/{container_id}/workspaces/{workspace_id}/folders/{folder_id}
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string fingerprint When provided, this fingerprint must match the
+ * fingerprint of the tag in storage.
+ * @return RevertFolderResponse
+ */
+ public function revert($path, $optParams = [])
+ {
+ $params = ['path' => $path];
+ $params = \array_merge($params, $optParams);
+ return $this->call('revert', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\RevertFolderResponse::class);
+ }
+ /**
+ * Updates a GTM Folder. (folders.update)
+ *
+ * @param string $path GTM Folder's API relative path. Example: accounts/{accoun
+ * t_id}/containers/{container_id}/workspaces/{workspace_id}/folders/{folder_id}
+ * @param Folder $postBody
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string fingerprint When provided, this fingerprint must match the
+ * fingerprint of the folder in storage.
+ * @return Folder
+ */
+ public function update($path, \Google\Site_Kit_Dependencies\Google\Service\TagManager\Folder $postBody, $optParams = [])
+ {
+ $params = ['path' => $path, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('update', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Folder::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsContainersWorkspacesFolders::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Resource_AccountsContainersWorkspacesFolders');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesGtagConfig.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesGtagConfig.php
new file mode 100644
index 000000000..d9c9b1061
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesGtagConfig.php
@@ -0,0 +1,115 @@
+
+ * $tagmanagerService = new Google\Service\TagManager(...);
+ * $gtag_config = $tagmanagerService->gtag_config;
+ *
+ */
+class AccountsContainersWorkspacesGtagConfig extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Creates a Google tag config. (gtag_config.create)
+ *
+ * @param string $parent Workspace's API relative path. Example:
+ * accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id}
+ * @param GtagConfig $postBody
+ * @param array $optParams Optional parameters.
+ * @return GtagConfig
+ */
+ public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\TagManager\GtagConfig $postBody, $optParams = [])
+ {
+ $params = ['parent' => $parent, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\GtagConfig::class);
+ }
+ /**
+ * Deletes a Google tag config. (gtag_config.delete)
+ *
+ * @param string $path Google tag config's API relative path. Example: accounts/
+ * {account_id}/containers/{container_id}/workspaces/{workspace_id}/gtag_config/
+ * {gtag_config_id}
+ * @param array $optParams Optional parameters.
+ */
+ public function delete($path, $optParams = [])
+ {
+ $params = ['path' => $path];
+ $params = \array_merge($params, $optParams);
+ return $this->call('delete', [$params]);
+ }
+ /**
+ * Gets a Google tag config. (gtag_config.get)
+ *
+ * @param string $path Google tag config's API relative path. Example: accounts/
+ * {account_id}/containers/{container_id}/workspaces/{workspace_id}/gtag_config/
+ * {gtag_config_id}
+ * @param array $optParams Optional parameters.
+ * @return GtagConfig
+ */
+ public function get($path, $optParams = [])
+ {
+ $params = ['path' => $path];
+ $params = \array_merge($params, $optParams);
+ return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\GtagConfig::class);
+ }
+ /**
+ * Lists all Google tag configs in a Container.
+ * (gtag_config.listAccountsContainersWorkspacesGtagConfig)
+ *
+ * @param string $parent Workspace's API relative path. Example:
+ * accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id}
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string pageToken Continuation token for fetching the next page of
+ * results.
+ * @return ListGtagConfigResponse
+ */
+ public function listAccountsContainersWorkspacesGtagConfig($parent, $optParams = [])
+ {
+ $params = ['parent' => $parent];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\ListGtagConfigResponse::class);
+ }
+ /**
+ * Updates a Google tag config. (gtag_config.update)
+ *
+ * @param string $path Google tag config's API relative path. Example: accounts/
+ * {account_id}/containers/{container_id}/workspaces/{workspace_id}/gtag_config/
+ * {gtag_config_id}
+ * @param GtagConfig $postBody
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string fingerprint When provided, this fingerprint must match the
+ * fingerprint of the config in storage.
+ * @return GtagConfig
+ */
+ public function update($path, \Google\Site_Kit_Dependencies\Google\Service\TagManager\GtagConfig $postBody, $optParams = [])
+ {
+ $params = ['path' => $path, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('update', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\GtagConfig::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsContainersWorkspacesGtagConfig::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Resource_AccountsContainersWorkspacesGtagConfig');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesTags.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesTags.php
new file mode 100644
index 000000000..3e021c24e
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesTags.php
@@ -0,0 +1,130 @@
+
+ * $tagmanagerService = new Google\Service\TagManager(...);
+ * $tags = $tagmanagerService->tags;
+ *
+ */
+class AccountsContainersWorkspacesTags extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Creates a GTM Tag. (tags.create)
+ *
+ * @param string $parent GTM Workspace's API relative path. Example:
+ * accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id}
+ * @param Tag $postBody
+ * @param array $optParams Optional parameters.
+ * @return Tag
+ */
+ public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\TagManager\Tag $postBody, $optParams = [])
+ {
+ $params = ['parent' => $parent, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Tag::class);
+ }
+ /**
+ * Deletes a GTM Tag. (tags.delete)
+ *
+ * @param string $path GTM Tag's API relative path. Example: accounts/{account_i
+ * d}/containers/{container_id}/workspaces/{workspace_id}/tags/{tag_id}
+ * @param array $optParams Optional parameters.
+ */
+ public function delete($path, $optParams = [])
+ {
+ $params = ['path' => $path];
+ $params = \array_merge($params, $optParams);
+ return $this->call('delete', [$params]);
+ }
+ /**
+ * Gets a GTM Tag. (tags.get)
+ *
+ * @param string $path GTM Tag's API relative path. Example: accounts/{account_i
+ * d}/containers/{container_id}/workspaces/{workspace_id}/tags/{tag_id}
+ * @param array $optParams Optional parameters.
+ * @return Tag
+ */
+ public function get($path, $optParams = [])
+ {
+ $params = ['path' => $path];
+ $params = \array_merge($params, $optParams);
+ return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Tag::class);
+ }
+ /**
+ * Lists all GTM Tags of a Container.
+ * (tags.listAccountsContainersWorkspacesTags)
+ *
+ * @param string $parent GTM Workspace's API relative path. Example:
+ * accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id}
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string pageToken Continuation token for fetching the next page of
+ * results.
+ * @return ListTagsResponse
+ */
+ public function listAccountsContainersWorkspacesTags($parent, $optParams = [])
+ {
+ $params = ['parent' => $parent];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\ListTagsResponse::class);
+ }
+ /**
+ * Reverts changes to a GTM Tag in a GTM Workspace. (tags.revert)
+ *
+ * @param string $path GTM Tag's API relative path. Example: accounts/{account_i
+ * d}/containers/{container_id}/workspaces/{workspace_id}/tags/{tag_id}
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string fingerprint When provided, this fingerprint must match the
+ * fingerprint of thetag in storage.
+ * @return RevertTagResponse
+ */
+ public function revert($path, $optParams = [])
+ {
+ $params = ['path' => $path];
+ $params = \array_merge($params, $optParams);
+ return $this->call('revert', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\RevertTagResponse::class);
+ }
+ /**
+ * Updates a GTM Tag. (tags.update)
+ *
+ * @param string $path GTM Tag's API relative path. Example: accounts/{account_i
+ * d}/containers/{container_id}/workspaces/{workspace_id}/tags/{tag_id}
+ * @param Tag $postBody
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string fingerprint When provided, this fingerprint must match the
+ * fingerprint of the tag in storage.
+ * @return Tag
+ */
+ public function update($path, \Google\Site_Kit_Dependencies\Google\Service\TagManager\Tag $postBody, $optParams = [])
+ {
+ $params = ['path' => $path, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('update', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Tag::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsContainersWorkspacesTags::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Resource_AccountsContainersWorkspacesTags');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesTemplates.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesTemplates.php
new file mode 100644
index 000000000..2764fb976
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesTemplates.php
@@ -0,0 +1,134 @@
+
+ * $tagmanagerService = new Google\Service\TagManager(...);
+ * $templates = $tagmanagerService->templates;
+ *
+ */
+class AccountsContainersWorkspacesTemplates extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Creates a GTM Custom Template. (templates.create)
+ *
+ * @param string $parent GTM Workspace's API relative path. Example:
+ * accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id}
+ * @param CustomTemplate $postBody
+ * @param array $optParams Optional parameters.
+ * @return CustomTemplate
+ */
+ public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\TagManager\CustomTemplate $postBody, $optParams = [])
+ {
+ $params = ['parent' => $parent, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\CustomTemplate::class);
+ }
+ /**
+ * Deletes a GTM Template. (templates.delete)
+ *
+ * @param string $path GTM Custom Template's API relative path. Example: account
+ * s/{account_id}/containers/{container_id}/workspaces/{workspace_id}/templates/
+ * {template_id}
+ * @param array $optParams Optional parameters.
+ */
+ public function delete($path, $optParams = [])
+ {
+ $params = ['path' => $path];
+ $params = \array_merge($params, $optParams);
+ return $this->call('delete', [$params]);
+ }
+ /**
+ * Gets a GTM Template. (templates.get)
+ *
+ * @param string $path GTM Custom Template's API relative path. Example: account
+ * s/{account_id}/containers/{container_id}/workspaces/{workspace_id}/templates/
+ * {template_id}
+ * @param array $optParams Optional parameters.
+ * @return CustomTemplate
+ */
+ public function get($path, $optParams = [])
+ {
+ $params = ['path' => $path];
+ $params = \array_merge($params, $optParams);
+ return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\CustomTemplate::class);
+ }
+ /**
+ * Lists all GTM Templates of a GTM container workspace.
+ * (templates.listAccountsContainersWorkspacesTemplates)
+ *
+ * @param string $parent GTM Workspace's API relative path. Example:
+ * accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id}
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string pageToken Continuation token for fetching the next page of
+ * results.
+ * @return ListTemplatesResponse
+ */
+ public function listAccountsContainersWorkspacesTemplates($parent, $optParams = [])
+ {
+ $params = ['parent' => $parent];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\ListTemplatesResponse::class);
+ }
+ /**
+ * Reverts changes to a GTM Template in a GTM Workspace. (templates.revert)
+ *
+ * @param string $path GTM Custom Template's API relative path. Example: account
+ * s/{account_id}/containers/{container_id}/workspaces/{workspace_id}/templates/
+ * {template_id}
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string fingerprint When provided, this fingerprint must match the
+ * fingerprint of the template in storage.
+ * @return RevertTemplateResponse
+ */
+ public function revert($path, $optParams = [])
+ {
+ $params = ['path' => $path];
+ $params = \array_merge($params, $optParams);
+ return $this->call('revert', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\RevertTemplateResponse::class);
+ }
+ /**
+ * Updates a GTM Template. (templates.update)
+ *
+ * @param string $path GTM Custom Template's API relative path. Example: account
+ * s/{account_id}/containers/{container_id}/workspaces/{workspace_id}/templates/
+ * {template_id}
+ * @param CustomTemplate $postBody
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string fingerprint When provided, this fingerprint must match the
+ * fingerprint of the templates in storage.
+ * @return CustomTemplate
+ */
+ public function update($path, \Google\Site_Kit_Dependencies\Google\Service\TagManager\CustomTemplate $postBody, $optParams = [])
+ {
+ $params = ['path' => $path, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('update', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\CustomTemplate::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsContainersWorkspacesTemplates::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Resource_AccountsContainersWorkspacesTemplates');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesTriggers.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesTriggers.php
new file mode 100644
index 000000000..91309710f
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesTriggers.php
@@ -0,0 +1,134 @@
+
+ * $tagmanagerService = new Google\Service\TagManager(...);
+ * $triggers = $tagmanagerService->triggers;
+ *
+ */
+class AccountsContainersWorkspacesTriggers extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Creates a GTM Trigger. (triggers.create)
+ *
+ * @param string $parent GTM Workspace's API relative path. Example:
+ * accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id}
+ * @param Trigger $postBody
+ * @param array $optParams Optional parameters.
+ * @return Trigger
+ */
+ public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\TagManager\Trigger $postBody, $optParams = [])
+ {
+ $params = ['parent' => $parent, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Trigger::class);
+ }
+ /**
+ * Deletes a GTM Trigger. (triggers.delete)
+ *
+ * @param string $path GTM Trigger's API relative path. Example: accounts/{accou
+ * nt_id}/containers/{container_id}/workspaces/{workspace_id}/triggers/{trigger_
+ * id}
+ * @param array $optParams Optional parameters.
+ */
+ public function delete($path, $optParams = [])
+ {
+ $params = ['path' => $path];
+ $params = \array_merge($params, $optParams);
+ return $this->call('delete', [$params]);
+ }
+ /**
+ * Gets a GTM Trigger. (triggers.get)
+ *
+ * @param string $path GTM Trigger's API relative path. Example: accounts/{accou
+ * nt_id}/containers/{container_id}/workspaces/{workspace_id}/triggers/{trigger_
+ * id}
+ * @param array $optParams Optional parameters.
+ * @return Trigger
+ */
+ public function get($path, $optParams = [])
+ {
+ $params = ['path' => $path];
+ $params = \array_merge($params, $optParams);
+ return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Trigger::class);
+ }
+ /**
+ * Lists all GTM Triggers of a Container.
+ * (triggers.listAccountsContainersWorkspacesTriggers)
+ *
+ * @param string $parent GTM Workspace's API relative path. Example:
+ * accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id}
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string pageToken Continuation token for fetching the next page of
+ * results.
+ * @return ListTriggersResponse
+ */
+ public function listAccountsContainersWorkspacesTriggers($parent, $optParams = [])
+ {
+ $params = ['parent' => $parent];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\ListTriggersResponse::class);
+ }
+ /**
+ * Reverts changes to a GTM Trigger in a GTM Workspace. (triggers.revert)
+ *
+ * @param string $path GTM Trigger's API relative path. Example: accounts/{accou
+ * nt_id}/containers/{container_id}/workspaces/{workspace_id}/triggers/{trigger_
+ * id}
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string fingerprint When provided, this fingerprint must match the
+ * fingerprint of the trigger in storage.
+ * @return RevertTriggerResponse
+ */
+ public function revert($path, $optParams = [])
+ {
+ $params = ['path' => $path];
+ $params = \array_merge($params, $optParams);
+ return $this->call('revert', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\RevertTriggerResponse::class);
+ }
+ /**
+ * Updates a GTM Trigger. (triggers.update)
+ *
+ * @param string $path GTM Trigger's API relative path. Example: accounts/{accou
+ * nt_id}/containers/{container_id}/workspaces/{workspace_id}/triggers/{trigger_
+ * id}
+ * @param Trigger $postBody
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string fingerprint When provided, this fingerprint must match the
+ * fingerprint of the trigger in storage.
+ * @return Trigger
+ */
+ public function update($path, \Google\Site_Kit_Dependencies\Google\Service\TagManager\Trigger $postBody, $optParams = [])
+ {
+ $params = ['path' => $path, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('update', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Trigger::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsContainersWorkspacesTriggers::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Resource_AccountsContainersWorkspacesTriggers');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesVariables.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesVariables.php
new file mode 100644
index 000000000..f018f43bf
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesVariables.php
@@ -0,0 +1,134 @@
+
+ * $tagmanagerService = new Google\Service\TagManager(...);
+ * $variables = $tagmanagerService->variables;
+ *
+ */
+class AccountsContainersWorkspacesVariables extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Creates a GTM Variable. (variables.create)
+ *
+ * @param string $parent GTM Workspace's API relative path. Example:
+ * accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id}
+ * @param Variable $postBody
+ * @param array $optParams Optional parameters.
+ * @return Variable
+ */
+ public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\TagManager\Variable $postBody, $optParams = [])
+ {
+ $params = ['parent' => $parent, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Variable::class);
+ }
+ /**
+ * Deletes a GTM Variable. (variables.delete)
+ *
+ * @param string $path GTM Variable's API relative path. Example: accounts/{acco
+ * unt_id}/containers/{container_id}/workspaces/{workspace_id}/variables/{variab
+ * le_id}
+ * @param array $optParams Optional parameters.
+ */
+ public function delete($path, $optParams = [])
+ {
+ $params = ['path' => $path];
+ $params = \array_merge($params, $optParams);
+ return $this->call('delete', [$params]);
+ }
+ /**
+ * Gets a GTM Variable. (variables.get)
+ *
+ * @param string $path GTM Variable's API relative path. Example: accounts/{acco
+ * unt_id}/containers/{container_id}/workspaces/{workspace_id}/variables/{variab
+ * le_id}
+ * @param array $optParams Optional parameters.
+ * @return Variable
+ */
+ public function get($path, $optParams = [])
+ {
+ $params = ['path' => $path];
+ $params = \array_merge($params, $optParams);
+ return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Variable::class);
+ }
+ /**
+ * Lists all GTM Variables of a Container.
+ * (variables.listAccountsContainersWorkspacesVariables)
+ *
+ * @param string $parent GTM Workspace's API relative path. Example:
+ * accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id}
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string pageToken Continuation token for fetching the next page of
+ * results.
+ * @return ListVariablesResponse
+ */
+ public function listAccountsContainersWorkspacesVariables($parent, $optParams = [])
+ {
+ $params = ['parent' => $parent];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\ListVariablesResponse::class);
+ }
+ /**
+ * Reverts changes to a GTM Variable in a GTM Workspace. (variables.revert)
+ *
+ * @param string $path GTM Variable's API relative path. Example: accounts/{acco
+ * unt_id}/containers/{container_id}/workspaces/{workspace_id}/variables/{variab
+ * le_id}
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string fingerprint When provided, this fingerprint must match the
+ * fingerprint of the variable in storage.
+ * @return RevertVariableResponse
+ */
+ public function revert($path, $optParams = [])
+ {
+ $params = ['path' => $path];
+ $params = \array_merge($params, $optParams);
+ return $this->call('revert', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\RevertVariableResponse::class);
+ }
+ /**
+ * Updates a GTM Variable. (variables.update)
+ *
+ * @param string $path GTM Variable's API relative path. Example: accounts/{acco
+ * unt_id}/containers/{container_id}/workspaces/{workspace_id}/variables/{variab
+ * le_id}
+ * @param Variable $postBody
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string fingerprint When provided, this fingerprint must match the
+ * fingerprint of the variable in storage.
+ * @return Variable
+ */
+ public function update($path, \Google\Site_Kit_Dependencies\Google\Service\TagManager\Variable $postBody, $optParams = [])
+ {
+ $params = ['path' => $path, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('update', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Variable::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsContainersWorkspacesVariables::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Resource_AccountsContainersWorkspacesVariables');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesZones.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesZones.php
new file mode 100644
index 000000000..26631dfdc
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsContainersWorkspacesZones.php
@@ -0,0 +1,130 @@
+
+ * $tagmanagerService = new Google\Service\TagManager(...);
+ * $zones = $tagmanagerService->zones;
+ *
+ */
+class AccountsContainersWorkspacesZones extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Creates a GTM Zone. (zones.create)
+ *
+ * @param string $parent GTM Workspace's API relative path. Example:
+ * accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id}
+ * @param Zone $postBody
+ * @param array $optParams Optional parameters.
+ * @return Zone
+ */
+ public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\TagManager\Zone $postBody, $optParams = [])
+ {
+ $params = ['parent' => $parent, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Zone::class);
+ }
+ /**
+ * Deletes a GTM Zone. (zones.delete)
+ *
+ * @param string $path GTM Zone's API relative path. Example: accounts/{account_
+ * id}/containers/{container_id}/workspaces/{workspace_id}/zones/{zone_id}
+ * @param array $optParams Optional parameters.
+ */
+ public function delete($path, $optParams = [])
+ {
+ $params = ['path' => $path];
+ $params = \array_merge($params, $optParams);
+ return $this->call('delete', [$params]);
+ }
+ /**
+ * Gets a GTM Zone. (zones.get)
+ *
+ * @param string $path GTM Zone's API relative path. Example: accounts/{account_
+ * id}/containers/{container_id}/workspaces/{workspace_id}/zones/{zone_id}
+ * @param array $optParams Optional parameters.
+ * @return Zone
+ */
+ public function get($path, $optParams = [])
+ {
+ $params = ['path' => $path];
+ $params = \array_merge($params, $optParams);
+ return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Zone::class);
+ }
+ /**
+ * Lists all GTM Zones of a GTM container workspace.
+ * (zones.listAccountsContainersWorkspacesZones)
+ *
+ * @param string $parent GTM Workspace's API relative path. Example:
+ * accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id}
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string pageToken Continuation token for fetching the next page of
+ * results.
+ * @return ListZonesResponse
+ */
+ public function listAccountsContainersWorkspacesZones($parent, $optParams = [])
+ {
+ $params = ['parent' => $parent];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\ListZonesResponse::class);
+ }
+ /**
+ * Reverts changes to a GTM Zone in a GTM Workspace. (zones.revert)
+ *
+ * @param string $path GTM Zone's API relative path. Example: accounts/{account_
+ * id}/containers/{container_id}/workspaces/{workspace_id}/zones/{zone_id}
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string fingerprint When provided, this fingerprint must match the
+ * fingerprint of the zone in storage.
+ * @return RevertZoneResponse
+ */
+ public function revert($path, $optParams = [])
+ {
+ $params = ['path' => $path];
+ $params = \array_merge($params, $optParams);
+ return $this->call('revert', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\RevertZoneResponse::class);
+ }
+ /**
+ * Updates a GTM Zone. (zones.update)
+ *
+ * @param string $path GTM Zone's API relative path. Example: accounts/{account_
+ * id}/containers/{container_id}/workspaces/{workspace_id}/zones/{zone_id}
+ * @param Zone $postBody
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string fingerprint When provided, this fingerprint must match the
+ * fingerprint of the zone in storage.
+ * @return Zone
+ */
+ public function update($path, \Google\Site_Kit_Dependencies\Google\Service\TagManager\Zone $postBody, $optParams = [])
+ {
+ $params = ['path' => $path, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('update', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\Zone::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsContainersWorkspacesZones::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Resource_AccountsContainersWorkspacesZones');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsUserPermissions.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsUserPermissions.php
new file mode 100644
index 000000000..29a89df3b
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Resource/AccountsUserPermissions.php
@@ -0,0 +1,111 @@
+
+ * $tagmanagerService = new Google\Service\TagManager(...);
+ * $user_permissions = $tagmanagerService->user_permissions;
+ *
+ */
+class AccountsUserPermissions extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+{
+ /**
+ * Creates a user's Account & Container access. (user_permissions.create)
+ *
+ * @param string $parent GTM Account's API relative path. Example:
+ * accounts/{account_id}
+ * @param UserPermission $postBody
+ * @param array $optParams Optional parameters.
+ * @return UserPermission
+ */
+ public function create($parent, \Google\Site_Kit_Dependencies\Google\Service\TagManager\UserPermission $postBody, $optParams = [])
+ {
+ $params = ['parent' => $parent, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('create', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\UserPermission::class);
+ }
+ /**
+ * Removes a user from the account, revoking access to it and all of its
+ * containers. (user_permissions.delete)
+ *
+ * @param string $path GTM UserPermission's API relative path. Example:
+ * accounts/{account_id}/user_permissions/{user_permission_id}
+ * @param array $optParams Optional parameters.
+ */
+ public function delete($path, $optParams = [])
+ {
+ $params = ['path' => $path];
+ $params = \array_merge($params, $optParams);
+ return $this->call('delete', [$params]);
+ }
+ /**
+ * Gets a user's Account & Container access. (user_permissions.get)
+ *
+ * @param string $path GTM UserPermission's API relative path. Example:
+ * accounts/{account_id}/user_permissions/{user_permission_id}
+ * @param array $optParams Optional parameters.
+ * @return UserPermission
+ */
+ public function get($path, $optParams = [])
+ {
+ $params = ['path' => $path];
+ $params = \array_merge($params, $optParams);
+ return $this->call('get', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\UserPermission::class);
+ }
+ /**
+ * List all users that have access to the account along with Account and
+ * Container user access granted to each of them.
+ * (user_permissions.listAccountsUserPermissions)
+ *
+ * @param string $parent GTM Account's API relative path. Example:
+ * accounts/{account_id}
+ * @param array $optParams Optional parameters.
+ *
+ * @opt_param string pageToken Continuation token for fetching the next page of
+ * results.
+ * @return ListUserPermissionsResponse
+ */
+ public function listAccountsUserPermissions($parent, $optParams = [])
+ {
+ $params = ['parent' => $parent];
+ $params = \array_merge($params, $optParams);
+ return $this->call('list', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\ListUserPermissionsResponse::class);
+ }
+ /**
+ * Updates a user's Account & Container access. (user_permissions.update)
+ *
+ * @param string $path GTM UserPermission's API relative path. Example:
+ * accounts/{account_id}/user_permissions/{user_permission_id}
+ * @param UserPermission $postBody
+ * @param array $optParams Optional parameters.
+ * @return UserPermission
+ */
+ public function update($path, \Google\Site_Kit_Dependencies\Google\Service\TagManager\UserPermission $postBody, $optParams = [])
+ {
+ $params = ['path' => $path, 'postBody' => $postBody];
+ $params = \array_merge($params, $optParams);
+ return $this->call('update', [$params], \Google\Site_Kit_Dependencies\Google\Service\TagManager\UserPermission::class);
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Resource\AccountsUserPermissions::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Resource_AccountsUserPermissions');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/RevertBuiltInVariableResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/RevertBuiltInVariableResponse.php
new file mode 100644
index 000000000..9b13cf143
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/RevertBuiltInVariableResponse.php
@@ -0,0 +1,42 @@
+enabled = $enabled;
+ }
+ /**
+ * @return bool
+ */
+ public function getEnabled()
+ {
+ return $this->enabled;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\RevertBuiltInVariableResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_RevertBuiltInVariableResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/RevertClientResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/RevertClientResponse.php
new file mode 100644
index 000000000..810cf503d
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/RevertClientResponse.php
@@ -0,0 +1,40 @@
+client = $client;
+ }
+ /**
+ * @return Client
+ */
+ public function getClient()
+ {
+ return $this->client;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\RevertClientResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_RevertClientResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/RevertFolderResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/RevertFolderResponse.php
new file mode 100644
index 000000000..ecf6e0d37
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/RevertFolderResponse.php
@@ -0,0 +1,40 @@
+folder = $folder;
+ }
+ /**
+ * @return Folder
+ */
+ public function getFolder()
+ {
+ return $this->folder;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\RevertFolderResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_RevertFolderResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/RevertTagResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/RevertTagResponse.php
new file mode 100644
index 000000000..4dfe0da6f
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/RevertTagResponse.php
@@ -0,0 +1,40 @@
+tag = $tag;
+ }
+ /**
+ * @return Tag
+ */
+ public function getTag()
+ {
+ return $this->tag;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\RevertTagResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_RevertTagResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/RevertTemplateResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/RevertTemplateResponse.php
new file mode 100644
index 000000000..709ea4ad3
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/RevertTemplateResponse.php
@@ -0,0 +1,40 @@
+template = $template;
+ }
+ /**
+ * @return CustomTemplate
+ */
+ public function getTemplate()
+ {
+ return $this->template;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\RevertTemplateResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_RevertTemplateResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/RevertTriggerResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/RevertTriggerResponse.php
new file mode 100644
index 000000000..24d7c08bb
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/RevertTriggerResponse.php
@@ -0,0 +1,40 @@
+trigger = $trigger;
+ }
+ /**
+ * @return Trigger
+ */
+ public function getTrigger()
+ {
+ return $this->trigger;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\RevertTriggerResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_RevertTriggerResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/RevertVariableResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/RevertVariableResponse.php
new file mode 100644
index 000000000..56fb45689
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/RevertVariableResponse.php
@@ -0,0 +1,40 @@
+variable = $variable;
+ }
+ /**
+ * @return Variable
+ */
+ public function getVariable()
+ {
+ return $this->variable;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\RevertVariableResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_RevertVariableResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/RevertZoneResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/RevertZoneResponse.php
new file mode 100644
index 000000000..661a88574
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/RevertZoneResponse.php
@@ -0,0 +1,40 @@
+zone = $zone;
+ }
+ /**
+ * @return Zone
+ */
+ public function getZone()
+ {
+ return $this->zone;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\RevertZoneResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_RevertZoneResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/SetupTag.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/SetupTag.php
new file mode 100644
index 000000000..3b2e07352
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/SetupTag.php
@@ -0,0 +1,60 @@
+stopOnSetupFailure = $stopOnSetupFailure;
+ }
+ /**
+ * @return bool
+ */
+ public function getStopOnSetupFailure()
+ {
+ return $this->stopOnSetupFailure;
+ }
+ /**
+ * @param string
+ */
+ public function setTagName($tagName)
+ {
+ $this->tagName = $tagName;
+ }
+ /**
+ * @return string
+ */
+ public function getTagName()
+ {
+ return $this->tagName;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\SetupTag::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_SetupTag');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/SyncStatus.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/SyncStatus.php
new file mode 100644
index 000000000..4c35b140c
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/SyncStatus.php
@@ -0,0 +1,60 @@
+mergeConflict = $mergeConflict;
+ }
+ /**
+ * @return bool
+ */
+ public function getMergeConflict()
+ {
+ return $this->mergeConflict;
+ }
+ /**
+ * @param bool
+ */
+ public function setSyncError($syncError)
+ {
+ $this->syncError = $syncError;
+ }
+ /**
+ * @return bool
+ */
+ public function getSyncError()
+ {
+ return $this->syncError;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\SyncStatus::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_SyncStatus');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/SyncWorkspaceResponse.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/SyncWorkspaceResponse.php
new file mode 100644
index 000000000..f6a27bfcc
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/SyncWorkspaceResponse.php
@@ -0,0 +1,57 @@
+mergeConflict = $mergeConflict;
+ }
+ /**
+ * @return MergeConflict[]
+ */
+ public function getMergeConflict()
+ {
+ return $this->mergeConflict;
+ }
+ /**
+ * @param SyncStatus
+ */
+ public function setSyncStatus(\Google\Site_Kit_Dependencies\Google\Service\TagManager\SyncStatus $syncStatus)
+ {
+ $this->syncStatus = $syncStatus;
+ }
+ /**
+ * @return SyncStatus
+ */
+ public function getSyncStatus()
+ {
+ return $this->syncStatus;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\SyncWorkspaceResponse::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_SyncWorkspaceResponse');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Tag.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Tag.php
new file mode 100644
index 000000000..0eed12701
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Tag.php
@@ -0,0 +1,499 @@
+accountId = $accountId;
+ }
+ /**
+ * @return string
+ */
+ public function getAccountId()
+ {
+ return $this->accountId;
+ }
+ /**
+ * @param string[]
+ */
+ public function setBlockingRuleId($blockingRuleId)
+ {
+ $this->blockingRuleId = $blockingRuleId;
+ }
+ /**
+ * @return string[]
+ */
+ public function getBlockingRuleId()
+ {
+ return $this->blockingRuleId;
+ }
+ /**
+ * @param string[]
+ */
+ public function setBlockingTriggerId($blockingTriggerId)
+ {
+ $this->blockingTriggerId = $blockingTriggerId;
+ }
+ /**
+ * @return string[]
+ */
+ public function getBlockingTriggerId()
+ {
+ return $this->blockingTriggerId;
+ }
+ /**
+ * @param TagConsentSetting
+ */
+ public function setConsentSettings(\Google\Site_Kit_Dependencies\Google\Service\TagManager\TagConsentSetting $consentSettings)
+ {
+ $this->consentSettings = $consentSettings;
+ }
+ /**
+ * @return TagConsentSetting
+ */
+ public function getConsentSettings()
+ {
+ return $this->consentSettings;
+ }
+ /**
+ * @param string
+ */
+ public function setContainerId($containerId)
+ {
+ $this->containerId = $containerId;
+ }
+ /**
+ * @return string
+ */
+ public function getContainerId()
+ {
+ return $this->containerId;
+ }
+ /**
+ * @param string
+ */
+ public function setFingerprint($fingerprint)
+ {
+ $this->fingerprint = $fingerprint;
+ }
+ /**
+ * @return string
+ */
+ public function getFingerprint()
+ {
+ return $this->fingerprint;
+ }
+ /**
+ * @param string[]
+ */
+ public function setFiringRuleId($firingRuleId)
+ {
+ $this->firingRuleId = $firingRuleId;
+ }
+ /**
+ * @return string[]
+ */
+ public function getFiringRuleId()
+ {
+ return $this->firingRuleId;
+ }
+ /**
+ * @param string[]
+ */
+ public function setFiringTriggerId($firingTriggerId)
+ {
+ $this->firingTriggerId = $firingTriggerId;
+ }
+ /**
+ * @return string[]
+ */
+ public function getFiringTriggerId()
+ {
+ return $this->firingTriggerId;
+ }
+ /**
+ * @param bool
+ */
+ public function setLiveOnly($liveOnly)
+ {
+ $this->liveOnly = $liveOnly;
+ }
+ /**
+ * @return bool
+ */
+ public function getLiveOnly()
+ {
+ return $this->liveOnly;
+ }
+ /**
+ * @param Parameter
+ */
+ public function setMonitoringMetadata(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Parameter $monitoringMetadata)
+ {
+ $this->monitoringMetadata = $monitoringMetadata;
+ }
+ /**
+ * @return Parameter
+ */
+ public function getMonitoringMetadata()
+ {
+ return $this->monitoringMetadata;
+ }
+ /**
+ * @param string
+ */
+ public function setMonitoringMetadataTagNameKey($monitoringMetadataTagNameKey)
+ {
+ $this->monitoringMetadataTagNameKey = $monitoringMetadataTagNameKey;
+ }
+ /**
+ * @return string
+ */
+ public function getMonitoringMetadataTagNameKey()
+ {
+ return $this->monitoringMetadataTagNameKey;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param string
+ */
+ public function setNotes($notes)
+ {
+ $this->notes = $notes;
+ }
+ /**
+ * @return string
+ */
+ public function getNotes()
+ {
+ return $this->notes;
+ }
+ /**
+ * @param Parameter[]
+ */
+ public function setParameter($parameter)
+ {
+ $this->parameter = $parameter;
+ }
+ /**
+ * @return Parameter[]
+ */
+ public function getParameter()
+ {
+ return $this->parameter;
+ }
+ /**
+ * @param string
+ */
+ public function setParentFolderId($parentFolderId)
+ {
+ $this->parentFolderId = $parentFolderId;
+ }
+ /**
+ * @return string
+ */
+ public function getParentFolderId()
+ {
+ return $this->parentFolderId;
+ }
+ /**
+ * @param string
+ */
+ public function setPath($path)
+ {
+ $this->path = $path;
+ }
+ /**
+ * @return string
+ */
+ public function getPath()
+ {
+ return $this->path;
+ }
+ /**
+ * @param bool
+ */
+ public function setPaused($paused)
+ {
+ $this->paused = $paused;
+ }
+ /**
+ * @return bool
+ */
+ public function getPaused()
+ {
+ return $this->paused;
+ }
+ /**
+ * @param Parameter
+ */
+ public function setPriority(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Parameter $priority)
+ {
+ $this->priority = $priority;
+ }
+ /**
+ * @return Parameter
+ */
+ public function getPriority()
+ {
+ return $this->priority;
+ }
+ /**
+ * @param string
+ */
+ public function setScheduleEndMs($scheduleEndMs)
+ {
+ $this->scheduleEndMs = $scheduleEndMs;
+ }
+ /**
+ * @return string
+ */
+ public function getScheduleEndMs()
+ {
+ return $this->scheduleEndMs;
+ }
+ /**
+ * @param string
+ */
+ public function setScheduleStartMs($scheduleStartMs)
+ {
+ $this->scheduleStartMs = $scheduleStartMs;
+ }
+ /**
+ * @return string
+ */
+ public function getScheduleStartMs()
+ {
+ return $this->scheduleStartMs;
+ }
+ /**
+ * @param SetupTag[]
+ */
+ public function setSetupTag($setupTag)
+ {
+ $this->setupTag = $setupTag;
+ }
+ /**
+ * @return SetupTag[]
+ */
+ public function getSetupTag()
+ {
+ return $this->setupTag;
+ }
+ /**
+ * @param string
+ */
+ public function setTagFiringOption($tagFiringOption)
+ {
+ $this->tagFiringOption = $tagFiringOption;
+ }
+ /**
+ * @return string
+ */
+ public function getTagFiringOption()
+ {
+ return $this->tagFiringOption;
+ }
+ /**
+ * @param string
+ */
+ public function setTagId($tagId)
+ {
+ $this->tagId = $tagId;
+ }
+ /**
+ * @return string
+ */
+ public function getTagId()
+ {
+ return $this->tagId;
+ }
+ /**
+ * @param string
+ */
+ public function setTagManagerUrl($tagManagerUrl)
+ {
+ $this->tagManagerUrl = $tagManagerUrl;
+ }
+ /**
+ * @return string
+ */
+ public function getTagManagerUrl()
+ {
+ return $this->tagManagerUrl;
+ }
+ /**
+ * @param TeardownTag[]
+ */
+ public function setTeardownTag($teardownTag)
+ {
+ $this->teardownTag = $teardownTag;
+ }
+ /**
+ * @return TeardownTag[]
+ */
+ public function getTeardownTag()
+ {
+ return $this->teardownTag;
+ }
+ /**
+ * @param string
+ */
+ public function setType($type)
+ {
+ $this->type = $type;
+ }
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+ /**
+ * @param string
+ */
+ public function setWorkspaceId($workspaceId)
+ {
+ $this->workspaceId = $workspaceId;
+ }
+ /**
+ * @return string
+ */
+ public function getWorkspaceId()
+ {
+ return $this->workspaceId;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Tag::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Tag');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/TagConsentSetting.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/TagConsentSetting.php
new file mode 100644
index 000000000..629984bc4
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/TagConsentSetting.php
@@ -0,0 +1,58 @@
+consentStatus = $consentStatus;
+ }
+ /**
+ * @return string
+ */
+ public function getConsentStatus()
+ {
+ return $this->consentStatus;
+ }
+ /**
+ * @param Parameter
+ */
+ public function setConsentType(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Parameter $consentType)
+ {
+ $this->consentType = $consentType;
+ }
+ /**
+ * @return Parameter
+ */
+ public function getConsentType()
+ {
+ return $this->consentType;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\TagConsentSetting::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_TagConsentSetting');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/TeardownTag.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/TeardownTag.php
new file mode 100644
index 000000000..ad5427716
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/TeardownTag.php
@@ -0,0 +1,60 @@
+stopTeardownOnFailure = $stopTeardownOnFailure;
+ }
+ /**
+ * @return bool
+ */
+ public function getStopTeardownOnFailure()
+ {
+ return $this->stopTeardownOnFailure;
+ }
+ /**
+ * @param string
+ */
+ public function setTagName($tagName)
+ {
+ $this->tagName = $tagName;
+ }
+ /**
+ * @return string
+ */
+ public function getTagName()
+ {
+ return $this->tagName;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\TeardownTag::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_TeardownTag');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Trigger.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Trigger.php
new file mode 100644
index 000000000..192648509
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Trigger.php
@@ -0,0 +1,559 @@
+accountId = $accountId;
+ }
+ /**
+ * @return string
+ */
+ public function getAccountId()
+ {
+ return $this->accountId;
+ }
+ /**
+ * @param Condition[]
+ */
+ public function setAutoEventFilter($autoEventFilter)
+ {
+ $this->autoEventFilter = $autoEventFilter;
+ }
+ /**
+ * @return Condition[]
+ */
+ public function getAutoEventFilter()
+ {
+ return $this->autoEventFilter;
+ }
+ /**
+ * @param Parameter
+ */
+ public function setCheckValidation(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Parameter $checkValidation)
+ {
+ $this->checkValidation = $checkValidation;
+ }
+ /**
+ * @return Parameter
+ */
+ public function getCheckValidation()
+ {
+ return $this->checkValidation;
+ }
+ /**
+ * @param string
+ */
+ public function setContainerId($containerId)
+ {
+ $this->containerId = $containerId;
+ }
+ /**
+ * @return string
+ */
+ public function getContainerId()
+ {
+ return $this->containerId;
+ }
+ /**
+ * @param Parameter
+ */
+ public function setContinuousTimeMinMilliseconds(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Parameter $continuousTimeMinMilliseconds)
+ {
+ $this->continuousTimeMinMilliseconds = $continuousTimeMinMilliseconds;
+ }
+ /**
+ * @return Parameter
+ */
+ public function getContinuousTimeMinMilliseconds()
+ {
+ return $this->continuousTimeMinMilliseconds;
+ }
+ /**
+ * @param Condition[]
+ */
+ public function setCustomEventFilter($customEventFilter)
+ {
+ $this->customEventFilter = $customEventFilter;
+ }
+ /**
+ * @return Condition[]
+ */
+ public function getCustomEventFilter()
+ {
+ return $this->customEventFilter;
+ }
+ /**
+ * @param Parameter
+ */
+ public function setEventName(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Parameter $eventName)
+ {
+ $this->eventName = $eventName;
+ }
+ /**
+ * @return Parameter
+ */
+ public function getEventName()
+ {
+ return $this->eventName;
+ }
+ /**
+ * @param Condition[]
+ */
+ public function setFilter($filter)
+ {
+ $this->filter = $filter;
+ }
+ /**
+ * @return Condition[]
+ */
+ public function getFilter()
+ {
+ return $this->filter;
+ }
+ /**
+ * @param string
+ */
+ public function setFingerprint($fingerprint)
+ {
+ $this->fingerprint = $fingerprint;
+ }
+ /**
+ * @return string
+ */
+ public function getFingerprint()
+ {
+ return $this->fingerprint;
+ }
+ /**
+ * @param Parameter
+ */
+ public function setHorizontalScrollPercentageList(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Parameter $horizontalScrollPercentageList)
+ {
+ $this->horizontalScrollPercentageList = $horizontalScrollPercentageList;
+ }
+ /**
+ * @return Parameter
+ */
+ public function getHorizontalScrollPercentageList()
+ {
+ return $this->horizontalScrollPercentageList;
+ }
+ /**
+ * @param Parameter
+ */
+ public function setInterval(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Parameter $interval)
+ {
+ $this->interval = $interval;
+ }
+ /**
+ * @return Parameter
+ */
+ public function getInterval()
+ {
+ return $this->interval;
+ }
+ /**
+ * @param Parameter
+ */
+ public function setIntervalSeconds(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Parameter $intervalSeconds)
+ {
+ $this->intervalSeconds = $intervalSeconds;
+ }
+ /**
+ * @return Parameter
+ */
+ public function getIntervalSeconds()
+ {
+ return $this->intervalSeconds;
+ }
+ /**
+ * @param Parameter
+ */
+ public function setLimit(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Parameter $limit)
+ {
+ $this->limit = $limit;
+ }
+ /**
+ * @return Parameter
+ */
+ public function getLimit()
+ {
+ return $this->limit;
+ }
+ /**
+ * @param Parameter
+ */
+ public function setMaxTimerLengthSeconds(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Parameter $maxTimerLengthSeconds)
+ {
+ $this->maxTimerLengthSeconds = $maxTimerLengthSeconds;
+ }
+ /**
+ * @return Parameter
+ */
+ public function getMaxTimerLengthSeconds()
+ {
+ return $this->maxTimerLengthSeconds;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param string
+ */
+ public function setNotes($notes)
+ {
+ $this->notes = $notes;
+ }
+ /**
+ * @return string
+ */
+ public function getNotes()
+ {
+ return $this->notes;
+ }
+ /**
+ * @param Parameter[]
+ */
+ public function setParameter($parameter)
+ {
+ $this->parameter = $parameter;
+ }
+ /**
+ * @return Parameter[]
+ */
+ public function getParameter()
+ {
+ return $this->parameter;
+ }
+ /**
+ * @param string
+ */
+ public function setParentFolderId($parentFolderId)
+ {
+ $this->parentFolderId = $parentFolderId;
+ }
+ /**
+ * @return string
+ */
+ public function getParentFolderId()
+ {
+ return $this->parentFolderId;
+ }
+ /**
+ * @param string
+ */
+ public function setPath($path)
+ {
+ $this->path = $path;
+ }
+ /**
+ * @return string
+ */
+ public function getPath()
+ {
+ return $this->path;
+ }
+ /**
+ * @param Parameter
+ */
+ public function setSelector(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Parameter $selector)
+ {
+ $this->selector = $selector;
+ }
+ /**
+ * @return Parameter
+ */
+ public function getSelector()
+ {
+ return $this->selector;
+ }
+ /**
+ * @param string
+ */
+ public function setTagManagerUrl($tagManagerUrl)
+ {
+ $this->tagManagerUrl = $tagManagerUrl;
+ }
+ /**
+ * @return string
+ */
+ public function getTagManagerUrl()
+ {
+ return $this->tagManagerUrl;
+ }
+ /**
+ * @param Parameter
+ */
+ public function setTotalTimeMinMilliseconds(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Parameter $totalTimeMinMilliseconds)
+ {
+ $this->totalTimeMinMilliseconds = $totalTimeMinMilliseconds;
+ }
+ /**
+ * @return Parameter
+ */
+ public function getTotalTimeMinMilliseconds()
+ {
+ return $this->totalTimeMinMilliseconds;
+ }
+ /**
+ * @param string
+ */
+ public function setTriggerId($triggerId)
+ {
+ $this->triggerId = $triggerId;
+ }
+ /**
+ * @return string
+ */
+ public function getTriggerId()
+ {
+ return $this->triggerId;
+ }
+ /**
+ * @param string
+ */
+ public function setType($type)
+ {
+ $this->type = $type;
+ }
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+ /**
+ * @param Parameter
+ */
+ public function setUniqueTriggerId(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Parameter $uniqueTriggerId)
+ {
+ $this->uniqueTriggerId = $uniqueTriggerId;
+ }
+ /**
+ * @return Parameter
+ */
+ public function getUniqueTriggerId()
+ {
+ return $this->uniqueTriggerId;
+ }
+ /**
+ * @param Parameter
+ */
+ public function setVerticalScrollPercentageList(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Parameter $verticalScrollPercentageList)
+ {
+ $this->verticalScrollPercentageList = $verticalScrollPercentageList;
+ }
+ /**
+ * @return Parameter
+ */
+ public function getVerticalScrollPercentageList()
+ {
+ return $this->verticalScrollPercentageList;
+ }
+ /**
+ * @param Parameter
+ */
+ public function setVisibilitySelector(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Parameter $visibilitySelector)
+ {
+ $this->visibilitySelector = $visibilitySelector;
+ }
+ /**
+ * @return Parameter
+ */
+ public function getVisibilitySelector()
+ {
+ return $this->visibilitySelector;
+ }
+ /**
+ * @param Parameter
+ */
+ public function setVisiblePercentageMax(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Parameter $visiblePercentageMax)
+ {
+ $this->visiblePercentageMax = $visiblePercentageMax;
+ }
+ /**
+ * @return Parameter
+ */
+ public function getVisiblePercentageMax()
+ {
+ return $this->visiblePercentageMax;
+ }
+ /**
+ * @param Parameter
+ */
+ public function setVisiblePercentageMin(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Parameter $visiblePercentageMin)
+ {
+ $this->visiblePercentageMin = $visiblePercentageMin;
+ }
+ /**
+ * @return Parameter
+ */
+ public function getVisiblePercentageMin()
+ {
+ return $this->visiblePercentageMin;
+ }
+ /**
+ * @param Parameter
+ */
+ public function setWaitForTags(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Parameter $waitForTags)
+ {
+ $this->waitForTags = $waitForTags;
+ }
+ /**
+ * @return Parameter
+ */
+ public function getWaitForTags()
+ {
+ return $this->waitForTags;
+ }
+ /**
+ * @param Parameter
+ */
+ public function setWaitForTagsTimeout(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Parameter $waitForTagsTimeout)
+ {
+ $this->waitForTagsTimeout = $waitForTagsTimeout;
+ }
+ /**
+ * @return Parameter
+ */
+ public function getWaitForTagsTimeout()
+ {
+ return $this->waitForTagsTimeout;
+ }
+ /**
+ * @param string
+ */
+ public function setWorkspaceId($workspaceId)
+ {
+ $this->workspaceId = $workspaceId;
+ }
+ /**
+ * @return string
+ */
+ public function getWorkspaceId()
+ {
+ return $this->workspaceId;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Trigger::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Trigger');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/UserPermission.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/UserPermission.php
new file mode 100644
index 000000000..f3370db28
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/UserPermission.php
@@ -0,0 +1,111 @@
+accountAccess = $accountAccess;
+ }
+ /**
+ * @return AccountAccess
+ */
+ public function getAccountAccess()
+ {
+ return $this->accountAccess;
+ }
+ /**
+ * @param string
+ */
+ public function setAccountId($accountId)
+ {
+ $this->accountId = $accountId;
+ }
+ /**
+ * @return string
+ */
+ public function getAccountId()
+ {
+ return $this->accountId;
+ }
+ /**
+ * @param ContainerAccess[]
+ */
+ public function setContainerAccess($containerAccess)
+ {
+ $this->containerAccess = $containerAccess;
+ }
+ /**
+ * @return ContainerAccess[]
+ */
+ public function getContainerAccess()
+ {
+ return $this->containerAccess;
+ }
+ /**
+ * @param string
+ */
+ public function setEmailAddress($emailAddress)
+ {
+ $this->emailAddress = $emailAddress;
+ }
+ /**
+ * @return string
+ */
+ public function getEmailAddress()
+ {
+ return $this->emailAddress;
+ }
+ /**
+ * @param string
+ */
+ public function setPath($path)
+ {
+ $this->path = $path;
+ }
+ /**
+ * @return string
+ */
+ public function getPath()
+ {
+ return $this->path;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\UserPermission::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_UserPermission');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Variable.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Variable.php
new file mode 100644
index 000000000..f266de4ac
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Variable.php
@@ -0,0 +1,327 @@
+accountId = $accountId;
+ }
+ /**
+ * @return string
+ */
+ public function getAccountId()
+ {
+ return $this->accountId;
+ }
+ /**
+ * @param string
+ */
+ public function setContainerId($containerId)
+ {
+ $this->containerId = $containerId;
+ }
+ /**
+ * @return string
+ */
+ public function getContainerId()
+ {
+ return $this->containerId;
+ }
+ /**
+ * @param string[]
+ */
+ public function setDisablingTriggerId($disablingTriggerId)
+ {
+ $this->disablingTriggerId = $disablingTriggerId;
+ }
+ /**
+ * @return string[]
+ */
+ public function getDisablingTriggerId()
+ {
+ return $this->disablingTriggerId;
+ }
+ /**
+ * @param string[]
+ */
+ public function setEnablingTriggerId($enablingTriggerId)
+ {
+ $this->enablingTriggerId = $enablingTriggerId;
+ }
+ /**
+ * @return string[]
+ */
+ public function getEnablingTriggerId()
+ {
+ return $this->enablingTriggerId;
+ }
+ /**
+ * @param string
+ */
+ public function setFingerprint($fingerprint)
+ {
+ $this->fingerprint = $fingerprint;
+ }
+ /**
+ * @return string
+ */
+ public function getFingerprint()
+ {
+ return $this->fingerprint;
+ }
+ /**
+ * @param VariableFormatValue
+ */
+ public function setFormatValue(\Google\Site_Kit_Dependencies\Google\Service\TagManager\VariableFormatValue $formatValue)
+ {
+ $this->formatValue = $formatValue;
+ }
+ /**
+ * @return VariableFormatValue
+ */
+ public function getFormatValue()
+ {
+ return $this->formatValue;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param string
+ */
+ public function setNotes($notes)
+ {
+ $this->notes = $notes;
+ }
+ /**
+ * @return string
+ */
+ public function getNotes()
+ {
+ return $this->notes;
+ }
+ /**
+ * @param Parameter[]
+ */
+ public function setParameter($parameter)
+ {
+ $this->parameter = $parameter;
+ }
+ /**
+ * @return Parameter[]
+ */
+ public function getParameter()
+ {
+ return $this->parameter;
+ }
+ /**
+ * @param string
+ */
+ public function setParentFolderId($parentFolderId)
+ {
+ $this->parentFolderId = $parentFolderId;
+ }
+ /**
+ * @return string
+ */
+ public function getParentFolderId()
+ {
+ return $this->parentFolderId;
+ }
+ /**
+ * @param string
+ */
+ public function setPath($path)
+ {
+ $this->path = $path;
+ }
+ /**
+ * @return string
+ */
+ public function getPath()
+ {
+ return $this->path;
+ }
+ /**
+ * @param string
+ */
+ public function setScheduleEndMs($scheduleEndMs)
+ {
+ $this->scheduleEndMs = $scheduleEndMs;
+ }
+ /**
+ * @return string
+ */
+ public function getScheduleEndMs()
+ {
+ return $this->scheduleEndMs;
+ }
+ /**
+ * @param string
+ */
+ public function setScheduleStartMs($scheduleStartMs)
+ {
+ $this->scheduleStartMs = $scheduleStartMs;
+ }
+ /**
+ * @return string
+ */
+ public function getScheduleStartMs()
+ {
+ return $this->scheduleStartMs;
+ }
+ /**
+ * @param string
+ */
+ public function setTagManagerUrl($tagManagerUrl)
+ {
+ $this->tagManagerUrl = $tagManagerUrl;
+ }
+ /**
+ * @return string
+ */
+ public function getTagManagerUrl()
+ {
+ return $this->tagManagerUrl;
+ }
+ /**
+ * @param string
+ */
+ public function setType($type)
+ {
+ $this->type = $type;
+ }
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+ /**
+ * @param string
+ */
+ public function setVariableId($variableId)
+ {
+ $this->variableId = $variableId;
+ }
+ /**
+ * @return string
+ */
+ public function getVariableId()
+ {
+ return $this->variableId;
+ }
+ /**
+ * @param string
+ */
+ public function setWorkspaceId($workspaceId)
+ {
+ $this->workspaceId = $workspaceId;
+ }
+ /**
+ * @return string
+ */
+ public function getWorkspaceId()
+ {
+ return $this->workspaceId;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Variable::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Variable');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/VariableFormatValue.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/VariableFormatValue.php
new file mode 100644
index 000000000..f67f17793
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/VariableFormatValue.php
@@ -0,0 +1,106 @@
+caseConversionType = $caseConversionType;
+ }
+ /**
+ * @return string
+ */
+ public function getCaseConversionType()
+ {
+ return $this->caseConversionType;
+ }
+ /**
+ * @param Parameter
+ */
+ public function setConvertFalseToValue(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Parameter $convertFalseToValue)
+ {
+ $this->convertFalseToValue = $convertFalseToValue;
+ }
+ /**
+ * @return Parameter
+ */
+ public function getConvertFalseToValue()
+ {
+ return $this->convertFalseToValue;
+ }
+ /**
+ * @param Parameter
+ */
+ public function setConvertNullToValue(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Parameter $convertNullToValue)
+ {
+ $this->convertNullToValue = $convertNullToValue;
+ }
+ /**
+ * @return Parameter
+ */
+ public function getConvertNullToValue()
+ {
+ return $this->convertNullToValue;
+ }
+ /**
+ * @param Parameter
+ */
+ public function setConvertTrueToValue(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Parameter $convertTrueToValue)
+ {
+ $this->convertTrueToValue = $convertTrueToValue;
+ }
+ /**
+ * @return Parameter
+ */
+ public function getConvertTrueToValue()
+ {
+ return $this->convertTrueToValue;
+ }
+ /**
+ * @param Parameter
+ */
+ public function setConvertUndefinedToValue(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Parameter $convertUndefinedToValue)
+ {
+ $this->convertUndefinedToValue = $convertUndefinedToValue;
+ }
+ /**
+ * @return Parameter
+ */
+ public function getConvertUndefinedToValue()
+ {
+ return $this->convertUndefinedToValue;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\VariableFormatValue::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_VariableFormatValue');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Workspace.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Workspace.php
new file mode 100644
index 000000000..bf52cc680
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Workspace.php
@@ -0,0 +1,168 @@
+accountId = $accountId;
+ }
+ /**
+ * @return string
+ */
+ public function getAccountId()
+ {
+ return $this->accountId;
+ }
+ /**
+ * @param string
+ */
+ public function setContainerId($containerId)
+ {
+ $this->containerId = $containerId;
+ }
+ /**
+ * @return string
+ */
+ public function getContainerId()
+ {
+ return $this->containerId;
+ }
+ /**
+ * @param string
+ */
+ public function setDescription($description)
+ {
+ $this->description = $description;
+ }
+ /**
+ * @return string
+ */
+ public function getDescription()
+ {
+ return $this->description;
+ }
+ /**
+ * @param string
+ */
+ public function setFingerprint($fingerprint)
+ {
+ $this->fingerprint = $fingerprint;
+ }
+ /**
+ * @return string
+ */
+ public function getFingerprint()
+ {
+ return $this->fingerprint;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param string
+ */
+ public function setPath($path)
+ {
+ $this->path = $path;
+ }
+ /**
+ * @return string
+ */
+ public function getPath()
+ {
+ return $this->path;
+ }
+ /**
+ * @param string
+ */
+ public function setTagManagerUrl($tagManagerUrl)
+ {
+ $this->tagManagerUrl = $tagManagerUrl;
+ }
+ /**
+ * @return string
+ */
+ public function getTagManagerUrl()
+ {
+ return $this->tagManagerUrl;
+ }
+ /**
+ * @param string
+ */
+ public function setWorkspaceId($workspaceId)
+ {
+ $this->workspaceId = $workspaceId;
+ }
+ /**
+ * @return string
+ */
+ public function getWorkspaceId()
+ {
+ return $this->workspaceId;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Workspace::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Workspace');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Zone.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Zone.php
new file mode 100644
index 000000000..26f9cf0d6
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/Zone.php
@@ -0,0 +1,235 @@
+accountId = $accountId;
+ }
+ /**
+ * @return string
+ */
+ public function getAccountId()
+ {
+ return $this->accountId;
+ }
+ /**
+ * @param ZoneBoundary
+ */
+ public function setBoundary(\Google\Site_Kit_Dependencies\Google\Service\TagManager\ZoneBoundary $boundary)
+ {
+ $this->boundary = $boundary;
+ }
+ /**
+ * @return ZoneBoundary
+ */
+ public function getBoundary()
+ {
+ return $this->boundary;
+ }
+ /**
+ * @param ZoneChildContainer[]
+ */
+ public function setChildContainer($childContainer)
+ {
+ $this->childContainer = $childContainer;
+ }
+ /**
+ * @return ZoneChildContainer[]
+ */
+ public function getChildContainer()
+ {
+ return $this->childContainer;
+ }
+ /**
+ * @param string
+ */
+ public function setContainerId($containerId)
+ {
+ $this->containerId = $containerId;
+ }
+ /**
+ * @return string
+ */
+ public function getContainerId()
+ {
+ return $this->containerId;
+ }
+ /**
+ * @param string
+ */
+ public function setFingerprint($fingerprint)
+ {
+ $this->fingerprint = $fingerprint;
+ }
+ /**
+ * @return string
+ */
+ public function getFingerprint()
+ {
+ return $this->fingerprint;
+ }
+ /**
+ * @param string
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+ }
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+ /**
+ * @param string
+ */
+ public function setNotes($notes)
+ {
+ $this->notes = $notes;
+ }
+ /**
+ * @return string
+ */
+ public function getNotes()
+ {
+ return $this->notes;
+ }
+ /**
+ * @param string
+ */
+ public function setPath($path)
+ {
+ $this->path = $path;
+ }
+ /**
+ * @return string
+ */
+ public function getPath()
+ {
+ return $this->path;
+ }
+ /**
+ * @param string
+ */
+ public function setTagManagerUrl($tagManagerUrl)
+ {
+ $this->tagManagerUrl = $tagManagerUrl;
+ }
+ /**
+ * @return string
+ */
+ public function getTagManagerUrl()
+ {
+ return $this->tagManagerUrl;
+ }
+ /**
+ * @param ZoneTypeRestriction
+ */
+ public function setTypeRestriction(\Google\Site_Kit_Dependencies\Google\Service\TagManager\ZoneTypeRestriction $typeRestriction)
+ {
+ $this->typeRestriction = $typeRestriction;
+ }
+ /**
+ * @return ZoneTypeRestriction
+ */
+ public function getTypeRestriction()
+ {
+ return $this->typeRestriction;
+ }
+ /**
+ * @param string
+ */
+ public function setWorkspaceId($workspaceId)
+ {
+ $this->workspaceId = $workspaceId;
+ }
+ /**
+ * @return string
+ */
+ public function getWorkspaceId()
+ {
+ return $this->workspaceId;
+ }
+ /**
+ * @param string
+ */
+ public function setZoneId($zoneId)
+ {
+ $this->zoneId = $zoneId;
+ }
+ /**
+ * @return string
+ */
+ public function getZoneId()
+ {
+ return $this->zoneId;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\Zone::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_Zone');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ZoneBoundary.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ZoneBoundary.php
new file mode 100644
index 000000000..d9c425783
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ZoneBoundary.php
@@ -0,0 +1,59 @@
+condition = $condition;
+ }
+ /**
+ * @return Condition[]
+ */
+ public function getCondition()
+ {
+ return $this->condition;
+ }
+ /**
+ * @param string[]
+ */
+ public function setCustomEvaluationTriggerId($customEvaluationTriggerId)
+ {
+ $this->customEvaluationTriggerId = $customEvaluationTriggerId;
+ }
+ /**
+ * @return string[]
+ */
+ public function getCustomEvaluationTriggerId()
+ {
+ return $this->customEvaluationTriggerId;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\ZoneBoundary::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_ZoneBoundary');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ZoneChildContainer.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ZoneChildContainer.php
new file mode 100644
index 000000000..60d9d09c3
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ZoneChildContainer.php
@@ -0,0 +1,60 @@
+nickname = $nickname;
+ }
+ /**
+ * @return string
+ */
+ public function getNickname()
+ {
+ return $this->nickname;
+ }
+ /**
+ * @param string
+ */
+ public function setPublicId($publicId)
+ {
+ $this->publicId = $publicId;
+ }
+ /**
+ * @return string
+ */
+ public function getPublicId()
+ {
+ return $this->publicId;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\ZoneChildContainer::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_ZoneChildContainer');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ZoneTypeRestriction.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ZoneTypeRestriction.php
new file mode 100644
index 000000000..20b98942a
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient-services/src/TagManager/ZoneTypeRestriction.php
@@ -0,0 +1,61 @@
+enable = $enable;
+ }
+ /**
+ * @return bool
+ */
+ public function getEnable()
+ {
+ return $this->enable;
+ }
+ /**
+ * @param string[]
+ */
+ public function setWhitelistedTypeId($whitelistedTypeId)
+ {
+ $this->whitelistedTypeId = $whitelistedTypeId;
+ }
+ /**
+ * @return string[]
+ */
+ public function getWhitelistedTypeId()
+ {
+ return $this->whitelistedTypeId;
+ }
+}
+// Adding a class alias for backwards compatibility with the previous class name.
+\class_alias(\Google\Site_Kit_Dependencies\Google\Service\TagManager\ZoneTypeRestriction::class, 'Google\\Site_Kit_Dependencies\\Google_Service_TagManager_ZoneTypeRestriction');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/AccessToken/Revoke.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/AccessToken/Revoke.php
new file mode 100644
index 000000000..007aa2349
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/AccessToken/Revoke.php
@@ -0,0 +1,65 @@
+http = $http;
+ }
+ /**
+ * Revoke an OAuth2 access token or refresh token. This method will revoke the current access
+ * token, if a token isn't provided.
+ *
+ * @param string|array $token The token (access token or a refresh token) that should be revoked.
+ * @return boolean Returns True if the revocation was successful, otherwise False.
+ */
+ public function revokeToken($token)
+ {
+ if (\is_array($token)) {
+ if (isset($token['refresh_token'])) {
+ $token = $token['refresh_token'];
+ } else {
+ $token = $token['access_token'];
+ }
+ }
+ $body = \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Utils::streamFor(\http_build_query(array('token' => $token)));
+ $request = new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Request('POST', \Google\Site_Kit_Dependencies\Google\Client::OAUTH2_REVOKE_URI, ['Cache-Control' => 'no-store', 'Content-Type' => 'application/x-www-form-urlencoded'], $body);
+ $httpHandler = \Google\Site_Kit_Dependencies\Google\Auth\HttpHandler\HttpHandlerFactory::build($this->http);
+ $response = $httpHandler($request);
+ return $response->getStatusCode() == 200;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/AccessToken/Verify.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/AccessToken/Verify.php
new file mode 100644
index 000000000..f39c234d8
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/AccessToken/Verify.php
@@ -0,0 +1,246 @@
+http = $http;
+ $this->cache = $cache;
+ $this->jwt = $jwt ?: $this->getJwtService();
+ }
+ /**
+ * Verifies an id token and returns the authenticated apiLoginTicket.
+ * Throws an exception if the id token is not valid.
+ * The audience parameter can be used to control which id tokens are
+ * accepted. By default, the id token must have been issued to this OAuth2 client.
+ *
+ * @param string $idToken the ID token in JWT format
+ * @param string $audience Optional. The audience to verify against JWt "aud"
+ * @return array the token payload, if successful
+ */
+ public function verifyIdToken($idToken, $audience = null)
+ {
+ if (empty($idToken)) {
+ throw new \LogicException('id_token cannot be null');
+ }
+ // set phpseclib constants if applicable
+ $this->setPhpsecConstants();
+ // Check signature
+ $certs = $this->getFederatedSignOnCerts();
+ foreach ($certs as $cert) {
+ try {
+ $payload = $this->jwt->decode($idToken, $this->getPublicKey($cert), array('RS256'));
+ if (\property_exists($payload, 'aud')) {
+ if ($audience && $payload->aud != $audience) {
+ return \false;
+ }
+ }
+ // support HTTP and HTTPS issuers
+ // @see https://developers.google.com/identity/sign-in/web/backend-auth
+ $issuers = array(self::OAUTH2_ISSUER, self::OAUTH2_ISSUER_HTTPS);
+ if (!isset($payload->iss) || !\in_array($payload->iss, $issuers)) {
+ return \false;
+ }
+ return (array) $payload;
+ } catch (\Google\Site_Kit_Dependencies\ExpiredException $e) {
+ return \false;
+ } catch (\Google\Site_Kit_Dependencies\Firebase\JWT\ExpiredException $e) {
+ return \false;
+ } catch (\Google\Site_Kit_Dependencies\Firebase\JWT\SignatureInvalidException $e) {
+ // continue
+ } catch (\DomainException $e) {
+ // continue
+ }
+ }
+ return \false;
+ }
+ private function getCache()
+ {
+ return $this->cache;
+ }
+ /**
+ * Retrieve and cache a certificates file.
+ *
+ * @param $url string location
+ * @throws \Google\Exception
+ * @return array certificates
+ */
+ private function retrieveCertsFromLocation($url)
+ {
+ // If we're retrieving a local file, just grab it.
+ if (0 !== \strpos($url, 'http')) {
+ if (!($file = \file_get_contents($url))) {
+ throw new \Google\Site_Kit_Dependencies\Google\Exception("Failed to retrieve verification certificates: '" . $url . "'.");
+ }
+ return \json_decode($file, \true);
+ }
+ $response = $this->http->get($url);
+ if ($response->getStatusCode() == 200) {
+ return \json_decode((string) $response->getBody(), \true);
+ }
+ throw new \Google\Site_Kit_Dependencies\Google\Exception(\sprintf('Failed to retrieve verification certificates: "%s".', $response->getBody()->getContents()), $response->getStatusCode());
+ }
+ // Gets federated sign-on certificates to use for verifying identity tokens.
+ // Returns certs as array structure, where keys are key ids, and values
+ // are PEM encoded certificates.
+ private function getFederatedSignOnCerts()
+ {
+ $certs = null;
+ if ($cache = $this->getCache()) {
+ $cacheItem = $cache->getItem('federated_signon_certs_v3');
+ $certs = $cacheItem->get();
+ }
+ if (!$certs) {
+ $certs = $this->retrieveCertsFromLocation(self::FEDERATED_SIGNON_CERT_URL);
+ if ($cache) {
+ $cacheItem->expiresAt(new \DateTime('+1 hour'));
+ $cacheItem->set($certs);
+ $cache->save($cacheItem);
+ }
+ }
+ if (!isset($certs['keys'])) {
+ throw new \Google\Site_Kit_Dependencies\Google\AccessToken\InvalidArgumentException('federated sign-on certs expects "keys" to be set');
+ }
+ return $certs['keys'];
+ }
+ private function getJwtService()
+ {
+ $jwtClass = 'JWT';
+ if (\class_exists('Google\\Site_Kit_Dependencies\\Firebase\\JWT\\JWT')) {
+ $jwtClass = 'Google\\Site_Kit_Dependencies\\Firebase\\JWT\\JWT';
+ }
+ if (\property_exists($jwtClass, 'leeway') && $jwtClass::$leeway < 1) {
+ // Ensures JWT leeway is at least 1
+ // @see https://github.com/google/google-api-php-client/issues/827
+ $jwtClass::$leeway = 1;
+ }
+ return new $jwtClass();
+ }
+ private function getPublicKey($cert)
+ {
+ $bigIntClass = $this->getBigIntClass();
+ $modulus = new $bigIntClass($this->jwt->urlsafeB64Decode($cert['n']), 256);
+ $exponent = new $bigIntClass($this->jwt->urlsafeB64Decode($cert['e']), 256);
+ $component = array('n' => $modulus, 'e' => $exponent);
+ if (\class_exists('Google\\Site_Kit_Dependencies\\phpseclib3\\Crypt\\RSA\\PublicKey')) {
+ /** @var PublicKey $loader */
+ $loader = \Google\Site_Kit_Dependencies\phpseclib3\Crypt\PublicKeyLoader::load($component);
+ return $loader->toString('PKCS8');
+ }
+ $rsaClass = $this->getRsaClass();
+ $rsa = new $rsaClass();
+ $rsa->loadKey($component);
+ return $rsa->getPublicKey();
+ }
+ private function getRsaClass()
+ {
+ if (\class_exists('Google\\Site_Kit_Dependencies\\phpseclib3\\Crypt\\RSA')) {
+ return 'Google\\Site_Kit_Dependencies\\phpseclib3\\Crypt\\RSA';
+ }
+ if (\class_exists('Google\\Site_Kit_Dependencies\\phpseclib\\Crypt\\RSA')) {
+ return 'Google\\Site_Kit_Dependencies\\phpseclib\\Crypt\\RSA';
+ }
+ return 'Crypt_RSA';
+ }
+ private function getBigIntClass()
+ {
+ if (\class_exists('Google\\Site_Kit_Dependencies\\phpseclib3\\Math\\BigInteger')) {
+ return 'Google\\Site_Kit_Dependencies\\phpseclib3\\Math\\BigInteger';
+ }
+ if (\class_exists('Google\\Site_Kit_Dependencies\\phpseclib\\Math\\BigInteger')) {
+ return 'Google\\Site_Kit_Dependencies\\phpseclib\\Math\\BigInteger';
+ }
+ return 'Math_BigInteger';
+ }
+ private function getOpenSslConstant()
+ {
+ if (\class_exists('Google\\Site_Kit_Dependencies\\phpseclib3\\Crypt\\AES')) {
+ return 'phpseclib3\\Crypt\\AES::ENGINE_OPENSSL';
+ }
+ if (\class_exists('Google\\Site_Kit_Dependencies\\phpseclib\\Crypt\\RSA')) {
+ return 'phpseclib\\Crypt\\RSA::MODE_OPENSSL';
+ }
+ if (\class_exists('Google\\Site_Kit_Dependencies\\Crypt_RSA')) {
+ return 'CRYPT_RSA_MODE_OPENSSL';
+ }
+ throw new \Exception('Cannot find RSA class');
+ }
+ /**
+ * phpseclib calls "phpinfo" by default, which requires special
+ * whitelisting in the AppEngine VM environment. This function
+ * sets constants to bypass the need for phpseclib to check phpinfo
+ *
+ * @see phpseclib/Math/BigInteger
+ * @see https://github.com/GoogleCloudPlatform/getting-started-php/issues/85
+ */
+ private function setPhpsecConstants()
+ {
+ if (\filter_var(\getenv('GAE_VM'), \FILTER_VALIDATE_BOOLEAN)) {
+ if (!\defined('Google\\Site_Kit_Dependencies\\MATH_BIGINTEGER_OPENSSL_ENABLED')) {
+ \define('Google\\Site_Kit_Dependencies\\MATH_BIGINTEGER_OPENSSL_ENABLED', \true);
+ }
+ if (!\defined('Google\\Site_Kit_Dependencies\\CRYPT_RSA_MODE')) {
+ \define('Google\\Site_Kit_Dependencies\\CRYPT_RSA_MODE', \constant($this->getOpenSslConstant()));
+ }
+ }
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/AuthHandler/AuthHandlerFactory.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/AuthHandler/AuthHandlerFactory.php
new file mode 100644
index 000000000..92f90501a
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/AuthHandler/AuthHandlerFactory.php
@@ -0,0 +1,50 @@
+cache = $cache;
+ $this->cacheConfig = $cacheConfig;
+ }
+ public function attachCredentials(\Google\Site_Kit_Dependencies\GuzzleHttp\ClientInterface $http, \Google\Site_Kit_Dependencies\Google\Auth\CredentialsLoader $credentials, callable $tokenCallback = null)
+ {
+ // use the provided cache
+ if ($this->cache) {
+ $credentials = new \Google\Site_Kit_Dependencies\Google\Auth\FetchAuthTokenCache($credentials, $this->cacheConfig, $this->cache);
+ }
+ return $this->attachCredentialsCache($http, $credentials, $tokenCallback);
+ }
+ public function attachCredentialsCache(\Google\Site_Kit_Dependencies\GuzzleHttp\ClientInterface $http, \Google\Site_Kit_Dependencies\Google\Auth\FetchAuthTokenCache $credentials, callable $tokenCallback = null)
+ {
+ // if we end up needing to make an HTTP request to retrieve credentials, we
+ // can use our existing one, but we need to throw exceptions so the error
+ // bubbles up.
+ $authHttp = $this->createAuthHttp($http);
+ $authHttpHandler = \Google\Site_Kit_Dependencies\Google\Auth\HttpHandler\HttpHandlerFactory::build($authHttp);
+ $subscriber = new \Google\Site_Kit_Dependencies\Google\Auth\Subscriber\AuthTokenSubscriber($credentials, $authHttpHandler, $tokenCallback);
+ $http->setDefaultOption('auth', 'google_auth');
+ $http->getEmitter()->attach($subscriber);
+ return $http;
+ }
+ public function attachToken(\Google\Site_Kit_Dependencies\GuzzleHttp\ClientInterface $http, array $token, array $scopes)
+ {
+ $tokenFunc = function ($scopes) use($token) {
+ return $token['access_token'];
+ };
+ $subscriber = new \Google\Site_Kit_Dependencies\Google\Auth\Subscriber\ScopedAccessTokenSubscriber($tokenFunc, $scopes, $this->cacheConfig, $this->cache);
+ $http->setDefaultOption('auth', 'scoped');
+ $http->getEmitter()->attach($subscriber);
+ return $http;
+ }
+ public function attachKey(\Google\Site_Kit_Dependencies\GuzzleHttp\ClientInterface $http, $key)
+ {
+ $subscriber = new \Google\Site_Kit_Dependencies\Google\Auth\Subscriber\SimpleSubscriber(['key' => $key]);
+ $http->setDefaultOption('auth', 'simple');
+ $http->getEmitter()->attach($subscriber);
+ return $http;
+ }
+ private function createAuthHttp(\Google\Site_Kit_Dependencies\GuzzleHttp\ClientInterface $http)
+ {
+ return new \Google\Site_Kit_Dependencies\GuzzleHttp\Client(['base_url' => $http->getBaseUrl(), 'defaults' => ['exceptions' => \true, 'verify' => $http->getDefaultOption('verify'), 'proxy' => $http->getDefaultOption('proxy')]]);
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/AuthHandler/Guzzle6AuthHandler.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/AuthHandler/Guzzle6AuthHandler.php
new file mode 100644
index 000000000..937f4544e
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/AuthHandler/Guzzle6AuthHandler.php
@@ -0,0 +1,76 @@
+cache = $cache;
+ $this->cacheConfig = $cacheConfig;
+ }
+ public function attachCredentials(\Google\Site_Kit_Dependencies\GuzzleHttp\ClientInterface $http, \Google\Site_Kit_Dependencies\Google\Auth\CredentialsLoader $credentials, callable $tokenCallback = null)
+ {
+ // use the provided cache
+ if ($this->cache) {
+ $credentials = new \Google\Site_Kit_Dependencies\Google\Auth\FetchAuthTokenCache($credentials, $this->cacheConfig, $this->cache);
+ }
+ return $this->attachCredentialsCache($http, $credentials, $tokenCallback);
+ }
+ public function attachCredentialsCache(\Google\Site_Kit_Dependencies\GuzzleHttp\ClientInterface $http, \Google\Site_Kit_Dependencies\Google\Auth\FetchAuthTokenCache $credentials, callable $tokenCallback = null)
+ {
+ // if we end up needing to make an HTTP request to retrieve credentials, we
+ // can use our existing one, but we need to throw exceptions so the error
+ // bubbles up.
+ $authHttp = $this->createAuthHttp($http);
+ $authHttpHandler = \Google\Site_Kit_Dependencies\Google\Auth\HttpHandler\HttpHandlerFactory::build($authHttp);
+ $middleware = new \Google\Site_Kit_Dependencies\Google\Auth\Middleware\AuthTokenMiddleware($credentials, $authHttpHandler, $tokenCallback);
+ $config = $http->getConfig();
+ $config['handler']->remove('google_auth');
+ $config['handler']->push($middleware, 'google_auth');
+ $config['auth'] = 'google_auth';
+ $http = new \Google\Site_Kit_Dependencies\GuzzleHttp\Client($config);
+ return $http;
+ }
+ public function attachToken(\Google\Site_Kit_Dependencies\GuzzleHttp\ClientInterface $http, array $token, array $scopes)
+ {
+ $tokenFunc = function ($scopes) use($token) {
+ return $token['access_token'];
+ };
+ $middleware = new \Google\Site_Kit_Dependencies\Google\Auth\Middleware\ScopedAccessTokenMiddleware($tokenFunc, $scopes, $this->cacheConfig, $this->cache);
+ $config = $http->getConfig();
+ $config['handler']->remove('google_auth');
+ $config['handler']->push($middleware, 'google_auth');
+ $config['auth'] = 'scoped';
+ $http = new \Google\Site_Kit_Dependencies\GuzzleHttp\Client($config);
+ return $http;
+ }
+ public function attachKey(\Google\Site_Kit_Dependencies\GuzzleHttp\ClientInterface $http, $key)
+ {
+ $middleware = new \Google\Site_Kit_Dependencies\Google\Auth\Middleware\SimpleMiddleware(['key' => $key]);
+ $config = $http->getConfig();
+ $config['handler']->remove('google_auth');
+ $config['handler']->push($middleware, 'google_auth');
+ $config['auth'] = 'simple';
+ $http = new \Google\Site_Kit_Dependencies\GuzzleHttp\Client($config);
+ return $http;
+ }
+ private function createAuthHttp(\Google\Site_Kit_Dependencies\GuzzleHttp\ClientInterface $http)
+ {
+ return new \Google\Site_Kit_Dependencies\GuzzleHttp\Client(['base_uri' => $http->getConfig('base_uri'), 'http_errors' => \true, 'verify' => $http->getConfig('verify'), 'proxy' => $http->getConfig('proxy')]);
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/AuthHandler/Guzzle7AuthHandler.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/AuthHandler/Guzzle7AuthHandler.php
new file mode 100644
index 000000000..0cf575810
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/AuthHandler/Guzzle7AuthHandler.php
@@ -0,0 +1,25 @@
+config = \array_merge([
+ 'application_name' => '',
+ // Don't change these unless you're working against a special development
+ // or testing environment.
+ 'base_path' => self::API_BASE_PATH,
+ // https://developers.google.com/console
+ 'client_id' => '',
+ 'client_secret' => '',
+ // Can be a path to JSON credentials or an array representing those
+ // credentials (@see Google\Client::setAuthConfig), or an instance of
+ // Google\Auth\CredentialsLoader.
+ 'credentials' => null,
+ // @see Google\Client::setScopes
+ 'scopes' => null,
+ // Sets X-Goog-User-Project, which specifies a user project to bill
+ // for access charges associated with the request
+ 'quota_project' => null,
+ 'redirect_uri' => null,
+ 'state' => null,
+ // Simple API access key, also from the API console. Ensure you get
+ // a Server key, and not a Browser key.
+ 'developer_key' => '',
+ // For use with Google Cloud Platform
+ // fetch the ApplicationDefaultCredentials, if applicable
+ // @see https://developers.google.com/identity/protocols/application-default-credentials
+ 'use_application_default_credentials' => \false,
+ 'signing_key' => null,
+ 'signing_algorithm' => null,
+ 'subject' => null,
+ // Other OAuth2 parameters.
+ 'hd' => '',
+ 'prompt' => '',
+ 'openid.realm' => '',
+ 'include_granted_scopes' => null,
+ 'login_hint' => '',
+ 'request_visible_actions' => '',
+ 'access_type' => 'online',
+ 'approval_prompt' => 'auto',
+ // Task Runner retry configuration
+ // @see Google\Task\Runner
+ 'retry' => array(),
+ 'retry_map' => null,
+ // Cache class implementing Psr\Cache\CacheItemPoolInterface.
+ // Defaults to Google\Auth\Cache\MemoryCacheItemPool.
+ 'cache' => null,
+ // cache config for downstream auth caching
+ 'cache_config' => [],
+ // function to be called when an access token is fetched
+ // follows the signature function ($cacheKey, $accessToken)
+ 'token_callback' => null,
+ // Service class used in Google\Client::verifyIdToken.
+ // Explicitly pass this in to avoid setting JWT::$leeway
+ 'jwt' => null,
+ // Setting api_format_v2 will return more detailed error messages
+ // from certain APIs.
+ 'api_format_v2' => \false,
+ ], $config);
+ if (!\is_null($this->config['credentials'])) {
+ if ($this->config['credentials'] instanceof \Google\Site_Kit_Dependencies\Google\Auth\CredentialsLoader) {
+ $this->credentials = $this->config['credentials'];
+ } else {
+ $this->setAuthConfig($this->config['credentials']);
+ }
+ unset($this->config['credentials']);
+ }
+ if (!\is_null($this->config['scopes'])) {
+ $this->setScopes($this->config['scopes']);
+ unset($this->config['scopes']);
+ }
+ // Set a default token callback to update the in-memory access token
+ if (\is_null($this->config['token_callback'])) {
+ $this->config['token_callback'] = function ($cacheKey, $newAccessToken) {
+ $this->setAccessToken([
+ 'access_token' => $newAccessToken,
+ 'expires_in' => 3600,
+ // Google default
+ 'created' => \time(),
+ ]);
+ };
+ }
+ if (!\is_null($this->config['cache'])) {
+ $this->setCache($this->config['cache']);
+ unset($this->config['cache']);
+ }
+ }
+ /**
+ * Get a string containing the version of the library.
+ *
+ * @return string
+ */
+ public function getLibraryVersion()
+ {
+ return self::LIBVER;
+ }
+ /**
+ * For backwards compatibility
+ * alias for fetchAccessTokenWithAuthCode
+ *
+ * @param $code string code from accounts.google.com
+ * @return array access token
+ * @deprecated
+ */
+ public function authenticate($code)
+ {
+ return $this->fetchAccessTokenWithAuthCode($code);
+ }
+ /**
+ * Attempt to exchange a code for an valid authentication token.
+ * Helper wrapped around the OAuth 2.0 implementation.
+ *
+ * @param $code string code from accounts.google.com
+ * @return array access token
+ */
+ public function fetchAccessTokenWithAuthCode($code)
+ {
+ if (\strlen($code) == 0) {
+ throw new \InvalidArgumentException("Invalid code");
+ }
+ $auth = $this->getOAuth2Service();
+ $auth->setCode($code);
+ $auth->setRedirectUri($this->getRedirectUri());
+ $httpHandler = \Google\Site_Kit_Dependencies\Google\Auth\HttpHandler\HttpHandlerFactory::build($this->getHttpClient());
+ $creds = $auth->fetchAuthToken($httpHandler);
+ if ($creds && isset($creds['access_token'])) {
+ $creds['created'] = \time();
+ $this->setAccessToken($creds);
+ }
+ return $creds;
+ }
+ /**
+ * For backwards compatibility
+ * alias for fetchAccessTokenWithAssertion
+ *
+ * @return array access token
+ * @deprecated
+ */
+ public function refreshTokenWithAssertion()
+ {
+ return $this->fetchAccessTokenWithAssertion();
+ }
+ /**
+ * Fetches a fresh access token with a given assertion token.
+ * @param ClientInterface $authHttp optional.
+ * @return array access token
+ */
+ public function fetchAccessTokenWithAssertion(\Google\Site_Kit_Dependencies\GuzzleHttp\ClientInterface $authHttp = null)
+ {
+ if (!$this->isUsingApplicationDefaultCredentials()) {
+ throw new \DomainException('set the JSON service account credentials using' . ' Google\\Client::setAuthConfig or set the path to your JSON file' . ' with the "GOOGLE_APPLICATION_CREDENTIALS" environment variable' . ' and call Google\\Client::useApplicationDefaultCredentials to' . ' refresh a token with assertion.');
+ }
+ $this->getLogger()->log('info', 'OAuth2 access token refresh with Signed JWT assertion grants.');
+ $credentials = $this->createApplicationDefaultCredentials();
+ $httpHandler = \Google\Site_Kit_Dependencies\Google\Auth\HttpHandler\HttpHandlerFactory::build($authHttp);
+ $creds = $credentials->fetchAuthToken($httpHandler);
+ if ($creds && isset($creds['access_token'])) {
+ $creds['created'] = \time();
+ $this->setAccessToken($creds);
+ }
+ return $creds;
+ }
+ /**
+ * For backwards compatibility
+ * alias for fetchAccessTokenWithRefreshToken
+ *
+ * @param string $refreshToken
+ * @return array access token
+ */
+ public function refreshToken($refreshToken)
+ {
+ return $this->fetchAccessTokenWithRefreshToken($refreshToken);
+ }
+ /**
+ * Fetches a fresh OAuth 2.0 access token with the given refresh token.
+ * @param string $refreshToken
+ * @return array access token
+ */
+ public function fetchAccessTokenWithRefreshToken($refreshToken = null)
+ {
+ if (null === $refreshToken) {
+ if (!isset($this->token['refresh_token'])) {
+ throw new \LogicException('refresh token must be passed in or set as part of setAccessToken');
+ }
+ $refreshToken = $this->token['refresh_token'];
+ }
+ $this->getLogger()->info('OAuth2 access token refresh');
+ $auth = $this->getOAuth2Service();
+ $auth->setRefreshToken($refreshToken);
+ $httpHandler = \Google\Site_Kit_Dependencies\Google\Auth\HttpHandler\HttpHandlerFactory::build($this->getHttpClient());
+ $creds = $auth->fetchAuthToken($httpHandler);
+ if ($creds && isset($creds['access_token'])) {
+ $creds['created'] = \time();
+ if (!isset($creds['refresh_token'])) {
+ $creds['refresh_token'] = $refreshToken;
+ }
+ $this->setAccessToken($creds);
+ }
+ return $creds;
+ }
+ /**
+ * Create a URL to obtain user authorization.
+ * The authorization endpoint allows the user to first
+ * authenticate, and then grant/deny the access request.
+ * @param string|array $scope The scope is expressed as an array or list of space-delimited strings.
+ * @return string
+ */
+ public function createAuthUrl($scope = null)
+ {
+ if (empty($scope)) {
+ $scope = $this->prepareScopes();
+ }
+ if (\is_array($scope)) {
+ $scope = \implode(' ', $scope);
+ }
+ // only accept one of prompt or approval_prompt
+ $approvalPrompt = $this->config['prompt'] ? null : $this->config['approval_prompt'];
+ // include_granted_scopes should be string "true", string "false", or null
+ $includeGrantedScopes = $this->config['include_granted_scopes'] === null ? null : \var_export($this->config['include_granted_scopes'], \true);
+ $params = \array_filter(['access_type' => $this->config['access_type'], 'approval_prompt' => $approvalPrompt, 'hd' => $this->config['hd'], 'include_granted_scopes' => $includeGrantedScopes, 'login_hint' => $this->config['login_hint'], 'openid.realm' => $this->config['openid.realm'], 'prompt' => $this->config['prompt'], 'response_type' => 'code', 'scope' => $scope, 'state' => $this->config['state']]);
+ // If the list of scopes contains plus.login, add request_visible_actions
+ // to auth URL.
+ $rva = $this->config['request_visible_actions'];
+ if (\strlen($rva) > 0 && \false !== \strpos($scope, 'plus.login')) {
+ $params['request_visible_actions'] = $rva;
+ }
+ $auth = $this->getOAuth2Service();
+ return (string) $auth->buildFullAuthorizationUri($params);
+ }
+ /**
+ * Adds auth listeners to the HTTP client based on the credentials
+ * set in the Google API Client object
+ *
+ * @param ClientInterface $http the http client object.
+ * @return ClientInterface the http client object
+ */
+ public function authorize(\Google\Site_Kit_Dependencies\GuzzleHttp\ClientInterface $http = null)
+ {
+ $http = $http ?: $this->getHttpClient();
+ $authHandler = $this->getAuthHandler();
+ // These conditionals represent the decision tree for authentication
+ // 1. Check if a Google\Auth\CredentialsLoader instance has been supplied via the "credentials" option
+ // 2. Check for Application Default Credentials
+ // 3a. Check for an Access Token
+ // 3b. If access token exists but is expired, try to refresh it
+ // 4. Check for API Key
+ if ($this->credentials) {
+ return $authHandler->attachCredentials($http, $this->credentials, $this->config['token_callback']);
+ }
+ if ($this->isUsingApplicationDefaultCredentials()) {
+ $credentials = $this->createApplicationDefaultCredentials();
+ return $authHandler->attachCredentialsCache($http, $credentials, $this->config['token_callback']);
+ }
+ if ($token = $this->getAccessToken()) {
+ $scopes = $this->prepareScopes();
+ // add refresh subscriber to request a new token
+ if (isset($token['refresh_token']) && $this->isAccessTokenExpired()) {
+ $credentials = $this->createUserRefreshCredentials($scopes, $token['refresh_token']);
+ return $authHandler->attachCredentials($http, $credentials, $this->config['token_callback']);
+ }
+ return $authHandler->attachToken($http, $token, (array) $scopes);
+ }
+ if ($key = $this->config['developer_key']) {
+ return $authHandler->attachKey($http, $key);
+ }
+ return $http;
+ }
+ /**
+ * Set the configuration to use application default credentials for
+ * authentication
+ *
+ * @see https://developers.google.com/identity/protocols/application-default-credentials
+ * @param boolean $useAppCreds
+ */
+ public function useApplicationDefaultCredentials($useAppCreds = \true)
+ {
+ $this->config['use_application_default_credentials'] = $useAppCreds;
+ }
+ /**
+ * To prevent useApplicationDefaultCredentials from inappropriately being
+ * called in a conditional
+ *
+ * @see https://developers.google.com/identity/protocols/application-default-credentials
+ */
+ public function isUsingApplicationDefaultCredentials()
+ {
+ return $this->config['use_application_default_credentials'];
+ }
+ /**
+ * Set the access token used for requests.
+ *
+ * Note that at the time requests are sent, tokens are cached. A token will be
+ * cached for each combination of service and authentication scopes. If a
+ * cache pool is not provided, creating a new instance of the client will
+ * allow modification of access tokens. If a persistent cache pool is
+ * provided, in order to change the access token, you must clear the cached
+ * token by calling `$client->getCache()->clear()`. (Use caution in this case,
+ * as calling `clear()` will remove all cache items, including any items not
+ * related to Google API PHP Client.)
+ *
+ * @param string|array $token
+ * @throws InvalidArgumentException
+ */
+ public function setAccessToken($token)
+ {
+ if (\is_string($token)) {
+ if ($json = \json_decode($token, \true)) {
+ $token = $json;
+ } else {
+ // assume $token is just the token string
+ $token = array('access_token' => $token);
+ }
+ }
+ if ($token == null) {
+ throw new \InvalidArgumentException('invalid json token');
+ }
+ if (!isset($token['access_token'])) {
+ throw new \InvalidArgumentException("Invalid token format");
+ }
+ $this->token = $token;
+ }
+ public function getAccessToken()
+ {
+ return $this->token;
+ }
+ /**
+ * @return string|null
+ */
+ public function getRefreshToken()
+ {
+ if (isset($this->token['refresh_token'])) {
+ return $this->token['refresh_token'];
+ }
+ return null;
+ }
+ /**
+ * Returns if the access_token is expired.
+ * @return bool Returns True if the access_token is expired.
+ */
+ public function isAccessTokenExpired()
+ {
+ if (!$this->token) {
+ return \true;
+ }
+ $created = 0;
+ if (isset($this->token['created'])) {
+ $created = $this->token['created'];
+ } elseif (isset($this->token['id_token'])) {
+ // check the ID token for "iat"
+ // signature verification is not required here, as we are just
+ // using this for convenience to save a round trip request
+ // to the Google API server
+ $idToken = $this->token['id_token'];
+ if (\substr_count($idToken, '.') == 2) {
+ $parts = \explode('.', $idToken);
+ $payload = \json_decode(\base64_decode($parts[1]), \true);
+ if ($payload && isset($payload['iat'])) {
+ $created = $payload['iat'];
+ }
+ }
+ }
+ // If the token is set to expire in the next 30 seconds.
+ return $created + ($this->token['expires_in'] - 30) < \time();
+ }
+ /**
+ * @deprecated See UPGRADING.md for more information
+ */
+ public function getAuth()
+ {
+ throw new \BadMethodCallException('This function no longer exists. See UPGRADING.md for more information');
+ }
+ /**
+ * @deprecated See UPGRADING.md for more information
+ */
+ public function setAuth($auth)
+ {
+ throw new \BadMethodCallException('This function no longer exists. See UPGRADING.md for more information');
+ }
+ /**
+ * Set the OAuth 2.0 Client ID.
+ * @param string $clientId
+ */
+ public function setClientId($clientId)
+ {
+ $this->config['client_id'] = $clientId;
+ }
+ public function getClientId()
+ {
+ return $this->config['client_id'];
+ }
+ /**
+ * Set the OAuth 2.0 Client Secret.
+ * @param string $clientSecret
+ */
+ public function setClientSecret($clientSecret)
+ {
+ $this->config['client_secret'] = $clientSecret;
+ }
+ public function getClientSecret()
+ {
+ return $this->config['client_secret'];
+ }
+ /**
+ * Set the OAuth 2.0 Redirect URI.
+ * @param string $redirectUri
+ */
+ public function setRedirectUri($redirectUri)
+ {
+ $this->config['redirect_uri'] = $redirectUri;
+ }
+ public function getRedirectUri()
+ {
+ return $this->config['redirect_uri'];
+ }
+ /**
+ * Set OAuth 2.0 "state" parameter to achieve per-request customization.
+ * @see http://tools.ietf.org/html/draft-ietf-oauth-v2-22#section-3.1.2.2
+ * @param string $state
+ */
+ public function setState($state)
+ {
+ $this->config['state'] = $state;
+ }
+ /**
+ * @param string $accessType Possible values for access_type include:
+ * {@code "offline"} to request offline access from the user.
+ * {@code "online"} to request online access from the user.
+ */
+ public function setAccessType($accessType)
+ {
+ $this->config['access_type'] = $accessType;
+ }
+ /**
+ * @param string $approvalPrompt Possible values for approval_prompt include:
+ * {@code "force"} to force the approval UI to appear.
+ * {@code "auto"} to request auto-approval when possible. (This is the default value)
+ */
+ public function setApprovalPrompt($approvalPrompt)
+ {
+ $this->config['approval_prompt'] = $approvalPrompt;
+ }
+ /**
+ * Set the login hint, email address or sub id.
+ * @param string $loginHint
+ */
+ public function setLoginHint($loginHint)
+ {
+ $this->config['login_hint'] = $loginHint;
+ }
+ /**
+ * Set the application name, this is included in the User-Agent HTTP header.
+ * @param string $applicationName
+ */
+ public function setApplicationName($applicationName)
+ {
+ $this->config['application_name'] = $applicationName;
+ }
+ /**
+ * If 'plus.login' is included in the list of requested scopes, you can use
+ * this method to define types of app activities that your app will write.
+ * You can find a list of available types here:
+ * @link https://developers.google.com/+/api/moment-types
+ *
+ * @param array $requestVisibleActions Array of app activity types
+ */
+ public function setRequestVisibleActions($requestVisibleActions)
+ {
+ if (\is_array($requestVisibleActions)) {
+ $requestVisibleActions = \implode(" ", $requestVisibleActions);
+ }
+ $this->config['request_visible_actions'] = $requestVisibleActions;
+ }
+ /**
+ * Set the developer key to use, these are obtained through the API Console.
+ * @see http://code.google.com/apis/console-help/#generatingdevkeys
+ * @param string $developerKey
+ */
+ public function setDeveloperKey($developerKey)
+ {
+ $this->config['developer_key'] = $developerKey;
+ }
+ /**
+ * Set the hd (hosted domain) parameter streamlines the login process for
+ * Google Apps hosted accounts. By including the domain of the user, you
+ * restrict sign-in to accounts at that domain.
+ * @param $hd string - the domain to use.
+ */
+ public function setHostedDomain($hd)
+ {
+ $this->config['hd'] = $hd;
+ }
+ /**
+ * Set the prompt hint. Valid values are none, consent and select_account.
+ * If no value is specified and the user has not previously authorized
+ * access, then the user is shown a consent screen.
+ * @param $prompt string
+ * {@code "none"} Do not display any authentication or consent screens. Must not be specified with other values.
+ * {@code "consent"} Prompt the user for consent.
+ * {@code "select_account"} Prompt the user to select an account.
+ */
+ public function setPrompt($prompt)
+ {
+ $this->config['prompt'] = $prompt;
+ }
+ /**
+ * openid.realm is a parameter from the OpenID 2.0 protocol, not from OAuth
+ * 2.0. It is used in OpenID 2.0 requests to signify the URL-space for which
+ * an authentication request is valid.
+ * @param $realm string - the URL-space to use.
+ */
+ public function setOpenidRealm($realm)
+ {
+ $this->config['openid.realm'] = $realm;
+ }
+ /**
+ * If this is provided with the value true, and the authorization request is
+ * granted, the authorization will include any previous authorizations
+ * granted to this user/application combination for other scopes.
+ * @param $include boolean - the URL-space to use.
+ */
+ public function setIncludeGrantedScopes($include)
+ {
+ $this->config['include_granted_scopes'] = $include;
+ }
+ /**
+ * sets function to be called when an access token is fetched
+ * @param callable $tokenCallback - function ($cacheKey, $accessToken)
+ */
+ public function setTokenCallback(callable $tokenCallback)
+ {
+ $this->config['token_callback'] = $tokenCallback;
+ }
+ /**
+ * Revoke an OAuth2 access token or refresh token. This method will revoke the current access
+ * token, if a token isn't provided.
+ *
+ * @param string|array|null $token The token (access token or a refresh token) that should be revoked.
+ * @return boolean Returns True if the revocation was successful, otherwise False.
+ */
+ public function revokeToken($token = null)
+ {
+ $tokenRevoker = new \Google\Site_Kit_Dependencies\Google\AccessToken\Revoke($this->getHttpClient());
+ return $tokenRevoker->revokeToken($token ?: $this->getAccessToken());
+ }
+ /**
+ * Verify an id_token. This method will verify the current id_token, if one
+ * isn't provided.
+ *
+ * @throws LogicException If no token was provided and no token was set using `setAccessToken`.
+ * @throws UnexpectedValueException If the token is not a valid JWT.
+ * @param string|null $idToken The token (id_token) that should be verified.
+ * @return array|false Returns the token payload as an array if the verification was
+ * successful, false otherwise.
+ */
+ public function verifyIdToken($idToken = null)
+ {
+ $tokenVerifier = new \Google\Site_Kit_Dependencies\Google\AccessToken\Verify($this->getHttpClient(), $this->getCache(), $this->config['jwt']);
+ if (null === $idToken) {
+ $token = $this->getAccessToken();
+ if (!isset($token['id_token'])) {
+ throw new \LogicException('id_token must be passed in or set as part of setAccessToken');
+ }
+ $idToken = $token['id_token'];
+ }
+ return $tokenVerifier->verifyIdToken($idToken, $this->getClientId());
+ }
+ /**
+ * Set the scopes to be requested. Must be called before createAuthUrl().
+ * Will remove any previously configured scopes.
+ * @param string|array $scope_or_scopes, ie:
+ * array(
+ * 'https://www.googleapis.com/auth/plus.login',
+ * 'https://www.googleapis.com/auth/moderator'
+ * );
+ */
+ public function setScopes($scope_or_scopes)
+ {
+ $this->requestedScopes = array();
+ $this->addScope($scope_or_scopes);
+ }
+ /**
+ * This functions adds a scope to be requested as part of the OAuth2.0 flow.
+ * Will append any scopes not previously requested to the scope parameter.
+ * A single string will be treated as a scope to request. An array of strings
+ * will each be appended.
+ * @param $scope_or_scopes string|array e.g. "profile"
+ */
+ public function addScope($scope_or_scopes)
+ {
+ if (\is_string($scope_or_scopes) && !\in_array($scope_or_scopes, $this->requestedScopes)) {
+ $this->requestedScopes[] = $scope_or_scopes;
+ } else {
+ if (\is_array($scope_or_scopes)) {
+ foreach ($scope_or_scopes as $scope) {
+ $this->addScope($scope);
+ }
+ }
+ }
+ }
+ /**
+ * Returns the list of scopes requested by the client
+ * @return array the list of scopes
+ *
+ */
+ public function getScopes()
+ {
+ return $this->requestedScopes;
+ }
+ /**
+ * @return string|null
+ * @visible For Testing
+ */
+ public function prepareScopes()
+ {
+ if (empty($this->requestedScopes)) {
+ return null;
+ }
+ return \implode(' ', $this->requestedScopes);
+ }
+ /**
+ * Helper method to execute deferred HTTP requests.
+ *
+ * @param $request RequestInterface|\Google\Http\Batch
+ * @param string $expectedClass
+ * @throws \Google\Exception
+ * @return mixed|$expectedClass|ResponseInterface
+ */
+ public function execute(\Google\Site_Kit_Dependencies\Psr\Http\Message\RequestInterface $request, $expectedClass = null)
+ {
+ $request = $request->withHeader('User-Agent', \sprintf('%s %s%s', $this->config['application_name'], self::USER_AGENT_SUFFIX, $this->getLibraryVersion()))->withHeader('x-goog-api-client', \sprintf('gl-php/%s gdcl/%s', \phpversion(), $this->getLibraryVersion()));
+ if ($this->config['api_format_v2']) {
+ $request = $request->withHeader('X-GOOG-API-FORMAT-VERSION', 2);
+ }
+ // call the authorize method
+ // this is where most of the grunt work is done
+ $http = $this->authorize();
+ return \Google\Site_Kit_Dependencies\Google\Http\REST::execute($http, $request, $expectedClass, $this->config['retry'], $this->config['retry_map']);
+ }
+ /**
+ * Declare whether batch calls should be used. This may increase throughput
+ * by making multiple requests in one connection.
+ *
+ * @param boolean $useBatch True if the batch support should
+ * be enabled. Defaults to False.
+ */
+ public function setUseBatch($useBatch)
+ {
+ // This is actually an alias for setDefer.
+ $this->setDefer($useBatch);
+ }
+ /**
+ * Are we running in Google AppEngine?
+ * return bool
+ */
+ public function isAppEngine()
+ {
+ return isset($_SERVER['SERVER_SOFTWARE']) && \strpos($_SERVER['SERVER_SOFTWARE'], 'Google App Engine') !== \false;
+ }
+ public function setConfig($name, $value)
+ {
+ $this->config[$name] = $value;
+ }
+ public function getConfig($name, $default = null)
+ {
+ return isset($this->config[$name]) ? $this->config[$name] : $default;
+ }
+ /**
+ * For backwards compatibility
+ * alias for setAuthConfig
+ *
+ * @param string $file the configuration file
+ * @throws \Google\Exception
+ * @deprecated
+ */
+ public function setAuthConfigFile($file)
+ {
+ $this->setAuthConfig($file);
+ }
+ /**
+ * Set the auth config from new or deprecated JSON config.
+ * This structure should match the file downloaded from
+ * the "Download JSON" button on in the Google Developer
+ * Console.
+ * @param string|array $config the configuration json
+ * @throws \Google\Exception
+ */
+ public function setAuthConfig($config)
+ {
+ if (\is_string($config)) {
+ if (!\file_exists($config)) {
+ throw new \InvalidArgumentException(\sprintf('file "%s" does not exist', $config));
+ }
+ $json = \file_get_contents($config);
+ if (!($config = \json_decode($json, \true))) {
+ throw new \LogicException('invalid json for auth config');
+ }
+ }
+ $key = isset($config['installed']) ? 'installed' : 'web';
+ if (isset($config['type']) && $config['type'] == 'service_account') {
+ // application default credentials
+ $this->useApplicationDefaultCredentials();
+ // set the information from the config
+ $this->setClientId($config['client_id']);
+ $this->config['client_email'] = $config['client_email'];
+ $this->config['signing_key'] = $config['private_key'];
+ $this->config['signing_algorithm'] = 'HS256';
+ } elseif (isset($config[$key])) {
+ // old-style
+ $this->setClientId($config[$key]['client_id']);
+ $this->setClientSecret($config[$key]['client_secret']);
+ if (isset($config[$key]['redirect_uris'])) {
+ $this->setRedirectUri($config[$key]['redirect_uris'][0]);
+ }
+ } else {
+ // new-style
+ $this->setClientId($config['client_id']);
+ $this->setClientSecret($config['client_secret']);
+ if (isset($config['redirect_uris'])) {
+ $this->setRedirectUri($config['redirect_uris'][0]);
+ }
+ }
+ }
+ /**
+ * Use when the service account has been delegated domain wide access.
+ *
+ * @param string $subject an email address account to impersonate
+ */
+ public function setSubject($subject)
+ {
+ $this->config['subject'] = $subject;
+ }
+ /**
+ * Declare whether making API calls should make the call immediately, or
+ * return a request which can be called with ->execute();
+ *
+ * @param boolean $defer True if calls should not be executed right away.
+ */
+ public function setDefer($defer)
+ {
+ $this->deferExecution = $defer;
+ }
+ /**
+ * Whether or not to return raw requests
+ * @return boolean
+ */
+ public function shouldDefer()
+ {
+ return $this->deferExecution;
+ }
+ /**
+ * @return OAuth2 implementation
+ */
+ public function getOAuth2Service()
+ {
+ if (!isset($this->auth)) {
+ $this->auth = $this->createOAuth2Service();
+ }
+ return $this->auth;
+ }
+ /**
+ * create a default google auth object
+ */
+ protected function createOAuth2Service()
+ {
+ $auth = new \Google\Site_Kit_Dependencies\Google\Auth\OAuth2(['clientId' => $this->getClientId(), 'clientSecret' => $this->getClientSecret(), 'authorizationUri' => self::OAUTH2_AUTH_URL, 'tokenCredentialUri' => self::OAUTH2_TOKEN_URI, 'redirectUri' => $this->getRedirectUri(), 'issuer' => $this->config['client_id'], 'signingKey' => $this->config['signing_key'], 'signingAlgorithm' => $this->config['signing_algorithm']]);
+ return $auth;
+ }
+ /**
+ * Set the Cache object
+ * @param CacheItemPoolInterface $cache
+ */
+ public function setCache(\Google\Site_Kit_Dependencies\Psr\Cache\CacheItemPoolInterface $cache)
+ {
+ $this->cache = $cache;
+ }
+ /**
+ * @return CacheItemPoolInterface
+ */
+ public function getCache()
+ {
+ if (!$this->cache) {
+ $this->cache = $this->createDefaultCache();
+ }
+ return $this->cache;
+ }
+ /**
+ * @param array $cacheConfig
+ */
+ public function setCacheConfig(array $cacheConfig)
+ {
+ $this->config['cache_config'] = $cacheConfig;
+ }
+ /**
+ * Set the Logger object
+ * @param LoggerInterface $logger
+ */
+ public function setLogger(\Google\Site_Kit_Dependencies\Psr\Log\LoggerInterface $logger)
+ {
+ $this->logger = $logger;
+ }
+ /**
+ * @return LoggerInterface
+ */
+ public function getLogger()
+ {
+ if (!isset($this->logger)) {
+ $this->logger = $this->createDefaultLogger();
+ }
+ return $this->logger;
+ }
+ protected function createDefaultLogger()
+ {
+ $logger = new \Google\Site_Kit_Dependencies\Monolog\Logger('google-api-php-client');
+ if ($this->isAppEngine()) {
+ $handler = new \Google\Site_Kit_Dependencies\Monolog\Handler\SyslogHandler('app', \LOG_USER, \Google\Site_Kit_Dependencies\Monolog\Logger::NOTICE);
+ } else {
+ $handler = new \Google\Site_Kit_Dependencies\Monolog\Handler\StreamHandler('php://stderr', \Google\Site_Kit_Dependencies\Monolog\Logger::NOTICE);
+ }
+ $logger->pushHandler($handler);
+ return $logger;
+ }
+ protected function createDefaultCache()
+ {
+ return new \Google\Site_Kit_Dependencies\Google\Auth\Cache\MemoryCacheItemPool();
+ }
+ /**
+ * Set the Http Client object
+ * @param ClientInterface $http
+ */
+ public function setHttpClient(\Google\Site_Kit_Dependencies\GuzzleHttp\ClientInterface $http)
+ {
+ $this->http = $http;
+ }
+ /**
+ * @return ClientInterface
+ */
+ public function getHttpClient()
+ {
+ if (null === $this->http) {
+ $this->http = $this->createDefaultHttpClient();
+ }
+ return $this->http;
+ }
+ /**
+ * Set the API format version.
+ *
+ * `true` will use V2, which may return more useful error messages.
+ *
+ * @param bool $value
+ */
+ public function setApiFormatV2($value)
+ {
+ $this->config['api_format_v2'] = (bool) $value;
+ }
+ protected function createDefaultHttpClient()
+ {
+ $guzzleVersion = null;
+ if (\defined('\\Google\\Site_Kit_Dependencies\\GuzzleHttp\\ClientInterface::MAJOR_VERSION')) {
+ $guzzleVersion = \Google\Site_Kit_Dependencies\GuzzleHttp\ClientInterface::MAJOR_VERSION;
+ } elseif (\defined('\\Google\\Site_Kit_Dependencies\\GuzzleHttp\\ClientInterface::VERSION')) {
+ $guzzleVersion = (int) \substr(\Google\Site_Kit_Dependencies\GuzzleHttp\ClientInterface::VERSION, 0, 1);
+ }
+ if (5 === $guzzleVersion) {
+ $options = ['base_url' => $this->config['base_path'], 'defaults' => ['exceptions' => \false]];
+ if ($this->isAppEngine()) {
+ // set StreamHandler on AppEngine by default
+ $options['handler'] = new \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Client\StreamHandler();
+ $options['defaults']['verify'] = '/etc/ca-certificates.crt';
+ }
+ } elseif (6 === $guzzleVersion || 7 === $guzzleVersion) {
+ // guzzle 6 or 7
+ $options = ['base_uri' => $this->config['base_path'], 'http_errors' => \false];
+ } else {
+ throw new \LogicException('Could not find supported version of Guzzle.');
+ }
+ return new \Google\Site_Kit_Dependencies\GuzzleHttp\Client($options);
+ }
+ /**
+ * @return FetchAuthTokenCache
+ */
+ private function createApplicationDefaultCredentials()
+ {
+ $scopes = $this->prepareScopes();
+ $sub = $this->config['subject'];
+ $signingKey = $this->config['signing_key'];
+ // create credentials using values supplied in setAuthConfig
+ if ($signingKey) {
+ $serviceAccountCredentials = array('client_id' => $this->config['client_id'], 'client_email' => $this->config['client_email'], 'private_key' => $signingKey, 'type' => 'service_account', 'quota_project_id' => $this->config['quota_project']);
+ $credentials = \Google\Site_Kit_Dependencies\Google\Auth\CredentialsLoader::makeCredentials($scopes, $serviceAccountCredentials);
+ } else {
+ // When $sub is provided, we cannot pass cache classes to ::getCredentials
+ // because FetchAuthTokenCache::setSub does not exist.
+ // The result is when $sub is provided, calls to ::onGce are not cached.
+ $credentials = \Google\Site_Kit_Dependencies\Google\Auth\ApplicationDefaultCredentials::getCredentials($scopes, null, $sub ? null : $this->config['cache_config'], $sub ? null : $this->getCache(), $this->config['quota_project']);
+ }
+ // for service account domain-wide authority (impersonating a user)
+ // @see https://developers.google.com/identity/protocols/OAuth2ServiceAccount
+ if ($sub) {
+ if (!$credentials instanceof \Google\Site_Kit_Dependencies\Google\Auth\Credentials\ServiceAccountCredentials) {
+ throw new \DomainException('domain-wide authority requires service account credentials');
+ }
+ $credentials->setSub($sub);
+ }
+ // If we are not using FetchAuthTokenCache yet, create it now
+ if (!$credentials instanceof \Google\Site_Kit_Dependencies\Google\Auth\FetchAuthTokenCache) {
+ $credentials = new \Google\Site_Kit_Dependencies\Google\Auth\FetchAuthTokenCache($credentials, $this->config['cache_config'], $this->getCache());
+ }
+ return $credentials;
+ }
+ protected function getAuthHandler()
+ {
+ // Be very careful using the cache, as the underlying auth library's cache
+ // implementation is naive, and the cache keys do not account for user
+ // sessions.
+ //
+ // @see https://github.com/google/google-api-php-client/issues/821
+ return \Google\Site_Kit_Dependencies\Google\AuthHandler\AuthHandlerFactory::build($this->getCache(), $this->config['cache_config']);
+ }
+ private function createUserRefreshCredentials($scope, $refreshToken)
+ {
+ $creds = \array_filter(array('client_id' => $this->getClientId(), 'client_secret' => $this->getClientSecret(), 'refresh_token' => $refreshToken));
+ return new \Google\Site_Kit_Dependencies\Google\Auth\Credentials\UserRefreshCredentials($scope, $creds);
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Collection.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Collection.php
new file mode 100644
index 000000000..868fdcb22
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Collection.php
@@ -0,0 +1,100 @@
+{$this->collection_key}) && \is_array($this->{$this->collection_key})) {
+ \reset($this->{$this->collection_key});
+ }
+ }
+ /** @return mixed */
+ #[\ReturnTypeWillChange]
+ public function current()
+ {
+ $this->coerceType($this->key());
+ if (\is_array($this->{$this->collection_key})) {
+ return \current($this->{$this->collection_key});
+ }
+ }
+ /** @return mixed */
+ #[\ReturnTypeWillChange]
+ public function key()
+ {
+ if (isset($this->{$this->collection_key}) && \is_array($this->{$this->collection_key})) {
+ return \key($this->{$this->collection_key});
+ }
+ }
+ /** @return void */
+ #[\ReturnTypeWillChange]
+ public function next()
+ {
+ return \next($this->{$this->collection_key});
+ }
+ /** @return bool */
+ #[\ReturnTypeWillChange]
+ public function valid()
+ {
+ $key = $this->key();
+ return $key !== null && $key !== \false;
+ }
+ /** @return int */
+ #[\ReturnTypeWillChange]
+ public function count()
+ {
+ if (!isset($this->{$this->collection_key})) {
+ return 0;
+ }
+ return \count($this->{$this->collection_key});
+ }
+ /** @return bool */
+ public function offsetExists($offset)
+ {
+ if (!\is_numeric($offset)) {
+ return parent::offsetExists($offset);
+ }
+ return isset($this->{$this->collection_key}[$offset]);
+ }
+ /** @return mixed */
+ public function offsetGet($offset)
+ {
+ if (!\is_numeric($offset)) {
+ return parent::offsetGet($offset);
+ }
+ $this->coerceType($offset);
+ return $this->{$this->collection_key}[$offset];
+ }
+ /** @return void */
+ public function offsetSet($offset, $value)
+ {
+ if (!\is_numeric($offset)) {
+ parent::offsetSet($offset, $value);
+ }
+ $this->{$this->collection_key}[$offset] = $value;
+ }
+ /** @return void */
+ public function offsetUnset($offset)
+ {
+ if (!\is_numeric($offset)) {
+ parent::offsetUnset($offset);
+ }
+ unset($this->{$this->collection_key}[$offset]);
+ }
+ private function coerceType($offset)
+ {
+ $keyType = $this->keyType($this->collection_key);
+ if ($keyType && !\is_object($this->{$this->collection_key}[$offset])) {
+ $this->{$this->collection_key}[$offset] = new $keyType($this->{$this->collection_key}[$offset]);
+ }
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Exception.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Exception.php
new file mode 100644
index 000000000..e6688e656
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Exception.php
@@ -0,0 +1,23 @@
+client = $client;
+ $this->boundary = $boundary ?: \mt_rand();
+ $this->rootUrl = \rtrim($rootUrl ?: $this->client->getConfig('base_path'), '/');
+ $this->batchPath = $batchPath ?: self::BATCH_PATH;
+ }
+ public function add(\Google\Site_Kit_Dependencies\Psr\Http\Message\RequestInterface $request, $key = \false)
+ {
+ if (\false == $key) {
+ $key = \mt_rand();
+ }
+ $this->requests[$key] = $request;
+ }
+ public function execute()
+ {
+ $body = '';
+ $classes = array();
+ $batchHttpTemplate = <<requests as $key => $request) {
+ $firstLine = \sprintf('%s %s HTTP/%s', $request->getMethod(), $request->getRequestTarget(), $request->getProtocolVersion());
+ $content = (string) $request->getBody();
+ $headers = '';
+ foreach ($request->getHeaders() as $name => $values) {
+ $headers .= \sprintf("%s:%s\r\n", $name, \implode(', ', $values));
+ }
+ $body .= \sprintf($batchHttpTemplate, $this->boundary, $key, $firstLine, $headers, $content ? "\n" . $content : '');
+ $classes['response-' . $key] = $request->getHeaderLine('X-Php-Expected-Class');
+ }
+ $body .= "--{$this->boundary}--";
+ $body = \trim($body);
+ $url = $this->rootUrl . '/' . $this->batchPath;
+ $headers = array('Content-Type' => \sprintf('multipart/mixed; boundary=%s', $this->boundary), 'Content-Length' => \strlen($body));
+ $request = new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Request('POST', $url, $headers, $body);
+ $response = $this->client->execute($request);
+ return $this->parseResponse($response, $classes);
+ }
+ public function parseResponse(\Google\Site_Kit_Dependencies\Psr\Http\Message\ResponseInterface $response, $classes = array())
+ {
+ $contentType = $response->getHeaderLine('content-type');
+ $contentType = \explode(';', $contentType);
+ $boundary = \false;
+ foreach ($contentType as $part) {
+ $part = \explode('=', $part, 2);
+ if (isset($part[0]) && 'boundary' == \trim($part[0])) {
+ $boundary = $part[1];
+ }
+ }
+ $body = (string) $response->getBody();
+ if (!empty($body)) {
+ $body = \str_replace("--{$boundary}--", "--{$boundary}", $body);
+ $parts = \explode("--{$boundary}", $body);
+ $responses = array();
+ $requests = \array_values($this->requests);
+ foreach ($parts as $i => $part) {
+ $part = \trim($part);
+ if (!empty($part)) {
+ list($rawHeaders, $part) = \explode("\r\n\r\n", $part, 2);
+ $headers = $this->parseRawHeaders($rawHeaders);
+ $status = \substr($part, 0, \strpos($part, "\n"));
+ $status = \explode(" ", $status);
+ $status = $status[1];
+ list($partHeaders, $partBody) = $this->parseHttpResponse($part, \false);
+ $response = new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Response($status, $partHeaders, \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Utils::streamFor($partBody));
+ // Need content id.
+ $key = $headers['content-id'];
+ try {
+ $response = \Google\Site_Kit_Dependencies\Google\Http\REST::decodeHttpResponse($response, $requests[$i - 1]);
+ } catch (\Google\Site_Kit_Dependencies\Google\Service\Exception $e) {
+ // Store the exception as the response, so successful responses
+ // can be processed.
+ $response = $e;
+ }
+ $responses[$key] = $response;
+ }
+ }
+ return $responses;
+ }
+ return null;
+ }
+ private function parseRawHeaders($rawHeaders)
+ {
+ $headers = array();
+ $responseHeaderLines = \explode("\r\n", $rawHeaders);
+ foreach ($responseHeaderLines as $headerLine) {
+ if ($headerLine && \strpos($headerLine, ':') !== \false) {
+ list($header, $value) = \explode(': ', $headerLine, 2);
+ $header = \strtolower($header);
+ if (isset($headers[$header])) {
+ $headers[$header] = \array_merge((array) $headers[$header], (array) $value);
+ } else {
+ $headers[$header] = $value;
+ }
+ }
+ }
+ return $headers;
+ }
+ /**
+ * Used by the IO lib and also the batch processing.
+ *
+ * @param $respData
+ * @param $headerSize
+ * @return array
+ */
+ private function parseHttpResponse($respData, $headerSize)
+ {
+ // check proxy header
+ foreach (self::$CONNECTION_ESTABLISHED_HEADERS as $established_header) {
+ if (\stripos($respData, $established_header) !== \false) {
+ // existed, remove it
+ $respData = \str_ireplace($established_header, '', $respData);
+ // Subtract the proxy header size unless the cURL bug prior to 7.30.0
+ // is present which prevented the proxy header size from being taken into
+ // account.
+ // @TODO look into this
+ // if (!$this->needsQuirk()) {
+ // $headerSize -= strlen($established_header);
+ // }
+ break;
+ }
+ }
+ if ($headerSize) {
+ $responseBody = \substr($respData, $headerSize);
+ $responseHeaders = \substr($respData, 0, $headerSize);
+ } else {
+ $responseSegments = \explode("\r\n\r\n", $respData, 2);
+ $responseHeaders = $responseSegments[0];
+ $responseBody = isset($responseSegments[1]) ? $responseSegments[1] : null;
+ }
+ $responseHeaders = $this->parseRawHeaders($responseHeaders);
+ return array($responseHeaders, $responseBody);
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Http/MediaFileUpload.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Http/MediaFileUpload.php
new file mode 100644
index 000000000..ef2001272
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Http/MediaFileUpload.php
@@ -0,0 +1,280 @@
+client = $client;
+ $this->request = $request;
+ $this->mimeType = $mimeType;
+ $this->data = $data;
+ $this->resumable = $resumable;
+ $this->chunkSize = $chunkSize;
+ $this->progress = 0;
+ $this->process();
+ }
+ /**
+ * Set the size of the file that is being uploaded.
+ * @param $size - int file size in bytes
+ */
+ public function setFileSize($size)
+ {
+ $this->size = $size;
+ }
+ /**
+ * Return the progress on the upload
+ * @return int progress in bytes uploaded.
+ */
+ public function getProgress()
+ {
+ return $this->progress;
+ }
+ /**
+ * Send the next part of the file to upload.
+ * @param string|bool $chunk Optional. The next set of bytes to send. If false will
+ * use $data passed at construct time.
+ */
+ public function nextChunk($chunk = \false)
+ {
+ $resumeUri = $this->getResumeUri();
+ if (\false == $chunk) {
+ $chunk = \substr($this->data, $this->progress, $this->chunkSize);
+ }
+ $lastBytePos = $this->progress + \strlen($chunk) - 1;
+ $headers = array('content-range' => "bytes {$this->progress}-{$lastBytePos}/{$this->size}", 'content-length' => \strlen($chunk), 'expect' => '');
+ $request = new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Request('PUT', $resumeUri, $headers, \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Utils::streamFor($chunk));
+ return $this->makePutRequest($request);
+ }
+ /**
+ * Return the HTTP result code from the last call made.
+ * @return int code
+ */
+ public function getHttpResultCode()
+ {
+ return $this->httpResultCode;
+ }
+ /**
+ * Sends a PUT-Request to google drive and parses the response,
+ * setting the appropiate variables from the response()
+ *
+ * @param RequestInterface $request the Request which will be send
+ *
+ * @return false|mixed false when the upload is unfinished or the decoded http response
+ *
+ */
+ private function makePutRequest(\Google\Site_Kit_Dependencies\Psr\Http\Message\RequestInterface $request)
+ {
+ $response = $this->client->execute($request);
+ $this->httpResultCode = $response->getStatusCode();
+ if (308 == $this->httpResultCode) {
+ // Track the amount uploaded.
+ $range = $response->getHeaderLine('range');
+ if ($range) {
+ $range_array = \explode('-', $range);
+ $this->progress = $range_array[1] + 1;
+ }
+ // Allow for changing upload URLs.
+ $location = $response->getHeaderLine('location');
+ if ($location) {
+ $this->resumeUri = $location;
+ }
+ // No problems, but upload not complete.
+ return \false;
+ }
+ return \Google\Site_Kit_Dependencies\Google\Http\REST::decodeHttpResponse($response, $this->request);
+ }
+ /**
+ * Resume a previously unfinished upload
+ * @param $resumeUri the resume-URI of the unfinished, resumable upload.
+ */
+ public function resume($resumeUri)
+ {
+ $this->resumeUri = $resumeUri;
+ $headers = array('content-range' => "bytes */{$this->size}", 'content-length' => 0);
+ $httpRequest = new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Request('PUT', $this->resumeUri, $headers);
+ return $this->makePutRequest($httpRequest);
+ }
+ /**
+ * @return RequestInterface
+ * @visible for testing
+ */
+ private function process()
+ {
+ $this->transformToUploadUrl();
+ $request = $this->request;
+ $postBody = '';
+ $contentType = \false;
+ $meta = (string) $request->getBody();
+ $meta = \is_string($meta) ? \json_decode($meta, \true) : $meta;
+ $uploadType = $this->getUploadType($meta);
+ $request = $request->withUri(\Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Uri::withQueryValue($request->getUri(), 'uploadType', $uploadType));
+ $mimeType = $this->mimeType ?: $request->getHeaderLine('content-type');
+ if (self::UPLOAD_RESUMABLE_TYPE == $uploadType) {
+ $contentType = $mimeType;
+ $postBody = \is_string($meta) ? $meta : \json_encode($meta);
+ } else {
+ if (self::UPLOAD_MEDIA_TYPE == $uploadType) {
+ $contentType = $mimeType;
+ $postBody = $this->data;
+ } else {
+ if (self::UPLOAD_MULTIPART_TYPE == $uploadType) {
+ // This is a multipart/related upload.
+ $boundary = $this->boundary ?: \mt_rand();
+ $boundary = \str_replace('"', '', $boundary);
+ $contentType = 'multipart/related; boundary=' . $boundary;
+ $related = "--{$boundary}\r\n";
+ $related .= "Content-Type: application/json; charset=UTF-8\r\n";
+ $related .= "\r\n" . \json_encode($meta) . "\r\n";
+ $related .= "--{$boundary}\r\n";
+ $related .= "Content-Type: {$mimeType}\r\n";
+ $related .= "Content-Transfer-Encoding: base64\r\n";
+ $related .= "\r\n" . \base64_encode($this->data) . "\r\n";
+ $related .= "--{$boundary}--";
+ $postBody = $related;
+ }
+ }
+ }
+ $request = $request->withBody(\Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Utils::streamFor($postBody));
+ if (isset($contentType) && $contentType) {
+ $request = $request->withHeader('content-type', $contentType);
+ }
+ return $this->request = $request;
+ }
+ /**
+ * Valid upload types:
+ * - resumable (UPLOAD_RESUMABLE_TYPE)
+ * - media (UPLOAD_MEDIA_TYPE)
+ * - multipart (UPLOAD_MULTIPART_TYPE)
+ * @param $meta
+ * @return string
+ * @visible for testing
+ */
+ public function getUploadType($meta)
+ {
+ if ($this->resumable) {
+ return self::UPLOAD_RESUMABLE_TYPE;
+ }
+ if (\false == $meta && $this->data) {
+ return self::UPLOAD_MEDIA_TYPE;
+ }
+ return self::UPLOAD_MULTIPART_TYPE;
+ }
+ public function getResumeUri()
+ {
+ if (null === $this->resumeUri) {
+ $this->resumeUri = $this->fetchResumeUri();
+ }
+ return $this->resumeUri;
+ }
+ private function fetchResumeUri()
+ {
+ $body = $this->request->getBody();
+ if ($body) {
+ $headers = array('content-type' => 'application/json; charset=UTF-8', 'content-length' => $body->getSize(), 'x-upload-content-type' => $this->mimeType, 'x-upload-content-length' => $this->size, 'expect' => '');
+ foreach ($headers as $key => $value) {
+ $this->request = $this->request->withHeader($key, $value);
+ }
+ }
+ $response = $this->client->execute($this->request, \false);
+ $location = $response->getHeaderLine('location');
+ $code = $response->getStatusCode();
+ if (200 == $code && \true == $location) {
+ return $location;
+ }
+ $message = $code;
+ $body = \json_decode((string) $this->request->getBody(), \true);
+ if (isset($body['error']['errors'])) {
+ $message .= ': ';
+ foreach ($body['error']['errors'] as $error) {
+ $message .= "{$error['domain']}, {$error['message']};";
+ }
+ $message = \rtrim($message, ';');
+ }
+ $error = "Failed to start the resumable upload (HTTP {$message})";
+ $this->client->getLogger()->error($error);
+ throw new \Google\Site_Kit_Dependencies\Google\Exception($error);
+ }
+ private function transformToUploadUrl()
+ {
+ $parts = \parse_url((string) $this->request->getUri());
+ if (!isset($parts['path'])) {
+ $parts['path'] = '';
+ }
+ $parts['path'] = '/upload' . $parts['path'];
+ $uri = \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Uri::fromParts($parts);
+ $this->request = $this->request->withUri($uri);
+ }
+ public function setChunkSize($chunkSize)
+ {
+ $this->chunkSize = $chunkSize;
+ }
+ public function getRequest()
+ {
+ return $this->request;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Http/REST.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Http/REST.php
new file mode 100644
index 000000000..9d18308a1
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Http/REST.php
@@ -0,0 +1,150 @@
+getMethod(), (string) $request->getUri()), array(\get_class(), 'doExecute'), array($client, $request, $expectedClass));
+ if (null !== $retryMap) {
+ $runner->setRetryMap($retryMap);
+ }
+ return $runner->run();
+ }
+ /**
+ * Executes a Psr\Http\Message\RequestInterface
+ *
+ * @param Client $client
+ * @param RequestInterface $request
+ * @param string $expectedClass
+ * @return array decoded result
+ * @throws \Google\Service\Exception on server side error (ie: not authenticated,
+ * invalid or malformed post body, invalid url)
+ */
+ public static function doExecute(\Google\Site_Kit_Dependencies\GuzzleHttp\ClientInterface $client, \Google\Site_Kit_Dependencies\Psr\Http\Message\RequestInterface $request, $expectedClass = null)
+ {
+ try {
+ $httpHandler = \Google\Site_Kit_Dependencies\Google\Auth\HttpHandler\HttpHandlerFactory::build($client);
+ $response = $httpHandler($request);
+ } catch (\Google\Site_Kit_Dependencies\GuzzleHttp\Exception\RequestException $e) {
+ // if Guzzle throws an exception, catch it and handle the response
+ if (!$e->hasResponse()) {
+ throw $e;
+ }
+ $response = $e->getResponse();
+ // specific checking for Guzzle 5: convert to PSR7 response
+ if ($response instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Message\ResponseInterface) {
+ $response = new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Response($response->getStatusCode(), $response->getHeaders() ?: [], $response->getBody(), $response->getProtocolVersion(), $response->getReasonPhrase());
+ }
+ }
+ return self::decodeHttpResponse($response, $request, $expectedClass);
+ }
+ /**
+ * Decode an HTTP Response.
+ * @static
+ * @throws \Google\Service\Exception
+ * @param RequestInterface $response The http response to be decoded.
+ * @param ResponseInterface $response
+ * @param string $expectedClass
+ * @return mixed|null
+ */
+ public static function decodeHttpResponse(\Google\Site_Kit_Dependencies\Psr\Http\Message\ResponseInterface $response, \Google\Site_Kit_Dependencies\Psr\Http\Message\RequestInterface $request = null, $expectedClass = null)
+ {
+ $code = $response->getStatusCode();
+ // retry strategy
+ if (\intVal($code) >= 400) {
+ // if we errored out, it should be safe to grab the response body
+ $body = (string) $response->getBody();
+ // Check if we received errors, and add those to the Exception for convenience
+ throw new \Google\Site_Kit_Dependencies\Google\Service\Exception($body, $code, null, self::getResponseErrors($body));
+ }
+ // Ensure we only pull the entire body into memory if the request is not
+ // of media type
+ $body = self::decodeBody($response, $request);
+ if ($expectedClass = self::determineExpectedClass($expectedClass, $request)) {
+ $json = \json_decode($body, \true);
+ return new $expectedClass($json);
+ }
+ return $response;
+ }
+ private static function decodeBody(\Google\Site_Kit_Dependencies\Psr\Http\Message\ResponseInterface $response, \Google\Site_Kit_Dependencies\Psr\Http\Message\RequestInterface $request = null)
+ {
+ if (self::isAltMedia($request)) {
+ // don't decode the body, it's probably a really long string
+ return '';
+ }
+ return (string) $response->getBody();
+ }
+ private static function determineExpectedClass($expectedClass, \Google\Site_Kit_Dependencies\Psr\Http\Message\RequestInterface $request = null)
+ {
+ // "false" is used to explicitly prevent an expected class from being returned
+ if (\false === $expectedClass) {
+ return null;
+ }
+ // if we don't have a request, we just use what's passed in
+ if (null === $request) {
+ return $expectedClass;
+ }
+ // return what we have in the request header if one was not supplied
+ return $expectedClass ?: $request->getHeaderLine('X-Php-Expected-Class');
+ }
+ private static function getResponseErrors($body)
+ {
+ $json = \json_decode($body, \true);
+ if (isset($json['error']['errors'])) {
+ return $json['error']['errors'];
+ }
+ return null;
+ }
+ private static function isAltMedia(\Google\Site_Kit_Dependencies\Psr\Http\Message\RequestInterface $request = null)
+ {
+ if ($request && ($qs = $request->getUri()->getQuery())) {
+ \parse_str($qs, $query);
+ if (isset($query['alt']) && $query['alt'] == 'media') {
+ return \true;
+ }
+ }
+ return \false;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Model.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Model.php
new file mode 100644
index 000000000..8fb0d0c17
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Model.php
@@ -0,0 +1,304 @@
+mapTypes($array);
+ }
+ $this->gapiInit();
+ }
+ /**
+ * Getter that handles passthrough access to the data array, and lazy object creation.
+ * @param string $key Property name.
+ * @return mixed The value if any, or null.
+ */
+ public function __get($key)
+ {
+ $keyType = $this->keyType($key);
+ $keyDataType = $this->dataType($key);
+ if ($keyType && !isset($this->processed[$key])) {
+ if (isset($this->modelData[$key])) {
+ $val = $this->modelData[$key];
+ } elseif ($keyDataType == 'array' || $keyDataType == 'map') {
+ $val = array();
+ } else {
+ $val = null;
+ }
+ if ($this->isAssociativeArray($val)) {
+ if ($keyDataType && 'map' == $keyDataType) {
+ foreach ($val as $arrayKey => $arrayItem) {
+ $this->modelData[$key][$arrayKey] = new $keyType($arrayItem);
+ }
+ } else {
+ $this->modelData[$key] = new $keyType($val);
+ }
+ } else {
+ if (\is_array($val)) {
+ $arrayObject = array();
+ foreach ($val as $arrayIndex => $arrayItem) {
+ $arrayObject[$arrayIndex] = new $keyType($arrayItem);
+ }
+ $this->modelData[$key] = $arrayObject;
+ }
+ }
+ $this->processed[$key] = \true;
+ }
+ return isset($this->modelData[$key]) ? $this->modelData[$key] : null;
+ }
+ /**
+ * Initialize this object's properties from an array.
+ *
+ * @param array $array Used to seed this object's properties.
+ * @return void
+ */
+ protected function mapTypes($array)
+ {
+ // Hard initialise simple types, lazy load more complex ones.
+ foreach ($array as $key => $val) {
+ if ($keyType = $this->keyType($key)) {
+ $dataType = $this->dataType($key);
+ if ($dataType == 'array' || $dataType == 'map') {
+ $this->{$key} = array();
+ foreach ($val as $itemKey => $itemVal) {
+ if ($itemVal instanceof $keyType) {
+ $this->{$key}[$itemKey] = $itemVal;
+ } else {
+ $this->{$key}[$itemKey] = new $keyType($itemVal);
+ }
+ }
+ } elseif ($val instanceof $keyType) {
+ $this->{$key} = $val;
+ } else {
+ $this->{$key} = new $keyType($val);
+ }
+ unset($array[$key]);
+ } elseif (\property_exists($this, $key)) {
+ $this->{$key} = $val;
+ unset($array[$key]);
+ } elseif (\property_exists($this, $camelKey = $this->camelCase($key))) {
+ // This checks if property exists as camelCase, leaving it in array as snake_case
+ // in case of backwards compatibility issues.
+ $this->{$camelKey} = $val;
+ }
+ }
+ $this->modelData = $array;
+ }
+ /**
+ * Blank initialiser to be used in subclasses to do post-construction initialisation - this
+ * avoids the need for subclasses to have to implement the variadics handling in their
+ * constructors.
+ */
+ protected function gapiInit()
+ {
+ return;
+ }
+ /**
+ * Create a simplified object suitable for straightforward
+ * conversion to JSON. This is relatively expensive
+ * due to the usage of reflection, but shouldn't be called
+ * a whole lot, and is the most straightforward way to filter.
+ */
+ public function toSimpleObject()
+ {
+ $object = new \stdClass();
+ // Process all other data.
+ foreach ($this->modelData as $key => $val) {
+ $result = $this->getSimpleValue($val);
+ if ($result !== null) {
+ $object->{$key} = $this->nullPlaceholderCheck($result);
+ }
+ }
+ // Process all public properties.
+ $reflect = new \ReflectionObject($this);
+ $props = $reflect->getProperties(\ReflectionProperty::IS_PUBLIC);
+ foreach ($props as $member) {
+ $name = $member->getName();
+ $result = $this->getSimpleValue($this->{$name});
+ if ($result !== null) {
+ $name = $this->getMappedName($name);
+ $object->{$name} = $this->nullPlaceholderCheck($result);
+ }
+ }
+ return $object;
+ }
+ /**
+ * Handle different types of values, primarily
+ * other objects and map and array data types.
+ */
+ private function getSimpleValue($value)
+ {
+ if ($value instanceof \Google\Site_Kit_Dependencies\Google\Model) {
+ return $value->toSimpleObject();
+ } else {
+ if (\is_array($value)) {
+ $return = array();
+ foreach ($value as $key => $a_value) {
+ $a_value = $this->getSimpleValue($a_value);
+ if ($a_value !== null) {
+ $key = $this->getMappedName($key);
+ $return[$key] = $this->nullPlaceholderCheck($a_value);
+ }
+ }
+ return $return;
+ }
+ }
+ return $value;
+ }
+ /**
+ * Check whether the value is the null placeholder and return true null.
+ */
+ private function nullPlaceholderCheck($value)
+ {
+ if ($value === self::NULL_VALUE) {
+ return null;
+ }
+ return $value;
+ }
+ /**
+ * If there is an internal name mapping, use that.
+ */
+ private function getMappedName($key)
+ {
+ if (isset($this->internal_gapi_mappings, $this->internal_gapi_mappings[$key])) {
+ $key = $this->internal_gapi_mappings[$key];
+ }
+ return $key;
+ }
+ /**
+ * Returns true only if the array is associative.
+ * @param array $array
+ * @return bool True if the array is associative.
+ */
+ protected function isAssociativeArray($array)
+ {
+ if (!\is_array($array)) {
+ return \false;
+ }
+ $keys = \array_keys($array);
+ foreach ($keys as $key) {
+ if (\is_string($key)) {
+ return \true;
+ }
+ }
+ return \false;
+ }
+ /**
+ * Verify if $obj is an array.
+ * @throws \Google\Exception Thrown if $obj isn't an array.
+ * @param array $obj Items that should be validated.
+ * @param string $method Method expecting an array as an argument.
+ */
+ public function assertIsArray($obj, $method)
+ {
+ if ($obj && !\is_array($obj)) {
+ throw new \Google\Site_Kit_Dependencies\Google\Exception("Incorrect parameter type passed to {$method}(). Expected an array.");
+ }
+ }
+ /** @return bool */
+ #[\ReturnTypeWillChange]
+ public function offsetExists($offset)
+ {
+ return isset($this->{$offset}) || isset($this->modelData[$offset]);
+ }
+ /** @return mixed */
+ #[\ReturnTypeWillChange]
+ public function offsetGet($offset)
+ {
+ return isset($this->{$offset}) ? $this->{$offset} : $this->__get($offset);
+ }
+ /** @return void */
+ #[\ReturnTypeWillChange]
+ public function offsetSet($offset, $value)
+ {
+ if (\property_exists($this, $offset)) {
+ $this->{$offset} = $value;
+ } else {
+ $this->modelData[$offset] = $value;
+ $this->processed[$offset] = \true;
+ }
+ }
+ /** @return void */
+ #[\ReturnTypeWillChange]
+ public function offsetUnset($offset)
+ {
+ unset($this->modelData[$offset]);
+ }
+ protected function keyType($key)
+ {
+ $keyType = $key . "Type";
+ // ensure keyType is a valid class
+ if (\property_exists($this, $keyType) && \class_exists($this->{$keyType})) {
+ return $this->{$keyType};
+ }
+ }
+ protected function dataType($key)
+ {
+ $dataType = $key . "DataType";
+ if (\property_exists($this, $dataType)) {
+ return $this->{$dataType};
+ }
+ }
+ public function __isset($key)
+ {
+ return isset($this->modelData[$key]);
+ }
+ public function __unset($key)
+ {
+ unset($this->modelData[$key]);
+ }
+ /**
+ * Convert a string to camelCase
+ * @param string $value
+ * @return string
+ */
+ private function camelCase($value)
+ {
+ $value = \ucwords(\str_replace(array('-', '_'), ' ', $value));
+ $value = \str_replace(' ', '', $value);
+ $value[0] = \strtolower($value[0]);
+ return $value;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Service.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Service.php
new file mode 100644
index 000000000..50135cb6a
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Service.php
@@ -0,0 +1,62 @@
+client = $clientOrConfig;
+ } elseif (\is_array($clientOrConfig)) {
+ $this->client = new \Google\Site_Kit_Dependencies\Google\Client($clientOrConfig ?: []);
+ } else {
+ $errorMessage = 'Google\\Site_Kit_Dependencies\\constructor must be array or instance of Google\\Client';
+ if (\class_exists('TypeError')) {
+ throw new \TypeError($errorMessage);
+ }
+ \trigger_error($errorMessage, \E_USER_ERROR);
+ }
+ }
+ /**
+ * Return the associated Google\Client class.
+ * @return \Google\Client
+ */
+ public function getClient()
+ {
+ return $this->client;
+ }
+ /**
+ * Create a new HTTP Batch handler for this service
+ *
+ * @return Batch
+ */
+ public function createBatch()
+ {
+ return new \Google\Site_Kit_Dependencies\Google\Http\Batch($this->client, \false, $this->rootUrl, $this->batchPath);
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Service/Exception.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Service/Exception.php
new file mode 100644
index 000000000..d1160e017
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Service/Exception.php
@@ -0,0 +1,63 @@
+= 0) {
+ parent::__construct($message, $code, $previous);
+ } else {
+ parent::__construct($message, $code);
+ }
+ $this->errors = $errors;
+ }
+ /**
+ * An example of the possible errors returned.
+ *
+ * {
+ * "domain": "global",
+ * "reason": "authError",
+ * "message": "Invalid Credentials",
+ * "locationType": "header",
+ * "location": "Authorization",
+ * }
+ *
+ * @return [{string, string}] List of errors return in an HTTP response or [].
+ */
+ public function getErrors()
+ {
+ return $this->errors;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Service/Resource.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Service/Resource.php
new file mode 100644
index 000000000..1a4af0fac
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Service/Resource.php
@@ -0,0 +1,216 @@
+ array('type' => 'string', 'location' => 'query'), 'fields' => array('type' => 'string', 'location' => 'query'), 'trace' => array('type' => 'string', 'location' => 'query'), 'userIp' => array('type' => 'string', 'location' => 'query'), 'quotaUser' => array('type' => 'string', 'location' => 'query'), 'data' => array('type' => 'string', 'location' => 'body'), 'mimeType' => array('type' => 'string', 'location' => 'header'), 'uploadType' => array('type' => 'string', 'location' => 'query'), 'mediaUpload' => array('type' => 'complex', 'location' => 'query'), 'prettyPrint' => array('type' => 'string', 'location' => 'query'));
+ /** @var string $rootUrl */
+ private $rootUrl;
+ /** @var \Google\Client $client */
+ private $client;
+ /** @var string $serviceName */
+ private $serviceName;
+ /** @var string $servicePath */
+ private $servicePath;
+ /** @var string $resourceName */
+ private $resourceName;
+ /** @var array $methods */
+ private $methods;
+ public function __construct($service, $serviceName, $resourceName, $resource)
+ {
+ $this->rootUrl = $service->rootUrl;
+ $this->client = $service->getClient();
+ $this->servicePath = $service->servicePath;
+ $this->serviceName = $serviceName;
+ $this->resourceName = $resourceName;
+ $this->methods = \is_array($resource) && isset($resource['methods']) ? $resource['methods'] : array($resourceName => $resource);
+ }
+ /**
+ * TODO: This function needs simplifying.
+ * @param $name
+ * @param $arguments
+ * @param $expectedClass - optional, the expected class name
+ * @return mixed|$expectedClass|ResponseInterface|RequestInterface
+ * @throws \Google\Exception
+ */
+ public function call($name, $arguments, $expectedClass = null)
+ {
+ if (!isset($this->methods[$name])) {
+ $this->client->getLogger()->error('Service method unknown', array('service' => $this->serviceName, 'resource' => $this->resourceName, 'method' => $name));
+ throw new \Google\Site_Kit_Dependencies\Google\Exception("Unknown function: " . "{$this->serviceName}->{$this->resourceName}->{$name}()");
+ }
+ $method = $this->methods[$name];
+ $parameters = $arguments[0];
+ // postBody is a special case since it's not defined in the discovery
+ // document as parameter, but we abuse the param entry for storing it.
+ $postBody = null;
+ if (isset($parameters['postBody'])) {
+ if ($parameters['postBody'] instanceof \Google\Site_Kit_Dependencies\Google\Model) {
+ // In the cases the post body is an existing object, we want
+ // to use the smart method to create a simple object for
+ // for JSONification.
+ $parameters['postBody'] = $parameters['postBody']->toSimpleObject();
+ } else {
+ if (\is_object($parameters['postBody'])) {
+ // If the post body is another kind of object, we will try and
+ // wrangle it into a sensible format.
+ $parameters['postBody'] = $this->convertToArrayAndStripNulls($parameters['postBody']);
+ }
+ }
+ $postBody = (array) $parameters['postBody'];
+ unset($parameters['postBody']);
+ }
+ // TODO: optParams here probably should have been
+ // handled already - this may well be redundant code.
+ if (isset($parameters['optParams'])) {
+ $optParams = $parameters['optParams'];
+ unset($parameters['optParams']);
+ $parameters = \array_merge($parameters, $optParams);
+ }
+ if (!isset($method['parameters'])) {
+ $method['parameters'] = array();
+ }
+ $method['parameters'] = \array_merge($this->stackParameters, $method['parameters']);
+ foreach ($parameters as $key => $val) {
+ if ($key != 'postBody' && !isset($method['parameters'][$key])) {
+ $this->client->getLogger()->error('Service parameter unknown', array('service' => $this->serviceName, 'resource' => $this->resourceName, 'method' => $name, 'parameter' => $key));
+ throw new \Google\Site_Kit_Dependencies\Google\Exception("({$name}) unknown parameter: '{$key}'");
+ }
+ }
+ foreach ($method['parameters'] as $paramName => $paramSpec) {
+ if (isset($paramSpec['required']) && $paramSpec['required'] && !isset($parameters[$paramName])) {
+ $this->client->getLogger()->error('Service parameter missing', array('service' => $this->serviceName, 'resource' => $this->resourceName, 'method' => $name, 'parameter' => $paramName));
+ throw new \Google\Site_Kit_Dependencies\Google\Exception("({$name}) missing required param: '{$paramName}'");
+ }
+ if (isset($parameters[$paramName])) {
+ $value = $parameters[$paramName];
+ $parameters[$paramName] = $paramSpec;
+ $parameters[$paramName]['value'] = $value;
+ unset($parameters[$paramName]['required']);
+ } else {
+ // Ensure we don't pass nulls.
+ unset($parameters[$paramName]);
+ }
+ }
+ $this->client->getLogger()->info('Service Call', array('service' => $this->serviceName, 'resource' => $this->resourceName, 'method' => $name, 'arguments' => $parameters));
+ // build the service uri
+ $url = $this->createRequestUri($method['path'], $parameters);
+ // NOTE: because we're creating the request by hand,
+ // and because the service has a rootUrl property
+ // the "base_uri" of the Http Client is not accounted for
+ $request = new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Request($method['httpMethod'], $url, ['content-type' => 'application/json'], $postBody ? \json_encode($postBody) : '');
+ // support uploads
+ if (isset($parameters['data'])) {
+ $mimeType = isset($parameters['mimeType']) ? $parameters['mimeType']['value'] : 'application/octet-stream';
+ $data = $parameters['data']['value'];
+ $upload = new \Google\Site_Kit_Dependencies\Google\Http\MediaFileUpload($this->client, $request, $mimeType, $data);
+ // pull down the modified request
+ $request = $upload->getRequest();
+ }
+ // if this is a media type, we will return the raw response
+ // rather than using an expected class
+ if (isset($parameters['alt']) && $parameters['alt']['value'] == 'media') {
+ $expectedClass = null;
+ }
+ // if the client is marked for deferring, rather than
+ // execute the request, return the response
+ if ($this->client->shouldDefer()) {
+ // @TODO find a better way to do this
+ $request = $request->withHeader('X-Php-Expected-Class', $expectedClass);
+ return $request;
+ }
+ return $this->client->execute($request, $expectedClass);
+ }
+ protected function convertToArrayAndStripNulls($o)
+ {
+ $o = (array) $o;
+ foreach ($o as $k => $v) {
+ if ($v === null) {
+ unset($o[$k]);
+ } elseif (\is_object($v) || \is_array($v)) {
+ $o[$k] = $this->convertToArrayAndStripNulls($o[$k]);
+ }
+ }
+ return $o;
+ }
+ /**
+ * Parse/expand request parameters and create a fully qualified
+ * request uri.
+ * @static
+ * @param string $restPath
+ * @param array $params
+ * @return string $requestUrl
+ */
+ public function createRequestUri($restPath, $params)
+ {
+ // Override the default servicePath address if the $restPath use a /
+ if ('/' == \substr($restPath, 0, 1)) {
+ $requestUrl = \substr($restPath, 1);
+ } else {
+ $requestUrl = $this->servicePath . $restPath;
+ }
+ // code for leading slash
+ if ($this->rootUrl) {
+ if ('/' !== \substr($this->rootUrl, -1) && '/' !== \substr($requestUrl, 0, 1)) {
+ $requestUrl = '/' . $requestUrl;
+ }
+ $requestUrl = $this->rootUrl . $requestUrl;
+ }
+ $uriTemplateVars = array();
+ $queryVars = array();
+ foreach ($params as $paramName => $paramSpec) {
+ if ($paramSpec['type'] == 'boolean') {
+ $paramSpec['value'] = $paramSpec['value'] ? 'true' : 'false';
+ }
+ if ($paramSpec['location'] == 'path') {
+ $uriTemplateVars[$paramName] = $paramSpec['value'];
+ } else {
+ if ($paramSpec['location'] == 'query') {
+ if (\is_array($paramSpec['value'])) {
+ foreach ($paramSpec['value'] as $value) {
+ $queryVars[] = $paramName . '=' . \rawurlencode(\rawurldecode($value));
+ }
+ } else {
+ $queryVars[] = $paramName . '=' . \rawurlencode(\rawurldecode($paramSpec['value']));
+ }
+ }
+ }
+ }
+ if (\count($uriTemplateVars)) {
+ $uriTemplateParser = new \Google\Site_Kit_Dependencies\Google\Utils\UriTemplate();
+ $requestUrl = $uriTemplateParser->parse($requestUrl, $uriTemplateVars);
+ }
+ if (\count($queryVars)) {
+ $requestUrl .= '?' . \implode('&', $queryVars);
+ }
+ return $requestUrl;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Task/Composer.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Task/Composer.php
new file mode 100644
index 000000000..1cb5a94c5
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Task/Composer.php
@@ -0,0 +1,77 @@
+getComposer();
+ $extra = $composer->getPackage()->getExtra();
+ $servicesToKeep = isset($extra['google/apiclient-services']) ? $extra['google/apiclient-services'] : [];
+ if ($servicesToKeep) {
+ $vendorDir = $composer->getConfig()->get('vendor-dir');
+ $serviceDir = \sprintf('%s/google/apiclient-services/src/Google/Service', $vendorDir);
+ if (!\is_dir($serviceDir)) {
+ // path for google/apiclient-services >= 0.200.0
+ $serviceDir = \sprintf('%s/google/apiclient-services/src', $vendorDir);
+ }
+ self::verifyServicesToKeep($serviceDir, $servicesToKeep);
+ $finder = self::getServicesToRemove($serviceDir, $servicesToKeep);
+ $filesystem = $filesystem ?: new \Google\Site_Kit_Dependencies\Symfony\Component\Filesystem\Filesystem();
+ if (0 !== ($count = \count($finder))) {
+ $event->getIO()->write(\sprintf('Removing %s google services', $count));
+ foreach ($finder as $file) {
+ $realpath = $file->getRealPath();
+ $filesystem->remove($realpath);
+ $filesystem->remove($realpath . '.php');
+ }
+ }
+ }
+ }
+ /**
+ * @throws InvalidArgumentException when the service doesn't exist
+ */
+ private static function verifyServicesToKeep($serviceDir, array $servicesToKeep)
+ {
+ $finder = (new \Google\Site_Kit_Dependencies\Symfony\Component\Finder\Finder())->directories()->depth('== 0');
+ foreach ($servicesToKeep as $service) {
+ if (!\preg_match('/^[a-zA-Z0-9]*$/', $service)) {
+ throw new \InvalidArgumentException(\sprintf('Invalid Google service name "%s"', $service));
+ }
+ try {
+ $finder->in($serviceDir . '/' . $service);
+ } catch (\InvalidArgumentException $e) {
+ throw new \InvalidArgumentException(\sprintf('Google service "%s" does not exist or was removed previously', $service));
+ }
+ }
+ }
+ private static function getServicesToRemove($serviceDir, array $servicesToKeep)
+ {
+ // find all files in the current directory
+ return (new \Google\Site_Kit_Dependencies\Symfony\Component\Finder\Finder())->directories()->depth('== 0')->in($serviceDir)->exclude($servicesToKeep);
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Task/Exception.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Task/Exception.php
new file mode 100644
index 000000000..8102f1fe7
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Task/Exception.php
@@ -0,0 +1,23 @@
+ self::TASK_RETRY_ALWAYS,
+ '503' => self::TASK_RETRY_ALWAYS,
+ 'rateLimitExceeded' => self::TASK_RETRY_ALWAYS,
+ 'userRateLimitExceeded' => self::TASK_RETRY_ALWAYS,
+ 6 => self::TASK_RETRY_ALWAYS,
+ // CURLE_COULDNT_RESOLVE_HOST
+ 7 => self::TASK_RETRY_ALWAYS,
+ // CURLE_COULDNT_CONNECT
+ 28 => self::TASK_RETRY_ALWAYS,
+ // CURLE_OPERATION_TIMEOUTED
+ 35 => self::TASK_RETRY_ALWAYS,
+ // CURLE_SSL_CONNECT_ERROR
+ 52 => self::TASK_RETRY_ALWAYS,
+ // CURLE_GOT_NOTHING
+ 'lighthouseError' => self::TASK_RETRY_NEVER,
+ ];
+ /**
+ * Creates a new task runner with exponential backoff support.
+ *
+ * @param array $config The task runner config
+ * @param string $name The name of the current task (used for logging)
+ * @param callable $action The task to run and possibly retry
+ * @param array $arguments The task arguments
+ * @throws \Google\Task\Exception when misconfigured
+ */
+ public function __construct($config, $name, $action, array $arguments = array())
+ {
+ if (isset($config['initial_delay'])) {
+ if ($config['initial_delay'] < 0) {
+ throw new \Google\Site_Kit_Dependencies\Google\Task\Exception('Task configuration `initial_delay` must not be negative.');
+ }
+ $this->delay = $config['initial_delay'];
+ }
+ if (isset($config['max_delay'])) {
+ if ($config['max_delay'] <= 0) {
+ throw new \Google\Site_Kit_Dependencies\Google\Task\Exception('Task configuration `max_delay` must be greater than 0.');
+ }
+ $this->maxDelay = $config['max_delay'];
+ }
+ if (isset($config['factor'])) {
+ if ($config['factor'] <= 0) {
+ throw new \Google\Site_Kit_Dependencies\Google\Task\Exception('Task configuration `factor` must be greater than 0.');
+ }
+ $this->factor = $config['factor'];
+ }
+ if (isset($config['jitter'])) {
+ if ($config['jitter'] <= 0) {
+ throw new \Google\Site_Kit_Dependencies\Google\Task\Exception('Task configuration `jitter` must be greater than 0.');
+ }
+ $this->jitter = $config['jitter'];
+ }
+ if (isset($config['retries'])) {
+ if ($config['retries'] < 0) {
+ throw new \Google\Site_Kit_Dependencies\Google\Task\Exception('Task configuration `retries` must not be negative.');
+ }
+ $this->maxAttempts += $config['retries'];
+ }
+ if (!\is_callable($action)) {
+ throw new \Google\Site_Kit_Dependencies\Google\Task\Exception('Task argument `$action` must be a valid callable.');
+ }
+ $this->action = $action;
+ $this->arguments = $arguments;
+ }
+ /**
+ * Checks if a retry can be attempted.
+ *
+ * @return boolean
+ */
+ public function canAttempt()
+ {
+ return $this->attempts < $this->maxAttempts;
+ }
+ /**
+ * Runs the task and (if applicable) automatically retries when errors occur.
+ *
+ * @return mixed
+ * @throws \Google\Service\Exception on failure when no retries are available.
+ */
+ public function run()
+ {
+ while ($this->attempt()) {
+ try {
+ return \call_user_func_array($this->action, $this->arguments);
+ } catch (\Google\Site_Kit_Dependencies\Google\Service\Exception $exception) {
+ $allowedRetries = $this->allowedRetries($exception->getCode(), $exception->getErrors());
+ if (!$this->canAttempt() || !$allowedRetries) {
+ throw $exception;
+ }
+ if ($allowedRetries > 0) {
+ $this->maxAttempts = \min($this->maxAttempts, $this->attempts + $allowedRetries);
+ }
+ }
+ }
+ }
+ /**
+ * Runs a task once, if possible. This is useful for bypassing the `run()`
+ * loop.
+ *
+ * NOTE: If this is not the first attempt, this function will sleep in
+ * accordance to the backoff configurations before running the task.
+ *
+ * @return boolean
+ */
+ public function attempt()
+ {
+ if (!$this->canAttempt()) {
+ return \false;
+ }
+ if ($this->attempts > 0) {
+ $this->backOff();
+ }
+ $this->attempts++;
+ return \true;
+ }
+ /**
+ * Sleeps in accordance to the backoff configurations.
+ */
+ private function backOff()
+ {
+ $delay = $this->getDelay();
+ \usleep($delay * 1000000);
+ }
+ /**
+ * Gets the delay (in seconds) for the current backoff period.
+ *
+ * @return float
+ */
+ private function getDelay()
+ {
+ $jitter = $this->getJitter();
+ $factor = $this->attempts > 1 ? $this->factor + $jitter : 1 + \abs($jitter);
+ return $this->delay = \min($this->maxDelay, $this->delay * $factor);
+ }
+ /**
+ * Gets the current jitter (random number between -$this->jitter and
+ * $this->jitter).
+ *
+ * @return float
+ */
+ private function getJitter()
+ {
+ return $this->jitter * 2 * \mt_rand() / \mt_getrandmax() - $this->jitter;
+ }
+ /**
+ * Gets the number of times the associated task can be retried.
+ *
+ * NOTE: -1 is returned if the task can be retried indefinitely
+ *
+ * @return integer
+ */
+ public function allowedRetries($code, $errors = array())
+ {
+ if (isset($this->retryMap[$code])) {
+ return $this->retryMap[$code];
+ }
+ if (!empty($errors) && isset($errors[0]['reason'], $this->retryMap[$errors[0]['reason']])) {
+ return $this->retryMap[$errors[0]['reason']];
+ }
+ return 0;
+ }
+ public function setRetryMap($retryMap)
+ {
+ $this->retryMap = $retryMap;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Utils/UriTemplate.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Utils/UriTemplate.php
new file mode 100644
index 000000000..b615778ba
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/Utils/UriTemplate.php
@@ -0,0 +1,266 @@
+ "reserved", "/" => "segments", "." => "dotprefix", "#" => "fragment", ";" => "semicolon", "?" => "form", "&" => "continuation");
+ /**
+ * @var reserved array
+ * These are the characters which should not be URL encoded in reserved
+ * strings.
+ */
+ private $reserved = array("=", ",", "!", "@", "|", ":", "/", "?", "#", "[", "]", '$', "&", "'", "(", ")", "*", "+", ";");
+ private $reservedEncoded = array("%3D", "%2C", "%21", "%40", "%7C", "%3A", "%2F", "%3F", "%23", "%5B", "%5D", "%24", "%26", "%27", "%28", "%29", "%2A", "%2B", "%3B");
+ public function parse($string, array $parameters)
+ {
+ return $this->resolveNextSection($string, $parameters);
+ }
+ /**
+ * This function finds the first matching {...} block and
+ * executes the replacement. It then calls itself to find
+ * subsequent blocks, if any.
+ */
+ private function resolveNextSection($string, $parameters)
+ {
+ $start = \strpos($string, "{");
+ if ($start === \false) {
+ return $string;
+ }
+ $end = \strpos($string, "}");
+ if ($end === \false) {
+ return $string;
+ }
+ $string = $this->replace($string, $start, $end, $parameters);
+ return $this->resolveNextSection($string, $parameters);
+ }
+ private function replace($string, $start, $end, $parameters)
+ {
+ // We know a data block will have {} round it, so we can strip that.
+ $data = \substr($string, $start + 1, $end - $start - 1);
+ // If the first character is one of the reserved operators, it effects
+ // the processing of the stream.
+ if (isset($this->operators[$data[0]])) {
+ $op = $this->operators[$data[0]];
+ $data = \substr($data, 1);
+ $prefix = "";
+ $prefix_on_missing = \false;
+ switch ($op) {
+ case "reserved":
+ // Reserved means certain characters should not be URL encoded
+ $data = $this->replaceVars($data, $parameters, ",", null, \true);
+ break;
+ case "fragment":
+ // Comma separated with fragment prefix. Bare values only.
+ $prefix = "#";
+ $prefix_on_missing = \true;
+ $data = $this->replaceVars($data, $parameters, ",", null, \true);
+ break;
+ case "segments":
+ // Slash separated data. Bare values only.
+ $prefix = "/";
+ $data = $this->replaceVars($data, $parameters, "/");
+ break;
+ case "dotprefix":
+ // Dot separated data. Bare values only.
+ $prefix = ".";
+ $prefix_on_missing = \true;
+ $data = $this->replaceVars($data, $parameters, ".");
+ break;
+ case "semicolon":
+ // Semicolon prefixed and separated. Uses the key name
+ $prefix = ";";
+ $data = $this->replaceVars($data, $parameters, ";", "=", \false, \true, \false);
+ break;
+ case "form":
+ // Standard URL format. Uses the key name
+ $prefix = "?";
+ $data = $this->replaceVars($data, $parameters, "&", "=");
+ break;
+ case "continuation":
+ // Standard URL, but with leading ampersand. Uses key name.
+ $prefix = "&";
+ $data = $this->replaceVars($data, $parameters, "&", "=");
+ break;
+ }
+ // Add the initial prefix character if data is valid.
+ if ($data || $data !== \false && $prefix_on_missing) {
+ $data = $prefix . $data;
+ }
+ } else {
+ // If no operator we replace with the defaults.
+ $data = $this->replaceVars($data, $parameters);
+ }
+ // This is chops out the {...} and replaces with the new section.
+ return \substr($string, 0, $start) . $data . \substr($string, $end + 1);
+ }
+ private function replaceVars($section, $parameters, $sep = ",", $combine = null, $reserved = \false, $tag_empty = \false, $combine_on_empty = \true)
+ {
+ if (\strpos($section, ",") === \false) {
+ // If we only have a single value, we can immediately process.
+ return $this->combine($section, $parameters, $sep, $combine, $reserved, $tag_empty, $combine_on_empty);
+ } else {
+ // If we have multiple values, we need to split and loop over them.
+ // Each is treated individually, then glued together with the
+ // separator character.
+ $vars = \explode(",", $section);
+ return $this->combineList(
+ $vars,
+ $sep,
+ $parameters,
+ $combine,
+ $reserved,
+ \false,
+ // Never emit empty strings in multi-param replacements
+ $combine_on_empty
+ );
+ }
+ }
+ public function combine($key, $parameters, $sep, $combine, $reserved, $tag_empty, $combine_on_empty)
+ {
+ $length = \false;
+ $explode = \false;
+ $skip_final_combine = \false;
+ $value = \false;
+ // Check for length restriction.
+ if (\strpos($key, ":") !== \false) {
+ list($key, $length) = \explode(":", $key);
+ }
+ // Check for explode parameter.
+ if ($key[\strlen($key) - 1] == "*") {
+ $explode = \true;
+ $key = \substr($key, 0, -1);
+ $skip_final_combine = \true;
+ }
+ // Define the list separator.
+ $list_sep = $explode ? $sep : ",";
+ if (isset($parameters[$key])) {
+ $data_type = $this->getDataType($parameters[$key]);
+ switch ($data_type) {
+ case self::TYPE_SCALAR:
+ $value = $this->getValue($parameters[$key], $length);
+ break;
+ case self::TYPE_LIST:
+ $values = array();
+ foreach ($parameters[$key] as $pkey => $pvalue) {
+ $pvalue = $this->getValue($pvalue, $length);
+ if ($combine && $explode) {
+ $values[$pkey] = $key . $combine . $pvalue;
+ } else {
+ $values[$pkey] = $pvalue;
+ }
+ }
+ $value = \implode($list_sep, $values);
+ if ($value == '') {
+ return '';
+ }
+ break;
+ case self::TYPE_MAP:
+ $values = array();
+ foreach ($parameters[$key] as $pkey => $pvalue) {
+ $pvalue = $this->getValue($pvalue, $length);
+ if ($explode) {
+ $pkey = $this->getValue($pkey, $length);
+ $values[] = $pkey . "=" . $pvalue;
+ // Explode triggers = combine.
+ } else {
+ $values[] = $pkey;
+ $values[] = $pvalue;
+ }
+ }
+ $value = \implode($list_sep, $values);
+ if ($value == '') {
+ return \false;
+ }
+ break;
+ }
+ } else {
+ if ($tag_empty) {
+ // If we are just indicating empty values with their key name, return that.
+ return $key;
+ } else {
+ // Otherwise we can skip this variable due to not being defined.
+ return \false;
+ }
+ }
+ if ($reserved) {
+ $value = \str_replace($this->reservedEncoded, $this->reserved, $value);
+ }
+ // If we do not need to include the key name, we just return the raw
+ // value.
+ if (!$combine || $skip_final_combine) {
+ return $value;
+ }
+ // Else we combine the key name: foo=bar, if value is not the empty string.
+ return $key . ($value != '' || $combine_on_empty ? $combine . $value : '');
+ }
+ /**
+ * Return the type of a passed in value
+ */
+ private function getDataType($data)
+ {
+ if (\is_array($data)) {
+ \reset($data);
+ if (\key($data) !== 0) {
+ return self::TYPE_MAP;
+ }
+ return self::TYPE_LIST;
+ }
+ return self::TYPE_SCALAR;
+ }
+ /**
+ * Utility function that merges multiple combine calls
+ * for multi-key templates.
+ */
+ private function combineList($vars, $sep, $parameters, $combine, $reserved, $tag_empty, $combine_on_empty)
+ {
+ $ret = array();
+ foreach ($vars as $var) {
+ $response = $this->combine($var, $parameters, $sep, $combine, $reserved, $tag_empty, $combine_on_empty);
+ if ($response === \false) {
+ continue;
+ }
+ $ret[] = $response;
+ }
+ return \implode($sep, $ret);
+ }
+ /**
+ * Utility function to encode and trim values
+ */
+ private function getValue($value, $length)
+ {
+ if ($length) {
+ $value = \substr($value, 0, $length);
+ }
+ $value = \rawurlencode($value);
+ return $value;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/aliases.php b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/aliases.php
new file mode 100644
index 000000000..cd97d27b5
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/apiclient/src/aliases.php
@@ -0,0 +1,82 @@
+ 'Google\\Site_Kit_Dependencies\Google_Client', 'Google\\Site_Kit_Dependencies\\Google\\Service' => 'Google\\Site_Kit_Dependencies\Google_Service', 'Google\\Site_Kit_Dependencies\\Google\\AccessToken\\Revoke' => 'Google\\Site_Kit_Dependencies\Google_AccessToken_Revoke', 'Google\\Site_Kit_Dependencies\\Google\\AccessToken\\Verify' => 'Google\\Site_Kit_Dependencies\Google_AccessToken_Verify', 'Google\\Site_Kit_Dependencies\\Google\\Model' => 'Google\\Site_Kit_Dependencies\Google_Model', 'Google\\Site_Kit_Dependencies\\Google\\Utils\\UriTemplate' => 'Google\\Site_Kit_Dependencies\Google_Utils_UriTemplate', 'Google\\Site_Kit_Dependencies\\Google\\AuthHandler\\Guzzle6AuthHandler' => 'Google\\Site_Kit_Dependencies\Google_AuthHandler_Guzzle6AuthHandler', 'Google\\Site_Kit_Dependencies\\Google\\AuthHandler\\Guzzle7AuthHandler' => 'Google\\Site_Kit_Dependencies\Google_AuthHandler_Guzzle7AuthHandler', 'Google\\Site_Kit_Dependencies\\Google\\AuthHandler\\Guzzle5AuthHandler' => 'Google\\Site_Kit_Dependencies\Google_AuthHandler_Guzzle5AuthHandler', 'Google\\Site_Kit_Dependencies\\Google\\AuthHandler\\AuthHandlerFactory' => 'Google\\Site_Kit_Dependencies\Google_AuthHandler_AuthHandlerFactory', 'Google\\Site_Kit_Dependencies\\Google\\Http\\Batch' => 'Google\\Site_Kit_Dependencies\Google_Http_Batch', 'Google\\Site_Kit_Dependencies\\Google\\Http\\MediaFileUpload' => 'Google\\Site_Kit_Dependencies\Google_Http_MediaFileUpload', 'Google\\Site_Kit_Dependencies\\Google\\Http\\REST' => 'Google\\Site_Kit_Dependencies\Google_Http_REST', 'Google\\Site_Kit_Dependencies\\Google\\Task\\Retryable' => 'Google\\Site_Kit_Dependencies\Google_Task_Retryable', 'Google\\Site_Kit_Dependencies\\Google\\Task\\Exception' => 'Google\\Site_Kit_Dependencies\Google_Task_Exception', 'Google\\Site_Kit_Dependencies\\Google\\Task\\Runner' => 'Google\\Site_Kit_Dependencies\Google_Task_Runner', 'Google\\Site_Kit_Dependencies\\Google\\Collection' => 'Google\\Site_Kit_Dependencies\Google_Collection', 'Google\\Site_Kit_Dependencies\\Google\\Service\\Exception' => 'Google\\Site_Kit_Dependencies\Google_Service_Exception', 'Google\\Site_Kit_Dependencies\\Google\\Service\\Resource' => 'Google\\Site_Kit_Dependencies\Google_Service_Resource', 'Google\\Site_Kit_Dependencies\\Google\\Exception' => 'Google\\Site_Kit_Dependencies\Google_Exception'];
+foreach ($classMap as $class => $alias) {
+ \class_alias($class, $alias);
+}
+/**
+ * This class needs to be defined explicitly as scripts must be recognized by
+ * the autoloader.
+ */
+class Google_Task_Composer extends \Google\Site_Kit_Dependencies\Google\Task\Composer
+{
+}
+if (\false) {
+ class Google_AccessToken_Revoke extends \Google\Site_Kit_Dependencies\Google\AccessToken\Revoke
+ {
+ }
+ class Google_AccessToken_Verify extends \Google\Site_Kit_Dependencies\Google\AccessToken\Verify
+ {
+ }
+ class Google_AuthHandler_AuthHandlerFactory extends \Google\Site_Kit_Dependencies\Google\AuthHandler\AuthHandlerFactory
+ {
+ }
+ class Google_AuthHandler_Guzzle5AuthHandler extends \Google\Site_Kit_Dependencies\Google\AuthHandler\Guzzle5AuthHandler
+ {
+ }
+ class Google_AuthHandler_Guzzle6AuthHandler extends \Google\Site_Kit_Dependencies\Google\AuthHandler\Guzzle6AuthHandler
+ {
+ }
+ class Google_AuthHandler_Guzzle7AuthHandler extends \Google\Site_Kit_Dependencies\Google\AuthHandler\Guzzle7AuthHandler
+ {
+ }
+ class Google_Client extends \Google\Site_Kit_Dependencies\Google\Client
+ {
+ }
+ class Google_Collection extends \Google\Site_Kit_Dependencies\Google\Collection
+ {
+ }
+ class Google_Exception extends \Google\Site_Kit_Dependencies\Google\Exception
+ {
+ }
+ class Google_Http_Batch extends \Google\Site_Kit_Dependencies\Google\Http\Batch
+ {
+ }
+ class Google_Http_MediaFileUpload extends \Google\Site_Kit_Dependencies\Google\Http\MediaFileUpload
+ {
+ }
+ class Google_Http_REST extends \Google\Site_Kit_Dependencies\Google\Http\REST
+ {
+ }
+ class Google_Model extends \Google\Site_Kit_Dependencies\Google\Model
+ {
+ }
+ class Google_Service extends \Google\Site_Kit_Dependencies\Google\Service
+ {
+ }
+ class Google_Service_Exception extends \Google\Site_Kit_Dependencies\Google\Service\Exception
+ {
+ }
+ class Google_Service_Resource extends \Google\Site_Kit_Dependencies\Google\Service\Resource
+ {
+ }
+ class Google_Task_Exception extends \Google\Site_Kit_Dependencies\Google\Task\Exception
+ {
+ }
+ interface Google_Task_Retryable extends \Google\Site_Kit_Dependencies\Google\Task\Retryable
+ {
+ }
+ class Google_Task_Runner extends \Google\Site_Kit_Dependencies\Google\Task\Runner
+ {
+ }
+ class Google_Utils_UriTemplate extends \Google\Site_Kit_Dependencies\Google\Utils\UriTemplate
+ {
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/COPYING b/wp-content/plugins/google-site-kit/third-party/google/auth/COPYING
new file mode 100644
index 000000000..b5d5055a2
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/auth/COPYING
@@ -0,0 +1,202 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright 2015 Google Inc.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/autoload.php b/wp-content/plugins/google-site-kit/third-party/google/auth/autoload.php
new file mode 100644
index 000000000..163a9633a
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/auth/autoload.php
@@ -0,0 +1,35 @@
+ 3) {
+ // Maximum class file path depth in this project is 3.
+ $classPath = \array_slice($classPath, 0, 3);
+ }
+ $filePath = \dirname(__FILE__) . '/src/' . \implode('/', $classPath) . '.php';
+ if (\file_exists($filePath)) {
+ require_once $filePath;
+ }
+}
+\spl_autoload_register('oauth2client_php_autoload');
diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/renovate.json b/wp-content/plugins/google-site-kit/third-party/google/auth/renovate.json
new file mode 100644
index 000000000..5fcce1121
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/auth/renovate.json
@@ -0,0 +1,6 @@
+{
+ "extends": [
+ "config:base",
+ ":preserveSemverRanges"
+ ]
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/src/AccessToken.php b/wp-content/plugins/google-site-kit/third-party/google/auth/src/AccessToken.php
new file mode 100644
index 000000000..ffb4a0876
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/auth/src/AccessToken.php
@@ -0,0 +1,388 @@
+httpHandler = $httpHandler ?: \Google\Site_Kit_Dependencies\Google\Auth\HttpHandler\HttpHandlerFactory::build(\Google\Site_Kit_Dependencies\Google\Auth\HttpHandler\HttpClientCache::getHttpClient());
+ $this->cache = $cache ?: new \Google\Site_Kit_Dependencies\Google\Auth\Cache\MemoryCacheItemPool();
+ }
+ /**
+ * Verifies an id token and returns the authenticated apiLoginTicket.
+ * Throws an exception if the id token is not valid.
+ * The audience parameter can be used to control which id tokens are
+ * accepted. By default, the id token must have been issued to this OAuth2 client.
+ *
+ * @param string $token The JSON Web Token to be verified.
+ * @param array $options [optional] Configuration options.
+ * @param string $options.audience The indended recipient of the token.
+ * @param string $options.issuer The intended issuer of the token.
+ * @param string $options.cacheKey The cache key of the cached certs. Defaults to
+ * the sha1 of $certsLocation if provided, otherwise is set to
+ * "federated_signon_certs_v3".
+ * @param string $options.certsLocation The location (remote or local) from which
+ * to retrieve certificates, if not cached. This value should only be
+ * provided in limited circumstances in which you are sure of the
+ * behavior.
+ * @param bool $options.throwException Whether the function should throw an
+ * exception if the verification fails. This is useful for
+ * determining the reason verification failed.
+ * @return array|bool the token payload, if successful, or false if not.
+ * @throws InvalidArgumentException If certs could not be retrieved from a local file.
+ * @throws InvalidArgumentException If received certs are in an invalid format.
+ * @throws InvalidArgumentException If the cert alg is not supported.
+ * @throws RuntimeException If certs could not be retrieved from a remote location.
+ * @throws UnexpectedValueException If the token issuer does not match.
+ * @throws UnexpectedValueException If the token audience does not match.
+ */
+ public function verify($token, array $options = [])
+ {
+ $audience = isset($options['audience']) ? $options['audience'] : null;
+ $issuer = isset($options['issuer']) ? $options['issuer'] : null;
+ $certsLocation = isset($options['certsLocation']) ? $options['certsLocation'] : self::FEDERATED_SIGNON_CERT_URL;
+ $cacheKey = isset($options['cacheKey']) ? $options['cacheKey'] : $this->getCacheKeyFromCertLocation($certsLocation);
+ $throwException = isset($options['throwException']) ? $options['throwException'] : \false;
+ // for backwards compatibility
+ // Check signature against each available cert.
+ $certs = $this->getCerts($certsLocation, $cacheKey, $options);
+ $alg = $this->determineAlg($certs);
+ if (!\in_array($alg, ['RS256', 'ES256'])) {
+ throw new \InvalidArgumentException('unrecognized "alg" in certs, expected ES256 or RS256');
+ }
+ try {
+ if ($alg == 'RS256') {
+ return $this->verifyRs256($token, $certs, $audience, $issuer);
+ }
+ return $this->verifyEs256($token, $certs, $audience, $issuer);
+ } catch (\Google\Site_Kit_Dependencies\Firebase\JWT\ExpiredException $e) {
+ // firebase/php-jwt 3+
+ } catch (\Google\Site_Kit_Dependencies\ExpiredException $e) {
+ // firebase/php-jwt 2
+ } catch (\Google\Site_Kit_Dependencies\Firebase\JWT\SignatureInvalidException $e) {
+ // firebase/php-jwt 3+
+ } catch (\Google\Site_Kit_Dependencies\SignatureInvalidException $e) {
+ // firebase/php-jwt 2
+ } catch (\Google\Site_Kit_Dependencies\SimpleJWT\InvalidTokenException $e) {
+ // simplejwt
+ } catch (\Google\Site_Kit_Dependencies\Google\Auth\DomainException $e) {
+ } catch (\InvalidArgumentException $e) {
+ } catch (\UnexpectedValueException $e) {
+ }
+ if ($throwException) {
+ throw $e;
+ }
+ return \false;
+ }
+ /**
+ * Identifies the expected algorithm to verify by looking at the "alg" key
+ * of the provided certs.
+ *
+ * @param array $certs Certificate array according to the JWK spec (see
+ * https://tools.ietf.org/html/rfc7517).
+ * @return string The expected algorithm, such as "ES256" or "RS256".
+ */
+ private function determineAlg(array $certs)
+ {
+ $alg = null;
+ foreach ($certs as $cert) {
+ if (empty($cert['alg'])) {
+ throw new \InvalidArgumentException('certs expects "alg" to be set');
+ }
+ $alg = $alg ?: $cert['alg'];
+ if ($alg != $cert['alg']) {
+ throw new \InvalidArgumentException('More than one alg detected in certs');
+ }
+ }
+ return $alg;
+ }
+ /**
+ * Verifies an ES256-signed JWT.
+ *
+ * @param string $token The JSON Web Token to be verified.
+ * @param array $certs Certificate array according to the JWK spec (see
+ * https://tools.ietf.org/html/rfc7517).
+ * @param string|null $audience If set, returns false if the provided
+ * audience does not match the "aud" claim on the JWT.
+ * @param string|null $issuer If set, returns false if the provided
+ * issuer does not match the "iss" claim on the JWT.
+ * @return array|bool the token payload, if successful, or false if not.
+ */
+ private function verifyEs256($token, array $certs, $audience = null, $issuer = null)
+ {
+ $this->checkSimpleJwt();
+ $jwkset = new \Google\Site_Kit_Dependencies\SimpleJWT\Keys\KeySet();
+ foreach ($certs as $cert) {
+ $jwkset->add(\Google\Site_Kit_Dependencies\SimpleJWT\Keys\KeyFactory::create($cert, 'php'));
+ }
+ // Validate the signature using the key set and ES256 algorithm.
+ $jwt = $this->callSimpleJwtDecode([$token, $jwkset, 'ES256']);
+ $payload = $jwt->getClaims();
+ if (isset($payload['aud'])) {
+ if ($audience && $payload['aud'] != $audience) {
+ throw new \UnexpectedValueException('Audience does not match');
+ }
+ }
+ // @see https://cloud.google.com/iap/docs/signed-headers-howto#verifying_the_jwt_payload
+ $issuer = $issuer ?: self::IAP_ISSUER;
+ if (!isset($payload['iss']) || $payload['iss'] !== $issuer) {
+ throw new \UnexpectedValueException('Issuer does not match');
+ }
+ return $payload;
+ }
+ /**
+ * Verifies an RS256-signed JWT.
+ *
+ * @param string $token The JSON Web Token to be verified.
+ * @param array $certs Certificate array according to the JWK spec (see
+ * https://tools.ietf.org/html/rfc7517).
+ * @param string|null $audience If set, returns false if the provided
+ * audience does not match the "aud" claim on the JWT.
+ * @param string|null $issuer If set, returns false if the provided
+ * issuer does not match the "iss" claim on the JWT.
+ * @return array|bool the token payload, if successful, or false if not.
+ */
+ private function verifyRs256($token, array $certs, $audience = null, $issuer = null)
+ {
+ $this->checkAndInitializePhpsec();
+ $keys = [];
+ foreach ($certs as $cert) {
+ if (empty($cert['kid'])) {
+ throw new \InvalidArgumentException('certs expects "kid" to be set');
+ }
+ if (empty($cert['n']) || empty($cert['e'])) {
+ throw new \InvalidArgumentException('RSA certs expects "n" and "e" to be set');
+ }
+ $rsa = new \Google\Site_Kit_Dependencies\phpseclib\Crypt\RSA();
+ $rsa->loadKey(['n' => new \Google\Site_Kit_Dependencies\phpseclib\Math\BigInteger($this->callJwtStatic('urlsafeB64Decode', [$cert['n']]), 256), 'e' => new \Google\Site_Kit_Dependencies\phpseclib\Math\BigInteger($this->callJwtStatic('urlsafeB64Decode', [$cert['e']]), 256)]);
+ // create an array of key IDs to certs for the JWT library
+ $keys[$cert['kid']] = $rsa->getPublicKey();
+ }
+ $payload = $this->callJwtStatic('decode', [$token, $keys, ['RS256']]);
+ if (\property_exists($payload, 'aud')) {
+ if ($audience && $payload->aud != $audience) {
+ throw new \UnexpectedValueException('Audience does not match');
+ }
+ }
+ // support HTTP and HTTPS issuers
+ // @see https://developers.google.com/identity/sign-in/web/backend-auth
+ $issuers = $issuer ? [$issuer] : [self::OAUTH2_ISSUER, self::OAUTH2_ISSUER_HTTPS];
+ if (!isset($payload->iss) || !\in_array($payload->iss, $issuers)) {
+ throw new \UnexpectedValueException('Issuer does not match');
+ }
+ return (array) $payload;
+ }
+ /**
+ * Revoke an OAuth2 access token or refresh token. This method will revoke the current access
+ * token, if a token isn't provided.
+ *
+ * @param string|array $token The token (access token or a refresh token) that should be revoked.
+ * @param array $options [optional] Configuration options.
+ * @return bool Returns True if the revocation was successful, otherwise False.
+ */
+ public function revoke($token, array $options = [])
+ {
+ if (\is_array($token)) {
+ if (isset($token['refresh_token'])) {
+ $token = $token['refresh_token'];
+ } else {
+ $token = $token['access_token'];
+ }
+ }
+ $body = \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Utils::streamFor(\http_build_query(['token' => $token]));
+ $request = new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Request('POST', self::OAUTH2_REVOKE_URI, ['Cache-Control' => 'no-store', 'Content-Type' => 'application/x-www-form-urlencoded'], $body);
+ $httpHandler = $this->httpHandler;
+ $response = $httpHandler($request, $options);
+ return $response->getStatusCode() == 200;
+ }
+ /**
+ * Gets federated sign-on certificates to use for verifying identity tokens.
+ * Returns certs as array structure, where keys are key ids, and values
+ * are PEM encoded certificates.
+ *
+ * @param string $location The location from which to retrieve certs.
+ * @param string $cacheKey The key under which to cache the retrieved certs.
+ * @param array $options [optional] Configuration options.
+ * @return array
+ * @throws InvalidArgumentException If received certs are in an invalid format.
+ */
+ private function getCerts($location, $cacheKey, array $options = [])
+ {
+ $cacheItem = $this->cache->getItem($cacheKey);
+ $certs = $cacheItem ? $cacheItem->get() : null;
+ $gotNewCerts = \false;
+ if (!$certs) {
+ $certs = $this->retrieveCertsFromLocation($location, $options);
+ $gotNewCerts = \true;
+ }
+ if (!isset($certs['keys'])) {
+ if ($location !== self::IAP_CERT_URL) {
+ throw new \InvalidArgumentException('federated sign-on certs expects "keys" to be set');
+ }
+ throw new \InvalidArgumentException('certs expects "keys" to be set');
+ }
+ // Push caching off until after verifying certs are in a valid format.
+ // Don't want to cache bad data.
+ if ($gotNewCerts) {
+ $cacheItem->expiresAt(new \DateTime('+1 hour'));
+ $cacheItem->set($certs);
+ $this->cache->save($cacheItem);
+ }
+ return $certs['keys'];
+ }
+ /**
+ * Retrieve and cache a certificates file.
+ *
+ * @param $url string location
+ * @param array $options [optional] Configuration options.
+ * @return array certificates
+ * @throws InvalidArgumentException If certs could not be retrieved from a local file.
+ * @throws RuntimeException If certs could not be retrieved from a remote location.
+ */
+ private function retrieveCertsFromLocation($url, array $options = [])
+ {
+ // If we're retrieving a local file, just grab it.
+ if (\strpos($url, 'http') !== 0) {
+ if (!\file_exists($url)) {
+ throw new \InvalidArgumentException(\sprintf('Failed to retrieve verification certificates from path: %s.', $url));
+ }
+ return \json_decode(\file_get_contents($url), \true);
+ }
+ $httpHandler = $this->httpHandler;
+ $response = $httpHandler(new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Request('GET', $url), $options);
+ if ($response->getStatusCode() == 200) {
+ return \json_decode((string) $response->getBody(), \true);
+ }
+ throw new \RuntimeException(\sprintf('Failed to retrieve verification certificates: "%s".', $response->getBody()->getContents()), $response->getStatusCode());
+ }
+ private function checkAndInitializePhpsec()
+ {
+ // @codeCoverageIgnoreStart
+ if (!\class_exists('Google\\Site_Kit_Dependencies\\phpseclib\\Crypt\\RSA')) {
+ throw new \RuntimeException('Please require phpseclib/phpseclib v2 to use this utility.');
+ }
+ // @codeCoverageIgnoreEnd
+ $this->setPhpsecConstants();
+ }
+ private function checkSimpleJwt()
+ {
+ // @codeCoverageIgnoreStart
+ if (!\class_exists('Google\\Site_Kit_Dependencies\\SimpleJWT\\JWT')) {
+ throw new \RuntimeException('Please require kelvinmo/simplejwt ^0.2 to use this utility.');
+ }
+ // @codeCoverageIgnoreEnd
+ }
+ /**
+ * phpseclib calls "phpinfo" by default, which requires special
+ * whitelisting in the AppEngine VM environment. This function
+ * sets constants to bypass the need for phpseclib to check phpinfo
+ *
+ * @see phpseclib/Math/BigInteger
+ * @see https://github.com/GoogleCloudPlatform/getting-started-php/issues/85
+ * @codeCoverageIgnore
+ */
+ private function setPhpsecConstants()
+ {
+ if (\filter_var(\getenv('GAE_VM'), \FILTER_VALIDATE_BOOLEAN)) {
+ if (!\defined('Google\\Site_Kit_Dependencies\\MATH_BIGINTEGER_OPENSSL_ENABLED')) {
+ \define('Google\\Site_Kit_Dependencies\\MATH_BIGINTEGER_OPENSSL_ENABLED', \true);
+ }
+ if (!\defined('Google\\Site_Kit_Dependencies\\CRYPT_RSA_MODE')) {
+ \define('Google\\Site_Kit_Dependencies\\CRYPT_RSA_MODE', \Google\Site_Kit_Dependencies\phpseclib\Crypt\RSA::MODE_OPENSSL);
+ }
+ }
+ }
+ /**
+ * Provide a hook to mock calls to the JWT static methods.
+ *
+ * @param string $method
+ * @param array $args
+ * @return mixed
+ */
+ protected function callJwtStatic($method, array $args = [])
+ {
+ $class = \class_exists('Google\\Site_Kit_Dependencies\\Firebase\\JWT\\JWT') ? 'Firebase\\JWT\\JWT' : 'JWT';
+ return \call_user_func_array([$class, $method], $args);
+ }
+ /**
+ * Provide a hook to mock calls to the JWT static methods.
+ *
+ * @param array $args
+ * @return mixed
+ */
+ protected function callSimpleJwtDecode(array $args = [])
+ {
+ return \call_user_func_array(['SimpleJWT\\JWT', 'decode'], $args);
+ }
+ /**
+ * Generate a cache key based on the cert location using sha1 with the
+ * exception of using "federated_signon_certs_v3" to preserve BC.
+ *
+ * @param string $certsLocation
+ * @return string
+ */
+ private function getCacheKeyFromCertLocation($certsLocation)
+ {
+ $key = $certsLocation === self::FEDERATED_SIGNON_CERT_URL ? 'federated_signon_certs_v3' : \sha1($certsLocation);
+ return 'google_auth_certs_cache|' . $key;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/src/ApplicationDefaultCredentials.php b/wp-content/plugins/google-site-kit/third-party/google/auth/src/ApplicationDefaultCredentials.php
new file mode 100644
index 000000000..d1a00f305
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/auth/src/ApplicationDefaultCredentials.php
@@ -0,0 +1,271 @@
+push($middleware);
+ *
+ * $client = new Client([
+ * 'handler' => $stack,
+ * 'base_uri' => 'https://www.googleapis.com/taskqueue/v1beta2/projects/',
+ * 'auth' => 'google_auth' // authorize all requests
+ * ]);
+ *
+ * $res = $client->get('myproject/taskqueues/myqueue');
+ * ```
+ */
+class ApplicationDefaultCredentials
+{
+ /**
+ * Obtains an AuthTokenSubscriber that uses the default FetchAuthTokenInterface
+ * implementation to use in this environment.
+ *
+ * If supplied, $scope is used to in creating the credentials instance if
+ * this does not fallback to the compute engine defaults.
+ *
+ * @param string|array scope the scope of the access request, expressed
+ * either as an Array or as a space-delimited String.
+ * @param callable $httpHandler callback which delivers psr7 request
+ * @param array $cacheConfig configuration for the cache when it's present
+ * @param CacheItemPoolInterface $cache A cache implementation, may be
+ * provided if you have one already available for use.
+ * @return AuthTokenSubscriber
+ * @throws DomainException if no implementation can be obtained.
+ */
+ public static function getSubscriber($scope = null, callable $httpHandler = null, array $cacheConfig = null, \Google\Site_Kit_Dependencies\Psr\Cache\CacheItemPoolInterface $cache = null)
+ {
+ $creds = self::getCredentials($scope, $httpHandler, $cacheConfig, $cache);
+ return new \Google\Site_Kit_Dependencies\Google\Auth\Subscriber\AuthTokenSubscriber($creds, $httpHandler);
+ }
+ /**
+ * Obtains an AuthTokenMiddleware that uses the default FetchAuthTokenInterface
+ * implementation to use in this environment.
+ *
+ * If supplied, $scope is used to in creating the credentials instance if
+ * this does not fallback to the compute engine defaults.
+ *
+ * @param string|array scope the scope of the access request, expressed
+ * either as an Array or as a space-delimited String.
+ * @param callable $httpHandler callback which delivers psr7 request
+ * @param array $cacheConfig configuration for the cache when it's present
+ * @param CacheItemPoolInterface $cache A cache implementation, may be
+ * provided if you have one already available for use.
+ * @param string $quotaProject specifies a project to bill for access
+ * charges associated with the request.
+ * @return AuthTokenMiddleware
+ * @throws DomainException if no implementation can be obtained.
+ */
+ public static function getMiddleware($scope = null, callable $httpHandler = null, array $cacheConfig = null, \Google\Site_Kit_Dependencies\Psr\Cache\CacheItemPoolInterface $cache = null, $quotaProject = null)
+ {
+ $creds = self::getCredentials($scope, $httpHandler, $cacheConfig, $cache, $quotaProject);
+ return new \Google\Site_Kit_Dependencies\Google\Auth\Middleware\AuthTokenMiddleware($creds, $httpHandler);
+ }
+ /**
+ * Obtains the default FetchAuthTokenInterface implementation to use
+ * in this environment.
+ *
+ * @param string|array $scope the scope of the access request, expressed
+ * either as an Array or as a space-delimited String.
+ * @param callable $httpHandler callback which delivers psr7 request
+ * @param array $cacheConfig configuration for the cache when it's present
+ * @param CacheItemPoolInterface $cache A cache implementation, may be
+ * provided if you have one already available for use.
+ * @param string $quotaProject specifies a project to bill for access
+ * charges associated with the request.
+ * @param string|array $defaultScope The default scope to use if no
+ * user-defined scopes exist, expressed either as an Array or as a
+ * space-delimited string.
+ *
+ * @return CredentialsLoader
+ * @throws DomainException if no implementation can be obtained.
+ */
+ public static function getCredentials($scope = null, callable $httpHandler = null, array $cacheConfig = null, \Google\Site_Kit_Dependencies\Psr\Cache\CacheItemPoolInterface $cache = null, $quotaProject = null, $defaultScope = null)
+ {
+ $creds = null;
+ $jsonKey = \Google\Site_Kit_Dependencies\Google\Auth\CredentialsLoader::fromEnv() ?: \Google\Site_Kit_Dependencies\Google\Auth\CredentialsLoader::fromWellKnownFile();
+ $anyScope = $scope ?: $defaultScope;
+ if (!$httpHandler) {
+ if (!($client = \Google\Site_Kit_Dependencies\Google\Auth\HttpHandler\HttpClientCache::getHttpClient())) {
+ $client = new \Google\Site_Kit_Dependencies\GuzzleHttp\Client();
+ \Google\Site_Kit_Dependencies\Google\Auth\HttpHandler\HttpClientCache::setHttpClient($client);
+ }
+ $httpHandler = \Google\Site_Kit_Dependencies\Google\Auth\HttpHandler\HttpHandlerFactory::build($client);
+ }
+ if (!\is_null($jsonKey)) {
+ if ($quotaProject) {
+ $jsonKey['quota_project_id'] = $quotaProject;
+ }
+ $creds = \Google\Site_Kit_Dependencies\Google\Auth\CredentialsLoader::makeCredentials($scope, $jsonKey, $defaultScope);
+ } elseif (\Google\Site_Kit_Dependencies\Google\Auth\Credentials\AppIdentityCredentials::onAppEngine() && !\Google\Site_Kit_Dependencies\Google\Auth\Credentials\GCECredentials::onAppEngineFlexible()) {
+ $creds = new \Google\Site_Kit_Dependencies\Google\Auth\Credentials\AppIdentityCredentials($anyScope);
+ } elseif (self::onGce($httpHandler, $cacheConfig, $cache)) {
+ $creds = new \Google\Site_Kit_Dependencies\Google\Auth\Credentials\GCECredentials(null, $anyScope, null, $quotaProject);
+ }
+ if (\is_null($creds)) {
+ throw new \DomainException(self::notFound());
+ }
+ if (!\is_null($cache)) {
+ $creds = new \Google\Site_Kit_Dependencies\Google\Auth\FetchAuthTokenCache($creds, $cacheConfig, $cache);
+ }
+ return $creds;
+ }
+ /**
+ * Obtains an AuthTokenMiddleware which will fetch an ID token to use in the
+ * Authorization header. The middleware is configured with the default
+ * FetchAuthTokenInterface implementation to use in this environment.
+ *
+ * If supplied, $targetAudience is used to set the "aud" on the resulting
+ * ID token.
+ *
+ * @param string $targetAudience The audience for the ID token.
+ * @param callable $httpHandler callback which delivers psr7 request
+ * @param array $cacheConfig configuration for the cache when it's present
+ * @param CacheItemPoolInterface $cache A cache implementation, may be
+ * provided if you have one already available for use.
+ * @return AuthTokenMiddleware
+ * @throws DomainException if no implementation can be obtained.
+ */
+ public static function getIdTokenMiddleware($targetAudience, callable $httpHandler = null, array $cacheConfig = null, \Google\Site_Kit_Dependencies\Psr\Cache\CacheItemPoolInterface $cache = null)
+ {
+ $creds = self::getIdTokenCredentials($targetAudience, $httpHandler, $cacheConfig, $cache);
+ return new \Google\Site_Kit_Dependencies\Google\Auth\Middleware\AuthTokenMiddleware($creds, $httpHandler);
+ }
+ /**
+ * Obtains an ProxyAuthTokenMiddleware which will fetch an ID token to use in the
+ * Authorization header. The middleware is configured with the default
+ * FetchAuthTokenInterface implementation to use in this environment.
+ *
+ * If supplied, $targetAudience is used to set the "aud" on the resulting
+ * ID token.
+ *
+ * @param string $targetAudience The audience for the ID token.
+ * @param callable $httpHandler callback which delivers psr7 request
+ * @param array $cacheConfig configuration for the cache when it's present
+ * @param CacheItemPoolInterface $cache A cache implementation, may be
+ * provided if you have one already available for use.
+ * @return ProxyAuthTokenMiddleware
+ * @throws DomainException if no implementation can be obtained.
+ */
+ public static function getProxyIdTokenMiddleware($targetAudience, callable $httpHandler = null, array $cacheConfig = null, \Google\Site_Kit_Dependencies\Psr\Cache\CacheItemPoolInterface $cache = null)
+ {
+ $creds = self::getIdTokenCredentials($targetAudience, $httpHandler, $cacheConfig, $cache);
+ return new \Google\Site_Kit_Dependencies\Google\Auth\Middleware\ProxyAuthTokenMiddleware($creds, $httpHandler);
+ }
+ /**
+ * Obtains the default FetchAuthTokenInterface implementation to use
+ * in this environment, configured with a $targetAudience for fetching an ID
+ * token.
+ *
+ * @param string $targetAudience The audience for the ID token.
+ * @param callable $httpHandler callback which delivers psr7 request
+ * @param array $cacheConfig configuration for the cache when it's present
+ * @param CacheItemPoolInterface $cache A cache implementation, may be
+ * provided if you have one already available for use.
+ * @return CredentialsLoader
+ * @throws DomainException if no implementation can be obtained.
+ * @throws InvalidArgumentException if JSON "type" key is invalid
+ */
+ public static function getIdTokenCredentials($targetAudience, callable $httpHandler = null, array $cacheConfig = null, \Google\Site_Kit_Dependencies\Psr\Cache\CacheItemPoolInterface $cache = null)
+ {
+ $creds = null;
+ $jsonKey = \Google\Site_Kit_Dependencies\Google\Auth\CredentialsLoader::fromEnv() ?: \Google\Site_Kit_Dependencies\Google\Auth\CredentialsLoader::fromWellKnownFile();
+ if (!$httpHandler) {
+ if (!($client = \Google\Site_Kit_Dependencies\Google\Auth\HttpHandler\HttpClientCache::getHttpClient())) {
+ $client = new \Google\Site_Kit_Dependencies\GuzzleHttp\Client();
+ \Google\Site_Kit_Dependencies\Google\Auth\HttpHandler\HttpClientCache::setHttpClient($client);
+ }
+ $httpHandler = \Google\Site_Kit_Dependencies\Google\Auth\HttpHandler\HttpHandlerFactory::build($client);
+ }
+ if (!\is_null($jsonKey)) {
+ if (!\array_key_exists('type', $jsonKey)) {
+ throw new \InvalidArgumentException('json key is missing the type field');
+ }
+ if ($jsonKey['type'] == 'authorized_user') {
+ throw new \InvalidArgumentException('ID tokens are not supported for end user credentials');
+ }
+ if ($jsonKey['type'] != 'service_account') {
+ throw new \InvalidArgumentException('invalid value in the type field');
+ }
+ $creds = new \Google\Site_Kit_Dependencies\Google\Auth\Credentials\ServiceAccountCredentials(null, $jsonKey, null, $targetAudience);
+ } elseif (self::onGce($httpHandler, $cacheConfig, $cache)) {
+ $creds = new \Google\Site_Kit_Dependencies\Google\Auth\Credentials\GCECredentials(null, null, $targetAudience);
+ }
+ if (\is_null($creds)) {
+ throw new \DomainException(self::notFound());
+ }
+ if (!\is_null($cache)) {
+ $creds = new \Google\Site_Kit_Dependencies\Google\Auth\FetchAuthTokenCache($creds, $cacheConfig, $cache);
+ }
+ return $creds;
+ }
+ private static function notFound()
+ {
+ $msg = 'Could not load the default credentials. Browse to ';
+ $msg .= 'https://developers.google.com';
+ $msg .= '/accounts/docs/application-default-credentials';
+ $msg .= ' for more information';
+ return $msg;
+ }
+ private static function onGce(callable $httpHandler = null, array $cacheConfig = null, \Google\Site_Kit_Dependencies\Psr\Cache\CacheItemPoolInterface $cache = null)
+ {
+ $gceCacheConfig = [];
+ foreach (['lifetime', 'prefix'] as $key) {
+ if (isset($cacheConfig['gce_' . $key])) {
+ $gceCacheConfig[$key] = $cacheConfig['gce_' . $key];
+ }
+ }
+ return (new \Google\Site_Kit_Dependencies\Google\Auth\GCECache($gceCacheConfig, $cache))->onGce($httpHandler);
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/src/Cache/InvalidArgumentException.php b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Cache/InvalidArgumentException.php
new file mode 100644
index 000000000..a7f7b86f6
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Cache/InvalidArgumentException.php
@@ -0,0 +1,23 @@
+key = $key;
+ }
+ /**
+ * {@inheritdoc}
+ */
+ public function getKey()
+ {
+ return $this->key;
+ }
+ /**
+ * {@inheritdoc}
+ */
+ public function get()
+ {
+ return $this->isHit() ? $this->value : null;
+ }
+ /**
+ * {@inheritdoc}
+ */
+ public function isHit()
+ {
+ if (!$this->isHit) {
+ return \false;
+ }
+ if ($this->expiration === null) {
+ return \true;
+ }
+ return $this->currentTime()->getTimestamp() < $this->expiration->getTimestamp();
+ }
+ /**
+ * {@inheritdoc}
+ */
+ public function set($value)
+ {
+ $this->isHit = \true;
+ $this->value = $value;
+ return $this;
+ }
+ /**
+ * {@inheritdoc}
+ */
+ public function expiresAt($expiration)
+ {
+ if ($this->isValidExpiration($expiration)) {
+ $this->expiration = $expiration;
+ return $this;
+ }
+ $implementationMessage = \interface_exists('DateTimeInterface') ? 'implement interface DateTimeInterface' : 'be an instance of DateTime';
+ $error = \sprintf('Argument 1 passed to %s::expiresAt() must %s, %s given', \get_class($this), $implementationMessage, \gettype($expiration));
+ $this->handleError($error);
+ }
+ /**
+ * {@inheritdoc}
+ */
+ public function expiresAfter($time)
+ {
+ if (\is_int($time)) {
+ $this->expiration = $this->currentTime()->add(new \DateInterval("PT{$time}S"));
+ } elseif ($time instanceof \DateInterval) {
+ $this->expiration = $this->currentTime()->add($time);
+ } elseif ($time === null) {
+ $this->expiration = $time;
+ } else {
+ $message = 'Argument 1 passed to %s::expiresAfter() must be an ' . 'instance of DateInterval or of the type integer, %s given';
+ $error = \sprintf($message, \get_class($this), \gettype($time));
+ $this->handleError($error);
+ }
+ return $this;
+ }
+ /**
+ * Handles an error.
+ *
+ * @param string $error
+ * @throws \TypeError
+ */
+ private function handleError($error)
+ {
+ if (\class_exists('TypeError')) {
+ throw new \TypeError($error);
+ }
+ \trigger_error($error, \E_USER_ERROR);
+ }
+ /**
+ * Determines if an expiration is valid based on the rules defined by PSR6.
+ *
+ * @param mixed $expiration
+ * @return bool
+ */
+ private function isValidExpiration($expiration)
+ {
+ if ($expiration === null) {
+ return \true;
+ }
+ // We test for two types here due to the fact the DateTimeInterface
+ // was not introduced until PHP 5.5. Checking for the DateTime type as
+ // well allows us to support 5.4.
+ if ($expiration instanceof \DateTimeInterface) {
+ return \true;
+ }
+ if ($expiration instanceof \DateTime) {
+ return \true;
+ }
+ return \false;
+ }
+ protected function currentTime()
+ {
+ return new \DateTime('now', new \DateTimeZone('UTC'));
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/src/Cache/MemoryCacheItemPool.php b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Cache/MemoryCacheItemPool.php
new file mode 100644
index 000000000..cd10c8da8
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Cache/MemoryCacheItemPool.php
@@ -0,0 +1,130 @@
+getItems([$key]));
+ }
+ /**
+ * {@inheritdoc}
+ */
+ public function getItems(array $keys = [])
+ {
+ $items = [];
+ foreach ($keys as $key) {
+ $items[$key] = $this->hasItem($key) ? clone $this->items[$key] : new \Google\Site_Kit_Dependencies\Google\Auth\Cache\Item($key);
+ }
+ return $items;
+ }
+ /**
+ * {@inheritdoc}
+ */
+ public function hasItem($key)
+ {
+ $this->isValidKey($key);
+ return isset($this->items[$key]) && $this->items[$key]->isHit();
+ }
+ /**
+ * {@inheritdoc}
+ */
+ public function clear()
+ {
+ $this->items = [];
+ $this->deferredItems = [];
+ return \true;
+ }
+ /**
+ * {@inheritdoc}
+ */
+ public function deleteItem($key)
+ {
+ return $this->deleteItems([$key]);
+ }
+ /**
+ * {@inheritdoc}
+ */
+ public function deleteItems(array $keys)
+ {
+ \array_walk($keys, [$this, 'isValidKey']);
+ foreach ($keys as $key) {
+ unset($this->items[$key]);
+ }
+ return \true;
+ }
+ /**
+ * {@inheritdoc}
+ */
+ public function save(\Google\Site_Kit_Dependencies\Psr\Cache\CacheItemInterface $item)
+ {
+ $this->items[$item->getKey()] = $item;
+ return \true;
+ }
+ /**
+ * {@inheritdoc}
+ */
+ public function saveDeferred(\Google\Site_Kit_Dependencies\Psr\Cache\CacheItemInterface $item)
+ {
+ $this->deferredItems[$item->getKey()] = $item;
+ return \true;
+ }
+ /**
+ * {@inheritdoc}
+ */
+ public function commit()
+ {
+ foreach ($this->deferredItems as $item) {
+ $this->save($item);
+ }
+ $this->deferredItems = [];
+ return \true;
+ }
+ /**
+ * Determines if the provided key is valid.
+ *
+ * @param string $key
+ * @return bool
+ * @throws InvalidArgumentException
+ */
+ private function isValidKey($key)
+ {
+ $invalidCharacters = '{}()/\\\\@:';
+ if (!\is_string($key) || \preg_match("#[{$invalidCharacters}]#", $key)) {
+ throw new \Google\Site_Kit_Dependencies\Google\Auth\Cache\InvalidArgumentException('The provided key is not valid: ' . \var_export($key, \true));
+ }
+ return \true;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/src/Cache/SysVCacheItemPool.php b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Cache/SysVCacheItemPool.php
new file mode 100644
index 000000000..b0f22a4ad
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Cache/SysVCacheItemPool.php
@@ -0,0 +1,198 @@
+options = $options + ['variableKey' => self::VAR_KEY, 'proj' => self::DEFAULT_PROJ, 'memsize' => self::DEFAULT_MEMSIZE, 'perm' => self::DEFAULT_PERM];
+ $this->items = [];
+ $this->deferredItems = [];
+ $this->sysvKey = \ftok(__FILE__, $this->options['proj']);
+ }
+ public function getItem($key)
+ {
+ $this->loadItems();
+ return \current($this->getItems([$key]));
+ }
+ /**
+ * {@inheritdoc}
+ */
+ public function getItems(array $keys = [])
+ {
+ $this->loadItems();
+ $items = [];
+ foreach ($keys as $key) {
+ $items[$key] = $this->hasItem($key) ? clone $this->items[$key] : new \Google\Site_Kit_Dependencies\Google\Auth\Cache\Item($key);
+ }
+ return $items;
+ }
+ /**
+ * {@inheritdoc}
+ */
+ public function hasItem($key)
+ {
+ $this->loadItems();
+ return isset($this->items[$key]) && $this->items[$key]->isHit();
+ }
+ /**
+ * {@inheritdoc}
+ */
+ public function clear()
+ {
+ $this->items = [];
+ $this->deferredItems = [];
+ return $this->saveCurrentItems();
+ }
+ /**
+ * {@inheritdoc}
+ */
+ public function deleteItem($key)
+ {
+ return $this->deleteItems([$key]);
+ }
+ /**
+ * {@inheritdoc}
+ */
+ public function deleteItems(array $keys)
+ {
+ if (!$this->hasLoadedItems) {
+ $this->loadItems();
+ }
+ foreach ($keys as $key) {
+ unset($this->items[$key]);
+ }
+ return $this->saveCurrentItems();
+ }
+ /**
+ * {@inheritdoc}
+ */
+ public function save(\Google\Site_Kit_Dependencies\Psr\Cache\CacheItemInterface $item)
+ {
+ if (!$this->hasLoadedItems) {
+ $this->loadItems();
+ }
+ $this->items[$item->getKey()] = $item;
+ return $this->saveCurrentItems();
+ }
+ /**
+ * {@inheritdoc}
+ */
+ public function saveDeferred(\Google\Site_Kit_Dependencies\Psr\Cache\CacheItemInterface $item)
+ {
+ $this->deferredItems[$item->getKey()] = $item;
+ return \true;
+ }
+ /**
+ * {@inheritdoc}
+ */
+ public function commit()
+ {
+ foreach ($this->deferredItems as $item) {
+ if ($this->save($item) === \false) {
+ return \false;
+ }
+ }
+ $this->deferredItems = [];
+ return \true;
+ }
+ /**
+ * Save the current items.
+ *
+ * @return bool true when success, false upon failure
+ */
+ private function saveCurrentItems()
+ {
+ $shmid = \shm_attach($this->sysvKey, $this->options['memsize'], $this->options['perm']);
+ if ($shmid !== \false) {
+ $ret = \shm_put_var($shmid, $this->options['variableKey'], $this->items);
+ \shm_detach($shmid);
+ return $ret;
+ }
+ return \false;
+ }
+ /**
+ * Load the items from the shared memory.
+ *
+ * @return bool true when success, false upon failure
+ */
+ private function loadItems()
+ {
+ $shmid = \shm_attach($this->sysvKey, $this->options['memsize'], $this->options['perm']);
+ if ($shmid !== \false) {
+ $data = @\shm_get_var($shmid, $this->options['variableKey']);
+ if (!empty($data)) {
+ $this->items = $data;
+ } else {
+ $this->items = [];
+ }
+ \shm_detach($shmid);
+ $this->hasLoadedItems = \true;
+ return \true;
+ }
+ return \false;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/src/CacheTrait.php b/wp-content/plugins/google-site-kit/third-party/google/auth/src/CacheTrait.php
new file mode 100644
index 000000000..83bac36dc
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/auth/src/CacheTrait.php
@@ -0,0 +1,72 @@
+cache)) {
+ return;
+ }
+ $key = $this->getFullCacheKey($k);
+ if (\is_null($key)) {
+ return;
+ }
+ $cacheItem = $this->cache->getItem($key);
+ if ($cacheItem->isHit()) {
+ return $cacheItem->get();
+ }
+ }
+ /**
+ * Saves the value in the cache when that is available.
+ */
+ private function setCachedValue($k, $v)
+ {
+ if (\is_null($this->cache)) {
+ return;
+ }
+ $key = $this->getFullCacheKey($k);
+ if (\is_null($key)) {
+ return;
+ }
+ $cacheItem = $this->cache->getItem($key);
+ $cacheItem->set($v);
+ $cacheItem->expiresAfter($this->cacheConfig['lifetime']);
+ return $this->cache->save($cacheItem);
+ }
+ private function getFullCacheKey($key)
+ {
+ if (\is_null($key)) {
+ return;
+ }
+ $key = $this->cacheConfig['prefix'] . $key;
+ // ensure we do not have illegal characters
+ $key = \preg_replace('|[^a-zA-Z0-9_\\.!]|', '', $key);
+ // Hash keys if they exceed $maxKeyLength (defaults to 64)
+ if ($this->maxKeyLength && \strlen($key) > $this->maxKeyLength) {
+ $key = \substr(\hash('sha256', $key), 0, $this->maxKeyLength);
+ }
+ return $key;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/src/Credentials/AppIdentityCredentials.php b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Credentials/AppIdentityCredentials.php
new file mode 100644
index 000000000..0687dee7f
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Credentials/AppIdentityCredentials.php
@@ -0,0 +1,200 @@
+push($middleware);
+ *
+ * $client = new Client([
+ * 'handler' => $stack,
+ * 'base_uri' => 'https://www.googleapis.com/books/v1',
+ * 'auth' => 'google_auth'
+ * ]);
+ *
+ * $res = $client->get('volumes?q=Henry+David+Thoreau&country=US');
+ * ```
+ */
+class AppIdentityCredentials extends \Google\Site_Kit_Dependencies\Google\Auth\CredentialsLoader implements \Google\Site_Kit_Dependencies\Google\Auth\SignBlobInterface, \Google\Site_Kit_Dependencies\Google\Auth\ProjectIdProviderInterface
+{
+ /**
+ * Result of fetchAuthToken.
+ *
+ * @var array
+ */
+ protected $lastReceivedToken;
+ /**
+ * Array of OAuth2 scopes to be requested.
+ *
+ * @var array
+ */
+ private $scope;
+ /**
+ * @var string
+ */
+ private $clientName;
+ /**
+ * @param array $scope One or more scopes.
+ */
+ public function __construct($scope = array())
+ {
+ $this->scope = $scope;
+ }
+ /**
+ * Determines if this an App Engine instance, by accessing the
+ * SERVER_SOFTWARE environment variable (prod) or the APPENGINE_RUNTIME
+ * environment variable (dev).
+ *
+ * @return bool true if this an App Engine Instance, false otherwise
+ */
+ public static function onAppEngine()
+ {
+ $appEngineProduction = isset($_SERVER['SERVER_SOFTWARE']) && 0 === \strpos($_SERVER['SERVER_SOFTWARE'], 'Google App Engine');
+ if ($appEngineProduction) {
+ return \true;
+ }
+ $appEngineDevAppServer = isset($_SERVER['APPENGINE_RUNTIME']) && $_SERVER['APPENGINE_RUNTIME'] == 'php';
+ if ($appEngineDevAppServer) {
+ return \true;
+ }
+ return \false;
+ }
+ /**
+ * Implements FetchAuthTokenInterface#fetchAuthToken.
+ *
+ * Fetches the auth tokens using the AppIdentityService if available.
+ * As the AppIdentityService uses protobufs to fetch the access token,
+ * the GuzzleHttp\ClientInterface instance passed in will not be used.
+ *
+ * @param callable $httpHandler callback which delivers psr7 request
+ * @return array A set of auth related metadata, containing the following
+ * keys:
+ * - access_token (string)
+ * - expiration_time (string)
+ */
+ public function fetchAuthToken(callable $httpHandler = null)
+ {
+ try {
+ $this->checkAppEngineContext();
+ } catch (\Exception $e) {
+ return [];
+ }
+ // AppIdentityService expects an array when multiple scopes are supplied
+ $scope = \is_array($this->scope) ? $this->scope : \explode(' ', $this->scope);
+ $token = \Google\Site_Kit_Dependencies\google\appengine\api\app_identity\AppIdentityService::getAccessToken($scope);
+ $this->lastReceivedToken = $token;
+ return $token;
+ }
+ /**
+ * Sign a string using AppIdentityService.
+ *
+ * @param string $stringToSign The string to sign.
+ * @param bool $forceOpenSsl [optional] Does not apply to this credentials
+ * type.
+ * @return string The signature, base64-encoded.
+ * @throws \Exception If AppEngine SDK or mock is not available.
+ */
+ public function signBlob($stringToSign, $forceOpenSsl = \false)
+ {
+ $this->checkAppEngineContext();
+ return \base64_encode(\Google\Site_Kit_Dependencies\google\appengine\api\app_identity\AppIdentityService::signForApp($stringToSign)['signature']);
+ }
+ /**
+ * Get the project ID from AppIdentityService.
+ *
+ * Returns null if AppIdentityService is unavailable.
+ *
+ * @param callable $httpHandler Not used by this type.
+ * @return string|null
+ */
+ public function getProjectId(callable $httpHander = null)
+ {
+ try {
+ $this->checkAppEngineContext();
+ } catch (\Exception $e) {
+ return null;
+ }
+ return \Google\Site_Kit_Dependencies\google\appengine\api\app_identity\AppIdentityService::getApplicationId();
+ }
+ /**
+ * Get the client name from AppIdentityService.
+ *
+ * Subsequent calls to this method will return a cached value.
+ *
+ * @param callable $httpHandler Not used in this implementation.
+ * @return string
+ * @throws \Exception If AppEngine SDK or mock is not available.
+ */
+ public function getClientName(callable $httpHandler = null)
+ {
+ $this->checkAppEngineContext();
+ if (!$this->clientName) {
+ $this->clientName = \Google\Site_Kit_Dependencies\google\appengine\api\app_identity\AppIdentityService::getServiceAccountName();
+ }
+ return $this->clientName;
+ }
+ /**
+ * @return array|null
+ */
+ public function getLastReceivedToken()
+ {
+ if ($this->lastReceivedToken) {
+ return ['access_token' => $this->lastReceivedToken['access_token'], 'expires_at' => $this->lastReceivedToken['expiration_time']];
+ }
+ return null;
+ }
+ /**
+ * Caching is handled by the underlying AppIdentityService, return empty string
+ * to prevent caching.
+ *
+ * @return string
+ */
+ public function getCacheKey()
+ {
+ return '';
+ }
+ private function checkAppEngineContext()
+ {
+ if (!self::onAppEngine() || !\class_exists('Google\\Site_Kit_Dependencies\\google\\appengine\\api\\app_identity\\AppIdentityService')) {
+ throw new \Exception('This class must be run in App Engine, or you must include the AppIdentityService ' . 'mock class defined in tests/mocks/AppIdentityService.php');
+ }
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/src/Credentials/GCECredentials.php b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Credentials/GCECredentials.php
new file mode 100644
index 000000000..5230a20b2
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Credentials/GCECredentials.php
@@ -0,0 +1,433 @@
+push($middleware);
+ *
+ * $client = new Client([
+ * 'handler' => $stack,
+ * 'base_uri' => 'https://www.googleapis.com/taskqueue/v1beta2/projects/',
+ * 'auth' => 'google_auth'
+ * ]);
+ *
+ * $res = $client->get('myproject/taskqueues/myqueue');
+ */
+class GCECredentials extends \Google\Site_Kit_Dependencies\Google\Auth\CredentialsLoader implements \Google\Site_Kit_Dependencies\Google\Auth\SignBlobInterface, \Google\Site_Kit_Dependencies\Google\Auth\ProjectIdProviderInterface, \Google\Site_Kit_Dependencies\Google\Auth\GetQuotaProjectInterface
+{
+ // phpcs:disable
+ const cacheKey = 'GOOGLE_AUTH_PHP_GCE';
+ // phpcs:enable
+ /**
+ * The metadata IP address on appengine instances.
+ *
+ * The IP is used instead of the domain 'metadata' to avoid slow responses
+ * when not on Compute Engine.
+ */
+ const METADATA_IP = '169.254.169.254';
+ /**
+ * The metadata path of the default token.
+ */
+ const TOKEN_URI_PATH = 'v1/instance/service-accounts/default/token';
+ /**
+ * The metadata path of the default id token.
+ */
+ const ID_TOKEN_URI_PATH = 'v1/instance/service-accounts/default/identity';
+ /**
+ * The metadata path of the client ID.
+ */
+ const CLIENT_ID_URI_PATH = 'v1/instance/service-accounts/default/email';
+ /**
+ * The metadata path of the project ID.
+ */
+ const PROJECT_ID_URI_PATH = 'v1/project/project-id';
+ /**
+ * The header whose presence indicates GCE presence.
+ */
+ const FLAVOR_HEADER = 'Metadata-Flavor';
+ /**
+ * Note: the explicit `timeout` and `tries` below is a workaround. The underlying
+ * issue is that resolving an unknown host on some networks will take
+ * 20-30 seconds; making this timeout short fixes the issue, but
+ * could lead to false negatives in the event that we are on GCE, but
+ * the metadata resolution was particularly slow. The latter case is
+ * "unlikely" since the expected 4-nines time is about 0.5 seconds.
+ * This allows us to limit the total ping maximum timeout to 1.5 seconds
+ * for developer desktop scenarios.
+ */
+ const MAX_COMPUTE_PING_TRIES = 3;
+ const COMPUTE_PING_CONNECTION_TIMEOUT_S = 0.5;
+ /**
+ * Flag used to ensure that the onGCE test is only done once;.
+ *
+ * @var bool
+ */
+ private $hasCheckedOnGce = \false;
+ /**
+ * Flag that stores the value of the onGCE check.
+ *
+ * @var bool
+ */
+ private $isOnGce = \false;
+ /**
+ * Result of fetchAuthToken.
+ */
+ protected $lastReceivedToken;
+ /**
+ * @var string|null
+ */
+ private $clientName;
+ /**
+ * @var string|null
+ */
+ private $projectId;
+ /**
+ * @var Iam|null
+ */
+ private $iam;
+ /**
+ * @var string
+ */
+ private $tokenUri;
+ /**
+ * @var string
+ */
+ private $targetAudience;
+ /**
+ * @var string|null
+ */
+ private $quotaProject;
+ /**
+ * @var string|null
+ */
+ private $serviceAccountIdentity;
+ /**
+ * @param Iam $iam [optional] An IAM instance.
+ * @param string|array $scope [optional] the scope of the access request,
+ * expressed either as an array or as a space-delimited string.
+ * @param string $targetAudience [optional] The audience for the ID token.
+ * @param string $quotaProject [optional] Specifies a project to bill for access
+ * charges associated with the request.
+ * @param string $serviceAccountIdentity [optional] Specify a service
+ * account identity name to use instead of "default".
+ */
+ public function __construct(\Google\Site_Kit_Dependencies\Google\Auth\Iam $iam = null, $scope = null, $targetAudience = null, $quotaProject = null, $serviceAccountIdentity = null)
+ {
+ $this->iam = $iam;
+ if ($scope && $targetAudience) {
+ throw new \InvalidArgumentException('Scope and targetAudience cannot both be supplied');
+ }
+ $tokenUri = self::getTokenUri($serviceAccountIdentity);
+ if ($scope) {
+ if (\is_string($scope)) {
+ $scope = \explode(' ', $scope);
+ }
+ $scope = \implode(',', $scope);
+ $tokenUri = $tokenUri . '?scopes=' . $scope;
+ } elseif ($targetAudience) {
+ $tokenUri = self::getIdTokenUri($serviceAccountIdentity);
+ $tokenUri = $tokenUri . '?audience=' . $targetAudience;
+ $this->targetAudience = $targetAudience;
+ }
+ $this->tokenUri = $tokenUri;
+ $this->quotaProject = $quotaProject;
+ $this->serviceAccountIdentity = $serviceAccountIdentity;
+ }
+ /**
+ * The full uri for accessing the default token.
+ *
+ * @param string $serviceAccountIdentity [optional] Specify a service
+ * account identity name to use instead of "default".
+ * @return string
+ */
+ public static function getTokenUri($serviceAccountIdentity = null)
+ {
+ $base = 'http://' . self::METADATA_IP . '/computeMetadata/';
+ $base .= self::TOKEN_URI_PATH;
+ if ($serviceAccountIdentity) {
+ return \str_replace('/default/', '/' . $serviceAccountIdentity . '/', $base);
+ }
+ return $base;
+ }
+ /**
+ * The full uri for accessing the default service account.
+ *
+ * @param string $serviceAccountIdentity [optional] Specify a service
+ * account identity name to use instead of "default".
+ * @return string
+ */
+ public static function getClientNameUri($serviceAccountIdentity = null)
+ {
+ $base = 'http://' . self::METADATA_IP . '/computeMetadata/';
+ $base .= self::CLIENT_ID_URI_PATH;
+ if ($serviceAccountIdentity) {
+ return \str_replace('/default/', '/' . $serviceAccountIdentity . '/', $base);
+ }
+ return $base;
+ }
+ /**
+ * The full uri for accesesing the default identity token.
+ *
+ * @param string $serviceAccountIdentity [optional] Specify a service
+ * account identity name to use instead of "default".
+ * @return string
+ */
+ private static function getIdTokenUri($serviceAccountIdentity = null)
+ {
+ $base = 'http://' . self::METADATA_IP . '/computeMetadata/';
+ $base .= self::ID_TOKEN_URI_PATH;
+ if ($serviceAccountIdentity) {
+ return \str_replace('/default/', '/' . $serviceAccountIdentity . '/', $base);
+ }
+ return $base;
+ }
+ /**
+ * The full uri for accessing the default project ID.
+ *
+ * @return string
+ */
+ private static function getProjectIdUri()
+ {
+ $base = 'http://' . self::METADATA_IP . '/computeMetadata/';
+ return $base . self::PROJECT_ID_URI_PATH;
+ }
+ /**
+ * Determines if this an App Engine Flexible instance, by accessing the
+ * GAE_INSTANCE environment variable.
+ *
+ * @return bool true if this an App Engine Flexible Instance, false otherwise
+ */
+ public static function onAppEngineFlexible()
+ {
+ return \substr(\getenv('GAE_INSTANCE'), 0, 4) === 'aef-';
+ }
+ /**
+ * Determines if this a GCE instance, by accessing the expected metadata
+ * host.
+ * If $httpHandler is not specified a the default HttpHandler is used.
+ *
+ * @param callable $httpHandler callback which delivers psr7 request
+ * @return bool True if this a GCEInstance, false otherwise
+ */
+ public static function onGce(callable $httpHandler = null)
+ {
+ $httpHandler = $httpHandler ?: \Google\Site_Kit_Dependencies\Google\Auth\HttpHandler\HttpHandlerFactory::build(\Google\Site_Kit_Dependencies\Google\Auth\HttpHandler\HttpClientCache::getHttpClient());
+ $checkUri = 'http://' . self::METADATA_IP;
+ for ($i = 1; $i <= self::MAX_COMPUTE_PING_TRIES; $i++) {
+ try {
+ // Comment from: oauth2client/client.py
+ //
+ // Note: the explicit `timeout` below is a workaround. The underlying
+ // issue is that resolving an unknown host on some networks will take
+ // 20-30 seconds; making this timeout short fixes the issue, but
+ // could lead to false negatives in the event that we are on GCE, but
+ // the metadata resolution was particularly slow. The latter case is
+ // "unlikely".
+ $resp = $httpHandler(new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Request('GET', $checkUri, [self::FLAVOR_HEADER => 'Google']), ['timeout' => self::COMPUTE_PING_CONNECTION_TIMEOUT_S]);
+ return $resp->getHeaderLine(self::FLAVOR_HEADER) == 'Google';
+ } catch (\Google\Site_Kit_Dependencies\GuzzleHttp\Exception\ClientException $e) {
+ } catch (\Google\Site_Kit_Dependencies\GuzzleHttp\Exception\ServerException $e) {
+ } catch (\Google\Site_Kit_Dependencies\GuzzleHttp\Exception\RequestException $e) {
+ } catch (\Google\Site_Kit_Dependencies\GuzzleHttp\Exception\ConnectException $e) {
+ }
+ }
+ return \false;
+ }
+ /**
+ * Implements FetchAuthTokenInterface#fetchAuthToken.
+ *
+ * Fetches the auth tokens from the GCE metadata host if it is available.
+ * If $httpHandler is not specified a the default HttpHandler is used.
+ *
+ * @param callable $httpHandler callback which delivers psr7 request
+ *
+ * @return array A set of auth related metadata, based on the token type.
+ *
+ * Access tokens have the following keys:
+ * - access_token (string)
+ * - expires_in (int)
+ * - token_type (string)
+ * ID tokens have the following keys:
+ * - id_token (string)
+ *
+ * @throws \Exception
+ */
+ public function fetchAuthToken(callable $httpHandler = null)
+ {
+ $httpHandler = $httpHandler ?: \Google\Site_Kit_Dependencies\Google\Auth\HttpHandler\HttpHandlerFactory::build(\Google\Site_Kit_Dependencies\Google\Auth\HttpHandler\HttpClientCache::getHttpClient());
+ if (!$this->hasCheckedOnGce) {
+ $this->isOnGce = self::onGce($httpHandler);
+ $this->hasCheckedOnGce = \true;
+ }
+ if (!$this->isOnGce) {
+ return array();
+ // return an empty array with no access token
+ }
+ $response = $this->getFromMetadata($httpHandler, $this->tokenUri);
+ if ($this->targetAudience) {
+ return ['id_token' => $response];
+ }
+ if (null === ($json = \json_decode($response, \true))) {
+ throw new \Exception('Invalid JSON response');
+ }
+ $json['expires_at'] = \time() + $json['expires_in'];
+ // store this so we can retrieve it later
+ $this->lastReceivedToken = $json;
+ return $json;
+ }
+ /**
+ * @return string
+ */
+ public function getCacheKey()
+ {
+ return self::cacheKey;
+ }
+ /**
+ * @return array|null
+ */
+ public function getLastReceivedToken()
+ {
+ if ($this->lastReceivedToken) {
+ return ['access_token' => $this->lastReceivedToken['access_token'], 'expires_at' => $this->lastReceivedToken['expires_at']];
+ }
+ return null;
+ }
+ /**
+ * Get the client name from GCE metadata.
+ *
+ * Subsequent calls will return a cached value.
+ *
+ * @param callable $httpHandler callback which delivers psr7 request
+ * @return string
+ */
+ public function getClientName(callable $httpHandler = null)
+ {
+ if ($this->clientName) {
+ return $this->clientName;
+ }
+ $httpHandler = $httpHandler ?: \Google\Site_Kit_Dependencies\Google\Auth\HttpHandler\HttpHandlerFactory::build(\Google\Site_Kit_Dependencies\Google\Auth\HttpHandler\HttpClientCache::getHttpClient());
+ if (!$this->hasCheckedOnGce) {
+ $this->isOnGce = self::onGce($httpHandler);
+ $this->hasCheckedOnGce = \true;
+ }
+ if (!$this->isOnGce) {
+ return '';
+ }
+ $this->clientName = $this->getFromMetadata($httpHandler, self::getClientNameUri($this->serviceAccountIdentity));
+ return $this->clientName;
+ }
+ /**
+ * Sign a string using the default service account private key.
+ *
+ * This implementation uses IAM's signBlob API.
+ *
+ * @see https://cloud.google.com/iam/credentials/reference/rest/v1/projects.serviceAccounts/signBlob SignBlob
+ *
+ * @param string $stringToSign The string to sign.
+ * @param bool $forceOpenSsl [optional] Does not apply to this credentials
+ * type.
+ * @param string $accessToken The access token to use to sign the blob. If
+ * provided, saves a call to the metadata server for a new access
+ * token. **Defaults to** `null`.
+ * @return string
+ */
+ public function signBlob($stringToSign, $forceOpenSsl = \false, $accessToken = null)
+ {
+ $httpHandler = \Google\Site_Kit_Dependencies\Google\Auth\HttpHandler\HttpHandlerFactory::build(\Google\Site_Kit_Dependencies\Google\Auth\HttpHandler\HttpClientCache::getHttpClient());
+ // Providing a signer is useful for testing, but it's undocumented
+ // because it's not something a user would generally need to do.
+ $signer = $this->iam ?: new \Google\Site_Kit_Dependencies\Google\Auth\Iam($httpHandler);
+ $email = $this->getClientName($httpHandler);
+ if (\is_null($accessToken)) {
+ $previousToken = $this->getLastReceivedToken();
+ $accessToken = $previousToken ? $previousToken['access_token'] : $this->fetchAuthToken($httpHandler)['access_token'];
+ }
+ return $signer->signBlob($email, $accessToken, $stringToSign);
+ }
+ /**
+ * Fetch the default Project ID from compute engine.
+ *
+ * Returns null if called outside GCE.
+ *
+ * @param callable $httpHandler Callback which delivers psr7 request
+ * @return string|null
+ */
+ public function getProjectId(callable $httpHandler = null)
+ {
+ if ($this->projectId) {
+ return $this->projectId;
+ }
+ $httpHandler = $httpHandler ?: \Google\Site_Kit_Dependencies\Google\Auth\HttpHandler\HttpHandlerFactory::build(\Google\Site_Kit_Dependencies\Google\Auth\HttpHandler\HttpClientCache::getHttpClient());
+ if (!$this->hasCheckedOnGce) {
+ $this->isOnGce = self::onGce($httpHandler);
+ $this->hasCheckedOnGce = \true;
+ }
+ if (!$this->isOnGce) {
+ return null;
+ }
+ $this->projectId = $this->getFromMetadata($httpHandler, self::getProjectIdUri());
+ return $this->projectId;
+ }
+ /**
+ * Fetch the value of a GCE metadata server URI.
+ *
+ * @param callable $httpHandler An HTTP Handler to deliver PSR7 requests.
+ * @param string $uri The metadata URI.
+ * @return string
+ */
+ private function getFromMetadata(callable $httpHandler, $uri)
+ {
+ $resp = $httpHandler(new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Request('GET', $uri, [self::FLAVOR_HEADER => 'Google']));
+ return (string) $resp->getBody();
+ }
+ /**
+ * Get the quota project used for this API request
+ *
+ * @return string|null
+ */
+ public function getQuotaProject()
+ {
+ return $this->quotaProject;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/src/Credentials/IAMCredentials.php b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Credentials/IAMCredentials.php
new file mode 100644
index 000000000..adc636ed0
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Credentials/IAMCredentials.php
@@ -0,0 +1,77 @@
+selector = $selector;
+ $this->token = $token;
+ }
+ /**
+ * export a callback function which updates runtime metadata.
+ *
+ * @return array updateMetadata function
+ */
+ public function getUpdateMetadataFunc()
+ {
+ return array($this, 'updateMetadata');
+ }
+ /**
+ * Updates metadata with the appropriate header metadata.
+ *
+ * @param array $metadata metadata hashmap
+ * @param string $unusedAuthUri optional auth uri
+ * @param callable $httpHandler callback which delivers psr7 request
+ * Note: this param is unused here, only included here for
+ * consistency with other credentials class
+ *
+ * @return array updated metadata hashmap
+ */
+ public function updateMetadata($metadata, $unusedAuthUri = null, callable $httpHandler = null)
+ {
+ $metadata_copy = $metadata;
+ $metadata_copy[self::SELECTOR_KEY] = $this->selector;
+ $metadata_copy[self::TOKEN_KEY] = $this->token;
+ return $metadata_copy;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/src/Credentials/InsecureCredentials.php b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Credentials/InsecureCredentials.php
new file mode 100644
index 000000000..06241ca57
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Credentials/InsecureCredentials.php
@@ -0,0 +1,64 @@
+ ''];
+ /**
+ * Fetches the auth token. In this case it returns an empty string.
+ *
+ * @param callable $httpHandler
+ * @return array A set of auth related metadata, containing the following
+ * keys:
+ * - access_token (string)
+ */
+ public function fetchAuthToken(callable $httpHandler = null)
+ {
+ return $this->token;
+ }
+ /**
+ * Returns the cache key. In this case it returns a null value, disabling
+ * caching.
+ *
+ * @return string|null
+ */
+ public function getCacheKey()
+ {
+ return null;
+ }
+ /**
+ * Fetches the last received token. In this case, it returns the same empty string
+ * auth token.
+ *
+ * @return array
+ */
+ public function getLastReceivedToken()
+ {
+ return $this->token;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/src/Credentials/ServiceAccountCredentials.php b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Credentials/ServiceAccountCredentials.php
new file mode 100644
index 000000000..50dd472b3
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Credentials/ServiceAccountCredentials.php
@@ -0,0 +1,274 @@
+push($middleware);
+ *
+ * $client = new Client([
+ * 'handler' => $stack,
+ * 'base_uri' => 'https://www.googleapis.com/taskqueue/v1beta2/projects/',
+ * 'auth' => 'google_auth' // authorize all requests
+ * ]);
+ *
+ * $res = $client->get('myproject/taskqueues/myqueue');
+ */
+class ServiceAccountCredentials extends \Google\Site_Kit_Dependencies\Google\Auth\CredentialsLoader implements \Google\Site_Kit_Dependencies\Google\Auth\GetQuotaProjectInterface, \Google\Site_Kit_Dependencies\Google\Auth\SignBlobInterface, \Google\Site_Kit_Dependencies\Google\Auth\ProjectIdProviderInterface
+{
+ use ServiceAccountSignerTrait;
+ /**
+ * The OAuth2 instance used to conduct authorization.
+ *
+ * @var OAuth2
+ */
+ protected $auth;
+ /**
+ * The quota project associated with the JSON credentials
+ *
+ * @var string
+ */
+ protected $quotaProject;
+ /*
+ * @var string|null
+ */
+ protected $projectId;
+ /*
+ * @var array|null
+ */
+ private $lastReceivedJwtAccessToken;
+ /*
+ * @var bool
+ */
+ private $useJwtAccessWithScope = \false;
+ /*
+ * @var ServiceAccountJwtAccessCredentials|null
+ */
+ private $jwtAccessCredentials;
+ /**
+ * Create a new ServiceAccountCredentials.
+ *
+ * @param string|array $scope the scope of the access request, expressed
+ * either as an Array or as a space-delimited String.
+ * @param string|array $jsonKey JSON credential file path or JSON credentials
+ * as an associative array
+ * @param string $sub an email address account to impersonate, in situations when
+ * the service account has been delegated domain wide access.
+ * @param string $targetAudience The audience for the ID token.
+ */
+ public function __construct($scope, $jsonKey, $sub = null, $targetAudience = null)
+ {
+ if (\is_string($jsonKey)) {
+ if (!\file_exists($jsonKey)) {
+ throw new \InvalidArgumentException('file does not exist');
+ }
+ $jsonKeyStream = \file_get_contents($jsonKey);
+ if (!($jsonKey = \json_decode($jsonKeyStream, \true))) {
+ throw new \LogicException('invalid json for auth config');
+ }
+ }
+ if (!\array_key_exists('client_email', $jsonKey)) {
+ throw new \InvalidArgumentException('json key is missing the client_email field');
+ }
+ if (!\array_key_exists('private_key', $jsonKey)) {
+ throw new \InvalidArgumentException('json key is missing the private_key field');
+ }
+ if (\array_key_exists('quota_project_id', $jsonKey)) {
+ $this->quotaProject = (string) $jsonKey['quota_project_id'];
+ }
+ if ($scope && $targetAudience) {
+ throw new \InvalidArgumentException('Scope and targetAudience cannot both be supplied');
+ }
+ $additionalClaims = [];
+ if ($targetAudience) {
+ $additionalClaims = ['target_audience' => $targetAudience];
+ }
+ $this->auth = new \Google\Site_Kit_Dependencies\Google\Auth\OAuth2(['audience' => self::TOKEN_CREDENTIAL_URI, 'issuer' => $jsonKey['client_email'], 'scope' => $scope, 'signingAlgorithm' => 'RS256', 'signingKey' => $jsonKey['private_key'], 'sub' => $sub, 'tokenCredentialUri' => self::TOKEN_CREDENTIAL_URI, 'additionalClaims' => $additionalClaims]);
+ $this->projectId = isset($jsonKey['project_id']) ? $jsonKey['project_id'] : null;
+ }
+ /**
+ * When called, the ServiceAccountCredentials will use an instance of
+ * ServiceAccountJwtAccessCredentials to fetch (self-sign) an access token
+ * even when only scopes are supplied. Otherwise,
+ * ServiceAccountJwtAccessCredentials is only called when no scopes and an
+ * authUrl (audience) is suppled.
+ */
+ public function useJwtAccessWithScope()
+ {
+ $this->useJwtAccessWithScope = \true;
+ }
+ /**
+ * @param callable $httpHandler
+ *
+ * @return array A set of auth related metadata, containing the following
+ * keys:
+ * - access_token (string)
+ * - expires_in (int)
+ * - token_type (string)
+ */
+ public function fetchAuthToken(callable $httpHandler = null)
+ {
+ if ($this->useSelfSignedJwt()) {
+ $jwtCreds = $this->createJwtAccessCredentials();
+ $accessToken = $jwtCreds->fetchAuthToken($httpHandler);
+ if ($lastReceivedToken = $jwtCreds->getLastReceivedToken()) {
+ // Keep self-signed JWTs in memory as the last received token
+ $this->lastReceivedJwtAccessToken = $lastReceivedToken;
+ }
+ return $accessToken;
+ }
+ return $this->auth->fetchAuthToken($httpHandler);
+ }
+ /**
+ * @return string
+ */
+ public function getCacheKey()
+ {
+ $key = $this->auth->getIssuer() . ':' . $this->auth->getCacheKey();
+ if ($sub = $this->auth->getSub()) {
+ $key .= ':' . $sub;
+ }
+ return $key;
+ }
+ /**
+ * @return array
+ */
+ public function getLastReceivedToken()
+ {
+ // If self-signed JWTs are being used, fetch the last received token
+ // from memory. Else, fetch it from OAuth2
+ return $this->useSelfSignedJwt() ? $this->lastReceivedJwtAccessToken : $this->auth->getLastReceivedToken();
+ }
+ /**
+ * Get the project ID from the service account keyfile.
+ *
+ * Returns null if the project ID does not exist in the keyfile.
+ *
+ * @param callable $httpHandler Not used by this credentials type.
+ * @return string|null
+ */
+ public function getProjectId(callable $httpHandler = null)
+ {
+ return $this->projectId;
+ }
+ /**
+ * Updates metadata with the authorization token.
+ *
+ * @param array $metadata metadata hashmap
+ * @param string $authUri optional auth uri
+ * @param callable $httpHandler callback which delivers psr7 request
+ * @return array updated metadata hashmap
+ */
+ public function updateMetadata($metadata, $authUri = null, callable $httpHandler = null)
+ {
+ // scope exists. use oauth implementation
+ if (!$this->useSelfSignedJwt()) {
+ return parent::updateMetadata($metadata, $authUri, $httpHandler);
+ }
+ $jwtCreds = $this->createJwtAccessCredentials();
+ if ($this->auth->getScope()) {
+ // Prefer user-provided "scope" to "audience"
+ $updatedMetadata = $jwtCreds->updateMetadata($metadata, null, $httpHandler);
+ } else {
+ $updatedMetadata = $jwtCreds->updateMetadata($metadata, $authUri, $httpHandler);
+ }
+ if ($lastReceivedToken = $jwtCreds->getLastReceivedToken()) {
+ // Keep self-signed JWTs in memory as the last received token
+ $this->lastReceivedJwtAccessToken = $lastReceivedToken;
+ }
+ return $updatedMetadata;
+ }
+ private function createJwtAccessCredentials()
+ {
+ if (!$this->jwtAccessCredentials) {
+ // Create credentials for self-signing a JWT (JwtAccess)
+ $credJson = array('private_key' => $this->auth->getSigningKey(), 'client_email' => $this->auth->getIssuer());
+ $this->jwtAccessCredentials = new \Google\Site_Kit_Dependencies\Google\Auth\Credentials\ServiceAccountJwtAccessCredentials($credJson, $this->auth->getScope());
+ }
+ return $this->jwtAccessCredentials;
+ }
+ /**
+ * @param string $sub an email address account to impersonate, in situations when
+ * the service account has been delegated domain wide access.
+ */
+ public function setSub($sub)
+ {
+ $this->auth->setSub($sub);
+ }
+ /**
+ * Get the client name from the keyfile.
+ *
+ * In this case, it returns the keyfile's client_email key.
+ *
+ * @param callable $httpHandler Not used by this credentials type.
+ * @return string
+ */
+ public function getClientName(callable $httpHandler = null)
+ {
+ return $this->auth->getIssuer();
+ }
+ /**
+ * Get the quota project used for this API request
+ *
+ * @return string|null
+ */
+ public function getQuotaProject()
+ {
+ return $this->quotaProject;
+ }
+ private function useSelfSignedJwt()
+ {
+ // If claims are set, this call is for "id_tokens"
+ if ($this->auth->getAdditionalClaims()) {
+ return \false;
+ }
+ // When true, ServiceAccountCredentials will always use JwtAccess for access tokens
+ if ($this->useJwtAccessWithScope) {
+ return \true;
+ }
+ return \is_null($this->auth->getScope());
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/src/Credentials/ServiceAccountJwtAccessCredentials.php b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Credentials/ServiceAccountJwtAccessCredentials.php
new file mode 100644
index 000000000..9e743b6b0
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Credentials/ServiceAccountJwtAccessCredentials.php
@@ -0,0 +1,167 @@
+quotaProject = (string) $jsonKey['quota_project_id'];
+ }
+ $this->auth = new \Google\Site_Kit_Dependencies\Google\Auth\OAuth2(['issuer' => $jsonKey['client_email'], 'sub' => $jsonKey['client_email'], 'signingAlgorithm' => 'RS256', 'signingKey' => $jsonKey['private_key'], 'scope' => $scope]);
+ $this->projectId = isset($jsonKey['project_id']) ? $jsonKey['project_id'] : null;
+ }
+ /**
+ * Updates metadata with the authorization token.
+ *
+ * @param array $metadata metadata hashmap
+ * @param string $authUri optional auth uri
+ * @param callable $httpHandler callback which delivers psr7 request
+ * @return array updated metadata hashmap
+ */
+ public function updateMetadata($metadata, $authUri = null, callable $httpHandler = null)
+ {
+ $scope = $this->auth->getScope();
+ if (empty($authUri) && empty($scope)) {
+ return $metadata;
+ }
+ $this->auth->setAudience($authUri);
+ return parent::updateMetadata($metadata, $authUri, $httpHandler);
+ }
+ /**
+ * Implements FetchAuthTokenInterface#fetchAuthToken.
+ *
+ * @param callable $httpHandler
+ *
+ * @return array|void A set of auth related metadata, containing the
+ * following keys:
+ * - access_token (string)
+ */
+ public function fetchAuthToken(callable $httpHandler = null)
+ {
+ $audience = $this->auth->getAudience();
+ $scope = $this->auth->getScope();
+ if (empty($audience) && empty($scope)) {
+ return null;
+ }
+ if (!empty($audience) && !empty($scope)) {
+ throw new \UnexpectedValueException('Cannot sign both audience and scope in JwtAccess');
+ }
+ $access_token = $this->auth->toJwt();
+ // Set the self-signed access token in OAuth2 for getLastReceivedToken
+ $this->auth->setAccessToken($access_token);
+ return array('access_token' => $access_token);
+ }
+ /**
+ * @return string
+ */
+ public function getCacheKey()
+ {
+ return $this->auth->getCacheKey();
+ }
+ /**
+ * @return array
+ */
+ public function getLastReceivedToken()
+ {
+ return $this->auth->getLastReceivedToken();
+ }
+ /**
+ * Get the project ID from the service account keyfile.
+ *
+ * Returns null if the project ID does not exist in the keyfile.
+ *
+ * @param callable $httpHandler Not used by this credentials type.
+ * @return string|null
+ */
+ public function getProjectId(callable $httpHandler = null)
+ {
+ return $this->projectId;
+ }
+ /**
+ * Get the client name from the keyfile.
+ *
+ * In this case, it returns the keyfile's client_email key.
+ *
+ * @param callable $httpHandler Not used by this credentials type.
+ * @return string
+ */
+ public function getClientName(callable $httpHandler = null)
+ {
+ return $this->auth->getIssuer();
+ }
+ /**
+ * Get the quota project used for this API request
+ *
+ * @return string|null
+ */
+ public function getQuotaProject()
+ {
+ return $this->quotaProject;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/src/Credentials/UserRefreshCredentials.php b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Credentials/UserRefreshCredentials.php
new file mode 100644
index 000000000..506946a65
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Credentials/UserRefreshCredentials.php
@@ -0,0 +1,117 @@
+auth = new \Google\Site_Kit_Dependencies\Google\Auth\OAuth2(['clientId' => $jsonKey['client_id'], 'clientSecret' => $jsonKey['client_secret'], 'refresh_token' => $jsonKey['refresh_token'], 'scope' => $scope, 'tokenCredentialUri' => self::TOKEN_CREDENTIAL_URI]);
+ if (\array_key_exists('quota_project_id', $jsonKey)) {
+ $this->quotaProject = (string) $jsonKey['quota_project_id'];
+ }
+ }
+ /**
+ * @param callable $httpHandler
+ *
+ * @return array A set of auth related metadata, containing the following
+ * keys:
+ * - access_token (string)
+ * - expires_in (int)
+ * - scope (string)
+ * - token_type (string)
+ * - id_token (string)
+ */
+ public function fetchAuthToken(callable $httpHandler = null)
+ {
+ return $this->auth->fetchAuthToken($httpHandler);
+ }
+ /**
+ * @return string
+ */
+ public function getCacheKey()
+ {
+ return $this->auth->getClientId() . ':' . $this->auth->getCacheKey();
+ }
+ /**
+ * @return array
+ */
+ public function getLastReceivedToken()
+ {
+ return $this->auth->getLastReceivedToken();
+ }
+ /**
+ * Get the quota project used for this API request
+ *
+ * @return string|null
+ */
+ public function getQuotaProject()
+ {
+ return $this->quotaProject;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/src/CredentialsLoader.php b/wp-content/plugins/google-site-kit/third-party/google/auth/src/CredentialsLoader.php
new file mode 100644
index 000000000..290a24c06
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/auth/src/CredentialsLoader.php
@@ -0,0 +1,261 @@
+setDefaultOption('auth', 'google_auth');
+ $subscriber = new \Google\Site_Kit_Dependencies\Google\Auth\Subscriber\AuthTokenSubscriber($fetcher, $httpHandler, $tokenCallback);
+ $client->getEmitter()->attach($subscriber);
+ return $client;
+ }
+ $middleware = new \Google\Site_Kit_Dependencies\Google\Auth\Middleware\AuthTokenMiddleware($fetcher, $httpHandler, $tokenCallback);
+ $stack = \Google\Site_Kit_Dependencies\GuzzleHttp\HandlerStack::create();
+ $stack->push($middleware);
+ return new \Google\Site_Kit_Dependencies\GuzzleHttp\Client(['handler' => $stack, 'auth' => 'google_auth'] + $httpClientOptions);
+ }
+ /**
+ * Create a new instance of InsecureCredentials.
+ *
+ * @return InsecureCredentials
+ */
+ public static function makeInsecureCredentials()
+ {
+ return new \Google\Site_Kit_Dependencies\Google\Auth\Credentials\InsecureCredentials();
+ }
+ /**
+ * export a callback function which updates runtime metadata.
+ *
+ * @return array updateMetadata function
+ * @deprecated
+ */
+ public function getUpdateMetadataFunc()
+ {
+ return array($this, 'updateMetadata');
+ }
+ /**
+ * Updates metadata with the authorization token.
+ *
+ * @param array $metadata metadata hashmap
+ * @param string $authUri optional auth uri
+ * @param callable $httpHandler callback which delivers psr7 request
+ * @return array updated metadata hashmap
+ */
+ public function updateMetadata($metadata, $authUri = null, callable $httpHandler = null)
+ {
+ if (isset($metadata[self::AUTH_METADATA_KEY])) {
+ // Auth metadata has already been set
+ return $metadata;
+ }
+ $result = $this->fetchAuthToken($httpHandler);
+ if (!isset($result['access_token'])) {
+ return $metadata;
+ }
+ $metadata_copy = $metadata;
+ $metadata_copy[self::AUTH_METADATA_KEY] = array('Bearer ' . $result['access_token']);
+ return $metadata_copy;
+ }
+ /**
+ * Gets a callable which returns the default device certification.
+ *
+ * @throws UnexpectedValueException
+ * @return callable|null
+ */
+ public static function getDefaultClientCertSource()
+ {
+ if (!($clientCertSourceJson = self::loadDefaultClientCertSourceFile())) {
+ return null;
+ }
+ $clientCertSourceCmd = $clientCertSourceJson['cert_provider_command'];
+ return function () use($clientCertSourceCmd) {
+ $cmd = \array_map('escapeshellarg', $clientCertSourceCmd);
+ \exec(\implode(' ', $cmd), $output, $returnVar);
+ if (0 === $returnVar) {
+ return \implode(\PHP_EOL, $output);
+ }
+ throw new \RuntimeException('"cert_provider_command" failed with a nonzero exit code');
+ };
+ }
+ /**
+ * Determines whether or not the default device certificate should be loaded.
+ *
+ * @return bool
+ */
+ public static function shouldLoadClientCertSource()
+ {
+ return \filter_var(\getenv(self::MTLS_CERT_ENV_VAR), \FILTER_VALIDATE_BOOLEAN);
+ }
+ private static function loadDefaultClientCertSourceFile()
+ {
+ $rootEnv = self::isOnWindows() ? 'APPDATA' : 'HOME';
+ $path = \sprintf('%s/%s', \getenv($rootEnv), self::MTLS_WELL_KNOWN_PATH);
+ if (!\file_exists($path)) {
+ return null;
+ }
+ $jsonKey = \file_get_contents($path);
+ $clientCertSourceJson = \json_decode($jsonKey, \true);
+ if (!$clientCertSourceJson) {
+ throw new \UnexpectedValueException('Invalid client cert source JSON');
+ }
+ if (!isset($clientCertSourceJson['cert_provider_command'])) {
+ throw new \UnexpectedValueException('cert source requires "cert_provider_command"');
+ }
+ if (!\is_array($clientCertSourceJson['cert_provider_command'])) {
+ throw new \UnexpectedValueException('cert source expects "cert_provider_command" to be an array');
+ }
+ return $clientCertSourceJson;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/src/FetchAuthTokenCache.php b/wp-content/plugins/google-site-kit/third-party/google/auth/src/FetchAuthTokenCache.php
new file mode 100644
index 000000000..521c77962
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/auth/src/FetchAuthTokenCache.php
@@ -0,0 +1,211 @@
+fetcher = $fetcher;
+ $this->cache = $cache;
+ $this->cacheConfig = \array_merge(['lifetime' => 1500, 'prefix' => ''], (array) $cacheConfig);
+ }
+ /**
+ * Implements FetchAuthTokenInterface#fetchAuthToken.
+ *
+ * Checks the cache for a valid auth token and fetches the auth tokens
+ * from the supplied fetcher.
+ *
+ * @param callable $httpHandler callback which delivers psr7 request
+ * @return array the response
+ * @throws \Exception
+ */
+ public function fetchAuthToken(callable $httpHandler = null)
+ {
+ if ($cached = $this->fetchAuthTokenFromCache()) {
+ return $cached;
+ }
+ $auth_token = $this->fetcher->fetchAuthToken($httpHandler);
+ $this->saveAuthTokenInCache($auth_token);
+ return $auth_token;
+ }
+ /**
+ * @return string
+ */
+ public function getCacheKey()
+ {
+ return $this->getFullCacheKey($this->fetcher->getCacheKey());
+ }
+ /**
+ * @return array|null
+ */
+ public function getLastReceivedToken()
+ {
+ return $this->fetcher->getLastReceivedToken();
+ }
+ /**
+ * Get the client name from the fetcher.
+ *
+ * @param callable $httpHandler An HTTP handler to deliver PSR7 requests.
+ * @return string
+ */
+ public function getClientName(callable $httpHandler = null)
+ {
+ if (!$this->fetcher instanceof \Google\Site_Kit_Dependencies\Google\Auth\SignBlobInterface) {
+ throw new \RuntimeException('Credentials fetcher does not implement ' . 'Google\\Auth\\SignBlobInterface');
+ }
+ return $this->fetcher->getClientName($httpHandler);
+ }
+ /**
+ * Sign a blob using the fetcher.
+ *
+ * @param string $stringToSign The string to sign.
+ * @param bool $forceOpenSsl Require use of OpenSSL for local signing. Does
+ * not apply to signing done using external services. **Defaults to**
+ * `false`.
+ * @return string The resulting signature.
+ * @throws \RuntimeException If the fetcher does not implement
+ * `Google\Auth\SignBlobInterface`.
+ */
+ public function signBlob($stringToSign, $forceOpenSsl = \false)
+ {
+ if (!$this->fetcher instanceof \Google\Site_Kit_Dependencies\Google\Auth\SignBlobInterface) {
+ throw new \RuntimeException('Credentials fetcher does not implement ' . 'Google\\Auth\\SignBlobInterface');
+ }
+ // Pass the access token from cache to GCECredentials for signing a blob.
+ // This saves a call to the metadata server when a cached token exists.
+ if ($this->fetcher instanceof \Google\Site_Kit_Dependencies\Google\Auth\Credentials\GCECredentials) {
+ $cached = $this->fetchAuthTokenFromCache();
+ $accessToken = isset($cached['access_token']) ? $cached['access_token'] : null;
+ return $this->fetcher->signBlob($stringToSign, $forceOpenSsl, $accessToken);
+ }
+ return $this->fetcher->signBlob($stringToSign, $forceOpenSsl);
+ }
+ /**
+ * Get the quota project used for this API request from the credentials
+ * fetcher.
+ *
+ * @return string|null
+ */
+ public function getQuotaProject()
+ {
+ if ($this->fetcher instanceof \Google\Site_Kit_Dependencies\Google\Auth\GetQuotaProjectInterface) {
+ return $this->fetcher->getQuotaProject();
+ }
+ }
+ /*
+ * Get the Project ID from the fetcher.
+ *
+ * @param callable $httpHandler Callback which delivers psr7 request
+ * @return string|null
+ * @throws \RuntimeException If the fetcher does not implement
+ * `Google\Auth\ProvidesProjectIdInterface`.
+ */
+ public function getProjectId(callable $httpHandler = null)
+ {
+ if (!$this->fetcher instanceof \Google\Site_Kit_Dependencies\Google\Auth\ProjectIdProviderInterface) {
+ throw new \RuntimeException('Credentials fetcher does not implement ' . 'Google\\Auth\\ProvidesProjectIdInterface');
+ }
+ return $this->fetcher->getProjectId($httpHandler);
+ }
+ /**
+ * Updates metadata with the authorization token.
+ *
+ * @param array $metadata metadata hashmap
+ * @param string $authUri optional auth uri
+ * @param callable $httpHandler callback which delivers psr7 request
+ * @return array updated metadata hashmap
+ * @throws \RuntimeException If the fetcher does not implement
+ * `Google\Auth\UpdateMetadataInterface`.
+ */
+ public function updateMetadata($metadata, $authUri = null, callable $httpHandler = null)
+ {
+ if (!$this->fetcher instanceof \Google\Site_Kit_Dependencies\Google\Auth\UpdateMetadataInterface) {
+ throw new \RuntimeException('Credentials fetcher does not implement ' . 'Google\\Auth\\UpdateMetadataInterface');
+ }
+ $cached = $this->fetchAuthTokenFromCache($authUri);
+ if ($cached) {
+ // Set the access token in the `Authorization` metadata header so
+ // the downstream call to updateMetadata know they don't need to
+ // fetch another token.
+ if (isset($cached['access_token'])) {
+ $metadata[self::AUTH_METADATA_KEY] = ['Bearer ' . $cached['access_token']];
+ }
+ }
+ $newMetadata = $this->fetcher->updateMetadata($metadata, $authUri, $httpHandler);
+ if (!$cached && ($token = $this->fetcher->getLastReceivedToken())) {
+ $this->saveAuthTokenInCache($token, $authUri);
+ }
+ return $newMetadata;
+ }
+ private function fetchAuthTokenFromCache($authUri = null)
+ {
+ // Use the cached value if its available.
+ //
+ // TODO: correct caching; update the call to setCachedValue to set the expiry
+ // to the value returned with the auth token.
+ //
+ // TODO: correct caching; enable the cache to be cleared.
+ // if $authUri is set, use it as the cache key
+ $cacheKey = $authUri ? $this->getFullCacheKey($authUri) : $this->fetcher->getCacheKey();
+ $cached = $this->getCachedValue($cacheKey);
+ if (\is_array($cached)) {
+ if (empty($cached['expires_at'])) {
+ // If there is no expiration data, assume token is not expired.
+ // (for JwtAccess and ID tokens)
+ return $cached;
+ }
+ if (\time() < $cached['expires_at']) {
+ // access token is not expired
+ return $cached;
+ }
+ }
+ return null;
+ }
+ private function saveAuthTokenInCache($authToken, $authUri = null)
+ {
+ if (isset($authToken['access_token']) || isset($authToken['id_token'])) {
+ // if $authUri is set, use it as the cache key
+ $cacheKey = $authUri ? $this->getFullCacheKey($authUri) : $this->fetcher->getCacheKey();
+ $this->setCachedValue($cacheKey, $authToken);
+ }
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/src/FetchAuthTokenInterface.php b/wp-content/plugins/google-site-kit/third-party/google/auth/src/FetchAuthTokenInterface.php
new file mode 100644
index 000000000..c1589d440
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/auth/src/FetchAuthTokenInterface.php
@@ -0,0 +1,52 @@
+cache = $cache;
+ $this->cacheConfig = \array_merge(['lifetime' => 1500, 'prefix' => ''], (array) $cacheConfig);
+ }
+ /**
+ * Caches the result of onGce so the metadata server is not called multiple
+ * times.
+ *
+ * @param callable $httpHandler callback which delivers psr7 request
+ * @return bool True if this a GCEInstance, false otherwise
+ */
+ public function onGce(callable $httpHandler = null)
+ {
+ if (\is_null($this->cache)) {
+ return \Google\Site_Kit_Dependencies\Google\Auth\Credentials\GCECredentials::onGce($httpHandler);
+ }
+ $cacheKey = self::GCE_CACHE_KEY;
+ $onGce = $this->getCachedValue($cacheKey);
+ if (\is_null($onGce)) {
+ $onGce = \Google\Site_Kit_Dependencies\Google\Auth\Credentials\GCECredentials::onGce($httpHandler);
+ $this->setCachedValue($cacheKey, $onGce);
+ }
+ return $onGce;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/src/GetQuotaProjectInterface.php b/wp-content/plugins/google-site-kit/third-party/google/auth/src/GetQuotaProjectInterface.php
new file mode 100644
index 000000000..d0b184b07
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/auth/src/GetQuotaProjectInterface.php
@@ -0,0 +1,32 @@
+client = $client;
+ }
+ /**
+ * Accepts a PSR-7 Request and an array of options and returns a PSR-7 response.
+ *
+ * @param RequestInterface $request
+ * @param array $options
+ * @return ResponseInterface
+ */
+ public function __invoke(\Google\Site_Kit_Dependencies\Psr\Http\Message\RequestInterface $request, array $options = [])
+ {
+ $response = $this->client->send($this->createGuzzle5Request($request, $options));
+ return $this->createPsr7Response($response);
+ }
+ /**
+ * Accepts a PSR-7 request and an array of options and returns a PromiseInterface
+ *
+ * @param RequestInterface $request
+ * @param array $options
+ * @return Promise
+ */
+ public function async(\Google\Site_Kit_Dependencies\Psr\Http\Message\RequestInterface $request, array $options = [])
+ {
+ if (!\class_exists('Google\\Site_Kit_Dependencies\\GuzzleHttp\\Promise\\Promise')) {
+ throw new \Exception('Install guzzlehttp/promises to use async with Guzzle 5');
+ }
+ $futureResponse = $this->client->send($this->createGuzzle5Request($request, ['future' => \true] + $options));
+ $promise = new \Google\Site_Kit_Dependencies\GuzzleHttp\Promise\Promise(function () use($futureResponse) {
+ try {
+ $futureResponse->wait();
+ } catch (\Exception $e) {
+ // The promise is already delivered when the exception is
+ // thrown, so don't rethrow it.
+ }
+ }, [$futureResponse, 'cancel']);
+ $futureResponse->then([$promise, 'resolve'], [$promise, 'reject']);
+ return $promise->then(function (\Google\Site_Kit_Dependencies\GuzzleHttp\Message\ResponseInterface $response) {
+ // Adapt the Guzzle 5 Response to a PSR-7 Response.
+ return $this->createPsr7Response($response);
+ }, function (\Exception $e) {
+ return new \Google\Site_Kit_Dependencies\GuzzleHttp\Promise\RejectedPromise($e);
+ });
+ }
+ private function createGuzzle5Request(\Google\Site_Kit_Dependencies\Psr\Http\Message\RequestInterface $request, array $options)
+ {
+ return $this->client->createRequest($request->getMethod(), $request->getUri(), \array_merge_recursive(['headers' => $request->getHeaders(), 'body' => $request->getBody()], $options));
+ }
+ private function createPsr7Response(\Google\Site_Kit_Dependencies\GuzzleHttp\Message\ResponseInterface $response)
+ {
+ return new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Response($response->getStatusCode(), $response->getHeaders() ?: [], $response->getBody(), $response->getProtocolVersion(), $response->getReasonPhrase());
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/src/HttpHandler/Guzzle6HttpHandler.php b/wp-content/plugins/google-site-kit/third-party/google/auth/src/HttpHandler/Guzzle6HttpHandler.php
new file mode 100644
index 000000000..b7029eabc
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/auth/src/HttpHandler/Guzzle6HttpHandler.php
@@ -0,0 +1,59 @@
+client = $client;
+ }
+ /**
+ * Accepts a PSR-7 request and an array of options and returns a PSR-7 response.
+ *
+ * @param RequestInterface $request
+ * @param array $options
+ * @return ResponseInterface
+ */
+ public function __invoke(\Google\Site_Kit_Dependencies\Psr\Http\Message\RequestInterface $request, array $options = [])
+ {
+ return $this->client->send($request, $options);
+ }
+ /**
+ * Accepts a PSR-7 request and an array of options and returns a PromiseInterface
+ *
+ * @param RequestInterface $request
+ * @param array $options
+ *
+ * @return \GuzzleHttp\Promise\PromiseInterface
+ */
+ public function async(\Google\Site_Kit_Dependencies\Psr\Http\Message\RequestInterface $request, array $options = [])
+ {
+ return $this->client->sendAsync($request, $options);
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/src/HttpHandler/Guzzle7HttpHandler.php b/wp-content/plugins/google-site-kit/third-party/google/auth/src/HttpHandler/Guzzle7HttpHandler.php
new file mode 100644
index 000000000..6cc394fed
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/auth/src/HttpHandler/Guzzle7HttpHandler.php
@@ -0,0 +1,22 @@
+httpHandler = $httpHandler ?: \Google\Site_Kit_Dependencies\Google\Auth\HttpHandler\HttpHandlerFactory::build(\Google\Site_Kit_Dependencies\Google\Auth\HttpHandler\HttpClientCache::getHttpClient());
+ }
+ /**
+ * Sign a string using the IAM signBlob API.
+ *
+ * Note that signing using IAM requires your service account to have the
+ * `iam.serviceAccounts.signBlob` permission, part of the "Service Account
+ * Token Creator" IAM role.
+ *
+ * @param string $email The service account email.
+ * @param string $accessToken An access token from the service account.
+ * @param string $stringToSign The string to be signed.
+ * @param array $delegates [optional] A list of service account emails to
+ * add to the delegate chain. If omitted, the value of `$email` will
+ * be used.
+ * @return string The signed string, base64-encoded.
+ */
+ public function signBlob($email, $accessToken, $stringToSign, array $delegates = [])
+ {
+ $httpHandler = $this->httpHandler;
+ $name = \sprintf(self::SERVICE_ACCOUNT_NAME, $email);
+ $uri = self::IAM_API_ROOT . '/' . \sprintf(self::SIGN_BLOB_PATH, $name);
+ if ($delegates) {
+ foreach ($delegates as &$delegate) {
+ $delegate = \sprintf(self::SERVICE_ACCOUNT_NAME, $delegate);
+ }
+ } else {
+ $delegates = [$name];
+ }
+ $body = ['delegates' => $delegates, 'payload' => \base64_encode($stringToSign)];
+ $headers = ['Authorization' => 'Bearer ' . $accessToken];
+ $request = new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Request('POST', $uri, $headers, \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Utils::streamFor(\json_encode($body)));
+ $res = $httpHandler($request);
+ $body = \json_decode((string) $res->getBody(), \true);
+ return $body['signedBlob'];
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/src/Middleware/AuthTokenMiddleware.php b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Middleware/AuthTokenMiddleware.php
new file mode 100644
index 000000000..326e7c01c
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Middleware/AuthTokenMiddleware.php
@@ -0,0 +1,125 @@
+'
+ */
+class AuthTokenMiddleware
+{
+ /**
+ * @var callback
+ */
+ private $httpHandler;
+ /**
+ * @var FetchAuthTokenInterface
+ */
+ private $fetcher;
+ /**
+ * @var callable
+ */
+ private $tokenCallback;
+ /**
+ * Creates a new AuthTokenMiddleware.
+ *
+ * @param FetchAuthTokenInterface $fetcher is used to fetch the auth token
+ * @param callable $httpHandler (optional) callback which delivers psr7 request
+ * @param callable $tokenCallback (optional) function to be called when a new token is fetched.
+ */
+ public function __construct(\Google\Site_Kit_Dependencies\Google\Auth\FetchAuthTokenInterface $fetcher, callable $httpHandler = null, callable $tokenCallback = null)
+ {
+ $this->fetcher = $fetcher;
+ $this->httpHandler = $httpHandler;
+ $this->tokenCallback = $tokenCallback;
+ }
+ /**
+ * Updates the request with an Authorization header when auth is 'google_auth'.
+ *
+ * use Google\Auth\Middleware\AuthTokenMiddleware;
+ * use Google\Auth\OAuth2;
+ * use GuzzleHttp\Client;
+ * use GuzzleHttp\HandlerStack;
+ *
+ * $config = [...];
+ * $oauth2 = new OAuth2($config)
+ * $middleware = new AuthTokenMiddleware($oauth2);
+ * $stack = HandlerStack::create();
+ * $stack->push($middleware);
+ *
+ * $client = new Client([
+ * 'handler' => $stack,
+ * 'base_uri' => 'https://www.googleapis.com/taskqueue/v1beta2/projects/',
+ * 'auth' => 'google_auth' // authorize all requests
+ * ]);
+ *
+ * $res = $client->get('myproject/taskqueues/myqueue');
+ *
+ * @param callable $handler
+ * @return \Closure
+ */
+ public function __invoke(callable $handler)
+ {
+ return function (\Google\Site_Kit_Dependencies\Psr\Http\Message\RequestInterface $request, array $options) use($handler) {
+ // Requests using "auth"="google_auth" will be authorized.
+ if (!isset($options['auth']) || $options['auth'] !== 'google_auth') {
+ return $handler($request, $options);
+ }
+ $request = $request->withHeader('authorization', 'Bearer ' . $this->fetchToken());
+ if ($quotaProject = $this->getQuotaProject()) {
+ $request = $request->withHeader(\Google\Site_Kit_Dependencies\Google\Auth\GetQuotaProjectInterface::X_GOOG_USER_PROJECT_HEADER, $quotaProject);
+ }
+ return $handler($request, $options);
+ };
+ }
+ /**
+ * Call fetcher to fetch the token.
+ *
+ * @return string
+ */
+ private function fetchToken()
+ {
+ $auth_tokens = $this->fetcher->fetchAuthToken($this->httpHandler);
+ if (\array_key_exists('access_token', $auth_tokens)) {
+ // notify the callback if applicable
+ if ($this->tokenCallback) {
+ \call_user_func($this->tokenCallback, $this->fetcher->getCacheKey(), $auth_tokens['access_token']);
+ }
+ return $auth_tokens['access_token'];
+ }
+ if (\array_key_exists('id_token', $auth_tokens)) {
+ return $auth_tokens['id_token'];
+ }
+ }
+ private function getQuotaProject()
+ {
+ if ($this->fetcher instanceof \Google\Site_Kit_Dependencies\Google\Auth\GetQuotaProjectInterface) {
+ return $this->fetcher->getQuotaProject();
+ }
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/src/Middleware/ProxyAuthTokenMiddleware.php b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Middleware/ProxyAuthTokenMiddleware.php
new file mode 100644
index 000000000..4683b5f2d
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Middleware/ProxyAuthTokenMiddleware.php
@@ -0,0 +1,125 @@
+'
+ */
+class ProxyAuthTokenMiddleware
+{
+ /**
+ * @var callback
+ */
+ private $httpHandler;
+ /**
+ * @var FetchAuthTokenInterface
+ */
+ private $fetcher;
+ /**
+ * @var callable
+ */
+ private $tokenCallback;
+ /**
+ * Creates a new ProxyAuthTokenMiddleware.
+ *
+ * @param FetchAuthTokenInterface $fetcher is used to fetch the auth token
+ * @param callable $httpHandler (optional) callback which delivers psr7 request
+ * @param callable $tokenCallback (optional) function to be called when a new token is fetched.
+ */
+ public function __construct(\Google\Site_Kit_Dependencies\Google\Auth\FetchAuthTokenInterface $fetcher, callable $httpHandler = null, callable $tokenCallback = null)
+ {
+ $this->fetcher = $fetcher;
+ $this->httpHandler = $httpHandler;
+ $this->tokenCallback = $tokenCallback;
+ }
+ /**
+ * Updates the request with an Authorization header when auth is 'google_auth'.
+ *
+ * use Google\Auth\Middleware\ProxyAuthTokenMiddleware;
+ * use Google\Auth\OAuth2;
+ * use GuzzleHttp\Client;
+ * use GuzzleHttp\HandlerStack;
+ *
+ * $config = [...];
+ * $oauth2 = new OAuth2($config)
+ * $middleware = new ProxyAuthTokenMiddleware($oauth2);
+ * $stack = HandlerStack::create();
+ * $stack->push($middleware);
+ *
+ * $client = new Client([
+ * 'handler' => $stack,
+ * 'base_uri' => 'https://www.googleapis.com/taskqueue/v1beta2/projects/',
+ * 'proxy_auth' => 'google_auth' // authorize all requests
+ * ]);
+ *
+ * $res = $client->get('myproject/taskqueues/myqueue');
+ *
+ * @param callable $handler
+ * @return \Closure
+ */
+ public function __invoke(callable $handler)
+ {
+ return function (\Google\Site_Kit_Dependencies\Psr\Http\Message\RequestInterface $request, array $options) use($handler) {
+ // Requests using "proxy_auth"="google_auth" will be authorized.
+ if (!isset($options['proxy_auth']) || $options['proxy_auth'] !== 'google_auth') {
+ return $handler($request, $options);
+ }
+ $request = $request->withHeader('proxy-authorization', 'Bearer ' . $this->fetchToken());
+ if ($quotaProject = $this->getQuotaProject()) {
+ $request = $request->withHeader(\Google\Site_Kit_Dependencies\Google\Auth\GetQuotaProjectInterface::X_GOOG_USER_PROJECT_HEADER, $quotaProject);
+ }
+ return $handler($request, $options);
+ };
+ }
+ /**
+ * Call fetcher to fetch the token.
+ *
+ * @return string
+ */
+ private function fetchToken()
+ {
+ $auth_tokens = $this->fetcher->fetchAuthToken($this->httpHandler);
+ if (\array_key_exists('access_token', $auth_tokens)) {
+ // notify the callback if applicable
+ if ($this->tokenCallback) {
+ \call_user_func($this->tokenCallback, $this->fetcher->getCacheKey(), $auth_tokens['access_token']);
+ }
+ return $auth_tokens['access_token'];
+ }
+ if (\array_key_exists('id_token', $auth_tokens)) {
+ return $auth_tokens['id_token'];
+ }
+ }
+ private function getQuotaProject()
+ {
+ if ($this->fetcher instanceof \Google\Site_Kit_Dependencies\Google\Auth\GetQuotaProjectInterface) {
+ return $this->fetcher->getQuotaProject();
+ }
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/src/Middleware/ScopedAccessTokenMiddleware.php b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Middleware/ScopedAccessTokenMiddleware.php
new file mode 100644
index 000000000..a9dd55d44
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Middleware/ScopedAccessTokenMiddleware.php
@@ -0,0 +1,148 @@
+'
+ */
+class ScopedAccessTokenMiddleware
+{
+ use CacheTrait;
+ const DEFAULT_CACHE_LIFETIME = 1500;
+ /**
+ * @var CacheItemPoolInterface
+ */
+ private $cache;
+ /**
+ * @var array configuration
+ */
+ private $cacheConfig;
+ /**
+ * @var callable
+ */
+ private $tokenFunc;
+ /**
+ * @var array|string
+ */
+ private $scopes;
+ /**
+ * Creates a new ScopedAccessTokenMiddleware.
+ *
+ * @param callable $tokenFunc a token generator function
+ * @param array|string $scopes the token authentication scopes
+ * @param array $cacheConfig configuration for the cache when it's present
+ * @param CacheItemPoolInterface $cache an implementation of CacheItemPoolInterface
+ */
+ public function __construct(callable $tokenFunc, $scopes, array $cacheConfig = null, \Google\Site_Kit_Dependencies\Psr\Cache\CacheItemPoolInterface $cache = null)
+ {
+ $this->tokenFunc = $tokenFunc;
+ if (!(\is_string($scopes) || \is_array($scopes))) {
+ throw new \InvalidArgumentException('wants scope should be string or array');
+ }
+ $this->scopes = $scopes;
+ if (!\is_null($cache)) {
+ $this->cache = $cache;
+ $this->cacheConfig = \array_merge(['lifetime' => self::DEFAULT_CACHE_LIFETIME, 'prefix' => ''], $cacheConfig);
+ }
+ }
+ /**
+ * Updates the request with an Authorization header when auth is 'scoped'.
+ *
+ * E.g this could be used to authenticate using the AppEngine
+ * AppIdentityService.
+ *
+ * use google\appengine\api\app_identity\AppIdentityService;
+ * use Google\Auth\Middleware\ScopedAccessTokenMiddleware;
+ * use GuzzleHttp\Client;
+ * use GuzzleHttp\HandlerStack;
+ *
+ * $scope = 'https://www.googleapis.com/auth/taskqueue'
+ * $middleware = new ScopedAccessTokenMiddleware(
+ * 'AppIdentityService::getAccessToken',
+ * $scope,
+ * [ 'prefix' => 'Google\Auth\ScopedAccessToken::' ],
+ * $cache = new Memcache()
+ * );
+ * $stack = HandlerStack::create();
+ * $stack->push($middleware);
+ *
+ * $client = new Client([
+ * 'handler' => $stack,
+ * 'base_url' => 'https://www.googleapis.com/taskqueue/v1beta2/projects/',
+ * 'auth' => 'scoped' // authorize all requests
+ * ]);
+ *
+ * $res = $client->get('myproject/taskqueues/myqueue');
+ *
+ * @param callable $handler
+ * @return \Closure
+ */
+ public function __invoke(callable $handler)
+ {
+ return function (\Google\Site_Kit_Dependencies\Psr\Http\Message\RequestInterface $request, array $options) use($handler) {
+ // Requests using "auth"="scoped" will be authorized.
+ if (!isset($options['auth']) || $options['auth'] !== 'scoped') {
+ return $handler($request, $options);
+ }
+ $request = $request->withHeader('authorization', 'Bearer ' . $this->fetchToken());
+ return $handler($request, $options);
+ };
+ }
+ /**
+ * @return string
+ */
+ private function getCacheKey()
+ {
+ $key = null;
+ if (\is_string($this->scopes)) {
+ $key .= $this->scopes;
+ } elseif (\is_array($this->scopes)) {
+ $key .= \implode(':', $this->scopes);
+ }
+ return $key;
+ }
+ /**
+ * Determine if token is available in the cache, if not call tokenFunc to
+ * fetch it.
+ *
+ * @return string
+ */
+ private function fetchToken()
+ {
+ $cacheKey = $this->getCacheKey();
+ $cached = $this->getCachedValue($cacheKey);
+ if (!empty($cached)) {
+ return $cached;
+ }
+ $token = \call_user_func($this->tokenFunc, $this->scopes);
+ $this->setCachedValue($cacheKey, $token);
+ return $token;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/src/Middleware/SimpleMiddleware.php b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Middleware/SimpleMiddleware.php
new file mode 100644
index 000000000..8441bfd5d
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Middleware/SimpleMiddleware.php
@@ -0,0 +1,86 @@
+config = \array_merge(['key' => null], $config);
+ }
+ /**
+ * Updates the request query with the developer key if auth is set to simple.
+ *
+ * use Google\Auth\Middleware\SimpleMiddleware;
+ * use GuzzleHttp\Client;
+ * use GuzzleHttp\HandlerStack;
+ *
+ * $my_key = 'is not the same as yours';
+ * $middleware = new SimpleMiddleware(['key' => $my_key]);
+ * $stack = HandlerStack::create();
+ * $stack->push($middleware);
+ *
+ * $client = new Client([
+ * 'handler' => $stack,
+ * 'base_uri' => 'https://www.googleapis.com/discovery/v1/',
+ * 'auth' => 'simple'
+ * ]);
+ *
+ * $res = $client->get('drive/v2/rest');
+ *
+ * @param callable $handler
+ * @return \Closure
+ */
+ public function __invoke(callable $handler)
+ {
+ return function (\Google\Site_Kit_Dependencies\Psr\Http\Message\RequestInterface $request, array $options) use($handler) {
+ // Requests using "auth"="scoped" will be authorized.
+ if (!isset($options['auth']) || $options['auth'] !== 'simple') {
+ return $handler($request, $options);
+ }
+ $query = \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Query::parse($request->getUri()->getQuery());
+ $params = \array_merge($query, $this->config);
+ $uri = $request->getUri()->withQuery(\Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Query::build($params));
+ $request = $request->withUri($uri);
+ return $handler($request, $options);
+ };
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/src/OAuth2.php b/wp-content/plugins/google-site-kit/third-party/google/auth/src/OAuth2.php
new file mode 100644
index 000000000..d3552989e
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/auth/src/OAuth2.php
@@ -0,0 +1,1201 @@
+ self::DEFAULT_EXPIRY_SECONDS, 'extensionParams' => [], 'authorizationUri' => null, 'redirectUri' => null, 'tokenCredentialUri' => null, 'state' => null, 'username' => null, 'password' => null, 'clientId' => null, 'clientSecret' => null, 'issuer' => null, 'sub' => null, 'audience' => null, 'signingKey' => null, 'signingKeyId' => null, 'signingAlgorithm' => null, 'scope' => null, 'additionalClaims' => []], $config);
+ $this->setAuthorizationUri($opts['authorizationUri']);
+ $this->setRedirectUri($opts['redirectUri']);
+ $this->setTokenCredentialUri($opts['tokenCredentialUri']);
+ $this->setState($opts['state']);
+ $this->setUsername($opts['username']);
+ $this->setPassword($opts['password']);
+ $this->setClientId($opts['clientId']);
+ $this->setClientSecret($opts['clientSecret']);
+ $this->setIssuer($opts['issuer']);
+ $this->setSub($opts['sub']);
+ $this->setExpiry($opts['expiry']);
+ $this->setAudience($opts['audience']);
+ $this->setSigningKey($opts['signingKey']);
+ $this->setSigningKeyId($opts['signingKeyId']);
+ $this->setSigningAlgorithm($opts['signingAlgorithm']);
+ $this->setScope($opts['scope']);
+ $this->setExtensionParams($opts['extensionParams']);
+ $this->setAdditionalClaims($opts['additionalClaims']);
+ $this->updateToken($opts);
+ }
+ /**
+ * Verifies the idToken if present.
+ *
+ * - if none is present, return null
+ * - if present, but invalid, raises DomainException.
+ * - otherwise returns the payload in the idtoken as a PHP object.
+ *
+ * The behavior of this method varies depending on the version of
+ * `firebase/php-jwt` you are using. In versions lower than 3.0.0, if
+ * `$publicKey` is null, the key is decoded without being verified. In
+ * newer versions, if a public key is not given, this method will throw an
+ * `\InvalidArgumentException`.
+ *
+ * @param string $publicKey The public key to use to authenticate the token
+ * @param array $allowed_algs List of supported verification algorithms
+ * @throws \DomainException if the token is missing an audience.
+ * @throws \DomainException if the audience does not match the one set in
+ * the OAuth2 class instance.
+ * @throws \UnexpectedValueException If the token is invalid
+ * @throws SignatureInvalidException If the signature is invalid.
+ * @throws BeforeValidException If the token is not yet valid.
+ * @throws ExpiredException If the token has expired.
+ * @return null|object
+ */
+ public function verifyIdToken($publicKey = null, $allowed_algs = array())
+ {
+ $idToken = $this->getIdToken();
+ if (\is_null($idToken)) {
+ return null;
+ }
+ $resp = $this->jwtDecode($idToken, $publicKey, $allowed_algs);
+ if (!\property_exists($resp, 'aud')) {
+ throw new \DomainException('No audience found the id token');
+ }
+ if ($resp->aud != $this->getAudience()) {
+ throw new \DomainException('Wrong audience present in the id token');
+ }
+ return $resp;
+ }
+ /**
+ * Obtains the encoded jwt from the instance data.
+ *
+ * @param array $config array optional configuration parameters
+ * @return string
+ */
+ public function toJwt(array $config = [])
+ {
+ if (\is_null($this->getSigningKey())) {
+ throw new \DomainException('No signing key available');
+ }
+ if (\is_null($this->getSigningAlgorithm())) {
+ throw new \DomainException('No signing algorithm specified');
+ }
+ $now = \time();
+ $opts = \array_merge(['skew' => self::DEFAULT_SKEW_SECONDS], $config);
+ $assertion = ['iss' => $this->getIssuer(), 'exp' => $now + $this->getExpiry(), 'iat' => $now - $opts['skew']];
+ foreach ($assertion as $k => $v) {
+ if (\is_null($v)) {
+ throw new \DomainException($k . ' should not be null');
+ }
+ }
+ if (!\is_null($this->getAudience())) {
+ $assertion['aud'] = $this->getAudience();
+ }
+ if (!\is_null($this->getScope())) {
+ $assertion['scope'] = $this->getScope();
+ }
+ if (empty($assertion['scope']) && empty($assertion['aud'])) {
+ throw new \DomainException('one of scope or aud should not be null');
+ }
+ if (!\is_null($this->getSub())) {
+ $assertion['sub'] = $this->getSub();
+ }
+ $assertion += $this->getAdditionalClaims();
+ return $this->jwtEncode($assertion, $this->getSigningKey(), $this->getSigningAlgorithm(), $this->getSigningKeyId());
+ }
+ /**
+ * Generates a request for token credentials.
+ *
+ * @return RequestInterface the authorization Url.
+ */
+ public function generateCredentialsRequest()
+ {
+ $uri = $this->getTokenCredentialUri();
+ if (\is_null($uri)) {
+ throw new \DomainException('No token credential URI was set.');
+ }
+ $grantType = $this->getGrantType();
+ $params = array('grant_type' => $grantType);
+ switch ($grantType) {
+ case 'authorization_code':
+ $params['code'] = $this->getCode();
+ $params['redirect_uri'] = $this->getRedirectUri();
+ $this->addClientCredentials($params);
+ break;
+ case 'password':
+ $params['username'] = $this->getUsername();
+ $params['password'] = $this->getPassword();
+ $this->addClientCredentials($params);
+ break;
+ case 'refresh_token':
+ $params['refresh_token'] = $this->getRefreshToken();
+ $this->addClientCredentials($params);
+ break;
+ case self::JWT_URN:
+ $params['assertion'] = $this->toJwt();
+ break;
+ default:
+ if (!\is_null($this->getRedirectUri())) {
+ # Grant type was supposed to be 'authorization_code', as there
+ # is a redirect URI.
+ throw new \DomainException('Missing authorization code');
+ }
+ unset($params['grant_type']);
+ if (!\is_null($grantType)) {
+ $params['grant_type'] = $grantType;
+ }
+ $params = \array_merge($params, $this->getExtensionParams());
+ }
+ $headers = ['Cache-Control' => 'no-store', 'Content-Type' => 'application/x-www-form-urlencoded'];
+ return new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Request('POST', $uri, $headers, \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Query::build($params));
+ }
+ /**
+ * Fetches the auth tokens based on the current state.
+ *
+ * @param callable $httpHandler callback which delivers psr7 request
+ * @return array the response
+ */
+ public function fetchAuthToken(callable $httpHandler = null)
+ {
+ if (\is_null($httpHandler)) {
+ $httpHandler = \Google\Site_Kit_Dependencies\Google\Auth\HttpHandler\HttpHandlerFactory::build(\Google\Site_Kit_Dependencies\Google\Auth\HttpHandler\HttpClientCache::getHttpClient());
+ }
+ $response = $httpHandler($this->generateCredentialsRequest());
+ $credentials = $this->parseTokenResponse($response);
+ $this->updateToken($credentials);
+ return $credentials;
+ }
+ /**
+ * Obtains a key that can used to cache the results of #fetchAuthToken.
+ *
+ * The key is derived from the scopes.
+ *
+ * @return string a key that may be used to cache the auth token.
+ */
+ public function getCacheKey()
+ {
+ if (\is_array($this->scope)) {
+ return \implode(':', $this->scope);
+ }
+ if ($this->audience) {
+ return $this->audience;
+ }
+ // If scope has not set, return null to indicate no caching.
+ return null;
+ }
+ /**
+ * Parses the fetched tokens.
+ *
+ * @param ResponseInterface $resp the response.
+ * @return array the tokens parsed from the response body.
+ * @throws \Exception
+ */
+ public function parseTokenResponse(\Google\Site_Kit_Dependencies\Psr\Http\Message\ResponseInterface $resp)
+ {
+ $body = (string) $resp->getBody();
+ if ($resp->hasHeader('Content-Type') && $resp->getHeaderLine('Content-Type') == 'application/x-www-form-urlencoded') {
+ $res = array();
+ \parse_str($body, $res);
+ return $res;
+ }
+ // Assume it's JSON; if it's not throw an exception
+ if (null === ($res = \json_decode($body, \true))) {
+ throw new \Exception('Invalid JSON response');
+ }
+ return $res;
+ }
+ /**
+ * Updates an OAuth 2.0 client.
+ *
+ * Example:
+ * ```
+ * $oauth->updateToken([
+ * 'refresh_token' => 'n4E9O119d',
+ * 'access_token' => 'FJQbwq9',
+ * 'expires_in' => 3600
+ * ]);
+ * ```
+ *
+ * @param array $config
+ * The configuration parameters related to the token.
+ *
+ * - refresh_token
+ * The refresh token associated with the access token
+ * to be refreshed.
+ *
+ * - access_token
+ * The current access token for this client.
+ *
+ * - id_token
+ * The current ID token for this client.
+ *
+ * - expires_in
+ * The time in seconds until access token expiration.
+ *
+ * - expires_at
+ * The time as an integer number of seconds since the Epoch
+ *
+ * - issued_at
+ * The timestamp that the token was issued at.
+ */
+ public function updateToken(array $config)
+ {
+ $opts = \array_merge(['extensionParams' => [], 'access_token' => null, 'id_token' => null, 'expires_in' => null, 'expires_at' => null, 'issued_at' => null], $config);
+ $this->setExpiresAt($opts['expires_at']);
+ $this->setExpiresIn($opts['expires_in']);
+ // By default, the token is issued at `Time.now` when `expiresIn` is set,
+ // but this can be used to supply a more precise time.
+ if (!\is_null($opts['issued_at'])) {
+ $this->setIssuedAt($opts['issued_at']);
+ }
+ $this->setAccessToken($opts['access_token']);
+ $this->setIdToken($opts['id_token']);
+ // The refresh token should only be updated if a value is explicitly
+ // passed in, as some access token responses do not include a refresh
+ // token.
+ if (\array_key_exists('refresh_token', $opts)) {
+ $this->setRefreshToken($opts['refresh_token']);
+ }
+ }
+ /**
+ * Builds the authorization Uri that the user should be redirected to.
+ *
+ * @param array $config configuration options that customize the return url
+ * @return UriInterface the authorization Url.
+ * @throws InvalidArgumentException
+ */
+ public function buildFullAuthorizationUri(array $config = [])
+ {
+ if (\is_null($this->getAuthorizationUri())) {
+ throw new \InvalidArgumentException('requires an authorizationUri to have been set');
+ }
+ $params = \array_merge(['response_type' => 'code', 'access_type' => 'offline', 'client_id' => $this->clientId, 'redirect_uri' => $this->redirectUri, 'state' => $this->state, 'scope' => $this->getScope()], $config);
+ // Validate the auth_params
+ if (\is_null($params['client_id'])) {
+ throw new \InvalidArgumentException('missing the required client identifier');
+ }
+ if (\is_null($params['redirect_uri'])) {
+ throw new \InvalidArgumentException('missing the required redirect URI');
+ }
+ if (!empty($params['prompt']) && !empty($params['approval_prompt'])) {
+ throw new \InvalidArgumentException('prompt and approval_prompt are mutually exclusive');
+ }
+ // Construct the uri object; return it if it is valid.
+ $result = clone $this->authorizationUri;
+ $existingParams = \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Query::parse($result->getQuery());
+ $result = $result->withQuery(\Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Query::build(\array_merge($existingParams, $params)));
+ if ($result->getScheme() != 'https') {
+ throw new \InvalidArgumentException('Authorization endpoint must be protected by TLS');
+ }
+ return $result;
+ }
+ /**
+ * Sets the authorization server's HTTP endpoint capable of authenticating
+ * the end-user and obtaining authorization.
+ *
+ * @param string $uri
+ */
+ public function setAuthorizationUri($uri)
+ {
+ $this->authorizationUri = $this->coerceUri($uri);
+ }
+ /**
+ * Gets the authorization server's HTTP endpoint capable of authenticating
+ * the end-user and obtaining authorization.
+ *
+ * @return UriInterface
+ */
+ public function getAuthorizationUri()
+ {
+ return $this->authorizationUri;
+ }
+ /**
+ * Gets the authorization server's HTTP endpoint capable of issuing tokens
+ * and refreshing expired tokens.
+ *
+ * @return string
+ */
+ public function getTokenCredentialUri()
+ {
+ return $this->tokenCredentialUri;
+ }
+ /**
+ * Sets the authorization server's HTTP endpoint capable of issuing tokens
+ * and refreshing expired tokens.
+ *
+ * @param string $uri
+ */
+ public function setTokenCredentialUri($uri)
+ {
+ $this->tokenCredentialUri = $this->coerceUri($uri);
+ }
+ /**
+ * Gets the redirection URI used in the initial request.
+ *
+ * @return string
+ */
+ public function getRedirectUri()
+ {
+ return $this->redirectUri;
+ }
+ /**
+ * Sets the redirection URI used in the initial request.
+ *
+ * @param string $uri
+ */
+ public function setRedirectUri($uri)
+ {
+ if (\is_null($uri)) {
+ $this->redirectUri = null;
+ return;
+ }
+ // redirect URI must be absolute
+ if (!$this->isAbsoluteUri($uri)) {
+ // "postmessage" is a reserved URI string in Google-land
+ // @see https://developers.google.com/identity/sign-in/web/server-side-flow
+ if ('postmessage' !== (string) $uri) {
+ throw new \InvalidArgumentException('Redirect URI must be absolute');
+ }
+ }
+ $this->redirectUri = (string) $uri;
+ }
+ /**
+ * Gets the scope of the access requests as a space-delimited String.
+ *
+ * @return string
+ */
+ public function getScope()
+ {
+ if (\is_null($this->scope)) {
+ return $this->scope;
+ }
+ return \implode(' ', $this->scope);
+ }
+ /**
+ * Sets the scope of the access request, expressed either as an Array or as
+ * a space-delimited String.
+ *
+ * @param string|array $scope
+ * @throws InvalidArgumentException
+ */
+ public function setScope($scope)
+ {
+ if (\is_null($scope)) {
+ $this->scope = null;
+ } elseif (\is_string($scope)) {
+ $this->scope = \explode(' ', $scope);
+ } elseif (\is_array($scope)) {
+ foreach ($scope as $s) {
+ $pos = \strpos($s, ' ');
+ if ($pos !== \false) {
+ throw new \InvalidArgumentException('array scope values should not contain spaces');
+ }
+ }
+ $this->scope = $scope;
+ } else {
+ throw new \InvalidArgumentException('scopes should be a string or array of strings');
+ }
+ }
+ /**
+ * Gets the current grant type.
+ *
+ * @return string
+ */
+ public function getGrantType()
+ {
+ if (!\is_null($this->grantType)) {
+ return $this->grantType;
+ }
+ // Returns the inferred grant type, based on the current object instance
+ // state.
+ if (!\is_null($this->code)) {
+ return 'authorization_code';
+ }
+ if (!\is_null($this->refreshToken)) {
+ return 'refresh_token';
+ }
+ if (!\is_null($this->username) && !\is_null($this->password)) {
+ return 'password';
+ }
+ if (!\is_null($this->issuer) && !\is_null($this->signingKey)) {
+ return self::JWT_URN;
+ }
+ return null;
+ }
+ /**
+ * Sets the current grant type.
+ *
+ * @param $grantType
+ * @throws InvalidArgumentException
+ */
+ public function setGrantType($grantType)
+ {
+ if (\in_array($grantType, self::$knownGrantTypes)) {
+ $this->grantType = $grantType;
+ } else {
+ // validate URI
+ if (!$this->isAbsoluteUri($grantType)) {
+ throw new \InvalidArgumentException('invalid grant type');
+ }
+ $this->grantType = (string) $grantType;
+ }
+ }
+ /**
+ * Gets an arbitrary string designed to allow the client to maintain state.
+ *
+ * @return string
+ */
+ public function getState()
+ {
+ return $this->state;
+ }
+ /**
+ * Sets an arbitrary string designed to allow the client to maintain state.
+ *
+ * @param string $state
+ */
+ public function setState($state)
+ {
+ $this->state = $state;
+ }
+ /**
+ * Gets the authorization code issued to this client.
+ */
+ public function getCode()
+ {
+ return $this->code;
+ }
+ /**
+ * Sets the authorization code issued to this client.
+ *
+ * @param string $code
+ */
+ public function setCode($code)
+ {
+ $this->code = $code;
+ }
+ /**
+ * Gets the resource owner's username.
+ */
+ public function getUsername()
+ {
+ return $this->username;
+ }
+ /**
+ * Sets the resource owner's username.
+ *
+ * @param string $username
+ */
+ public function setUsername($username)
+ {
+ $this->username = $username;
+ }
+ /**
+ * Gets the resource owner's password.
+ */
+ public function getPassword()
+ {
+ return $this->password;
+ }
+ /**
+ * Sets the resource owner's password.
+ *
+ * @param $password
+ */
+ public function setPassword($password)
+ {
+ $this->password = $password;
+ }
+ /**
+ * Sets a unique identifier issued to the client to identify itself to the
+ * authorization server.
+ */
+ public function getClientId()
+ {
+ return $this->clientId;
+ }
+ /**
+ * Sets a unique identifier issued to the client to identify itself to the
+ * authorization server.
+ *
+ * @param $clientId
+ */
+ public function setClientId($clientId)
+ {
+ $this->clientId = $clientId;
+ }
+ /**
+ * Gets a shared symmetric secret issued by the authorization server, which
+ * is used to authenticate the client.
+ */
+ public function getClientSecret()
+ {
+ return $this->clientSecret;
+ }
+ /**
+ * Sets a shared symmetric secret issued by the authorization server, which
+ * is used to authenticate the client.
+ *
+ * @param $clientSecret
+ */
+ public function setClientSecret($clientSecret)
+ {
+ $this->clientSecret = $clientSecret;
+ }
+ /**
+ * Gets the Issuer ID when using assertion profile.
+ */
+ public function getIssuer()
+ {
+ return $this->issuer;
+ }
+ /**
+ * Sets the Issuer ID when using assertion profile.
+ *
+ * @param string $issuer
+ */
+ public function setIssuer($issuer)
+ {
+ $this->issuer = $issuer;
+ }
+ /**
+ * Gets the target sub when issuing assertions.
+ */
+ public function getSub()
+ {
+ return $this->sub;
+ }
+ /**
+ * Sets the target sub when issuing assertions.
+ *
+ * @param string $sub
+ */
+ public function setSub($sub)
+ {
+ $this->sub = $sub;
+ }
+ /**
+ * Gets the target audience when issuing assertions.
+ */
+ public function getAudience()
+ {
+ return $this->audience;
+ }
+ /**
+ * Sets the target audience when issuing assertions.
+ *
+ * @param string $audience
+ */
+ public function setAudience($audience)
+ {
+ $this->audience = $audience;
+ }
+ /**
+ * Gets the signing key when using an assertion profile.
+ */
+ public function getSigningKey()
+ {
+ return $this->signingKey;
+ }
+ /**
+ * Sets the signing key when using an assertion profile.
+ *
+ * @param string $signingKey
+ */
+ public function setSigningKey($signingKey)
+ {
+ $this->signingKey = $signingKey;
+ }
+ /**
+ * Gets the signing key id when using an assertion profile.
+ *
+ * @return string
+ */
+ public function getSigningKeyId()
+ {
+ return $this->signingKeyId;
+ }
+ /**
+ * Sets the signing key id when using an assertion profile.
+ *
+ * @param string $signingKeyId
+ */
+ public function setSigningKeyId($signingKeyId)
+ {
+ $this->signingKeyId = $signingKeyId;
+ }
+ /**
+ * Gets the signing algorithm when using an assertion profile.
+ *
+ * @return string
+ */
+ public function getSigningAlgorithm()
+ {
+ return $this->signingAlgorithm;
+ }
+ /**
+ * Sets the signing algorithm when using an assertion profile.
+ *
+ * @param string $signingAlgorithm
+ */
+ public function setSigningAlgorithm($signingAlgorithm)
+ {
+ if (\is_null($signingAlgorithm)) {
+ $this->signingAlgorithm = null;
+ } elseif (!\in_array($signingAlgorithm, self::$knownSigningAlgorithms)) {
+ throw new \InvalidArgumentException('unknown signing algorithm');
+ } else {
+ $this->signingAlgorithm = $signingAlgorithm;
+ }
+ }
+ /**
+ * Gets the set of parameters used by extension when using an extension
+ * grant type.
+ */
+ public function getExtensionParams()
+ {
+ return $this->extensionParams;
+ }
+ /**
+ * Sets the set of parameters used by extension when using an extension
+ * grant type.
+ *
+ * @param $extensionParams
+ */
+ public function setExtensionParams($extensionParams)
+ {
+ $this->extensionParams = $extensionParams;
+ }
+ /**
+ * Gets the number of seconds assertions are valid for.
+ */
+ public function getExpiry()
+ {
+ return $this->expiry;
+ }
+ /**
+ * Sets the number of seconds assertions are valid for.
+ *
+ * @param int $expiry
+ */
+ public function setExpiry($expiry)
+ {
+ $this->expiry = $expiry;
+ }
+ /**
+ * Gets the lifetime of the access token in seconds.
+ */
+ public function getExpiresIn()
+ {
+ return $this->expiresIn;
+ }
+ /**
+ * Sets the lifetime of the access token in seconds.
+ *
+ * @param int $expiresIn
+ */
+ public function setExpiresIn($expiresIn)
+ {
+ if (\is_null($expiresIn)) {
+ $this->expiresIn = null;
+ $this->issuedAt = null;
+ } else {
+ $this->issuedAt = \time();
+ $this->expiresIn = (int) $expiresIn;
+ }
+ }
+ /**
+ * Gets the time the current access token expires at.
+ *
+ * @return int
+ */
+ public function getExpiresAt()
+ {
+ if (!\is_null($this->expiresAt)) {
+ return $this->expiresAt;
+ }
+ if (!\is_null($this->issuedAt) && !\is_null($this->expiresIn)) {
+ return $this->issuedAt + $this->expiresIn;
+ }
+ return null;
+ }
+ /**
+ * Returns true if the acccess token has expired.
+ *
+ * @return bool
+ */
+ public function isExpired()
+ {
+ $expiration = $this->getExpiresAt();
+ $now = \time();
+ return !\is_null($expiration) && $now >= $expiration;
+ }
+ /**
+ * Sets the time the current access token expires at.
+ *
+ * @param int $expiresAt
+ */
+ public function setExpiresAt($expiresAt)
+ {
+ $this->expiresAt = $expiresAt;
+ }
+ /**
+ * Gets the time the current access token was issued at.
+ */
+ public function getIssuedAt()
+ {
+ return $this->issuedAt;
+ }
+ /**
+ * Sets the time the current access token was issued at.
+ *
+ * @param int $issuedAt
+ */
+ public function setIssuedAt($issuedAt)
+ {
+ $this->issuedAt = $issuedAt;
+ }
+ /**
+ * Gets the current access token.
+ */
+ public function getAccessToken()
+ {
+ return $this->accessToken;
+ }
+ /**
+ * Sets the current access token.
+ *
+ * @param string $accessToken
+ */
+ public function setAccessToken($accessToken)
+ {
+ $this->accessToken = $accessToken;
+ }
+ /**
+ * Gets the current ID token.
+ */
+ public function getIdToken()
+ {
+ return $this->idToken;
+ }
+ /**
+ * Sets the current ID token.
+ *
+ * @param $idToken
+ */
+ public function setIdToken($idToken)
+ {
+ $this->idToken = $idToken;
+ }
+ /**
+ * Gets the refresh token associated with the current access token.
+ */
+ public function getRefreshToken()
+ {
+ return $this->refreshToken;
+ }
+ /**
+ * Sets the refresh token associated with the current access token.
+ *
+ * @param $refreshToken
+ */
+ public function setRefreshToken($refreshToken)
+ {
+ $this->refreshToken = $refreshToken;
+ }
+ /**
+ * Sets additional claims to be included in the JWT token
+ *
+ * @param array $additionalClaims
+ */
+ public function setAdditionalClaims(array $additionalClaims)
+ {
+ $this->additionalClaims = $additionalClaims;
+ }
+ /**
+ * Gets the additional claims to be included in the JWT token.
+ *
+ * @return array
+ */
+ public function getAdditionalClaims()
+ {
+ return $this->additionalClaims;
+ }
+ /**
+ * The expiration of the last received token.
+ *
+ * @return array|null
+ */
+ public function getLastReceivedToken()
+ {
+ if ($token = $this->getAccessToken()) {
+ // the bare necessity of an auth token
+ $authToken = ['access_token' => $token, 'expires_at' => $this->getExpiresAt()];
+ } elseif ($idToken = $this->getIdToken()) {
+ $authToken = ['id_token' => $idToken, 'expires_at' => $this->getExpiresAt()];
+ } else {
+ return null;
+ }
+ if ($expiresIn = $this->getExpiresIn()) {
+ $authToken['expires_in'] = $expiresIn;
+ }
+ if ($issuedAt = $this->getIssuedAt()) {
+ $authToken['issued_at'] = $issuedAt;
+ }
+ if ($refreshToken = $this->getRefreshToken()) {
+ $authToken['refresh_token'] = $refreshToken;
+ }
+ return $authToken;
+ }
+ /**
+ * Get the client ID.
+ *
+ * Alias of {@see Google\Auth\OAuth2::getClientId()}.
+ *
+ * @param callable $httpHandler
+ * @return string
+ * @access private
+ */
+ public function getClientName(callable $httpHandler = null)
+ {
+ return $this->getClientId();
+ }
+ /**
+ * @todo handle uri as array
+ *
+ * @param string $uri
+ * @return null|UriInterface
+ */
+ private function coerceUri($uri)
+ {
+ if (\is_null($uri)) {
+ return;
+ }
+ return \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Utils::uriFor($uri);
+ }
+ /**
+ * @param string $idToken
+ * @param string|array|null $publicKey
+ * @param array $allowedAlgs
+ * @return object
+ */
+ private function jwtDecode($idToken, $publicKey, $allowedAlgs)
+ {
+ if (\class_exists('Google\\Site_Kit_Dependencies\\Firebase\\JWT\\JWT')) {
+ return \Google\Site_Kit_Dependencies\Firebase\JWT\JWT::decode($idToken, $publicKey, $allowedAlgs);
+ }
+ return \Google\Site_Kit_Dependencies\JWT::decode($idToken, $publicKey, $allowedAlgs);
+ }
+ private function jwtEncode($assertion, $signingKey, $signingAlgorithm, $signingKeyId = null)
+ {
+ if (\class_exists('Google\\Site_Kit_Dependencies\\Firebase\\JWT\\JWT')) {
+ return \Google\Site_Kit_Dependencies\Firebase\JWT\JWT::encode($assertion, $signingKey, $signingAlgorithm, $signingKeyId);
+ }
+ return \Google\Site_Kit_Dependencies\JWT::encode($assertion, $signingKey, $signingAlgorithm, $signingKeyId);
+ }
+ /**
+ * Determines if the URI is absolute based on its scheme and host or path
+ * (RFC 3986).
+ *
+ * @param string $uri
+ * @return bool
+ */
+ private function isAbsoluteUri($uri)
+ {
+ $uri = $this->coerceUri($uri);
+ return $uri->getScheme() && ($uri->getHost() || $uri->getPath());
+ }
+ /**
+ * @param array $params
+ * @return array
+ */
+ private function addClientCredentials(&$params)
+ {
+ $clientId = $this->getClientId();
+ $clientSecret = $this->getClientSecret();
+ if ($clientId && $clientSecret) {
+ $params['client_id'] = $clientId;
+ $params['client_secret'] = $clientSecret;
+ }
+ return $params;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/src/ProjectIdProviderInterface.php b/wp-content/plugins/google-site-kit/third-party/google/auth/src/ProjectIdProviderInterface.php
new file mode 100644
index 000000000..d6fbc65da
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/auth/src/ProjectIdProviderInterface.php
@@ -0,0 +1,32 @@
+auth->getSigningKey();
+ $signedString = '';
+ if (\class_exists('Google\\Site_Kit_Dependencies\\phpseclib\\Crypt\\RSA') && !$forceOpenssl) {
+ $rsa = new \Google\Site_Kit_Dependencies\phpseclib\Crypt\RSA();
+ $rsa->loadKey($privateKey);
+ $rsa->setSignatureMode(\Google\Site_Kit_Dependencies\phpseclib\Crypt\RSA::SIGNATURE_PKCS1);
+ $rsa->setHash('sha256');
+ $signedString = $rsa->sign($stringToSign);
+ } elseif (\extension_loaded('openssl')) {
+ \openssl_sign($stringToSign, $signedString, $privateKey, 'sha256WithRSAEncryption');
+ } else {
+ // @codeCoverageIgnoreStart
+ throw new \RuntimeException('OpenSSL is not installed.');
+ }
+ // @codeCoverageIgnoreEnd
+ return \base64_encode($signedString);
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/src/SignBlobInterface.php b/wp-content/plugins/google-site-kit/third-party/google/auth/src/SignBlobInterface.php
new file mode 100644
index 000000000..90970e7fa
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/auth/src/SignBlobInterface.php
@@ -0,0 +1,43 @@
+'
+ */
+class AuthTokenSubscriber implements \Google\Site_Kit_Dependencies\GuzzleHttp\Event\SubscriberInterface
+{
+ /**
+ * @var callable
+ */
+ private $httpHandler;
+ /**
+ * @var FetchAuthTokenInterface
+ */
+ private $fetcher;
+ /**
+ * @var callable
+ */
+ private $tokenCallback;
+ /**
+ * Creates a new AuthTokenSubscriber.
+ *
+ * @param FetchAuthTokenInterface $fetcher is used to fetch the auth token
+ * @param callable $httpHandler (optional) http client to fetch the token.
+ * @param callable $tokenCallback (optional) function to be called when a new token is fetched.
+ */
+ public function __construct(\Google\Site_Kit_Dependencies\Google\Auth\FetchAuthTokenInterface $fetcher, callable $httpHandler = null, callable $tokenCallback = null)
+ {
+ $this->fetcher = $fetcher;
+ $this->httpHandler = $httpHandler;
+ $this->tokenCallback = $tokenCallback;
+ }
+ /**
+ * @return array
+ */
+ public function getEvents()
+ {
+ return ['before' => ['onBefore', \Google\Site_Kit_Dependencies\GuzzleHttp\Event\RequestEvents::SIGN_REQUEST]];
+ }
+ /**
+ * Updates the request with an Authorization header when auth is 'fetched_auth_token'.
+ *
+ * Example:
+ * ```
+ * use GuzzleHttp\Client;
+ * use Google\Auth\OAuth2;
+ * use Google\Auth\Subscriber\AuthTokenSubscriber;
+ *
+ * $config = [...];
+ * $oauth2 = new OAuth2($config)
+ * $subscriber = new AuthTokenSubscriber($oauth2);
+ *
+ * $client = new Client([
+ * 'base_url' => 'https://www.googleapis.com/taskqueue/v1beta2/projects/',
+ * 'defaults' => ['auth' => 'google_auth']
+ * ]);
+ * $client->getEmitter()->attach($subscriber);
+ *
+ * $res = $client->get('myproject/taskqueues/myqueue');
+ * ```
+ *
+ * @param BeforeEvent $event
+ */
+ public function onBefore(\Google\Site_Kit_Dependencies\GuzzleHttp\Event\BeforeEvent $event)
+ {
+ // Requests using "auth"="google_auth" will be authorized.
+ $request = $event->getRequest();
+ if ($request->getConfig()['auth'] != 'google_auth') {
+ return;
+ }
+ // Fetch the auth token.
+ $auth_tokens = $this->fetcher->fetchAuthToken($this->httpHandler);
+ if (\array_key_exists('access_token', $auth_tokens)) {
+ $request->setHeader('authorization', 'Bearer ' . $auth_tokens['access_token']);
+ // notify the callback if applicable
+ if ($this->tokenCallback) {
+ \call_user_func($this->tokenCallback, $this->fetcher->getCacheKey(), $auth_tokens['access_token']);
+ }
+ }
+ if ($quotaProject = $this->getQuotaProject()) {
+ $request->setHeader(\Google\Site_Kit_Dependencies\Google\Auth\GetQuotaProjectInterface::X_GOOG_USER_PROJECT_HEADER, $quotaProject);
+ }
+ }
+ private function getQuotaProject()
+ {
+ if ($this->fetcher instanceof \Google\Site_Kit_Dependencies\Google\Auth\GetQuotaProjectInterface) {
+ return $this->fetcher->getQuotaProject();
+ }
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/src/Subscriber/ScopedAccessTokenSubscriber.php b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Subscriber/ScopedAccessTokenSubscriber.php
new file mode 100644
index 000000000..4767e2de4
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Subscriber/ScopedAccessTokenSubscriber.php
@@ -0,0 +1,154 @@
+'
+ */
+class ScopedAccessTokenSubscriber implements \Google\Site_Kit_Dependencies\GuzzleHttp\Event\SubscriberInterface
+{
+ use CacheTrait;
+ const DEFAULT_CACHE_LIFETIME = 1500;
+ /**
+ * @var CacheItemPoolInterface
+ */
+ private $cache;
+ /**
+ * @var callable The access token generator function
+ */
+ private $tokenFunc;
+ /**
+ * @var array|string The scopes used to generate the token
+ */
+ private $scopes;
+ /**
+ * @var array
+ */
+ private $cacheConfig;
+ /**
+ * Creates a new ScopedAccessTokenSubscriber.
+ *
+ * @param callable $tokenFunc a token generator function
+ * @param array|string $scopes the token authentication scopes
+ * @param array $cacheConfig configuration for the cache when it's present
+ * @param CacheItemPoolInterface $cache an implementation of CacheItemPoolInterface
+ */
+ public function __construct(callable $tokenFunc, $scopes, array $cacheConfig = null, \Google\Site_Kit_Dependencies\Psr\Cache\CacheItemPoolInterface $cache = null)
+ {
+ $this->tokenFunc = $tokenFunc;
+ if (!(\is_string($scopes) || \is_array($scopes))) {
+ throw new \InvalidArgumentException('wants scope should be string or array');
+ }
+ $this->scopes = $scopes;
+ if (!\is_null($cache)) {
+ $this->cache = $cache;
+ $this->cacheConfig = \array_merge(['lifetime' => self::DEFAULT_CACHE_LIFETIME, 'prefix' => ''], $cacheConfig);
+ }
+ }
+ /**
+ * @return array
+ */
+ public function getEvents()
+ {
+ return ['before' => ['onBefore', \Google\Site_Kit_Dependencies\GuzzleHttp\Event\RequestEvents::SIGN_REQUEST]];
+ }
+ /**
+ * Updates the request with an Authorization header when auth is 'scoped'.
+ *
+ * E.g this could be used to authenticate using the AppEngine AppIdentityService.
+ *
+ * Example:
+ * ```
+ * use google\appengine\api\app_identity\AppIdentityService;
+ * use Google\Auth\Subscriber\ScopedAccessTokenSubscriber;
+ * use GuzzleHttp\Client;
+ *
+ * $scope = 'https://www.googleapis.com/auth/taskqueue'
+ * $subscriber = new ScopedAccessToken(
+ * 'AppIdentityService::getAccessToken',
+ * $scope,
+ * ['prefix' => 'Google\Auth\ScopedAccessToken::'],
+ * $cache = new Memcache()
+ * );
+ *
+ * $client = new Client([
+ * 'base_url' => 'https://www.googleapis.com/taskqueue/v1beta2/projects/',
+ * 'defaults' => ['auth' => 'scoped']
+ * ]);
+ * $client->getEmitter()->attach($subscriber);
+ *
+ * $res = $client->get('myproject/taskqueues/myqueue');
+ * ```
+ *
+ * @param BeforeEvent $event
+ */
+ public function onBefore(\Google\Site_Kit_Dependencies\GuzzleHttp\Event\BeforeEvent $event)
+ {
+ // Requests using "auth"="scoped" will be authorized.
+ $request = $event->getRequest();
+ if ($request->getConfig()['auth'] != 'scoped') {
+ return;
+ }
+ $auth_header = 'Bearer ' . $this->fetchToken();
+ $request->setHeader('authorization', $auth_header);
+ }
+ /**
+ * @return string
+ */
+ private function getCacheKey()
+ {
+ $key = null;
+ if (\is_string($this->scopes)) {
+ $key .= $this->scopes;
+ } elseif (\is_array($this->scopes)) {
+ $key .= \implode(':', $this->scopes);
+ }
+ return $key;
+ }
+ /**
+ * Determine if token is available in the cache, if not call tokenFunc to
+ * fetch it.
+ *
+ * @return string
+ */
+ private function fetchToken()
+ {
+ $cacheKey = $this->getCacheKey();
+ $cached = $this->getCachedValue($cacheKey);
+ if (!empty($cached)) {
+ return $cached;
+ }
+ $token = \call_user_func($this->tokenFunc, $this->scopes);
+ $this->setCachedValue($cacheKey, $token);
+ return $token;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/src/Subscriber/SimpleSubscriber.php b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Subscriber/SimpleSubscriber.php
new file mode 100644
index 000000000..17e3791c9
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/auth/src/Subscriber/SimpleSubscriber.php
@@ -0,0 +1,88 @@
+config = \array_merge([], $config);
+ }
+ /**
+ * @return array
+ */
+ public function getEvents()
+ {
+ return ['before' => ['onBefore', \Google\Site_Kit_Dependencies\GuzzleHttp\Event\RequestEvents::SIGN_REQUEST]];
+ }
+ /**
+ * Updates the request query with the developer key if auth is set to simple.
+ *
+ * Example:
+ * ```
+ * use Google\Auth\Subscriber\SimpleSubscriber;
+ * use GuzzleHttp\Client;
+ *
+ * $my_key = 'is not the same as yours';
+ * $subscriber = new SimpleSubscriber(['key' => $my_key]);
+ *
+ * $client = new Client([
+ * 'base_url' => 'https://www.googleapis.com/discovery/v1/',
+ * 'defaults' => ['auth' => 'simple']
+ * ]);
+ * $client->getEmitter()->attach($subscriber);
+ *
+ * $res = $client->get('drive/v2/rest');
+ * ```
+ *
+ * @param BeforeEvent $event
+ */
+ public function onBefore(\Google\Site_Kit_Dependencies\GuzzleHttp\Event\BeforeEvent $event)
+ {
+ // Requests using "auth"="simple" with the developer key.
+ $request = $event->getRequest();
+ if ($request->getConfig()['auth'] != 'simple') {
+ return;
+ }
+ $request->getQuery()->overwriteWith($this->config);
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/google/auth/src/UpdateMetadataInterface.php b/wp-content/plugins/google-site-kit/third-party/google/auth/src/UpdateMetadataInterface.php
new file mode 100644
index 000000000..6a2ac60fd
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/google/auth/src/UpdateMetadataInterface.php
@@ -0,0 +1,36 @@
+hash = $hash;
+ }
+ /**
+ * Get the keys that are available on the batch result.
+ *
+ * @return array
+ */
+ public function getKeys()
+ {
+ return \iterator_to_array($this->hash);
+ }
+ /**
+ * Gets a result from the container for the given object. When getting
+ * results for a batch of requests, provide the request object.
+ *
+ * @param object $forObject Object to retrieve the result for.
+ *
+ * @return mixed|null
+ */
+ public function getResult($forObject)
+ {
+ return isset($this->hash[$forObject]) ? $this->hash[$forObject] : null;
+ }
+ /**
+ * Get an array of successful results.
+ *
+ * @return array
+ */
+ public function getSuccessful()
+ {
+ $results = [];
+ foreach ($this->hash as $key) {
+ if (!$this->hash[$key] instanceof \Exception) {
+ $results[] = $this->hash[$key];
+ }
+ }
+ return $results;
+ }
+ /**
+ * Get an array of failed results.
+ *
+ * @return array
+ */
+ public function getFailures()
+ {
+ $results = [];
+ foreach ($this->hash as $key) {
+ if ($this->hash[$key] instanceof \Exception) {
+ $results[] = $this->hash[$key];
+ }
+ }
+ return $results;
+ }
+ /**
+ * Allows iteration over all batch result values.
+ *
+ * @return \ArrayIterator
+ */
+ public function getIterator()
+ {
+ $results = [];
+ foreach ($this->hash as $key) {
+ $results[] = $this->hash[$key];
+ }
+ return new \ArrayIterator($results);
+ }
+ /**
+ * Counts the number of elements in the batch result.
+ *
+ * @return int
+ */
+ public function count()
+ {
+ return \count($this->hash);
+ }
+ /**
+ * Checks if the batch contains a specific numerical array index.
+ *
+ * @param int $key Index to access
+ *
+ * @return bool
+ */
+ public function offsetExists($key)
+ {
+ return $key < \count($this->hash);
+ }
+ /**
+ * Allows access of the batch using a numerical array index.
+ *
+ * @param int $key Index to access.
+ *
+ * @return mixed|null
+ */
+ public function offsetGet($key)
+ {
+ $i = -1;
+ foreach ($this->hash as $obj) {
+ if ($key === ++$i) {
+ return $this->hash[$obj];
+ }
+ }
+ return null;
+ }
+ public function offsetUnset($key)
+ {
+ throw new \RuntimeException('Not implemented');
+ }
+ public function offsetSet($key, $value)
+ {
+ throw new \RuntimeException('Not implemented');
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Client.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Client.php
new file mode 100644
index 000000000..28ef2d133
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Client.php
@@ -0,0 +1,293 @@
+ [
+ * 'http://www.foo.com/{version}/',
+ * ['version' => '123']
+ * ],
+ * 'defaults' => [
+ * 'timeout' => 10,
+ * 'allow_redirects' => false,
+ * 'proxy' => '192.168.16.1:10'
+ * ]
+ * ]);
+ *
+ * @param array $config Client configuration settings
+ * - base_url: Base URL of the client that is merged into relative URLs.
+ * Can be a string or an array that contains a URI template followed
+ * by an associative array of expansion variables to inject into the
+ * URI template.
+ * - handler: callable RingPHP handler used to transfer requests
+ * - message_factory: Factory used to create request and response object
+ * - defaults: Default request options to apply to each request
+ * - emitter: Event emitter used for request events
+ * - fsm: (internal use only) The request finite state machine. A
+ * function that accepts a transaction and optional final state. The
+ * function is responsible for transitioning a request through its
+ * lifecycle events.
+ */
+ public function __construct(array $config = [])
+ {
+ $this->configureBaseUrl($config);
+ $this->configureDefaults($config);
+ if (isset($config['emitter'])) {
+ $this->emitter = $config['emitter'];
+ }
+ $this->messageFactory = isset($config['message_factory']) ? $config['message_factory'] : new \Google\Site_Kit_Dependencies\GuzzleHttp\Message\MessageFactory();
+ if (isset($config['fsm'])) {
+ $this->fsm = $config['fsm'];
+ } else {
+ if (isset($config['handler'])) {
+ $handler = $config['handler'];
+ } elseif (isset($config['adapter'])) {
+ $handler = $config['adapter'];
+ } else {
+ $handler = \Google\Site_Kit_Dependencies\GuzzleHttp\Utils::getDefaultHandler();
+ }
+ $this->fsm = new \Google\Site_Kit_Dependencies\GuzzleHttp\RequestFsm($handler, $this->messageFactory);
+ }
+ }
+ public function getDefaultOption($keyOrPath = null)
+ {
+ return $keyOrPath === null ? $this->defaults : \Google\Site_Kit_Dependencies\GuzzleHttp\Utils::getPath($this->defaults, $keyOrPath);
+ }
+ public function setDefaultOption($keyOrPath, $value)
+ {
+ \Google\Site_Kit_Dependencies\GuzzleHttp\Utils::setPath($this->defaults, $keyOrPath, $value);
+ }
+ public function getBaseUrl()
+ {
+ return (string) $this->baseUrl;
+ }
+ public function createRequest($method, $url = null, array $options = [])
+ {
+ $options = $this->mergeDefaults($options);
+ // Use a clone of the client's emitter
+ $options['config']['emitter'] = clone $this->getEmitter();
+ $url = $url || \is_string($url) && \strlen($url) ? $this->buildUrl($url) : (string) $this->baseUrl;
+ return $this->messageFactory->createRequest($method, $url, $options);
+ }
+ public function get($url = null, $options = [])
+ {
+ return $this->send($this->createRequest('GET', $url, $options));
+ }
+ public function head($url = null, array $options = [])
+ {
+ return $this->send($this->createRequest('HEAD', $url, $options));
+ }
+ public function delete($url = null, array $options = [])
+ {
+ return $this->send($this->createRequest('DELETE', $url, $options));
+ }
+ public function put($url = null, array $options = [])
+ {
+ return $this->send($this->createRequest('PUT', $url, $options));
+ }
+ public function patch($url = null, array $options = [])
+ {
+ return $this->send($this->createRequest('PATCH', $url, $options));
+ }
+ public function post($url = null, array $options = [])
+ {
+ return $this->send($this->createRequest('POST', $url, $options));
+ }
+ public function options($url = null, array $options = [])
+ {
+ return $this->send($this->createRequest('OPTIONS', $url, $options));
+ }
+ public function send(\Google\Site_Kit_Dependencies\GuzzleHttp\Message\RequestInterface $request)
+ {
+ $isFuture = $request->getConfig()->get('future');
+ $trans = new \Google\Site_Kit_Dependencies\GuzzleHttp\Transaction($this, $request, $isFuture);
+ $fn = $this->fsm;
+ try {
+ $fn($trans);
+ if ($isFuture) {
+ // Turn the normal response into a future if needed.
+ return $trans->response instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Future\FutureInterface ? $trans->response : new \Google\Site_Kit_Dependencies\GuzzleHttp\Message\FutureResponse(new \Google\Site_Kit_Dependencies\React\Promise\FulfilledPromise($trans->response));
+ }
+ // Resolve deep futures if this is not a future
+ // transaction. This accounts for things like retries
+ // that do not have an immediate side-effect.
+ while ($trans->response instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Future\FutureInterface) {
+ $trans->response = $trans->response->wait();
+ }
+ return $trans->response;
+ } catch (\Exception $e) {
+ if ($isFuture) {
+ // Wrap the exception in a promise
+ return new \Google\Site_Kit_Dependencies\GuzzleHttp\Message\FutureResponse(new \Google\Site_Kit_Dependencies\React\Promise\RejectedPromise($e));
+ }
+ throw \Google\Site_Kit_Dependencies\GuzzleHttp\Exception\RequestException::wrapException($trans->request, $e);
+ } catch (\TypeError $error) {
+ $exception = new \Exception($error->getMessage(), $error->getCode(), $error);
+ if ($isFuture) {
+ // Wrap the exception in a promise
+ return new \Google\Site_Kit_Dependencies\GuzzleHttp\Message\FutureResponse(new \Google\Site_Kit_Dependencies\React\Promise\RejectedPromise($exception));
+ }
+ throw \Google\Site_Kit_Dependencies\GuzzleHttp\Exception\RequestException::wrapException($trans->request, $exception);
+ }
+ }
+ /**
+ * Get an array of default options to apply to the client
+ *
+ * @return array
+ */
+ protected function getDefaultOptions()
+ {
+ $settings = ['allow_redirects' => \true, 'exceptions' => \true, 'decode_content' => \true, 'verify' => \true];
+ // Use the standard Linux HTTP_PROXY and HTTPS_PROXY if set.
+ // We can only trust the HTTP_PROXY environment variable in a CLI
+ // process due to the fact that PHP has no reliable mechanism to
+ // get environment variables that start with "HTTP_".
+ if (\php_sapi_name() == 'cli' && \getenv('HTTP_PROXY')) {
+ $settings['proxy']['http'] = \getenv('HTTP_PROXY');
+ }
+ if ($proxy = \getenv('HTTPS_PROXY')) {
+ $settings['proxy']['https'] = $proxy;
+ }
+ return $settings;
+ }
+ /**
+ * Expand a URI template and inherit from the base URL if it's relative
+ *
+ * @param string|array $url URL or an array of the URI template to expand
+ * followed by a hash of template varnames.
+ * @return string
+ * @throws \InvalidArgumentException
+ */
+ private function buildUrl($url)
+ {
+ // URI template (absolute or relative)
+ if (!\is_array($url)) {
+ return \strpos($url, '://') ? (string) $url : (string) $this->baseUrl->combine($url);
+ }
+ if (!isset($url[1])) {
+ throw new \InvalidArgumentException('You must provide a hash of ' . 'varname options in the second element of a URL array.');
+ }
+ // Absolute URL
+ if (\strpos($url[0], '://')) {
+ return \Google\Site_Kit_Dependencies\GuzzleHttp\Utils::uriTemplate($url[0], $url[1]);
+ }
+ // Combine the relative URL with the base URL
+ return (string) $this->baseUrl->combine(\Google\Site_Kit_Dependencies\GuzzleHttp\Utils::uriTemplate($url[0], $url[1]));
+ }
+ private function configureBaseUrl(&$config)
+ {
+ if (!isset($config['base_url'])) {
+ $this->baseUrl = new \Google\Site_Kit_Dependencies\GuzzleHttp\Url('', '');
+ } elseif (!\is_array($config['base_url'])) {
+ $this->baseUrl = \Google\Site_Kit_Dependencies\GuzzleHttp\Url::fromString($config['base_url']);
+ } elseif (\count($config['base_url']) < 2) {
+ throw new \InvalidArgumentException('You must provide a hash of ' . 'varname options in the second element of a base_url array.');
+ } else {
+ $this->baseUrl = \Google\Site_Kit_Dependencies\GuzzleHttp\Url::fromString(\Google\Site_Kit_Dependencies\GuzzleHttp\Utils::uriTemplate($config['base_url'][0], $config['base_url'][1]));
+ $config['base_url'] = (string) $this->baseUrl;
+ }
+ }
+ private function configureDefaults($config)
+ {
+ if (!isset($config['defaults'])) {
+ $this->defaults = $this->getDefaultOptions();
+ } else {
+ $this->defaults = \array_replace($this->getDefaultOptions(), $config['defaults']);
+ }
+ // Add the default user-agent header
+ if (!isset($this->defaults['headers'])) {
+ $this->defaults['headers'] = ['User-Agent' => \Google\Site_Kit_Dependencies\GuzzleHttp\Utils::getDefaultUserAgent()];
+ } elseif (!\Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::hasHeader($this->defaults, 'User-Agent')) {
+ // Add the User-Agent header if one was not already set
+ $this->defaults['headers']['User-Agent'] = \Google\Site_Kit_Dependencies\GuzzleHttp\Utils::getDefaultUserAgent();
+ }
+ }
+ /**
+ * Merges default options into the array passed by reference.
+ *
+ * @param array $options Options to modify by reference
+ *
+ * @return array
+ */
+ private function mergeDefaults($options)
+ {
+ $defaults = $this->defaults;
+ // Case-insensitively merge in default headers if both defaults and
+ // options have headers specified.
+ if (!empty($defaults['headers']) && !empty($options['headers'])) {
+ // Create a set of lowercased keys that are present.
+ $lkeys = [];
+ foreach (\array_keys($options['headers']) as $k) {
+ $lkeys[\strtolower($k)] = \true;
+ }
+ // Merge in lowercase default keys when not present in above set.
+ foreach ($defaults['headers'] as $key => $value) {
+ if (!isset($lkeys[\strtolower($key)])) {
+ $options['headers'][$key] = $value;
+ }
+ }
+ // No longer need to merge in headers.
+ unset($defaults['headers']);
+ }
+ $result = \array_replace_recursive($defaults, $options);
+ foreach ($options as $k => $v) {
+ if ($v === null) {
+ unset($result[$k]);
+ }
+ }
+ return $result;
+ }
+ /**
+ * @deprecated Use {@see GuzzleHttp\Pool} instead.
+ * @see GuzzleHttp\Pool
+ */
+ public function sendAll($requests, array $options = [])
+ {
+ \Google\Site_Kit_Dependencies\GuzzleHttp\Pool::send($this, $requests, $options);
+ }
+ /**
+ * @deprecated Use GuzzleHttp\Utils::getDefaultHandler
+ */
+ public static function getDefaultHandler()
+ {
+ return \Google\Site_Kit_Dependencies\GuzzleHttp\Utils::getDefaultHandler();
+ }
+ /**
+ * @deprecated Use GuzzleHttp\Utils::getDefaultUserAgent
+ */
+ public static function getDefaultUserAgent()
+ {
+ return \Google\Site_Kit_Dependencies\GuzzleHttp\Utils::getDefaultUserAgent();
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/ClientInterface.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/ClientInterface.php
new file mode 100644
index 000000000..9a4a1b37b
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/ClientInterface.php
@@ -0,0 +1,138 @@
+data = $data;
+ }
+ /**
+ * Create a new collection from an array, validate the keys, and add default
+ * values where missing
+ *
+ * @param array $config Configuration values to apply.
+ * @param array $defaults Default parameters
+ * @param array $required Required parameter names
+ *
+ * @return self
+ * @throws \InvalidArgumentException if a parameter is missing
+ */
+ public static function fromConfig(array $config = [], array $defaults = [], array $required = [])
+ {
+ $data = $config + $defaults;
+ if ($missing = \array_diff($required, \array_keys($data))) {
+ throw new \InvalidArgumentException('Config is missing the following keys: ' . \implode(', ', $missing));
+ }
+ return new self($data);
+ }
+ /**
+ * Removes all key value pairs
+ */
+ public function clear()
+ {
+ $this->data = [];
+ }
+ /**
+ * Get a specific key value.
+ *
+ * @param string $key Key to retrieve.
+ *
+ * @return mixed|null Value of the key or NULL
+ */
+ public function get($key)
+ {
+ return isset($this->data[$key]) ? $this->data[$key] : null;
+ }
+ /**
+ * Set a key value pair
+ *
+ * @param string $key Key to set
+ * @param mixed $value Value to set
+ */
+ public function set($key, $value)
+ {
+ $this->data[$key] = $value;
+ }
+ /**
+ * Add a value to a key. If a key of the same name has already been added,
+ * the key value will be converted into an array and the new value will be
+ * pushed to the end of the array.
+ *
+ * @param string $key Key to add
+ * @param mixed $value Value to add to the key
+ */
+ public function add($key, $value)
+ {
+ if (!\array_key_exists($key, $this->data)) {
+ $this->data[$key] = $value;
+ } elseif (\is_array($this->data[$key])) {
+ $this->data[$key][] = $value;
+ } else {
+ $this->data[$key] = array($this->data[$key], $value);
+ }
+ }
+ /**
+ * Remove a specific key value pair
+ *
+ * @param string $key A key to remove
+ */
+ public function remove($key)
+ {
+ unset($this->data[$key]);
+ }
+ /**
+ * Get all keys in the collection
+ *
+ * @return array
+ */
+ public function getKeys()
+ {
+ return \array_keys($this->data);
+ }
+ /**
+ * Returns whether or not the specified key is present.
+ *
+ * @param string $key The key for which to check the existence.
+ *
+ * @return bool
+ */
+ public function hasKey($key)
+ {
+ return \array_key_exists($key, $this->data);
+ }
+ /**
+ * Checks if any keys contains a certain value
+ *
+ * @param string $value Value to search for
+ *
+ * @return mixed Returns the key if the value was found FALSE if the value
+ * was not found.
+ */
+ public function hasValue($value)
+ {
+ return \array_search($value, $this->data, \true);
+ }
+ /**
+ * Replace the data of the object with the value of an array
+ *
+ * @param array $data Associative array of data
+ */
+ public function replace(array $data)
+ {
+ $this->data = $data;
+ }
+ /**
+ * Add and merge in a Collection or array of key value pair data.
+ *
+ * @param Collection|array $data Associative array of key value pair data
+ */
+ public function merge($data)
+ {
+ foreach ($data as $key => $value) {
+ $this->add($key, $value);
+ }
+ }
+ /**
+ * Overwrite key value pairs in this collection with all of the data from
+ * an array or collection.
+ *
+ * @param array|\Traversable $data Values to override over this config
+ */
+ public function overwriteWith($data)
+ {
+ if (\is_array($data)) {
+ $this->data = $data + $this->data;
+ } elseif ($data instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Collection) {
+ $this->data = $data->toArray() + $this->data;
+ } else {
+ foreach ($data as $key => $value) {
+ $this->data[$key] = $value;
+ }
+ }
+ }
+ /**
+ * Returns a Collection containing all the elements of the collection after
+ * applying the callback function to each one.
+ *
+ * The callable should accept three arguments:
+ * - (string) $key
+ * - (string) $value
+ * - (array) $context
+ *
+ * The callable must return a the altered or unaltered value.
+ *
+ * @param callable $closure Map function to apply
+ * @param array $context Context to pass to the callable
+ *
+ * @return Collection
+ */
+ public function map(callable $closure, array $context = [])
+ {
+ $collection = new static();
+ foreach ($this as $key => $value) {
+ $collection[$key] = $closure($key, $value, $context);
+ }
+ return $collection;
+ }
+ /**
+ * Iterates over each key value pair in the collection passing them to the
+ * callable. If the callable returns true, the current value from input is
+ * returned into the result Collection.
+ *
+ * The callable must accept two arguments:
+ * - (string) $key
+ * - (string) $value
+ *
+ * @param callable $closure Evaluation function
+ *
+ * @return Collection
+ */
+ public function filter(callable $closure)
+ {
+ $collection = new static();
+ foreach ($this->data as $key => $value) {
+ if ($closure($key, $value)) {
+ $collection[$key] = $value;
+ }
+ }
+ return $collection;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Cookie/CookieJar.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Cookie/CookieJar.php
new file mode 100644
index 000000000..28c347169
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Cookie/CookieJar.php
@@ -0,0 +1,185 @@
+strictMode = $strictMode;
+ foreach ($cookieArray as $cookie) {
+ if (!$cookie instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Cookie\SetCookie) {
+ $cookie = new \Google\Site_Kit_Dependencies\GuzzleHttp\Cookie\SetCookie($cookie);
+ }
+ $this->setCookie($cookie);
+ }
+ }
+ /**
+ * Create a new Cookie jar from an associative array and domain.
+ *
+ * @param array $cookies Cookies to create the jar from
+ * @param string $domain Domain to set the cookies to
+ *
+ * @return self
+ */
+ public static function fromArray(array $cookies, $domain)
+ {
+ $cookieJar = new self();
+ foreach ($cookies as $name => $value) {
+ $cookieJar->setCookie(new \Google\Site_Kit_Dependencies\GuzzleHttp\Cookie\SetCookie(['Domain' => $domain, 'Name' => $name, 'Value' => $value, 'Discard' => \true]));
+ }
+ return $cookieJar;
+ }
+ /**
+ * Quote the cookie value if it is not already quoted and it contains
+ * problematic characters.
+ *
+ * @param string $value Value that may or may not need to be quoted
+ *
+ * @return string
+ */
+ public static function getCookieValue($value)
+ {
+ if (\substr($value, 0, 1) !== '"' && \substr($value, -1, 1) !== '"' && \strpbrk($value, ';,')) {
+ $value = '"' . $value . '"';
+ }
+ return $value;
+ }
+ public function toArray()
+ {
+ return \array_map(function (\Google\Site_Kit_Dependencies\GuzzleHttp\Cookie\SetCookie $cookie) {
+ return $cookie->toArray();
+ }, $this->getIterator()->getArrayCopy());
+ }
+ public function clear($domain = null, $path = null, $name = null)
+ {
+ if (!$domain) {
+ $this->cookies = [];
+ return;
+ } elseif (!$path) {
+ $this->cookies = \array_filter($this->cookies, function (\Google\Site_Kit_Dependencies\GuzzleHttp\Cookie\SetCookie $cookie) use($path, $domain) {
+ return !$cookie->matchesDomain($domain);
+ });
+ } elseif (!$name) {
+ $this->cookies = \array_filter($this->cookies, function (\Google\Site_Kit_Dependencies\GuzzleHttp\Cookie\SetCookie $cookie) use($path, $domain) {
+ return !($cookie->matchesPath($path) && $cookie->matchesDomain($domain));
+ });
+ } else {
+ $this->cookies = \array_filter($this->cookies, function (\Google\Site_Kit_Dependencies\GuzzleHttp\Cookie\SetCookie $cookie) use($path, $domain, $name) {
+ return !($cookie->getName() == $name && $cookie->matchesPath($path) && $cookie->matchesDomain($domain));
+ });
+ }
+ }
+ public function clearSessionCookies()
+ {
+ $this->cookies = \array_filter($this->cookies, function (\Google\Site_Kit_Dependencies\GuzzleHttp\Cookie\SetCookie $cookie) {
+ return !$cookie->getDiscard() && $cookie->getExpires();
+ });
+ }
+ public function setCookie(\Google\Site_Kit_Dependencies\GuzzleHttp\Cookie\SetCookie $cookie)
+ {
+ // Only allow cookies with set and valid domain, name, value
+ $result = $cookie->validate();
+ if ($result !== \true) {
+ if ($this->strictMode) {
+ throw new \RuntimeException('Invalid cookie: ' . $result);
+ } else {
+ $this->removeCookieIfEmpty($cookie);
+ return \false;
+ }
+ }
+ // Resolve conflicts with previously set cookies
+ foreach ($this->cookies as $i => $c) {
+ // Two cookies are identical, when their path, and domain are
+ // identical.
+ if ($c->getPath() != $cookie->getPath() || $c->getDomain() != $cookie->getDomain() || $c->getName() != $cookie->getName()) {
+ continue;
+ }
+ // The previously set cookie is a discard cookie and this one is
+ // not so allow the new cookie to be set
+ if (!$cookie->getDiscard() && $c->getDiscard()) {
+ unset($this->cookies[$i]);
+ continue;
+ }
+ // If the new cookie's expiration is further into the future, then
+ // replace the old cookie
+ if ($cookie->getExpires() > $c->getExpires()) {
+ unset($this->cookies[$i]);
+ continue;
+ }
+ // If the value has changed, we better change it
+ if ($cookie->getValue() !== $c->getValue()) {
+ unset($this->cookies[$i]);
+ continue;
+ }
+ // The cookie exists, so no need to continue
+ return \false;
+ }
+ $this->cookies[] = $cookie;
+ return \true;
+ }
+ public function count()
+ {
+ return \count($this->cookies);
+ }
+ public function getIterator()
+ {
+ return new \ArrayIterator(\array_values($this->cookies));
+ }
+ public function extractCookies(\Google\Site_Kit_Dependencies\GuzzleHttp\Message\RequestInterface $request, \Google\Site_Kit_Dependencies\GuzzleHttp\Message\ResponseInterface $response)
+ {
+ if ($cookieHeader = $response->getHeaderAsArray('Set-Cookie')) {
+ foreach ($cookieHeader as $cookie) {
+ $sc = \Google\Site_Kit_Dependencies\GuzzleHttp\Cookie\SetCookie::fromString($cookie);
+ if (!$sc->getDomain()) {
+ $sc->setDomain($request->getHost());
+ }
+ $this->setCookie($sc);
+ }
+ }
+ }
+ public function addCookieHeader(\Google\Site_Kit_Dependencies\GuzzleHttp\Message\RequestInterface $request)
+ {
+ $values = [];
+ $scheme = $request->getScheme();
+ $host = $request->getHost();
+ $path = $request->getPath();
+ foreach ($this->cookies as $cookie) {
+ if ($cookie->matchesPath($path) && $cookie->matchesDomain($host) && !$cookie->isExpired() && (!$cookie->getSecure() || $scheme == 'https')) {
+ $values[] = $cookie->getName() . '=' . self::getCookieValue($cookie->getValue());
+ }
+ }
+ if ($values) {
+ $request->setHeader('Cookie', \implode('; ', $values));
+ }
+ }
+ /**
+ * If a cookie already exists and the server asks to set it again with a
+ * null value, the cookie must be deleted.
+ *
+ * @param SetCookie $cookie
+ */
+ private function removeCookieIfEmpty(\Google\Site_Kit_Dependencies\GuzzleHttp\Cookie\SetCookie $cookie)
+ {
+ $cookieValue = $cookie->getValue();
+ if ($cookieValue === null || $cookieValue === '') {
+ $this->clear($cookie->getDomain(), $cookie->getPath(), $cookie->getName());
+ }
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php
new file mode 100644
index 000000000..21af8b2dd
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php
@@ -0,0 +1,68 @@
+filename = $cookieFile;
+ if (\file_exists($cookieFile)) {
+ $this->load($cookieFile);
+ }
+ }
+ /**
+ * Saves the file when shutting down
+ */
+ public function __destruct()
+ {
+ $this->save($this->filename);
+ }
+ /**
+ * Saves the cookies to a file.
+ *
+ * @param string $filename File to save
+ * @throws \RuntimeException if the file cannot be found or created
+ */
+ public function save($filename)
+ {
+ $json = [];
+ foreach ($this as $cookie) {
+ if ($cookie->getExpires() && !$cookie->getDiscard()) {
+ $json[] = $cookie->toArray();
+ }
+ }
+ if (\false === \file_put_contents($filename, \json_encode($json), \LOCK_EX)) {
+ // @codeCoverageIgnoreStart
+ throw new \RuntimeException("Unable to save file {$filename}");
+ // @codeCoverageIgnoreEnd
+ }
+ }
+ /**
+ * Load cookies from a JSON formatted file.
+ *
+ * Old cookies are kept unless overwritten by newly loaded ones.
+ *
+ * @param string $filename Cookie file to load.
+ * @throws \RuntimeException if the file cannot be loaded.
+ */
+ public function load($filename)
+ {
+ $json = \file_get_contents($filename);
+ if (\false === $json) {
+ // @codeCoverageIgnoreStart
+ throw new \RuntimeException("Unable to load file {$filename}");
+ // @codeCoverageIgnoreEnd
+ }
+ $data = \Google\Site_Kit_Dependencies\GuzzleHttp\Utils::jsonDecode($json, \true);
+ if (\is_array($data)) {
+ foreach (\Google\Site_Kit_Dependencies\GuzzleHttp\Utils::jsonDecode($json, \true) as $cookie) {
+ $this->setCookie(new \Google\Site_Kit_Dependencies\GuzzleHttp\Cookie\SetCookie($cookie));
+ }
+ } elseif (\strlen($data)) {
+ throw new \RuntimeException("Invalid cookie file: {$filename}");
+ }
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php
new file mode 100644
index 000000000..19609d657
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php
@@ -0,0 +1,58 @@
+sessionKey = $sessionKey;
+ $this->load();
+ }
+ /**
+ * Saves cookies to session when shutting down
+ */
+ public function __destruct()
+ {
+ $this->save();
+ }
+ /**
+ * Save cookies to the client session
+ */
+ public function save()
+ {
+ $json = [];
+ foreach ($this as $cookie) {
+ if ($cookie->getExpires() && !$cookie->getDiscard()) {
+ $json[] = $cookie->toArray();
+ }
+ }
+ $_SESSION[$this->sessionKey] = \json_encode($json);
+ }
+ /**
+ * Load the contents of the client session into the data array
+ */
+ protected function load()
+ {
+ $cookieJar = isset($_SESSION[$this->sessionKey]) ? $_SESSION[$this->sessionKey] : null;
+ $data = \Google\Site_Kit_Dependencies\GuzzleHttp\Utils::jsonDecode($cookieJar, \true);
+ if (\is_array($data)) {
+ foreach ($data as $cookie) {
+ $this->setCookie(new \Google\Site_Kit_Dependencies\GuzzleHttp\Cookie\SetCookie($cookie));
+ }
+ } elseif (\strlen($data)) {
+ throw new \RuntimeException("Invalid cookie data");
+ }
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Cookie/SetCookie.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Cookie/SetCookie.php
new file mode 100644
index 000000000..2e10df38b
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Cookie/SetCookie.php
@@ -0,0 +1,320 @@
+ null, 'Value' => null, 'Domain' => null, 'Path' => '/', 'Max-Age' => null, 'Expires' => null, 'Secure' => \false, 'Discard' => \false, 'HttpOnly' => \false];
+ /** @var array Cookie data */
+ private $data;
+ /**
+ * Create a new SetCookie object from a string
+ *
+ * @param string $cookie Set-Cookie header string
+ *
+ * @return self
+ */
+ public static function fromString($cookie)
+ {
+ // Create the default return array
+ $data = self::$defaults;
+ // Explode the cookie string using a series of semicolons
+ $pieces = \array_filter(\array_map('trim', \explode(';', $cookie)));
+ // The name of the cookie (first kvp) must include an equal sign.
+ if (empty($pieces) || !\strpos($pieces[0], '=')) {
+ return new self($data);
+ }
+ // Add the cookie pieces into the parsed data array
+ foreach ($pieces as $part) {
+ $cookieParts = \explode('=', $part, 2);
+ $key = \trim($cookieParts[0]);
+ $value = isset($cookieParts[1]) ? \trim($cookieParts[1], " \n\r\t\0\v\"") : \true;
+ // Only check for non-cookies when cookies have been found
+ if (empty($data['Name'])) {
+ $data['Name'] = $key;
+ $data['Value'] = $value;
+ } else {
+ foreach (\array_keys(self::$defaults) as $search) {
+ if (!\strcasecmp($search, $key)) {
+ $data[$search] = $value;
+ continue 2;
+ }
+ }
+ $data[$key] = $value;
+ }
+ }
+ return new self($data);
+ }
+ /**
+ * @param array $data Array of cookie data provided by a Cookie parser
+ */
+ public function __construct(array $data = [])
+ {
+ $this->data = \array_replace(self::$defaults, $data);
+ // Extract the Expires value and turn it into a UNIX timestamp if needed
+ if (!$this->getExpires() && $this->getMaxAge()) {
+ // Calculate the Expires date
+ $this->setExpires(\time() + $this->getMaxAge());
+ } elseif ($this->getExpires() && !\is_numeric($this->getExpires())) {
+ $this->setExpires($this->getExpires());
+ }
+ }
+ public function __toString()
+ {
+ $str = $this->data['Name'] . '=' . $this->data['Value'] . '; ';
+ foreach ($this->data as $k => $v) {
+ if ($k != 'Name' && $k != 'Value' && $v !== null && $v !== \false) {
+ if ($k == 'Expires') {
+ $str .= 'Expires=' . \gmdate('D, d M Y H:i:s \\G\\M\\T', $v) . '; ';
+ } else {
+ $str .= ($v === \true ? $k : "{$k}={$v}") . '; ';
+ }
+ }
+ }
+ return \rtrim($str, '; ');
+ }
+ public function toArray()
+ {
+ return $this->data;
+ }
+ /**
+ * Get the cookie name
+ *
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->data['Name'];
+ }
+ /**
+ * Set the cookie name
+ *
+ * @param string $name Cookie name
+ */
+ public function setName($name)
+ {
+ $this->data['Name'] = $name;
+ }
+ /**
+ * Get the cookie value
+ *
+ * @return string
+ */
+ public function getValue()
+ {
+ return $this->data['Value'];
+ }
+ /**
+ * Set the cookie value
+ *
+ * @param string $value Cookie value
+ */
+ public function setValue($value)
+ {
+ $this->data['Value'] = $value;
+ }
+ /**
+ * Get the domain
+ *
+ * @return string|null
+ */
+ public function getDomain()
+ {
+ return $this->data['Domain'];
+ }
+ /**
+ * Set the domain of the cookie
+ *
+ * @param string $domain
+ */
+ public function setDomain($domain)
+ {
+ $this->data['Domain'] = $domain;
+ }
+ /**
+ * Get the path
+ *
+ * @return string
+ */
+ public function getPath()
+ {
+ return $this->data['Path'];
+ }
+ /**
+ * Set the path of the cookie
+ *
+ * @param string $path Path of the cookie
+ */
+ public function setPath($path)
+ {
+ $this->data['Path'] = $path;
+ }
+ /**
+ * Maximum lifetime of the cookie in seconds
+ *
+ * @return int|null
+ */
+ public function getMaxAge()
+ {
+ return $this->data['Max-Age'];
+ }
+ /**
+ * Set the max-age of the cookie
+ *
+ * @param int $maxAge Max age of the cookie in seconds
+ */
+ public function setMaxAge($maxAge)
+ {
+ $this->data['Max-Age'] = $maxAge;
+ }
+ /**
+ * The UNIX timestamp when the cookie Expires
+ *
+ * @return mixed
+ */
+ public function getExpires()
+ {
+ return $this->data['Expires'];
+ }
+ /**
+ * Set the unix timestamp for which the cookie will expire
+ *
+ * @param int $timestamp Unix timestamp
+ */
+ public function setExpires($timestamp)
+ {
+ $this->data['Expires'] = \is_numeric($timestamp) ? (int) $timestamp : \strtotime($timestamp);
+ }
+ /**
+ * Get whether or not this is a secure cookie
+ *
+ * @return null|bool
+ */
+ public function getSecure()
+ {
+ return $this->data['Secure'];
+ }
+ /**
+ * Set whether or not the cookie is secure
+ *
+ * @param bool $secure Set to true or false if secure
+ */
+ public function setSecure($secure)
+ {
+ $this->data['Secure'] = $secure;
+ }
+ /**
+ * Get whether or not this is a session cookie
+ *
+ * @return null|bool
+ */
+ public function getDiscard()
+ {
+ return $this->data['Discard'];
+ }
+ /**
+ * Set whether or not this is a session cookie
+ *
+ * @param bool $discard Set to true or false if this is a session cookie
+ */
+ public function setDiscard($discard)
+ {
+ $this->data['Discard'] = $discard;
+ }
+ /**
+ * Get whether or not this is an HTTP only cookie
+ *
+ * @return bool
+ */
+ public function getHttpOnly()
+ {
+ return $this->data['HttpOnly'];
+ }
+ /**
+ * Set whether or not this is an HTTP only cookie
+ *
+ * @param bool $httpOnly Set to true or false if this is HTTP only
+ */
+ public function setHttpOnly($httpOnly)
+ {
+ $this->data['HttpOnly'] = $httpOnly;
+ }
+ /**
+ * Check if the cookie matches a path value
+ *
+ * @param string $path Path to check against
+ *
+ * @return bool
+ */
+ public function matchesPath($path)
+ {
+ return !$this->getPath() || 0 === \stripos($path, $this->getPath());
+ }
+ /**
+ * Check if the cookie matches a domain value
+ *
+ * @param string $domain Domain to check against
+ *
+ * @return bool
+ */
+ public function matchesDomain($domain)
+ {
+ // Remove the leading '.' as per spec in RFC 6265.
+ // http://tools.ietf.org/html/rfc6265#section-5.2.3
+ $cookieDomain = \ltrim($this->getDomain(), '.');
+ // Domain not set or exact match.
+ if (!$cookieDomain || !\strcasecmp($domain, $cookieDomain)) {
+ return \true;
+ }
+ // Matching the subdomain according to RFC 6265.
+ // http://tools.ietf.org/html/rfc6265#section-5.1.3
+ if (\filter_var($domain, \FILTER_VALIDATE_IP)) {
+ return \false;
+ }
+ return (bool) \preg_match('/\\.' . \preg_quote($cookieDomain) . '$/i', $domain);
+ }
+ /**
+ * Check if the cookie is expired
+ *
+ * @return bool
+ */
+ public function isExpired()
+ {
+ return $this->getExpires() !== null && \time() > $this->getExpires();
+ }
+ /**
+ * Check if the cookie is valid according to RFC 6265
+ *
+ * @return bool|string Returns true if valid or an error message if invalid
+ */
+ public function validate()
+ {
+ // Names must not be empty, but can be 0
+ $name = $this->getName();
+ if (empty($name) && !\is_numeric($name)) {
+ return 'The cookie name must not be empty';
+ }
+ // Check if any of the invalid characters are present in the cookie name
+ if (\preg_match("/[=,; \t\r\n\v\f]/", $name)) {
+ return "Google\\Site_Kit_Dependencies\\Cookie name must not cannot invalid characters: =,; \\t\\r\\n\\013\\014";
+ }
+ // Value must not be empty, but can be 0
+ $value = $this->getValue();
+ if (empty($value) && !\is_numeric($value)) {
+ return 'The cookie value must not be empty';
+ }
+ // Domains must not be empty, but can be 0
+ // A "0" is not a valid internet domain, but may be used as server name
+ // in a private network.
+ $domain = $this->getDomain();
+ if (empty($domain) && !\is_numeric($domain)) {
+ return 'The cookie domain must not be empty';
+ }
+ return \true;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/AbstractEvent.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/AbstractEvent.php
new file mode 100644
index 000000000..bd633e2f2
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/AbstractEvent.php
@@ -0,0 +1,19 @@
+propagationStopped;
+ }
+ public function stopPropagation()
+ {
+ $this->propagationStopped = \true;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/AbstractRequestEvent.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/AbstractRequestEvent.php
new file mode 100644
index 000000000..3c56aafe5
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/AbstractRequestEvent.php
@@ -0,0 +1,56 @@
+transaction = $transaction;
+ }
+ /**
+ * Get the HTTP client associated with the event.
+ *
+ * @return ClientInterface
+ */
+ public function getClient()
+ {
+ return $this->transaction->client;
+ }
+ /**
+ * Get the request object
+ *
+ * @return RequestInterface
+ */
+ public function getRequest()
+ {
+ return $this->transaction->request;
+ }
+ /**
+ * Get the number of transaction retries.
+ *
+ * @return int
+ */
+ public function getRetryCount()
+ {
+ return $this->transaction->retries;
+ }
+ /**
+ * @return Transaction
+ */
+ public function getTransaction()
+ {
+ return $this->transaction;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/AbstractRetryableEvent.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/AbstractRetryableEvent.php
new file mode 100644
index 000000000..f48bb8be9
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/AbstractRetryableEvent.php
@@ -0,0 +1,39 @@
+transaction->state = 'retry';
+ if ($afterDelay) {
+ $this->transaction->request->getConfig()->set('delay', $afterDelay);
+ }
+ $this->stopPropagation();
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/AbstractTransferEvent.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/AbstractTransferEvent.php
new file mode 100644
index 000000000..73f9cb5eb
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/AbstractTransferEvent.php
@@ -0,0 +1,57 @@
+transaction->transferInfo;
+ }
+ return isset($this->transaction->transferInfo[$name]) ? $this->transaction->transferInfo[$name] : null;
+ }
+ /**
+ * Returns true/false if a response is available.
+ *
+ * @return bool
+ */
+ public function hasResponse()
+ {
+ return !$this->transaction->response instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Future\FutureInterface;
+ }
+ /**
+ * Get the response.
+ *
+ * @return ResponseInterface|null
+ */
+ public function getResponse()
+ {
+ return $this->hasResponse() ? $this->transaction->response : null;
+ }
+ /**
+ * Intercept the request and associate a response
+ *
+ * @param ResponseInterface $response Response to set
+ */
+ public function intercept(\Google\Site_Kit_Dependencies\GuzzleHttp\Message\ResponseInterface $response)
+ {
+ $this->transaction->response = $response;
+ $this->transaction->exception = null;
+ $this->stopPropagation();
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/BeforeEvent.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/BeforeEvent.php
new file mode 100644
index 000000000..98d424bc1
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/BeforeEvent.php
@@ -0,0 +1,26 @@
+transaction->response = $response;
+ $this->transaction->exception = null;
+ $this->stopPropagation();
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/CompleteEvent.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/CompleteEvent.php
new file mode 100644
index 000000000..3c99309e3
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/CompleteEvent.php
@@ -0,0 +1,17 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link https://github.com/symfony/symfony/tree/master/src/Symfony/Component/EventDispatcher
+ */
+class Emitter implements \Google\Site_Kit_Dependencies\GuzzleHttp\Event\EmitterInterface
+{
+ /** @var array */
+ private $listeners = [];
+ /** @var array */
+ private $sorted = [];
+ public function on($eventName, callable $listener, $priority = 0)
+ {
+ if ($priority === 'first') {
+ $priority = isset($this->listeners[$eventName]) ? \max(\array_keys($this->listeners[$eventName])) + 1 : 1;
+ } elseif ($priority === 'last') {
+ $priority = isset($this->listeners[$eventName]) ? \min(\array_keys($this->listeners[$eventName])) - 1 : -1;
+ }
+ $this->listeners[$eventName][$priority][] = $listener;
+ unset($this->sorted[$eventName]);
+ }
+ public function once($eventName, callable $listener, $priority = 0)
+ {
+ $onceListener = function (\Google\Site_Kit_Dependencies\GuzzleHttp\Event\EventInterface $event) use(&$onceListener, $eventName, $listener, $priority) {
+ $this->removeListener($eventName, $onceListener);
+ $listener($event, $eventName);
+ };
+ $this->on($eventName, $onceListener, $priority);
+ }
+ public function removeListener($eventName, callable $listener)
+ {
+ if (empty($this->listeners[$eventName])) {
+ return;
+ }
+ foreach ($this->listeners[$eventName] as $priority => $listeners) {
+ if (\false !== ($key = \array_search($listener, $listeners, \true))) {
+ unset($this->listeners[$eventName][$priority][$key], $this->sorted[$eventName]);
+ }
+ }
+ }
+ public function listeners($eventName = null)
+ {
+ // Return all events in a sorted priority order
+ if ($eventName === null) {
+ foreach (\array_keys($this->listeners) as $eventName) {
+ if (empty($this->sorted[$eventName])) {
+ $this->listeners($eventName);
+ }
+ }
+ return $this->sorted;
+ }
+ // Return the listeners for a specific event, sorted in priority order
+ if (empty($this->sorted[$eventName])) {
+ $this->sorted[$eventName] = [];
+ if (isset($this->listeners[$eventName])) {
+ \krsort($this->listeners[$eventName], \SORT_NUMERIC);
+ foreach ($this->listeners[$eventName] as $listeners) {
+ foreach ($listeners as $listener) {
+ $this->sorted[$eventName][] = $listener;
+ }
+ }
+ }
+ }
+ return $this->sorted[$eventName];
+ }
+ public function hasListeners($eventName)
+ {
+ return !empty($this->listeners[$eventName]);
+ }
+ public function emit($eventName, \Google\Site_Kit_Dependencies\GuzzleHttp\Event\EventInterface $event)
+ {
+ if (isset($this->listeners[$eventName])) {
+ foreach ($this->listeners($eventName) as $listener) {
+ $listener($event, $eventName);
+ if ($event->isPropagationStopped()) {
+ break;
+ }
+ }
+ }
+ return $event;
+ }
+ public function attach(\Google\Site_Kit_Dependencies\GuzzleHttp\Event\SubscriberInterface $subscriber)
+ {
+ foreach ($subscriber->getEvents() as $eventName => $listeners) {
+ if (\is_array($listeners[0])) {
+ foreach ($listeners as $listener) {
+ $this->on($eventName, [$subscriber, $listener[0]], isset($listener[1]) ? $listener[1] : 0);
+ }
+ } else {
+ $this->on($eventName, [$subscriber, $listeners[0]], isset($listeners[1]) ? $listeners[1] : 0);
+ }
+ }
+ }
+ public function detach(\Google\Site_Kit_Dependencies\GuzzleHttp\Event\SubscriberInterface $subscriber)
+ {
+ foreach ($subscriber->getEvents() as $eventName => $listener) {
+ $this->removeListener($eventName, [$subscriber, $listener[0]]);
+ }
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/EmitterInterface.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/EmitterInterface.php
new file mode 100644
index 000000000..04493e103
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/EmitterInterface.php
@@ -0,0 +1,90 @@
+transaction->exception;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/ErrorEvent.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/ErrorEvent.php
new file mode 100644
index 000000000..ead021c0c
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/ErrorEvent.php
@@ -0,0 +1,27 @@
+transaction->exception;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/EventInterface.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/EventInterface.php
new file mode 100644
index 000000000..15ecad2de
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/EventInterface.php
@@ -0,0 +1,23 @@
+emitter) {
+ $this->emitter = new \Google\Site_Kit_Dependencies\GuzzleHttp\Event\Emitter();
+ }
+ return $this->emitter;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/ListenerAttacherTrait.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/ListenerAttacherTrait.php
new file mode 100644
index 000000000..42f91e4cf
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/ListenerAttacherTrait.php
@@ -0,0 +1,83 @@
+getEmitter();
+ foreach ($listeners as $el) {
+ if ($el['once']) {
+ $emitter->once($el['name'], $el['fn'], $el['priority']);
+ } else {
+ $emitter->on($el['name'], $el['fn'], $el['priority']);
+ }
+ }
+ }
+ /**
+ * Extracts the allowed events from the provided array, and ignores anything
+ * else in the array. The event listener must be specified as a callable or
+ * as an array of event listener data ("name", "fn", "priority", "once").
+ *
+ * @param array $source Array containing callables or hashes of data to be
+ * prepared as event listeners.
+ * @param array $events Names of events to look for in the provided $source
+ * array. Other keys are ignored.
+ * @return array
+ */
+ private function prepareListeners(array $source, array $events)
+ {
+ $listeners = [];
+ foreach ($events as $name) {
+ if (isset($source[$name])) {
+ $this->buildListener($name, $source[$name], $listeners);
+ }
+ }
+ return $listeners;
+ }
+ /**
+ * Creates a complete event listener definition from the provided array of
+ * listener data. Also works recursively if more than one listeners are
+ * contained in the provided array.
+ *
+ * @param string $name Name of the event the listener is for.
+ * @param array|callable $data Event listener data to prepare.
+ * @param array $listeners Array of listeners, passed by reference.
+ *
+ * @throws \InvalidArgumentException if the event data is malformed.
+ */
+ private function buildListener($name, $data, &$listeners)
+ {
+ static $defaults = ['priority' => 0, 'once' => \false];
+ // If a callable is provided, normalize it to the array format.
+ if (\is_callable($data)) {
+ $data = ['fn' => $data];
+ }
+ // Prepare the listener and add it to the array, recursively.
+ if (isset($data['fn'])) {
+ $data['name'] = $name;
+ $listeners[] = $data + $defaults;
+ } elseif (\is_array($data)) {
+ foreach ($data as $listenerData) {
+ $this->buildListener($name, $listenerData, $listeners);
+ }
+ } else {
+ throw new \InvalidArgumentException('Each event listener must be a ' . 'callable or an associative array containing a "fn" key.');
+ }
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/ProgressEvent.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/ProgressEvent.php
new file mode 100644
index 000000000..5daf88226
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/ProgressEvent.php
@@ -0,0 +1,42 @@
+downloadSize = $downloadSize;
+ $this->downloaded = $downloaded;
+ $this->uploadSize = $uploadSize;
+ $this->uploaded = $uploaded;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/RequestEvents.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/RequestEvents.php
new file mode 100644
index 000000000..a782a28e8
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Event/RequestEvents.php
@@ -0,0 +1,50 @@
+ ['methodName']]
+ * - ['eventName' => ['methodName', $priority]]
+ * - ['eventName' => [['methodName'], ['otherMethod']]
+ * - ['eventName' => [['methodName'], ['otherMethod', $priority]]
+ * - ['eventName' => [['methodName', $priority], ['otherMethod', $priority]]
+ *
+ * @return array
+ */
+ public function getEvents();
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Exception/BadResponseException.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Exception/BadResponseException.php
new file mode 100644
index 000000000..faf8f8110
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Exception/BadResponseException.php
@@ -0,0 +1,10 @@
+response = $response;
+ }
+ /**
+ * Get the associated response
+ *
+ * @return ResponseInterface|null
+ */
+ public function getResponse()
+ {
+ return $this->response;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Exception/RequestException.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Exception/RequestException.php
new file mode 100644
index 000000000..90be4e3fa
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Exception/RequestException.php
@@ -0,0 +1,100 @@
+getStatusCode() : 0;
+ parent::__construct($message, $code, $previous);
+ $this->request = $request;
+ $this->response = $response;
+ }
+ /**
+ * Wrap non-RequestExceptions with a RequestException
+ *
+ * @param RequestInterface $request
+ * @param \Exception $e
+ *
+ * @return RequestException
+ */
+ public static function wrapException(\Google\Site_Kit_Dependencies\GuzzleHttp\Message\RequestInterface $request, \Exception $e)
+ {
+ if ($e instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Exception\RequestException) {
+ return $e;
+ } elseif ($e instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Exception\ConnectException) {
+ return new \Google\Site_Kit_Dependencies\GuzzleHttp\Exception\ConnectException($e->getMessage(), $request, null, $e);
+ } else {
+ return new \Google\Site_Kit_Dependencies\GuzzleHttp\Exception\RequestException($e->getMessage(), $request, null, $e);
+ }
+ }
+ /**
+ * Factory method to create a new exception with a normalized error message
+ *
+ * @param RequestInterface $request Request
+ * @param ResponseInterface $response Response received
+ * @param \Exception $previous Previous exception
+ *
+ * @return self
+ */
+ public static function create(\Google\Site_Kit_Dependencies\GuzzleHttp\Message\RequestInterface $request, \Google\Site_Kit_Dependencies\GuzzleHttp\Message\ResponseInterface $response = null, \Exception $previous = null)
+ {
+ if (!$response) {
+ return new self('Error completing request', $request, null, $previous);
+ }
+ $level = \floor($response->getStatusCode() / 100);
+ if ($level == '4') {
+ $label = 'Client error response';
+ $className = __NAMESPACE__ . '\\ClientException';
+ } elseif ($level == '5') {
+ $label = 'Server error response';
+ $className = __NAMESPACE__ . '\\ServerException';
+ } else {
+ $label = 'Unsuccessful response';
+ $className = __CLASS__;
+ }
+ $message = $label . ' [url] ' . $request->getUrl() . ' [status code] ' . $response->getStatusCode() . ' [reason phrase] ' . $response->getReasonPhrase();
+ return new $className($message, $request, $response, $previous);
+ }
+ /**
+ * Get the request that caused the exception
+ *
+ * @return RequestInterface
+ */
+ public function getRequest()
+ {
+ return $this->request;
+ }
+ /**
+ * Get the associated response
+ *
+ * @return ResponseInterface|null
+ */
+ public function getResponse()
+ {
+ return $this->response;
+ }
+ /**
+ * Check if a response was received
+ *
+ * @return bool
+ */
+ public function hasResponse()
+ {
+ return $this->response !== null;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Exception/ServerException.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Exception/ServerException.php
new file mode 100644
index 000000000..f2fb7a083
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Exception/ServerException.php
@@ -0,0 +1,10 @@
+error = $error;
+ }
+ /**
+ * Get the associated error
+ *
+ * @return \LibXMLError|null
+ */
+ public function getError()
+ {
+ return $this->error;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/HasDataTrait.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/HasDataTrait.php
new file mode 100644
index 000000000..562a1406f
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/HasDataTrait.php
@@ -0,0 +1,67 @@
+data);
+ }
+ public function offsetGet($offset)
+ {
+ return isset($this->data[$offset]) ? $this->data[$offset] : null;
+ }
+ public function offsetSet($offset, $value)
+ {
+ $this->data[$offset] = $value;
+ }
+ public function offsetExists($offset)
+ {
+ return isset($this->data[$offset]);
+ }
+ public function offsetUnset($offset)
+ {
+ unset($this->data[$offset]);
+ }
+ public function toArray()
+ {
+ return $this->data;
+ }
+ public function count()
+ {
+ return \count($this->data);
+ }
+ /**
+ * Get a value from the collection using a path syntax to retrieve nested
+ * data.
+ *
+ * @param string $path Path to traverse and retrieve a value from
+ *
+ * @return mixed|null
+ */
+ public function getPath($path)
+ {
+ return \Google\Site_Kit_Dependencies\GuzzleHttp\Utils::getPath($this->data, $path);
+ }
+ /**
+ * Set a value into a nested array key. Keys will be created as needed to
+ * set the value.
+ *
+ * @param string $path Path to set
+ * @param mixed $value Value to set at the key
+ *
+ * @throws \RuntimeException when trying to setPath using a nested path
+ * that travels through a scalar value
+ */
+ public function setPath($path, $value)
+ {
+ \Google\Site_Kit_Dependencies\GuzzleHttp\Utils::setPath($this->data, $path, $value);
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Message/AbstractMessage.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Message/AbstractMessage.php
new file mode 100644
index 000000000..bbce6f571
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Message/AbstractMessage.php
@@ -0,0 +1,215 @@
+getBody();
+ }
+ public function getProtocolVersion()
+ {
+ return $this->protocolVersion;
+ }
+ public function getBody()
+ {
+ return $this->body;
+ }
+ public function setBody(\Google\Site_Kit_Dependencies\GuzzleHttp\Stream\StreamInterface $body = null)
+ {
+ if ($body === null) {
+ // Setting a null body will remove the body of the request
+ $this->removeHeader('Content-Length');
+ $this->removeHeader('Transfer-Encoding');
+ }
+ $this->body = $body;
+ }
+ public function addHeader($header, $value)
+ {
+ if (\is_array($value)) {
+ $current = \array_merge($this->getHeaderAsArray($header), $value);
+ } else {
+ $current = $this->getHeaderAsArray($header);
+ $current[] = (string) $value;
+ }
+ $this->setHeader($header, $current);
+ }
+ public function addHeaders(array $headers)
+ {
+ foreach ($headers as $name => $header) {
+ $this->addHeader($name, $header);
+ }
+ }
+ public function getHeader($header)
+ {
+ $name = \strtolower($header);
+ return isset($this->headers[$name]) ? \implode(', ', $this->headers[$name]) : '';
+ }
+ public function getHeaderAsArray($header)
+ {
+ $name = \strtolower($header);
+ return isset($this->headers[$name]) ? $this->headers[$name] : [];
+ }
+ public function getHeaders()
+ {
+ $headers = [];
+ foreach ($this->headers as $name => $values) {
+ $headers[$this->headerNames[$name]] = $values;
+ }
+ return $headers;
+ }
+ public function setHeader($header, $value)
+ {
+ $header = \trim($header);
+ $name = \strtolower($header);
+ $this->headerNames[$name] = $header;
+ if (\is_array($value)) {
+ foreach ($value as &$v) {
+ $v = \trim($v);
+ }
+ $this->headers[$name] = $value;
+ } else {
+ $this->headers[$name] = [\trim($value)];
+ }
+ }
+ public function setHeaders(array $headers)
+ {
+ $this->headers = $this->headerNames = [];
+ foreach ($headers as $key => $value) {
+ $this->addHeader($key, $value);
+ }
+ }
+ public function hasHeader($header)
+ {
+ return isset($this->headers[\strtolower($header)]);
+ }
+ public function removeHeader($header)
+ {
+ $name = \strtolower($header);
+ unset($this->headers[$name], $this->headerNames[$name]);
+ }
+ /**
+ * Parse an array of header values containing ";" separated data into an
+ * array of associative arrays representing the header key value pair
+ * data of the header. When a parameter does not contain a value, but just
+ * contains a key, this function will inject a key with a '' string value.
+ *
+ * @param MessageInterface $message That contains the header
+ * @param string $header Header to retrieve from the message
+ *
+ * @return array Returns the parsed header values.
+ */
+ public static function parseHeader(\Google\Site_Kit_Dependencies\GuzzleHttp\Message\MessageInterface $message, $header)
+ {
+ static $trimmed = "\"' \n\t\r";
+ $params = $matches = [];
+ foreach (self::normalizeHeader($message, $header) as $val) {
+ $part = [];
+ foreach (\preg_split('/;(?=([^"]*"[^"]*")*[^"]*$)/', $val) as $kvp) {
+ if (\preg_match_all('/<[^>]+>|[^=]+/', $kvp, $matches)) {
+ $m = $matches[0];
+ if (isset($m[1])) {
+ $part[\trim($m[0], $trimmed)] = \trim($m[1], $trimmed);
+ } else {
+ $part[] = \trim($m[0], $trimmed);
+ }
+ }
+ }
+ if ($part) {
+ $params[] = $part;
+ }
+ }
+ return $params;
+ }
+ /**
+ * Converts an array of header values that may contain comma separated
+ * headers into an array of headers with no comma separated values.
+ *
+ * @param MessageInterface $message That contains the header
+ * @param string $header Header to retrieve from the message
+ *
+ * @return array Returns the normalized header field values.
+ */
+ public static function normalizeHeader(\Google\Site_Kit_Dependencies\GuzzleHttp\Message\MessageInterface $message, $header)
+ {
+ $h = $message->getHeaderAsArray($header);
+ for ($i = 0, $total = \count($h); $i < $total; $i++) {
+ if (\strpos($h[$i], ',') === \false) {
+ continue;
+ }
+ foreach (\preg_split('/,(?=([^"]*"[^"]*")*[^"]*$)/', $h[$i]) as $v) {
+ $h[] = \trim($v);
+ }
+ unset($h[$i]);
+ }
+ return $h;
+ }
+ /**
+ * Gets the start-line and headers of a message as a string
+ *
+ * @param MessageInterface $message
+ *
+ * @return string
+ */
+ public static function getStartLineAndHeaders(\Google\Site_Kit_Dependencies\GuzzleHttp\Message\MessageInterface $message)
+ {
+ return static::getStartLine($message) . self::getHeadersAsString($message);
+ }
+ /**
+ * Gets the headers of a message as a string
+ *
+ * @param MessageInterface $message
+ *
+ * @return string
+ */
+ public static function getHeadersAsString(\Google\Site_Kit_Dependencies\GuzzleHttp\Message\MessageInterface $message)
+ {
+ $result = '';
+ foreach ($message->getHeaders() as $name => $values) {
+ $result .= "\r\n{$name}: " . \implode(', ', $values);
+ }
+ return $result;
+ }
+ /**
+ * Gets the start line of a message
+ *
+ * @param MessageInterface $message
+ *
+ * @return string
+ * @throws \InvalidArgumentException
+ */
+ public static function getStartLine(\Google\Site_Kit_Dependencies\GuzzleHttp\Message\MessageInterface $message)
+ {
+ if ($message instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Message\RequestInterface) {
+ return \trim($message->getMethod() . ' ' . $message->getResource()) . ' HTTP/' . $message->getProtocolVersion();
+ } elseif ($message instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Message\ResponseInterface) {
+ return 'HTTP/' . $message->getProtocolVersion() . ' ' . $message->getStatusCode() . ' ' . $message->getReasonPhrase();
+ } else {
+ throw new \InvalidArgumentException('Unknown message type');
+ }
+ }
+ /**
+ * Accepts and modifies the options provided to the message in the
+ * constructor.
+ *
+ * Can be overridden in subclasses as necessary.
+ *
+ * @param array $options Options array passed by reference.
+ */
+ protected function handleOptions(array &$options)
+ {
+ if (isset($options['protocol_version'])) {
+ $this->protocolVersion = $options['protocol_version'];
+ }
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Message/AppliesHeadersInterface.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Message/AppliesHeadersInterface.php
new file mode 100644
index 000000000..9dc618e87
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Message/AppliesHeadersInterface.php
@@ -0,0 +1,25 @@
+then($onFulfilled, $onRejected, $onProgress), [$future, 'wait'], [$future, 'cancel']);
+ }
+ public function getStatusCode()
+ {
+ return $this->_value->getStatusCode();
+ }
+ public function setStatusCode($code)
+ {
+ $this->_value->setStatusCode($code);
+ }
+ public function getReasonPhrase()
+ {
+ return $this->_value->getReasonPhrase();
+ }
+ public function setReasonPhrase($phrase)
+ {
+ $this->_value->setReasonPhrase($phrase);
+ }
+ public function getEffectiveUrl()
+ {
+ return $this->_value->getEffectiveUrl();
+ }
+ public function setEffectiveUrl($url)
+ {
+ $this->_value->setEffectiveUrl($url);
+ }
+ public function json(array $config = [])
+ {
+ return $this->_value->json($config);
+ }
+ public function xml(array $config = [])
+ {
+ return $this->_value->xml($config);
+ }
+ public function __toString()
+ {
+ try {
+ return $this->_value->__toString();
+ } catch (\Exception $e) {
+ \trigger_error($e->getMessage(), \E_USER_WARNING);
+ return '';
+ }
+ }
+ public function getProtocolVersion()
+ {
+ return $this->_value->getProtocolVersion();
+ }
+ public function setBody(\Google\Site_Kit_Dependencies\GuzzleHttp\Stream\StreamInterface $body = null)
+ {
+ $this->_value->setBody($body);
+ }
+ public function getBody()
+ {
+ return $this->_value->getBody();
+ }
+ public function getHeaders()
+ {
+ return $this->_value->getHeaders();
+ }
+ public function getHeader($header)
+ {
+ return $this->_value->getHeader($header);
+ }
+ public function getHeaderAsArray($header)
+ {
+ return $this->_value->getHeaderAsArray($header);
+ }
+ public function hasHeader($header)
+ {
+ return $this->_value->hasHeader($header);
+ }
+ public function removeHeader($header)
+ {
+ $this->_value->removeHeader($header);
+ }
+ public function addHeader($header, $value)
+ {
+ $this->_value->addHeader($header, $value);
+ }
+ public function addHeaders(array $headers)
+ {
+ $this->_value->addHeaders($headers);
+ }
+ public function setHeader($header, $value)
+ {
+ $this->_value->setHeader($header, $value);
+ }
+ public function setHeaders(array $headers)
+ {
+ $this->_value->setHeaders($headers);
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Message/MessageFactory.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Message/MessageFactory.php
new file mode 100644
index 000000000..fc85e7239
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Message/MessageFactory.php
@@ -0,0 +1,260 @@
+ 1, 'timeout' => 1, 'verify' => 1, 'ssl_key' => 1, 'cert' => 1, 'proxy' => 1, 'debug' => 1, 'save_to' => 1, 'stream' => 1, 'expect' => 1, 'future' => 1];
+ /** @var array Default allow_redirects request option settings */
+ private static $defaultRedirect = ['max' => 5, 'strict' => \false, 'referer' => \false, 'protocols' => ['http', 'https']];
+ /**
+ * @param array $customOptions Associative array of custom request option
+ * names mapping to functions used to apply
+ * the option. The function accepts the request
+ * and the option value to apply.
+ */
+ public function __construct(array $customOptions = [])
+ {
+ $this->errorPlugin = new \Google\Site_Kit_Dependencies\GuzzleHttp\Subscriber\HttpError();
+ $this->redirectPlugin = new \Google\Site_Kit_Dependencies\GuzzleHttp\Subscriber\Redirect();
+ $this->customOptions = $customOptions;
+ }
+ public function createResponse($statusCode, array $headers = [], $body = null, array $options = [])
+ {
+ if (null !== $body) {
+ $body = \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Stream::factory($body);
+ }
+ return new \Google\Site_Kit_Dependencies\GuzzleHttp\Message\Response($statusCode, $headers, $body, $options);
+ }
+ public function createRequest($method, $url, array $options = [])
+ {
+ // Handle the request protocol version option that needs to be
+ // specified in the request constructor.
+ if (isset($options['version'])) {
+ $options['config']['protocol_version'] = $options['version'];
+ unset($options['version']);
+ }
+ $request = new \Google\Site_Kit_Dependencies\GuzzleHttp\Message\Request($method, $url, [], null, isset($options['config']) ? $options['config'] : []);
+ unset($options['config']);
+ // Use a POST body by default
+ if (\strtoupper($method) == 'POST' && !isset($options['body']) && !isset($options['json'])) {
+ $options['body'] = [];
+ }
+ if ($options) {
+ $this->applyOptions($request, $options);
+ }
+ return $request;
+ }
+ /**
+ * Create a request or response object from an HTTP message string
+ *
+ * @param string $message Message to parse
+ *
+ * @return RequestInterface|ResponseInterface
+ * @throws \InvalidArgumentException if unable to parse a message
+ */
+ public function fromMessage($message)
+ {
+ static $parser;
+ if (!$parser) {
+ $parser = new \Google\Site_Kit_Dependencies\GuzzleHttp\Message\MessageParser();
+ }
+ // Parse a response
+ if (\strtoupper(\substr($message, 0, 4)) == 'HTTP') {
+ $data = $parser->parseResponse($message);
+ return $this->createResponse($data['code'], $data['headers'], $data['body'] === '' ? null : $data['body'], $data);
+ }
+ // Parse a request
+ if (!($data = $parser->parseRequest($message))) {
+ throw new \InvalidArgumentException('Unable to parse request');
+ }
+ return $this->createRequest($data['method'], \Google\Site_Kit_Dependencies\GuzzleHttp\Url::buildUrl($data['request_url']), ['headers' => $data['headers'], 'body' => $data['body'] === '' ? null : $data['body'], 'config' => ['protocol_version' => $data['protocol_version']]]);
+ }
+ /**
+ * Apply POST fields and files to a request to attempt to give an accurate
+ * representation.
+ *
+ * @param RequestInterface $request Request to update
+ * @param array $body Body to apply
+ */
+ protected function addPostData(\Google\Site_Kit_Dependencies\GuzzleHttp\Message\RequestInterface $request, array $body)
+ {
+ static $fields = ['string' => \true, 'array' => \true, 'NULL' => \true, 'boolean' => \true, 'double' => \true, 'integer' => \true];
+ $post = new \Google\Site_Kit_Dependencies\GuzzleHttp\Post\PostBody();
+ foreach ($body as $key => $value) {
+ if (isset($fields[\gettype($value)])) {
+ $post->setField($key, $value);
+ } elseif ($value instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Post\PostFileInterface) {
+ $post->addFile($value);
+ } else {
+ $post->addFile(new \Google\Site_Kit_Dependencies\GuzzleHttp\Post\PostFile($key, $value));
+ }
+ }
+ if ($request->getHeader('Content-Type') == 'multipart/form-data') {
+ $post->forceMultipartUpload(\true);
+ }
+ $request->setBody($post);
+ }
+ protected function applyOptions(\Google\Site_Kit_Dependencies\GuzzleHttp\Message\RequestInterface $request, array $options = [])
+ {
+ $config = $request->getConfig();
+ $emitter = $request->getEmitter();
+ foreach ($options as $key => $value) {
+ if (isset(self::$configMap[$key])) {
+ $config[$key] = $value;
+ continue;
+ }
+ switch ($key) {
+ case 'allow_redirects':
+ if ($value === \false) {
+ continue 2;
+ }
+ if ($value === \true) {
+ $value = self::$defaultRedirect;
+ } elseif (!\is_array($value)) {
+ throw new \InvalidArgumentException('allow_redirects must be true, false, or array');
+ } else {
+ // Merge the default settings with the provided settings
+ $value += self::$defaultRedirect;
+ }
+ $config['redirect'] = $value;
+ $emitter->attach($this->redirectPlugin);
+ break;
+ case 'decode_content':
+ if ($value === \false) {
+ continue 2;
+ }
+ $config['decode_content'] = \true;
+ if ($value !== \true) {
+ $request->setHeader('Accept-Encoding', $value);
+ }
+ break;
+ case 'headers':
+ if (!\is_array($value)) {
+ throw new \InvalidArgumentException('header value must be an array');
+ }
+ foreach ($value as $k => $v) {
+ $request->setHeader($k, $v);
+ }
+ break;
+ case 'exceptions':
+ if ($value === \true) {
+ $emitter->attach($this->errorPlugin);
+ }
+ break;
+ case 'body':
+ if (\is_array($value)) {
+ $this->addPostData($request, $value);
+ } elseif ($value !== null) {
+ $request->setBody(\Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Stream::factory($value));
+ }
+ break;
+ case 'auth':
+ if (!$value) {
+ continue 2;
+ }
+ if (\is_array($value)) {
+ $type = isset($value[2]) ? \strtolower($value[2]) : 'basic';
+ } else {
+ $type = \strtolower($value);
+ }
+ $config['auth'] = $value;
+ if ($type == 'basic') {
+ $request->setHeader('Authorization', 'Basic ' . \base64_encode("{$value[0]}:{$value[1]}"));
+ } elseif ($type == 'digest') {
+ // @todo: Do not rely on curl
+ $config->setPath('curl/' . \CURLOPT_HTTPAUTH, \CURLAUTH_DIGEST);
+ $config->setPath('curl/' . \CURLOPT_USERPWD, "{$value[0]}:{$value[1]}");
+ }
+ break;
+ case 'query':
+ if ($value instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Query) {
+ $original = $request->getQuery();
+ // Do not overwrite existing query string variables by
+ // overwriting the object with the query string data passed
+ // in the URL
+ $value->overwriteWith($original->toArray());
+ $request->setQuery($value);
+ } elseif (\is_array($value)) {
+ // Do not overwrite existing query string variables
+ $query = $request->getQuery();
+ foreach ($value as $k => $v) {
+ if (!isset($query[$k])) {
+ $query[$k] = $v;
+ }
+ }
+ } else {
+ throw new \InvalidArgumentException('query must be an array or Query object');
+ }
+ break;
+ case 'cookies':
+ if ($value === \true) {
+ static $cookie = null;
+ if (!$cookie) {
+ $cookie = new \Google\Site_Kit_Dependencies\GuzzleHttp\Subscriber\Cookie();
+ }
+ $emitter->attach($cookie);
+ } elseif (\is_array($value)) {
+ $emitter->attach(new \Google\Site_Kit_Dependencies\GuzzleHttp\Subscriber\Cookie(\Google\Site_Kit_Dependencies\GuzzleHttp\Cookie\CookieJar::fromArray($value, $request->getHost())));
+ } elseif ($value instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Cookie\CookieJarInterface) {
+ $emitter->attach(new \Google\Site_Kit_Dependencies\GuzzleHttp\Subscriber\Cookie($value));
+ } elseif ($value !== \false) {
+ throw new \InvalidArgumentException('cookies must be an array, true, or CookieJarInterface');
+ }
+ break;
+ case 'events':
+ if (!\is_array($value)) {
+ throw new \InvalidArgumentException('events must be an array');
+ }
+ $this->attachListeners($request, $this->prepareListeners($value, ['before', 'complete', 'error', 'progress', 'end']));
+ break;
+ case 'subscribers':
+ if (!\is_array($value)) {
+ throw new \InvalidArgumentException('subscribers must be an array');
+ }
+ foreach ($value as $subscribers) {
+ $emitter->attach($subscribers);
+ }
+ break;
+ case 'json':
+ $request->setBody(\Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Stream::factory(\json_encode($value)));
+ if (!$request->hasHeader('Content-Type')) {
+ $request->setHeader('Content-Type', 'application/json');
+ }
+ break;
+ default:
+ // Check for custom handler functions.
+ if (isset($this->customOptions[$key])) {
+ $fn = $this->customOptions[$key];
+ $fn($request, $value);
+ continue 2;
+ }
+ throw new \InvalidArgumentException("No method can handle the {$key} config key");
+ }
+ }
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Message/MessageFactoryInterface.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Message/MessageFactoryInterface.php
new file mode 100644
index 000000000..b27d8b57c
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Message/MessageFactoryInterface.php
@@ -0,0 +1,65 @@
+getHeaders() as $name => $values) {
+ * echo $name . ": " . implode(", ", $values);
+ * }
+ *
+ * @return array Returns an associative array of the message's headers.
+ */
+ public function getHeaders();
+ /**
+ * Retrieve a header by the given case-insensitive name.
+ *
+ * @param string $header Case-insensitive header name.
+ *
+ * @return string
+ */
+ public function getHeader($header);
+ /**
+ * Retrieves a header by the given case-insensitive name as an array of strings.
+ *
+ * @param string $header Case-insensitive header name.
+ *
+ * @return string[]
+ */
+ public function getHeaderAsArray($header);
+ /**
+ * Checks if a header exists by the given case-insensitive name.
+ *
+ * @param string $header Case-insensitive header name.
+ *
+ * @return bool Returns true if any header names match the given header
+ * name using a case-insensitive string comparison. Returns false if
+ * no matching header name is found in the message.
+ */
+ public function hasHeader($header);
+ /**
+ * Remove a specific header by case-insensitive name.
+ *
+ * @param string $header Case-insensitive header name.
+ */
+ public function removeHeader($header);
+ /**
+ * Appends a header value to any existing values associated with the
+ * given header name.
+ *
+ * @param string $header Header name to add
+ * @param string $value Value of the header
+ */
+ public function addHeader($header, $value);
+ /**
+ * Merges in an associative array of headers.
+ *
+ * Each array key MUST be a string representing the case-insensitive name
+ * of a header. Each value MUST be either a string or an array of strings.
+ * For each value, the value is appended to any existing header of the same
+ * name, or, if a header does not already exist by the given name, then the
+ * header is added.
+ *
+ * @param array $headers Associative array of headers to add to the message
+ */
+ public function addHeaders(array $headers);
+ /**
+ * Sets a header, replacing any existing values of any headers with the
+ * same case-insensitive name.
+ *
+ * The header values MUST be a string or an array of strings.
+ *
+ * @param string $header Header name
+ * @param string|array $value Header value(s)
+ */
+ public function setHeader($header, $value);
+ /**
+ * Sets headers, replacing any headers that have already been set on the
+ * message.
+ *
+ * The array keys MUST be a string. The array values must be either a
+ * string or an array of strings.
+ *
+ * @param array $headers Headers to set.
+ */
+ public function setHeaders(array $headers);
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Message/MessageParser.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Message/MessageParser.php
new file mode 100644
index 000000000..96b5633ef
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Message/MessageParser.php
@@ -0,0 +1,135 @@
+parseMessage($message))) {
+ return \false;
+ }
+ // Parse the protocol and protocol version
+ if (isset($parts['start_line'][2])) {
+ $startParts = \explode('/', $parts['start_line'][2]);
+ $protocol = \strtoupper($startParts[0]);
+ $version = isset($startParts[1]) ? $startParts[1] : '1.1';
+ } else {
+ $protocol = 'HTTP';
+ $version = '1.1';
+ }
+ $parsed = ['method' => \strtoupper($parts['start_line'][0]), 'protocol' => $protocol, 'protocol_version' => $version, 'headers' => $parts['headers'], 'body' => $parts['body']];
+ $parsed['request_url'] = $this->getUrlPartsFromMessage(isset($parts['start_line'][1]) ? $parts['start_line'][1] : '', $parsed);
+ return $parsed;
+ }
+ /**
+ * Parse an HTTP response message into an associative array of parts.
+ *
+ * @param string $message HTTP response to parse
+ *
+ * @return array|bool Returns false if the message is invalid
+ */
+ public function parseResponse($message)
+ {
+ if (!($parts = $this->parseMessage($message))) {
+ return \false;
+ }
+ list($protocol, $version) = \explode('/', \trim($parts['start_line'][0]));
+ return ['protocol' => $protocol, 'protocol_version' => $version, 'code' => $parts['start_line'][1], 'reason_phrase' => isset($parts['start_line'][2]) ? $parts['start_line'][2] : '', 'headers' => $parts['headers'], 'body' => $parts['body']];
+ }
+ /**
+ * Parse a message into parts
+ *
+ * @param string $message Message to parse
+ *
+ * @return array|bool
+ */
+ private function parseMessage($message)
+ {
+ if (!$message) {
+ return \false;
+ }
+ $startLine = null;
+ $headers = [];
+ $body = '';
+ // Iterate over each line in the message, accounting for line endings
+ $lines = \preg_split('/(\\r?\\n)/', $message, -1, \PREG_SPLIT_DELIM_CAPTURE);
+ for ($i = 0, $totalLines = \count($lines); $i < $totalLines; $i += 2) {
+ $line = $lines[$i];
+ // If two line breaks were encountered, then this is the end of body
+ if (empty($line)) {
+ if ($i < $totalLines - 1) {
+ $body = \implode('', \array_slice($lines, $i + 2));
+ }
+ break;
+ }
+ // Parse message headers
+ if (!$startLine) {
+ $startLine = \explode(' ', $line, 3);
+ } elseif (\strpos($line, ':')) {
+ $parts = \explode(':', $line, 2);
+ $key = \trim($parts[0]);
+ $value = isset($parts[1]) ? \trim($parts[1]) : '';
+ if (!isset($headers[$key])) {
+ $headers[$key] = $value;
+ } elseif (!\is_array($headers[$key])) {
+ $headers[$key] = [$headers[$key], $value];
+ } else {
+ $headers[$key][] = $value;
+ }
+ }
+ }
+ return ['start_line' => $startLine, 'headers' => $headers, 'body' => $body];
+ }
+ /**
+ * Create URL parts from HTTP message parts
+ *
+ * @param string $requestUrl Associated URL
+ * @param array $parts HTTP message parts
+ *
+ * @return array
+ */
+ private function getUrlPartsFromMessage($requestUrl, array $parts)
+ {
+ // Parse the URL information from the message
+ $urlParts = ['path' => $requestUrl, 'scheme' => 'http'];
+ // Check for the Host header
+ if (isset($parts['headers']['Host'])) {
+ $urlParts['host'] = $parts['headers']['Host'];
+ } elseif (isset($parts['headers']['host'])) {
+ $urlParts['host'] = $parts['headers']['host'];
+ } else {
+ $urlParts['host'] = null;
+ }
+ if (\false === \strpos($urlParts['host'], ':')) {
+ $urlParts['port'] = '';
+ } else {
+ $hostParts = \explode(':', $urlParts['host']);
+ $urlParts['host'] = \trim($hostParts[0]);
+ $urlParts['port'] = (int) \trim($hostParts[1]);
+ if ($urlParts['port'] == 443) {
+ $urlParts['scheme'] = 'https';
+ }
+ }
+ // Check if a query is present
+ $path = $urlParts['path'];
+ $qpos = \strpos($path, '?');
+ if ($qpos) {
+ $urlParts['query'] = \substr($path, $qpos + 1);
+ $urlParts['path'] = \substr($path, 0, $qpos);
+ } else {
+ $urlParts['query'] = '';
+ }
+ return $urlParts;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Message/Request.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Message/Request.php
new file mode 100644
index 000000000..49a8971fa
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Message/Request.php
@@ -0,0 +1,160 @@
+setUrl($url);
+ $this->method = \strtoupper($method);
+ $this->handleOptions($options);
+ $this->transferOptions = new \Google\Site_Kit_Dependencies\GuzzleHttp\Collection($options);
+ $this->addPrepareEvent();
+ if ($body !== null) {
+ $this->setBody($body);
+ }
+ if ($headers) {
+ foreach ($headers as $key => $value) {
+ $this->addHeader($key, $value);
+ }
+ }
+ }
+ public function __clone()
+ {
+ if ($this->emitter) {
+ $this->emitter = clone $this->emitter;
+ }
+ $this->transferOptions = clone $this->transferOptions;
+ $this->url = clone $this->url;
+ }
+ public function setUrl($url)
+ {
+ $this->url = $url instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Url ? $url : \Google\Site_Kit_Dependencies\GuzzleHttp\Url::fromString($url);
+ $this->updateHostHeaderFromUrl();
+ }
+ public function getUrl()
+ {
+ return (string) $this->url;
+ }
+ public function setQuery($query)
+ {
+ $this->url->setQuery($query);
+ }
+ public function getQuery()
+ {
+ return $this->url->getQuery();
+ }
+ public function setMethod($method)
+ {
+ $this->method = \strtoupper($method);
+ }
+ public function getMethod()
+ {
+ return $this->method;
+ }
+ public function getScheme()
+ {
+ return $this->url->getScheme();
+ }
+ public function setScheme($scheme)
+ {
+ $this->url->setScheme($scheme);
+ }
+ public function getPort()
+ {
+ return $this->url->getPort();
+ }
+ public function setPort($port)
+ {
+ $this->url->setPort($port);
+ $this->updateHostHeaderFromUrl();
+ }
+ public function getHost()
+ {
+ return $this->url->getHost();
+ }
+ public function setHost($host)
+ {
+ $this->url->setHost($host);
+ $this->updateHostHeaderFromUrl();
+ }
+ public function getPath()
+ {
+ return '/' . \ltrim($this->url->getPath(), '/');
+ }
+ public function setPath($path)
+ {
+ $this->url->setPath($path);
+ }
+ public function getResource()
+ {
+ $resource = $this->getPath();
+ if ($query = (string) $this->url->getQuery()) {
+ $resource .= '?' . $query;
+ }
+ return $resource;
+ }
+ public function getConfig()
+ {
+ return $this->transferOptions;
+ }
+ protected function handleOptions(array &$options)
+ {
+ parent::handleOptions($options);
+ // Use a custom emitter if one is specified, and remove it from
+ // options that are exposed through getConfig()
+ if (isset($options['emitter'])) {
+ $this->emitter = $options['emitter'];
+ unset($options['emitter']);
+ }
+ }
+ /**
+ * Adds a subscriber that ensures a request's body is prepared before
+ * sending.
+ */
+ private function addPrepareEvent()
+ {
+ static $subscriber;
+ if (!$subscriber) {
+ $subscriber = new \Google\Site_Kit_Dependencies\GuzzleHttp\Subscriber\Prepare();
+ }
+ $this->getEmitter()->attach($subscriber);
+ }
+ private function updateHostHeaderFromUrl()
+ {
+ $port = $this->url->getPort();
+ $scheme = $this->url->getScheme();
+ if ($host = $this->url->getHost()) {
+ if ($port == 80 && $scheme == 'http' || $port == 443 && $scheme == 'https') {
+ $this->setHeader('Host', $host);
+ } else {
+ $this->setHeader('Host', "{$host}:{$port}");
+ }
+ }
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Message/RequestInterface.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Message/RequestInterface.php
new file mode 100644
index 000000000..9d8717a4c
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Message/RequestInterface.php
@@ -0,0 +1,121 @@
+ 'Continue', 101 => 'Switching Protocols', 102 => 'Processing', 200 => 'OK', 201 => 'Created', 202 => 'Accepted', 203 => 'Non-Authoritative Information', 204 => 'No Content', 205 => 'Reset Content', 206 => 'Partial Content', 207 => 'Multi-Status', 208 => 'Already Reported', 226 => 'IM Used', 300 => 'Multiple Choices', 301 => 'Moved Permanently', 302 => 'Found', 303 => 'See Other', 304 => 'Not Modified', 305 => 'Use Proxy', 307 => 'Temporary Redirect', 308 => 'Permanent Redirect', 400 => 'Bad Request', 401 => 'Unauthorized', 402 => 'Payment Required', 403 => 'Forbidden', 404 => 'Not Found', 405 => 'Method Not Allowed', 406 => 'Not Acceptable', 407 => 'Proxy Authentication Required', 408 => 'Request Timeout', 409 => 'Conflict', 410 => 'Gone', 411 => 'Length Required', 412 => 'Precondition Failed', 413 => 'Request Entity Too Large', 414 => 'Request-URI Too Long', 415 => 'Unsupported Media Type', 416 => 'Requested Range Not Satisfiable', 417 => 'Expectation Failed', 422 => 'Unprocessable Entity', 423 => 'Locked', 424 => 'Failed Dependency', 425 => 'Reserved for WebDAV advanced collections expired proposal', 426 => 'Upgrade required', 428 => 'Precondition Required', 429 => 'Too Many Requests', 431 => 'Request Header Fields Too Large', 500 => 'Internal Server Error', 501 => 'Not Implemented', 502 => 'Bad Gateway', 503 => 'Service Unavailable', 504 => 'Gateway Timeout', 505 => 'HTTP Version Not Supported', 506 => 'Variant Also Negotiates (Experimental)', 507 => 'Insufficient Storage', 508 => 'Loop Detected', 510 => 'Not Extended', 511 => 'Network Authentication Required'];
+ /** @var string The reason phrase of the response (human readable code) */
+ private $reasonPhrase;
+ /** @var string The status code of the response */
+ private $statusCode;
+ /** @var string The effective URL that returned this response */
+ private $effectiveUrl;
+ /**
+ * @param int|string $statusCode The response status code (e.g. 200)
+ * @param array $headers The response headers
+ * @param StreamInterface $body The body of the response
+ * @param array $options Response message options
+ * - reason_phrase: Set a custom reason phrase
+ * - protocol_version: Set a custom protocol version
+ */
+ public function __construct($statusCode, array $headers = [], \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\StreamInterface $body = null, array $options = [])
+ {
+ $this->statusCode = (int) $statusCode;
+ $this->handleOptions($options);
+ // Assume a reason phrase if one was not applied as an option
+ if (!$this->reasonPhrase && isset(self::$statusTexts[$this->statusCode])) {
+ $this->reasonPhrase = self::$statusTexts[$this->statusCode];
+ }
+ if ($headers) {
+ $this->setHeaders($headers);
+ }
+ if ($body) {
+ $this->setBody($body);
+ }
+ }
+ public function getStatusCode()
+ {
+ return $this->statusCode;
+ }
+ public function setStatusCode($code)
+ {
+ return $this->statusCode = (int) $code;
+ }
+ public function getReasonPhrase()
+ {
+ return $this->reasonPhrase;
+ }
+ public function setReasonPhrase($phrase)
+ {
+ return $this->reasonPhrase = $phrase;
+ }
+ public function json(array $config = [])
+ {
+ try {
+ return \Google\Site_Kit_Dependencies\GuzzleHttp\Utils::jsonDecode((string) $this->getBody(), isset($config['object']) ? !$config['object'] : \true, 512, isset($config['big_int_strings']) ? \JSON_BIGINT_AS_STRING : 0);
+ } catch (\InvalidArgumentException $e) {
+ throw new \Google\Site_Kit_Dependencies\GuzzleHttp\Exception\ParseException($e->getMessage(), $this);
+ }
+ }
+ public function xml(array $config = [])
+ {
+ $disableEntities = \libxml_disable_entity_loader(\true);
+ $internalErrors = \libxml_use_internal_errors(\true);
+ try {
+ // Allow XML to be retrieved even if there is no response body
+ $xml = new \SimpleXMLElement((string) $this->getBody() ?: '', isset($config['libxml_options']) ? $config['libxml_options'] : \LIBXML_NONET, \false, isset($config['ns']) ? $config['ns'] : '', isset($config['ns_is_prefix']) ? $config['ns_is_prefix'] : \false);
+ \libxml_disable_entity_loader($disableEntities);
+ \libxml_use_internal_errors($internalErrors);
+ } catch (\Exception $e) {
+ \libxml_disable_entity_loader($disableEntities);
+ \libxml_use_internal_errors($internalErrors);
+ throw new \Google\Site_Kit_Dependencies\GuzzleHttp\Exception\XmlParseException('Unable to parse response body into XML: ' . $e->getMessage(), $this, $e, \libxml_get_last_error() ?: null);
+ }
+ return $xml;
+ }
+ public function getEffectiveUrl()
+ {
+ return $this->effectiveUrl;
+ }
+ public function setEffectiveUrl($url)
+ {
+ $this->effectiveUrl = $url;
+ }
+ /**
+ * Accepts and modifies the options provided to the response in the
+ * constructor.
+ *
+ * @param array $options Options array passed by reference.
+ */
+ protected function handleOptions(array &$options = [])
+ {
+ parent::handleOptions($options);
+ if (isset($options['reason_phrase'])) {
+ $this->reasonPhrase = $options['reason_phrase'];
+ }
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Message/ResponseInterface.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Message/ResponseInterface.php
new file mode 100644
index 000000000..360363deb
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Message/ResponseInterface.php
@@ -0,0 +1,105 @@
+ 'text/vnd.in3d.3dml', '3g2' => 'video/3gpp2', '3gp' => 'video/3gpp', '7z' => 'application/x-7z-compressed', 'aab' => 'application/x-authorware-bin', 'aac' => 'audio/x-aac', 'aam' => 'application/x-authorware-map', 'aas' => 'application/x-authorware-seg', 'abw' => 'application/x-abiword', 'ac' => 'application/pkix-attr-cert', 'acc' => 'application/vnd.americandynamics.acc', 'ace' => 'application/x-ace-compressed', 'acu' => 'application/vnd.acucobol', 'acutc' => 'application/vnd.acucorp', 'adp' => 'audio/adpcm', 'aep' => 'application/vnd.audiograph', 'afm' => 'application/x-font-type1', 'afp' => 'application/vnd.ibm.modcap', 'ahead' => 'application/vnd.ahead.space', 'ai' => 'application/postscript', 'aif' => 'audio/x-aiff', 'aifc' => 'audio/x-aiff', 'aiff' => 'audio/x-aiff', 'air' => 'application/vnd.adobe.air-application-installer-package+zip', 'ait' => 'application/vnd.dvb.ait', 'ami' => 'application/vnd.amiga.ami', 'apk' => 'application/vnd.android.package-archive', 'application' => 'application/x-ms-application', 'apr' => 'application/vnd.lotus-approach', 'asa' => 'text/plain', 'asax' => 'application/octet-stream', 'asc' => 'application/pgp-signature', 'ascx' => 'text/plain', 'asf' => 'video/x-ms-asf', 'ashx' => 'text/plain', 'asm' => 'text/x-asm', 'asmx' => 'text/plain', 'aso' => 'application/vnd.accpac.simply.aso', 'asp' => 'text/plain', 'aspx' => 'text/plain', 'asx' => 'video/x-ms-asf', 'atc' => 'application/vnd.acucorp', 'atom' => 'application/atom+xml', 'atomcat' => 'application/atomcat+xml', 'atomsvc' => 'application/atomsvc+xml', 'atx' => 'application/vnd.antix.game-component', 'au' => 'audio/basic', 'avi' => 'video/x-msvideo', 'aw' => 'application/applixware', 'axd' => 'text/plain', 'azf' => 'application/vnd.airzip.filesecure.azf', 'azs' => 'application/vnd.airzip.filesecure.azs', 'azw' => 'application/vnd.amazon.ebook', 'bat' => 'application/x-msdownload', 'bcpio' => 'application/x-bcpio', 'bdf' => 'application/x-font-bdf', 'bdm' => 'application/vnd.syncml.dm+wbxml', 'bed' => 'application/vnd.realvnc.bed', 'bh2' => 'application/vnd.fujitsu.oasysprs', 'bin' => 'application/octet-stream', 'bmi' => 'application/vnd.bmi', 'bmp' => 'image/bmp', 'book' => 'application/vnd.framemaker', 'box' => 'application/vnd.previewsystems.box', 'boz' => 'application/x-bzip2', 'bpk' => 'application/octet-stream', 'btif' => 'image/prs.btif', 'bz' => 'application/x-bzip', 'bz2' => 'application/x-bzip2', 'c' => 'text/x-c', 'c11amc' => 'application/vnd.cluetrust.cartomobile-config', 'c11amz' => 'application/vnd.cluetrust.cartomobile-config-pkg', 'c4d' => 'application/vnd.clonk.c4group', 'c4f' => 'application/vnd.clonk.c4group', 'c4g' => 'application/vnd.clonk.c4group', 'c4p' => 'application/vnd.clonk.c4group', 'c4u' => 'application/vnd.clonk.c4group', 'cab' => 'application/vnd.ms-cab-compressed', 'car' => 'application/vnd.curl.car', 'cat' => 'application/vnd.ms-pki.seccat', 'cc' => 'text/x-c', 'cct' => 'application/x-director', 'ccxml' => 'application/ccxml+xml', 'cdbcmsg' => 'application/vnd.contact.cmsg', 'cdf' => 'application/x-netcdf', 'cdkey' => 'application/vnd.mediastation.cdkey', 'cdmia' => 'application/cdmi-capability', 'cdmic' => 'application/cdmi-container', 'cdmid' => 'application/cdmi-domain', 'cdmio' => 'application/cdmi-object', 'cdmiq' => 'application/cdmi-queue', 'cdx' => 'chemical/x-cdx', 'cdxml' => 'application/vnd.chemdraw+xml', 'cdy' => 'application/vnd.cinderella', 'cer' => 'application/pkix-cert', 'cfc' => 'application/x-coldfusion', 'cfm' => 'application/x-coldfusion', 'cgm' => 'image/cgm', 'chat' => 'application/x-chat', 'chm' => 'application/vnd.ms-htmlhelp', 'chrt' => 'application/vnd.kde.kchart', 'cif' => 'chemical/x-cif', 'cii' => 'application/vnd.anser-web-certificate-issue-initiation', 'cil' => 'application/vnd.ms-artgalry', 'cla' => 'application/vnd.claymore', 'class' => 'application/java-vm', 'clkk' => 'application/vnd.crick.clicker.keyboard', 'clkp' => 'application/vnd.crick.clicker.palette', 'clkt' => 'application/vnd.crick.clicker.template', 'clkw' => 'application/vnd.crick.clicker.wordbank', 'clkx' => 'application/vnd.crick.clicker', 'clp' => 'application/x-msclip', 'cmc' => 'application/vnd.cosmocaller', 'cmdf' => 'chemical/x-cmdf', 'cml' => 'chemical/x-cml', 'cmp' => 'application/vnd.yellowriver-custom-menu', 'cmx' => 'image/x-cmx', 'cod' => 'application/vnd.rim.cod', 'com' => 'application/x-msdownload', 'conf' => 'text/plain', 'cpio' => 'application/x-cpio', 'cpp' => 'text/x-c', 'cpt' => 'application/mac-compactpro', 'crd' => 'application/x-mscardfile', 'crl' => 'application/pkix-crl', 'crt' => 'application/x-x509-ca-cert', 'cryptonote' => 'application/vnd.rig.cryptonote', 'cs' => 'text/plain', 'csh' => 'application/x-csh', 'csml' => 'chemical/x-csml', 'csp' => 'application/vnd.commonspace', 'css' => 'text/css', 'cst' => 'application/x-director', 'csv' => 'text/csv', 'cu' => 'application/cu-seeme', 'curl' => 'text/vnd.curl', 'cww' => 'application/prs.cww', 'cxt' => 'application/x-director', 'cxx' => 'text/x-c', 'dae' => 'model/vnd.collada+xml', 'daf' => 'application/vnd.mobius.daf', 'dataless' => 'application/vnd.fdsn.seed', 'davmount' => 'application/davmount+xml', 'dcr' => 'application/x-director', 'dcurl' => 'text/vnd.curl.dcurl', 'dd2' => 'application/vnd.oma.dd2+xml', 'ddd' => 'application/vnd.fujixerox.ddd', 'deb' => 'application/x-debian-package', 'def' => 'text/plain', 'deploy' => 'application/octet-stream', 'der' => 'application/x-x509-ca-cert', 'dfac' => 'application/vnd.dreamfactory', 'dic' => 'text/x-c', 'dir' => 'application/x-director', 'dis' => 'application/vnd.mobius.dis', 'dist' => 'application/octet-stream', 'distz' => 'application/octet-stream', 'djv' => 'image/vnd.djvu', 'djvu' => 'image/vnd.djvu', 'dll' => 'application/x-msdownload', 'dmg' => 'application/octet-stream', 'dms' => 'application/octet-stream', 'dna' => 'application/vnd.dna', 'doc' => 'application/msword', 'docm' => 'application/vnd.ms-word.document.macroenabled.12', 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'dot' => 'application/msword', 'dotm' => 'application/vnd.ms-word.template.macroenabled.12', 'dotx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.template', 'dp' => 'application/vnd.osgi.dp', 'dpg' => 'application/vnd.dpgraph', 'dra' => 'audio/vnd.dra', 'dsc' => 'text/prs.lines.tag', 'dssc' => 'application/dssc+der', 'dtb' => 'application/x-dtbook+xml', 'dtd' => 'application/xml-dtd', 'dts' => 'audio/vnd.dts', 'dtshd' => 'audio/vnd.dts.hd', 'dump' => 'application/octet-stream', 'dvi' => 'application/x-dvi', 'dwf' => 'model/vnd.dwf', 'dwg' => 'image/vnd.dwg', 'dxf' => 'image/vnd.dxf', 'dxp' => 'application/vnd.spotfire.dxp', 'dxr' => 'application/x-director', 'ecelp4800' => 'audio/vnd.nuera.ecelp4800', 'ecelp7470' => 'audio/vnd.nuera.ecelp7470', 'ecelp9600' => 'audio/vnd.nuera.ecelp9600', 'ecma' => 'application/ecmascript', 'edm' => 'application/vnd.novadigm.edm', 'edx' => 'application/vnd.novadigm.edx', 'efif' => 'application/vnd.picsel', 'ei6' => 'application/vnd.pg.osasli', 'elc' => 'application/octet-stream', 'eml' => 'message/rfc822', 'emma' => 'application/emma+xml', 'eol' => 'audio/vnd.digital-winds', 'eot' => 'application/vnd.ms-fontobject', 'eps' => 'application/postscript', 'epub' => 'application/epub+zip', 'es3' => 'application/vnd.eszigno3+xml', 'esf' => 'application/vnd.epson.esf', 'et3' => 'application/vnd.eszigno3+xml', 'etx' => 'text/x-setext', 'exe' => 'application/x-msdownload', 'exi' => 'application/exi', 'ext' => 'application/vnd.novadigm.ext', 'ez' => 'application/andrew-inset', 'ez2' => 'application/vnd.ezpix-album', 'ez3' => 'application/vnd.ezpix-package', 'f' => 'text/x-fortran', 'f4v' => 'video/x-f4v', 'f77' => 'text/x-fortran', 'f90' => 'text/x-fortran', 'fbs' => 'image/vnd.fastbidsheet', 'fcs' => 'application/vnd.isac.fcs', 'fdf' => 'application/vnd.fdf', 'fe_launch' => 'application/vnd.denovo.fcselayout-link', 'fg5' => 'application/vnd.fujitsu.oasysgp', 'fgd' => 'application/x-director', 'fh' => 'image/x-freehand', 'fh4' => 'image/x-freehand', 'fh5' => 'image/x-freehand', 'fh7' => 'image/x-freehand', 'fhc' => 'image/x-freehand', 'fig' => 'application/x-xfig', 'fli' => 'video/x-fli', 'flo' => 'application/vnd.micrografx.flo', 'flv' => 'video/x-flv', 'flw' => 'application/vnd.kde.kivio', 'flx' => 'text/vnd.fmi.flexstor', 'fly' => 'text/vnd.fly', 'fm' => 'application/vnd.framemaker', 'fnc' => 'application/vnd.frogans.fnc', 'for' => 'text/x-fortran', 'fpx' => 'image/vnd.fpx', 'frame' => 'application/vnd.framemaker', 'fsc' => 'application/vnd.fsc.weblaunch', 'fst' => 'image/vnd.fst', 'ftc' => 'application/vnd.fluxtime.clip', 'fti' => 'application/vnd.anser-web-funds-transfer-initiation', 'fvt' => 'video/vnd.fvt', 'fxp' => 'application/vnd.adobe.fxp', 'fxpl' => 'application/vnd.adobe.fxp', 'fzs' => 'application/vnd.fuzzysheet', 'g2w' => 'application/vnd.geoplan', 'g3' => 'image/g3fax', 'g3w' => 'application/vnd.geospace', 'gac' => 'application/vnd.groove-account', 'gdl' => 'model/vnd.gdl', 'geo' => 'application/vnd.dynageo', 'gex' => 'application/vnd.geometry-explorer', 'ggb' => 'application/vnd.geogebra.file', 'ggt' => 'application/vnd.geogebra.tool', 'ghf' => 'application/vnd.groove-help', 'gif' => 'image/gif', 'gim' => 'application/vnd.groove-identity-message', 'gmx' => 'application/vnd.gmx', 'gnumeric' => 'application/x-gnumeric', 'gph' => 'application/vnd.flographit', 'gqf' => 'application/vnd.grafeq', 'gqs' => 'application/vnd.grafeq', 'gram' => 'application/srgs', 'gre' => 'application/vnd.geometry-explorer', 'grv' => 'application/vnd.groove-injector', 'grxml' => 'application/srgs+xml', 'gsf' => 'application/x-font-ghostscript', 'gtar' => 'application/x-gtar', 'gtm' => 'application/vnd.groove-tool-message', 'gtw' => 'model/vnd.gtw', 'gv' => 'text/vnd.graphviz', 'gxt' => 'application/vnd.geonext', 'h' => 'text/x-c', 'h261' => 'video/h261', 'h263' => 'video/h263', 'h264' => 'video/h264', 'hal' => 'application/vnd.hal+xml', 'hbci' => 'application/vnd.hbci', 'hdf' => 'application/x-hdf', 'hh' => 'text/x-c', 'hlp' => 'application/winhlp', 'hpgl' => 'application/vnd.hp-hpgl', 'hpid' => 'application/vnd.hp-hpid', 'hps' => 'application/vnd.hp-hps', 'hqx' => 'application/mac-binhex40', 'hta' => 'application/octet-stream', 'htc' => 'text/html', 'htke' => 'application/vnd.kenameaapp', 'htm' => 'text/html', 'html' => 'text/html', 'hvd' => 'application/vnd.yamaha.hv-dic', 'hvp' => 'application/vnd.yamaha.hv-voice', 'hvs' => 'application/vnd.yamaha.hv-script', 'i2g' => 'application/vnd.intergeo', 'icc' => 'application/vnd.iccprofile', 'ice' => 'x-conference/x-cooltalk', 'icm' => 'application/vnd.iccprofile', 'ico' => 'image/x-icon', 'ics' => 'text/calendar', 'ief' => 'image/ief', 'ifb' => 'text/calendar', 'ifm' => 'application/vnd.shana.informed.formdata', 'iges' => 'model/iges', 'igl' => 'application/vnd.igloader', 'igm' => 'application/vnd.insors.igm', 'igs' => 'model/iges', 'igx' => 'application/vnd.micrografx.igx', 'iif' => 'application/vnd.shana.informed.interchange', 'imp' => 'application/vnd.accpac.simply.imp', 'ims' => 'application/vnd.ms-ims', 'in' => 'text/plain', 'ini' => 'text/plain', 'ipfix' => 'application/ipfix', 'ipk' => 'application/vnd.shana.informed.package', 'irm' => 'application/vnd.ibm.rights-management', 'irp' => 'application/vnd.irepository.package+xml', 'iso' => 'application/octet-stream', 'itp' => 'application/vnd.shana.informed.formtemplate', 'ivp' => 'application/vnd.immervision-ivp', 'ivu' => 'application/vnd.immervision-ivu', 'jad' => 'text/vnd.sun.j2me.app-descriptor', 'jam' => 'application/vnd.jam', 'jar' => 'application/java-archive', 'java' => 'text/x-java-source', 'jisp' => 'application/vnd.jisp', 'jlt' => 'application/vnd.hp-jlyt', 'jnlp' => 'application/x-java-jnlp-file', 'joda' => 'application/vnd.joost.joda-archive', 'jpe' => 'image/jpeg', 'jpeg' => 'image/jpeg', 'jpg' => 'image/jpeg', 'jpgm' => 'video/jpm', 'jpgv' => 'video/jpeg', 'jpm' => 'video/jpm', 'js' => 'text/javascript', 'json' => 'application/json', 'kar' => 'audio/midi', 'karbon' => 'application/vnd.kde.karbon', 'kfo' => 'application/vnd.kde.kformula', 'kia' => 'application/vnd.kidspiration', 'kml' => 'application/vnd.google-earth.kml+xml', 'kmz' => 'application/vnd.google-earth.kmz', 'kne' => 'application/vnd.kinar', 'knp' => 'application/vnd.kinar', 'kon' => 'application/vnd.kde.kontour', 'kpr' => 'application/vnd.kde.kpresenter', 'kpt' => 'application/vnd.kde.kpresenter', 'ksp' => 'application/vnd.kde.kspread', 'ktr' => 'application/vnd.kahootz', 'ktx' => 'image/ktx', 'ktz' => 'application/vnd.kahootz', 'kwd' => 'application/vnd.kde.kword', 'kwt' => 'application/vnd.kde.kword', 'lasxml' => 'application/vnd.las.las+xml', 'latex' => 'application/x-latex', 'lbd' => 'application/vnd.llamagraphics.life-balance.desktop', 'lbe' => 'application/vnd.llamagraphics.life-balance.exchange+xml', 'les' => 'application/vnd.hhe.lesson-player', 'lha' => 'application/octet-stream', 'link66' => 'application/vnd.route66.link66+xml', 'list' => 'text/plain', 'list3820' => 'application/vnd.ibm.modcap', 'listafp' => 'application/vnd.ibm.modcap', 'log' => 'text/plain', 'lostxml' => 'application/lost+xml', 'lrf' => 'application/octet-stream', 'lrm' => 'application/vnd.ms-lrm', 'ltf' => 'application/vnd.frogans.ltf', 'lvp' => 'audio/vnd.lucent.voice', 'lwp' => 'application/vnd.lotus-wordpro', 'lzh' => 'application/octet-stream', 'm13' => 'application/x-msmediaview', 'm14' => 'application/x-msmediaview', 'm1v' => 'video/mpeg', 'm21' => 'application/mp21', 'm2a' => 'audio/mpeg', 'm2v' => 'video/mpeg', 'm3a' => 'audio/mpeg', 'm3u' => 'audio/x-mpegurl', 'm3u8' => 'application/vnd.apple.mpegurl', 'm4a' => 'audio/mp4', 'm4u' => 'video/vnd.mpegurl', 'm4v' => 'video/mp4', 'ma' => 'application/mathematica', 'mads' => 'application/mads+xml', 'mag' => 'application/vnd.ecowin.chart', 'maker' => 'application/vnd.framemaker', 'man' => 'text/troff', 'mathml' => 'application/mathml+xml', 'mb' => 'application/mathematica', 'mbk' => 'application/vnd.mobius.mbk', 'mbox' => 'application/mbox', 'mc1' => 'application/vnd.medcalcdata', 'mcd' => 'application/vnd.mcd', 'mcurl' => 'text/vnd.curl.mcurl', 'mdb' => 'application/x-msaccess', 'mdi' => 'image/vnd.ms-modi', 'me' => 'text/troff', 'mesh' => 'model/mesh', 'meta4' => 'application/metalink4+xml', 'mets' => 'application/mets+xml', 'mfm' => 'application/vnd.mfmp', 'mgp' => 'application/vnd.osgeo.mapguide.package', 'mgz' => 'application/vnd.proteus.magazine', 'mid' => 'audio/midi', 'midi' => 'audio/midi', 'mif' => 'application/vnd.mif', 'mime' => 'message/rfc822', 'mj2' => 'video/mj2', 'mjp2' => 'video/mj2', 'mlp' => 'application/vnd.dolby.mlp', 'mmd' => 'application/vnd.chipnuts.karaoke-mmd', 'mmf' => 'application/vnd.smaf', 'mmr' => 'image/vnd.fujixerox.edmics-mmr', 'mny' => 'application/x-msmoney', 'mobi' => 'application/x-mobipocket-ebook', 'mods' => 'application/mods+xml', 'mov' => 'video/quicktime', 'movie' => 'video/x-sgi-movie', 'mp2' => 'audio/mpeg', 'mp21' => 'application/mp21', 'mp2a' => 'audio/mpeg', 'mp3' => 'audio/mpeg', 'mp4' => 'video/mp4', 'mp4a' => 'audio/mp4', 'mp4s' => 'application/mp4', 'mp4v' => 'video/mp4', 'mpc' => 'application/vnd.mophun.certificate', 'mpe' => 'video/mpeg', 'mpeg' => 'video/mpeg', 'mpg' => 'video/mpeg', 'mpg4' => 'video/mp4', 'mpga' => 'audio/mpeg', 'mpkg' => 'application/vnd.apple.installer+xml', 'mpm' => 'application/vnd.blueice.multipass', 'mpn' => 'application/vnd.mophun.application', 'mpp' => 'application/vnd.ms-project', 'mpt' => 'application/vnd.ms-project', 'mpy' => 'application/vnd.ibm.minipay', 'mqy' => 'application/vnd.mobius.mqy', 'mrc' => 'application/marc', 'mrcx' => 'application/marcxml+xml', 'ms' => 'text/troff', 'mscml' => 'application/mediaservercontrol+xml', 'mseed' => 'application/vnd.fdsn.mseed', 'mseq' => 'application/vnd.mseq', 'msf' => 'application/vnd.epson.msf', 'msh' => 'model/mesh', 'msi' => 'application/x-msdownload', 'msl' => 'application/vnd.mobius.msl', 'msty' => 'application/vnd.muvee.style', 'mts' => 'model/vnd.mts', 'mus' => 'application/vnd.musician', 'musicxml' => 'application/vnd.recordare.musicxml+xml', 'mvb' => 'application/x-msmediaview', 'mwf' => 'application/vnd.mfer', 'mxf' => 'application/mxf', 'mxl' => 'application/vnd.recordare.musicxml', 'mxml' => 'application/xv+xml', 'mxs' => 'application/vnd.triscape.mxs', 'mxu' => 'video/vnd.mpegurl', 'n-gage' => 'application/vnd.nokia.n-gage.symbian.install', 'n3' => 'text/n3', 'nb' => 'application/mathematica', 'nbp' => 'application/vnd.wolfram.player', 'nc' => 'application/x-netcdf', 'ncx' => 'application/x-dtbncx+xml', 'ngdat' => 'application/vnd.nokia.n-gage.data', 'nlu' => 'application/vnd.neurolanguage.nlu', 'nml' => 'application/vnd.enliven', 'nnd' => 'application/vnd.noblenet-directory', 'nns' => 'application/vnd.noblenet-sealer', 'nnw' => 'application/vnd.noblenet-web', 'npx' => 'image/vnd.net-fpx', 'nsf' => 'application/vnd.lotus-notes', 'oa2' => 'application/vnd.fujitsu.oasys2', 'oa3' => 'application/vnd.fujitsu.oasys3', 'oas' => 'application/vnd.fujitsu.oasys', 'obd' => 'application/x-msbinder', 'oda' => 'application/oda', 'odb' => 'application/vnd.oasis.opendocument.database', 'odc' => 'application/vnd.oasis.opendocument.chart', 'odf' => 'application/vnd.oasis.opendocument.formula', 'odft' => 'application/vnd.oasis.opendocument.formula-template', 'odg' => 'application/vnd.oasis.opendocument.graphics', 'odi' => 'application/vnd.oasis.opendocument.image', 'odm' => 'application/vnd.oasis.opendocument.text-master', 'odp' => 'application/vnd.oasis.opendocument.presentation', 'ods' => 'application/vnd.oasis.opendocument.spreadsheet', 'odt' => 'application/vnd.oasis.opendocument.text', 'oga' => 'audio/ogg', 'ogg' => 'audio/ogg', 'ogv' => 'video/ogg', 'ogx' => 'application/ogg', 'onepkg' => 'application/onenote', 'onetmp' => 'application/onenote', 'onetoc' => 'application/onenote', 'onetoc2' => 'application/onenote', 'opf' => 'application/oebps-package+xml', 'oprc' => 'application/vnd.palm', 'org' => 'application/vnd.lotus-organizer', 'osf' => 'application/vnd.yamaha.openscoreformat', 'osfpvg' => 'application/vnd.yamaha.openscoreformat.osfpvg+xml', 'otc' => 'application/vnd.oasis.opendocument.chart-template', 'otf' => 'application/x-font-otf', 'otg' => 'application/vnd.oasis.opendocument.graphics-template', 'oth' => 'application/vnd.oasis.opendocument.text-web', 'oti' => 'application/vnd.oasis.opendocument.image-template', 'otp' => 'application/vnd.oasis.opendocument.presentation-template', 'ots' => 'application/vnd.oasis.opendocument.spreadsheet-template', 'ott' => 'application/vnd.oasis.opendocument.text-template', 'oxt' => 'application/vnd.openofficeorg.extension', 'p' => 'text/x-pascal', 'p10' => 'application/pkcs10', 'p12' => 'application/x-pkcs12', 'p7b' => 'application/x-pkcs7-certificates', 'p7c' => 'application/pkcs7-mime', 'p7m' => 'application/pkcs7-mime', 'p7r' => 'application/x-pkcs7-certreqresp', 'p7s' => 'application/pkcs7-signature', 'p8' => 'application/pkcs8', 'pas' => 'text/x-pascal', 'paw' => 'application/vnd.pawaafile', 'pbd' => 'application/vnd.powerbuilder6', 'pbm' => 'image/x-portable-bitmap', 'pcf' => 'application/x-font-pcf', 'pcl' => 'application/vnd.hp-pcl', 'pclxl' => 'application/vnd.hp-pclxl', 'pct' => 'image/x-pict', 'pcurl' => 'application/vnd.curl.pcurl', 'pcx' => 'image/x-pcx', 'pdb' => 'application/vnd.palm', 'pdf' => 'application/pdf', 'pfa' => 'application/x-font-type1', 'pfb' => 'application/x-font-type1', 'pfm' => 'application/x-font-type1', 'pfr' => 'application/font-tdpfr', 'pfx' => 'application/x-pkcs12', 'pgm' => 'image/x-portable-graymap', 'pgn' => 'application/x-chess-pgn', 'pgp' => 'application/pgp-encrypted', 'php' => 'text/x-php', 'phps' => 'application/x-httpd-phps', 'pic' => 'image/x-pict', 'pkg' => 'application/octet-stream', 'pki' => 'application/pkixcmp', 'pkipath' => 'application/pkix-pkipath', 'plb' => 'application/vnd.3gpp.pic-bw-large', 'plc' => 'application/vnd.mobius.plc', 'plf' => 'application/vnd.pocketlearn', 'pls' => 'application/pls+xml', 'pml' => 'application/vnd.ctc-posml', 'png' => 'image/png', 'pnm' => 'image/x-portable-anymap', 'portpkg' => 'application/vnd.macports.portpkg', 'pot' => 'application/vnd.ms-powerpoint', 'potm' => 'application/vnd.ms-powerpoint.template.macroenabled.12', 'potx' => 'application/vnd.openxmlformats-officedocument.presentationml.template', 'ppam' => 'application/vnd.ms-powerpoint.addin.macroenabled.12', 'ppd' => 'application/vnd.cups-ppd', 'ppm' => 'image/x-portable-pixmap', 'pps' => 'application/vnd.ms-powerpoint', 'ppsm' => 'application/vnd.ms-powerpoint.slideshow.macroenabled.12', 'ppsx' => 'application/vnd.openxmlformats-officedocument.presentationml.slideshow', 'ppt' => 'application/vnd.ms-powerpoint', 'pptm' => 'application/vnd.ms-powerpoint.presentation.macroenabled.12', 'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation', 'pqa' => 'application/vnd.palm', 'prc' => 'application/x-mobipocket-ebook', 'pre' => 'application/vnd.lotus-freelance', 'prf' => 'application/pics-rules', 'ps' => 'application/postscript', 'psb' => 'application/vnd.3gpp.pic-bw-small', 'psd' => 'image/vnd.adobe.photoshop', 'psf' => 'application/x-font-linux-psf', 'pskcxml' => 'application/pskc+xml', 'ptid' => 'application/vnd.pvi.ptid1', 'pub' => 'application/x-mspublisher', 'pvb' => 'application/vnd.3gpp.pic-bw-var', 'pwn' => 'application/vnd.3m.post-it-notes', 'pya' => 'audio/vnd.ms-playready.media.pya', 'pyv' => 'video/vnd.ms-playready.media.pyv', 'qam' => 'application/vnd.epson.quickanime', 'qbo' => 'application/vnd.intu.qbo', 'qfx' => 'application/vnd.intu.qfx', 'qps' => 'application/vnd.publishare-delta-tree', 'qt' => 'video/quicktime', 'qwd' => 'application/vnd.quark.quarkxpress', 'qwt' => 'application/vnd.quark.quarkxpress', 'qxb' => 'application/vnd.quark.quarkxpress', 'qxd' => 'application/vnd.quark.quarkxpress', 'qxl' => 'application/vnd.quark.quarkxpress', 'qxt' => 'application/vnd.quark.quarkxpress', 'ra' => 'audio/x-pn-realaudio', 'ram' => 'audio/x-pn-realaudio', 'rar' => 'application/x-rar-compressed', 'ras' => 'image/x-cmu-raster', 'rb' => 'text/plain', 'rcprofile' => 'application/vnd.ipunplugged.rcprofile', 'rdf' => 'application/rdf+xml', 'rdz' => 'application/vnd.data-vision.rdz', 'rep' => 'application/vnd.businessobjects', 'res' => 'application/x-dtbresource+xml', 'resx' => 'text/xml', 'rgb' => 'image/x-rgb', 'rif' => 'application/reginfo+xml', 'rip' => 'audio/vnd.rip', 'rl' => 'application/resource-lists+xml', 'rlc' => 'image/vnd.fujixerox.edmics-rlc', 'rld' => 'application/resource-lists-diff+xml', 'rm' => 'application/vnd.rn-realmedia', 'rmi' => 'audio/midi', 'rmp' => 'audio/x-pn-realaudio-plugin', 'rms' => 'application/vnd.jcp.javame.midlet-rms', 'rnc' => 'application/relax-ng-compact-syntax', 'roff' => 'text/troff', 'rp9' => 'application/vnd.cloanto.rp9', 'rpss' => 'application/vnd.nokia.radio-presets', 'rpst' => 'application/vnd.nokia.radio-preset', 'rq' => 'application/sparql-query', 'rs' => 'application/rls-services+xml', 'rsd' => 'application/rsd+xml', 'rss' => 'application/rss+xml', 'rtf' => 'application/rtf', 'rtx' => 'text/richtext', 's' => 'text/x-asm', 'saf' => 'application/vnd.yamaha.smaf-audio', 'sbml' => 'application/sbml+xml', 'sc' => 'application/vnd.ibm.secure-container', 'scd' => 'application/x-msschedule', 'scm' => 'application/vnd.lotus-screencam', 'scq' => 'application/scvp-cv-request', 'scs' => 'application/scvp-cv-response', 'scurl' => 'text/vnd.curl.scurl', 'sda' => 'application/vnd.stardivision.draw', 'sdc' => 'application/vnd.stardivision.calc', 'sdd' => 'application/vnd.stardivision.impress', 'sdkd' => 'application/vnd.solent.sdkm+xml', 'sdkm' => 'application/vnd.solent.sdkm+xml', 'sdp' => 'application/sdp', 'sdw' => 'application/vnd.stardivision.writer', 'see' => 'application/vnd.seemail', 'seed' => 'application/vnd.fdsn.seed', 'sema' => 'application/vnd.sema', 'semd' => 'application/vnd.semd', 'semf' => 'application/vnd.semf', 'ser' => 'application/java-serialized-object', 'setpay' => 'application/set-payment-initiation', 'setreg' => 'application/set-registration-initiation', 'sfd-hdstx' => 'application/vnd.hydrostatix.sof-data', 'sfs' => 'application/vnd.spotfire.sfs', 'sgl' => 'application/vnd.stardivision.writer-global', 'sgm' => 'text/sgml', 'sgml' => 'text/sgml', 'sh' => 'application/x-sh', 'shar' => 'application/x-shar', 'shf' => 'application/shf+xml', 'sig' => 'application/pgp-signature', 'silo' => 'model/mesh', 'sis' => 'application/vnd.symbian.install', 'sisx' => 'application/vnd.symbian.install', 'sit' => 'application/x-stuffit', 'sitx' => 'application/x-stuffitx', 'skd' => 'application/vnd.koan', 'skm' => 'application/vnd.koan', 'skp' => 'application/vnd.koan', 'skt' => 'application/vnd.koan', 'sldm' => 'application/vnd.ms-powerpoint.slide.macroenabled.12', 'sldx' => 'application/vnd.openxmlformats-officedocument.presentationml.slide', 'slt' => 'application/vnd.epson.salt', 'sm' => 'application/vnd.stepmania.stepchart', 'smf' => 'application/vnd.stardivision.math', 'smi' => 'application/smil+xml', 'smil' => 'application/smil+xml', 'snd' => 'audio/basic', 'snf' => 'application/x-font-snf', 'so' => 'application/octet-stream', 'spc' => 'application/x-pkcs7-certificates', 'spf' => 'application/vnd.yamaha.smaf-phrase', 'spl' => 'application/x-futuresplash', 'spot' => 'text/vnd.in3d.spot', 'spp' => 'application/scvp-vp-response', 'spq' => 'application/scvp-vp-request', 'spx' => 'audio/ogg', 'src' => 'application/x-wais-source', 'sru' => 'application/sru+xml', 'srx' => 'application/sparql-results+xml', 'sse' => 'application/vnd.kodak-descriptor', 'ssf' => 'application/vnd.epson.ssf', 'ssml' => 'application/ssml+xml', 'st' => 'application/vnd.sailingtracker.track', 'stc' => 'application/vnd.sun.xml.calc.template', 'std' => 'application/vnd.sun.xml.draw.template', 'stf' => 'application/vnd.wt.stf', 'sti' => 'application/vnd.sun.xml.impress.template', 'stk' => 'application/hyperstudio', 'stl' => 'application/vnd.ms-pki.stl', 'str' => 'application/vnd.pg.format', 'stw' => 'application/vnd.sun.xml.writer.template', 'sub' => 'image/vnd.dvb.subtitle', 'sus' => 'application/vnd.sus-calendar', 'susp' => 'application/vnd.sus-calendar', 'sv4cpio' => 'application/x-sv4cpio', 'sv4crc' => 'application/x-sv4crc', 'svc' => 'application/vnd.dvb.service', 'svd' => 'application/vnd.svd', 'svg' => 'image/svg+xml', 'svgz' => 'image/svg+xml', 'swa' => 'application/x-director', 'swf' => 'application/x-shockwave-flash', 'swi' => 'application/vnd.aristanetworks.swi', 'sxc' => 'application/vnd.sun.xml.calc', 'sxd' => 'application/vnd.sun.xml.draw', 'sxg' => 'application/vnd.sun.xml.writer.global', 'sxi' => 'application/vnd.sun.xml.impress', 'sxm' => 'application/vnd.sun.xml.math', 'sxw' => 'application/vnd.sun.xml.writer', 't' => 'text/troff', 'tao' => 'application/vnd.tao.intent-module-archive', 'tar' => 'application/x-tar', 'tcap' => 'application/vnd.3gpp2.tcap', 'tcl' => 'application/x-tcl', 'teacher' => 'application/vnd.smart.teacher', 'tei' => 'application/tei+xml', 'teicorpus' => 'application/tei+xml', 'tex' => 'application/x-tex', 'texi' => 'application/x-texinfo', 'texinfo' => 'application/x-texinfo', 'text' => 'text/plain', 'tfi' => 'application/thraud+xml', 'tfm' => 'application/x-tex-tfm', 'thmx' => 'application/vnd.ms-officetheme', 'tif' => 'image/tiff', 'tiff' => 'image/tiff', 'tmo' => 'application/vnd.tmobile-livetv', 'torrent' => 'application/x-bittorrent', 'tpl' => 'application/vnd.groove-tool-template', 'tpt' => 'application/vnd.trid.tpt', 'tr' => 'text/troff', 'tra' => 'application/vnd.trueapp', 'trm' => 'application/x-msterminal', 'tsd' => 'application/timestamped-data', 'tsv' => 'text/tab-separated-values', 'ttc' => 'application/x-font-ttf', 'ttf' => 'application/x-font-ttf', 'ttl' => 'text/turtle', 'twd' => 'application/vnd.simtech-mindmapper', 'twds' => 'application/vnd.simtech-mindmapper', 'txd' => 'application/vnd.genomatix.tuxedo', 'txf' => 'application/vnd.mobius.txf', 'txt' => 'text/plain', 'u32' => 'application/x-authorware-bin', 'udeb' => 'application/x-debian-package', 'ufd' => 'application/vnd.ufdl', 'ufdl' => 'application/vnd.ufdl', 'umj' => 'application/vnd.umajin', 'unityweb' => 'application/vnd.unity', 'uoml' => 'application/vnd.uoml+xml', 'uri' => 'text/uri-list', 'uris' => 'text/uri-list', 'urls' => 'text/uri-list', 'ustar' => 'application/x-ustar', 'utz' => 'application/vnd.uiq.theme', 'uu' => 'text/x-uuencode', 'uva' => 'audio/vnd.dece.audio', 'uvd' => 'application/vnd.dece.data', 'uvf' => 'application/vnd.dece.data', 'uvg' => 'image/vnd.dece.graphic', 'uvh' => 'video/vnd.dece.hd', 'uvi' => 'image/vnd.dece.graphic', 'uvm' => 'video/vnd.dece.mobile', 'uvp' => 'video/vnd.dece.pd', 'uvs' => 'video/vnd.dece.sd', 'uvt' => 'application/vnd.dece.ttml+xml', 'uvu' => 'video/vnd.uvvu.mp4', 'uvv' => 'video/vnd.dece.video', 'uvva' => 'audio/vnd.dece.audio', 'uvvd' => 'application/vnd.dece.data', 'uvvf' => 'application/vnd.dece.data', 'uvvg' => 'image/vnd.dece.graphic', 'uvvh' => 'video/vnd.dece.hd', 'uvvi' => 'image/vnd.dece.graphic', 'uvvm' => 'video/vnd.dece.mobile', 'uvvp' => 'video/vnd.dece.pd', 'uvvs' => 'video/vnd.dece.sd', 'uvvt' => 'application/vnd.dece.ttml+xml', 'uvvu' => 'video/vnd.uvvu.mp4', 'uvvv' => 'video/vnd.dece.video', 'uvvx' => 'application/vnd.dece.unspecified', 'uvx' => 'application/vnd.dece.unspecified', 'vcd' => 'application/x-cdlink', 'vcf' => 'text/x-vcard', 'vcg' => 'application/vnd.groove-vcard', 'vcs' => 'text/x-vcalendar', 'vcx' => 'application/vnd.vcx', 'vis' => 'application/vnd.visionary', 'viv' => 'video/vnd.vivo', 'vor' => 'application/vnd.stardivision.writer', 'vox' => 'application/x-authorware-bin', 'vrml' => 'model/vrml', 'vsd' => 'application/vnd.visio', 'vsf' => 'application/vnd.vsf', 'vss' => 'application/vnd.visio', 'vst' => 'application/vnd.visio', 'vsw' => 'application/vnd.visio', 'vtu' => 'model/vnd.vtu', 'vxml' => 'application/voicexml+xml', 'w3d' => 'application/x-director', 'wad' => 'application/x-doom', 'wav' => 'audio/x-wav', 'wax' => 'audio/x-ms-wax', 'wbmp' => 'image/vnd.wap.wbmp', 'wbs' => 'application/vnd.criticaltools.wbs+xml', 'wbxml' => 'application/vnd.wap.wbxml', 'wcm' => 'application/vnd.ms-works', 'wdb' => 'application/vnd.ms-works', 'weba' => 'audio/webm', 'webm' => 'video/webm', 'webp' => 'image/webp', 'wg' => 'application/vnd.pmi.widget', 'wgt' => 'application/widget', 'wks' => 'application/vnd.ms-works', 'wm' => 'video/x-ms-wm', 'wma' => 'audio/x-ms-wma', 'wmd' => 'application/x-ms-wmd', 'wmf' => 'application/x-msmetafile', 'wml' => 'text/vnd.wap.wml', 'wmlc' => 'application/vnd.wap.wmlc', 'wmls' => 'text/vnd.wap.wmlscript', 'wmlsc' => 'application/vnd.wap.wmlscriptc', 'wmv' => 'video/x-ms-wmv', 'wmx' => 'video/x-ms-wmx', 'wmz' => 'application/x-ms-wmz', 'woff' => 'application/x-font-woff', 'wpd' => 'application/vnd.wordperfect', 'wpl' => 'application/vnd.ms-wpl', 'wps' => 'application/vnd.ms-works', 'wqd' => 'application/vnd.wqd', 'wri' => 'application/x-mswrite', 'wrl' => 'model/vrml', 'wsdl' => 'application/wsdl+xml', 'wspolicy' => 'application/wspolicy+xml', 'wtb' => 'application/vnd.webturbo', 'wvx' => 'video/x-ms-wvx', 'x32' => 'application/x-authorware-bin', 'x3d' => 'application/vnd.hzn-3d-crossword', 'xap' => 'application/x-silverlight-app', 'xar' => 'application/vnd.xara', 'xbap' => 'application/x-ms-xbap', 'xbd' => 'application/vnd.fujixerox.docuworks.binder', 'xbm' => 'image/x-xbitmap', 'xdf' => 'application/xcap-diff+xml', 'xdm' => 'application/vnd.syncml.dm+xml', 'xdp' => 'application/vnd.adobe.xdp+xml', 'xdssc' => 'application/dssc+xml', 'xdw' => 'application/vnd.fujixerox.docuworks', 'xenc' => 'application/xenc+xml', 'xer' => 'application/patch-ops-error+xml', 'xfdf' => 'application/vnd.adobe.xfdf', 'xfdl' => 'application/vnd.xfdl', 'xht' => 'application/xhtml+xml', 'xhtml' => 'application/xhtml+xml', 'xhvml' => 'application/xv+xml', 'xif' => 'image/vnd.xiff', 'xla' => 'application/vnd.ms-excel', 'xlam' => 'application/vnd.ms-excel.addin.macroenabled.12', 'xlc' => 'application/vnd.ms-excel', 'xlm' => 'application/vnd.ms-excel', 'xls' => 'application/vnd.ms-excel', 'xlsb' => 'application/vnd.ms-excel.sheet.binary.macroenabled.12', 'xlsm' => 'application/vnd.ms-excel.sheet.macroenabled.12', 'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'xlt' => 'application/vnd.ms-excel', 'xltm' => 'application/vnd.ms-excel.template.macroenabled.12', 'xltx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.template', 'xlw' => 'application/vnd.ms-excel', 'xml' => 'application/xml', 'xo' => 'application/vnd.olpc-sugar', 'xop' => 'application/xop+xml', 'xpi' => 'application/x-xpinstall', 'xpm' => 'image/x-xpixmap', 'xpr' => 'application/vnd.is-xpr', 'xps' => 'application/vnd.ms-xpsdocument', 'xpw' => 'application/vnd.intercon.formnet', 'xpx' => 'application/vnd.intercon.formnet', 'xsl' => 'application/xml', 'xslt' => 'application/xslt+xml', 'xsm' => 'application/vnd.syncml+xml', 'xspf' => 'application/xspf+xml', 'xul' => 'application/vnd.mozilla.xul+xml', 'xvm' => 'application/xv+xml', 'xvml' => 'application/xv+xml', 'xwd' => 'image/x-xwindowdump', 'xyz' => 'chemical/x-xyz', 'yaml' => 'text/yaml', 'yang' => 'application/yang', 'yin' => 'application/yin+xml', 'yml' => 'text/yaml', 'zaz' => 'application/vnd.zzazz.deck+xml', 'zip' => 'application/zip', 'zir' => 'application/vnd.zul', 'zirz' => 'application/vnd.zul', 'zmm' => 'application/vnd.handheld-entertainment+xml');
+ /**
+ * Get a singleton instance of the class
+ *
+ * @return self
+ * @codeCoverageIgnore
+ */
+ public static function getInstance()
+ {
+ if (!self::$instance) {
+ self::$instance = new self();
+ }
+ return self::$instance;
+ }
+ /**
+ * Get a mimetype value from a file extension
+ *
+ * @param string $extension File extension
+ *
+ * @return string|null
+ *
+ */
+ public function fromExtension($extension)
+ {
+ $extension = \strtolower($extension);
+ return isset($this->mimetypes[$extension]) ? $this->mimetypes[$extension] : null;
+ }
+ /**
+ * Get a mimetype from a filename
+ *
+ * @param string $filename Filename to generate a mimetype from
+ *
+ * @return string|null
+ */
+ public function fromFilename($filename)
+ {
+ return $this->fromExtension(\pathinfo($filename, \PATHINFO_EXTENSION));
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Pool.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Pool.php
new file mode 100644
index 000000000..05b96d66c
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Pool.php
@@ -0,0 +1,261 @@
+client = $client;
+ $this->iter = $this->coerceIterable($requests);
+ $this->deferred = new \Google\Site_Kit_Dependencies\React\Promise\Deferred();
+ $this->promise = $this->deferred->promise();
+ $this->poolSize = isset($options['pool_size']) ? $options['pool_size'] : 25;
+ $this->eventListeners = $this->prepareListeners($options, ['before', 'complete', 'error', 'end']);
+ }
+ /**
+ * Sends multiple requests in parallel and returns an array of responses
+ * and exceptions that uses the same ordering as the provided requests.
+ *
+ * IMPORTANT: This method keeps every request and response in memory, and
+ * as such, is NOT recommended when sending a large number or an
+ * indeterminate number of requests concurrently.
+ *
+ * @param ClientInterface $client Client used to send the requests
+ * @param array|\Iterator $requests Requests to send in parallel
+ * @param array $options Passes through the options available in
+ * {@see GuzzleHttp\Pool::__construct}
+ *
+ * @return BatchResults Returns a container for the results.
+ * @throws \InvalidArgumentException if the event format is incorrect.
+ */
+ public static function batch(\Google\Site_Kit_Dependencies\GuzzleHttp\ClientInterface $client, $requests, array $options = [])
+ {
+ $hash = new \SplObjectStorage();
+ foreach ($requests as $request) {
+ $hash->attach($request);
+ }
+ // In addition to the normally run events when requests complete, add
+ // and event to continuously track the results of transfers in the hash.
+ (new self($client, $requests, \Google\Site_Kit_Dependencies\GuzzleHttp\Event\RequestEvents::convertEventArray($options, ['end'], ['priority' => \Google\Site_Kit_Dependencies\GuzzleHttp\Event\RequestEvents::LATE, 'fn' => function (\Google\Site_Kit_Dependencies\GuzzleHttp\Event\EndEvent $e) use($hash) {
+ $hash[$e->getRequest()] = $e->getException() ? $e->getException() : $e->getResponse();
+ }])))->wait();
+ return new \Google\Site_Kit_Dependencies\GuzzleHttp\BatchResults($hash);
+ }
+ /**
+ * Creates a Pool and immediately sends the requests.
+ *
+ * @param ClientInterface $client Client used to send the requests
+ * @param array|\Iterator $requests Requests to send in parallel
+ * @param array $options Passes through the options available in
+ * {@see GuzzleHttp\Pool::__construct}
+ */
+ public static function send(\Google\Site_Kit_Dependencies\GuzzleHttp\ClientInterface $client, $requests, array $options = [])
+ {
+ $pool = new self($client, $requests, $options);
+ $pool->wait();
+ }
+ private function getPoolSize()
+ {
+ return \is_callable($this->poolSize) ? \call_user_func($this->poolSize, \count($this->waitQueue)) : $this->poolSize;
+ }
+ /**
+ * Add as many requests as possible up to the current pool limit.
+ */
+ private function addNextRequests()
+ {
+ $limit = \max($this->getPoolSize() - \count($this->waitQueue), 0);
+ while ($limit--) {
+ if (!$this->addNextRequest()) {
+ break;
+ }
+ }
+ }
+ public function wait()
+ {
+ if ($this->isRealized) {
+ return \false;
+ }
+ // Seed the pool with N number of requests.
+ $this->addNextRequests();
+ // Stop if the pool was cancelled while transferring requests.
+ if ($this->isRealized) {
+ return \false;
+ }
+ // Wait on any outstanding FutureResponse objects.
+ while ($response = \array_pop($this->waitQueue)) {
+ try {
+ $response->wait();
+ } catch (\Exception $e) {
+ // Eat exceptions because they should be handled asynchronously
+ }
+ $this->addNextRequests();
+ }
+ // Clean up no longer needed state.
+ $this->isRealized = \true;
+ $this->waitQueue = $this->eventListeners = [];
+ $this->client = $this->iter = null;
+ $this->deferred->resolve(\true);
+ return \true;
+ }
+ /**
+ * {@inheritdoc}
+ *
+ * Attempt to cancel all outstanding requests (requests that are queued for
+ * dereferencing). Returns true if all outstanding requests can be
+ * cancelled.
+ *
+ * @return bool
+ */
+ public function cancel()
+ {
+ if ($this->isRealized) {
+ return \false;
+ }
+ $success = $this->isRealized = \true;
+ foreach ($this->waitQueue as $response) {
+ if (!$response->cancel()) {
+ $success = \false;
+ }
+ }
+ return $success;
+ }
+ /**
+ * Returns a promise that is invoked when the pool completed. There will be
+ * no passed value.
+ *
+ * {@inheritdoc}
+ */
+ public function then(callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null)
+ {
+ return $this->promise->then($onFulfilled, $onRejected, $onProgress);
+ }
+ public function promise()
+ {
+ return $this->promise;
+ }
+ private function coerceIterable($requests)
+ {
+ if ($requests instanceof \Iterator) {
+ return $requests;
+ } elseif (\is_array($requests)) {
+ return new \ArrayIterator($requests);
+ }
+ throw new \InvalidArgumentException('Expected Iterator or array. ' . 'Found ' . \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::describeType($requests));
+ }
+ /**
+ * Adds the next request to pool and tracks what requests need to be
+ * dereferenced when completing the pool.
+ */
+ private function addNextRequest()
+ {
+ add_next:
+ if ($this->isRealized || !$this->iter || !$this->iter->valid()) {
+ return \false;
+ }
+ $request = $this->iter->current();
+ $this->iter->next();
+ if (!$request instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Message\RequestInterface) {
+ throw new \InvalidArgumentException(\sprintf('All requests in the provided iterator must implement ' . 'RequestInterface. Found %s', \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::describeType($request)));
+ }
+ // Be sure to use "lazy" futures, meaning they do not send right away.
+ $request->getConfig()->set('future', 'lazy');
+ $hash = \spl_object_hash($request);
+ $this->attachListeners($request, $this->eventListeners);
+ $request->getEmitter()->on('before', [$this, '_trackRetries'], \Google\Site_Kit_Dependencies\GuzzleHttp\Event\RequestEvents::EARLY);
+ $response = $this->client->send($request);
+ $this->waitQueue[$hash] = $response;
+ $promise = $response->promise();
+ // Don't recursively call itself for completed or rejected responses.
+ if ($promise instanceof \Google\Site_Kit_Dependencies\React\Promise\FulfilledPromise || $promise instanceof \Google\Site_Kit_Dependencies\React\Promise\RejectedPromise) {
+ try {
+ $this->finishResponse($request, $response->wait(), $hash);
+ } catch (\Exception $e) {
+ $this->finishResponse($request, $e, $hash);
+ }
+ goto add_next;
+ }
+ // Use this function for both resolution and rejection.
+ $thenFn = function ($value) use($request, $hash) {
+ $this->finishResponse($request, $value, $hash);
+ if (!$request->getConfig()->get('_pool_retries')) {
+ $this->addNextRequests();
+ }
+ };
+ $promise->then($thenFn, $thenFn);
+ return \true;
+ }
+ public function _trackRetries(\Google\Site_Kit_Dependencies\GuzzleHttp\Event\BeforeEvent $e)
+ {
+ $e->getRequest()->getConfig()->set('_pool_retries', $e->getRetryCount());
+ }
+ private function finishResponse($request, $value, $hash)
+ {
+ unset($this->waitQueue[$hash]);
+ $result = $value instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Message\ResponseInterface ? ['request' => $request, 'response' => $value, 'error' => null] : ['request' => $request, 'response' => null, 'error' => $value];
+ $this->deferred->notify($result);
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Post/MultipartBody.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Post/MultipartBody.php
new file mode 100644
index 000000000..f7ea72c6e
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Post/MultipartBody.php
@@ -0,0 +1,82 @@
+boundary = $boundary ?: \uniqid();
+ $this->stream = $this->createStream($fields, $files);
+ }
+ /**
+ * Get the boundary
+ *
+ * @return string
+ */
+ public function getBoundary()
+ {
+ return $this->boundary;
+ }
+ public function isWritable()
+ {
+ return \false;
+ }
+ /**
+ * Get the string needed to transfer a POST field
+ */
+ private function getFieldString($name, $value)
+ {
+ return \sprintf("--%s\r\nContent-Disposition: form-data; name=\"%s\"\r\n\r\n%s\r\n", $this->boundary, $name, $value);
+ }
+ /**
+ * Get the headers needed before transferring the content of a POST file
+ */
+ private function getFileHeaders(\Google\Site_Kit_Dependencies\GuzzleHttp\Post\PostFileInterface $file)
+ {
+ $headers = '';
+ foreach ($file->getHeaders() as $key => $value) {
+ $headers .= "{$key}: {$value}\r\n";
+ }
+ return "--{$this->boundary}\r\n" . \trim($headers) . "\r\n\r\n";
+ }
+ /**
+ * Create the aggregate stream that will be used to upload the POST data
+ */
+ protected function createStream(array $fields, array $files)
+ {
+ $stream = new \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\AppendStream();
+ foreach ($fields as $name => $fieldValues) {
+ foreach ((array) $fieldValues as $value) {
+ $stream->addStream(\Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Stream::factory($this->getFieldString($name, $value)));
+ }
+ }
+ foreach ($files as $file) {
+ if (!$file instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Post\PostFileInterface) {
+ throw new \InvalidArgumentException('All POST fields must ' . 'implement PostFieldInterface');
+ }
+ $stream->addStream(\Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Stream::factory($this->getFileHeaders($file)));
+ $stream->addStream($file->getContent());
+ $stream->addStream(\Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Stream::factory("\r\n"));
+ }
+ // Add the trailing boundary with CRLF
+ $stream->addStream(\Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Stream::factory("--{$this->boundary}--\r\n"));
+ return $stream;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Post/PostBody.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Post/PostBody.php
new file mode 100644
index 000000000..fed5256e7
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Post/PostBody.php
@@ -0,0 +1,235 @@
+files || $this->forceMultipart) {
+ $request->setHeader('Content-Type', 'multipart/form-data; boundary=' . $this->getBody()->getBoundary());
+ } elseif ($this->fields && !$request->hasHeader('Content-Type')) {
+ $request->setHeader('Content-Type', 'application/x-www-form-urlencoded');
+ }
+ if ($size = $this->getSize()) {
+ $request->setHeader('Content-Length', $size);
+ }
+ }
+ public function forceMultipartUpload($force)
+ {
+ $this->forceMultipart = $force;
+ }
+ public function setAggregator(callable $aggregator)
+ {
+ $this->aggregator = $aggregator;
+ }
+ public function setField($name, $value)
+ {
+ $this->fields[$name] = $value;
+ $this->mutate();
+ }
+ public function replaceFields(array $fields)
+ {
+ $this->fields = $fields;
+ $this->mutate();
+ }
+ public function getField($name)
+ {
+ return isset($this->fields[$name]) ? $this->fields[$name] : null;
+ }
+ public function removeField($name)
+ {
+ unset($this->fields[$name]);
+ $this->mutate();
+ }
+ public function getFields($asString = \false)
+ {
+ if (!$asString) {
+ return $this->fields;
+ }
+ $query = new \Google\Site_Kit_Dependencies\GuzzleHttp\Query($this->fields);
+ $query->setEncodingType(\Google\Site_Kit_Dependencies\GuzzleHttp\Query::RFC1738);
+ $query->setAggregator($this->getAggregator());
+ return (string) $query;
+ }
+ public function hasField($name)
+ {
+ return isset($this->fields[$name]);
+ }
+ public function getFile($name)
+ {
+ foreach ($this->files as $file) {
+ if ($file->getName() == $name) {
+ return $file;
+ }
+ }
+ return null;
+ }
+ public function getFiles()
+ {
+ return $this->files;
+ }
+ public function addFile(\Google\Site_Kit_Dependencies\GuzzleHttp\Post\PostFileInterface $file)
+ {
+ $this->files[] = $file;
+ $this->mutate();
+ }
+ public function clearFiles()
+ {
+ $this->files = [];
+ $this->mutate();
+ }
+ /**
+ * Returns the numbers of fields + files
+ *
+ * @return int
+ */
+ public function count()
+ {
+ return \count($this->files) + \count($this->fields);
+ }
+ public function __toString()
+ {
+ return (string) $this->getBody();
+ }
+ public function getContents($maxLength = -1)
+ {
+ return $this->getBody()->getContents();
+ }
+ public function close()
+ {
+ $this->detach();
+ }
+ public function detach()
+ {
+ $this->detached = \true;
+ $this->fields = $this->files = [];
+ if ($this->body) {
+ $this->body->close();
+ $this->body = null;
+ }
+ }
+ public function attach($stream)
+ {
+ throw new \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Exception\CannotAttachException();
+ }
+ public function eof()
+ {
+ return $this->getBody()->eof();
+ }
+ public function tell()
+ {
+ return $this->body ? $this->body->tell() : 0;
+ }
+ public function isSeekable()
+ {
+ return \true;
+ }
+ public function isReadable()
+ {
+ return \true;
+ }
+ public function isWritable()
+ {
+ return \false;
+ }
+ public function getSize()
+ {
+ return $this->getBody()->getSize();
+ }
+ public function seek($offset, $whence = \SEEK_SET)
+ {
+ return $this->getBody()->seek($offset, $whence);
+ }
+ public function read($length)
+ {
+ return $this->getBody()->read($length);
+ }
+ public function write($string)
+ {
+ return \false;
+ }
+ public function getMetadata($key = null)
+ {
+ return $key ? null : [];
+ }
+ /**
+ * Return a stream object that is built from the POST fields and files.
+ *
+ * If one has already been created, the previously created stream will be
+ * returned.
+ */
+ private function getBody()
+ {
+ if ($this->body) {
+ return $this->body;
+ } elseif ($this->files || $this->forceMultipart) {
+ return $this->body = $this->createMultipart();
+ } elseif ($this->fields) {
+ return $this->body = $this->createUrlEncoded();
+ } else {
+ return $this->body = \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Stream::factory();
+ }
+ }
+ /**
+ * Get the aggregator used to join multi-valued field parameters
+ *
+ * @return callable
+ */
+ protected final function getAggregator()
+ {
+ if (!$this->aggregator) {
+ $this->aggregator = \Google\Site_Kit_Dependencies\GuzzleHttp\Query::phpAggregator();
+ }
+ return $this->aggregator;
+ }
+ /**
+ * Creates a multipart/form-data body stream
+ *
+ * @return MultipartBody
+ */
+ private function createMultipart()
+ {
+ // Flatten the nested query string values using the correct aggregator
+ return new \Google\Site_Kit_Dependencies\GuzzleHttp\Post\MultipartBody(\call_user_func($this->getAggregator(), $this->fields), $this->files);
+ }
+ /**
+ * Creates an application/x-www-form-urlencoded stream body
+ *
+ * @return StreamInterface
+ */
+ private function createUrlEncoded()
+ {
+ return \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Stream::factory($this->getFields(\true));
+ }
+ /**
+ * Get rid of any cached data
+ */
+ private function mutate()
+ {
+ $this->body = null;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Post/PostBodyInterface.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Post/PostBodyInterface.php
new file mode 100644
index 000000000..5fbb8a3a9
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Post/PostBodyInterface.php
@@ -0,0 +1,98 @@
+headers = $headers;
+ $this->name = $name;
+ $this->prepareContent($content);
+ $this->prepareFilename($filename);
+ $this->prepareDefaultHeaders();
+ }
+ public function getName()
+ {
+ return $this->name;
+ }
+ public function getFilename()
+ {
+ return $this->filename;
+ }
+ public function getContent()
+ {
+ return $this->content;
+ }
+ public function getHeaders()
+ {
+ return $this->headers;
+ }
+ /**
+ * Prepares the contents of a POST file.
+ *
+ * @param mixed $content Content of the POST file
+ */
+ private function prepareContent($content)
+ {
+ $this->content = $content;
+ if (!$this->content instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\StreamInterface) {
+ $this->content = \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Stream::factory($this->content);
+ } elseif ($this->content instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Post\MultipartBody) {
+ if (!$this->hasHeader('Content-Disposition')) {
+ $disposition = 'form-data; name="' . $this->name . '"';
+ $this->headers['Content-Disposition'] = $disposition;
+ }
+ if (!$this->hasHeader('Content-Type')) {
+ $this->headers['Content-Type'] = \sprintf("multipart/form-data; boundary=%s", $this->content->getBoundary());
+ }
+ }
+ }
+ /**
+ * Applies a file name to the POST file based on various checks.
+ *
+ * @param string|null $filename Filename to apply (or null to guess)
+ */
+ private function prepareFilename($filename)
+ {
+ $this->filename = $filename;
+ if (!$this->filename) {
+ $this->filename = $this->content->getMetadata('uri');
+ }
+ if (!$this->filename || \substr($this->filename, 0, 6) === 'php://') {
+ $this->filename = $this->name;
+ }
+ }
+ /**
+ * Applies default Content-Disposition and Content-Type headers if needed.
+ */
+ private function prepareDefaultHeaders()
+ {
+ // Set a default content-disposition header if one was no provided
+ if (!$this->hasHeader('Content-Disposition')) {
+ $this->headers['Content-Disposition'] = \sprintf('form-data; name="%s"; filename="%s"', $this->name, \basename($this->filename));
+ }
+ // Set a default Content-Type if one was not supplied
+ if (!$this->hasHeader('Content-Type')) {
+ $this->headers['Content-Type'] = \Google\Site_Kit_Dependencies\GuzzleHttp\Mimetypes::getInstance()->fromFilename($this->filename) ?: 'text/plain';
+ }
+ }
+ /**
+ * Check if a specific header exists on the POST file by name.
+ *
+ * @param string $name Case-insensitive header to check
+ *
+ * @return bool
+ */
+ private function hasHeader($name)
+ {
+ return isset(\array_change_key_case($this->headers)[\strtolower($name)]);
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Post/PostFileInterface.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Post/PostFileInterface.php
new file mode 100644
index 000000000..8212eda80
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Post/PostFileInterface.php
@@ -0,0 +1,38 @@
+setEncodingType($urlEncoding);
+ }
+ $qp->parseInto($q, $query, $urlEncoding);
+ return $q;
+ }
+ /**
+ * Convert the query string parameters to a query string string
+ *
+ * @return string
+ */
+ public function __toString()
+ {
+ if (!$this->data) {
+ return '';
+ }
+ // The default aggregator is statically cached
+ static $defaultAggregator;
+ if (!$this->aggregator) {
+ if (!$defaultAggregator) {
+ $defaultAggregator = self::phpAggregator();
+ }
+ $this->aggregator = $defaultAggregator;
+ }
+ $result = '';
+ $aggregator = $this->aggregator;
+ $encoder = $this->encoding;
+ foreach ($aggregator($this->data) as $key => $values) {
+ foreach ($values as $value) {
+ if ($result) {
+ $result .= '&';
+ }
+ $result .= $encoder($key);
+ if ($value !== null) {
+ $result .= '=' . $encoder($value);
+ }
+ }
+ }
+ return $result;
+ }
+ /**
+ * Controls how multi-valued query string parameters are aggregated into a
+ * string.
+ *
+ * $query->setAggregator($query::duplicateAggregator());
+ *
+ * @param callable $aggregator Callable used to convert a deeply nested
+ * array of query string variables into a flattened array of key value
+ * pairs. The callable accepts an array of query data and returns a
+ * flattened array of key value pairs where each value is an array of
+ * strings.
+ */
+ public function setAggregator(callable $aggregator)
+ {
+ $this->aggregator = $aggregator;
+ }
+ /**
+ * Specify how values are URL encoded
+ *
+ * @param string|bool $type One of 'RFC1738', 'RFC3986', or false to disable encoding
+ *
+ * @throws \InvalidArgumentException
+ */
+ public function setEncodingType($type)
+ {
+ switch ($type) {
+ case self::RFC3986:
+ $this->encoding = 'rawurlencode';
+ break;
+ case self::RFC1738:
+ $this->encoding = 'urlencode';
+ break;
+ case \false:
+ $this->encoding = function ($v) {
+ return $v;
+ };
+ break;
+ default:
+ throw new \InvalidArgumentException('Invalid URL encoding type');
+ }
+ }
+ /**
+ * Query string aggregator that does not aggregate nested query string
+ * values and allows duplicates in the resulting array.
+ *
+ * Example: http://test.com?q=1&q=2
+ *
+ * @return callable
+ */
+ public static function duplicateAggregator()
+ {
+ return function (array $data) {
+ return self::walkQuery($data, '', function ($key, $prefix) {
+ return \is_int($key) ? $prefix : "{$prefix}[{$key}]";
+ });
+ };
+ }
+ /**
+ * Aggregates nested query string variables using the same technique as
+ * ``http_build_query()``.
+ *
+ * @param bool $numericIndices Pass false to not include numeric indices
+ * when multi-values query string parameters are present.
+ *
+ * @return callable
+ */
+ public static function phpAggregator($numericIndices = \true)
+ {
+ return function (array $data) use($numericIndices) {
+ return self::walkQuery($data, '', function ($key, $prefix) use($numericIndices) {
+ return !$numericIndices && \is_int($key) ? "{$prefix}[]" : "{$prefix}[{$key}]";
+ });
+ };
+ }
+ /**
+ * Easily create query aggregation functions by providing a key prefix
+ * function to this query string array walker.
+ *
+ * @param array $query Query string to walk
+ * @param string $keyPrefix Key prefix (start with '')
+ * @param callable $prefixer Function used to create a key prefix
+ *
+ * @return array
+ */
+ public static function walkQuery(array $query, $keyPrefix, callable $prefixer)
+ {
+ $result = [];
+ foreach ($query as $key => $value) {
+ if ($keyPrefix) {
+ $key = $prefixer($key, $keyPrefix);
+ }
+ if (\is_array($value)) {
+ $result += self::walkQuery($value, $key, $prefixer);
+ } elseif (isset($result[$key])) {
+ $result[$key][] = $value;
+ } else {
+ $result[$key] = array($value);
+ }
+ }
+ return $result;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/QueryParser.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/QueryParser.php
new file mode 100644
index 000000000..eb805b273
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/QueryParser.php
@@ -0,0 +1,151 @@
+duplicates = \false;
+ $this->numericIndices = \true;
+ $decoder = self::getDecoder($urlEncoding);
+ foreach (\explode('&', $str) as $kvp) {
+ $parts = \explode('=', $kvp, 2);
+ $key = $decoder($parts[0]);
+ $value = isset($parts[1]) ? $decoder($parts[1]) : null;
+ // Special handling needs to be taken for PHP nested array syntax
+ if (\strpos($key, '[') !== \false) {
+ $this->parsePhpValue($key, $value, $result);
+ continue;
+ }
+ if (!isset($result[$key])) {
+ $result[$key] = $value;
+ } else {
+ $this->duplicates = \true;
+ if (!\is_array($result[$key])) {
+ $result[$key] = [$result[$key]];
+ }
+ $result[$key][] = $value;
+ }
+ }
+ $query->replace($result);
+ if (!$this->numericIndices) {
+ $query->setAggregator(\Google\Site_Kit_Dependencies\GuzzleHttp\Query::phpAggregator(\false));
+ } elseif ($this->duplicates) {
+ $query->setAggregator(\Google\Site_Kit_Dependencies\GuzzleHttp\Query::duplicateAggregator());
+ }
+ }
+ /**
+ * Returns a callable that is used to URL decode query keys and values.
+ *
+ * @param string|bool $type One of true, false, RFC3986, and RFC1738
+ *
+ * @return callable|string
+ */
+ private static function getDecoder($type)
+ {
+ if ($type === \true) {
+ return function ($value) {
+ return \rawurldecode(\str_replace('+', ' ', $value));
+ };
+ } elseif ($type == \Google\Site_Kit_Dependencies\GuzzleHttp\Query::RFC3986) {
+ return 'rawurldecode';
+ } elseif ($type == \Google\Site_Kit_Dependencies\GuzzleHttp\Query::RFC1738) {
+ return 'urldecode';
+ } else {
+ return function ($str) {
+ return $str;
+ };
+ }
+ }
+ /**
+ * Parses a PHP style key value pair.
+ *
+ * @param string $key Key to parse (e.g., "foo[a][b]")
+ * @param string|null $value Value to set
+ * @param array $result Result to modify by reference
+ */
+ private function parsePhpValue($key, $value, array &$result)
+ {
+ $node =& $result;
+ $keyBuffer = '';
+ for ($i = 0, $t = \strlen($key); $i < $t; $i++) {
+ switch ($key[$i]) {
+ case '[':
+ if ($keyBuffer) {
+ $this->prepareNode($node, $keyBuffer);
+ $node =& $node[$keyBuffer];
+ $keyBuffer = '';
+ }
+ break;
+ case ']':
+ $k = $this->cleanKey($node, $keyBuffer);
+ $this->prepareNode($node, $k);
+ $node =& $node[$k];
+ $keyBuffer = '';
+ break;
+ default:
+ $keyBuffer .= $key[$i];
+ break;
+ }
+ }
+ if (isset($node)) {
+ $this->duplicates = \true;
+ $node[] = $value;
+ } else {
+ $node = $value;
+ }
+ }
+ /**
+ * Prepares a value in the array at the given key.
+ *
+ * If the key already exists, the key value is converted into an array.
+ *
+ * @param array $node Result node to modify
+ * @param string $key Key to add or modify in the node
+ */
+ private function prepareNode(&$node, $key)
+ {
+ if (!isset($node[$key])) {
+ $node[$key] = null;
+ } elseif (!\is_array($node[$key])) {
+ $node[$key] = [$node[$key]];
+ }
+ }
+ /**
+ * Returns the appropriate key based on the node and key.
+ */
+ private function cleanKey($node, $key)
+ {
+ if ($key === '') {
+ $key = $node ? (string) \count($node) : 0;
+ // Found a [] key, so track this to ensure that we disable numeric
+ // indexing of keys in the resolved query aggregator.
+ $this->numericIndices = \false;
+ }
+ return $key;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/RequestFsm.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/RequestFsm.php
new file mode 100644
index 000000000..455a2526d
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/RequestFsm.php
@@ -0,0 +1,129 @@
+mf = $messageFactory;
+ $this->maxTransitions = $maxTransitions;
+ $this->handler = $handler;
+ }
+ /**
+ * Runs the state machine until a terminal state is entered or the
+ * optionally supplied $finalState is entered.
+ *
+ * @param Transaction $trans Transaction being transitioned.
+ *
+ * @throws \Exception if a terminal state throws an exception.
+ */
+ public function __invoke(\Google\Site_Kit_Dependencies\GuzzleHttp\Transaction $trans)
+ {
+ $trans->_transitionCount = 0;
+ if (!$trans->state) {
+ $trans->state = 'before';
+ }
+ transition:
+ if (++$trans->_transitionCount > $this->maxTransitions) {
+ throw new \Google\Site_Kit_Dependencies\GuzzleHttp\Exception\StateException("Too many state transitions were " . "encountered ({$trans->_transitionCount}). This likely " . "means that a combination of event listeners are in an " . "infinite loop.");
+ }
+ switch ($trans->state) {
+ case 'before':
+ goto before;
+ case 'complete':
+ goto complete;
+ case 'error':
+ goto error;
+ case 'retry':
+ goto retry;
+ case 'send':
+ goto send;
+ case 'end':
+ goto end;
+ default:
+ throw new \Google\Site_Kit_Dependencies\GuzzleHttp\Exception\StateException("Invalid state: {$trans->state}");
+ }
+ before:
+ try {
+ $trans->request->getEmitter()->emit('before', new \Google\Site_Kit_Dependencies\GuzzleHttp\Event\BeforeEvent($trans));
+ $trans->state = 'send';
+ if ((bool) $trans->response) {
+ $trans->state = 'complete';
+ }
+ } catch (\Exception $e) {
+ $trans->state = 'error';
+ $trans->exception = $e;
+ }
+ goto transition;
+ complete:
+ try {
+ if ($trans->response instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Future\FutureInterface) {
+ // Futures will have their own end events emitted when
+ // dereferenced.
+ return;
+ }
+ $trans->state = 'end';
+ $trans->response->setEffectiveUrl($trans->request->getUrl());
+ $trans->request->getEmitter()->emit('complete', new \Google\Site_Kit_Dependencies\GuzzleHttp\Event\CompleteEvent($trans));
+ } catch (\Exception $e) {
+ $trans->state = 'error';
+ $trans->exception = $e;
+ }
+ goto transition;
+ error:
+ try {
+ // Convert non-request exception to a wrapped exception
+ $trans->exception = \Google\Site_Kit_Dependencies\GuzzleHttp\Exception\RequestException::wrapException($trans->request, $trans->exception);
+ $trans->state = 'end';
+ $trans->request->getEmitter()->emit('error', new \Google\Site_Kit_Dependencies\GuzzleHttp\Event\ErrorEvent($trans));
+ // An intercepted request (not retried) transitions to complete
+ if (!$trans->exception && $trans->state !== 'retry') {
+ $trans->state = 'complete';
+ }
+ } catch (\Exception $e) {
+ $trans->state = 'end';
+ $trans->exception = $e;
+ }
+ goto transition;
+ retry:
+ $trans->retries++;
+ $trans->response = null;
+ $trans->exception = null;
+ $trans->state = 'before';
+ goto transition;
+ send:
+ $fn = $this->handler;
+ $trans->response = \Google\Site_Kit_Dependencies\GuzzleHttp\Message\FutureResponse::proxy($fn(\Google\Site_Kit_Dependencies\GuzzleHttp\RingBridge::prepareRingRequest($trans)), function ($value) use($trans) {
+ \Google\Site_Kit_Dependencies\GuzzleHttp\RingBridge::completeRingResponse($trans, $value, $this->mf, $this);
+ $this($trans);
+ return $trans->response;
+ });
+ return;
+ end:
+ $trans->request->getEmitter()->emit('end', new \Google\Site_Kit_Dependencies\GuzzleHttp\Event\EndEvent($trans));
+ // Throw exceptions in the terminal event if the exception
+ // was not handled by an "end" event listener.
+ if ($trans->exception) {
+ if (!$trans->exception instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Exception\RequestException) {
+ $trans->exception = \Google\Site_Kit_Dependencies\GuzzleHttp\Exception\RequestException::wrapException($trans->request, $trans->exception);
+ }
+ throw $trans->exception;
+ }
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/RingBridge.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/RingBridge.php
new file mode 100644
index 000000000..4fc7a13e0
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/RingBridge.php
@@ -0,0 +1,128 @@
+getConfig()->toArray();
+ $url = $request->getUrl();
+ // No need to calculate the query string twice (in URL and query).
+ $qs = ($pos = \strpos($url, '?')) ? \substr($url, $pos + 1) : null;
+ return ['scheme' => $request->getScheme(), 'http_method' => $request->getMethod(), 'url' => $url, 'uri' => $request->getPath(), 'headers' => $request->getHeaders(), 'body' => $request->getBody(), 'version' => $request->getProtocolVersion(), 'client' => $options, 'query_string' => $qs, 'future' => isset($options['future']) ? $options['future'] : \false];
+ }
+ /**
+ * Creates a Ring request from a request object AND prepares the callbacks.
+ *
+ * @param Transaction $trans Transaction to update.
+ *
+ * @return array Converted Guzzle Ring request.
+ */
+ public static function prepareRingRequest(\Google\Site_Kit_Dependencies\GuzzleHttp\Transaction $trans)
+ {
+ // Clear out the transaction state when initiating.
+ $trans->exception = null;
+ $request = self::createRingRequest($trans->request);
+ // Emit progress events if any progress listeners are registered.
+ if ($trans->request->getEmitter()->hasListeners('progress')) {
+ $emitter = $trans->request->getEmitter();
+ $request['client']['progress'] = function ($a, $b, $c, $d) use($trans, $emitter) {
+ $emitter->emit('progress', new \Google\Site_Kit_Dependencies\GuzzleHttp\Event\ProgressEvent($trans, $a, $b, $c, $d));
+ };
+ }
+ return $request;
+ }
+ /**
+ * Handles the process of processing a response received from a ring
+ * handler. The created response is added to the transaction, and the
+ * transaction stat is set appropriately.
+ *
+ * @param Transaction $trans Owns request and response.
+ * @param array $response Ring response array
+ * @param MessageFactoryInterface $messageFactory Creates response objects.
+ */
+ public static function completeRingResponse(\Google\Site_Kit_Dependencies\GuzzleHttp\Transaction $trans, array $response, \Google\Site_Kit_Dependencies\GuzzleHttp\Message\MessageFactoryInterface $messageFactory)
+ {
+ $trans->state = 'complete';
+ $trans->transferInfo = isset($response['transfer_stats']) ? $response['transfer_stats'] : [];
+ if (!empty($response['status'])) {
+ $options = [];
+ if (isset($response['version'])) {
+ $options['protocol_version'] = $response['version'];
+ }
+ if (isset($response['reason'])) {
+ $options['reason_phrase'] = $response['reason'];
+ }
+ $trans->response = $messageFactory->createResponse($response['status'], isset($response['headers']) ? $response['headers'] : [], isset($response['body']) ? $response['body'] : null, $options);
+ if (isset($response['effective_url'])) {
+ $trans->response->setEffectiveUrl($response['effective_url']);
+ }
+ } elseif (empty($response['error'])) {
+ // When nothing was returned, then we need to add an error.
+ $response['error'] = self::getNoRingResponseException($trans->request);
+ }
+ if (isset($response['error'])) {
+ $trans->state = 'error';
+ $trans->exception = $response['error'];
+ }
+ }
+ /**
+ * Creates a Guzzle request object using a ring request array.
+ *
+ * @param array $request Ring request
+ *
+ * @return Request
+ * @throws \InvalidArgumentException for incomplete requests.
+ */
+ public static function fromRingRequest(array $request)
+ {
+ $options = [];
+ if (isset($request['version'])) {
+ $options['protocol_version'] = $request['version'];
+ }
+ if (!isset($request['http_method'])) {
+ throw new \InvalidArgumentException('No http_method');
+ }
+ return new \Google\Site_Kit_Dependencies\GuzzleHttp\Message\Request($request['http_method'], \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::url($request), isset($request['headers']) ? $request['headers'] : [], isset($request['body']) ? \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Stream::factory($request['body']) : null, $options);
+ }
+ /**
+ * Get an exception that can be used when a RingPHP handler does not
+ * populate a response.
+ *
+ * @param RequestInterface $request
+ *
+ * @return RequestException
+ */
+ public static function getNoRingResponseException(\Google\Site_Kit_Dependencies\GuzzleHttp\Message\RequestInterface $request)
+ {
+ $message = <<cookieJar = $cookieJar ?: new \Google\Site_Kit_Dependencies\GuzzleHttp\Cookie\CookieJar();
+ }
+ public function getEvents()
+ {
+ // Fire the cookie plugin complete event before redirecting
+ return ['before' => ['onBefore'], 'complete' => ['onComplete', \Google\Site_Kit_Dependencies\GuzzleHttp\Event\RequestEvents::REDIRECT_RESPONSE + 10]];
+ }
+ /**
+ * Get the cookie cookieJar
+ *
+ * @return CookieJarInterface
+ */
+ public function getCookieJar()
+ {
+ return $this->cookieJar;
+ }
+ public function onBefore(\Google\Site_Kit_Dependencies\GuzzleHttp\Event\BeforeEvent $event)
+ {
+ $this->cookieJar->addCookieHeader($event->getRequest());
+ }
+ public function onComplete(\Google\Site_Kit_Dependencies\GuzzleHttp\Event\CompleteEvent $event)
+ {
+ $this->cookieJar->extractCookies($event->getRequest(), $event->getResponse());
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Subscriber/History.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Subscriber/History.php
new file mode 100644
index 000000000..1363fb6d0
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Subscriber/History.php
@@ -0,0 +1,146 @@
+limit = $limit;
+ }
+ public function getEvents()
+ {
+ return ['complete' => ['onComplete', \Google\Site_Kit_Dependencies\GuzzleHttp\Event\RequestEvents::EARLY], 'error' => ['onError', \Google\Site_Kit_Dependencies\GuzzleHttp\Event\RequestEvents::EARLY]];
+ }
+ /**
+ * Convert to a string that contains all request and response headers
+ *
+ * @return string
+ */
+ public function __toString()
+ {
+ $lines = array();
+ foreach ($this->transactions as $entry) {
+ $response = isset($entry['response']) ? $entry['response'] : '';
+ $lines[] = '> ' . \trim($entry['sent_request']) . "\n\n< " . \trim($response) . "\n";
+ }
+ return \implode("\n", $lines);
+ }
+ public function onComplete(\Google\Site_Kit_Dependencies\GuzzleHttp\Event\CompleteEvent $event)
+ {
+ $this->add($event->getRequest(), $event->getResponse());
+ }
+ public function onError(\Google\Site_Kit_Dependencies\GuzzleHttp\Event\ErrorEvent $event)
+ {
+ // Only track when no response is present, meaning this didn't ever
+ // emit a complete event
+ if (!$event->getResponse()) {
+ $this->add($event->getRequest());
+ }
+ }
+ /**
+ * Returns an Iterator that yields associative array values where each
+ * associative array contains the following key value pairs:
+ *
+ * - request: Representing the actual request that was received.
+ * - sent_request: A clone of the request that will not be mutated.
+ * - response: The response that was received (if available).
+ *
+ * @return \Iterator
+ */
+ public function getIterator()
+ {
+ return new \ArrayIterator($this->transactions);
+ }
+ /**
+ * Get all of the requests sent through the plugin.
+ *
+ * Requests can be modified after they are logged by the history
+ * subscriber. By default this method will return the actual request
+ * instances that were received. Pass true to this method if you wish to
+ * get copies of the requests that represent the request state when it was
+ * initially logged by the history subscriber.
+ *
+ * @param bool $asSent Set to true to get clones of the requests that have
+ * not been mutated since the request was received by
+ * the history subscriber.
+ *
+ * @return RequestInterface[]
+ */
+ public function getRequests($asSent = \false)
+ {
+ return \array_map(function ($t) use($asSent) {
+ return $asSent ? $t['sent_request'] : $t['request'];
+ }, $this->transactions);
+ }
+ /**
+ * Get the number of requests in the history
+ *
+ * @return int
+ */
+ public function count()
+ {
+ return \count($this->transactions);
+ }
+ /**
+ * Get the last request sent.
+ *
+ * Requests can be modified after they are logged by the history
+ * subscriber. By default this method will return the actual request
+ * instance that was received. Pass true to this method if you wish to get
+ * a copy of the request that represents the request state when it was
+ * initially logged by the history subscriber.
+ *
+ * @param bool $asSent Set to true to get a clone of the last request that
+ * has not been mutated since the request was received
+ * by the history subscriber.
+ *
+ * @return RequestInterface
+ */
+ public function getLastRequest($asSent = \false)
+ {
+ return $asSent ? \end($this->transactions)['sent_request'] : \end($this->transactions)['request'];
+ }
+ /**
+ * Get the last response in the history
+ *
+ * @return ResponseInterface|null
+ */
+ public function getLastResponse()
+ {
+ return \end($this->transactions)['response'];
+ }
+ /**
+ * Clears the history
+ */
+ public function clear()
+ {
+ $this->transactions = array();
+ }
+ /**
+ * Add a request to the history
+ *
+ * @param RequestInterface $request Request to add
+ * @param ResponseInterface $response Response of the request
+ */
+ private function add(\Google\Site_Kit_Dependencies\GuzzleHttp\Message\RequestInterface $request, \Google\Site_Kit_Dependencies\GuzzleHttp\Message\ResponseInterface $response = null)
+ {
+ $this->transactions[] = ['request' => $request, 'sent_request' => clone $request, 'response' => $response];
+ if (\count($this->transactions) > $this->limit) {
+ \array_shift($this->transactions);
+ }
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Subscriber/HttpError.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Subscriber/HttpError.php
new file mode 100644
index 000000000..3f6521de9
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Subscriber/HttpError.php
@@ -0,0 +1,32 @@
+ ['onComplete', \Google\Site_Kit_Dependencies\GuzzleHttp\Event\RequestEvents::VERIFY_RESPONSE]];
+ }
+ /**
+ * Throw a RequestException on an HTTP protocol error
+ *
+ * @param CompleteEvent $event Emitted event
+ * @throws RequestException
+ */
+ public function onComplete(\Google\Site_Kit_Dependencies\GuzzleHttp\Event\CompleteEvent $event)
+ {
+ $code = (string) $event->getResponse()->getStatusCode();
+ // Throw an exception for an unsuccessful response
+ if ($code[0] >= 4) {
+ throw \Google\Site_Kit_Dependencies\GuzzleHttp\Exception\RequestException::create($event->getRequest(), $event->getResponse());
+ }
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Subscriber/Mock.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Subscriber/Mock.php
new file mode 100644
index 000000000..2898def65
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Subscriber/Mock.php
@@ -0,0 +1,126 @@
+factory = new \Google\Site_Kit_Dependencies\GuzzleHttp\Message\MessageFactory();
+ $this->readBodies = $readBodies;
+ $this->addMultiple($items);
+ }
+ public function getEvents()
+ {
+ // Fire the event last, after signing
+ return ['before' => ['onBefore', \Google\Site_Kit_Dependencies\GuzzleHttp\Event\RequestEvents::SIGN_REQUEST - 10]];
+ }
+ /**
+ * @throws \OutOfBoundsException|\Exception
+ */
+ public function onBefore(\Google\Site_Kit_Dependencies\GuzzleHttp\Event\BeforeEvent $event)
+ {
+ if (!($item = \array_shift($this->queue))) {
+ throw new \OutOfBoundsException('Mock queue is empty');
+ } elseif ($item instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Exception\RequestException) {
+ throw $item;
+ }
+ // Emulate reading a response body
+ $request = $event->getRequest();
+ if ($this->readBodies && $request->getBody()) {
+ while (!$request->getBody()->eof()) {
+ $request->getBody()->read(8096);
+ }
+ }
+ $saveTo = $event->getRequest()->getConfig()->get('save_to');
+ if (null !== $saveTo) {
+ $body = $item->getBody();
+ if (\is_resource($saveTo)) {
+ \fwrite($saveTo, $body);
+ } elseif (\is_string($saveTo)) {
+ \file_put_contents($saveTo, $body);
+ } elseif ($saveTo instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\StreamInterface) {
+ $saveTo->write($body);
+ }
+ }
+ $event->intercept($item);
+ }
+ public function count()
+ {
+ return \count($this->queue);
+ }
+ /**
+ * Add a response to the end of the queue
+ *
+ * @param string|ResponseInterface $response Response or path to response file
+ *
+ * @return self
+ * @throws \InvalidArgumentException if a string or Response is not passed
+ */
+ public function addResponse($response)
+ {
+ if (\is_string($response)) {
+ $response = \file_exists($response) ? $this->factory->fromMessage(\file_get_contents($response)) : $this->factory->fromMessage($response);
+ } elseif (!$response instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Message\ResponseInterface) {
+ throw new \InvalidArgumentException('Response must a message ' . 'string, response object, or path to a file');
+ }
+ $this->queue[] = $response;
+ return $this;
+ }
+ /**
+ * Add an exception to the end of the queue
+ *
+ * @param RequestException $e Exception to throw when the request is executed
+ *
+ * @return self
+ */
+ public function addException(\Google\Site_Kit_Dependencies\GuzzleHttp\Exception\RequestException $e)
+ {
+ $this->queue[] = $e;
+ return $this;
+ }
+ /**
+ * Add multiple items to the queue
+ *
+ * @param array $items Items to add
+ */
+ public function addMultiple(array $items)
+ {
+ foreach ($items as $item) {
+ if ($item instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Exception\RequestException) {
+ $this->addException($item);
+ } else {
+ $this->addResponse($item);
+ }
+ }
+ }
+ /**
+ * Clear the queue
+ */
+ public function clearQueue()
+ {
+ $this->queue = [];
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Subscriber/Prepare.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Subscriber/Prepare.php
new file mode 100644
index 000000000..89bbcdeb7
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Subscriber/Prepare.php
@@ -0,0 +1,108 @@
+ ['onBefore', \Google\Site_Kit_Dependencies\GuzzleHttp\Event\RequestEvents::PREPARE_REQUEST]];
+ }
+ public function onBefore(\Google\Site_Kit_Dependencies\GuzzleHttp\Event\BeforeEvent $event)
+ {
+ $request = $event->getRequest();
+ // Set the appropriate Content-Type for a request if one is not set and
+ // there are form fields
+ if (!($body = $request->getBody())) {
+ return;
+ }
+ $this->addContentLength($request, $body);
+ if ($body instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Message\AppliesHeadersInterface) {
+ // Synchronize the body with the request headers
+ $body->applyRequestHeaders($request);
+ } elseif (!$request->hasHeader('Content-Type')) {
+ $this->addContentType($request, $body);
+ }
+ $this->addExpectHeader($request, $body);
+ }
+ private function addContentType(\Google\Site_Kit_Dependencies\GuzzleHttp\Message\RequestInterface $request, \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\StreamInterface $body)
+ {
+ if (!($uri = $body->getMetadata('uri'))) {
+ return;
+ }
+ // Guess the content-type based on the stream's "uri" metadata value.
+ // The file extension is used to determine the appropriate mime-type.
+ if ($contentType = \Google\Site_Kit_Dependencies\GuzzleHttp\Mimetypes::getInstance()->fromFilename($uri)) {
+ $request->setHeader('Content-Type', $contentType);
+ }
+ }
+ private function addContentLength(\Google\Site_Kit_Dependencies\GuzzleHttp\Message\RequestInterface $request, \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\StreamInterface $body)
+ {
+ // Set the Content-Length header if it can be determined, and never
+ // send a Transfer-Encoding: chunked and Content-Length header in
+ // the same request.
+ if ($request->hasHeader('Content-Length')) {
+ // Remove transfer-encoding if content-length is set.
+ $request->removeHeader('Transfer-Encoding');
+ return;
+ }
+ if ($request->hasHeader('Transfer-Encoding')) {
+ return;
+ }
+ if (null !== ($size = $body->getSize())) {
+ $request->setHeader('Content-Length', $size);
+ $request->removeHeader('Transfer-Encoding');
+ } elseif ('1.1' == $request->getProtocolVersion()) {
+ // Use chunked Transfer-Encoding if there is no determinable
+ // content-length header and we're using HTTP/1.1.
+ $request->setHeader('Transfer-Encoding', 'chunked');
+ $request->removeHeader('Content-Length');
+ }
+ }
+ private function addExpectHeader(\Google\Site_Kit_Dependencies\GuzzleHttp\Message\RequestInterface $request, \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\StreamInterface $body)
+ {
+ // Determine if the Expect header should be used
+ if ($request->hasHeader('Expect')) {
+ return;
+ }
+ $expect = $request->getConfig()['expect'];
+ // Return if disabled or if you're not using HTTP/1.1
+ if ($expect === \false || $request->getProtocolVersion() !== '1.1') {
+ return;
+ }
+ // The expect header is unconditionally enabled
+ if ($expect === \true) {
+ $request->setHeader('Expect', '100-Continue');
+ return;
+ }
+ // By default, send the expect header when the payload is > 1mb
+ if ($expect === null) {
+ $expect = 1048576;
+ }
+ // Always add if the body cannot be rewound, the size cannot be
+ // determined, or the size is greater than the cutoff threshold
+ $size = $body->getSize();
+ if ($size === null || $size >= (int) $expect || !$body->isSeekable()) {
+ $request->setHeader('Expect', '100-Continue');
+ }
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Subscriber/Redirect.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Subscriber/Redirect.php
new file mode 100644
index 000000000..ae1d42c20
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Subscriber/Redirect.php
@@ -0,0 +1,135 @@
+ ['onComplete', \Google\Site_Kit_Dependencies\GuzzleHttp\Event\RequestEvents::REDIRECT_RESPONSE]];
+ }
+ /**
+ * Rewind the entity body of the request if needed
+ *
+ * @param RequestInterface $redirectRequest
+ * @throws CouldNotRewindStreamException
+ */
+ public static function rewindEntityBody(\Google\Site_Kit_Dependencies\GuzzleHttp\Message\RequestInterface $redirectRequest)
+ {
+ // Rewind the entity body of the request if needed
+ if ($body = $redirectRequest->getBody()) {
+ // Only rewind the body if some of it has been read already, and
+ // throw an exception if the rewind fails
+ if ($body->tell() && !$body->seek(0)) {
+ throw new \Google\Site_Kit_Dependencies\GuzzleHttp\Exception\CouldNotRewindStreamException('Unable to rewind the non-seekable request body after redirecting', $redirectRequest);
+ }
+ }
+ }
+ /**
+ * Called when a request receives a redirect response
+ *
+ * @param CompleteEvent $event Event emitted
+ * @throws TooManyRedirectsException
+ */
+ public function onComplete(\Google\Site_Kit_Dependencies\GuzzleHttp\Event\CompleteEvent $event)
+ {
+ $response = $event->getResponse();
+ if (\substr($response->getStatusCode(), 0, 1) != '3' || !$response->hasHeader('Location')) {
+ return;
+ }
+ $request = $event->getRequest();
+ $config = $request->getConfig();
+ // Increment the redirect and initialize the redirect state.
+ if ($redirectCount = $config['redirect_count']) {
+ $config['redirect_count'] = ++$redirectCount;
+ } else {
+ $config['redirect_scheme'] = $request->getScheme();
+ $config['redirect_count'] = $redirectCount = 1;
+ }
+ $max = $config->getPath('redirect/max') ?: 5;
+ if ($redirectCount > $max) {
+ throw new \Google\Site_Kit_Dependencies\GuzzleHttp\Exception\TooManyRedirectsException("Will not follow more than {$redirectCount} redirects", $request);
+ }
+ $this->modifyRedirectRequest($request, $response);
+ $event->retry();
+ }
+ private function modifyRedirectRequest(\Google\Site_Kit_Dependencies\GuzzleHttp\Message\RequestInterface $request, \Google\Site_Kit_Dependencies\GuzzleHttp\Message\ResponseInterface $response)
+ {
+ $config = $request->getConfig();
+ $protocols = $config->getPath('redirect/protocols') ?: ['http', 'https'];
+ // Use a GET request if this is an entity enclosing request and we are
+ // not forcing RFC compliance, but rather emulating what all browsers
+ // would do.
+ $statusCode = $response->getStatusCode();
+ if ($statusCode == 303 || $statusCode <= 302 && $request->getBody() && !$config->getPath('redirect/strict')) {
+ $request->setMethod('GET');
+ $request->setBody(null);
+ }
+ $previousUrl = $request->getUrl();
+ $this->setRedirectUrl($request, $response, $protocols);
+ $this->rewindEntityBody($request);
+ // Add the Referer header if it is told to do so and only
+ // add the header if we are not redirecting from https to http.
+ if ($config->getPath('redirect/referer') && ($request->getScheme() == 'https' || $request->getScheme() == $config['redirect_scheme'])) {
+ $url = \Google\Site_Kit_Dependencies\GuzzleHttp\Url::fromString($previousUrl);
+ $url->setUsername(null);
+ $url->setPassword(null);
+ $request->setHeader('Referer', (string) $url);
+ } else {
+ $request->removeHeader('Referer');
+ }
+ }
+ /**
+ * Set the appropriate URL on the request based on the location header
+ *
+ * @param RequestInterface $request
+ * @param ResponseInterface $response
+ * @param array $protocols
+ */
+ private function setRedirectUrl(\Google\Site_Kit_Dependencies\GuzzleHttp\Message\RequestInterface $request, \Google\Site_Kit_Dependencies\GuzzleHttp\Message\ResponseInterface $response, array $protocols)
+ {
+ $location = $response->getHeader('Location');
+ $location = \Google\Site_Kit_Dependencies\GuzzleHttp\Url::fromString($location);
+ // Combine location with the original URL if it is not absolute.
+ if (!$location->isAbsolute()) {
+ $originalUrl = \Google\Site_Kit_Dependencies\GuzzleHttp\Url::fromString($request->getUrl());
+ // Remove query string parameters and just take what is present on
+ // the redirect Location header
+ $originalUrl->getQuery()->clear();
+ $location = $originalUrl->combine($location);
+ }
+ // Ensure that the redirect URL is allowed based on the protocols.
+ if (!\in_array($location->getScheme(), $protocols)) {
+ throw new \Google\Site_Kit_Dependencies\GuzzleHttp\Exception\BadResponseException(\sprintf('Redirect URL, %s, does not use one of the allowed redirect protocols: %s', $location, \implode(', ', $protocols)), $request, $response);
+ }
+ $request->setUrl($location);
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/ToArrayInterface.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/ToArrayInterface.php
new file mode 100644
index 000000000..2385abf25
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/ToArrayInterface.php
@@ -0,0 +1,16 @@
+client = $client;
+ $this->request = $request;
+ $this->_future = $future;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/UriTemplate.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/UriTemplate.php
new file mode 100644
index 000000000..2d14a0c09
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/UriTemplate.php
@@ -0,0 +1,191 @@
+ array('prefix' => '', 'joiner' => ',', 'query' => \false), '+' => array('prefix' => '', 'joiner' => ',', 'query' => \false), '#' => array('prefix' => '#', 'joiner' => ',', 'query' => \false), '.' => array('prefix' => '.', 'joiner' => '.', 'query' => \false), '/' => array('prefix' => '/', 'joiner' => '/', 'query' => \false), ';' => array('prefix' => ';', 'joiner' => ';', 'query' => \true), '?' => array('prefix' => '?', 'joiner' => '&', 'query' => \true), '&' => array('prefix' => '&', 'joiner' => '&', 'query' => \true));
+ /** @var array Delimiters */
+ private static $delims = array(':', '/', '?', '#', '[', ']', '@', '!', '$', '&', '\'', '(', ')', '*', '+', ',', ';', '=');
+ /** @var array Percent encoded delimiters */
+ private static $delimsPct = array('%3A', '%2F', '%3F', '%23', '%5B', '%5D', '%40', '%21', '%24', '%26', '%27', '%28', '%29', '%2A', '%2B', '%2C', '%3B', '%3D');
+ public function expand($template, array $variables)
+ {
+ if (\false === \strpos($template, '{')) {
+ return $template;
+ }
+ $this->template = $template;
+ $this->variables = $variables;
+ return \preg_replace_callback('/\\{([^\\}]+)\\}/', [$this, 'expandMatch'], $this->template);
+ }
+ /**
+ * Parse an expression into parts
+ *
+ * @param string $expression Expression to parse
+ *
+ * @return array Returns an associative array of parts
+ */
+ private function parseExpression($expression)
+ {
+ $result = array();
+ if (isset(self::$operatorHash[$expression[0]])) {
+ $result['operator'] = $expression[0];
+ $expression = \substr($expression, 1);
+ } else {
+ $result['operator'] = '';
+ }
+ foreach (\explode(',', $expression) as $value) {
+ $value = \trim($value);
+ $varspec = array();
+ if ($colonPos = \strpos($value, ':')) {
+ $varspec['value'] = \substr($value, 0, $colonPos);
+ $varspec['modifier'] = ':';
+ $varspec['position'] = (int) \substr($value, $colonPos + 1);
+ } elseif (\substr($value, -1) == '*') {
+ $varspec['modifier'] = '*';
+ $varspec['value'] = \substr($value, 0, -1);
+ } else {
+ $varspec['value'] = (string) $value;
+ $varspec['modifier'] = '';
+ }
+ $result['values'][] = $varspec;
+ }
+ return $result;
+ }
+ /**
+ * Process an expansion
+ *
+ * @param array $matches Matches met in the preg_replace_callback
+ *
+ * @return string Returns the replacement string
+ */
+ private function expandMatch(array $matches)
+ {
+ static $rfc1738to3986 = array('+' => '%20', '%7e' => '~');
+ $replacements = array();
+ $parsed = self::parseExpression($matches[1]);
+ $prefix = self::$operatorHash[$parsed['operator']]['prefix'];
+ $joiner = self::$operatorHash[$parsed['operator']]['joiner'];
+ $useQuery = self::$operatorHash[$parsed['operator']]['query'];
+ foreach ($parsed['values'] as $value) {
+ if (!isset($this->variables[$value['value']])) {
+ continue;
+ }
+ $variable = $this->variables[$value['value']];
+ $actuallyUseQuery = $useQuery;
+ $expanded = '';
+ if (\is_array($variable)) {
+ $isAssoc = $this->isAssoc($variable);
+ $kvp = array();
+ foreach ($variable as $key => $var) {
+ if ($isAssoc) {
+ $key = \rawurlencode($key);
+ $isNestedArray = \is_array($var);
+ } else {
+ $isNestedArray = \false;
+ }
+ if (!$isNestedArray) {
+ $var = \rawurlencode($var);
+ if ($parsed['operator'] == '+' || $parsed['operator'] == '#') {
+ $var = $this->decodeReserved($var);
+ }
+ }
+ if ($value['modifier'] == '*') {
+ if ($isAssoc) {
+ if ($isNestedArray) {
+ // Nested arrays must allow for deeply nested
+ // structures.
+ $var = \strtr(\http_build_query([$key => $var]), $rfc1738to3986);
+ } else {
+ $var = $key . '=' . $var;
+ }
+ } elseif ($key > 0 && $actuallyUseQuery) {
+ $var = $value['value'] . '=' . $var;
+ }
+ }
+ $kvp[$key] = $var;
+ }
+ if (empty($variable)) {
+ $actuallyUseQuery = \false;
+ } elseif ($value['modifier'] == '*') {
+ $expanded = \implode($joiner, $kvp);
+ if ($isAssoc) {
+ // Don't prepend the value name when using the explode
+ // modifier with an associative array.
+ $actuallyUseQuery = \false;
+ }
+ } else {
+ if ($isAssoc) {
+ // When an associative array is encountered and the
+ // explode modifier is not set, then the result must be
+ // a comma separated list of keys followed by their
+ // respective values.
+ foreach ($kvp as $k => &$v) {
+ $v = $k . ',' . $v;
+ }
+ }
+ $expanded = \implode(',', $kvp);
+ }
+ } else {
+ if ($value['modifier'] == ':') {
+ $variable = \substr($variable, 0, $value['position']);
+ }
+ $expanded = \rawurlencode($variable);
+ if ($parsed['operator'] == '+' || $parsed['operator'] == '#') {
+ $expanded = $this->decodeReserved($expanded);
+ }
+ }
+ if ($actuallyUseQuery) {
+ if (!$expanded && $joiner != '&') {
+ $expanded = $value['value'];
+ } else {
+ $expanded = $value['value'] . '=' . $expanded;
+ }
+ }
+ $replacements[] = $expanded;
+ }
+ $ret = \implode($joiner, $replacements);
+ if ($ret && $prefix) {
+ return $prefix . $ret;
+ }
+ return $ret;
+ }
+ /**
+ * Determines if an array is associative.
+ *
+ * This makes the assumption that input arrays are sequences or hashes.
+ * This assumption is a tradeoff for accuracy in favor of speed, but it
+ * should work in almost every case where input is supplied for a URI
+ * template.
+ *
+ * @param array $array Array to check
+ *
+ * @return bool
+ */
+ private function isAssoc(array $array)
+ {
+ return $array && \array_keys($array)[0] !== 0;
+ }
+ /**
+ * Removes percent encoding on reserved characters (used with + and #
+ * modifiers).
+ *
+ * @param string $string String to fix
+ *
+ * @return string
+ */
+ private function decodeReserved($string)
+ {
+ return \str_replace(self::$delimsPct, self::$delims, $string);
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Url.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Url.php
new file mode 100644
index 000000000..ff4aeb388
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Url.php
@@ -0,0 +1,471 @@
+ 80, 'https' => 443, 'ftp' => 21];
+ private static $pathPattern = '/[^a-zA-Z0-9\\-\\._~!\\$&\'\\(\\)\\*\\+,;=%:@\\/]+|%(?![A-Fa-f0-9]{2})/';
+ private static $queryPattern = '/[^a-zA-Z0-9\\-\\._~!\\$\'\\(\\)\\*\\+,;%:@\\/\\?=&]+|%(?![A-Fa-f0-9]{2})/';
+ /** @var Query|string Query part of the URL */
+ private $query;
+ /**
+ * Factory method to create a new URL from a URL string
+ *
+ * @param string $url Full URL used to create a Url object
+ *
+ * @return Url
+ * @throws \InvalidArgumentException
+ */
+ public static function fromString($url)
+ {
+ static $defaults = ['scheme' => null, 'host' => null, 'path' => null, 'port' => null, 'query' => null, 'user' => null, 'pass' => null, 'fragment' => null];
+ if (\false === ($parts = \parse_url($url))) {
+ throw new \InvalidArgumentException('Unable to parse malformed ' . 'url: ' . $url);
+ }
+ $parts += $defaults;
+ // Convert the query string into a Query object
+ if ($parts['query'] || 0 !== \strlen($parts['query'])) {
+ $parts['query'] = \Google\Site_Kit_Dependencies\GuzzleHttp\Query::fromString($parts['query']);
+ }
+ return new static($parts['scheme'], $parts['host'], $parts['user'], $parts['pass'], $parts['port'], $parts['path'], $parts['query'], $parts['fragment']);
+ }
+ /**
+ * Build a URL from parse_url parts. The generated URL will be a relative
+ * URL if a scheme or host are not provided.
+ *
+ * @param array $parts Array of parse_url parts
+ *
+ * @return string
+ */
+ public static function buildUrl(array $parts)
+ {
+ $url = $scheme = '';
+ if (!empty($parts['scheme'])) {
+ $scheme = $parts['scheme'];
+ $url .= $scheme . ':';
+ }
+ if (!empty($parts['host'])) {
+ $url .= '//';
+ if (isset($parts['user'])) {
+ $url .= $parts['user'];
+ if (isset($parts['pass'])) {
+ $url .= ':' . $parts['pass'];
+ }
+ $url .= '@';
+ }
+ $url .= $parts['host'];
+ // Only include the port if it is not the default port of the scheme
+ if (isset($parts['port']) && (!isset(self::$defaultPorts[$scheme]) || $parts['port'] != self::$defaultPorts[$scheme])) {
+ $url .= ':' . $parts['port'];
+ }
+ }
+ // Add the path component if present
+ if (isset($parts['path']) && \strlen($parts['path'])) {
+ // Always ensure that the path begins with '/' if set and something
+ // is before the path
+ if (!empty($parts['host']) && $parts['path'][0] != '/') {
+ $url .= '/';
+ }
+ $url .= $parts['path'];
+ }
+ // Add the query string if present
+ if (isset($parts['query'])) {
+ $queryStr = (string) $parts['query'];
+ if ($queryStr || $queryStr === '0') {
+ $url .= '?' . $queryStr;
+ }
+ }
+ // Ensure that # is only added to the url if fragment contains anything.
+ if (isset($parts['fragment'])) {
+ $url .= '#' . $parts['fragment'];
+ }
+ return $url;
+ }
+ /**
+ * Create a new URL from URL parts
+ *
+ * @param string $scheme Scheme of the URL
+ * @param string $host Host of the URL
+ * @param string $username Username of the URL
+ * @param string $password Password of the URL
+ * @param int $port Port of the URL
+ * @param string $path Path of the URL
+ * @param Query|array|string $query Query string of the URL
+ * @param string $fragment Fragment of the URL
+ */
+ public function __construct($scheme, $host, $username = null, $password = null, $port = null, $path = null, $query = null, $fragment = null)
+ {
+ $this->scheme = \strtolower($scheme);
+ $this->host = $host;
+ $this->port = $port;
+ $this->username = $username;
+ $this->password = $password;
+ $this->fragment = $fragment;
+ if ($query) {
+ $this->setQuery($query);
+ }
+ $this->setPath($path);
+ }
+ /**
+ * Clone the URL
+ */
+ public function __clone()
+ {
+ if ($this->query instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Query) {
+ $this->query = clone $this->query;
+ }
+ }
+ /**
+ * Returns the URL as a URL string
+ *
+ * @return string
+ */
+ public function __toString()
+ {
+ return static::buildUrl($this->getParts());
+ }
+ /**
+ * Get the parts of the URL as an array
+ *
+ * @return array
+ */
+ public function getParts()
+ {
+ return array('scheme' => $this->scheme, 'user' => $this->username, 'pass' => $this->password, 'host' => $this->host, 'port' => $this->port, 'path' => $this->path, 'query' => $this->query, 'fragment' => $this->fragment);
+ }
+ /**
+ * Set the host of the request.
+ *
+ * @param string $host Host to set (e.g. www.yahoo.com, yahoo.com)
+ *
+ * @return Url
+ */
+ public function setHost($host)
+ {
+ if (\strpos($host, ':') === \false) {
+ $this->host = $host;
+ } else {
+ list($host, $port) = \explode(':', $host);
+ $this->host = $host;
+ $this->setPort($port);
+ }
+ }
+ /**
+ * Get the host part of the URL
+ *
+ * @return string
+ */
+ public function getHost()
+ {
+ return $this->host;
+ }
+ /**
+ * Set the scheme part of the URL (http, https, ftp, etc.)
+ *
+ * @param string $scheme Scheme to set
+ */
+ public function setScheme($scheme)
+ {
+ // Remove the default port if one is specified
+ if ($this->port && isset(self::$defaultPorts[$this->scheme]) && self::$defaultPorts[$this->scheme] == $this->port) {
+ $this->port = null;
+ }
+ $this->scheme = \strtolower($scheme);
+ }
+ /**
+ * Get the scheme part of the URL
+ *
+ * @return string
+ */
+ public function getScheme()
+ {
+ return $this->scheme;
+ }
+ /**
+ * Set the port part of the URL
+ *
+ * @param int $port Port to set
+ */
+ public function setPort($port)
+ {
+ $this->port = $port;
+ }
+ /**
+ * Get the port part of the URl.
+ *
+ * If no port was set, this method will return the default port for the
+ * scheme of the URI.
+ *
+ * @return int|null
+ */
+ public function getPort()
+ {
+ if ($this->port) {
+ return $this->port;
+ } elseif (isset(self::$defaultPorts[$this->scheme])) {
+ return self::$defaultPorts[$this->scheme];
+ }
+ return null;
+ }
+ /**
+ * Set the path part of the URL.
+ *
+ * The provided URL is URL encoded as necessary.
+ *
+ * @param string $path Path string to set
+ */
+ public function setPath($path)
+ {
+ $this->path = self::encodePath($path);
+ }
+ /**
+ * Removes dot segments from a URL
+ * @link http://tools.ietf.org/html/rfc3986#section-5.2.4
+ */
+ public function removeDotSegments()
+ {
+ static $noopPaths = ['' => \true, '/' => \true, '*' => \true];
+ static $ignoreSegments = ['.' => \true, '..' => \true];
+ if (isset($noopPaths[$this->path])) {
+ return;
+ }
+ $results = [];
+ $segments = $this->getPathSegments();
+ foreach ($segments as $segment) {
+ if ($segment == '..') {
+ \array_pop($results);
+ } elseif (!isset($ignoreSegments[$segment])) {
+ $results[] = $segment;
+ }
+ }
+ $newPath = \implode('/', $results);
+ // Add the leading slash if necessary
+ if (\substr($this->path, 0, 1) === '/' && \substr($newPath, 0, 1) !== '/') {
+ $newPath = '/' . $newPath;
+ }
+ // Add the trailing slash if necessary
+ if ($newPath != '/' && isset($ignoreSegments[\end($segments)])) {
+ $newPath .= '/';
+ }
+ $this->path = $newPath;
+ }
+ /**
+ * Add a relative path to the currently set path.
+ *
+ * @param string $relativePath Relative path to add
+ */
+ public function addPath($relativePath)
+ {
+ if ($relativePath != '/' && \is_string($relativePath) && \strlen($relativePath) > 0) {
+ // Add a leading slash if needed
+ if ($relativePath[0] !== '/' && \substr($this->path, -1, 1) !== '/') {
+ $relativePath = '/' . $relativePath;
+ }
+ $this->setPath($this->path . $relativePath);
+ }
+ }
+ /**
+ * Get the path part of the URL
+ *
+ * @return string
+ */
+ public function getPath()
+ {
+ return $this->path;
+ }
+ /**
+ * Get the path segments of the URL as an array
+ *
+ * @return array
+ */
+ public function getPathSegments()
+ {
+ return \explode('/', $this->path);
+ }
+ /**
+ * Set the password part of the URL
+ *
+ * @param string $password Password to set
+ */
+ public function setPassword($password)
+ {
+ $this->password = $password;
+ }
+ /**
+ * Get the password part of the URL
+ *
+ * @return null|string
+ */
+ public function getPassword()
+ {
+ return $this->password;
+ }
+ /**
+ * Set the username part of the URL
+ *
+ * @param string $username Username to set
+ */
+ public function setUsername($username)
+ {
+ $this->username = $username;
+ }
+ /**
+ * Get the username part of the URl
+ *
+ * @return null|string
+ */
+ public function getUsername()
+ {
+ return $this->username;
+ }
+ /**
+ * Get the query part of the URL as a Query object
+ *
+ * @return Query
+ */
+ public function getQuery()
+ {
+ // Convert the query string to a query object if not already done.
+ if (!$this->query instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Query) {
+ $this->query = $this->query === null ? new \Google\Site_Kit_Dependencies\GuzzleHttp\Query() : \Google\Site_Kit_Dependencies\GuzzleHttp\Query::fromString($this->query);
+ }
+ return $this->query;
+ }
+ /**
+ * Set the query part of the URL.
+ *
+ * You may provide a query string as a string and pass $rawString as true
+ * to provide a query string that is not parsed until a call to getQuery()
+ * is made. Setting a raw query string will still encode invalid characters
+ * in a query string.
+ *
+ * @param Query|string|array $query Query string value to set. Can
+ * be a string that will be parsed into a Query object, an array
+ * of key value pairs, or a Query object.
+ * @param bool $rawString Set to true when providing a raw query string.
+ *
+ * @throws \InvalidArgumentException
+ */
+ public function setQuery($query, $rawString = \false)
+ {
+ if ($query instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Query) {
+ $this->query = $query;
+ } elseif (\is_string($query)) {
+ if (!$rawString) {
+ $this->query = \Google\Site_Kit_Dependencies\GuzzleHttp\Query::fromString($query);
+ } else {
+ // Ensure the query does not have illegal characters.
+ $this->query = \preg_replace_callback(self::$queryPattern, [__CLASS__, 'encodeMatch'], $query);
+ }
+ } elseif (\is_array($query)) {
+ $this->query = new \Google\Site_Kit_Dependencies\GuzzleHttp\Query($query);
+ } else {
+ throw new \InvalidArgumentException('Query must be a Query, ' . 'array, or string. Got ' . \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::describeType($query));
+ }
+ }
+ /**
+ * Get the fragment part of the URL
+ *
+ * @return null|string
+ */
+ public function getFragment()
+ {
+ return $this->fragment;
+ }
+ /**
+ * Set the fragment part of the URL
+ *
+ * @param string $fragment Fragment to set
+ */
+ public function setFragment($fragment)
+ {
+ $this->fragment = $fragment;
+ }
+ /**
+ * Check if this is an absolute URL
+ *
+ * @return bool
+ */
+ public function isAbsolute()
+ {
+ return $this->scheme && $this->host;
+ }
+ /**
+ * Combine the URL with another URL and return a new URL instance.
+ *
+ * Follows the rules specific in RFC 3986 section 5.4.
+ *
+ * @param string $url Relative URL to combine with
+ *
+ * @return Url
+ * @throws \InvalidArgumentException
+ * @link http://tools.ietf.org/html/rfc3986#section-5.4
+ */
+ public function combine($url)
+ {
+ $url = static::fromString($url);
+ // Use the more absolute URL as the base URL
+ if (!$this->isAbsolute() && $url->isAbsolute()) {
+ $url = $url->combine($this);
+ }
+ $parts = $url->getParts();
+ // Passing a URL with a scheme overrides everything
+ if ($parts['scheme']) {
+ return clone $url;
+ }
+ // Setting a host overrides the entire rest of the URL
+ if ($parts['host']) {
+ return new static($this->scheme, $parts['host'], $parts['user'], $parts['pass'], $parts['port'], $parts['path'], $parts['query'] instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Query ? clone $parts['query'] : $parts['query'], $parts['fragment']);
+ }
+ if (!$parts['path'] && $parts['path'] !== '0') {
+ // The relative URL has no path, so check if it is just a query
+ $path = $this->path ?: '';
+ $query = $parts['query'] ?: $this->query;
+ } else {
+ $query = $parts['query'];
+ if ($parts['path'][0] == '/' || !$this->path) {
+ // Overwrite the existing path if the rel path starts with "/"
+ $path = $parts['path'];
+ } else {
+ // If the relative URL does not have a path or the base URL
+ // path does not end in a "/" then overwrite the existing path
+ // up to the last "/"
+ $path = \substr($this->path, 0, \strrpos($this->path, '/') + 1) . $parts['path'];
+ }
+ }
+ $result = new self($this->scheme, $this->host, $this->username, $this->password, $this->port, $path, $query instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Query ? clone $query : $query, $parts['fragment']);
+ if ($path) {
+ $result->removeDotSegments();
+ }
+ return $result;
+ }
+ /**
+ * Encodes the path part of a URL without double-encoding percent-encoded
+ * key value pairs.
+ *
+ * @param string $path Path to encode
+ *
+ * @return string
+ */
+ public static function encodePath($path)
+ {
+ static $cb = [__CLASS__, 'encodeMatch'];
+ return \preg_replace_callback(self::$pathPattern, $cb, $path);
+ }
+ private static function encodeMatch(array $match)
+ {
+ return \rawurlencode($match[0]);
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Utils.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Utils.php
new file mode 100644
index 000000000..16e3a7454
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/guzzle/src/Utils.php
@@ -0,0 +1,180 @@
+expand($template, $variables);
+ }
+ /**
+ * Wrapper for JSON decode that implements error detection with helpful
+ * error messages.
+ *
+ * @param string $json JSON data to parse
+ * @param bool $assoc When true, returned objects will be converted
+ * into associative arrays.
+ * @param int $depth User specified recursion depth.
+ * @param int $options Bitmask of JSON decode options.
+ *
+ * @return mixed
+ * @throws \InvalidArgumentException if the JSON cannot be parsed.
+ * @link http://www.php.net/manual/en/function.json-decode.php
+ */
+ public static function jsonDecode($json, $assoc = \false, $depth = 512, $options = 0)
+ {
+ if ($json === '' || $json === null) {
+ return null;
+ }
+ static $jsonErrors = [\JSON_ERROR_DEPTH => 'JSON_ERROR_DEPTH - Maximum stack depth exceeded', \JSON_ERROR_STATE_MISMATCH => 'JSON_ERROR_STATE_MISMATCH - Underflow or the modes mismatch', \JSON_ERROR_CTRL_CHAR => 'JSON_ERROR_CTRL_CHAR - Unexpected control character found', \JSON_ERROR_SYNTAX => 'JSON_ERROR_SYNTAX - Syntax error, malformed JSON', \JSON_ERROR_UTF8 => 'JSON_ERROR_UTF8 - Malformed UTF-8 characters, possibly incorrectly encoded'];
+ $data = \json_decode($json, $assoc, $depth, $options);
+ if (\JSON_ERROR_NONE !== \json_last_error()) {
+ $last = \json_last_error();
+ throw new \InvalidArgumentException('Unable to parse JSON data: ' . (isset($jsonErrors[$last]) ? $jsonErrors[$last] : 'Unknown error'));
+ }
+ return $data;
+ }
+ /**
+ * Get the default User-Agent string to use with Guzzle
+ *
+ * @return string
+ */
+ public static function getDefaultUserAgent()
+ {
+ static $defaultAgent = '';
+ if (!$defaultAgent) {
+ $defaultAgent = 'Guzzle/' . \Google\Site_Kit_Dependencies\GuzzleHttp\ClientInterface::VERSION;
+ if (\extension_loaded('curl')) {
+ $defaultAgent .= ' curl/' . \curl_version()['version'];
+ }
+ $defaultAgent .= ' PHP/' . \PHP_VERSION;
+ }
+ return $defaultAgent;
+ }
+ /**
+ * Create a default handler to use based on the environment
+ *
+ * @throws \RuntimeException if no viable Handler is available.
+ */
+ public static function getDefaultHandler()
+ {
+ $default = $future = null;
+ if (\extension_loaded('curl')) {
+ $config = ['select_timeout' => \getenv('GUZZLE_CURL_SELECT_TIMEOUT') ?: 1];
+ if ($maxHandles = \getenv('GUZZLE_CURL_MAX_HANDLES')) {
+ $config['max_handles'] = $maxHandles;
+ }
+ if (\function_exists('curl_reset')) {
+ $default = new \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Client\CurlHandler();
+ $future = new \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Client\CurlMultiHandler($config);
+ } else {
+ $default = new \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Client\CurlMultiHandler($config);
+ }
+ }
+ if (\ini_get('allow_url_fopen')) {
+ $default = !$default ? new \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Client\StreamHandler() : \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Client\Middleware::wrapStreaming($default, new \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Client\StreamHandler());
+ } elseif (!$default) {
+ throw new \RuntimeException('Guzzle requires cURL, the ' . 'allow_url_fopen ini setting, or a custom HTTP handler.');
+ }
+ return $future ? \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Client\Middleware::wrapFuture($default, $future) : $default;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/AppendStream.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/AppendStream.php
new file mode 100644
index 000000000..4d5cf4ba3
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/AppendStream.php
@@ -0,0 +1,205 @@
+addStream($stream);
+ }
+ }
+ public function __toString()
+ {
+ try {
+ $this->rewind();
+ return $this->getContents();
+ } catch (\Exception $e) {
+ return '';
+ }
+ }
+ /**
+ * Add a stream to the AppendStream
+ *
+ * @param StreamInterface $stream Stream to append. Must be readable.
+ *
+ * @throws \InvalidArgumentException if the stream is not readable
+ */
+ public function addStream(\Google\Site_Kit_Dependencies\Psr\Http\Message\StreamInterface $stream)
+ {
+ if (!$stream->isReadable()) {
+ throw new \InvalidArgumentException('Each stream must be readable');
+ }
+ // The stream is only seekable if all streams are seekable
+ if (!$stream->isSeekable()) {
+ $this->seekable = \false;
+ }
+ $this->streams[] = $stream;
+ }
+ public function getContents()
+ {
+ return \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Utils::copyToString($this);
+ }
+ /**
+ * Closes each attached stream.
+ *
+ * {@inheritdoc}
+ */
+ public function close()
+ {
+ $this->pos = $this->current = 0;
+ $this->seekable = \true;
+ foreach ($this->streams as $stream) {
+ $stream->close();
+ }
+ $this->streams = [];
+ }
+ /**
+ * Detaches each attached stream.
+ *
+ * Returns null as it's not clear which underlying stream resource to return.
+ *
+ * {@inheritdoc}
+ */
+ public function detach()
+ {
+ $this->pos = $this->current = 0;
+ $this->seekable = \true;
+ foreach ($this->streams as $stream) {
+ $stream->detach();
+ }
+ $this->streams = [];
+ return null;
+ }
+ public function tell()
+ {
+ return $this->pos;
+ }
+ /**
+ * Tries to calculate the size by adding the size of each stream.
+ *
+ * If any of the streams do not return a valid number, then the size of the
+ * append stream cannot be determined and null is returned.
+ *
+ * {@inheritdoc}
+ */
+ public function getSize()
+ {
+ $size = 0;
+ foreach ($this->streams as $stream) {
+ $s = $stream->getSize();
+ if ($s === null) {
+ return null;
+ }
+ $size += $s;
+ }
+ return $size;
+ }
+ public function eof()
+ {
+ return !$this->streams || $this->current >= \count($this->streams) - 1 && $this->streams[$this->current]->eof();
+ }
+ public function rewind()
+ {
+ $this->seek(0);
+ }
+ /**
+ * Attempts to seek to the given position. Only supports SEEK_SET.
+ *
+ * {@inheritdoc}
+ */
+ public function seek($offset, $whence = \SEEK_SET)
+ {
+ if (!$this->seekable) {
+ throw new \RuntimeException('This AppendStream is not seekable');
+ } elseif ($whence !== \SEEK_SET) {
+ throw new \RuntimeException('The AppendStream can only seek with SEEK_SET');
+ }
+ $this->pos = $this->current = 0;
+ // Rewind each stream
+ foreach ($this->streams as $i => $stream) {
+ try {
+ $stream->rewind();
+ } catch (\Exception $e) {
+ throw new \RuntimeException('Unable to seek stream ' . $i . ' of the AppendStream', 0, $e);
+ }
+ }
+ // Seek to the actual position by reading from each stream
+ while ($this->pos < $offset && !$this->eof()) {
+ $result = $this->read(\min(8096, $offset - $this->pos));
+ if ($result === '') {
+ break;
+ }
+ }
+ }
+ /**
+ * Reads from all of the appended streams until the length is met or EOF.
+ *
+ * {@inheritdoc}
+ */
+ public function read($length)
+ {
+ $buffer = '';
+ $total = \count($this->streams) - 1;
+ $remaining = $length;
+ $progressToNext = \false;
+ while ($remaining > 0) {
+ // Progress to the next stream if needed.
+ if ($progressToNext || $this->streams[$this->current]->eof()) {
+ $progressToNext = \false;
+ if ($this->current === $total) {
+ break;
+ }
+ $this->current++;
+ }
+ $result = $this->streams[$this->current]->read($remaining);
+ // Using a loose comparison here to match on '', false, and null
+ if ($result == null) {
+ $progressToNext = \true;
+ continue;
+ }
+ $buffer .= $result;
+ $remaining = $length - \strlen($buffer);
+ }
+ $this->pos += \strlen($buffer);
+ return $buffer;
+ }
+ public function isReadable()
+ {
+ return \true;
+ }
+ public function isWritable()
+ {
+ return \false;
+ }
+ public function isSeekable()
+ {
+ return $this->seekable;
+ }
+ public function write($string)
+ {
+ throw new \RuntimeException('Cannot write to an AppendStream');
+ }
+ public function getMetadata($key = null)
+ {
+ return $key ? null : [];
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/BufferStream.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/BufferStream.php
new file mode 100644
index 000000000..9b7d36c14
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/BufferStream.php
@@ -0,0 +1,118 @@
+hwm = $hwm;
+ }
+ public function __toString()
+ {
+ return $this->getContents();
+ }
+ public function getContents()
+ {
+ $buffer = $this->buffer;
+ $this->buffer = '';
+ return $buffer;
+ }
+ public function close()
+ {
+ $this->buffer = '';
+ }
+ public function detach()
+ {
+ $this->close();
+ return null;
+ }
+ public function getSize()
+ {
+ return \strlen($this->buffer);
+ }
+ public function isReadable()
+ {
+ return \true;
+ }
+ public function isWritable()
+ {
+ return \true;
+ }
+ public function isSeekable()
+ {
+ return \false;
+ }
+ public function rewind()
+ {
+ $this->seek(0);
+ }
+ public function seek($offset, $whence = \SEEK_SET)
+ {
+ throw new \RuntimeException('Cannot seek a BufferStream');
+ }
+ public function eof()
+ {
+ return \strlen($this->buffer) === 0;
+ }
+ public function tell()
+ {
+ throw new \RuntimeException('Cannot determine the position of a BufferStream');
+ }
+ /**
+ * Reads data from the buffer.
+ */
+ public function read($length)
+ {
+ $currentLength = \strlen($this->buffer);
+ if ($length >= $currentLength) {
+ // No need to slice the buffer because we don't have enough data.
+ $result = $this->buffer;
+ $this->buffer = '';
+ } else {
+ // Slice up the result to provide a subset of the buffer.
+ $result = \substr($this->buffer, 0, $length);
+ $this->buffer = \substr($this->buffer, $length);
+ }
+ return $result;
+ }
+ /**
+ * Writes data to the buffer.
+ */
+ public function write($string)
+ {
+ $this->buffer .= $string;
+ // TODO: What should happen here?
+ if (\strlen($this->buffer) >= $this->hwm) {
+ return \false;
+ }
+ return \strlen($string);
+ }
+ public function getMetadata($key = null)
+ {
+ if ($key == 'hwm') {
+ return $this->hwm;
+ }
+ return $key ? null : [];
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/CachingStream.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/CachingStream.php
new file mode 100644
index 000000000..8cb17b8aa
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/CachingStream.php
@@ -0,0 +1,121 @@
+remoteStream = $stream;
+ $this->stream = $target ?: new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Stream(\Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Utils::tryFopen('php://temp', 'r+'));
+ }
+ public function getSize()
+ {
+ $remoteSize = $this->remoteStream->getSize();
+ if (null === $remoteSize) {
+ return null;
+ }
+ return \max($this->stream->getSize(), $remoteSize);
+ }
+ public function rewind()
+ {
+ $this->seek(0);
+ }
+ public function seek($offset, $whence = \SEEK_SET)
+ {
+ if ($whence == \SEEK_SET) {
+ $byte = $offset;
+ } elseif ($whence == \SEEK_CUR) {
+ $byte = $offset + $this->tell();
+ } elseif ($whence == \SEEK_END) {
+ $size = $this->remoteStream->getSize();
+ if ($size === null) {
+ $size = $this->cacheEntireStream();
+ }
+ $byte = $size + $offset;
+ } else {
+ throw new \InvalidArgumentException('Invalid whence');
+ }
+ $diff = $byte - $this->stream->getSize();
+ if ($diff > 0) {
+ // Read the remoteStream until we have read in at least the amount
+ // of bytes requested, or we reach the end of the file.
+ while ($diff > 0 && !$this->remoteStream->eof()) {
+ $this->read($diff);
+ $diff = $byte - $this->stream->getSize();
+ }
+ } else {
+ // We can just do a normal seek since we've already seen this byte.
+ $this->stream->seek($byte);
+ }
+ }
+ public function read($length)
+ {
+ // Perform a regular read on any previously read data from the buffer
+ $data = $this->stream->read($length);
+ $remaining = $length - \strlen($data);
+ // More data was requested so read from the remote stream
+ if ($remaining) {
+ // If data was written to the buffer in a position that would have
+ // been filled from the remote stream, then we must skip bytes on
+ // the remote stream to emulate overwriting bytes from that
+ // position. This mimics the behavior of other PHP stream wrappers.
+ $remoteData = $this->remoteStream->read($remaining + $this->skipReadBytes);
+ if ($this->skipReadBytes) {
+ $len = \strlen($remoteData);
+ $remoteData = \substr($remoteData, $this->skipReadBytes);
+ $this->skipReadBytes = \max(0, $this->skipReadBytes - $len);
+ }
+ $data .= $remoteData;
+ $this->stream->write($remoteData);
+ }
+ return $data;
+ }
+ public function write($string)
+ {
+ // When appending to the end of the currently read stream, you'll want
+ // to skip bytes from being read from the remote stream to emulate
+ // other stream wrappers. Basically replacing bytes of data of a fixed
+ // length.
+ $overflow = \strlen($string) + $this->tell() - $this->remoteStream->tell();
+ if ($overflow > 0) {
+ $this->skipReadBytes += $overflow;
+ }
+ return $this->stream->write($string);
+ }
+ public function eof()
+ {
+ return $this->stream->eof() && $this->remoteStream->eof();
+ }
+ /**
+ * Close both the remote stream and buffer stream
+ */
+ public function close()
+ {
+ $this->remoteStream->close() && $this->stream->close();
+ }
+ private function cacheEntireStream()
+ {
+ $target = new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\FnStream(['write' => 'strlen']);
+ \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Utils::copyToStream($this, $target);
+ return $this->tell();
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/DroppingStream.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/DroppingStream.php
new file mode 100644
index 000000000..10b3d8ab8
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/DroppingStream.php
@@ -0,0 +1,38 @@
+stream = $stream;
+ $this->maxLength = $maxLength;
+ }
+ public function write($string)
+ {
+ $diff = $this->maxLength - $this->stream->getSize();
+ // Begin returning 0 when the underlying stream is too large.
+ if ($diff <= 0) {
+ return 0;
+ }
+ // Write the stream or a subset of the stream if needed.
+ if (\strlen($string) < $diff) {
+ return $this->stream->write($string);
+ }
+ return $this->stream->write(\substr($string, 0, $diff));
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/FnStream.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/FnStream.php
new file mode 100644
index 000000000..1579cfdd6
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/FnStream.php
@@ -0,0 +1,136 @@
+methods = $methods;
+ // Create the functions on the class
+ foreach ($methods as $name => $fn) {
+ $this->{'_fn_' . $name} = $fn;
+ }
+ }
+ /**
+ * Lazily determine which methods are not implemented.
+ *
+ * @throws \BadMethodCallException
+ */
+ public function __get($name)
+ {
+ throw new \BadMethodCallException(\str_replace('_fn_', '', $name) . '() is not implemented in the FnStream');
+ }
+ /**
+ * The close method is called on the underlying stream only if possible.
+ */
+ public function __destruct()
+ {
+ if (isset($this->_fn_close)) {
+ \call_user_func($this->_fn_close);
+ }
+ }
+ /**
+ * An unserialize would allow the __destruct to run when the unserialized value goes out of scope.
+ *
+ * @throws \LogicException
+ */
+ public function __wakeup()
+ {
+ throw new \LogicException('FnStream should never be unserialized');
+ }
+ /**
+ * Adds custom functionality to an underlying stream by intercepting
+ * specific method calls.
+ *
+ * @param StreamInterface $stream Stream to decorate
+ * @param array $methods Hash of method name to a closure
+ *
+ * @return FnStream
+ */
+ public static function decorate(\Google\Site_Kit_Dependencies\Psr\Http\Message\StreamInterface $stream, array $methods)
+ {
+ // If any of the required methods were not provided, then simply
+ // proxy to the decorated stream.
+ foreach (\array_diff(self::$slots, \array_keys($methods)) as $diff) {
+ $methods[$diff] = [$stream, $diff];
+ }
+ return new self($methods);
+ }
+ public function __toString()
+ {
+ return \call_user_func($this->_fn___toString);
+ }
+ public function close()
+ {
+ return \call_user_func($this->_fn_close);
+ }
+ public function detach()
+ {
+ return \call_user_func($this->_fn_detach);
+ }
+ public function getSize()
+ {
+ return \call_user_func($this->_fn_getSize);
+ }
+ public function tell()
+ {
+ return \call_user_func($this->_fn_tell);
+ }
+ public function eof()
+ {
+ return \call_user_func($this->_fn_eof);
+ }
+ public function isSeekable()
+ {
+ return \call_user_func($this->_fn_isSeekable);
+ }
+ public function rewind()
+ {
+ \call_user_func($this->_fn_rewind);
+ }
+ public function seek($offset, $whence = \SEEK_SET)
+ {
+ \call_user_func($this->_fn_seek, $offset, $whence);
+ }
+ public function isWritable()
+ {
+ return \call_user_func($this->_fn_isWritable);
+ }
+ public function write($string)
+ {
+ return \call_user_func($this->_fn_write, $string);
+ }
+ public function isReadable()
+ {
+ return \call_user_func($this->_fn_isReadable);
+ }
+ public function read($length)
+ {
+ return \call_user_func($this->_fn_read, $length);
+ }
+ public function getContents()
+ {
+ return \call_user_func($this->_fn_getContents);
+ }
+ public function getMetadata($key = null)
+ {
+ return \call_user_func($this->_fn_getMetadata, $key);
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/Header.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/Header.php
new file mode 100644
index 000000000..545bacf11
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/Header.php
@@ -0,0 +1,66 @@
+]+>|[^=]+/', $kvp, $matches)) {
+ $m = $matches[0];
+ if (isset($m[1])) {
+ $part[\trim($m[0], $trimmed)] = \trim($m[1], $trimmed);
+ } else {
+ $part[] = \trim($m[0], $trimmed);
+ }
+ }
+ }
+ if ($part) {
+ $params[] = $part;
+ }
+ }
+ return $params;
+ }
+ /**
+ * Converts an array of header values that may contain comma separated
+ * headers into an array of headers with no comma separated values.
+ *
+ * @param string|array $header Header to normalize.
+ *
+ * @return array Returns the normalized header field values.
+ */
+ public static function normalize($header)
+ {
+ if (!\is_array($header)) {
+ return \array_map('trim', \explode(',', $header));
+ }
+ $result = [];
+ foreach ($header as $value) {
+ foreach ((array) $value as $v) {
+ if (\strpos($v, ',') === \false) {
+ $result[] = $v;
+ continue;
+ }
+ foreach (\preg_split('/,(?=([^"]*"[^"]*")*[^"]*$)/', $v) as $vv) {
+ $result[] = \trim($vv);
+ }
+ }
+ }
+ return $result;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/InflateStream.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/InflateStream.php
new file mode 100644
index 000000000..fdd9f4ff0
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/InflateStream.php
@@ -0,0 +1,51 @@
+read(10);
+ $filenameHeaderLength = $this->getLengthOfPossibleFilenameHeader($stream, $header);
+ // Skip the header, that is 10 + length of filename + 1 (nil) bytes
+ $stream = new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\LimitStream($stream, -1, 10 + $filenameHeaderLength);
+ $resource = \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\StreamWrapper::getResource($stream);
+ \stream_filter_append($resource, 'zlib.inflate', \STREAM_FILTER_READ);
+ $this->stream = $stream->isSeekable() ? new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Stream($resource) : new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\NoSeekStream(new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Stream($resource));
+ }
+ /**
+ * @param StreamInterface $stream
+ * @param $header
+ *
+ * @return int
+ */
+ private function getLengthOfPossibleFilenameHeader(\Google\Site_Kit_Dependencies\Psr\Http\Message\StreamInterface $stream, $header)
+ {
+ $filename_header_length = 0;
+ if (\substr(\bin2hex($header), 6, 2) === '08') {
+ // we have a filename, read until nil
+ $filename_header_length = 1;
+ while ($stream->read(1) !== \chr(0)) {
+ $filename_header_length++;
+ }
+ }
+ return $filename_header_length;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/LazyOpenStream.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/LazyOpenStream.php
new file mode 100644
index 000000000..e76f05035
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/LazyOpenStream.php
@@ -0,0 +1,37 @@
+filename = $filename;
+ $this->mode = $mode;
+ }
+ /**
+ * Creates the underlying stream lazily when required.
+ *
+ * @return StreamInterface
+ */
+ protected function createStream()
+ {
+ return \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Utils::streamFor(\Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Utils::tryFopen($this->filename, $this->mode));
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/LimitStream.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/LimitStream.php
new file mode 100644
index 000000000..f6fd61b79
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/LimitStream.php
@@ -0,0 +1,130 @@
+stream = $stream;
+ $this->setLimit($limit);
+ $this->setOffset($offset);
+ }
+ public function eof()
+ {
+ // Always return true if the underlying stream is EOF
+ if ($this->stream->eof()) {
+ return \true;
+ }
+ // No limit and the underlying stream is not at EOF
+ if ($this->limit == -1) {
+ return \false;
+ }
+ return $this->stream->tell() >= $this->offset + $this->limit;
+ }
+ /**
+ * Returns the size of the limited subset of data
+ * {@inheritdoc}
+ */
+ public function getSize()
+ {
+ if (null === ($length = $this->stream->getSize())) {
+ return null;
+ } elseif ($this->limit == -1) {
+ return $length - $this->offset;
+ } else {
+ return \min($this->limit, $length - $this->offset);
+ }
+ }
+ /**
+ * Allow for a bounded seek on the read limited stream
+ * {@inheritdoc}
+ */
+ public function seek($offset, $whence = \SEEK_SET)
+ {
+ if ($whence !== \SEEK_SET || $offset < 0) {
+ throw new \RuntimeException(\sprintf('Cannot seek to offset %s with whence %s', $offset, $whence));
+ }
+ $offset += $this->offset;
+ if ($this->limit !== -1) {
+ if ($offset > $this->offset + $this->limit) {
+ $offset = $this->offset + $this->limit;
+ }
+ }
+ $this->stream->seek($offset);
+ }
+ /**
+ * Give a relative tell()
+ * {@inheritdoc}
+ */
+ public function tell()
+ {
+ return $this->stream->tell() - $this->offset;
+ }
+ /**
+ * Set the offset to start limiting from
+ *
+ * @param int $offset Offset to seek to and begin byte limiting from
+ *
+ * @throws \RuntimeException if the stream cannot be seeked.
+ */
+ public function setOffset($offset)
+ {
+ $current = $this->stream->tell();
+ if ($current !== $offset) {
+ // If the stream cannot seek to the offset position, then read to it
+ if ($this->stream->isSeekable()) {
+ $this->stream->seek($offset);
+ } elseif ($current > $offset) {
+ throw new \RuntimeException("Could not seek to stream offset {$offset}");
+ } else {
+ $this->stream->read($offset - $current);
+ }
+ }
+ $this->offset = $offset;
+ }
+ /**
+ * Set the limit of bytes that the decorator allows to be read from the
+ * stream.
+ *
+ * @param int $limit Number of bytes to allow to be read from the stream.
+ * Use -1 for no limit.
+ */
+ public function setLimit($limit)
+ {
+ $this->limit = $limit;
+ }
+ public function read($length)
+ {
+ if ($this->limit == -1) {
+ return $this->stream->read($length);
+ }
+ // Check if the current position is less than the total allowed
+ // bytes + original offset
+ $remaining = $this->offset + $this->limit - $this->stream->tell();
+ if ($remaining > 0) {
+ // Only return the amount of requested data, ensuring that the byte
+ // limit is not exceeded
+ return $this->stream->read(\min($remaining, $length));
+ }
+ return '';
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/Message.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/Message.php
new file mode 100644
index 000000000..db55d0cd2
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/Message.php
@@ -0,0 +1,197 @@
+getMethod() . ' ' . $message->getRequestTarget()) . ' HTTP/' . $message->getProtocolVersion();
+ if (!$message->hasHeader('host')) {
+ $msg .= "\r\nHost: " . $message->getUri()->getHost();
+ }
+ } elseif ($message instanceof \Google\Site_Kit_Dependencies\Psr\Http\Message\ResponseInterface) {
+ $msg = 'HTTP/' . $message->getProtocolVersion() . ' ' . $message->getStatusCode() . ' ' . $message->getReasonPhrase();
+ } else {
+ throw new \InvalidArgumentException('Unknown message type');
+ }
+ foreach ($message->getHeaders() as $name => $values) {
+ if (\strtolower($name) === 'set-cookie') {
+ foreach ($values as $value) {
+ $msg .= "\r\n{$name}: " . $value;
+ }
+ } else {
+ $msg .= "\r\n{$name}: " . \implode(', ', $values);
+ }
+ }
+ return "{$msg}\r\n\r\n" . $message->getBody();
+ }
+ /**
+ * Get a short summary of the message body.
+ *
+ * Will return `null` if the response is not printable.
+ *
+ * @param MessageInterface $message The message to get the body summary
+ * @param int $truncateAt The maximum allowed size of the summary
+ *
+ * @return string|null
+ */
+ public static function bodySummary(\Google\Site_Kit_Dependencies\Psr\Http\Message\MessageInterface $message, $truncateAt = 120)
+ {
+ $body = $message->getBody();
+ if (!$body->isSeekable() || !$body->isReadable()) {
+ return null;
+ }
+ $size = $body->getSize();
+ if ($size === 0) {
+ return null;
+ }
+ $summary = $body->read($truncateAt);
+ $body->rewind();
+ if ($size > $truncateAt) {
+ $summary .= ' (truncated...)';
+ }
+ // Matches any printable character, including unicode characters:
+ // letters, marks, numbers, punctuation, spacing, and separators.
+ if (\preg_match('/[^\\pL\\pM\\pN\\pP\\pS\\pZ\\n\\r\\t]/u', $summary)) {
+ return null;
+ }
+ return $summary;
+ }
+ /**
+ * Attempts to rewind a message body and throws an exception on failure.
+ *
+ * The body of the message will only be rewound if a call to `tell()`
+ * returns a value other than `0`.
+ *
+ * @param MessageInterface $message Message to rewind
+ *
+ * @throws \RuntimeException
+ */
+ public static function rewindBody(\Google\Site_Kit_Dependencies\Psr\Http\Message\MessageInterface $message)
+ {
+ $body = $message->getBody();
+ if ($body->tell()) {
+ $body->rewind();
+ }
+ }
+ /**
+ * Parses an HTTP message into an associative array.
+ *
+ * The array contains the "start-line" key containing the start line of
+ * the message, "headers" key containing an associative array of header
+ * array values, and a "body" key containing the body of the message.
+ *
+ * @param string $message HTTP request or response to parse.
+ *
+ * @return array
+ */
+ public static function parseMessage($message)
+ {
+ if (!$message) {
+ throw new \InvalidArgumentException('Invalid message');
+ }
+ $message = \ltrim($message, "\r\n");
+ $messageParts = \preg_split("/\r?\n\r?\n/", $message, 2);
+ if ($messageParts === \false || \count($messageParts) !== 2) {
+ throw new \InvalidArgumentException('Invalid message: Missing header delimiter');
+ }
+ list($rawHeaders, $body) = $messageParts;
+ $rawHeaders .= "\r\n";
+ // Put back the delimiter we split previously
+ $headerParts = \preg_split("/\r?\n/", $rawHeaders, 2);
+ if ($headerParts === \false || \count($headerParts) !== 2) {
+ throw new \InvalidArgumentException('Invalid message: Missing status line');
+ }
+ list($startLine, $rawHeaders) = $headerParts;
+ if (\preg_match("/(?:^HTTP\\/|^[A-Z]+ \\S+ HTTP\\/)(\\d+(?:\\.\\d+)?)/i", $startLine, $matches) && $matches[1] === '1.0') {
+ // Header folding is deprecated for HTTP/1.1, but allowed in HTTP/1.0
+ $rawHeaders = \preg_replace(\Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Rfc7230::HEADER_FOLD_REGEX, ' ', $rawHeaders);
+ }
+ /** @var array[] $headerLines */
+ $count = \preg_match_all(\Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Rfc7230::HEADER_REGEX, $rawHeaders, $headerLines, \PREG_SET_ORDER);
+ // If these aren't the same, then one line didn't match and there's an invalid header.
+ if ($count !== \substr_count($rawHeaders, "\n")) {
+ // Folding is deprecated, see https://tools.ietf.org/html/rfc7230#section-3.2.4
+ if (\preg_match(\Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Rfc7230::HEADER_FOLD_REGEX, $rawHeaders)) {
+ throw new \InvalidArgumentException('Invalid header syntax: Obsolete line folding');
+ }
+ throw new \InvalidArgumentException('Invalid header syntax');
+ }
+ $headers = [];
+ foreach ($headerLines as $headerLine) {
+ $headers[$headerLine[1]][] = $headerLine[2];
+ }
+ return ['start-line' => $startLine, 'headers' => $headers, 'body' => $body];
+ }
+ /**
+ * Constructs a URI for an HTTP request message.
+ *
+ * @param string $path Path from the start-line
+ * @param array $headers Array of headers (each value an array).
+ *
+ * @return string
+ */
+ public static function parseRequestUri($path, array $headers)
+ {
+ $hostKey = \array_filter(\array_keys($headers), function ($k) {
+ return \strtolower($k) === 'host';
+ });
+ // If no host is found, then a full URI cannot be constructed.
+ if (!$hostKey) {
+ return $path;
+ }
+ $host = $headers[\reset($hostKey)][0];
+ $scheme = \substr($host, -4) === ':443' ? 'https' : 'http';
+ return $scheme . '://' . $host . '/' . \ltrim($path, '/');
+ }
+ /**
+ * Parses a request message string into a request object.
+ *
+ * @param string $message Request message string.
+ *
+ * @return Request
+ */
+ public static function parseRequest($message)
+ {
+ $data = self::parseMessage($message);
+ $matches = [];
+ if (!\preg_match('/^[\\S]+\\s+([a-zA-Z]+:\\/\\/|\\/).*/', $data['start-line'], $matches)) {
+ throw new \InvalidArgumentException('Invalid request string');
+ }
+ $parts = \explode(' ', $data['start-line'], 3);
+ $version = isset($parts[2]) ? \explode('/', $parts[2])[1] : '1.1';
+ $request = new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Request($parts[0], $matches[1] === '/' ? self::parseRequestUri($parts[1], $data['headers']) : $parts[1], $data['headers'], $data['body'], $version);
+ return $matches[1] === '/' ? $request : $request->withRequestTarget($parts[1]);
+ }
+ /**
+ * Parses a response message string into a response object.
+ *
+ * @param string $message Response message string.
+ *
+ * @return Response
+ */
+ public static function parseResponse($message)
+ {
+ $data = self::parseMessage($message);
+ // According to https://tools.ietf.org/html/rfc7230#section-3.1.2 the space
+ // between status-code and reason-phrase is required. But browsers accept
+ // responses without space and reason as well.
+ if (!\preg_match('/^HTTP\\/.* [0-9]{3}( .*|$)/', $data['start-line'])) {
+ throw new \InvalidArgumentException('Invalid response string: ' . $data['start-line']);
+ }
+ $parts = \explode(' ', $data['start-line'], 3);
+ return new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Response((int) $parts[1], $data['headers'], $data['body'], \explode('/', $parts[0])[1], isset($parts[2]) ? $parts[2] : null);
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/MessageTrait.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/MessageTrait.php
new file mode 100644
index 000000000..57ff3bc89
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/MessageTrait.php
@@ -0,0 +1,219 @@
+ array of values */
+ private $headers = [];
+ /** @var array Map of lowercase header name => original name at registration */
+ private $headerNames = [];
+ /** @var string */
+ private $protocol = '1.1';
+ /** @var StreamInterface|null */
+ private $stream;
+ public function getProtocolVersion()
+ {
+ return $this->protocol;
+ }
+ public function withProtocolVersion($version)
+ {
+ if ($this->protocol === $version) {
+ return $this;
+ }
+ $new = clone $this;
+ $new->protocol = $version;
+ return $new;
+ }
+ public function getHeaders()
+ {
+ return $this->headers;
+ }
+ public function hasHeader($header)
+ {
+ return isset($this->headerNames[\strtolower($header)]);
+ }
+ public function getHeader($header)
+ {
+ $header = \strtolower($header);
+ if (!isset($this->headerNames[$header])) {
+ return [];
+ }
+ $header = $this->headerNames[$header];
+ return $this->headers[$header];
+ }
+ public function getHeaderLine($header)
+ {
+ return \implode(', ', $this->getHeader($header));
+ }
+ public function withHeader($header, $value)
+ {
+ $this->assertHeader($header);
+ $value = $this->normalizeHeaderValue($value);
+ $normalized = \strtolower($header);
+ $new = clone $this;
+ if (isset($new->headerNames[$normalized])) {
+ unset($new->headers[$new->headerNames[$normalized]]);
+ }
+ $new->headerNames[$normalized] = $header;
+ $new->headers[$header] = $value;
+ return $new;
+ }
+ public function withAddedHeader($header, $value)
+ {
+ $this->assertHeader($header);
+ $value = $this->normalizeHeaderValue($value);
+ $normalized = \strtolower($header);
+ $new = clone $this;
+ if (isset($new->headerNames[$normalized])) {
+ $header = $this->headerNames[$normalized];
+ $new->headers[$header] = \array_merge($this->headers[$header], $value);
+ } else {
+ $new->headerNames[$normalized] = $header;
+ $new->headers[$header] = $value;
+ }
+ return $new;
+ }
+ public function withoutHeader($header)
+ {
+ $normalized = \strtolower($header);
+ if (!isset($this->headerNames[$normalized])) {
+ return $this;
+ }
+ $header = $this->headerNames[$normalized];
+ $new = clone $this;
+ unset($new->headers[$header], $new->headerNames[$normalized]);
+ return $new;
+ }
+ public function getBody()
+ {
+ if (!$this->stream) {
+ $this->stream = \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Utils::streamFor('');
+ }
+ return $this->stream;
+ }
+ public function withBody(\Google\Site_Kit_Dependencies\Psr\Http\Message\StreamInterface $body)
+ {
+ if ($body === $this->stream) {
+ return $this;
+ }
+ $new = clone $this;
+ $new->stream = $body;
+ return $new;
+ }
+ private function setHeaders(array $headers)
+ {
+ $this->headerNames = $this->headers = [];
+ foreach ($headers as $header => $value) {
+ if (\is_int($header)) {
+ // Numeric array keys are converted to int by PHP but having a header name '123' is not forbidden by the spec
+ // and also allowed in withHeader(). So we need to cast it to string again for the following assertion to pass.
+ $header = (string) $header;
+ }
+ $this->assertHeader($header);
+ $value = $this->normalizeHeaderValue($value);
+ $normalized = \strtolower($header);
+ if (isset($this->headerNames[$normalized])) {
+ $header = $this->headerNames[$normalized];
+ $this->headers[$header] = \array_merge($this->headers[$header], $value);
+ } else {
+ $this->headerNames[$normalized] = $header;
+ $this->headers[$header] = $value;
+ }
+ }
+ }
+ /**
+ * @param mixed $value
+ *
+ * @return string[]
+ */
+ private function normalizeHeaderValue($value)
+ {
+ if (!\is_array($value)) {
+ return $this->trimAndValidateHeaderValues([$value]);
+ }
+ if (\count($value) === 0) {
+ throw new \InvalidArgumentException('Header value can not be an empty array.');
+ }
+ return $this->trimAndValidateHeaderValues($value);
+ }
+ /**
+ * Trims whitespace from the header values.
+ *
+ * Spaces and tabs ought to be excluded by parsers when extracting the field value from a header field.
+ *
+ * header-field = field-name ":" OWS field-value OWS
+ * OWS = *( SP / HTAB )
+ *
+ * @param mixed[] $values Header values
+ *
+ * @return string[] Trimmed header values
+ *
+ * @see https://tools.ietf.org/html/rfc7230#section-3.2.4
+ */
+ private function trimAndValidateHeaderValues(array $values)
+ {
+ return \array_map(function ($value) {
+ if (!\is_scalar($value) && null !== $value) {
+ throw new \InvalidArgumentException(\sprintf('Header value must be scalar or null but %s provided.', \is_object($value) ? \get_class($value) : \gettype($value)));
+ }
+ $trimmed = \trim((string) $value, " \t");
+ $this->assertValue($trimmed);
+ return $trimmed;
+ }, \array_values($values));
+ }
+ /**
+ * @see https://tools.ietf.org/html/rfc7230#section-3.2
+ *
+ * @param mixed $header
+ *
+ * @return void
+ */
+ private function assertHeader($header)
+ {
+ if (!\is_string($header)) {
+ throw new \InvalidArgumentException(\sprintf('Header name must be a string but %s provided.', \is_object($header) ? \get_class($header) : \gettype($header)));
+ }
+ if ($header === '') {
+ throw new \InvalidArgumentException('Header name can not be empty.');
+ }
+ if (!\preg_match('/^[a-zA-Z0-9\'`#$%&*+.^_|~!-]+$/', $header)) {
+ throw new \InvalidArgumentException(\sprintf('"%s" is not valid header name', $header));
+ }
+ }
+ /**
+ * @param string $value
+ *
+ * @return void
+ *
+ * @see https://tools.ietf.org/html/rfc7230#section-3.2
+ *
+ * field-value = *( field-content / obs-fold )
+ * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]
+ * field-vchar = VCHAR / obs-text
+ * VCHAR = %x21-7E
+ * obs-text = %x80-FF
+ * obs-fold = CRLF 1*( SP / HTAB )
+ */
+ private function assertValue($value)
+ {
+ // The regular expression intentionally does not support the obs-fold production, because as
+ // per RFC 7230#3.2.4:
+ //
+ // A sender MUST NOT generate a message that includes
+ // line folding (i.e., that has any field-value that contains a match to
+ // the obs-fold rule) unless the message is intended for packaging
+ // within the message/http media type.
+ //
+ // Clients must not send a request with line folding and a server sending folded headers is
+ // likely very rare. Line folding is a fairly obscure feature of HTTP/1.1 and thus not accepting
+ // folding is not likely to break any legitimate use case.
+ if (!\preg_match('/^[\\x20\\x09\\x21-\\x7E\\x80-\\xFF]*$/', $value)) {
+ throw new \InvalidArgumentException(\sprintf('"%s" is not valid header value', $value));
+ }
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/MimeType.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/MimeType.php
new file mode 100644
index 000000000..9776fd3cf
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/MimeType.php
@@ -0,0 +1,33 @@
+ 'video/3gpp', '7z' => 'application/x-7z-compressed', 'aac' => 'audio/x-aac', 'ai' => 'application/postscript', 'aif' => 'audio/x-aiff', 'asc' => 'text/plain', 'asf' => 'video/x-ms-asf', 'atom' => 'application/atom+xml', 'avi' => 'video/x-msvideo', 'bmp' => 'image/bmp', 'bz2' => 'application/x-bzip2', 'cer' => 'application/pkix-cert', 'crl' => 'application/pkix-crl', 'crt' => 'application/x-x509-ca-cert', 'css' => 'text/css', 'csv' => 'text/csv', 'cu' => 'application/cu-seeme', 'deb' => 'application/x-debian-package', 'doc' => 'application/msword', 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'dvi' => 'application/x-dvi', 'eot' => 'application/vnd.ms-fontobject', 'eps' => 'application/postscript', 'epub' => 'application/epub+zip', 'etx' => 'text/x-setext', 'flac' => 'audio/flac', 'flv' => 'video/x-flv', 'gif' => 'image/gif', 'gz' => 'application/gzip', 'htm' => 'text/html', 'html' => 'text/html', 'ico' => 'image/x-icon', 'ics' => 'text/calendar', 'ini' => 'text/plain', 'iso' => 'application/x-iso9660-image', 'jar' => 'application/java-archive', 'jpe' => 'image/jpeg', 'jpeg' => 'image/jpeg', 'jpg' => 'image/jpeg', 'js' => 'text/javascript', 'json' => 'application/json', 'latex' => 'application/x-latex', 'log' => 'text/plain', 'm4a' => 'audio/mp4', 'm4v' => 'video/mp4', 'mid' => 'audio/midi', 'midi' => 'audio/midi', 'mov' => 'video/quicktime', 'mkv' => 'video/x-matroska', 'mp3' => 'audio/mpeg', 'mp4' => 'video/mp4', 'mp4a' => 'audio/mp4', 'mp4v' => 'video/mp4', 'mpe' => 'video/mpeg', 'mpeg' => 'video/mpeg', 'mpg' => 'video/mpeg', 'mpg4' => 'video/mp4', 'oga' => 'audio/ogg', 'ogg' => 'audio/ogg', 'ogv' => 'video/ogg', 'ogx' => 'application/ogg', 'pbm' => 'image/x-portable-bitmap', 'pdf' => 'application/pdf', 'pgm' => 'image/x-portable-graymap', 'png' => 'image/png', 'pnm' => 'image/x-portable-anymap', 'ppm' => 'image/x-portable-pixmap', 'ppt' => 'application/vnd.ms-powerpoint', 'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation', 'ps' => 'application/postscript', 'qt' => 'video/quicktime', 'rar' => 'application/x-rar-compressed', 'ras' => 'image/x-cmu-raster', 'rss' => 'application/rss+xml', 'rtf' => 'application/rtf', 'sgm' => 'text/sgml', 'sgml' => 'text/sgml', 'svg' => 'image/svg+xml', 'swf' => 'application/x-shockwave-flash', 'tar' => 'application/x-tar', 'tif' => 'image/tiff', 'tiff' => 'image/tiff', 'torrent' => 'application/x-bittorrent', 'ttf' => 'application/x-font-ttf', 'txt' => 'text/plain', 'wav' => 'audio/x-wav', 'webm' => 'video/webm', 'webp' => 'image/webp', 'wma' => 'audio/x-ms-wma', 'wmv' => 'video/x-ms-wmv', 'woff' => 'application/x-font-woff', 'wsdl' => 'application/wsdl+xml', 'xbm' => 'image/x-xbitmap', 'xls' => 'application/vnd.ms-excel', 'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'xml' => 'application/xml', 'xpm' => 'image/x-xpixmap', 'xwd' => 'image/x-xwindowdump', 'yaml' => 'text/yaml', 'yml' => 'text/yaml', 'zip' => 'application/zip'];
+ $extension = \strtolower($extension);
+ return isset($mimetypes[$extension]) ? $mimetypes[$extension] : null;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/MultipartStream.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/MultipartStream.php
new file mode 100644
index 000000000..932214c58
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/MultipartStream.php
@@ -0,0 +1,125 @@
+boundary = $boundary ?: \sha1(\uniqid('', \true));
+ $this->stream = $this->createStream($elements);
+ }
+ /**
+ * Get the boundary
+ *
+ * @return string
+ */
+ public function getBoundary()
+ {
+ return $this->boundary;
+ }
+ public function isWritable()
+ {
+ return \false;
+ }
+ /**
+ * Get the headers needed before transferring the content of a POST file
+ */
+ private function getHeaders(array $headers)
+ {
+ $str = '';
+ foreach ($headers as $key => $value) {
+ $str .= "{$key}: {$value}\r\n";
+ }
+ return "--{$this->boundary}\r\n" . \trim($str) . "\r\n\r\n";
+ }
+ /**
+ * Create the aggregate stream that will be used to upload the POST data
+ */
+ protected function createStream(array $elements)
+ {
+ $stream = new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\AppendStream();
+ foreach ($elements as $element) {
+ $this->addElement($stream, $element);
+ }
+ // Add the trailing boundary with CRLF
+ $stream->addStream(\Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Utils::streamFor("--{$this->boundary}--\r\n"));
+ return $stream;
+ }
+ private function addElement(\Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\AppendStream $stream, array $element)
+ {
+ foreach (['contents', 'name'] as $key) {
+ if (!\array_key_exists($key, $element)) {
+ throw new \InvalidArgumentException("A '{$key}' key is required");
+ }
+ }
+ $element['contents'] = \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Utils::streamFor($element['contents']);
+ if (empty($element['filename'])) {
+ $uri = $element['contents']->getMetadata('uri');
+ if (\substr($uri, 0, 6) !== 'php://') {
+ $element['filename'] = $uri;
+ }
+ }
+ list($body, $headers) = $this->createElement($element['name'], $element['contents'], isset($element['filename']) ? $element['filename'] : null, isset($element['headers']) ? $element['headers'] : []);
+ $stream->addStream(\Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Utils::streamFor($this->getHeaders($headers)));
+ $stream->addStream($body);
+ $stream->addStream(\Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Utils::streamFor("\r\n"));
+ }
+ /**
+ * @return array
+ */
+ private function createElement($name, \Google\Site_Kit_Dependencies\Psr\Http\Message\StreamInterface $stream, $filename, array $headers)
+ {
+ // Set a default content-disposition header if one was no provided
+ $disposition = $this->getHeader($headers, 'content-disposition');
+ if (!$disposition) {
+ $headers['Content-Disposition'] = $filename === '0' || $filename ? \sprintf('form-data; name="%s"; filename="%s"', $name, \basename($filename)) : "form-data; name=\"{$name}\"";
+ }
+ // Set a default content-length header if one was no provided
+ $length = $this->getHeader($headers, 'content-length');
+ if (!$length) {
+ if ($length = $stream->getSize()) {
+ $headers['Content-Length'] = (string) $length;
+ }
+ }
+ // Set a default Content-Type if one was not supplied
+ $type = $this->getHeader($headers, 'content-type');
+ if (!$type && ($filename === '0' || $filename)) {
+ if ($type = \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\MimeType::fromFilename($filename)) {
+ $headers['Content-Type'] = $type;
+ }
+ }
+ return [$stream, $headers];
+ }
+ private function getHeader(array $headers, $key)
+ {
+ $lowercaseHeader = \strtolower($key);
+ foreach ($headers as $k => $v) {
+ if (\strtolower($k) === $lowercaseHeader) {
+ return $v;
+ }
+ }
+ return null;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/NoSeekStream.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/NoSeekStream.php
new file mode 100644
index 000000000..b86a45b5c
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/NoSeekStream.php
@@ -0,0 +1,22 @@
+source = $source;
+ $this->size = isset($options['size']) ? $options['size'] : null;
+ $this->metadata = isset($options['metadata']) ? $options['metadata'] : [];
+ $this->buffer = new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\BufferStream();
+ }
+ public function __toString()
+ {
+ try {
+ return \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Utils::copyToString($this);
+ } catch (\Exception $e) {
+ return '';
+ }
+ }
+ public function close()
+ {
+ $this->detach();
+ }
+ public function detach()
+ {
+ $this->tellPos = \false;
+ $this->source = null;
+ return null;
+ }
+ public function getSize()
+ {
+ return $this->size;
+ }
+ public function tell()
+ {
+ return $this->tellPos;
+ }
+ public function eof()
+ {
+ return !$this->source;
+ }
+ public function isSeekable()
+ {
+ return \false;
+ }
+ public function rewind()
+ {
+ $this->seek(0);
+ }
+ public function seek($offset, $whence = \SEEK_SET)
+ {
+ throw new \RuntimeException('Cannot seek a PumpStream');
+ }
+ public function isWritable()
+ {
+ return \false;
+ }
+ public function write($string)
+ {
+ throw new \RuntimeException('Cannot write to a PumpStream');
+ }
+ public function isReadable()
+ {
+ return \true;
+ }
+ public function read($length)
+ {
+ $data = $this->buffer->read($length);
+ $readLen = \strlen($data);
+ $this->tellPos += $readLen;
+ $remaining = $length - $readLen;
+ if ($remaining) {
+ $this->pump($remaining);
+ $data .= $this->buffer->read($remaining);
+ $this->tellPos += \strlen($data) - $readLen;
+ }
+ return $data;
+ }
+ public function getContents()
+ {
+ $result = '';
+ while (!$this->eof()) {
+ $result .= $this->read(1000000);
+ }
+ return $result;
+ }
+ public function getMetadata($key = null)
+ {
+ if (!$key) {
+ return $this->metadata;
+ }
+ return isset($this->metadata[$key]) ? $this->metadata[$key] : null;
+ }
+ private function pump($length)
+ {
+ if ($this->source) {
+ do {
+ $data = \call_user_func($this->source, $length);
+ if ($data === \false || $data === null) {
+ $this->source = null;
+ return;
+ }
+ $this->buffer->write($data);
+ $length -= \strlen($data);
+ } while ($length > 0);
+ }
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/Query.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/Query.php
new file mode 100644
index 000000000..b66cafd13
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/Query.php
@@ -0,0 +1,105 @@
+ '1', 'foo[b]' => '2'])`.
+ *
+ * @param string $str Query string to parse
+ * @param int|bool $urlEncoding How the query string is encoded
+ *
+ * @return array
+ */
+ public static function parse($str, $urlEncoding = \true)
+ {
+ $result = [];
+ if ($str === '') {
+ return $result;
+ }
+ if ($urlEncoding === \true) {
+ $decoder = function ($value) {
+ return \rawurldecode(\str_replace('+', ' ', $value));
+ };
+ } elseif ($urlEncoding === \PHP_QUERY_RFC3986) {
+ $decoder = 'rawurldecode';
+ } elseif ($urlEncoding === \PHP_QUERY_RFC1738) {
+ $decoder = 'urldecode';
+ } else {
+ $decoder = function ($str) {
+ return $str;
+ };
+ }
+ foreach (\explode('&', $str) as $kvp) {
+ $parts = \explode('=', $kvp, 2);
+ $key = $decoder($parts[0]);
+ $value = isset($parts[1]) ? $decoder($parts[1]) : null;
+ if (!isset($result[$key])) {
+ $result[$key] = $value;
+ } else {
+ if (!\is_array($result[$key])) {
+ $result[$key] = [$result[$key]];
+ }
+ $result[$key][] = $value;
+ }
+ }
+ return $result;
+ }
+ /**
+ * Build a query string from an array of key value pairs.
+ *
+ * This function can use the return value of `parse()` to build a query
+ * string. This function does not modify the provided keys when an array is
+ * encountered (like `http_build_query()` would).
+ *
+ * @param array $params Query string parameters.
+ * @param int|false $encoding Set to false to not encode, PHP_QUERY_RFC3986
+ * to encode using RFC3986, or PHP_QUERY_RFC1738
+ * to encode using RFC1738.
+ *
+ * @return string
+ */
+ public static function build(array $params, $encoding = \PHP_QUERY_RFC3986)
+ {
+ if (!$params) {
+ return '';
+ }
+ if ($encoding === \false) {
+ $encoder = function ($str) {
+ return $str;
+ };
+ } elseif ($encoding === \PHP_QUERY_RFC3986) {
+ $encoder = 'rawurlencode';
+ } elseif ($encoding === \PHP_QUERY_RFC1738) {
+ $encoder = 'urlencode';
+ } else {
+ throw new \InvalidArgumentException('Invalid type');
+ }
+ $qs = '';
+ foreach ($params as $k => $v) {
+ $k = $encoder($k);
+ if (!\is_array($v)) {
+ $qs .= $k;
+ if ($v !== null) {
+ $qs .= '=' . $encoder($v);
+ }
+ $qs .= '&';
+ } else {
+ foreach ($v as $vv) {
+ $qs .= $k;
+ if ($vv !== null) {
+ $qs .= '=' . $encoder($vv);
+ }
+ $qs .= '&';
+ }
+ }
+ }
+ return $qs ? (string) \substr($qs, 0, -1) : '';
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/Request.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/Request.php
new file mode 100644
index 000000000..dfaaf87bc
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/Request.php
@@ -0,0 +1,120 @@
+assertMethod($method);
+ if (!$uri instanceof \Google\Site_Kit_Dependencies\Psr\Http\Message\UriInterface) {
+ $uri = new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Uri($uri);
+ }
+ $this->method = \strtoupper($method);
+ $this->uri = $uri;
+ $this->setHeaders($headers);
+ $this->protocol = $version;
+ if (!isset($this->headerNames['host'])) {
+ $this->updateHostFromUri();
+ }
+ if ($body !== '' && $body !== null) {
+ $this->stream = \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Utils::streamFor($body);
+ }
+ }
+ public function getRequestTarget()
+ {
+ if ($this->requestTarget !== null) {
+ return $this->requestTarget;
+ }
+ $target = $this->uri->getPath();
+ if ($target == '') {
+ $target = '/';
+ }
+ if ($this->uri->getQuery() != '') {
+ $target .= '?' . $this->uri->getQuery();
+ }
+ return $target;
+ }
+ public function withRequestTarget($requestTarget)
+ {
+ if (\preg_match('#\\s#', $requestTarget)) {
+ throw new \InvalidArgumentException('Invalid request target provided; cannot contain whitespace');
+ }
+ $new = clone $this;
+ $new->requestTarget = $requestTarget;
+ return $new;
+ }
+ public function getMethod()
+ {
+ return $this->method;
+ }
+ public function withMethod($method)
+ {
+ $this->assertMethod($method);
+ $new = clone $this;
+ $new->method = \strtoupper($method);
+ return $new;
+ }
+ public function getUri()
+ {
+ return $this->uri;
+ }
+ public function withUri(\Google\Site_Kit_Dependencies\Psr\Http\Message\UriInterface $uri, $preserveHost = \false)
+ {
+ if ($uri === $this->uri) {
+ return $this;
+ }
+ $new = clone $this;
+ $new->uri = $uri;
+ if (!$preserveHost || !isset($this->headerNames['host'])) {
+ $new->updateHostFromUri();
+ }
+ return $new;
+ }
+ private function updateHostFromUri()
+ {
+ $host = $this->uri->getHost();
+ if ($host == '') {
+ return;
+ }
+ if (($port = $this->uri->getPort()) !== null) {
+ $host .= ':' . $port;
+ }
+ if (isset($this->headerNames['host'])) {
+ $header = $this->headerNames['host'];
+ } else {
+ $header = 'Host';
+ $this->headerNames['host'] = 'Host';
+ }
+ // Ensure Host is the first header.
+ // See: http://tools.ietf.org/html/rfc7230#section-5.4
+ $this->headers = [$header => [$host]] + $this->headers;
+ }
+ private function assertMethod($method)
+ {
+ if (!\is_string($method) || $method === '') {
+ throw new \InvalidArgumentException('Method must be a non-empty string.');
+ }
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/Response.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/Response.php
new file mode 100644
index 000000000..1a6685f2b
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/Response.php
@@ -0,0 +1,76 @@
+ 'Continue', 101 => 'Switching Protocols', 102 => 'Processing', 200 => 'OK', 201 => 'Created', 202 => 'Accepted', 203 => 'Non-Authoritative Information', 204 => 'No Content', 205 => 'Reset Content', 206 => 'Partial Content', 207 => 'Multi-status', 208 => 'Already Reported', 300 => 'Multiple Choices', 301 => 'Moved Permanently', 302 => 'Found', 303 => 'See Other', 304 => 'Not Modified', 305 => 'Use Proxy', 306 => 'Switch Proxy', 307 => 'Temporary Redirect', 400 => 'Bad Request', 401 => 'Unauthorized', 402 => 'Payment Required', 403 => 'Forbidden', 404 => 'Not Found', 405 => 'Method Not Allowed', 406 => 'Not Acceptable', 407 => 'Proxy Authentication Required', 408 => 'Request Time-out', 409 => 'Conflict', 410 => 'Gone', 411 => 'Length Required', 412 => 'Precondition Failed', 413 => 'Request Entity Too Large', 414 => 'Request-URI Too Large', 415 => 'Unsupported Media Type', 416 => 'Requested range not satisfiable', 417 => 'Expectation Failed', 418 => 'I\'m a teapot', 422 => 'Unprocessable Entity', 423 => 'Locked', 424 => 'Failed Dependency', 425 => 'Unordered Collection', 426 => 'Upgrade Required', 428 => 'Precondition Required', 429 => 'Too Many Requests', 431 => 'Request Header Fields Too Large', 451 => 'Unavailable For Legal Reasons', 500 => 'Internal Server Error', 501 => 'Not Implemented', 502 => 'Bad Gateway', 503 => 'Service Unavailable', 504 => 'Gateway Time-out', 505 => 'HTTP Version not supported', 506 => 'Variant Also Negotiates', 507 => 'Insufficient Storage', 508 => 'Loop Detected', 511 => 'Network Authentication Required'];
+ /** @var string */
+ private $reasonPhrase = '';
+ /** @var int */
+ private $statusCode = 200;
+ /**
+ * @param int $status Status code
+ * @param array $headers Response headers
+ * @param string|resource|StreamInterface|null $body Response body
+ * @param string $version Protocol version
+ * @param string|null $reason Reason phrase (when empty a default will be used based on the status code)
+ */
+ public function __construct($status = 200, array $headers = [], $body = null, $version = '1.1', $reason = null)
+ {
+ $this->assertStatusCodeIsInteger($status);
+ $status = (int) $status;
+ $this->assertStatusCodeRange($status);
+ $this->statusCode = $status;
+ if ($body !== '' && $body !== null) {
+ $this->stream = \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Utils::streamFor($body);
+ }
+ $this->setHeaders($headers);
+ if ($reason == '' && isset(self::$phrases[$this->statusCode])) {
+ $this->reasonPhrase = self::$phrases[$this->statusCode];
+ } else {
+ $this->reasonPhrase = (string) $reason;
+ }
+ $this->protocol = $version;
+ }
+ public function getStatusCode()
+ {
+ return $this->statusCode;
+ }
+ public function getReasonPhrase()
+ {
+ return $this->reasonPhrase;
+ }
+ public function withStatus($code, $reasonPhrase = '')
+ {
+ $this->assertStatusCodeIsInteger($code);
+ $code = (int) $code;
+ $this->assertStatusCodeRange($code);
+ $new = clone $this;
+ $new->statusCode = $code;
+ if ($reasonPhrase == '' && isset(self::$phrases[$new->statusCode])) {
+ $reasonPhrase = self::$phrases[$new->statusCode];
+ }
+ $new->reasonPhrase = (string) $reasonPhrase;
+ return $new;
+ }
+ private function assertStatusCodeIsInteger($statusCode)
+ {
+ if (\filter_var($statusCode, \FILTER_VALIDATE_INT) === \false) {
+ throw new \InvalidArgumentException('Status code must be an integer value.');
+ }
+ }
+ private function assertStatusCodeRange($statusCode)
+ {
+ if ($statusCode < 100 || $statusCode >= 600) {
+ throw new \InvalidArgumentException('Status code must be an integer value between 1xx and 5xx.');
+ }
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/Rfc7230.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/Rfc7230.php
new file mode 100644
index 000000000..ebe8dd338
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/Rfc7230.php
@@ -0,0 +1,19 @@
+@,;:\\\"/[\\]?={}\1- ]++):[ \t]*+((?:[ \t]*+[!-~€-ÿ]++)*+)[ \t]*+\r?\n)m";
+ const HEADER_FOLD_REGEX = "(\r?\n[ \t]++)";
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/ServerRequest.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/ServerRequest.php
new file mode 100644
index 000000000..b91ca2456
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/ServerRequest.php
@@ -0,0 +1,306 @@
+serverParams = $serverParams;
+ parent::__construct($method, $uri, $headers, $body, $version);
+ }
+ /**
+ * Return an UploadedFile instance array.
+ *
+ * @param array $files A array which respect $_FILES structure
+ *
+ * @return array
+ *
+ * @throws InvalidArgumentException for unrecognized values
+ */
+ public static function normalizeFiles(array $files)
+ {
+ $normalized = [];
+ foreach ($files as $key => $value) {
+ if ($value instanceof \Google\Site_Kit_Dependencies\Psr\Http\Message\UploadedFileInterface) {
+ $normalized[$key] = $value;
+ } elseif (\is_array($value) && isset($value['tmp_name'])) {
+ $normalized[$key] = self::createUploadedFileFromSpec($value);
+ } elseif (\is_array($value)) {
+ $normalized[$key] = self::normalizeFiles($value);
+ continue;
+ } else {
+ throw new \InvalidArgumentException('Invalid value in files specification');
+ }
+ }
+ return $normalized;
+ }
+ /**
+ * Create and return an UploadedFile instance from a $_FILES specification.
+ *
+ * If the specification represents an array of values, this method will
+ * delegate to normalizeNestedFileSpec() and return that return value.
+ *
+ * @param array $value $_FILES struct
+ *
+ * @return array|UploadedFileInterface
+ */
+ private static function createUploadedFileFromSpec(array $value)
+ {
+ if (\is_array($value['tmp_name'])) {
+ return self::normalizeNestedFileSpec($value);
+ }
+ return new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\UploadedFile($value['tmp_name'], (int) $value['size'], (int) $value['error'], $value['name'], $value['type']);
+ }
+ /**
+ * Normalize an array of file specifications.
+ *
+ * Loops through all nested files and returns a normalized array of
+ * UploadedFileInterface instances.
+ *
+ * @param array $files
+ *
+ * @return UploadedFileInterface[]
+ */
+ private static function normalizeNestedFileSpec(array $files = [])
+ {
+ $normalizedFiles = [];
+ foreach (\array_keys($files['tmp_name']) as $key) {
+ $spec = ['tmp_name' => $files['tmp_name'][$key], 'size' => $files['size'][$key], 'error' => $files['error'][$key], 'name' => $files['name'][$key], 'type' => $files['type'][$key]];
+ $normalizedFiles[$key] = self::createUploadedFileFromSpec($spec);
+ }
+ return $normalizedFiles;
+ }
+ /**
+ * Return a ServerRequest populated with superglobals:
+ * $_GET
+ * $_POST
+ * $_COOKIE
+ * $_FILES
+ * $_SERVER
+ *
+ * @return ServerRequestInterface
+ */
+ public static function fromGlobals()
+ {
+ $method = isset($_SERVER['REQUEST_METHOD']) ? $_SERVER['REQUEST_METHOD'] : 'GET';
+ $headers = \getallheaders();
+ $uri = self::getUriFromGlobals();
+ $body = new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\CachingStream(new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\LazyOpenStream('php://input', 'r+'));
+ $protocol = isset($_SERVER['SERVER_PROTOCOL']) ? \str_replace('HTTP/', '', $_SERVER['SERVER_PROTOCOL']) : '1.1';
+ $serverRequest = new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\ServerRequest($method, $uri, $headers, $body, $protocol, $_SERVER);
+ return $serverRequest->withCookieParams($_COOKIE)->withQueryParams($_GET)->withParsedBody($_POST)->withUploadedFiles(self::normalizeFiles($_FILES));
+ }
+ private static function extractHostAndPortFromAuthority($authority)
+ {
+ $uri = 'http://' . $authority;
+ $parts = \parse_url($uri);
+ if (\false === $parts) {
+ return [null, null];
+ }
+ $host = isset($parts['host']) ? $parts['host'] : null;
+ $port = isset($parts['port']) ? $parts['port'] : null;
+ return [$host, $port];
+ }
+ /**
+ * Get a Uri populated with values from $_SERVER.
+ *
+ * @return UriInterface
+ */
+ public static function getUriFromGlobals()
+ {
+ $uri = new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Uri('');
+ $uri = $uri->withScheme(!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' ? 'https' : 'http');
+ $hasPort = \false;
+ if (isset($_SERVER['HTTP_HOST'])) {
+ list($host, $port) = self::extractHostAndPortFromAuthority($_SERVER['HTTP_HOST']);
+ if ($host !== null) {
+ $uri = $uri->withHost($host);
+ }
+ if ($port !== null) {
+ $hasPort = \true;
+ $uri = $uri->withPort($port);
+ }
+ } elseif (isset($_SERVER['SERVER_NAME'])) {
+ $uri = $uri->withHost($_SERVER['SERVER_NAME']);
+ } elseif (isset($_SERVER['SERVER_ADDR'])) {
+ $uri = $uri->withHost($_SERVER['SERVER_ADDR']);
+ }
+ if (!$hasPort && isset($_SERVER['SERVER_PORT'])) {
+ $uri = $uri->withPort($_SERVER['SERVER_PORT']);
+ }
+ $hasQuery = \false;
+ if (isset($_SERVER['REQUEST_URI'])) {
+ $requestUriParts = \explode('?', $_SERVER['REQUEST_URI'], 2);
+ $uri = $uri->withPath($requestUriParts[0]);
+ if (isset($requestUriParts[1])) {
+ $hasQuery = \true;
+ $uri = $uri->withQuery($requestUriParts[1]);
+ }
+ }
+ if (!$hasQuery && isset($_SERVER['QUERY_STRING'])) {
+ $uri = $uri->withQuery($_SERVER['QUERY_STRING']);
+ }
+ return $uri;
+ }
+ /**
+ * {@inheritdoc}
+ */
+ public function getServerParams()
+ {
+ return $this->serverParams;
+ }
+ /**
+ * {@inheritdoc}
+ */
+ public function getUploadedFiles()
+ {
+ return $this->uploadedFiles;
+ }
+ /**
+ * {@inheritdoc}
+ */
+ public function withUploadedFiles(array $uploadedFiles)
+ {
+ $new = clone $this;
+ $new->uploadedFiles = $uploadedFiles;
+ return $new;
+ }
+ /**
+ * {@inheritdoc}
+ */
+ public function getCookieParams()
+ {
+ return $this->cookieParams;
+ }
+ /**
+ * {@inheritdoc}
+ */
+ public function withCookieParams(array $cookies)
+ {
+ $new = clone $this;
+ $new->cookieParams = $cookies;
+ return $new;
+ }
+ /**
+ * {@inheritdoc}
+ */
+ public function getQueryParams()
+ {
+ return $this->queryParams;
+ }
+ /**
+ * {@inheritdoc}
+ */
+ public function withQueryParams(array $query)
+ {
+ $new = clone $this;
+ $new->queryParams = $query;
+ return $new;
+ }
+ /**
+ * {@inheritdoc}
+ */
+ public function getParsedBody()
+ {
+ return $this->parsedBody;
+ }
+ /**
+ * {@inheritdoc}
+ */
+ public function withParsedBody($data)
+ {
+ $new = clone $this;
+ $new->parsedBody = $data;
+ return $new;
+ }
+ /**
+ * {@inheritdoc}
+ */
+ public function getAttributes()
+ {
+ return $this->attributes;
+ }
+ /**
+ * {@inheritdoc}
+ */
+ public function getAttribute($attribute, $default = null)
+ {
+ if (\false === \array_key_exists($attribute, $this->attributes)) {
+ return $default;
+ }
+ return $this->attributes[$attribute];
+ }
+ /**
+ * {@inheritdoc}
+ */
+ public function withAttribute($attribute, $value)
+ {
+ $new = clone $this;
+ $new->attributes[$attribute] = $value;
+ return $new;
+ }
+ /**
+ * {@inheritdoc}
+ */
+ public function withoutAttribute($attribute)
+ {
+ if (\false === \array_key_exists($attribute, $this->attributes)) {
+ return $this;
+ }
+ $new = clone $this;
+ unset($new->attributes[$attribute]);
+ return $new;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/Stream.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/Stream.php
new file mode 100644
index 000000000..30ae562a0
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/Stream.php
@@ -0,0 +1,223 @@
+size = $options['size'];
+ }
+ $this->customMetadata = isset($options['metadata']) ? $options['metadata'] : [];
+ $this->stream = $stream;
+ $meta = \stream_get_meta_data($this->stream);
+ $this->seekable = $meta['seekable'];
+ $this->readable = (bool) \preg_match(self::READABLE_MODES, $meta['mode']);
+ $this->writable = (bool) \preg_match(self::WRITABLE_MODES, $meta['mode']);
+ $this->uri = $this->getMetadata('uri');
+ }
+ /**
+ * Closes the stream when the destructed
+ */
+ public function __destruct()
+ {
+ $this->close();
+ }
+ public function __toString()
+ {
+ try {
+ if ($this->isSeekable()) {
+ $this->seek(0);
+ }
+ return $this->getContents();
+ } catch (\Exception $e) {
+ return '';
+ }
+ }
+ public function getContents()
+ {
+ if (!isset($this->stream)) {
+ throw new \RuntimeException('Stream is detached');
+ }
+ $contents = \stream_get_contents($this->stream);
+ if ($contents === \false) {
+ throw new \RuntimeException('Unable to read stream contents');
+ }
+ return $contents;
+ }
+ public function close()
+ {
+ if (isset($this->stream)) {
+ if (\is_resource($this->stream)) {
+ \fclose($this->stream);
+ }
+ $this->detach();
+ }
+ }
+ public function detach()
+ {
+ if (!isset($this->stream)) {
+ return null;
+ }
+ $result = $this->stream;
+ unset($this->stream);
+ $this->size = $this->uri = null;
+ $this->readable = $this->writable = $this->seekable = \false;
+ return $result;
+ }
+ public function getSize()
+ {
+ if ($this->size !== null) {
+ return $this->size;
+ }
+ if (!isset($this->stream)) {
+ return null;
+ }
+ // Clear the stat cache if the stream has a URI
+ if ($this->uri) {
+ \clearstatcache(\true, $this->uri);
+ }
+ $stats = \fstat($this->stream);
+ if (isset($stats['size'])) {
+ $this->size = $stats['size'];
+ return $this->size;
+ }
+ return null;
+ }
+ public function isReadable()
+ {
+ return $this->readable;
+ }
+ public function isWritable()
+ {
+ return $this->writable;
+ }
+ public function isSeekable()
+ {
+ return $this->seekable;
+ }
+ public function eof()
+ {
+ if (!isset($this->stream)) {
+ throw new \RuntimeException('Stream is detached');
+ }
+ return \feof($this->stream);
+ }
+ public function tell()
+ {
+ if (!isset($this->stream)) {
+ throw new \RuntimeException('Stream is detached');
+ }
+ $result = \ftell($this->stream);
+ if ($result === \false) {
+ throw new \RuntimeException('Unable to determine stream position');
+ }
+ return $result;
+ }
+ public function rewind()
+ {
+ $this->seek(0);
+ }
+ public function seek($offset, $whence = \SEEK_SET)
+ {
+ $whence = (int) $whence;
+ if (!isset($this->stream)) {
+ throw new \RuntimeException('Stream is detached');
+ }
+ if (!$this->seekable) {
+ throw new \RuntimeException('Stream is not seekable');
+ }
+ if (\fseek($this->stream, $offset, $whence) === -1) {
+ throw new \RuntimeException('Unable to seek to stream position ' . $offset . ' with whence ' . \var_export($whence, \true));
+ }
+ }
+ public function read($length)
+ {
+ if (!isset($this->stream)) {
+ throw new \RuntimeException('Stream is detached');
+ }
+ if (!$this->readable) {
+ throw new \RuntimeException('Cannot read from non-readable stream');
+ }
+ if ($length < 0) {
+ throw new \RuntimeException('Length parameter cannot be negative');
+ }
+ if (0 === $length) {
+ return '';
+ }
+ $string = \fread($this->stream, $length);
+ if (\false === $string) {
+ throw new \RuntimeException('Unable to read from stream');
+ }
+ return $string;
+ }
+ public function write($string)
+ {
+ if (!isset($this->stream)) {
+ throw new \RuntimeException('Stream is detached');
+ }
+ if (!$this->writable) {
+ throw new \RuntimeException('Cannot write to a non-writable stream');
+ }
+ // We can't know the size after writing anything
+ $this->size = null;
+ $result = \fwrite($this->stream, $string);
+ if ($result === \false) {
+ throw new \RuntimeException('Unable to write to stream');
+ }
+ return $result;
+ }
+ public function getMetadata($key = null)
+ {
+ if (!isset($this->stream)) {
+ return $key ? null : [];
+ } elseif (!$key) {
+ return $this->customMetadata + \stream_get_meta_data($this->stream);
+ } elseif (isset($this->customMetadata[$key])) {
+ return $this->customMetadata[$key];
+ }
+ $meta = \stream_get_meta_data($this->stream);
+ return isset($meta[$key]) ? $meta[$key] : null;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/StreamDecoratorTrait.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/StreamDecoratorTrait.php
new file mode 100644
index 000000000..8d759a69b
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/StreamDecoratorTrait.php
@@ -0,0 +1,130 @@
+stream = $stream;
+ }
+ /**
+ * Magic method used to create a new stream if streams are not added in
+ * the constructor of a decorator (e.g., LazyOpenStream).
+ *
+ * @param string $name Name of the property (allows "stream" only).
+ *
+ * @return StreamInterface
+ */
+ public function __get($name)
+ {
+ if ($name == 'stream') {
+ $this->stream = $this->createStream();
+ return $this->stream;
+ }
+ throw new \UnexpectedValueException("{$name} not found on class");
+ }
+ public function __toString()
+ {
+ try {
+ if ($this->isSeekable()) {
+ $this->seek(0);
+ }
+ return $this->getContents();
+ } catch (\Exception $e) {
+ // Really, PHP? https://bugs.php.net/bug.php?id=53648
+ \trigger_error('StreamDecorator::__toString exception: ' . (string) $e, \E_USER_ERROR);
+ return '';
+ }
+ }
+ public function getContents()
+ {
+ return \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Utils::copyToString($this);
+ }
+ /**
+ * Allow decorators to implement custom methods
+ *
+ * @param string $method Missing method name
+ * @param array $args Method arguments
+ *
+ * @return mixed
+ */
+ public function __call($method, array $args)
+ {
+ $result = \call_user_func_array([$this->stream, $method], $args);
+ // Always return the wrapped object if the result is a return $this
+ return $result === $this->stream ? $this : $result;
+ }
+ public function close()
+ {
+ $this->stream->close();
+ }
+ public function getMetadata($key = null)
+ {
+ return $this->stream->getMetadata($key);
+ }
+ public function detach()
+ {
+ return $this->stream->detach();
+ }
+ public function getSize()
+ {
+ return $this->stream->getSize();
+ }
+ public function eof()
+ {
+ return $this->stream->eof();
+ }
+ public function tell()
+ {
+ return $this->stream->tell();
+ }
+ public function isReadable()
+ {
+ return $this->stream->isReadable();
+ }
+ public function isWritable()
+ {
+ return $this->stream->isWritable();
+ }
+ public function isSeekable()
+ {
+ return $this->stream->isSeekable();
+ }
+ public function rewind()
+ {
+ $this->seek(0);
+ }
+ public function seek($offset, $whence = \SEEK_SET)
+ {
+ $this->stream->seek($offset, $whence);
+ }
+ public function read($length)
+ {
+ return $this->stream->read($length);
+ }
+ public function write($string)
+ {
+ return $this->stream->write($string);
+ }
+ /**
+ * Implement in subclasses to dynamically create streams when requested.
+ *
+ * @return StreamInterface
+ *
+ * @throws \BadMethodCallException
+ */
+ protected function createStream()
+ {
+ throw new \BadMethodCallException('Not implemented');
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/StreamWrapper.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/StreamWrapper.php
new file mode 100644
index 000000000..d408edc54
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/StreamWrapper.php
@@ -0,0 +1,105 @@
+isReadable()) {
+ $mode = $stream->isWritable() ? 'r+' : 'r';
+ } elseif ($stream->isWritable()) {
+ $mode = 'w';
+ } else {
+ throw new \InvalidArgumentException('The stream must be readable, ' . 'writable, or both.');
+ }
+ return \fopen('guzzle://stream', $mode, null, self::createStreamContext($stream));
+ }
+ /**
+ * Creates a stream context that can be used to open a stream as a php stream resource.
+ *
+ * @param StreamInterface $stream
+ *
+ * @return resource
+ */
+ public static function createStreamContext(\Google\Site_Kit_Dependencies\Psr\Http\Message\StreamInterface $stream)
+ {
+ return \stream_context_create(['guzzle' => ['stream' => $stream]]);
+ }
+ /**
+ * Registers the stream wrapper if needed
+ */
+ public static function register()
+ {
+ if (!\in_array('guzzle', \stream_get_wrappers())) {
+ \stream_wrapper_register('guzzle', __CLASS__);
+ }
+ }
+ public function stream_open($path, $mode, $options, &$opened_path)
+ {
+ $options = \stream_context_get_options($this->context);
+ if (!isset($options['guzzle']['stream'])) {
+ return \false;
+ }
+ $this->mode = $mode;
+ $this->stream = $options['guzzle']['stream'];
+ return \true;
+ }
+ public function stream_read($count)
+ {
+ return $this->stream->read($count);
+ }
+ public function stream_write($data)
+ {
+ return (int) $this->stream->write($data);
+ }
+ public function stream_tell()
+ {
+ return $this->stream->tell();
+ }
+ public function stream_eof()
+ {
+ return $this->stream->eof();
+ }
+ public function stream_seek($offset, $whence)
+ {
+ $this->stream->seek($offset, $whence);
+ return \true;
+ }
+ public function stream_cast($cast_as)
+ {
+ $stream = clone $this->stream;
+ return $stream->detach();
+ }
+ public function stream_stat()
+ {
+ static $modeMap = ['r' => 33060, 'rb' => 33060, 'r+' => 33206, 'w' => 33188, 'wb' => 33188];
+ return ['dev' => 0, 'ino' => 0, 'mode' => $modeMap[$this->mode], 'nlink' => 0, 'uid' => 0, 'gid' => 0, 'rdev' => 0, 'size' => $this->stream->getSize() ?: 0, 'atime' => 0, 'mtime' => 0, 'ctime' => 0, 'blksize' => 0, 'blocks' => 0];
+ }
+ public function url_stat($path, $flags)
+ {
+ return ['dev' => 0, 'ino' => 0, 'mode' => 0, 'nlink' => 0, 'uid' => 0, 'gid' => 0, 'rdev' => 0, 'size' => 0, 'atime' => 0, 'mtime' => 0, 'ctime' => 0, 'blksize' => 0, 'blocks' => 0];
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/UploadedFile.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/UploadedFile.php
new file mode 100644
index 000000000..04af97c7c
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/UploadedFile.php
@@ -0,0 +1,255 @@
+setError($errorStatus);
+ $this->setSize($size);
+ $this->setClientFilename($clientFilename);
+ $this->setClientMediaType($clientMediaType);
+ if ($this->isOk()) {
+ $this->setStreamOrFile($streamOrFile);
+ }
+ }
+ /**
+ * Depending on the value set file or stream variable
+ *
+ * @param mixed $streamOrFile
+ *
+ * @throws InvalidArgumentException
+ */
+ private function setStreamOrFile($streamOrFile)
+ {
+ if (\is_string($streamOrFile)) {
+ $this->file = $streamOrFile;
+ } elseif (\is_resource($streamOrFile)) {
+ $this->stream = new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Stream($streamOrFile);
+ } elseif ($streamOrFile instanceof \Google\Site_Kit_Dependencies\Psr\Http\Message\StreamInterface) {
+ $this->stream = $streamOrFile;
+ } else {
+ throw new \InvalidArgumentException('Invalid stream or file provided for UploadedFile');
+ }
+ }
+ /**
+ * @param int $error
+ *
+ * @throws InvalidArgumentException
+ */
+ private function setError($error)
+ {
+ if (\false === \is_int($error)) {
+ throw new \InvalidArgumentException('Upload file error status must be an integer');
+ }
+ if (\false === \in_array($error, \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\UploadedFile::$errors)) {
+ throw new \InvalidArgumentException('Invalid error status for UploadedFile');
+ }
+ $this->error = $error;
+ }
+ /**
+ * @param int $size
+ *
+ * @throws InvalidArgumentException
+ */
+ private function setSize($size)
+ {
+ if (\false === \is_int($size)) {
+ throw new \InvalidArgumentException('Upload file size must be an integer');
+ }
+ $this->size = $size;
+ }
+ /**
+ * @param mixed $param
+ *
+ * @return bool
+ */
+ private function isStringOrNull($param)
+ {
+ return \in_array(\gettype($param), ['string', 'NULL']);
+ }
+ /**
+ * @param mixed $param
+ *
+ * @return bool
+ */
+ private function isStringNotEmpty($param)
+ {
+ return \is_string($param) && \false === empty($param);
+ }
+ /**
+ * @param string|null $clientFilename
+ *
+ * @throws InvalidArgumentException
+ */
+ private function setClientFilename($clientFilename)
+ {
+ if (\false === $this->isStringOrNull($clientFilename)) {
+ throw new \InvalidArgumentException('Upload file client filename must be a string or null');
+ }
+ $this->clientFilename = $clientFilename;
+ }
+ /**
+ * @param string|null $clientMediaType
+ *
+ * @throws InvalidArgumentException
+ */
+ private function setClientMediaType($clientMediaType)
+ {
+ if (\false === $this->isStringOrNull($clientMediaType)) {
+ throw new \InvalidArgumentException('Upload file client media type must be a string or null');
+ }
+ $this->clientMediaType = $clientMediaType;
+ }
+ /**
+ * Return true if there is no upload error
+ *
+ * @return bool
+ */
+ private function isOk()
+ {
+ return $this->error === \UPLOAD_ERR_OK;
+ }
+ /**
+ * @return bool
+ */
+ public function isMoved()
+ {
+ return $this->moved;
+ }
+ /**
+ * @throws RuntimeException if is moved or not ok
+ */
+ private function validateActive()
+ {
+ if (\false === $this->isOk()) {
+ throw new \RuntimeException('Cannot retrieve stream due to upload error');
+ }
+ if ($this->isMoved()) {
+ throw new \RuntimeException('Cannot retrieve stream after it has already been moved');
+ }
+ }
+ /**
+ * {@inheritdoc}
+ *
+ * @throws RuntimeException if the upload was not successful.
+ */
+ public function getStream()
+ {
+ $this->validateActive();
+ if ($this->stream instanceof \Google\Site_Kit_Dependencies\Psr\Http\Message\StreamInterface) {
+ return $this->stream;
+ }
+ return new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\LazyOpenStream($this->file, 'r+');
+ }
+ /**
+ * {@inheritdoc}
+ *
+ * @see http://php.net/is_uploaded_file
+ * @see http://php.net/move_uploaded_file
+ *
+ * @param string $targetPath Path to which to move the uploaded file.
+ *
+ * @throws RuntimeException if the upload was not successful.
+ * @throws InvalidArgumentException if the $path specified is invalid.
+ * @throws RuntimeException on any error during the move operation, or on
+ * the second or subsequent call to the method.
+ */
+ public function moveTo($targetPath)
+ {
+ $this->validateActive();
+ if (\false === $this->isStringNotEmpty($targetPath)) {
+ throw new \InvalidArgumentException('Invalid path provided for move operation; must be a non-empty string');
+ }
+ if ($this->file) {
+ $this->moved = \php_sapi_name() == 'cli' ? \rename($this->file, $targetPath) : \move_uploaded_file($this->file, $targetPath);
+ } else {
+ \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Utils::copyToStream($this->getStream(), new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\LazyOpenStream($targetPath, 'w'));
+ $this->moved = \true;
+ }
+ if (\false === $this->moved) {
+ throw new \RuntimeException(\sprintf('Uploaded file could not be moved to %s', $targetPath));
+ }
+ }
+ /**
+ * {@inheritdoc}
+ *
+ * @return int|null The file size in bytes or null if unknown.
+ */
+ public function getSize()
+ {
+ return $this->size;
+ }
+ /**
+ * {@inheritdoc}
+ *
+ * @see http://php.net/manual/en/features.file-upload.errors.php
+ *
+ * @return int One of PHP's UPLOAD_ERR_XXX constants.
+ */
+ public function getError()
+ {
+ return $this->error;
+ }
+ /**
+ * {@inheritdoc}
+ *
+ * @return string|null The filename sent by the client or null if none
+ * was provided.
+ */
+ public function getClientFilename()
+ {
+ return $this->clientFilename;
+ }
+ /**
+ * {@inheritdoc}
+ */
+ public function getClientMediaType()
+ {
+ return $this->clientMediaType;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/Uri.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/Uri.php
new file mode 100644
index 000000000..1b617e4dd
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/Uri.php
@@ -0,0 +1,638 @@
+ 80, 'https' => 443, 'ftp' => 21, 'gopher' => 70, 'nntp' => 119, 'news' => 119, 'telnet' => 23, 'tn3270' => 23, 'imap' => 143, 'pop' => 110, 'ldap' => 389];
+ private static $charUnreserved = 'a-zA-Z0-9_\\-\\.~';
+ private static $charSubDelims = '!\\$&\'\\(\\)\\*\\+,;=';
+ private static $replaceQuery = ['=' => '%3D', '&' => '%26'];
+ /** @var string Uri scheme. */
+ private $scheme = '';
+ /** @var string Uri user info. */
+ private $userInfo = '';
+ /** @var string Uri host. */
+ private $host = '';
+ /** @var int|null Uri port. */
+ private $port;
+ /** @var string Uri path. */
+ private $path = '';
+ /** @var string Uri query string. */
+ private $query = '';
+ /** @var string Uri fragment. */
+ private $fragment = '';
+ /**
+ * @param string $uri URI to parse
+ */
+ public function __construct($uri = '')
+ {
+ // weak type check to also accept null until we can add scalar type hints
+ if ($uri != '') {
+ $parts = self::parse($uri);
+ if ($parts === \false) {
+ throw new \InvalidArgumentException("Unable to parse URI: {$uri}");
+ }
+ $this->applyParts($parts);
+ }
+ }
+ /**
+ * UTF-8 aware \parse_url() replacement.
+ *
+ * The internal function produces broken output for non ASCII domain names
+ * (IDN) when used with locales other than "C".
+ *
+ * On the other hand, cURL understands IDN correctly only when UTF-8 locale
+ * is configured ("C.UTF-8", "en_US.UTF-8", etc.).
+ *
+ * @see https://bugs.php.net/bug.php?id=52923
+ * @see https://www.php.net/manual/en/function.parse-url.php#114817
+ * @see https://curl.haxx.se/libcurl/c/CURLOPT_URL.html#ENCODING
+ *
+ * @param string $url
+ *
+ * @return array|false
+ */
+ private static function parse($url)
+ {
+ // If IPv6
+ $prefix = '';
+ if (\preg_match('%^(.*://\\[[0-9:a-f]+\\])(.*?)$%', $url, $matches)) {
+ $prefix = $matches[1];
+ $url = $matches[2];
+ }
+ $encodedUrl = \preg_replace_callback('%[^:/@?&=#]+%usD', static function ($matches) {
+ return \urlencode($matches[0]);
+ }, $url);
+ $result = \parse_url($prefix . $encodedUrl);
+ if ($result === \false) {
+ return \false;
+ }
+ return \array_map('urldecode', $result);
+ }
+ public function __toString()
+ {
+ return self::composeComponents($this->scheme, $this->getAuthority(), $this->path, $this->query, $this->fragment);
+ }
+ /**
+ * Composes a URI reference string from its various components.
+ *
+ * Usually this method does not need to be called manually but instead is used indirectly via
+ * `Psr\Http\Message\UriInterface::__toString`.
+ *
+ * PSR-7 UriInterface treats an empty component the same as a missing component as
+ * getQuery(), getFragment() etc. always return a string. This explains the slight
+ * difference to RFC 3986 Section 5.3.
+ *
+ * Another adjustment is that the authority separator is added even when the authority is missing/empty
+ * for the "file" scheme. This is because PHP stream functions like `file_get_contents` only work with
+ * `file:///myfile` but not with `file:/myfile` although they are equivalent according to RFC 3986. But
+ * `file:///` is the more common syntax for the file scheme anyway (Chrome for example redirects to
+ * that format).
+ *
+ * @param string $scheme
+ * @param string $authority
+ * @param string $path
+ * @param string $query
+ * @param string $fragment
+ *
+ * @return string
+ *
+ * @link https://tools.ietf.org/html/rfc3986#section-5.3
+ */
+ public static function composeComponents($scheme, $authority, $path, $query, $fragment)
+ {
+ $uri = '';
+ // weak type checks to also accept null until we can add scalar type hints
+ if ($scheme != '') {
+ $uri .= $scheme . ':';
+ }
+ if ($authority != '' || $scheme === 'file') {
+ $uri .= '//' . $authority;
+ }
+ $uri .= $path;
+ if ($query != '') {
+ $uri .= '?' . $query;
+ }
+ if ($fragment != '') {
+ $uri .= '#' . $fragment;
+ }
+ return $uri;
+ }
+ /**
+ * Whether the URI has the default port of the current scheme.
+ *
+ * `Psr\Http\Message\UriInterface::getPort` may return null or the standard port. This method can be used
+ * independently of the implementation.
+ *
+ * @param UriInterface $uri
+ *
+ * @return bool
+ */
+ public static function isDefaultPort(\Google\Site_Kit_Dependencies\Psr\Http\Message\UriInterface $uri)
+ {
+ return $uri->getPort() === null || isset(self::$defaultPorts[$uri->getScheme()]) && $uri->getPort() === self::$defaultPorts[$uri->getScheme()];
+ }
+ /**
+ * Whether the URI is absolute, i.e. it has a scheme.
+ *
+ * An instance of UriInterface can either be an absolute URI or a relative reference. This method returns true
+ * if it is the former. An absolute URI has a scheme. A relative reference is used to express a URI relative
+ * to another URI, the base URI. Relative references can be divided into several forms:
+ * - network-path references, e.g. '//example.com/path'
+ * - absolute-path references, e.g. '/path'
+ * - relative-path references, e.g. 'subpath'
+ *
+ * @param UriInterface $uri
+ *
+ * @return bool
+ *
+ * @see Uri::isNetworkPathReference
+ * @see Uri::isAbsolutePathReference
+ * @see Uri::isRelativePathReference
+ * @link https://tools.ietf.org/html/rfc3986#section-4
+ */
+ public static function isAbsolute(\Google\Site_Kit_Dependencies\Psr\Http\Message\UriInterface $uri)
+ {
+ return $uri->getScheme() !== '';
+ }
+ /**
+ * Whether the URI is a network-path reference.
+ *
+ * A relative reference that begins with two slash characters is termed an network-path reference.
+ *
+ * @param UriInterface $uri
+ *
+ * @return bool
+ *
+ * @link https://tools.ietf.org/html/rfc3986#section-4.2
+ */
+ public static function isNetworkPathReference(\Google\Site_Kit_Dependencies\Psr\Http\Message\UriInterface $uri)
+ {
+ return $uri->getScheme() === '' && $uri->getAuthority() !== '';
+ }
+ /**
+ * Whether the URI is a absolute-path reference.
+ *
+ * A relative reference that begins with a single slash character is termed an absolute-path reference.
+ *
+ * @param UriInterface $uri
+ *
+ * @return bool
+ *
+ * @link https://tools.ietf.org/html/rfc3986#section-4.2
+ */
+ public static function isAbsolutePathReference(\Google\Site_Kit_Dependencies\Psr\Http\Message\UriInterface $uri)
+ {
+ return $uri->getScheme() === '' && $uri->getAuthority() === '' && isset($uri->getPath()[0]) && $uri->getPath()[0] === '/';
+ }
+ /**
+ * Whether the URI is a relative-path reference.
+ *
+ * A relative reference that does not begin with a slash character is termed a relative-path reference.
+ *
+ * @param UriInterface $uri
+ *
+ * @return bool
+ *
+ * @link https://tools.ietf.org/html/rfc3986#section-4.2
+ */
+ public static function isRelativePathReference(\Google\Site_Kit_Dependencies\Psr\Http\Message\UriInterface $uri)
+ {
+ return $uri->getScheme() === '' && $uri->getAuthority() === '' && (!isset($uri->getPath()[0]) || $uri->getPath()[0] !== '/');
+ }
+ /**
+ * Whether the URI is a same-document reference.
+ *
+ * A same-document reference refers to a URI that is, aside from its fragment
+ * component, identical to the base URI. When no base URI is given, only an empty
+ * URI reference (apart from its fragment) is considered a same-document reference.
+ *
+ * @param UriInterface $uri The URI to check
+ * @param UriInterface|null $base An optional base URI to compare against
+ *
+ * @return bool
+ *
+ * @link https://tools.ietf.org/html/rfc3986#section-4.4
+ */
+ public static function isSameDocumentReference(\Google\Site_Kit_Dependencies\Psr\Http\Message\UriInterface $uri, \Google\Site_Kit_Dependencies\Psr\Http\Message\UriInterface $base = null)
+ {
+ if ($base !== null) {
+ $uri = \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\UriResolver::resolve($base, $uri);
+ return $uri->getScheme() === $base->getScheme() && $uri->getAuthority() === $base->getAuthority() && $uri->getPath() === $base->getPath() && $uri->getQuery() === $base->getQuery();
+ }
+ return $uri->getScheme() === '' && $uri->getAuthority() === '' && $uri->getPath() === '' && $uri->getQuery() === '';
+ }
+ /**
+ * Removes dot segments from a path and returns the new path.
+ *
+ * @param string $path
+ *
+ * @return string
+ *
+ * @deprecated since version 1.4. Use UriResolver::removeDotSegments instead.
+ * @see UriResolver::removeDotSegments
+ */
+ public static function removeDotSegments($path)
+ {
+ return \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\UriResolver::removeDotSegments($path);
+ }
+ /**
+ * Converts the relative URI into a new URI that is resolved against the base URI.
+ *
+ * @param UriInterface $base Base URI
+ * @param string|UriInterface $rel Relative URI
+ *
+ * @return UriInterface
+ *
+ * @deprecated since version 1.4. Use UriResolver::resolve instead.
+ * @see UriResolver::resolve
+ */
+ public static function resolve(\Google\Site_Kit_Dependencies\Psr\Http\Message\UriInterface $base, $rel)
+ {
+ if (!$rel instanceof \Google\Site_Kit_Dependencies\Psr\Http\Message\UriInterface) {
+ $rel = new self($rel);
+ }
+ return \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\UriResolver::resolve($base, $rel);
+ }
+ /**
+ * Creates a new URI with a specific query string value removed.
+ *
+ * Any existing query string values that exactly match the provided key are
+ * removed.
+ *
+ * @param UriInterface $uri URI to use as a base.
+ * @param string $key Query string key to remove.
+ *
+ * @return UriInterface
+ */
+ public static function withoutQueryValue(\Google\Site_Kit_Dependencies\Psr\Http\Message\UriInterface $uri, $key)
+ {
+ $result = self::getFilteredQueryString($uri, [$key]);
+ return $uri->withQuery(\implode('&', $result));
+ }
+ /**
+ * Creates a new URI with a specific query string value.
+ *
+ * Any existing query string values that exactly match the provided key are
+ * removed and replaced with the given key value pair.
+ *
+ * A value of null will set the query string key without a value, e.g. "key"
+ * instead of "key=value".
+ *
+ * @param UriInterface $uri URI to use as a base.
+ * @param string $key Key to set.
+ * @param string|null $value Value to set
+ *
+ * @return UriInterface
+ */
+ public static function withQueryValue(\Google\Site_Kit_Dependencies\Psr\Http\Message\UriInterface $uri, $key, $value)
+ {
+ $result = self::getFilteredQueryString($uri, [$key]);
+ $result[] = self::generateQueryString($key, $value);
+ return $uri->withQuery(\implode('&', $result));
+ }
+ /**
+ * Creates a new URI with multiple specific query string values.
+ *
+ * It has the same behavior as withQueryValue() but for an associative array of key => value.
+ *
+ * @param UriInterface $uri URI to use as a base.
+ * @param array $keyValueArray Associative array of key and values
+ *
+ * @return UriInterface
+ */
+ public static function withQueryValues(\Google\Site_Kit_Dependencies\Psr\Http\Message\UriInterface $uri, array $keyValueArray)
+ {
+ $result = self::getFilteredQueryString($uri, \array_keys($keyValueArray));
+ foreach ($keyValueArray as $key => $value) {
+ $result[] = self::generateQueryString($key, $value);
+ }
+ return $uri->withQuery(\implode('&', $result));
+ }
+ /**
+ * Creates a URI from a hash of `parse_url` components.
+ *
+ * @param array $parts
+ *
+ * @return UriInterface
+ *
+ * @link http://php.net/manual/en/function.parse-url.php
+ *
+ * @throws \InvalidArgumentException If the components do not form a valid URI.
+ */
+ public static function fromParts(array $parts)
+ {
+ $uri = new self();
+ $uri->applyParts($parts);
+ $uri->validateState();
+ return $uri;
+ }
+ public function getScheme()
+ {
+ return $this->scheme;
+ }
+ public function getAuthority()
+ {
+ $authority = $this->host;
+ if ($this->userInfo !== '') {
+ $authority = $this->userInfo . '@' . $authority;
+ }
+ if ($this->port !== null) {
+ $authority .= ':' . $this->port;
+ }
+ return $authority;
+ }
+ public function getUserInfo()
+ {
+ return $this->userInfo;
+ }
+ public function getHost()
+ {
+ return $this->host;
+ }
+ public function getPort()
+ {
+ return $this->port;
+ }
+ public function getPath()
+ {
+ return $this->path;
+ }
+ public function getQuery()
+ {
+ return $this->query;
+ }
+ public function getFragment()
+ {
+ return $this->fragment;
+ }
+ public function withScheme($scheme)
+ {
+ $scheme = $this->filterScheme($scheme);
+ if ($this->scheme === $scheme) {
+ return $this;
+ }
+ $new = clone $this;
+ $new->scheme = $scheme;
+ $new->removeDefaultPort();
+ $new->validateState();
+ return $new;
+ }
+ public function withUserInfo($user, $password = null)
+ {
+ $info = $this->filterUserInfoComponent($user);
+ if ($password !== null) {
+ $info .= ':' . $this->filterUserInfoComponent($password);
+ }
+ if ($this->userInfo === $info) {
+ return $this;
+ }
+ $new = clone $this;
+ $new->userInfo = $info;
+ $new->validateState();
+ return $new;
+ }
+ public function withHost($host)
+ {
+ $host = $this->filterHost($host);
+ if ($this->host === $host) {
+ return $this;
+ }
+ $new = clone $this;
+ $new->host = $host;
+ $new->validateState();
+ return $new;
+ }
+ public function withPort($port)
+ {
+ $port = $this->filterPort($port);
+ if ($this->port === $port) {
+ return $this;
+ }
+ $new = clone $this;
+ $new->port = $port;
+ $new->removeDefaultPort();
+ $new->validateState();
+ return $new;
+ }
+ public function withPath($path)
+ {
+ $path = $this->filterPath($path);
+ if ($this->path === $path) {
+ return $this;
+ }
+ $new = clone $this;
+ $new->path = $path;
+ $new->validateState();
+ return $new;
+ }
+ public function withQuery($query)
+ {
+ $query = $this->filterQueryAndFragment($query);
+ if ($this->query === $query) {
+ return $this;
+ }
+ $new = clone $this;
+ $new->query = $query;
+ return $new;
+ }
+ public function withFragment($fragment)
+ {
+ $fragment = $this->filterQueryAndFragment($fragment);
+ if ($this->fragment === $fragment) {
+ return $this;
+ }
+ $new = clone $this;
+ $new->fragment = $fragment;
+ return $new;
+ }
+ /**
+ * Apply parse_url parts to a URI.
+ *
+ * @param array $parts Array of parse_url parts to apply.
+ */
+ private function applyParts(array $parts)
+ {
+ $this->scheme = isset($parts['scheme']) ? $this->filterScheme($parts['scheme']) : '';
+ $this->userInfo = isset($parts['user']) ? $this->filterUserInfoComponent($parts['user']) : '';
+ $this->host = isset($parts['host']) ? $this->filterHost($parts['host']) : '';
+ $this->port = isset($parts['port']) ? $this->filterPort($parts['port']) : null;
+ $this->path = isset($parts['path']) ? $this->filterPath($parts['path']) : '';
+ $this->query = isset($parts['query']) ? $this->filterQueryAndFragment($parts['query']) : '';
+ $this->fragment = isset($parts['fragment']) ? $this->filterQueryAndFragment($parts['fragment']) : '';
+ if (isset($parts['pass'])) {
+ $this->userInfo .= ':' . $this->filterUserInfoComponent($parts['pass']);
+ }
+ $this->removeDefaultPort();
+ }
+ /**
+ * @param string $scheme
+ *
+ * @return string
+ *
+ * @throws \InvalidArgumentException If the scheme is invalid.
+ */
+ private function filterScheme($scheme)
+ {
+ if (!\is_string($scheme)) {
+ throw new \InvalidArgumentException('Scheme must be a string');
+ }
+ return \strtr($scheme, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz');
+ }
+ /**
+ * @param string $component
+ *
+ * @return string
+ *
+ * @throws \InvalidArgumentException If the user info is invalid.
+ */
+ private function filterUserInfoComponent($component)
+ {
+ if (!\is_string($component)) {
+ throw new \InvalidArgumentException('User info must be a string');
+ }
+ return \preg_replace_callback('/(?:[^%' . self::$charUnreserved . self::$charSubDelims . ']+|%(?![A-Fa-f0-9]{2}))/', [$this, 'rawurlencodeMatchZero'], $component);
+ }
+ /**
+ * @param string $host
+ *
+ * @return string
+ *
+ * @throws \InvalidArgumentException If the host is invalid.
+ */
+ private function filterHost($host)
+ {
+ if (!\is_string($host)) {
+ throw new \InvalidArgumentException('Host must be a string');
+ }
+ return \strtr($host, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz');
+ }
+ /**
+ * @param int|null $port
+ *
+ * @return int|null
+ *
+ * @throws \InvalidArgumentException If the port is invalid.
+ */
+ private function filterPort($port)
+ {
+ if ($port === null) {
+ return null;
+ }
+ $port = (int) $port;
+ if (0 > $port || 0xffff < $port) {
+ throw new \InvalidArgumentException(\sprintf('Invalid port: %d. Must be between 0 and 65535', $port));
+ }
+ return $port;
+ }
+ /**
+ * @param UriInterface $uri
+ * @param array $keys
+ *
+ * @return array
+ */
+ private static function getFilteredQueryString(\Google\Site_Kit_Dependencies\Psr\Http\Message\UriInterface $uri, array $keys)
+ {
+ $current = $uri->getQuery();
+ if ($current === '') {
+ return [];
+ }
+ $decodedKeys = \array_map('rawurldecode', $keys);
+ return \array_filter(\explode('&', $current), function ($part) use($decodedKeys) {
+ return !\in_array(\rawurldecode(\explode('=', $part)[0]), $decodedKeys, \true);
+ });
+ }
+ /**
+ * @param string $key
+ * @param string|null $value
+ *
+ * @return string
+ */
+ private static function generateQueryString($key, $value)
+ {
+ // Query string separators ("=", "&") within the key or value need to be encoded
+ // (while preventing double-encoding) before setting the query string. All other
+ // chars that need percent-encoding will be encoded by withQuery().
+ $queryString = \strtr($key, self::$replaceQuery);
+ if ($value !== null) {
+ $queryString .= '=' . \strtr($value, self::$replaceQuery);
+ }
+ return $queryString;
+ }
+ private function removeDefaultPort()
+ {
+ if ($this->port !== null && self::isDefaultPort($this)) {
+ $this->port = null;
+ }
+ }
+ /**
+ * Filters the path of a URI
+ *
+ * @param string $path
+ *
+ * @return string
+ *
+ * @throws \InvalidArgumentException If the path is invalid.
+ */
+ private function filterPath($path)
+ {
+ if (!\is_string($path)) {
+ throw new \InvalidArgumentException('Path must be a string');
+ }
+ return \preg_replace_callback('/(?:[^' . self::$charUnreserved . self::$charSubDelims . '%:@\\/]++|%(?![A-Fa-f0-9]{2}))/', [$this, 'rawurlencodeMatchZero'], $path);
+ }
+ /**
+ * Filters the query string or fragment of a URI.
+ *
+ * @param string $str
+ *
+ * @return string
+ *
+ * @throws \InvalidArgumentException If the query or fragment is invalid.
+ */
+ private function filterQueryAndFragment($str)
+ {
+ if (!\is_string($str)) {
+ throw new \InvalidArgumentException('Query and fragment must be a string');
+ }
+ return \preg_replace_callback('/(?:[^' . self::$charUnreserved . self::$charSubDelims . '%:@\\/\\?]++|%(?![A-Fa-f0-9]{2}))/', [$this, 'rawurlencodeMatchZero'], $str);
+ }
+ private function rawurlencodeMatchZero(array $match)
+ {
+ return \rawurlencode($match[0]);
+ }
+ private function validateState()
+ {
+ if ($this->host === '' && ($this->scheme === 'http' || $this->scheme === 'https')) {
+ $this->host = self::HTTP_DEFAULT_HOST;
+ }
+ if ($this->getAuthority() === '') {
+ if (0 === \strpos($this->path, '//')) {
+ throw new \InvalidArgumentException('The path of a URI without an authority must not start with two slashes "//"');
+ }
+ if ($this->scheme === '' && \false !== \strpos(\explode('/', $this->path, 2)[0], ':')) {
+ throw new \InvalidArgumentException('A relative URI must not have a path beginning with a segment containing a colon');
+ }
+ } elseif (isset($this->path[0]) && $this->path[0] !== '/') {
+ @\trigger_error('The path of a URI with an authority must start with a slash "/" or be empty. Automagically fixing the URI ' . 'by adding a leading slash to the path is deprecated since version 1.4 and will throw an exception instead.', \E_USER_DEPRECATED);
+ $this->path = '/' . $this->path;
+ //throw new \InvalidArgumentException('The path of a URI with an authority must start with a slash "/" or be empty');
+ }
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/UriNormalizer.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/UriNormalizer.php
new file mode 100644
index 000000000..c44ff094c
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/UriNormalizer.php
@@ -0,0 +1,181 @@
+getPath() === '' && ($uri->getScheme() === 'http' || $uri->getScheme() === 'https')) {
+ $uri = $uri->withPath('/');
+ }
+ if ($flags & self::REMOVE_DEFAULT_HOST && $uri->getScheme() === 'file' && $uri->getHost() === 'localhost') {
+ $uri = $uri->withHost('');
+ }
+ if ($flags & self::REMOVE_DEFAULT_PORT && $uri->getPort() !== null && \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Uri::isDefaultPort($uri)) {
+ $uri = $uri->withPort(null);
+ }
+ if ($flags & self::REMOVE_DOT_SEGMENTS && !\Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Uri::isRelativePathReference($uri)) {
+ $uri = $uri->withPath(\Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\UriResolver::removeDotSegments($uri->getPath()));
+ }
+ if ($flags & self::REMOVE_DUPLICATE_SLASHES) {
+ $uri = $uri->withPath(\preg_replace('#//++#', '/', $uri->getPath()));
+ }
+ if ($flags & self::SORT_QUERY_PARAMETERS && $uri->getQuery() !== '') {
+ $queryKeyValues = \explode('&', $uri->getQuery());
+ \sort($queryKeyValues);
+ $uri = $uri->withQuery(\implode('&', $queryKeyValues));
+ }
+ return $uri;
+ }
+ /**
+ * Whether two URIs can be considered equivalent.
+ *
+ * Both URIs are normalized automatically before comparison with the given $normalizations bitmask. The method also
+ * accepts relative URI references and returns true when they are equivalent. This of course assumes they will be
+ * resolved against the same base URI. If this is not the case, determination of equivalence or difference of
+ * relative references does not mean anything.
+ *
+ * @param UriInterface $uri1 An URI to compare
+ * @param UriInterface $uri2 An URI to compare
+ * @param int $normalizations A bitmask of normalizations to apply, see constants
+ *
+ * @return bool
+ *
+ * @link https://tools.ietf.org/html/rfc3986#section-6.1
+ */
+ public static function isEquivalent(\Google\Site_Kit_Dependencies\Psr\Http\Message\UriInterface $uri1, \Google\Site_Kit_Dependencies\Psr\Http\Message\UriInterface $uri2, $normalizations = self::PRESERVING_NORMALIZATIONS)
+ {
+ return (string) self::normalize($uri1, $normalizations) === (string) self::normalize($uri2, $normalizations);
+ }
+ private static function capitalizePercentEncoding(\Google\Site_Kit_Dependencies\Psr\Http\Message\UriInterface $uri)
+ {
+ $regex = '/(?:%[A-Fa-f0-9]{2})++/';
+ $callback = function (array $match) {
+ return \strtoupper($match[0]);
+ };
+ return $uri->withPath(\preg_replace_callback($regex, $callback, $uri->getPath()))->withQuery(\preg_replace_callback($regex, $callback, $uri->getQuery()));
+ }
+ private static function decodeUnreservedCharacters(\Google\Site_Kit_Dependencies\Psr\Http\Message\UriInterface $uri)
+ {
+ $regex = '/%(?:2D|2E|5F|7E|3[0-9]|[46][1-9A-F]|[57][0-9A])/i';
+ $callback = function (array $match) {
+ return \rawurldecode($match[0]);
+ };
+ return $uri->withPath(\preg_replace_callback($regex, $callback, $uri->getPath()))->withQuery(\preg_replace_callback($regex, $callback, $uri->getQuery()));
+ }
+ private function __construct()
+ {
+ // cannot be instantiated
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/UriResolver.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/UriResolver.php
new file mode 100644
index 000000000..7173a2533
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/UriResolver.php
@@ -0,0 +1,192 @@
+getScheme() != '') {
+ return $rel->withPath(self::removeDotSegments($rel->getPath()));
+ }
+ if ($rel->getAuthority() != '') {
+ $targetAuthority = $rel->getAuthority();
+ $targetPath = self::removeDotSegments($rel->getPath());
+ $targetQuery = $rel->getQuery();
+ } else {
+ $targetAuthority = $base->getAuthority();
+ if ($rel->getPath() === '') {
+ $targetPath = $base->getPath();
+ $targetQuery = $rel->getQuery() != '' ? $rel->getQuery() : $base->getQuery();
+ } else {
+ if ($rel->getPath()[0] === '/') {
+ $targetPath = $rel->getPath();
+ } else {
+ if ($targetAuthority != '' && $base->getPath() === '') {
+ $targetPath = '/' . $rel->getPath();
+ } else {
+ $lastSlashPos = \strrpos($base->getPath(), '/');
+ if ($lastSlashPos === \false) {
+ $targetPath = $rel->getPath();
+ } else {
+ $targetPath = \substr($base->getPath(), 0, $lastSlashPos + 1) . $rel->getPath();
+ }
+ }
+ }
+ $targetPath = self::removeDotSegments($targetPath);
+ $targetQuery = $rel->getQuery();
+ }
+ }
+ return new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Uri(\Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Uri::composeComponents($base->getScheme(), $targetAuthority, $targetPath, $targetQuery, $rel->getFragment()));
+ }
+ /**
+ * Returns the target URI as a relative reference from the base URI.
+ *
+ * This method is the counterpart to resolve():
+ *
+ * (string) $target === (string) UriResolver::resolve($base, UriResolver::relativize($base, $target))
+ *
+ * One use-case is to use the current request URI as base URI and then generate relative links in your documents
+ * to reduce the document size or offer self-contained downloadable document archives.
+ *
+ * $base = new Uri('http://example.com/a/b/');
+ * echo UriResolver::relativize($base, new Uri('http://example.com/a/b/c')); // prints 'c'.
+ * echo UriResolver::relativize($base, new Uri('http://example.com/a/x/y')); // prints '../x/y'.
+ * echo UriResolver::relativize($base, new Uri('http://example.com/a/b/?q')); // prints '?q'.
+ * echo UriResolver::relativize($base, new Uri('http://example.org/a/b/')); // prints '//example.org/a/b/'.
+ *
+ * This method also accepts a target that is already relative and will try to relativize it further. Only a
+ * relative-path reference will be returned as-is.
+ *
+ * echo UriResolver::relativize($base, new Uri('/a/b/c')); // prints 'c' as well
+ *
+ * @param UriInterface $base Base URI
+ * @param UriInterface $target Target URI
+ *
+ * @return UriInterface The relative URI reference
+ */
+ public static function relativize(\Google\Site_Kit_Dependencies\Psr\Http\Message\UriInterface $base, \Google\Site_Kit_Dependencies\Psr\Http\Message\UriInterface $target)
+ {
+ if ($target->getScheme() !== '' && ($base->getScheme() !== $target->getScheme() || $target->getAuthority() === '' && $base->getAuthority() !== '')) {
+ return $target;
+ }
+ if (\Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Uri::isRelativePathReference($target)) {
+ // As the target is already highly relative we return it as-is. It would be possible to resolve
+ // the target with `$target = self::resolve($base, $target);` and then try make it more relative
+ // by removing a duplicate query. But let's not do that automatically.
+ return $target;
+ }
+ if ($target->getAuthority() !== '' && $base->getAuthority() !== $target->getAuthority()) {
+ return $target->withScheme('');
+ }
+ // We must remove the path before removing the authority because if the path starts with two slashes, the URI
+ // would turn invalid. And we also cannot set a relative path before removing the authority, as that is also
+ // invalid.
+ $emptyPathUri = $target->withScheme('')->withPath('')->withUserInfo('')->withPort(null)->withHost('');
+ if ($base->getPath() !== $target->getPath()) {
+ return $emptyPathUri->withPath(self::getRelativePath($base, $target));
+ }
+ if ($base->getQuery() === $target->getQuery()) {
+ // Only the target fragment is left. And it must be returned even if base and target fragment are the same.
+ return $emptyPathUri->withQuery('');
+ }
+ // If the base URI has a query but the target has none, we cannot return an empty path reference as it would
+ // inherit the base query component when resolving.
+ if ($target->getQuery() === '') {
+ $segments = \explode('/', $target->getPath());
+ $lastSegment = \end($segments);
+ return $emptyPathUri->withPath($lastSegment === '' ? './' : $lastSegment);
+ }
+ return $emptyPathUri;
+ }
+ private static function getRelativePath(\Google\Site_Kit_Dependencies\Psr\Http\Message\UriInterface $base, \Google\Site_Kit_Dependencies\Psr\Http\Message\UriInterface $target)
+ {
+ $sourceSegments = \explode('/', $base->getPath());
+ $targetSegments = \explode('/', $target->getPath());
+ \array_pop($sourceSegments);
+ $targetLastSegment = \array_pop($targetSegments);
+ foreach ($sourceSegments as $i => $segment) {
+ if (isset($targetSegments[$i]) && $segment === $targetSegments[$i]) {
+ unset($sourceSegments[$i], $targetSegments[$i]);
+ } else {
+ break;
+ }
+ }
+ $targetSegments[] = $targetLastSegment;
+ $relativePath = \str_repeat('../', \count($sourceSegments)) . \implode('/', $targetSegments);
+ // A reference to am empty last segment or an empty first sub-segment must be prefixed with "./".
+ // This also applies to a segment with a colon character (e.g., "file:colon") that cannot be used
+ // as the first segment of a relative-path reference, as it would be mistaken for a scheme name.
+ if ('' === $relativePath || \false !== \strpos(\explode('/', $relativePath, 2)[0], ':')) {
+ $relativePath = "./{$relativePath}";
+ } elseif ('/' === $relativePath[0]) {
+ if ($base->getAuthority() != '' && $base->getPath() === '') {
+ // In this case an extra slash is added by resolve() automatically. So we must not add one here.
+ $relativePath = ".{$relativePath}";
+ } else {
+ $relativePath = "./{$relativePath}";
+ }
+ }
+ return $relativePath;
+ }
+ private function __construct()
+ {
+ // cannot be instantiated
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/Utils.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/Utils.php
new file mode 100644
index 000000000..f838177a0
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/Utils.php
@@ -0,0 +1,355 @@
+ $keys
+ *
+ * @return array
+ */
+ public static function caselessRemove($keys, array $data)
+ {
+ $result = [];
+ foreach ($keys as &$key) {
+ $key = \strtolower($key);
+ }
+ foreach ($data as $k => $v) {
+ if (!\in_array(\strtolower($k), $keys)) {
+ $result[$k] = $v;
+ }
+ }
+ return $result;
+ }
+ /**
+ * Copy the contents of a stream into another stream until the given number
+ * of bytes have been read.
+ *
+ * @param StreamInterface $source Stream to read from
+ * @param StreamInterface $dest Stream to write to
+ * @param int $maxLen Maximum number of bytes to read. Pass -1
+ * to read the entire stream.
+ *
+ * @throws \RuntimeException on error.
+ */
+ public static function copyToStream(\Google\Site_Kit_Dependencies\Psr\Http\Message\StreamInterface $source, \Google\Site_Kit_Dependencies\Psr\Http\Message\StreamInterface $dest, $maxLen = -1)
+ {
+ $bufferSize = 8192;
+ if ($maxLen === -1) {
+ while (!$source->eof()) {
+ if (!$dest->write($source->read($bufferSize))) {
+ break;
+ }
+ }
+ } else {
+ $remaining = $maxLen;
+ while ($remaining > 0 && !$source->eof()) {
+ $buf = $source->read(\min($bufferSize, $remaining));
+ $len = \strlen($buf);
+ if (!$len) {
+ break;
+ }
+ $remaining -= $len;
+ $dest->write($buf);
+ }
+ }
+ }
+ /**
+ * Copy the contents of a stream into a string until the given number of
+ * bytes have been read.
+ *
+ * @param StreamInterface $stream Stream to read
+ * @param int $maxLen Maximum number of bytes to read. Pass -1
+ * to read the entire stream.
+ *
+ * @return string
+ *
+ * @throws \RuntimeException on error.
+ */
+ public static function copyToString(\Google\Site_Kit_Dependencies\Psr\Http\Message\StreamInterface $stream, $maxLen = -1)
+ {
+ $buffer = '';
+ if ($maxLen === -1) {
+ while (!$stream->eof()) {
+ $buf = $stream->read(1048576);
+ // Using a loose equality here to match on '' and false.
+ if ($buf == null) {
+ break;
+ }
+ $buffer .= $buf;
+ }
+ return $buffer;
+ }
+ $len = 0;
+ while (!$stream->eof() && $len < $maxLen) {
+ $buf = $stream->read($maxLen - $len);
+ // Using a loose equality here to match on '' and false.
+ if ($buf == null) {
+ break;
+ }
+ $buffer .= $buf;
+ $len = \strlen($buffer);
+ }
+ return $buffer;
+ }
+ /**
+ * Calculate a hash of a stream.
+ *
+ * This method reads the entire stream to calculate a rolling hash, based
+ * on PHP's `hash_init` functions.
+ *
+ * @param StreamInterface $stream Stream to calculate the hash for
+ * @param string $algo Hash algorithm (e.g. md5, crc32, etc)
+ * @param bool $rawOutput Whether or not to use raw output
+ *
+ * @return string Returns the hash of the stream
+ *
+ * @throws \RuntimeException on error.
+ */
+ public static function hash(\Google\Site_Kit_Dependencies\Psr\Http\Message\StreamInterface $stream, $algo, $rawOutput = \false)
+ {
+ $pos = $stream->tell();
+ if ($pos > 0) {
+ $stream->rewind();
+ }
+ $ctx = \hash_init($algo);
+ while (!$stream->eof()) {
+ \hash_update($ctx, $stream->read(1048576));
+ }
+ $out = \hash_final($ctx, (bool) $rawOutput);
+ $stream->seek($pos);
+ return $out;
+ }
+ /**
+ * Clone and modify a request with the given changes.
+ *
+ * This method is useful for reducing the number of clones needed to mutate
+ * a message.
+ *
+ * The changes can be one of:
+ * - method: (string) Changes the HTTP method.
+ * - set_headers: (array) Sets the given headers.
+ * - remove_headers: (array) Remove the given headers.
+ * - body: (mixed) Sets the given body.
+ * - uri: (UriInterface) Set the URI.
+ * - query: (string) Set the query string value of the URI.
+ * - version: (string) Set the protocol version.
+ *
+ * @param RequestInterface $request Request to clone and modify.
+ * @param array $changes Changes to apply.
+ *
+ * @return RequestInterface
+ */
+ public static function modifyRequest(\Google\Site_Kit_Dependencies\Psr\Http\Message\RequestInterface $request, array $changes)
+ {
+ if (!$changes) {
+ return $request;
+ }
+ $headers = $request->getHeaders();
+ if (!isset($changes['uri'])) {
+ $uri = $request->getUri();
+ } else {
+ // Remove the host header if one is on the URI
+ if ($host = $changes['uri']->getHost()) {
+ $changes['set_headers']['Host'] = $host;
+ if ($port = $changes['uri']->getPort()) {
+ $standardPorts = ['http' => 80, 'https' => 443];
+ $scheme = $changes['uri']->getScheme();
+ if (isset($standardPorts[$scheme]) && $port != $standardPorts[$scheme]) {
+ $changes['set_headers']['Host'] .= ':' . $port;
+ }
+ }
+ }
+ $uri = $changes['uri'];
+ }
+ if (!empty($changes['remove_headers'])) {
+ $headers = self::caselessRemove($changes['remove_headers'], $headers);
+ }
+ if (!empty($changes['set_headers'])) {
+ $headers = self::caselessRemove(\array_keys($changes['set_headers']), $headers);
+ $headers = $changes['set_headers'] + $headers;
+ }
+ if (isset($changes['query'])) {
+ $uri = $uri->withQuery($changes['query']);
+ }
+ if ($request instanceof \Google\Site_Kit_Dependencies\Psr\Http\Message\ServerRequestInterface) {
+ $new = (new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\ServerRequest(isset($changes['method']) ? $changes['method'] : $request->getMethod(), $uri, $headers, isset($changes['body']) ? $changes['body'] : $request->getBody(), isset($changes['version']) ? $changes['version'] : $request->getProtocolVersion(), $request->getServerParams()))->withParsedBody($request->getParsedBody())->withQueryParams($request->getQueryParams())->withCookieParams($request->getCookieParams())->withUploadedFiles($request->getUploadedFiles());
+ foreach ($request->getAttributes() as $key => $value) {
+ $new = $new->withAttribute($key, $value);
+ }
+ return $new;
+ }
+ return new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Request(isset($changes['method']) ? $changes['method'] : $request->getMethod(), $uri, $headers, isset($changes['body']) ? $changes['body'] : $request->getBody(), isset($changes['version']) ? $changes['version'] : $request->getProtocolVersion());
+ }
+ /**
+ * Read a line from the stream up to the maximum allowed buffer length.
+ *
+ * @param StreamInterface $stream Stream to read from
+ * @param int|null $maxLength Maximum buffer length
+ *
+ * @return string
+ */
+ public static function readLine(\Google\Site_Kit_Dependencies\Psr\Http\Message\StreamInterface $stream, $maxLength = null)
+ {
+ $buffer = '';
+ $size = 0;
+ while (!$stream->eof()) {
+ // Using a loose equality here to match on '' and false.
+ if (null == ($byte = $stream->read(1))) {
+ return $buffer;
+ }
+ $buffer .= $byte;
+ // Break when a new line is found or the max length - 1 is reached
+ if ($byte === "\n" || ++$size === $maxLength - 1) {
+ break;
+ }
+ }
+ return $buffer;
+ }
+ /**
+ * Create a new stream based on the input type.
+ *
+ * Options is an associative array that can contain the following keys:
+ * - metadata: Array of custom metadata.
+ * - size: Size of the stream.
+ *
+ * This method accepts the following `$resource` types:
+ * - `Psr\Http\Message\StreamInterface`: Returns the value as-is.
+ * - `string`: Creates a stream object that uses the given string as the contents.
+ * - `resource`: Creates a stream object that wraps the given PHP stream resource.
+ * - `Iterator`: If the provided value implements `Iterator`, then a read-only
+ * stream object will be created that wraps the given iterable. Each time the
+ * stream is read from, data from the iterator will fill a buffer and will be
+ * continuously called until the buffer is equal to the requested read size.
+ * Subsequent read calls will first read from the buffer and then call `next`
+ * on the underlying iterator until it is exhausted.
+ * - `object` with `__toString()`: If the object has the `__toString()` method,
+ * the object will be cast to a string and then a stream will be returned that
+ * uses the string value.
+ * - `NULL`: When `null` is passed, an empty stream object is returned.
+ * - `callable` When a callable is passed, a read-only stream object will be
+ * created that invokes the given callable. The callable is invoked with the
+ * number of suggested bytes to read. The callable can return any number of
+ * bytes, but MUST return `false` when there is no more data to return. The
+ * stream object that wraps the callable will invoke the callable until the
+ * number of requested bytes are available. Any additional bytes will be
+ * buffered and used in subsequent reads.
+ *
+ * @param resource|string|int|float|bool|StreamInterface|callable|\Iterator|null $resource Entity body data
+ * @param array $options Additional options
+ *
+ * @return StreamInterface
+ *
+ * @throws \InvalidArgumentException if the $resource arg is not valid.
+ */
+ public static function streamFor($resource = '', array $options = [])
+ {
+ if (\is_scalar($resource)) {
+ $stream = self::tryFopen('php://temp', 'r+');
+ if ($resource !== '') {
+ \fwrite($stream, $resource);
+ \fseek($stream, 0);
+ }
+ return new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Stream($stream, $options);
+ }
+ switch (\gettype($resource)) {
+ case 'resource':
+ /*
+ * The 'php://input' is a special stream with quirks and inconsistencies.
+ * We avoid using that stream by reading it into php://temp
+ */
+ $metaData = \stream_get_meta_data($resource);
+ if (isset($metaData['uri']) && $metaData['uri'] === 'php://input') {
+ $stream = self::tryFopen('php://temp', 'w+');
+ \fwrite($stream, \stream_get_contents($resource));
+ \fseek($stream, 0);
+ $resource = $stream;
+ }
+ return new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Stream($resource, $options);
+ case 'object':
+ if ($resource instanceof \Google\Site_Kit_Dependencies\Psr\Http\Message\StreamInterface) {
+ return $resource;
+ } elseif ($resource instanceof \Iterator) {
+ return new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\PumpStream(function () use($resource) {
+ if (!$resource->valid()) {
+ return \false;
+ }
+ $result = $resource->current();
+ $resource->next();
+ return $result;
+ }, $options);
+ } elseif (\method_exists($resource, '__toString')) {
+ return \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Utils::streamFor((string) $resource, $options);
+ }
+ break;
+ case 'NULL':
+ return new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Stream(self::tryFopen('php://temp', 'r+'), $options);
+ }
+ if (\is_callable($resource)) {
+ return new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\PumpStream($resource, $options);
+ }
+ throw new \InvalidArgumentException('Invalid resource type: ' . \gettype($resource));
+ }
+ /**
+ * Safely opens a PHP stream resource using a filename.
+ *
+ * When fopen fails, PHP normally raises a warning. This function adds an
+ * error handler that checks for errors and throws an exception instead.
+ *
+ * @param string $filename File to open
+ * @param string $mode Mode used to open the file
+ *
+ * @return resource
+ *
+ * @throws \RuntimeException if the file cannot be opened
+ */
+ public static function tryFopen($filename, $mode)
+ {
+ $ex = null;
+ \set_error_handler(function () use($filename, $mode, &$ex) {
+ $ex = new \RuntimeException(\sprintf('Unable to open "%s" using mode "%s": %s', $filename, $mode, \func_get_args()[1]));
+ return \true;
+ });
+ try {
+ $handle = \fopen($filename, $mode);
+ } catch (\Throwable $e) {
+ $ex = new \RuntimeException(\sprintf('Unable to open "%s" using mode "%s": %s', $filename, $mode, $e->getMessage()), 0, $e);
+ }
+ \restore_error_handler();
+ if ($ex) {
+ /** @var $ex \RuntimeException */
+ throw $ex;
+ }
+ return $handle;
+ }
+ /**
+ * Returns a UriInterface for the given value.
+ *
+ * This function accepts a string or UriInterface and returns a
+ * UriInterface for the given value. If the value is already a
+ * UriInterface, it is returned as-is.
+ *
+ * @param string|UriInterface $uri
+ *
+ * @return UriInterface
+ *
+ * @throws \InvalidArgumentException
+ */
+ public static function uriFor($uri)
+ {
+ if ($uri instanceof \Google\Site_Kit_Dependencies\Psr\Http\Message\UriInterface) {
+ return $uri;
+ }
+ if (\is_string($uri)) {
+ return new \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Uri($uri);
+ }
+ throw new \InvalidArgumentException('URI must be a string or UriInterface');
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/functions.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/functions.php
new file mode 100644
index 000000000..34b8cb9e0
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/functions.php
@@ -0,0 +1,400 @@
+ '1', 'foo[b]' => '2'])`.
+ *
+ * @param string $str Query string to parse
+ * @param int|bool $urlEncoding How the query string is encoded
+ *
+ * @return array
+ *
+ * @deprecated parse_query will be removed in guzzlehttp/psr7:2.0. Use Query::parse instead.
+ */
+function parse_query($str, $urlEncoding = \true)
+{
+ return \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Query::parse($str, $urlEncoding);
+}
+/**
+ * Build a query string from an array of key value pairs.
+ *
+ * This function can use the return value of `parse_query()` to build a query
+ * string. This function does not modify the provided keys when an array is
+ * encountered (like `http_build_query()` would).
+ *
+ * @param array $params Query string parameters.
+ * @param int|false $encoding Set to false to not encode, PHP_QUERY_RFC3986
+ * to encode using RFC3986, or PHP_QUERY_RFC1738
+ * to encode using RFC1738.
+ *
+ * @return string
+ *
+ * @deprecated build_query will be removed in guzzlehttp/psr7:2.0. Use Query::build instead.
+ */
+function build_query(array $params, $encoding = \PHP_QUERY_RFC3986)
+{
+ return \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Query::build($params, $encoding);
+}
+/**
+ * Determines the mimetype of a file by looking at its extension.
+ *
+ * @param string $filename
+ *
+ * @return string|null
+ *
+ * @deprecated mimetype_from_filename will be removed in guzzlehttp/psr7:2.0. Use MimeType::fromFilename instead.
+ */
+function mimetype_from_filename($filename)
+{
+ return \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\MimeType::fromFilename($filename);
+}
+/**
+ * Maps a file extensions to a mimetype.
+ *
+ * @param $extension string The file extension.
+ *
+ * @return string|null
+ *
+ * @link http://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x/conf/mime.types
+ * @deprecated mimetype_from_extension will be removed in guzzlehttp/psr7:2.0. Use MimeType::fromExtension instead.
+ */
+function mimetype_from_extension($extension)
+{
+ return \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\MimeType::fromExtension($extension);
+}
+/**
+ * Parses an HTTP message into an associative array.
+ *
+ * The array contains the "start-line" key containing the start line of
+ * the message, "headers" key containing an associative array of header
+ * array values, and a "body" key containing the body of the message.
+ *
+ * @param string $message HTTP request or response to parse.
+ *
+ * @return array
+ *
+ * @internal
+ *
+ * @deprecated _parse_message will be removed in guzzlehttp/psr7:2.0. Use Message::parseMessage instead.
+ */
+function _parse_message($message)
+{
+ return \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Message::parseMessage($message);
+}
+/**
+ * Constructs a URI for an HTTP request message.
+ *
+ * @param string $path Path from the start-line
+ * @param array $headers Array of headers (each value an array).
+ *
+ * @return string
+ *
+ * @internal
+ *
+ * @deprecated _parse_request_uri will be removed in guzzlehttp/psr7:2.0. Use Message::parseRequestUri instead.
+ */
+function _parse_request_uri($path, array $headers)
+{
+ return \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Message::parseRequestUri($path, $headers);
+}
+/**
+ * Get a short summary of the message body.
+ *
+ * Will return `null` if the response is not printable.
+ *
+ * @param MessageInterface $message The message to get the body summary
+ * @param int $truncateAt The maximum allowed size of the summary
+ *
+ * @return string|null
+ *
+ * @deprecated get_message_body_summary will be removed in guzzlehttp/psr7:2.0. Use Message::bodySummary instead.
+ */
+function get_message_body_summary(\Google\Site_Kit_Dependencies\Psr\Http\Message\MessageInterface $message, $truncateAt = 120)
+{
+ return \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Message::bodySummary($message, $truncateAt);
+}
+/**
+ * Remove the items given by the keys, case insensitively from the data.
+ *
+ * @param iterable $keys
+ *
+ * @return array
+ *
+ * @internal
+ *
+ * @deprecated _caseless_remove will be removed in guzzlehttp/psr7:2.0. Use Utils::caselessRemove instead.
+ */
+function _caseless_remove($keys, array $data)
+{
+ return \Google\Site_Kit_Dependencies\GuzzleHttp\Psr7\Utils::caselessRemove($keys, $data);
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/functions_include.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/functions_include.php
new file mode 100644
index 000000000..87c373fdc
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/psr7/src/functions_include.php
@@ -0,0 +1,8 @@
+`_,
+allowing RingPHP to support both synchronous and asynchronous workflows.
+
+By abstracting the implementation details of different HTTP clients and
+servers, RingPHP allows you to utilize pluggable HTTP clients and servers
+without tying your application to a specific implementation.
+
+.. code-block:: php
+
+ 'GET',
+ 'uri' => '/',
+ 'headers' => [
+ 'host' => ['www.google.com'],
+ 'x-foo' => ['baz']
+ ]
+ ]);
+
+ $response->then(function (array $response) {
+ echo $response['status'];
+ });
+
+ $response->wait();
+
+RingPHP is inspired by Clojure's `Ring `_,
+which, in turn, was inspired by Python's WSGI and Ruby's Rack. RingPHP is
+utilized as the handler layer in `Guzzle `_ 5.0+ to send
+HTTP requests.
+
+Documentation
+-------------
+
+See http://ringphp.readthedocs.org/ for the full online documentation.
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/docs/client_handlers.rst b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/docs/client_handlers.rst
new file mode 100644
index 000000000..3151f0021
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/docs/client_handlers.rst
@@ -0,0 +1,173 @@
+===============
+Client Handlers
+===============
+
+Client handlers accept a request array and return a future response array that
+can be used synchronously as an array or asynchronously using a promise.
+
+Built-In Handlers
+-----------------
+
+RingPHP comes with three built-in client handlers.
+
+Stream Handler
+~~~~~~~~~~~~~~
+
+The ``GuzzleHttp\Ring\Client\StreamHandler`` uses PHP's
+`http stream wrapper `_ to send
+requests.
+
+.. note::
+
+ This handler cannot send requests concurrently.
+
+You can provide an associative array of custom stream context options to the
+StreamHandler using the ``stream_context`` key of the ``client`` request
+option.
+
+.. code-block:: php
+
+ use GuzzleHttp\Ring\Client\StreamHandler;
+
+ $response = $handler([
+ 'http_method' => 'GET',
+ 'uri' => '/',
+ 'headers' => ['host' => ['httpbin.org']],
+ 'client' => [
+ 'stream_context' => [
+ 'http' => [
+ 'request_fulluri' => true,
+ 'method' => 'HEAD'
+ ],
+ 'socket' => [
+ 'bindto' => '127.0.0.1:0'
+ ],
+ 'ssl' => [
+ 'verify_peer' => false
+ ]
+ ]
+ ]
+ ]);
+
+ // Even though it's already completed, you can still use a promise
+ $response->then(function ($response) {
+ echo $response['status']; // 200
+ });
+
+ // Or access the response using the future interface
+ echo $response['status']; // 200
+
+cURL Handler
+~~~~~~~~~~~~
+
+The ``GuzzleHttp\Ring\Client\CurlHandler`` can be used with PHP 5.5+ to send
+requests using cURL easy handles. This handler is great for sending requests
+one at a time because the execute and select loop is implemented in C code
+which executes faster and consumes less memory than using PHP's
+``curl_multi_*`` interface.
+
+.. note::
+
+ This handler cannot send requests concurrently.
+
+When using the CurlHandler, custom curl options can be specified as an
+associative array of `cURL option constants `_
+mapping to values in the ``client`` option of a requst using the **curl** key.
+
+.. code-block:: php
+
+ use GuzzleHttp\Ring\Client\CurlHandler;
+
+ $handler = new CurlHandler();
+
+ $request = [
+ 'http_method' => 'GET',
+ 'headers' => ['host' => [Server::$host]],
+ 'client' => ['curl' => [CURLOPT_LOW_SPEED_LIMIT => 10]]
+ ];
+
+ $response = $handler($request);
+
+ // The response can be used directly as an array.
+ echo $response['status']; // 200
+
+ // Or, it can be used as a promise (that has already fulfilled).
+ $response->then(function ($response) {
+ echo $response['status']; // 200
+ });
+
+cURL Multi Handler
+~~~~~~~~~~~~~~~~~~
+
+The ``GuzzleHttp\Ring\Client\CurlMultiHandler`` transfers requests using
+cURL's `multi API `_. The
+``CurlMultiHandler`` is great for sending requests concurrently.
+
+.. code-block:: php
+
+ use GuzzleHttp\Ring\Client\CurlMultiHandler;
+
+ $handler = new CurlMultiHandler();
+
+ $request = [
+ 'http_method' => 'GET',
+ 'headers' => ['host' => [Server::$host]]
+ ];
+
+ // this call returns a future array immediately.
+ $response = $handler($request);
+
+ // Ideally, you should use the promise API to not block.
+ $response
+ ->then(function ($response) {
+ // Got the response at some point in the future
+ echo $response['status']; // 200
+ // Don't break the chain
+ return $response;
+ })->then(function ($response) {
+ // ...
+ });
+
+ // If you really need to block, then you can use the response as an
+ // associative array. This will block until it has completed.
+ echo $response['status']; // 200
+
+Just like the ``CurlHandler``, the ``CurlMultiHandler`` accepts custom curl
+option in the ``curl`` key of the ``client`` request option.
+
+Mock Handler
+~~~~~~~~~~~~
+
+The ``GuzzleHttp\Ring\Client\MockHandler`` is used to return mock responses.
+When constructed, the handler can be configured to return the same response
+array over and over, a future response, or a the evaluation of a callback
+function.
+
+.. code-block:: php
+
+ use GuzzleHttp\Ring\Client\MockHandler;
+
+ // Return a canned response.
+ $mock = new MockHandler(['status' => 200]);
+ $response = $mock([]);
+ assert(200 == $response['status']);
+ assert([] == $response['headers']);
+
+Implementing Handlers
+---------------------
+
+Client handlers are just PHP callables (functions or classes that have the
+``__invoke`` magic method). The callable accepts a request array and MUST
+return an instance of ``GuzzleHttp\Ring\Future\FutureArrayInterface`` so that
+the response can be used by both blocking and non-blocking consumers.
+
+Handlers need to follow a few simple rules:
+
+1. Do not throw exceptions. If an error is encountered, return an array that
+ contains the ``error`` key that maps to an ``\Exception`` value.
+2. If the request has a ``delay`` client option, then the handler should only
+ send the request after the specified delay time in seconds. Blocking
+ handlers may find it convenient to just let the
+ ``GuzzleHttp\Ring\Core::doSleep($request)`` function handle this for them.
+3. Always return an instance of ``GuzzleHttp\Ring\Future\FutureArrayInterface``.
+4. Complete any outstanding requests when the handler is destructed.
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/docs/client_middleware.rst b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/docs/client_middleware.rst
new file mode 100644
index 000000000..5a2c1a8ab
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/docs/client_middleware.rst
@@ -0,0 +1,165 @@
+=================
+Client Middleware
+=================
+
+Middleware intercepts requests before they are sent over the wire and can be
+used to add functionality to handlers.
+
+Modifying Requests
+------------------
+
+Let's say you wanted to modify requests before they are sent over the wire
+so that they always add specific headers. This can be accomplished by creating
+a function that accepts a handler and returns a new function that adds the
+composed behavior.
+
+.. code-block:: php
+
+ use GuzzleHttp\Ring\Client\CurlHandler;
+
+ $handler = new CurlHandler();
+
+ $addHeaderHandler = function (callable $handler, array $headers = []) {
+ return function (array $request) use ($handler, $headers) {
+ // Add our custom headers
+ foreach ($headers as $key => $value) {
+ $request['headers'][$key] = $value;
+ }
+
+ // Send the request using the handler and return the response.
+ return $handler($request);
+ }
+ };
+
+ // Create a new handler that adds headers to each request.
+ $handler = $addHeaderHandler($handler, [
+ 'X-AddMe' => 'hello',
+ 'Authorization' => 'Basic xyz'
+ ]);
+
+ $response = $handler([
+ 'http_method' => 'GET',
+ 'headers' => ['Host' => ['httpbin.org']]
+ ]);
+
+Modifying Responses
+-------------------
+
+You can change a response as it's returned from a middleware. Remember that
+responses returned from an handler (including middleware) must implement
+``GuzzleHttp\Ring\Future\FutureArrayInterface``. In order to be a good citizen,
+you should not expect that the responses returned through your middleware will
+be completed synchronously. Instead, you should use the
+``GuzzleHttp\Ring\Core::proxy()`` function to modify the response when the
+underlying promise is resolved. This function is a helper function that makes it
+easy to create a new instance of ``FutureArrayInterface`` that wraps an existing
+``FutureArrayInterface`` object.
+
+Let's say you wanted to add headers to a response as they are returned from
+your middleware, but you want to make sure you aren't causing future
+responses to be dereferenced right away. You can achieve this by modifying the
+incoming request and using the ``Core::proxy`` function.
+
+.. code-block:: php
+
+ use GuzzleHttp\Ring\Core;
+ use GuzzleHttp\Ring\Client\CurlHandler;
+
+ $handler = new CurlHandler();
+
+ $responseHeaderHandler = function (callable $handler, array $headers) {
+ return function (array $request) use ($handler, $headers) {
+ // Send the request using the wrapped handler.
+ return Core::proxy($handler($request), function ($response) use ($headers) {
+ // Add the headers to the response when it is available.
+ foreach ($headers as $key => $value) {
+ $response['headers'][$key] = (array) $value;
+ }
+ // Note that you can return a regular response array when using
+ // the proxy method.
+ return $response;
+ });
+ }
+ };
+
+ // Create a new handler that adds headers to each response.
+ $handler = $responseHeaderHandler($handler, ['X-Header' => 'hello!']);
+
+ $response = $handler([
+ 'http_method' => 'GET',
+ 'headers' => ['Host' => ['httpbin.org']]
+ ]);
+
+ assert($response['headers']['X-Header'] == 'hello!');
+
+Built-In Middleware
+-------------------
+
+RingPHP comes with a few basic client middlewares that modify requests
+and responses.
+
+Streaming Middleware
+~~~~~~~~~~~~~~~~~~~~
+
+If you want to send all requests with the ``streaming`` option to a specific
+handler but other requests to a different handler, then use the streaming
+middleware.
+
+.. code-block:: php
+
+ use GuzzleHttp\Ring\Client\CurlHandler;
+ use GuzzleHttp\Ring\Client\StreamHandler;
+ use GuzzleHttp\Ring\Client\Middleware;
+
+ $defaultHandler = new CurlHandler();
+ $streamingHandler = new StreamHandler();
+ $streamingHandler = Middleware::wrapStreaming(
+ $defaultHandler,
+ $streamingHandler
+ );
+
+ // Send the request using the streaming handler.
+ $response = $streamingHandler([
+ 'http_method' => 'GET',
+ 'headers' => ['Host' => ['www.google.com']],
+ 'stream' => true
+ ]);
+
+ // Send the request using the default handler.
+ $response = $streamingHandler([
+ 'http_method' => 'GET',
+ 'headers' => ['Host' => ['www.google.com']]
+ ]);
+
+Future Middleware
+~~~~~~~~~~~~~~~~~
+
+If you want to send all requests with the ``future`` option to a specific
+handler but other requests to a different handler, then use the future
+middleware.
+
+.. code-block:: php
+
+ use GuzzleHttp\Ring\Client\CurlHandler;
+ use GuzzleHttp\Ring\Client\CurlMultiHandler;
+ use GuzzleHttp\Ring\Client\Middleware;
+
+ $defaultHandler = new CurlHandler();
+ $futureHandler = new CurlMultiHandler();
+ $futureHandler = Middleware::wrapFuture(
+ $defaultHandler,
+ $futureHandler
+ );
+
+ // Send the request using the blocking CurlHandler.
+ $response = $futureHandler([
+ 'http_method' => 'GET',
+ 'headers' => ['Host' => ['www.google.com']]
+ ]);
+
+ // Send the request using the non-blocking CurlMultiHandler.
+ $response = $futureHandler([
+ 'http_method' => 'GET',
+ 'headers' => ['Host' => ['www.google.com']],
+ 'future' => true
+ ]);
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/docs/conf.py b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/docs/conf.py
new file mode 100644
index 000000000..c6404aa1e
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/docs/conf.py
@@ -0,0 +1,23 @@
+import sys, os
+import sphinx_rtd_theme
+from sphinx.highlighting import lexers
+from pygments.lexers.web import PhpLexer
+
+
+lexers['php'] = PhpLexer(startinline=True, linenos=1)
+lexers['php-annotations'] = PhpLexer(startinline=True, linenos=1)
+primary_domain = 'php'
+
+extensions = []
+templates_path = ['_templates']
+source_suffix = '.rst'
+master_doc = 'index'
+project = u'RingPHP'
+copyright = u'2014, Michael Dowling'
+version = '1.0.0-alpha'
+exclude_patterns = ['_build']
+
+html_title = "RingPHP"
+html_short_title = "RingPHP"
+html_theme = "sphinx_rtd_theme"
+html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/docs/futures.rst b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/docs/futures.rst
new file mode 100644
index 000000000..af29cb378
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/docs/futures.rst
@@ -0,0 +1,164 @@
+=======
+Futures
+=======
+
+Futures represent a computation that may have not yet completed. RingPHP
+uses hybrid of futures and promises to provide a consistent API that can be
+used for both blocking and non-blocking consumers.
+
+Promises
+--------
+
+You can get the result of a future when it is ready using the promise interface
+of a future. Futures expose a promise API via a ``then()`` method that utilizes
+`React's promise library `_. You should
+use this API when you do not wish to block.
+
+.. code-block:: php
+
+ use GuzzleHttp\Ring\Client\CurlMultiHandler;
+
+ $request = [
+ 'http_method' => 'GET',
+ 'uri' => '/',
+ 'headers' => ['host' => ['httpbin.org']]
+ ];
+
+ $response = $handler($request);
+
+ // Use the then() method to use the promise API of the future.
+ $response->then(function ($response) {
+ echo $response['status'];
+ });
+
+You can get the promise used by a future, an instance of
+``React\Promise\PromiseInterface``, by calling the ``promise()`` method.
+
+.. code-block:: php
+
+ $response = $handler($request);
+ $promise = $response->promise();
+ $promise->then(function ($response) {
+ echo $response['status'];
+ });
+
+This promise value can be used with React's
+`aggregate promise functions `_.
+
+Waiting
+-------
+
+You can wait on a future to complete and retrieve the value, or *dereference*
+the future, using the ``wait()`` method. Calling the ``wait()`` method of a
+future will block until the result is available. The result is then returned or
+an exception is thrown if and exception was encountered while waiting on the
+the result. Subsequent calls to dereference a future will return the previously
+completed result or throw the previously encountered exception. Futures can be
+cancelled, which stops the computation if possible.
+
+.. code-block:: php
+
+ use GuzzleHttp\Ring\Client\CurlMultiHandler;
+
+ $response = $handler([
+ 'http_method' => 'GET',
+ 'uri' => '/',
+ 'headers' => ['host' => ['httpbin.org']]
+ ]);
+
+ // You can explicitly call block to wait on a result.
+ $realizedResponse = $response->wait();
+
+ // Future responses can be used like a regular PHP array.
+ echo $response['status'];
+
+In addition to explicitly calling the ``wait()`` function, using a future like
+a normal value will implicitly trigger the ``wait()`` function.
+
+Future Responses
+----------------
+
+RingPHP uses futures to return asynchronous responses immediately. Client
+handlers always return future responses that implement
+``GuzzleHttp\Ring\Future\ArrayFutureInterface``. These future responses act
+just like normal PHP associative arrays for blocking access and provide a
+promise interface for non-blocking access.
+
+.. code-block:: php
+
+ use GuzzleHttp\Ring\Client\CurlMultiHandler;
+
+ $handler = new CurlMultiHandler();
+
+ $request = [
+ 'http_method' => 'GET',
+ 'uri' => '/',
+ 'headers' => ['Host' => ['www.google.com']]
+ ];
+
+ $response = $handler($request);
+
+ // Use the promise API for non-blocking access to the response. The actual
+ // response value will be delivered to the promise.
+ $response->then(function ($response) {
+ echo $response['status'];
+ });
+
+ // You can wait (block) until the future is completed.
+ $response->wait();
+
+ // This will implicitly call wait(), and will block too!
+ $response['status'];
+
+.. important::
+
+ Futures that are not completed by the time the underlying handler is
+ destructed will be completed when the handler is shutting down.
+
+Cancelling
+----------
+
+Futures can be cancelled if they have not already been dereferenced.
+
+RingPHP futures are typically implemented with the
+``GuzzleHttp\Ring\Future\BaseFutureTrait``. This trait provides the cancellation
+functionality that should be common to most implementations. Cancelling a
+future response will try to prevent the request from sending over the wire.
+
+When a future is cancelled, the cancellation function is invoked and performs
+the actual work needed to cancel the request from sending if possible
+(e.g., telling an event loop to stop sending a request or to close a socket).
+If no cancellation function is provided, then a request cannot be cancelled. If
+a cancel function is provided, then it should accept the future as an argument
+and return true if the future was successfully cancelled or false if it could
+not be cancelled.
+
+Wrapping an existing Promise
+----------------------------
+
+You can easily create a future from any existing promise using the
+``GuzzleHttp\Ring\Future\FutureValue`` class. This class's constructor
+accepts a promise as the first argument, a wait function as the second
+argument, and a cancellation function as the third argument. The dereference
+function is used to force the promise to resolve (for example, manually ticking
+an event loop). The cancel function is optional and is used to tell the thing
+that created the promise that it can stop computing the result (for example,
+telling an event loop to stop transferring a request).
+
+.. code-block:: php
+
+ use GuzzleHttp\Ring\Future\FutureValue;
+ use React\Promise\Deferred;
+
+ $deferred = new Deferred();
+ $promise = $deferred->promise();
+
+ $f = new FutureValue(
+ $promise,
+ function () use ($deferred) {
+ // This function is responsible for blocking and resolving the
+ // promise. Here we pass in a reference to the deferred so that
+ // it can be resolved or rejected.
+ $deferred->resolve('foo');
+ }
+ );
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/docs/index.rst b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/docs/index.rst
new file mode 100644
index 000000000..4bbce631c
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/docs/index.rst
@@ -0,0 +1,50 @@
+=======
+RingPHP
+=======
+
+Provides a simple API and specification that abstracts away the details of HTTP
+into a single PHP function. RingPHP be used to power HTTP clients and servers
+through a PHP function that accepts a request hash and returns a response hash
+that is fulfilled using a `promise `_,
+allowing RingPHP to support both synchronous and asynchronous workflows.
+
+By abstracting the implementation details of different HTTP clients and
+servers, RingPHP allows you to utilize pluggable HTTP clients and servers
+without tying your application to a specific implementation.
+
+.. toctree::
+ :maxdepth: 2
+
+ spec
+ futures
+ client_middleware
+ client_handlers
+ testing
+
+.. code-block:: php
+
+ 'GET',
+ 'uri' => '/',
+ 'headers' => [
+ 'host' => ['www.google.com'],
+ 'x-foo' => ['baz']
+ ]
+ ]);
+
+ $response->then(function (array $response) {
+ echo $response['status'];
+ });
+
+ $response->wait();
+
+RingPHP is inspired by Clojure's `Ring `_,
+which, in turn, was inspired by Python's WSGI and Ruby's Rack. RingPHP is
+utilized as the handler layer in `Guzzle `_ 5.0+ to send
+HTTP requests.
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/docs/requirements.txt b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/docs/requirements.txt
new file mode 100644
index 000000000..483a4e960
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/docs/requirements.txt
@@ -0,0 +1 @@
+sphinx_rtd_theme
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/docs/spec.rst b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/docs/spec.rst
new file mode 100644
index 000000000..bc9107898
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/docs/spec.rst
@@ -0,0 +1,311 @@
+=============
+Specification
+=============
+
+RingPHP applications consist of handlers, requests, responses, and
+middleware.
+
+Handlers
+--------
+
+Handlers are implemented as a PHP ``callable`` that accept a request array
+and return a response array (``GuzzleHttp\Ring\Future\FutureArrayInterface``).
+
+For example:
+
+.. code-block:: php
+
+ use GuzzleHttp\Ring\Future\CompletedFutureArray;
+
+ $mockHandler = function (array $request) {
+ return new CompletedFutureArray([
+ 'status' => 200,
+ 'headers' => ['X-Foo' => ['Bar']],
+ 'body' => 'Hello!'
+ ]);
+ };
+
+This handler returns the same response each time it is invoked. All RingPHP
+handlers must return a ``GuzzleHttp\Ring\Future\FutureArrayInterface``. Use
+``GuzzleHttp\Ring\Future\CompletedFutureArray`` when returning a response that
+has already completed.
+
+Requests
+--------
+
+A request array is a PHP associative array that contains the configuration
+settings need to send a request.
+
+.. code-block:: php
+
+ $request = [
+ 'http_method' => 'GET',
+ 'scheme' => 'http',
+ 'uri' => '/',
+ 'body' => 'hello!',
+ 'client' => ['timeout' => 1.0],
+ 'headers' => [
+ 'host' => ['httpbin.org'],
+ 'X-Foo' => ['baz', 'bar']
+ ]
+ ];
+
+The request array contains the following key value pairs:
+
+request_method
+ (string, required) The HTTP request method, must be all caps corresponding
+ to a HTTP request method, such as ``GET`` or ``POST``.
+
+scheme
+ (string) The transport protocol, must be one of ``http`` or ``https``.
+ Defaults to ``http``.
+
+uri
+ (string, required) The request URI excluding the query string. Must
+ start with "/".
+
+query_string
+ (string) The query string, if present (e.g., ``foo=bar``).
+
+version
+ (string) HTTP protocol version. Defaults to ``1.1``.
+
+headers
+ (required, array) Associative array of headers. Each key represents the
+ header name. Each value contains an array of strings where each entry of
+ the array SHOULD be sent over the wire on a separate header line.
+
+body
+ (string, fopen resource, ``Iterator``, ``GuzzleHttp\Stream\StreamInterface``)
+ The body of the request, if present. Can be a string, resource returned
+ from fopen, an ``Iterator`` that yields chunks of data, an object that
+ implemented ``__toString``, or a ``GuzzleHttp\Stream\StreamInterface``.
+
+future
+ (bool, string) Controls the asynchronous behavior of a response.
+
+ Set to ``true`` or omit the ``future`` option to *request* that a request
+ will be completed asynchronously. Keep in mind that your request might not
+ necessarily be completed asynchronously based on the handler you are using.
+ Set the ``future`` option to ``false`` to request that a synchronous
+ response be provided.
+
+ You can provide a string value to specify fine-tuned future behaviors that
+ may be specific to the underlying handlers you are using. There are,
+ however, some common future options that handlers should implement if
+ possible.
+
+ lazy
+ Requests that the handler does not open and send the request
+ immediately, but rather only opens and sends the request once the
+ future is dereferenced. This option is often useful for sending a large
+ number of requests concurrently to allow handlers to take better
+ advantage of non-blocking transfers by first building up a pool of
+ requests.
+
+ If an handler does not implement or understand a provided string value,
+ then the request MUST be treated as if the user provided ``true`` rather
+ than the string value.
+
+ Future responses created by asynchronous handlers MUST attempt to complete
+ any outstanding future responses when they are destructed. Asynchronous
+ handlers MAY choose to automatically complete responses when the number
+ of outstanding requests reaches an handler-specific threshold.
+
+Client Specific Options
+~~~~~~~~~~~~~~~~~~~~~~~
+
+The following options are only used in ring client handlers.
+
+.. _client-options:
+
+client
+ (array) Associative array of client specific transfer options. The
+ ``client`` request key value pair can contain the following keys:
+
+ cert
+ (string, array) Set to a string to specify the path to a file
+ containing a PEM formatted SSL client side certificate. If a password
+ is required, then set ``cert`` to an array containing the path to the
+ PEM file in the first array element followed by the certificate
+ password in the second array element.
+
+ connect_timeout
+ (float) Float describing the number of seconds to wait while trying to
+ connect to a server. Use ``0`` to wait indefinitely (the default
+ behavior).
+
+ debug
+ (bool, fopen() resource) Set to true or set to a PHP stream returned by
+ fopen() to enable debug output with the handler used to send a request.
+ If set to ``true``, the output is written to PHP's STDOUT. If a PHP
+ ``fopen`` resource handle is provided, the output is written to the
+ stream.
+
+ "Debug output" is handler specific: different handlers will yield
+ different output and various various level of detail. For example, when
+ using cURL to transfer requests, cURL's `CURLOPT_VERBOSE `_
+ will be used. When using the PHP stream wrapper, `stream notifications `_
+ will be emitted.
+
+ decode_content
+ (bool) Specify whether or not ``Content-Encoding`` responses
+ (gzip, deflate, etc.) are automatically decoded. Set to ``true`` to
+ automatically decode encoded responses. Set to ``false`` to not decode
+ responses. By default, content is *not* decoded automatically.
+
+ delay
+ (int) The number of milliseconds to delay before sending the request.
+ This is often used for delaying before retrying a request. Handlers
+ SHOULD implement this if possible, but it is not a strict requirement.
+
+ progress
+ (function) Defines a function to invoke when transfer progress is made.
+ The function accepts the following arguments:
+
+ 1. The total number of bytes expected to be downloaded
+ 2. The number of bytes downloaded so far
+ 3. The number of bytes expected to be uploaded
+ 4. The number of bytes uploaded so far
+
+ proxy
+ (string, array) Pass a string to specify an HTTP proxy, or an
+ associative array to specify different proxies for different protocols
+ where the scheme is the key and the value is the proxy address.
+
+ .. code-block:: php
+
+ $request = [
+ 'http_method' => 'GET',
+ 'headers' => ['host' => ['httpbin.org']],
+ 'client' => [
+ // Use different proxies for different URI schemes.
+ 'proxy' => [
+ 'http' => 'http://proxy.example.com:5100',
+ 'https' => 'https://proxy.example.com:6100'
+ ]
+ ]
+ ];
+
+ ssl_key
+ (string, array) Specify the path to a file containing a private SSL key
+ in PEM format. If a password is required, then set to an array
+ containing the path to the SSL key in the first array element followed
+ by the password required for the certificate in the second element.
+
+ save_to
+ (string, fopen resource, ``GuzzleHttp\Stream\StreamInterface``)
+ Specifies where the body of the response is downloaded. Pass a string to
+ open a local file on disk and save the output to the file. Pass an fopen
+ resource to save the output to a PHP stream resource. Pass a
+ ``GuzzleHttp\Stream\StreamInterface`` to save the output to a Guzzle
+ StreamInterface. Omitting this option will typically save the body of a
+ response to a PHP temp stream.
+
+ stream
+ (bool) Set to true to stream a response rather than download it all
+ up-front. This option will only be utilized when the corresponding
+ handler supports it.
+
+ timeout
+ (float) Float describing the timeout of the request in seconds. Use 0 to
+ wait indefinitely (the default behavior).
+
+ verify
+ (bool, string) Describes the SSL certificate verification behavior of a
+ request. Set to true to enable SSL certificate verification using the
+ system CA bundle when available (the default). Set to false to disable
+ certificate verification (this is insecure!). Set to a string to provide
+ the path to a CA bundle on disk to enable verification using a custom
+ certificate.
+
+ version
+ (string) HTTP protocol version to use with the request.
+
+Server Specific Options
+~~~~~~~~~~~~~~~~~~~~~~~
+
+The following options are only used in ring server handlers.
+
+server_port
+ (integer) The port on which the request is being handled. This is only
+ used with ring servers, and is required.
+
+server_name
+ (string) The resolved server name, or the server IP address. Required when
+ using a Ring server.
+
+remote_addr
+ (string) The IP address of the client or the last proxy that sent the
+ request. Required when using a Ring server.
+
+Responses
+---------
+
+A response is an array-like object that implements
+``GuzzleHttp\Ring\Future\FutureArrayInterface``. Responses contain the
+following key value pairs:
+
+body
+ (string, fopen resource, ``Iterator``, ``GuzzleHttp\Stream\StreamInterface``)
+ The body of the response, if present. Can be a string, resource returned
+ from fopen, an ``Iterator`` that yields chunks of data, an object that
+ implemented ``__toString``, or a ``GuzzleHttp\Stream\StreamInterface``.
+
+effective_url
+ (string) The URL that returned the resulting response.
+
+error
+ (``\Exception``) Contains an exception describing any errors that were
+ encountered during the transfer.
+
+headers
+ (Required, array) Associative array of headers. Each key represents the
+ header name. Each value contains an array of strings where each entry of
+ the array is a header line. The headers array MAY be an empty array in the
+ event an error occurred before a response was received.
+
+reason
+ (string) Optional reason phrase. This option should be provided when the
+ reason phrase does not match the typical reason phrase associated with the
+ ``status`` code. See `RFC 7231 `_
+ for a list of HTTP reason phrases mapped to status codes.
+
+status
+ (Required, integer) The HTTP status code. The status code MAY be set to
+ ``null`` in the event an error occurred before a response was received
+ (e.g., a networking error).
+
+transfer_stats
+ (array) Provides an associative array of arbitrary transfer statistics if
+ provided by the underlying handler.
+
+version
+ (string) HTTP protocol version. Defaults to ``1.1``.
+
+Middleware
+----------
+
+Ring middleware augments the functionality of handlers by invoking them in the
+process of generating responses. Middleware is typically implemented as a
+higher-order function that takes one or more handlers as arguments followed by
+an optional associative array of options as the last argument, returning a new
+handler with the desired compound behavior.
+
+Here's an example of a middleware that adds a Content-Type header to each
+request.
+
+.. code-block:: php
+
+ use GuzzleHttp\Ring\Client\CurlHandler;
+ use GuzzleHttp\Ring\Core;
+
+ $contentTypeHandler = function(callable $handler, $contentType) {
+ return function (array $request) use ($handler, $contentType) {
+ return $handler(Core::setHeader('Content-Type', $contentType));
+ };
+ };
+
+ $baseHandler = new CurlHandler();
+ $wrappedHandler = $contentTypeHandler($baseHandler, 'text/html');
+ $response = $wrappedHandler([/** request hash **/]);
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/docs/testing.rst b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/docs/testing.rst
new file mode 100644
index 000000000..9df2562ed
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/docs/testing.rst
@@ -0,0 +1,74 @@
+=======
+Testing
+=======
+
+RingPHP tests client handlers using `PHPUnit `_ and a
+built-in node.js web server.
+
+Running Tests
+-------------
+
+First, install the dependencies using `Composer `_.
+
+ composer.phar install
+
+Next, run the unit tests using ``Make``.
+
+ make test
+
+The tests are also run on Travis-CI on each commit: https://travis-ci.org/guzzle/guzzle-ring
+
+Test Server
+-----------
+
+Testing client handlers usually involves actually sending HTTP requests.
+RingPHP provides a node.js web server that returns canned responses and
+keep a list of the requests that have been received. The server can then
+be queried to get a list of the requests that were sent by the client so that
+you can ensure that the client serialized and transferred requests as intended.
+
+The server keeps a list of queued responses and returns responses that are
+popped off of the queue as HTTP requests are received. When there are not
+more responses to serve, the server returns a 500 error response.
+
+The test server uses the ``GuzzleHttp\Tests\Ring\Client\Server`` class to
+control the server.
+
+.. code-block:: php
+
+ use GuzzleHttp\Ring\Client\StreamHandler;
+ use GuzzleHttp\Tests\Ring\Client\Server;
+
+ // First return a 200 followed by a 404 response.
+ Server::enqueue([
+ ['status' => 200],
+ ['status' => 404]
+ ]);
+
+ $handler = new StreamHandler();
+
+ $response = $handler([
+ 'http_method' => 'GET',
+ 'headers' => ['host' => [Server::$host]],
+ 'uri' => '/'
+ ]);
+
+ assert(200 == $response['status']);
+
+ $response = $handler([
+ 'http_method' => 'HEAD',
+ 'headers' => ['host' => [Server::$host]],
+ 'uri' => '/'
+ ]);
+
+ assert(404 == $response['status']);
+
+After requests have been sent, you can get a list of the requests as they
+were sent over the wire to ensure they were sent correctly.
+
+.. code-block:: php
+
+ $received = Server::received();
+
+ assert('GET' == $received[0]['http_method']);
+ assert('HEAD' == $received[1]['http_method']);
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Client/ClientUtils.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Client/ClientUtils.php
new file mode 100644
index 000000000..1e622063c
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Client/ClientUtils.php
@@ -0,0 +1,57 @@
+getDefaultOptions($request, $headers);
+ $this->applyMethod($request, $options);
+ if (isset($request['client'])) {
+ $this->applyHandlerOptions($request, $options);
+ }
+ $this->applyHeaders($request, $options);
+ unset($options['_headers']);
+ // Add handler options from the request's configuration options
+ if (isset($request['client']['curl'])) {
+ $options = $this->applyCustomCurlOptions($request['client']['curl'], $options);
+ }
+ if (!$handle) {
+ $handle = \curl_init();
+ }
+ $body = $this->getOutputBody($request, $options);
+ \curl_setopt_array($handle, $options);
+ return [$handle, &$headers, $body];
+ }
+ /**
+ * Creates a response hash from a cURL result.
+ *
+ * @param callable $handler Handler that was used.
+ * @param array $request Request that sent.
+ * @param array $response Response hash to update.
+ * @param array $headers Headers received during transfer.
+ * @param resource $body Body fopen response.
+ *
+ * @return array
+ */
+ public static function createResponse(callable $handler, array $request, array $response, array $headers, $body)
+ {
+ if (isset($response['transfer_stats']['url'])) {
+ $response['effective_url'] = $response['transfer_stats']['url'];
+ }
+ if (!empty($headers)) {
+ $startLine = \explode(' ', \array_shift($headers), 3);
+ $headerList = \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::headersFromLines($headers);
+ $response['headers'] = $headerList;
+ $response['version'] = isset($startLine[0]) ? \substr($startLine[0], 5) : null;
+ $response['status'] = isset($startLine[1]) ? (int) $startLine[1] : null;
+ $response['reason'] = isset($startLine[2]) ? $startLine[2] : null;
+ $response['body'] = $body;
+ \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::rewindBody($response);
+ }
+ return !empty($response['curl']['errno']) || !isset($response['status']) ? self::createErrorResponse($handler, $request, $response) : $response;
+ }
+ private static function createErrorResponse(callable $handler, array $request, array $response)
+ {
+ static $connectionErrors = [\CURLE_OPERATION_TIMEOUTED => \true, \CURLE_COULDNT_RESOLVE_HOST => \true, \CURLE_COULDNT_CONNECT => \true, \CURLE_SSL_CONNECT_ERROR => \true, \CURLE_GOT_NOTHING => \true];
+ // Retry when nothing is present or when curl failed to rewind.
+ if (!isset($response['err_message']) && (empty($response['curl']['errno']) || $response['curl']['errno'] == 65)) {
+ return self::retryFailedRewind($handler, $request, $response);
+ }
+ $message = isset($response['err_message']) ? $response['err_message'] : \sprintf('cURL error %s: %s', $response['curl']['errno'], isset($response['curl']['error']) ? $response['curl']['error'] : 'See http://curl.haxx.se/libcurl/c/libcurl-errors.html');
+ $error = isset($response['curl']['errno']) && isset($connectionErrors[$response['curl']['errno']]) ? new \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Exception\ConnectException($message) : new \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Exception\RingException($message);
+ return $response + ['status' => null, 'reason' => null, 'body' => null, 'headers' => [], 'error' => $error];
+ }
+ private function getOutputBody(array $request, array &$options)
+ {
+ // Determine where the body of the response (if any) will be streamed.
+ if (isset($options[\CURLOPT_WRITEFUNCTION])) {
+ return $request['client']['save_to'];
+ }
+ if (isset($options[\CURLOPT_FILE])) {
+ return $options[\CURLOPT_FILE];
+ }
+ if ($request['http_method'] != 'HEAD') {
+ // Create a default body if one was not provided
+ return $options[\CURLOPT_FILE] = \fopen('php://temp', 'w+');
+ }
+ return null;
+ }
+ private function getDefaultOptions(array $request, array &$headers)
+ {
+ $url = \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::url($request);
+ $startingResponse = \false;
+ $options = ['_headers' => $request['headers'], \CURLOPT_CUSTOMREQUEST => $request['http_method'], \CURLOPT_URL => $url, \CURLOPT_RETURNTRANSFER => \false, \CURLOPT_HEADER => \false, \CURLOPT_CONNECTTIMEOUT => 150, \CURLOPT_HEADERFUNCTION => function ($ch, $h) use(&$headers, &$startingResponse) {
+ $value = \trim($h);
+ if ($value === '') {
+ $startingResponse = \true;
+ } elseif ($startingResponse) {
+ $startingResponse = \false;
+ $headers = [$value];
+ } else {
+ $headers[] = $value;
+ }
+ return \strlen($h);
+ }];
+ if (isset($request['version'])) {
+ if ($request['version'] == 2.0) {
+ $options[\CURLOPT_HTTP_VERSION] = \CURL_HTTP_VERSION_2_0;
+ } else {
+ if ($request['version'] == 1.1) {
+ $options[\CURLOPT_HTTP_VERSION] = \CURL_HTTP_VERSION_1_1;
+ } else {
+ $options[\CURLOPT_HTTP_VERSION] = \CURL_HTTP_VERSION_1_0;
+ }
+ }
+ }
+ if (\defined('CURLOPT_PROTOCOLS')) {
+ $options[\CURLOPT_PROTOCOLS] = \CURLPROTO_HTTP | \CURLPROTO_HTTPS;
+ }
+ return $options;
+ }
+ private function applyMethod(array $request, array &$options)
+ {
+ if (isset($request['body'])) {
+ $this->applyBody($request, $options);
+ return;
+ }
+ switch ($request['http_method']) {
+ case 'PUT':
+ case 'POST':
+ // See http://tools.ietf.org/html/rfc7230#section-3.3.2
+ if (!\Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::hasHeader($request, 'Content-Length')) {
+ $options[\CURLOPT_HTTPHEADER][] = 'Content-Length: 0';
+ }
+ break;
+ case 'HEAD':
+ $options[\CURLOPT_NOBODY] = \true;
+ unset($options[\CURLOPT_WRITEFUNCTION], $options[\CURLOPT_READFUNCTION], $options[\CURLOPT_FILE], $options[\CURLOPT_INFILE]);
+ }
+ }
+ private function applyBody(array $request, array &$options)
+ {
+ $contentLength = \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::firstHeader($request, 'Content-Length');
+ $size = $contentLength !== null ? (int) $contentLength : null;
+ // Send the body as a string if the size is less than 1MB OR if the
+ // [client][curl][body_as_string] request value is set.
+ if ($size !== null && $size < 1000000 || isset($request['client']['curl']['body_as_string']) || \is_string($request['body'])) {
+ $options[\CURLOPT_POSTFIELDS] = \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::body($request);
+ // Don't duplicate the Content-Length header
+ $this->removeHeader('Content-Length', $options);
+ $this->removeHeader('Transfer-Encoding', $options);
+ } else {
+ $options[\CURLOPT_UPLOAD] = \true;
+ if ($size !== null) {
+ // Let cURL handle setting the Content-Length header
+ $options[\CURLOPT_INFILESIZE] = $size;
+ $this->removeHeader('Content-Length', $options);
+ }
+ $this->addStreamingBody($request, $options);
+ }
+ // If the Expect header is not present, prevent curl from adding it
+ if (!\Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::hasHeader($request, 'Expect')) {
+ $options[\CURLOPT_HTTPHEADER][] = 'Expect:';
+ }
+ // cURL sometimes adds a content-type by default. Prevent this.
+ if (!\Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::hasHeader($request, 'Content-Type')) {
+ $options[\CURLOPT_HTTPHEADER][] = 'Content-Type:';
+ }
+ }
+ private function addStreamingBody(array $request, array &$options)
+ {
+ $body = $request['body'];
+ if ($body instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\StreamInterface) {
+ $options[\CURLOPT_READFUNCTION] = function ($ch, $fd, $length) use($body) {
+ return (string) $body->read($length);
+ };
+ if (!isset($options[\CURLOPT_INFILESIZE])) {
+ if ($size = $body->getSize()) {
+ $options[\CURLOPT_INFILESIZE] = $size;
+ }
+ }
+ } elseif (\is_resource($body)) {
+ $options[\CURLOPT_INFILE] = $body;
+ } elseif ($body instanceof \Iterator) {
+ $buf = '';
+ $options[\CURLOPT_READFUNCTION] = function ($ch, $fd, $length) use($body, &$buf) {
+ if ($body->valid()) {
+ $buf .= $body->current();
+ $body->next();
+ }
+ $result = (string) \substr($buf, 0, $length);
+ $buf = \substr($buf, $length);
+ return $result;
+ };
+ } else {
+ throw new \InvalidArgumentException('Invalid request body provided');
+ }
+ }
+ private function applyHeaders(array $request, array &$options)
+ {
+ foreach ($options['_headers'] as $name => $values) {
+ foreach ($values as $value) {
+ $options[\CURLOPT_HTTPHEADER][] = "{$name}: {$value}";
+ }
+ }
+ // Remove the Accept header if one was not set
+ if (!\Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::hasHeader($request, 'Accept')) {
+ $options[\CURLOPT_HTTPHEADER][] = 'Accept:';
+ }
+ }
+ /**
+ * Takes an array of curl options specified in the 'curl' option of a
+ * request's configuration array and maps them to CURLOPT_* options.
+ *
+ * This method is only called when a request has a 'curl' config setting.
+ *
+ * @param array $config Configuration array of custom curl option
+ * @param array $options Array of existing curl options
+ *
+ * @return array Returns a new array of curl options
+ */
+ private function applyCustomCurlOptions(array $config, array $options)
+ {
+ $curlOptions = [];
+ foreach ($config as $key => $value) {
+ if (\is_int($key)) {
+ $curlOptions[$key] = $value;
+ }
+ }
+ return $curlOptions + $options;
+ }
+ /**
+ * Remove a header from the options array.
+ *
+ * @param string $name Case-insensitive header to remove
+ * @param array $options Array of options to modify
+ */
+ private function removeHeader($name, array &$options)
+ {
+ foreach (\array_keys($options['_headers']) as $key) {
+ if (!\strcasecmp($key, $name)) {
+ unset($options['_headers'][$key]);
+ return;
+ }
+ }
+ }
+ /**
+ * Applies an array of request client options to a the options array.
+ *
+ * This method uses a large switch rather than double-dispatch to save on
+ * high overhead of calling functions in PHP.
+ */
+ private function applyHandlerOptions(array $request, array &$options)
+ {
+ foreach ($request['client'] as $key => $value) {
+ switch ($key) {
+ // Violating PSR-4 to provide more room.
+ case 'verify':
+ if ($value === \false) {
+ unset($options[\CURLOPT_CAINFO]);
+ $options[\CURLOPT_SSL_VERIFYHOST] = 0;
+ $options[\CURLOPT_SSL_VERIFYPEER] = \false;
+ continue 2;
+ }
+ $options[\CURLOPT_SSL_VERIFYHOST] = 2;
+ $options[\CURLOPT_SSL_VERIFYPEER] = \true;
+ if (\is_string($value)) {
+ $options[\CURLOPT_CAINFO] = $value;
+ if (!\file_exists($value)) {
+ throw new \InvalidArgumentException("SSL CA bundle not found: {$value}");
+ }
+ }
+ break;
+ case 'decode_content':
+ if ($value === \false) {
+ continue 2;
+ }
+ $accept = \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::firstHeader($request, 'Accept-Encoding');
+ if ($accept) {
+ $options[\CURLOPT_ENCODING] = $accept;
+ } else {
+ $options[\CURLOPT_ENCODING] = '';
+ // Don't let curl send the header over the wire
+ $options[\CURLOPT_HTTPHEADER][] = 'Accept-Encoding:';
+ }
+ break;
+ case 'save_to':
+ if (\is_string($value)) {
+ if (!\is_dir(\dirname($value))) {
+ throw new \RuntimeException(\sprintf('Directory %s does not exist for save_to value of %s', \dirname($value), $value));
+ }
+ $value = new \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\LazyOpenStream($value, 'w+');
+ }
+ if ($value instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\StreamInterface) {
+ $options[\CURLOPT_WRITEFUNCTION] = function ($ch, $write) use($value) {
+ return $value->write($write);
+ };
+ } elseif (\is_resource($value)) {
+ $options[\CURLOPT_FILE] = $value;
+ } else {
+ throw new \InvalidArgumentException('save_to must be a ' . 'GuzzleHttp\\Stream\\StreamInterface or resource');
+ }
+ break;
+ case 'timeout':
+ if (\defined('CURLOPT_TIMEOUT_MS')) {
+ $options[\CURLOPT_TIMEOUT_MS] = $value * 1000;
+ } else {
+ $options[\CURLOPT_TIMEOUT] = $value;
+ }
+ break;
+ case 'connect_timeout':
+ if (\defined('CURLOPT_CONNECTTIMEOUT_MS')) {
+ $options[\CURLOPT_CONNECTTIMEOUT_MS] = $value * 1000;
+ } else {
+ $options[\CURLOPT_CONNECTTIMEOUT] = $value;
+ }
+ break;
+ case 'proxy':
+ if (!\is_array($value)) {
+ $options[\CURLOPT_PROXY] = $value;
+ } elseif (isset($request['scheme'])) {
+ $scheme = $request['scheme'];
+ if (isset($value[$scheme])) {
+ $options[\CURLOPT_PROXY] = $value[$scheme];
+ }
+ }
+ break;
+ case 'cert':
+ if (\is_array($value)) {
+ $options[\CURLOPT_SSLCERTPASSWD] = $value[1];
+ $value = $value[0];
+ }
+ if (!\file_exists($value)) {
+ throw new \InvalidArgumentException("SSL certificate not found: {$value}");
+ }
+ $options[\CURLOPT_SSLCERT] = $value;
+ break;
+ case 'ssl_key':
+ if (\is_array($value)) {
+ $options[\CURLOPT_SSLKEYPASSWD] = $value[1];
+ $value = $value[0];
+ }
+ if (!\file_exists($value)) {
+ throw new \InvalidArgumentException("SSL private key not found: {$value}");
+ }
+ $options[\CURLOPT_SSLKEY] = $value;
+ break;
+ case 'progress':
+ if (!\is_callable($value)) {
+ throw new \InvalidArgumentException('progress client option must be callable');
+ }
+ $options[\CURLOPT_NOPROGRESS] = \false;
+ $options[\CURLOPT_PROGRESSFUNCTION] = function () use($value) {
+ $args = \func_get_args();
+ // PHP 5.5 pushed the handle onto the start of the args
+ if (\is_resource($args[0])) {
+ \array_shift($args);
+ }
+ \call_user_func_array($value, $args);
+ };
+ break;
+ case 'debug':
+ if ($value) {
+ $options[\CURLOPT_STDERR] = \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::getDebugResource($value);
+ $options[\CURLOPT_VERBOSE] = \true;
+ }
+ break;
+ }
+ }
+ }
+ /**
+ * This function ensures that a response was set on a transaction. If one
+ * was not set, then the request is retried if possible. This error
+ * typically means you are sending a payload, curl encountered a
+ * "Connection died, retrying a fresh connect" error, tried to rewind the
+ * stream, and then encountered a "necessary data rewind wasn't possible"
+ * error, causing the request to be sent through curl_multi_info_read()
+ * without an error status.
+ */
+ private static function retryFailedRewind(callable $handler, array $request, array $response)
+ {
+ // If there is no body, then there is some other kind of issue. This
+ // is weird and should probably never happen.
+ if (!isset($request['body'])) {
+ $response['err_message'] = 'No response was received for a request ' . 'with no body. This could mean that you are saturating your ' . 'network.';
+ return self::createErrorResponse($handler, $request, $response);
+ }
+ if (!\Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::rewindBody($request)) {
+ $response['err_message'] = 'The connection unexpectedly failed ' . 'without providing an error. The request would have been ' . 'retried, but attempting to rewind the request body failed.';
+ return self::createErrorResponse($handler, $request, $response);
+ }
+ // Retry no more than 3 times before giving up.
+ if (!isset($request['curl']['retries'])) {
+ $request['curl']['retries'] = 1;
+ } elseif ($request['curl']['retries'] == 2) {
+ $response['err_message'] = 'The cURL request was retried 3 times ' . 'and did no succeed. cURL was unable to rewind the body of ' . 'the request and subsequent retries resulted in the same ' . 'error. Turn on the debug option to see what went wrong. ' . 'See https://bugs.php.net/bug.php?id=47204 for more information.';
+ return self::createErrorResponse($handler, $request, $response);
+ } else {
+ $request['curl']['retries']++;
+ }
+ return $handler($request);
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Client/CurlHandler.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Client/CurlHandler.php
new file mode 100644
index 000000000..8cfcd2f83
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Client/CurlHandler.php
@@ -0,0 +1,111 @@
+handles = $this->ownedHandles = [];
+ $this->factory = isset($options['handle_factory']) ? $options['handle_factory'] : new \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Client\CurlFactory();
+ $this->maxHandles = isset($options['max_handles']) ? $options['max_handles'] : 5;
+ }
+ public function __destruct()
+ {
+ foreach ($this->handles as $handle) {
+ if (\is_resource($handle)) {
+ \curl_close($handle);
+ }
+ }
+ }
+ /**
+ * @param array $request
+ *
+ * @return CompletedFutureArray
+ */
+ public function __invoke(array $request)
+ {
+ return new \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Future\CompletedFutureArray($this->_invokeAsArray($request));
+ }
+ /**
+ * @internal
+ *
+ * @param array $request
+ *
+ * @return array
+ */
+ public function _invokeAsArray(array $request)
+ {
+ $factory = $this->factory;
+ // Ensure headers are by reference. They're updated elsewhere.
+ $result = $factory($request, $this->checkoutEasyHandle());
+ $h = $result[0];
+ $hd =& $result[1];
+ $bd = $result[2];
+ \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::doSleep($request);
+ \curl_exec($h);
+ $response = ['transfer_stats' => \curl_getinfo($h)];
+ $response['curl']['error'] = \curl_error($h);
+ $response['curl']['errno'] = \curl_errno($h);
+ $response['transfer_stats'] = \array_merge($response['transfer_stats'], $response['curl']);
+ $this->releaseEasyHandle($h);
+ return \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Client\CurlFactory::createResponse([$this, '_invokeAsArray'], $request, $response, $hd, $bd);
+ }
+ private function checkoutEasyHandle()
+ {
+ // Find an unused handle in the cache
+ if (\false !== ($key = \array_search(\false, $this->ownedHandles, \true))) {
+ $this->ownedHandles[$key] = \true;
+ return $this->handles[$key];
+ }
+ // Add a new handle
+ $handle = \curl_init();
+ $id = (int) $handle;
+ $this->handles[$id] = $handle;
+ $this->ownedHandles[$id] = \true;
+ return $handle;
+ }
+ private function releaseEasyHandle($handle)
+ {
+ $id = (int) $handle;
+ if (\count($this->ownedHandles) > $this->maxHandles) {
+ \curl_close($this->handles[$id]);
+ unset($this->handles[$id], $this->ownedHandles[$id]);
+ } else {
+ // curl_reset doesn't clear these out for some reason
+ static $unsetValues = [\CURLOPT_HEADERFUNCTION => null, \CURLOPT_WRITEFUNCTION => null, \CURLOPT_READFUNCTION => null, \CURLOPT_PROGRESSFUNCTION => null];
+ \curl_setopt_array($handle, $unsetValues);
+ \curl_reset($handle);
+ $this->ownedHandles[$id] = \false;
+ }
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Client/CurlMultiHandler.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Client/CurlMultiHandler.php
new file mode 100644
index 000000000..fa3ba768c
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Client/CurlMultiHandler.php
@@ -0,0 +1,188 @@
+_mh = $options['mh'];
+ }
+ $this->factory = isset($options['handle_factory']) ? $options['handle_factory'] : new \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Client\CurlFactory();
+ $this->selectTimeout = isset($options['select_timeout']) ? $options['select_timeout'] : 1;
+ $this->maxHandles = isset($options['max_handles']) ? $options['max_handles'] : 100;
+ }
+ public function __get($name)
+ {
+ if ($name === '_mh') {
+ return $this->_mh = \curl_multi_init();
+ }
+ throw new \BadMethodCallException();
+ }
+ public function __destruct()
+ {
+ // Finish any open connections before terminating the script.
+ if ($this->handles) {
+ $this->execute();
+ }
+ if (isset($this->_mh)) {
+ \curl_multi_close($this->_mh);
+ unset($this->_mh);
+ }
+ }
+ public function __invoke(array $request)
+ {
+ $factory = $this->factory;
+ $result = $factory($request);
+ $entry = ['request' => $request, 'response' => [], 'handle' => $result[0], 'headers' => &$result[1], 'body' => $result[2], 'deferred' => new \Google\Site_Kit_Dependencies\React\Promise\Deferred()];
+ $id = (int) $result[0];
+ $future = new \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Future\FutureArray($entry['deferred']->promise(), [$this, 'execute'], function () use($id) {
+ return $this->cancel($id);
+ });
+ $this->addRequest($entry);
+ // Transfer outstanding requests if there are too many open handles.
+ if (\count($this->handles) >= $this->maxHandles) {
+ $this->execute();
+ }
+ return $future;
+ }
+ /**
+ * Runs until all outstanding connections have completed.
+ */
+ public function execute()
+ {
+ do {
+ if ($this->active && \curl_multi_select($this->_mh, $this->selectTimeout) === -1) {
+ // Perform a usleep if a select returns -1.
+ // See: https://bugs.php.net/bug.php?id=61141
+ \usleep(250);
+ }
+ // Add any delayed futures if needed.
+ if ($this->delays) {
+ $this->addDelays();
+ }
+ do {
+ $mrc = \curl_multi_exec($this->_mh, $this->active);
+ } while ($mrc === \CURLM_CALL_MULTI_PERFORM);
+ $this->processMessages();
+ // If there are delays but no transfers, then sleep for a bit.
+ if (!$this->active && $this->delays) {
+ \usleep(500);
+ }
+ } while ($this->active || $this->handles);
+ }
+ private function addRequest(array &$entry)
+ {
+ $id = (int) $entry['handle'];
+ $this->handles[$id] = $entry;
+ // If the request is a delay, then add the reques to the curl multi
+ // pool only after the specified delay.
+ if (isset($entry['request']['client']['delay'])) {
+ $this->delays[$id] = \microtime(\true) + $entry['request']['client']['delay'] / 1000;
+ } elseif (empty($entry['request']['future'])) {
+ \curl_multi_add_handle($this->_mh, $entry['handle']);
+ } else {
+ \curl_multi_add_handle($this->_mh, $entry['handle']);
+ // "lazy" futures are only sent once the pool has many requests.
+ if ($entry['request']['future'] !== 'lazy') {
+ do {
+ $mrc = \curl_multi_exec($this->_mh, $this->active);
+ } while ($mrc === \CURLM_CALL_MULTI_PERFORM);
+ $this->processMessages();
+ }
+ }
+ }
+ private function removeProcessed($id)
+ {
+ if (isset($this->handles[$id])) {
+ \curl_multi_remove_handle($this->_mh, $this->handles[$id]['handle']);
+ \curl_close($this->handles[$id]['handle']);
+ unset($this->handles[$id], $this->delays[$id]);
+ }
+ }
+ /**
+ * Cancels a handle from sending and removes references to it.
+ *
+ * @param int $id Handle ID to cancel and remove.
+ *
+ * @return bool True on success, false on failure.
+ */
+ private function cancel($id)
+ {
+ // Cannot cancel if it has been processed.
+ if (!isset($this->handles[$id])) {
+ return \false;
+ }
+ $handle = $this->handles[$id]['handle'];
+ unset($this->delays[$id], $this->handles[$id]);
+ \curl_multi_remove_handle($this->_mh, $handle);
+ \curl_close($handle);
+ return \true;
+ }
+ private function addDelays()
+ {
+ $currentTime = \microtime(\true);
+ foreach ($this->delays as $id => $delay) {
+ if ($currentTime >= $delay) {
+ unset($this->delays[$id]);
+ \curl_multi_add_handle($this->_mh, $this->handles[$id]['handle']);
+ }
+ }
+ }
+ private function processMessages()
+ {
+ while ($done = \curl_multi_info_read($this->_mh)) {
+ $id = (int) $done['handle'];
+ if (!isset($this->handles[$id])) {
+ // Probably was cancelled.
+ continue;
+ }
+ $entry = $this->handles[$id];
+ $entry['response']['transfer_stats'] = \curl_getinfo($done['handle']);
+ if ($done['result'] !== \CURLM_OK) {
+ $entry['response']['curl']['errno'] = $done['result'];
+ $entry['response']['curl']['error'] = \curl_error($done['handle']);
+ }
+ $result = \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Client\CurlFactory::createResponse($this, $entry['request'], $entry['response'], $entry['headers'], $entry['body']);
+ $this->removeProcessed($id);
+ $entry['deferred']->resolve($result);
+ }
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Client/Middleware.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Client/Middleware.php
new file mode 100644
index 000000000..c54d4d1f0
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Client/Middleware.php
@@ -0,0 +1,50 @@
+result = $result;
+ }
+ public function __invoke(array $request)
+ {
+ \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::doSleep($request);
+ $response = \is_callable($this->result) ? \call_user_func($this->result, $request) : $this->result;
+ if (\is_array($response)) {
+ $response = new \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Future\CompletedFutureArray($response + ['status' => null, 'body' => null, 'headers' => [], 'reason' => null, 'effective_url' => null]);
+ } elseif (!$response instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Future\FutureArrayInterface) {
+ throw new \InvalidArgumentException('Response must be an array or FutureArrayInterface. Found ' . \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::describeType($request));
+ }
+ return $response;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Client/StreamHandler.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Client/StreamHandler.php
new file mode 100644
index 000000000..3ae328016
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Client/StreamHandler.php
@@ -0,0 +1,295 @@
+options = $options;
+ }
+ public function __invoke(array $request)
+ {
+ $url = \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::url($request);
+ \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::doSleep($request);
+ try {
+ // Does not support the expect header.
+ $request = \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::removeHeader($request, 'Expect');
+ $stream = $this->createStream($url, $request);
+ return $this->createResponse($request, $url, $stream);
+ } catch (\Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Exception\RingException $e) {
+ return $this->createErrorResponse($url, $e);
+ }
+ }
+ private function createResponse(array $request, $url, $stream)
+ {
+ $hdrs = $this->lastHeaders;
+ $this->lastHeaders = null;
+ $parts = \explode(' ', \array_shift($hdrs), 3);
+ $response = ['version' => \substr($parts[0], 5), 'status' => $parts[1], 'reason' => isset($parts[2]) ? $parts[2] : null, 'headers' => \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::headersFromLines($hdrs), 'effective_url' => $url];
+ $stream = $this->checkDecode($request, $response, $stream);
+ // If not streaming, then drain the response into a stream.
+ if (empty($request['client']['stream'])) {
+ $dest = isset($request['client']['save_to']) ? $request['client']['save_to'] : \fopen('php://temp', 'r+');
+ $stream = $this->drain($stream, $dest);
+ }
+ $response['body'] = $stream;
+ return new \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Future\CompletedFutureArray($response);
+ }
+ private function checkDecode(array $request, array $response, $stream)
+ {
+ // Automatically decode responses when instructed.
+ if (!empty($request['client']['decode_content'])) {
+ switch (\Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::firstHeader($response, 'Content-Encoding', \true)) {
+ case 'gzip':
+ case 'deflate':
+ $stream = new \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\InflateStream(\Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Stream::factory($stream));
+ break;
+ }
+ }
+ return $stream;
+ }
+ /**
+ * Drains the stream into the "save_to" client option.
+ *
+ * @param resource $stream
+ * @param string|resource|StreamInterface $dest
+ *
+ * @return Stream
+ * @throws \RuntimeException when the save_to option is invalid.
+ */
+ private function drain($stream, $dest)
+ {
+ if (\is_resource($stream)) {
+ if (!\is_resource($dest)) {
+ $stream = \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Stream::factory($stream);
+ } else {
+ \stream_copy_to_stream($stream, $dest);
+ \fclose($stream);
+ \rewind($dest);
+ return $dest;
+ }
+ }
+ // Stream the response into the destination stream
+ $dest = \is_string($dest) ? new \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Stream(\Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Utils::open($dest, 'r+')) : \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Stream::factory($dest);
+ \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Utils::copyToStream($stream, $dest);
+ $dest->seek(0);
+ $stream->close();
+ return $dest;
+ }
+ /**
+ * Creates an error response for the given stream.
+ *
+ * @param string $url
+ * @param RingException $e
+ *
+ * @return array
+ */
+ private function createErrorResponse($url, \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Exception\RingException $e)
+ {
+ // Determine if the error was a networking error.
+ $message = $e->getMessage();
+ // This list can probably get more comprehensive.
+ if (\strpos($message, 'getaddrinfo') || \strpos($message, 'Connection refused')) {
+ $e = new \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Exception\ConnectException($e->getMessage(), 0, $e);
+ }
+ return new \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Future\CompletedFutureArray(['status' => null, 'body' => null, 'headers' => [], 'effective_url' => $url, 'error' => $e]);
+ }
+ /**
+ * Create a resource and check to ensure it was created successfully
+ *
+ * @param callable $callback Callable that returns stream resource
+ *
+ * @return resource
+ * @throws \RuntimeException on error
+ */
+ private function createResource(callable $callback)
+ {
+ $errors = null;
+ \set_error_handler(function ($_, $msg, $file, $line) use(&$errors) {
+ $errors[] = ['message' => $msg, 'file' => $file, 'line' => $line];
+ return \true;
+ });
+ $resource = $callback();
+ \restore_error_handler();
+ if (!$resource) {
+ $message = 'Error creating resource: ';
+ foreach ($errors as $err) {
+ foreach ($err as $key => $value) {
+ $message .= "[{$key}] {$value}" . \PHP_EOL;
+ }
+ }
+ throw new \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Exception\RingException(\trim($message));
+ }
+ return $resource;
+ }
+ private function createStream($url, array $request)
+ {
+ static $methods;
+ if (!$methods) {
+ $methods = \array_flip(\get_class_methods(__CLASS__));
+ }
+ // HTTP/1.1 streams using the PHP stream wrapper require a
+ // Connection: close header
+ if ((!isset($request['version']) || $request['version'] == '1.1') && !\Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::hasHeader($request, 'Connection')) {
+ $request['headers']['Connection'] = ['close'];
+ }
+ // Ensure SSL is verified by default
+ if (!isset($request['client']['verify'])) {
+ $request['client']['verify'] = \true;
+ }
+ $params = [];
+ $options = $this->getDefaultOptions($request);
+ if (isset($request['client'])) {
+ foreach ($request['client'] as $key => $value) {
+ $method = "add_{$key}";
+ if (isset($methods[$method])) {
+ $this->{$method}($request, $options, $value, $params);
+ }
+ }
+ }
+ return $this->createStreamResource($url, $request, $options, $this->createContext($request, $options, $params));
+ }
+ private function getDefaultOptions(array $request)
+ {
+ $headers = "";
+ foreach ($request['headers'] as $name => $value) {
+ foreach ((array) $value as $val) {
+ $headers .= "{$name}: {$val}\r\n";
+ }
+ }
+ $context = ['http' => ['method' => $request['http_method'], 'header' => $headers, 'protocol_version' => isset($request['version']) ? $request['version'] : 1.1, 'ignore_errors' => \true, 'follow_location' => 0]];
+ $body = \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::body($request);
+ if (isset($body)) {
+ $context['http']['content'] = $body;
+ // Prevent the HTTP handler from adding a Content-Type header.
+ if (!\Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::hasHeader($request, 'Content-Type')) {
+ $context['http']['header'] .= "Content-Type:\r\n";
+ }
+ }
+ $context['http']['header'] = \rtrim($context['http']['header']);
+ return $context;
+ }
+ private function add_proxy(array $request, &$options, $value, &$params)
+ {
+ if (!\is_array($value)) {
+ $options['http']['proxy'] = $value;
+ } else {
+ $scheme = isset($request['scheme']) ? $request['scheme'] : 'http';
+ if (isset($value[$scheme])) {
+ $options['http']['proxy'] = $value[$scheme];
+ }
+ }
+ }
+ private function add_timeout(array $request, &$options, $value, &$params)
+ {
+ $options['http']['timeout'] = $value;
+ }
+ private function add_verify(array $request, &$options, $value, &$params)
+ {
+ if ($value === \true) {
+ // PHP 5.6 or greater will find the system cert by default. When
+ // < 5.6, use the Guzzle bundled cacert.
+ if (\PHP_VERSION_ID < 50600) {
+ $options['ssl']['cafile'] = \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Client\ClientUtils::getDefaultCaBundle();
+ }
+ } elseif (\is_string($value)) {
+ $options['ssl']['cafile'] = $value;
+ if (!\file_exists($value)) {
+ throw new \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Exception\RingException("SSL CA bundle not found: {$value}");
+ }
+ } elseif ($value === \false) {
+ $options['ssl']['verify_peer'] = \false;
+ $options['ssl']['allow_self_signed'] = \true;
+ return;
+ } else {
+ throw new \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Exception\RingException('Invalid verify request option');
+ }
+ $options['ssl']['verify_peer'] = \true;
+ $options['ssl']['allow_self_signed'] = \false;
+ }
+ private function add_cert(array $request, &$options, $value, &$params)
+ {
+ if (\is_array($value)) {
+ $options['ssl']['passphrase'] = $value[1];
+ $value = $value[0];
+ }
+ if (!\file_exists($value)) {
+ throw new \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Exception\RingException("SSL certificate not found: {$value}");
+ }
+ $options['ssl']['local_cert'] = $value;
+ }
+ private function add_progress(array $request, &$options, $value, &$params)
+ {
+ $fn = function ($code, $_1, $_2, $_3, $transferred, $total) use($value) {
+ if ($code == \STREAM_NOTIFY_PROGRESS) {
+ $value($total, $transferred, null, null);
+ }
+ };
+ // Wrap the existing function if needed.
+ $params['notification'] = isset($params['notification']) ? \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::callArray([$params['notification'], $fn]) : $fn;
+ }
+ private function add_debug(array $request, &$options, $value, &$params)
+ {
+ if ($value === \false) {
+ return;
+ }
+ static $map = [\STREAM_NOTIFY_CONNECT => 'CONNECT', \STREAM_NOTIFY_AUTH_REQUIRED => 'AUTH_REQUIRED', \STREAM_NOTIFY_AUTH_RESULT => 'AUTH_RESULT', \STREAM_NOTIFY_MIME_TYPE_IS => 'MIME_TYPE_IS', \STREAM_NOTIFY_FILE_SIZE_IS => 'FILE_SIZE_IS', \STREAM_NOTIFY_REDIRECTED => 'REDIRECTED', \STREAM_NOTIFY_PROGRESS => 'PROGRESS', \STREAM_NOTIFY_FAILURE => 'FAILURE', \STREAM_NOTIFY_COMPLETED => 'COMPLETED', \STREAM_NOTIFY_RESOLVE => 'RESOLVE'];
+ static $args = ['severity', 'message', 'message_code', 'bytes_transferred', 'bytes_max'];
+ $value = \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::getDebugResource($value);
+ $ident = $request['http_method'] . ' ' . \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::url($request);
+ $fn = function () use($ident, $value, $map, $args) {
+ $passed = \func_get_args();
+ $code = \array_shift($passed);
+ \fprintf($value, '<%s> [%s] ', $ident, $map[$code]);
+ foreach (\array_filter($passed) as $i => $v) {
+ \fwrite($value, $args[$i] . ': "' . $v . '" ');
+ }
+ \fwrite($value, "\n");
+ };
+ // Wrap the existing function if needed.
+ $params['notification'] = isset($params['notification']) ? \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Core::callArray([$params['notification'], $fn]) : $fn;
+ }
+ private function applyCustomOptions(array $request, array &$options)
+ {
+ if (!isset($request['client']['stream_context'])) {
+ return;
+ }
+ if (!\is_array($request['client']['stream_context'])) {
+ throw new \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Exception\RingException('stream_context must be an array');
+ }
+ $options = \array_replace_recursive($options, $request['client']['stream_context']);
+ }
+ private function createContext(array $request, array $options, array $params)
+ {
+ $this->applyCustomOptions($request, $options);
+ return $this->createResource(function () use($request, $options, $params) {
+ return \stream_context_create($options, $params);
+ }, $request, $options);
+ }
+ private function createStreamResource($url, array $request, array $options, $context)
+ {
+ return $this->createResource(function () use($url, $context) {
+ if (\false === \strpos($url, 'http')) {
+ \trigger_error("URL is invalid: {$url}", \E_USER_WARNING);
+ return null;
+ }
+ $resource = \fopen($url, 'r', null, $context);
+ $this->lastHeaders = $http_response_header;
+ return $resource;
+ }, $request, $options);
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Core.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Core.php
new file mode 100644
index 000000000..c7a086df0
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Core.php
@@ -0,0 +1,317 @@
+ $value) {
+ if (!\strcasecmp($name, $header)) {
+ $result = \array_merge($result, $value);
+ }
+ }
+ }
+ return $result;
+ }
+ /**
+ * Gets a header value from a message as a string or null
+ *
+ * This method searches through the "headers" key of a message for a header
+ * using a case-insensitive search. The lines of the header are imploded
+ * using commas into a single string return value.
+ *
+ * @param array $message Request or response hash.
+ * @param string $header Header to retrieve
+ *
+ * @return string|null Returns the header string if found, or null if not.
+ */
+ public static function header($message, $header)
+ {
+ $match = self::headerLines($message, $header);
+ return $match ? \implode(', ', $match) : null;
+ }
+ /**
+ * Returns the first header value from a message as a string or null. If
+ * a header line contains multiple values separated by a comma, then this
+ * function will return the first value in the list.
+ *
+ * @param array $message Request or response hash.
+ * @param string $header Header to retrieve
+ *
+ * @return string|null Returns the value as a string if found.
+ */
+ public static function firstHeader($message, $header)
+ {
+ if (!empty($message['headers'])) {
+ foreach ($message['headers'] as $name => $value) {
+ if (!\strcasecmp($name, $header)) {
+ // Return the match itself if it is a single value.
+ $pos = \strpos($value[0], ',');
+ return $pos ? \substr($value[0], 0, $pos) : $value[0];
+ }
+ }
+ }
+ return null;
+ }
+ /**
+ * Returns true if a message has the provided case-insensitive header.
+ *
+ * @param array $message Request or response hash.
+ * @param string $header Header to check
+ *
+ * @return bool
+ */
+ public static function hasHeader($message, $header)
+ {
+ if (!empty($message['headers'])) {
+ foreach ($message['headers'] as $name => $value) {
+ if (!\strcasecmp($name, $header)) {
+ return \true;
+ }
+ }
+ }
+ return \false;
+ }
+ /**
+ * Parses an array of header lines into an associative array of headers.
+ *
+ * @param array $lines Header lines array of strings in the following
+ * format: "Name: Value"
+ * @return array
+ */
+ public static function headersFromLines($lines)
+ {
+ $headers = [];
+ foreach ($lines as $line) {
+ $parts = \explode(':', $line, 2);
+ $headers[\trim($parts[0])][] = isset($parts[1]) ? \trim($parts[1]) : null;
+ }
+ return $headers;
+ }
+ /**
+ * Removes a header from a message using a case-insensitive comparison.
+ *
+ * @param array $message Message that contains 'headers'
+ * @param string $header Header to remove
+ *
+ * @return array
+ */
+ public static function removeHeader(array $message, $header)
+ {
+ if (isset($message['headers'])) {
+ foreach (\array_keys($message['headers']) as $key) {
+ if (!\strcasecmp($header, $key)) {
+ unset($message['headers'][$key]);
+ }
+ }
+ }
+ return $message;
+ }
+ /**
+ * Replaces any existing case insensitive headers with the given value.
+ *
+ * @param array $message Message that contains 'headers'
+ * @param string $header Header to set.
+ * @param array $value Value to set.
+ *
+ * @return array
+ */
+ public static function setHeader(array $message, $header, array $value)
+ {
+ $message = self::removeHeader($message, $header);
+ $message['headers'][$header] = $value;
+ return $message;
+ }
+ /**
+ * Creates a URL string from a request.
+ *
+ * If the "url" key is present on the request, it is returned, otherwise
+ * the url is built up based on the scheme, host, uri, and query_string
+ * request values.
+ *
+ * @param array $request Request to get the URL from
+ *
+ * @return string Returns the request URL as a string.
+ * @throws \InvalidArgumentException if no Host header is present.
+ */
+ public static function url(array $request)
+ {
+ if (isset($request['url'])) {
+ return $request['url'];
+ }
+ $uri = (isset($request['scheme']) ? $request['scheme'] : 'http') . '://';
+ if ($host = self::header($request, 'host')) {
+ $uri .= $host;
+ } else {
+ throw new \InvalidArgumentException('No Host header was provided');
+ }
+ if (isset($request['uri'])) {
+ $uri .= $request['uri'];
+ }
+ if (isset($request['query_string'])) {
+ $uri .= '?' . $request['query_string'];
+ }
+ return $uri;
+ }
+ /**
+ * Reads the body of a message into a string.
+ *
+ * @param array|FutureArrayInterface $message Array containing a "body" key
+ *
+ * @return null|string Returns the body as a string or null if not set.
+ * @throws \InvalidArgumentException if a request body is invalid.
+ */
+ public static function body($message)
+ {
+ if (!isset($message['body'])) {
+ return null;
+ }
+ if ($message['body'] instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\StreamInterface) {
+ return (string) $message['body'];
+ }
+ switch (\gettype($message['body'])) {
+ case 'string':
+ return $message['body'];
+ case 'resource':
+ return \stream_get_contents($message['body']);
+ case 'object':
+ if ($message['body'] instanceof \Iterator) {
+ return \implode('', \iterator_to_array($message['body']));
+ } elseif (\method_exists($message['body'], '__toString')) {
+ return (string) $message['body'];
+ }
+ default:
+ throw new \InvalidArgumentException('Invalid request body: ' . self::describeType($message['body']));
+ }
+ }
+ /**
+ * Rewind the body of the provided message if possible.
+ *
+ * @param array $message Message that contains a 'body' field.
+ *
+ * @return bool Returns true on success, false on failure
+ */
+ public static function rewindBody($message)
+ {
+ if ($message['body'] instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\StreamInterface) {
+ return $message['body']->seek(0);
+ }
+ if ($message['body'] instanceof \Generator) {
+ return \false;
+ }
+ if ($message['body'] instanceof \Iterator) {
+ $message['body']->rewind();
+ return \true;
+ }
+ if (\is_resource($message['body'])) {
+ return \rewind($message['body']);
+ }
+ return \is_string($message['body']) || \is_object($message['body']) && \method_exists($message['body'], '__toString');
+ }
+ /**
+ * Debug function used to describe the provided value type and class.
+ *
+ * @param mixed $input
+ *
+ * @return string Returns a string containing the type of the variable and
+ * if a class is provided, the class name.
+ */
+ public static function describeType($input)
+ {
+ switch (\gettype($input)) {
+ case 'object':
+ return 'object(' . \get_class($input) . ')';
+ case 'array':
+ return 'array(' . \count($input) . ')';
+ default:
+ \ob_start();
+ \var_dump($input);
+ // normalize float vs double
+ return \str_replace('double(', 'float(', \rtrim(\ob_get_clean()));
+ }
+ }
+ /**
+ * Sleep for the specified amount of time specified in the request's
+ * ['client']['delay'] option if present.
+ *
+ * This function should only be used when a non-blocking sleep is not
+ * possible.
+ *
+ * @param array $request Request to sleep
+ */
+ public static function doSleep(array $request)
+ {
+ if (isset($request['client']['delay'])) {
+ \usleep($request['client']['delay'] * 1000);
+ }
+ }
+ /**
+ * Returns a proxied future that modifies the dereferenced value of another
+ * future using a promise.
+ *
+ * @param FutureArrayInterface $future Future to wrap with a new future
+ * @param callable $onFulfilled Invoked when the future fulfilled
+ * @param callable $onRejected Invoked when the future rejected
+ * @param callable $onProgress Invoked when the future progresses
+ *
+ * @return FutureArray
+ */
+ public static function proxy(\Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Future\FutureArrayInterface $future, callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null)
+ {
+ return new \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Future\FutureArray($future->then($onFulfilled, $onRejected, $onProgress), [$future, 'wait'], [$future, 'cancel']);
+ }
+ /**
+ * Returns a debug stream based on the provided variable.
+ *
+ * @param mixed $value Optional value
+ *
+ * @return resource
+ */
+ public static function getDebugResource($value = null)
+ {
+ if (\is_resource($value)) {
+ return $value;
+ } elseif (\defined('STDOUT')) {
+ return \STDOUT;
+ } else {
+ return \fopen('php://output', 'w');
+ }
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Exception/CancelledException.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Exception/CancelledException.php
new file mode 100644
index 000000000..292e22e7c
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Exception/CancelledException.php
@@ -0,0 +1,10 @@
+wrappedPromise = $promise;
+ $this->waitfn = $wait;
+ $this->cancelfn = $cancel;
+ }
+ public function wait()
+ {
+ if (!$this->isRealized) {
+ $this->addShadow();
+ if (!$this->isRealized && $this->waitfn) {
+ $this->invokeWait();
+ }
+ if (!$this->isRealized) {
+ $this->error = new \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Exception\RingException('Waiting did not resolve future');
+ }
+ }
+ if ($this->error) {
+ throw $this->error;
+ }
+ return $this->result;
+ }
+ public function promise()
+ {
+ return $this->wrappedPromise;
+ }
+ public function then(callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null)
+ {
+ return $this->wrappedPromise->then($onFulfilled, $onRejected, $onProgress);
+ }
+ public function cancel()
+ {
+ if (!$this->isRealized) {
+ $cancelfn = $this->cancelfn;
+ $this->waitfn = $this->cancelfn = null;
+ $this->isRealized = \true;
+ $this->error = new \Google\Site_Kit_Dependencies\GuzzleHttp\Ring\Exception\CancelledFutureAccessException();
+ if ($cancelfn) {
+ $cancelfn($this);
+ }
+ }
+ }
+ private function addShadow()
+ {
+ // Get the result and error when the promise is resolved. Note that
+ // calling this function might trigger the resolution immediately.
+ $this->wrappedPromise->then(function ($value) {
+ $this->isRealized = \true;
+ $this->result = $value;
+ $this->waitfn = $this->cancelfn = null;
+ }, function ($error) {
+ $this->isRealized = \true;
+ $this->error = $error;
+ $this->waitfn = $this->cancelfn = null;
+ });
+ }
+ private function invokeWait()
+ {
+ try {
+ $wait = $this->waitfn;
+ $this->waitfn = null;
+ $wait();
+ } catch (\Exception $e) {
+ // Defer can throw to reject.
+ $this->error = $e;
+ $this->isRealized = \true;
+ }
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Future/CompletedFutureArray.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Future/CompletedFutureArray.php
new file mode 100644
index 000000000..1fb84d613
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Future/CompletedFutureArray.php
@@ -0,0 +1,38 @@
+result[$offset]);
+ }
+ public function offsetGet($offset)
+ {
+ return $this->result[$offset];
+ }
+ public function offsetSet($offset, $value)
+ {
+ $this->result[$offset] = $value;
+ }
+ public function offsetUnset($offset)
+ {
+ unset($this->result[$offset]);
+ }
+ public function count()
+ {
+ return \count($this->result);
+ }
+ public function getIterator()
+ {
+ return new \ArrayIterator($this->result);
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Future/CompletedFutureValue.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Future/CompletedFutureValue.php
new file mode 100644
index 000000000..e68736d38
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Future/CompletedFutureValue.php
@@ -0,0 +1,46 @@
+result = $result;
+ $this->error = $e;
+ }
+ public function wait()
+ {
+ if ($this->error) {
+ throw $this->error;
+ }
+ return $this->result;
+ }
+ public function cancel()
+ {
+ }
+ public function promise()
+ {
+ if (!$this->cachedPromise) {
+ $this->cachedPromise = $this->error ? new \Google\Site_Kit_Dependencies\React\Promise\RejectedPromise($this->error) : new \Google\Site_Kit_Dependencies\React\Promise\FulfilledPromise($this->result);
+ }
+ return $this->cachedPromise;
+ }
+ public function then(callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null)
+ {
+ return $this->promise()->then($onFulfilled, $onRejected, $onProgress);
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Future/FutureArray.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Future/FutureArray.php
new file mode 100644
index 000000000..25fec1110
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Future/FutureArray.php
@@ -0,0 +1,35 @@
+_value[$offset]);
+ }
+ public function offsetGet($offset)
+ {
+ return $this->_value[$offset];
+ }
+ public function offsetSet($offset, $value)
+ {
+ $this->_value[$offset] = $value;
+ }
+ public function offsetUnset($offset)
+ {
+ unset($this->_value[$offset]);
+ }
+ public function count()
+ {
+ return \count($this->_value);
+ }
+ public function getIterator()
+ {
+ return new \ArrayIterator($this->_value);
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Future/FutureArrayInterface.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Future/FutureArrayInterface.php
new file mode 100644
index 000000000..7d5970667
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/ringphp/src/Future/FutureArrayInterface.php
@@ -0,0 +1,10 @@
+_value = $this->wait();
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/CHANGELOG.rst b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/CHANGELOG.rst
new file mode 100644
index 000000000..0018ffe35
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/CHANGELOG.rst
@@ -0,0 +1,94 @@
+=========
+Changelog
+=========
+
+3.0.0 (2014-10-12)
+------------------
+
+* Now supports creating streams from functions and iterators.
+* Supports creating buffered streams and asynchronous streams.
+* Removed ``functions.php``. Use the corresponding functions provided by
+ ``GuzzleHttp\Streams\Utils`` instead.
+* Moved ``GuzzleHttp\Stream\MetadataStreamInterface::getMetadata`` to
+ ``GuzzleHttp\Stream\StreamInterface``. MetadataStreamInterface is no longer
+ used and is marked as deprecated.
+* Added ``attach()`` to ``GuzzleHttp\Stream\StreamInterface`` for PSR-7
+ compatibility.
+* Removed ``flush()`` from StreamInterface.
+* Removed the ``$maxLength`` parameter from
+ ``GuzzleHttp\Stream\StreamInterface::getContents()``. This function now
+ returns the entire remainder of the stream. If you want to limit the maximum
+ amount of data read from the stream, use the
+ ``GuzzleHttp\Stream\Utils::copyToString()`` function.
+* Streams that return an empty string, ``''``, are no longer considered a
+ failure. You MUST return ``false`` to mark the read as a failure, and ensure
+ that any decorators you create properly return ``true`` in response to the
+ ``eof()`` method when the stream is consumed.
+* ``GuzzleHttp\Stream\Stream::__construct``,
+ ``GuzzleHttp\Stream\Stream::factory``, and
+ ``GuzzleHttp\Stream\Utils::create`` no longer accept a size in the second
+ argument. They now accept an associative array of options, including the
+ "size" key and "metadata" key which can be used to provide custom metadata.
+* Added ``GuzzleHttp\Stream\BufferStream`` to add support for buffering data,
+ and when read, shifting data off of the buffer.
+* Added ``GuzzleHttp\Stream\NullBuffer`` which can be used as a buffer that
+ does not actually store any data.
+* Added ``GuzzleHttp\Stream\AsyncStream`` to provide support for non-blocking
+ streams that can be filled by a remote source (e.g., an event-loop). If a
+ ``drain`` option is provided, the stream can also act as if it is a blocking
+ stream.
+
+2.1.0 (2014-08-17)
+------------------
+
+* Added an InflateStream to inflate gzipped or deflated content.
+* Added ``flush`` to stream wrapper.
+* Added the ability to easily register the GuzzleStreamWrapper if needed.
+
+2.0.0 (2014-08-16)
+------------------
+
+* Deprecated functions.php and moved all of those methods to
+ ``GuzzleHttp\Streams\Utils``. Use ``GuzzleHttp\Stream\Stream::factory()``
+ instead of ``GuzzleHttp\Stream\create()`` to create new streams.
+* Added ``flush()`` to ``StreamInterface``. This method is used to flush any
+ underlying stream write buffers.
+* Added ``FnStream`` to easily decorate stream behavior with callables.
+* ``Utils::hash`` now throws an exception when the stream cannot seek to 0.
+
+1.5.1 (2014-09-10)
+------------------
+
+* Stream metadata is grabbed from the underlying stream each time
+ ``getMetadata`` is called rather than returning a value from a cache.
+* Properly closing all underlying streams when AppendStream is closed.
+* Seek functions no longer throw exceptions.
+* LazyOpenStream now correctly returns the underlying stream resource when
+ detached.
+
+1.5.0 (2014-08-07)
+------------------
+
+* Added ``Stream\safe_open`` to open stream resources and throw exceptions
+ instead of raising errors.
+
+1.4.0 (2014-07-19)
+------------------
+
+* Added a LazyOpenStream
+
+1.3.0 (2014-07-15)
+------------------
+
+* Added an AppendStream to stream over multiple stream one after the other.
+
+1.2.0 (2014-07-15)
+------------------
+
+* Updated the ``detach()`` method to return the underlying stream resource or
+ ``null`` if it does not wrap a resource.
+* Multiple fixes for how streams behave when the underlying resource is
+ detached
+* Do not clear statcache when a stream does not have a 'uri'
+* Added a fix to LimitStream
+* Added a condition to ensure that functions.php can be required multiple times
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/README.rst b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/README.rst
new file mode 100644
index 000000000..baff63b37
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/README.rst
@@ -0,0 +1,36 @@
+==============
+Guzzle Streams
+==============
+
+Provides a simple abstraction over streams of data.
+
+This library is used in `Guzzle 5 `_, and is
+(currently) compatible with the WIP PSR-7.
+
+Installation
+============
+
+This package can be installed easily using `Composer `_.
+Simply add the following to the composer.json file at the root of your project:
+
+.. code-block:: javascript
+
+ {
+ "require": {
+ "guzzlehttp/streams": "~3.0"
+ }
+ }
+
+Then install your dependencies using ``composer.phar install``.
+
+Documentation
+=============
+
+The documentation for this package can be found on the main Guzzle website at
+http://docs.guzzlephp.org/en/guzzle4/streams.html.
+
+Testing
+=======
+
+This library is tested using PHPUnit. You'll need to install the dependencies
+using `Composer `_ then run ``make test``.
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/AppendStream.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/AppendStream.php
new file mode 100644
index 000000000..3cc559bd4
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/AppendStream.php
@@ -0,0 +1,186 @@
+addStream($stream);
+ }
+ }
+ public function __toString()
+ {
+ try {
+ $this->seek(0);
+ return $this->getContents();
+ } catch (\Exception $e) {
+ return '';
+ }
+ }
+ /**
+ * Add a stream to the AppendStream
+ *
+ * @param StreamInterface $stream Stream to append. Must be readable.
+ *
+ * @throws \InvalidArgumentException if the stream is not readable
+ */
+ public function addStream(\Google\Site_Kit_Dependencies\GuzzleHttp\Stream\StreamInterface $stream)
+ {
+ if (!$stream->isReadable()) {
+ throw new \InvalidArgumentException('Each stream must be readable');
+ }
+ // The stream is only seekable if all streams are seekable
+ if (!$stream->isSeekable()) {
+ $this->seekable = \false;
+ }
+ $this->streams[] = $stream;
+ }
+ public function getContents()
+ {
+ return \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Utils::copyToString($this);
+ }
+ /**
+ * Closes each attached stream.
+ *
+ * {@inheritdoc}
+ */
+ public function close()
+ {
+ $this->pos = $this->current = 0;
+ foreach ($this->streams as $stream) {
+ $stream->close();
+ }
+ $this->streams = [];
+ }
+ /**
+ * Detaches each attached stream
+ *
+ * {@inheritdoc}
+ */
+ public function detach()
+ {
+ $this->close();
+ $this->detached = \true;
+ }
+ public function attach($stream)
+ {
+ throw new \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Exception\CannotAttachException();
+ }
+ public function tell()
+ {
+ return $this->pos;
+ }
+ /**
+ * Tries to calculate the size by adding the size of each stream.
+ *
+ * If any of the streams do not return a valid number, then the size of the
+ * append stream cannot be determined and null is returned.
+ *
+ * {@inheritdoc}
+ */
+ public function getSize()
+ {
+ $size = 0;
+ foreach ($this->streams as $stream) {
+ $s = $stream->getSize();
+ if ($s === null) {
+ return null;
+ }
+ $size += $s;
+ }
+ return $size;
+ }
+ public function eof()
+ {
+ return !$this->streams || $this->current >= \count($this->streams) - 1 && $this->streams[$this->current]->eof();
+ }
+ /**
+ * Attempts to seek to the given position. Only supports SEEK_SET.
+ *
+ * {@inheritdoc}
+ */
+ public function seek($offset, $whence = \SEEK_SET)
+ {
+ if (!$this->seekable || $whence !== \SEEK_SET) {
+ return \false;
+ }
+ $success = \true;
+ $this->pos = $this->current = 0;
+ // Rewind each stream
+ foreach ($this->streams as $stream) {
+ if (!$stream->seek(0)) {
+ $success = \false;
+ }
+ }
+ if (!$success) {
+ return \false;
+ }
+ // Seek to the actual position by reading from each stream
+ while ($this->pos < $offset && !$this->eof()) {
+ $this->read(\min(8096, $offset - $this->pos));
+ }
+ return $this->pos == $offset;
+ }
+ /**
+ * Reads from all of the appended streams until the length is met or EOF.
+ *
+ * {@inheritdoc}
+ */
+ public function read($length)
+ {
+ $buffer = '';
+ $total = \count($this->streams) - 1;
+ $remaining = $length;
+ while ($remaining > 0) {
+ // Progress to the next stream if needed.
+ if ($this->streams[$this->current]->eof()) {
+ if ($this->current == $total) {
+ break;
+ }
+ $this->current++;
+ }
+ $buffer .= $this->streams[$this->current]->read($remaining);
+ $remaining = $length - \strlen($buffer);
+ }
+ $this->pos += \strlen($buffer);
+ return $buffer;
+ }
+ public function isReadable()
+ {
+ return \true;
+ }
+ public function isWritable()
+ {
+ return \false;
+ }
+ public function isSeekable()
+ {
+ return $this->seekable;
+ }
+ public function write($string)
+ {
+ return \false;
+ }
+ public function getMetadata($key = null)
+ {
+ return $key ? null : [];
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/AsyncReadStream.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/AsyncReadStream.php
new file mode 100644
index 000000000..f9661df9b
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/AsyncReadStream.php
@@ -0,0 +1,173 @@
+isReadable() || !$buffer->isWritable()) {
+ throw new \InvalidArgumentException('Buffer must be readable and writable');
+ }
+ if (isset($config['size'])) {
+ $this->size = $config['size'];
+ }
+ static $callables = ['pump', 'drain'];
+ foreach ($callables as $check) {
+ if (isset($config[$check])) {
+ if (!\is_callable($config[$check])) {
+ throw new \InvalidArgumentException($check . ' must be callable');
+ }
+ $this->{$check} = $config[$check];
+ }
+ }
+ $this->hwm = $buffer->getMetadata('hwm');
+ // Cannot drain when there's no high water mark.
+ if ($this->hwm === null) {
+ $this->drain = null;
+ }
+ $this->stream = $buffer;
+ }
+ /**
+ * Factory method used to create new async stream and an underlying buffer
+ * if no buffer is provided.
+ *
+ * This function accepts the same options as AsyncReadStream::__construct,
+ * but added the following key value pairs:
+ *
+ * - buffer: (StreamInterface) Buffer used to buffer data. If none is
+ * provided, a default buffer is created.
+ * - hwm: (int) High water mark to use if a buffer is created on your
+ * behalf.
+ * - max_buffer: (int) If provided, wraps the utilized buffer in a
+ * DroppingStream decorator to ensure that buffer does not exceed a given
+ * length. When exceeded, the stream will begin dropping data. Set the
+ * max_buffer to 0, to use a NullStream which does not store data.
+ * - write: (callable) A function that is invoked when data is written
+ * to the underlying buffer. The function accepts the buffer as the first
+ * argument, and the data being written as the second. The function MUST
+ * return the number of bytes that were written or false to let writers
+ * know to slow down.
+ * - drain: (callable) See constructor documentation.
+ * - pump: (callable) See constructor documentation.
+ *
+ * @param array $options Associative array of options.
+ *
+ * @return array Returns an array containing the buffer used to buffer
+ * data, followed by the ready to use AsyncReadStream object.
+ */
+ public static function create(array $options = [])
+ {
+ $maxBuffer = isset($options['max_buffer']) ? $options['max_buffer'] : null;
+ if ($maxBuffer === 0) {
+ $buffer = new \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\NullStream();
+ } elseif (isset($options['buffer'])) {
+ $buffer = $options['buffer'];
+ } else {
+ $hwm = isset($options['hwm']) ? $options['hwm'] : 16384;
+ $buffer = new \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\BufferStream($hwm);
+ }
+ if ($maxBuffer > 0) {
+ $buffer = new \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\DroppingStream($buffer, $options['max_buffer']);
+ }
+ // Call the on_write callback if an on_write function was provided.
+ if (isset($options['write'])) {
+ $onWrite = $options['write'];
+ $buffer = \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\FnStream::decorate($buffer, ['write' => function ($string) use($buffer, $onWrite) {
+ $result = $buffer->write($string);
+ $onWrite($buffer, $string);
+ return $result;
+ }]);
+ }
+ return [$buffer, new self($buffer, $options)];
+ }
+ public function getSize()
+ {
+ return $this->size;
+ }
+ public function isWritable()
+ {
+ return \false;
+ }
+ public function write($string)
+ {
+ return \false;
+ }
+ public function read($length)
+ {
+ if (!$this->needsDrain && $this->drain) {
+ $this->needsDrain = $this->stream->getSize() >= $this->hwm;
+ }
+ $result = $this->stream->read($length);
+ // If we need to drain, then drain when the buffer is empty.
+ if ($this->needsDrain && $this->stream->getSize() === 0) {
+ $this->needsDrain = \false;
+ $drainFn = $this->drain;
+ $drainFn($this->stream);
+ }
+ $resultLen = \strlen($result);
+ // If a pump was provided, the buffer is still open, and not enough
+ // data was given, then block until the data is provided.
+ if ($this->pump && $resultLen < $length) {
+ $pumpFn = $this->pump;
+ $result .= $pumpFn($length - $resultLen);
+ }
+ return $result;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/BufferStream.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/BufferStream.php
new file mode 100644
index 000000000..ec6dffa9d
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/BufferStream.php
@@ -0,0 +1,116 @@
+hwm = $hwm;
+ }
+ public function __toString()
+ {
+ return $this->getContents();
+ }
+ public function getContents()
+ {
+ $buffer = $this->buffer;
+ $this->buffer = '';
+ return $buffer;
+ }
+ public function close()
+ {
+ $this->buffer = '';
+ }
+ public function detach()
+ {
+ $this->close();
+ }
+ public function attach($stream)
+ {
+ throw new \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Exception\CannotAttachException();
+ }
+ public function getSize()
+ {
+ return \strlen($this->buffer);
+ }
+ public function isReadable()
+ {
+ return \true;
+ }
+ public function isWritable()
+ {
+ return \true;
+ }
+ public function isSeekable()
+ {
+ return \false;
+ }
+ public function seek($offset, $whence = \SEEK_SET)
+ {
+ return \false;
+ }
+ public function eof()
+ {
+ return \strlen($this->buffer) === 0;
+ }
+ public function tell()
+ {
+ return \false;
+ }
+ /**
+ * Reads data from the buffer.
+ */
+ public function read($length)
+ {
+ $currentLength = \strlen($this->buffer);
+ if ($length >= $currentLength) {
+ // No need to slice the buffer because we don't have enough data.
+ $result = $this->buffer;
+ $this->buffer = '';
+ } else {
+ // Slice up the result to provide a subset of the buffer.
+ $result = \substr($this->buffer, 0, $length);
+ $this->buffer = \substr($this->buffer, $length);
+ }
+ return $result;
+ }
+ /**
+ * Writes data to the buffer.
+ */
+ public function write($string)
+ {
+ $this->buffer .= $string;
+ if (\strlen($this->buffer) >= $this->hwm) {
+ return \false;
+ }
+ return \strlen($string);
+ }
+ public function getMetadata($key = null)
+ {
+ if ($key == 'hwm') {
+ return $this->hwm;
+ }
+ return $key ? null : [];
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/CachingStream.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/CachingStream.php
new file mode 100644
index 000000000..e2ea66613
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/CachingStream.php
@@ -0,0 +1,97 @@
+remoteStream = $stream;
+ $this->stream = $target ?: new \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Stream(\fopen('php://temp', 'r+'));
+ }
+ public function getSize()
+ {
+ return \max($this->stream->getSize(), $this->remoteStream->getSize());
+ }
+ /**
+ * {@inheritdoc}
+ * @throws SeekException When seeking with SEEK_END or when seeking
+ * past the total size of the buffer stream
+ */
+ public function seek($offset, $whence = \SEEK_SET)
+ {
+ if ($whence == \SEEK_SET) {
+ $byte = $offset;
+ } elseif ($whence == \SEEK_CUR) {
+ $byte = $offset + $this->tell();
+ } else {
+ return \false;
+ }
+ // You cannot skip ahead past where you've read from the remote stream
+ if ($byte > $this->stream->getSize()) {
+ throw new \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Exception\SeekException($this, $byte, \sprintf('Cannot seek to byte %d when the buffered stream only' . ' contains %d bytes', $byte, $this->stream->getSize()));
+ }
+ return $this->stream->seek($byte);
+ }
+ public function read($length)
+ {
+ // Perform a regular read on any previously read data from the buffer
+ $data = $this->stream->read($length);
+ $remaining = $length - \strlen($data);
+ // More data was requested so read from the remote stream
+ if ($remaining) {
+ // If data was written to the buffer in a position that would have
+ // been filled from the remote stream, then we must skip bytes on
+ // the remote stream to emulate overwriting bytes from that
+ // position. This mimics the behavior of other PHP stream wrappers.
+ $remoteData = $this->remoteStream->read($remaining + $this->skipReadBytes);
+ if ($this->skipReadBytes) {
+ $len = \strlen($remoteData);
+ $remoteData = \substr($remoteData, $this->skipReadBytes);
+ $this->skipReadBytes = \max(0, $this->skipReadBytes - $len);
+ }
+ $data .= $remoteData;
+ $this->stream->write($remoteData);
+ }
+ return $data;
+ }
+ public function write($string)
+ {
+ // When appending to the end of the currently read stream, you'll want
+ // to skip bytes from being read from the remote stream to emulate
+ // other stream wrappers. Basically replacing bytes of data of a fixed
+ // length.
+ $overflow = \strlen($string) + $this->tell() - $this->remoteStream->tell();
+ if ($overflow > 0) {
+ $this->skipReadBytes += $overflow;
+ }
+ return $this->stream->write($string);
+ }
+ public function eof()
+ {
+ return $this->stream->eof() && $this->remoteStream->eof();
+ }
+ /**
+ * Close both the remote stream and buffer stream
+ */
+ public function close()
+ {
+ $this->remoteStream->close() && $this->stream->close();
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/DroppingStream.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/DroppingStream.php
new file mode 100644
index 000000000..9152e5470
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/DroppingStream.php
@@ -0,0 +1,36 @@
+stream = $stream;
+ $this->maxLength = $maxLength;
+ }
+ public function write($string)
+ {
+ $diff = $this->maxLength - $this->stream->getSize();
+ // Begin returning false when the underlying stream is too large.
+ if ($diff <= 0) {
+ return \false;
+ }
+ // Write the stream or a subset of the stream if needed.
+ if (\strlen($string) < $diff) {
+ return $this->stream->write($string);
+ }
+ $this->stream->write(\substr($string, 0, $diff));
+ return \false;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/Exception/CannotAttachException.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/Exception/CannotAttachException.php
new file mode 100644
index 000000000..c9410b13e
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/Exception/CannotAttachException.php
@@ -0,0 +1,7 @@
+stream = $stream;
+ $msg = $msg ?: 'Could not seek the stream to position ' . $pos;
+ parent::__construct($msg);
+ }
+ /**
+ * @return StreamInterface
+ */
+ public function getStream()
+ {
+ return $this->stream;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/FnStream.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/FnStream.php
new file mode 100644
index 000000000..8e83afac9
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/FnStream.php
@@ -0,0 +1,123 @@
+methods = $methods;
+ // Create the functions on the class
+ foreach ($methods as $name => $fn) {
+ $this->{'_fn_' . $name} = $fn;
+ }
+ }
+ /**
+ * Lazily determine which methods are not implemented.
+ * @throws \BadMethodCallException
+ */
+ public function __get($name)
+ {
+ throw new \BadMethodCallException(\str_replace('_fn_', '', $name) . '() is not implemented in the FnStream');
+ }
+ /**
+ * The close method is called on the underlying stream only if possible.
+ */
+ public function __destruct()
+ {
+ if (isset($this->_fn_close)) {
+ \call_user_func($this->_fn_close);
+ }
+ }
+ /**
+ * Adds custom functionality to an underlying stream by intercepting
+ * specific method calls.
+ *
+ * @param StreamInterface $stream Stream to decorate
+ * @param array $methods Hash of method name to a closure
+ *
+ * @return FnStream
+ */
+ public static function decorate(\Google\Site_Kit_Dependencies\GuzzleHttp\Stream\StreamInterface $stream, array $methods)
+ {
+ // If any of the required methods were not provided, then simply
+ // proxy to the decorated stream.
+ foreach (\array_diff(self::$slots, \array_keys($methods)) as $diff) {
+ $methods[$diff] = [$stream, $diff];
+ }
+ return new self($methods);
+ }
+ public function __toString()
+ {
+ return \call_user_func($this->_fn___toString);
+ }
+ public function close()
+ {
+ return \call_user_func($this->_fn_close);
+ }
+ public function detach()
+ {
+ return \call_user_func($this->_fn_detach);
+ }
+ public function attach($stream)
+ {
+ return \call_user_func($this->_fn_attach, $stream);
+ }
+ public function getSize()
+ {
+ return \call_user_func($this->_fn_getSize);
+ }
+ public function tell()
+ {
+ return \call_user_func($this->_fn_tell);
+ }
+ public function eof()
+ {
+ return \call_user_func($this->_fn_eof);
+ }
+ public function isSeekable()
+ {
+ return \call_user_func($this->_fn_isSeekable);
+ }
+ public function seek($offset, $whence = \SEEK_SET)
+ {
+ return \call_user_func($this->_fn_seek, $offset, $whence);
+ }
+ public function isWritable()
+ {
+ return \call_user_func($this->_fn_isWritable);
+ }
+ public function write($string)
+ {
+ return \call_user_func($this->_fn_write, $string);
+ }
+ public function isReadable()
+ {
+ return \call_user_func($this->_fn_isReadable);
+ }
+ public function read($length)
+ {
+ return \call_user_func($this->_fn_read, $length);
+ }
+ public function getContents()
+ {
+ return \call_user_func($this->_fn_getContents);
+ }
+ public function getMetadata($key = null)
+ {
+ return \call_user_func($this->_fn_getMetadata, $key);
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/GuzzleStreamWrapper.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/GuzzleStreamWrapper.php
new file mode 100644
index 000000000..97271923a
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/GuzzleStreamWrapper.php
@@ -0,0 +1,80 @@
+isReadable()) {
+ $mode = $stream->isWritable() ? 'r+' : 'r';
+ } elseif ($stream->isWritable()) {
+ $mode = 'w';
+ } else {
+ throw new \InvalidArgumentException('The stream must be readable, ' . 'writable, or both.');
+ }
+ return \fopen('guzzle://stream', $mode, null, \stream_context_create(['guzzle' => ['stream' => $stream]]));
+ }
+ /**
+ * Registers the stream wrapper if needed
+ */
+ public static function register()
+ {
+ if (!\in_array('guzzle', \stream_get_wrappers())) {
+ \stream_wrapper_register('guzzle', __CLASS__);
+ }
+ }
+ public function stream_open($path, $mode, $options, &$opened_path)
+ {
+ $options = \stream_context_get_options($this->context);
+ if (!isset($options['guzzle']['stream'])) {
+ return \false;
+ }
+ $this->mode = $mode;
+ $this->stream = $options['guzzle']['stream'];
+ return \true;
+ }
+ public function stream_read($count)
+ {
+ return $this->stream->read($count);
+ }
+ public function stream_write($data)
+ {
+ return (int) $this->stream->write($data);
+ }
+ public function stream_tell()
+ {
+ return $this->stream->tell();
+ }
+ public function stream_eof()
+ {
+ return $this->stream->eof();
+ }
+ public function stream_seek($offset, $whence)
+ {
+ return $this->stream->seek($offset, $whence);
+ }
+ public function stream_stat()
+ {
+ static $modeMap = ['r' => 33060, 'r+' => 33206, 'w' => 33188];
+ return ['dev' => 0, 'ino' => 0, 'mode' => $modeMap[$this->mode], 'nlink' => 0, 'uid' => 0, 'gid' => 0, 'rdev' => 0, 'size' => $this->stream->getSize() ?: 0, 'atime' => 0, 'mtime' => 0, 'ctime' => 0, 'blksize' => 0, 'blocks' => 0];
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/InflateStream.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/InflateStream.php
new file mode 100644
index 000000000..0c2347367
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/InflateStream.php
@@ -0,0 +1,27 @@
+stream = new \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Stream($resource);
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/LazyOpenStream.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/LazyOpenStream.php
new file mode 100644
index 000000000..afcd4a428
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/LazyOpenStream.php
@@ -0,0 +1,34 @@
+filename = $filename;
+ $this->mode = $mode;
+ }
+ /**
+ * Creates the underlying stream lazily when required.
+ *
+ * @return StreamInterface
+ */
+ protected function createStream()
+ {
+ return \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Stream::factory(\Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Utils::open($this->filename, $this->mode));
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/LimitStream.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/LimitStream.php
new file mode 100644
index 000000000..1cbca8b9f
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/LimitStream.php
@@ -0,0 +1,137 @@
+stream = $stream;
+ $this->setLimit($limit);
+ $this->setOffset($offset);
+ }
+ public function eof()
+ {
+ // Always return true if the underlying stream is EOF
+ if ($this->stream->eof()) {
+ return \true;
+ }
+ // No limit and the underlying stream is not at EOF
+ if ($this->limit == -1) {
+ return \false;
+ }
+ $tell = $this->stream->tell();
+ if ($tell === \false) {
+ return \false;
+ }
+ return $tell >= $this->offset + $this->limit;
+ }
+ /**
+ * Returns the size of the limited subset of data
+ * {@inheritdoc}
+ */
+ public function getSize()
+ {
+ if (null === ($length = $this->stream->getSize())) {
+ return null;
+ } elseif ($this->limit == -1) {
+ return $length - $this->offset;
+ } else {
+ return \min($this->limit, $length - $this->offset);
+ }
+ }
+ /**
+ * Allow for a bounded seek on the read limited stream
+ * {@inheritdoc}
+ */
+ public function seek($offset, $whence = \SEEK_SET)
+ {
+ if ($whence !== \SEEK_SET || $offset < 0) {
+ return \false;
+ }
+ $offset += $this->offset;
+ if ($this->limit !== -1) {
+ if ($offset > $this->offset + $this->limit) {
+ $offset = $this->offset + $this->limit;
+ }
+ }
+ return $this->stream->seek($offset);
+ }
+ /**
+ * Give a relative tell()
+ * {@inheritdoc}
+ */
+ public function tell()
+ {
+ return $this->stream->tell() - $this->offset;
+ }
+ /**
+ * Set the offset to start limiting from
+ *
+ * @param int $offset Offset to seek to and begin byte limiting from
+ *
+ * @return self
+ * @throws SeekException
+ */
+ public function setOffset($offset)
+ {
+ $current = $this->stream->tell();
+ if ($current !== $offset) {
+ // If the stream cannot seek to the offset position, then read to it
+ if (!$this->stream->seek($offset)) {
+ if ($current > $offset) {
+ throw new \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Exception\SeekException($this, $offset);
+ } else {
+ $this->stream->read($offset - $current);
+ }
+ }
+ }
+ $this->offset = $offset;
+ return $this;
+ }
+ /**
+ * Set the limit of bytes that the decorator allows to be read from the
+ * stream.
+ *
+ * @param int $limit Number of bytes to allow to be read from the stream.
+ * Use -1 for no limit.
+ * @return self
+ */
+ public function setLimit($limit)
+ {
+ $this->limit = $limit;
+ return $this;
+ }
+ public function read($length)
+ {
+ if ($this->limit == -1) {
+ return $this->stream->read($length);
+ }
+ // Check if the current position is less than the total allowed
+ // bytes + original offset
+ $remaining = $this->offset + $this->limit - $this->stream->tell();
+ if ($remaining > 0) {
+ // Only return the amount of requested data, ensuring that the byte
+ // limit is not exceeded
+ return $this->stream->read(\min($remaining, $length));
+ } else {
+ return \false;
+ }
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/MetadataStreamInterface.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/MetadataStreamInterface.php
new file mode 100644
index 000000000..e49fb90cd
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/MetadataStreamInterface.php
@@ -0,0 +1,14 @@
+stream->attach($stream);
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/NullStream.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/NullStream.php
new file mode 100644
index 000000000..f2cb19587
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/NullStream.php
@@ -0,0 +1,69 @@
+source = $source;
+ $this->size = isset($options['size']) ? $options['size'] : null;
+ $this->metadata = isset($options['metadata']) ? $options['metadata'] : [];
+ $this->buffer = new \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\BufferStream();
+ }
+ public function __toString()
+ {
+ return \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Utils::copyToString($this);
+ }
+ public function close()
+ {
+ $this->detach();
+ }
+ public function detach()
+ {
+ $this->tellPos = \false;
+ $this->source = null;
+ }
+ public function attach($stream)
+ {
+ throw new \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Exception\CannotAttachException();
+ }
+ public function getSize()
+ {
+ return $this->size;
+ }
+ public function tell()
+ {
+ return $this->tellPos;
+ }
+ public function eof()
+ {
+ return !$this->source;
+ }
+ public function isSeekable()
+ {
+ return \false;
+ }
+ public function seek($offset, $whence = \SEEK_SET)
+ {
+ return \false;
+ }
+ public function isWritable()
+ {
+ return \false;
+ }
+ public function write($string)
+ {
+ return \false;
+ }
+ public function isReadable()
+ {
+ return \true;
+ }
+ public function read($length)
+ {
+ $data = $this->buffer->read($length);
+ $readLen = \strlen($data);
+ $this->tellPos += $readLen;
+ $remaining = $length - $readLen;
+ if ($remaining) {
+ $this->pump($remaining);
+ $data .= $this->buffer->read($remaining);
+ $this->tellPos += \strlen($data) - $readLen;
+ }
+ return $data;
+ }
+ public function getContents()
+ {
+ $result = '';
+ while (!$this->eof()) {
+ $result .= $this->read(1000000);
+ }
+ return $result;
+ }
+ public function getMetadata($key = null)
+ {
+ if (!$key) {
+ return $this->metadata;
+ }
+ return isset($this->metadata[$key]) ? $this->metadata[$key] : null;
+ }
+ private function pump($length)
+ {
+ if ($this->source) {
+ do {
+ $data = \call_user_func($this->source, $length);
+ if ($data === \false || $data === null) {
+ $this->source = null;
+ return;
+ }
+ $this->buffer->write($data);
+ $length -= \strlen($data);
+ } while ($length > 0);
+ }
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/Stream.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/Stream.php
new file mode 100644
index 000000000..13a966330
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/Stream.php
@@ -0,0 +1,203 @@
+ ['r' => \true, 'w+' => \true, 'r+' => \true, 'x+' => \true, 'c+' => \true, 'rb' => \true, 'w+b' => \true, 'r+b' => \true, 'x+b' => \true, 'c+b' => \true, 'rt' => \true, 'w+t' => \true, 'r+t' => \true, 'x+t' => \true, 'c+t' => \true, 'a+' => \true], 'write' => ['w' => \true, 'w+' => \true, 'rw' => \true, 'r+' => \true, 'x+' => \true, 'c+' => \true, 'wb' => \true, 'w+b' => \true, 'r+b' => \true, 'x+b' => \true, 'c+b' => \true, 'w+t' => \true, 'r+t' => \true, 'x+t' => \true, 'c+t' => \true, 'a' => \true, 'a+' => \true]];
+ /**
+ * Create a new stream based on the input type.
+ *
+ * This factory accepts the same associative array of options as described
+ * in the constructor.
+ *
+ * @param resource|string|StreamInterface $resource Entity body data
+ * @param array $options Additional options
+ *
+ * @return Stream
+ * @throws \InvalidArgumentException if the $resource arg is not valid.
+ */
+ public static function factory($resource = '', array $options = [])
+ {
+ $type = \gettype($resource);
+ if ($type == 'string') {
+ $stream = \fopen('php://temp', 'r+');
+ if ($resource !== '') {
+ \fwrite($stream, $resource);
+ \fseek($stream, 0);
+ }
+ return new self($stream, $options);
+ }
+ if ($type == 'resource') {
+ return new self($resource, $options);
+ }
+ if ($resource instanceof \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\StreamInterface) {
+ return $resource;
+ }
+ if ($type == 'object' && \method_exists($resource, '__toString')) {
+ return self::factory((string) $resource, $options);
+ }
+ if (\is_callable($resource)) {
+ return new \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\PumpStream($resource, $options);
+ }
+ if ($resource instanceof \Iterator) {
+ return new \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\PumpStream(function () use($resource) {
+ if (!$resource->valid()) {
+ return \false;
+ }
+ $result = $resource->current();
+ $resource->next();
+ return $result;
+ }, $options);
+ }
+ throw new \InvalidArgumentException('Invalid resource type: ' . $type);
+ }
+ /**
+ * This constructor accepts an associative array of options.
+ *
+ * - size: (int) If a read stream would otherwise have an indeterminate
+ * size, but the size is known due to foreknownledge, then you can
+ * provide that size, in bytes.
+ * - metadata: (array) Any additional metadata to return when the metadata
+ * of the stream is accessed.
+ *
+ * @param resource $stream Stream resource to wrap.
+ * @param array $options Associative array of options.
+ *
+ * @throws \InvalidArgumentException if the stream is not a stream resource
+ */
+ public function __construct($stream, $options = [])
+ {
+ if (!\is_resource($stream)) {
+ throw new \InvalidArgumentException('Stream must be a resource');
+ }
+ if (isset($options['size'])) {
+ $this->size = $options['size'];
+ }
+ $this->customMetadata = isset($options['metadata']) ? $options['metadata'] : [];
+ $this->attach($stream);
+ }
+ /**
+ * Closes the stream when the destructed
+ */
+ public function __destruct()
+ {
+ $this->close();
+ }
+ public function __toString()
+ {
+ if (!$this->stream) {
+ return '';
+ }
+ $this->seek(0);
+ return (string) \stream_get_contents($this->stream);
+ }
+ public function getContents()
+ {
+ return $this->stream ? \stream_get_contents($this->stream) : '';
+ }
+ public function close()
+ {
+ if (\is_resource($this->stream)) {
+ \fclose($this->stream);
+ }
+ $this->detach();
+ }
+ public function detach()
+ {
+ $result = $this->stream;
+ $this->stream = $this->size = $this->uri = null;
+ $this->readable = $this->writable = $this->seekable = \false;
+ return $result;
+ }
+ public function attach($stream)
+ {
+ $this->stream = $stream;
+ $meta = \stream_get_meta_data($this->stream);
+ $this->seekable = $meta['seekable'];
+ $this->readable = isset(self::$readWriteHash['read'][$meta['mode']]);
+ $this->writable = isset(self::$readWriteHash['write'][$meta['mode']]);
+ $this->uri = $this->getMetadata('uri');
+ }
+ public function getSize()
+ {
+ if ($this->size !== null) {
+ return $this->size;
+ }
+ if (!$this->stream) {
+ return null;
+ }
+ // Clear the stat cache if the stream has a URI
+ if ($this->uri) {
+ \clearstatcache(\true, $this->uri);
+ }
+ $stats = \fstat($this->stream);
+ if (isset($stats['size'])) {
+ $this->size = $stats['size'];
+ return $this->size;
+ }
+ return null;
+ }
+ public function isReadable()
+ {
+ return $this->readable;
+ }
+ public function isWritable()
+ {
+ return $this->writable;
+ }
+ public function isSeekable()
+ {
+ return $this->seekable;
+ }
+ public function eof()
+ {
+ return !$this->stream || \feof($this->stream);
+ }
+ public function tell()
+ {
+ return $this->stream ? \ftell($this->stream) : \false;
+ }
+ public function setSize($size)
+ {
+ $this->size = $size;
+ return $this;
+ }
+ public function seek($offset, $whence = \SEEK_SET)
+ {
+ return $this->seekable ? \fseek($this->stream, $offset, $whence) === 0 : \false;
+ }
+ public function read($length)
+ {
+ return $this->readable ? \fread($this->stream, $length) : \false;
+ }
+ public function write($string)
+ {
+ // We can't know the size after writing anything
+ $this->size = null;
+ return $this->writable ? \fwrite($this->stream, $string) : \false;
+ }
+ public function getMetadata($key = null)
+ {
+ if (!$this->stream) {
+ return $key ? null : [];
+ } elseif (!$key) {
+ return $this->customMetadata + \stream_get_meta_data($this->stream);
+ } elseif (isset($this->customMetadata[$key])) {
+ return $this->customMetadata[$key];
+ }
+ $meta = \stream_get_meta_data($this->stream);
+ return isset($meta[$key]) ? $meta[$key] : null;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/StreamDecoratorTrait.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/StreamDecoratorTrait.php
new file mode 100644
index 000000000..0c43b2e65
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/StreamDecoratorTrait.php
@@ -0,0 +1,122 @@
+stream = $stream;
+ }
+ /**
+ * Magic method used to create a new stream if streams are not added in
+ * the constructor of a decorator (e.g., LazyOpenStream).
+ */
+ public function __get($name)
+ {
+ if ($name == 'stream') {
+ $this->stream = $this->createStream();
+ return $this->stream;
+ }
+ throw new \UnexpectedValueException("{$name} not found on class");
+ }
+ public function __toString()
+ {
+ try {
+ $this->seek(0);
+ return $this->getContents();
+ } catch (\Exception $e) {
+ // Really, PHP? https://bugs.php.net/bug.php?id=53648
+ \trigger_error('StreamDecorator::__toString exception: ' . (string) $e, \E_USER_ERROR);
+ return '';
+ }
+ }
+ public function getContents()
+ {
+ return \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Utils::copyToString($this);
+ }
+ /**
+ * Allow decorators to implement custom methods
+ *
+ * @param string $method Missing method name
+ * @param array $args Method arguments
+ *
+ * @return mixed
+ */
+ public function __call($method, array $args)
+ {
+ $result = \call_user_func_array(array($this->stream, $method), $args);
+ // Always return the wrapped object if the result is a return $this
+ return $result === $this->stream ? $this : $result;
+ }
+ public function close()
+ {
+ $this->stream->close();
+ }
+ public function getMetadata($key = null)
+ {
+ return $this->stream->getMetadata($key);
+ }
+ public function detach()
+ {
+ return $this->stream->detach();
+ }
+ public function attach($stream)
+ {
+ throw new \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Exception\CannotAttachException();
+ }
+ public function getSize()
+ {
+ return $this->stream->getSize();
+ }
+ public function eof()
+ {
+ return $this->stream->eof();
+ }
+ public function tell()
+ {
+ return $this->stream->tell();
+ }
+ public function isReadable()
+ {
+ return $this->stream->isReadable();
+ }
+ public function isWritable()
+ {
+ return $this->stream->isWritable();
+ }
+ public function isSeekable()
+ {
+ return $this->stream->isSeekable();
+ }
+ public function seek($offset, $whence = \SEEK_SET)
+ {
+ return $this->stream->seek($offset, $whence);
+ }
+ public function read($length)
+ {
+ return $this->stream->read($length);
+ }
+ public function write($string)
+ {
+ return $this->stream->write($string);
+ }
+ /**
+ * Implement in subclasses to dynamically create streams when requested.
+ *
+ * @return StreamInterface
+ * @throws \BadMethodCallException
+ */
+ protected function createStream()
+ {
+ throw new \BadMethodCallException('createStream() not implemented in ' . \get_class($this));
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/StreamInterface.php b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/StreamInterface.php
new file mode 100644
index 000000000..0fd5bb718
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/guzzlehttp/streams/src/StreamInterface.php
@@ -0,0 +1,146 @@
+eof()) {
+ $buf = $stream->read(1048576);
+ if ($buf === \false) {
+ break;
+ }
+ $buffer .= $buf;
+ }
+ return $buffer;
+ }
+ $len = 0;
+ while (!$stream->eof() && $len < $maxLen) {
+ $buf = $stream->read($maxLen - $len);
+ if ($buf === \false) {
+ break;
+ }
+ $buffer .= $buf;
+ $len = \strlen($buffer);
+ }
+ return $buffer;
+ }
+ /**
+ * Copy the contents of a stream into another stream until the given number
+ * of bytes have been read.
+ *
+ * @param StreamInterface $source Stream to read from
+ * @param StreamInterface $dest Stream to write to
+ * @param int $maxLen Maximum number of bytes to read. Pass -1
+ * to read the entire stream.
+ */
+ public static function copyToStream(\Google\Site_Kit_Dependencies\GuzzleHttp\Stream\StreamInterface $source, \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\StreamInterface $dest, $maxLen = -1)
+ {
+ if ($maxLen === -1) {
+ while (!$source->eof()) {
+ if (!$dest->write($source->read(1048576))) {
+ break;
+ }
+ }
+ return;
+ }
+ $bytes = 0;
+ while (!$source->eof()) {
+ $buf = $source->read($maxLen - $bytes);
+ if (!($len = \strlen($buf))) {
+ break;
+ }
+ $bytes += $len;
+ $dest->write($buf);
+ if ($bytes == $maxLen) {
+ break;
+ }
+ }
+ }
+ /**
+ * Calculate a hash of a Stream
+ *
+ * @param StreamInterface $stream Stream to calculate the hash for
+ * @param string $algo Hash algorithm (e.g. md5, crc32, etc)
+ * @param bool $rawOutput Whether or not to use raw output
+ *
+ * @return string Returns the hash of the stream
+ * @throws SeekException
+ */
+ public static function hash(\Google\Site_Kit_Dependencies\GuzzleHttp\Stream\StreamInterface $stream, $algo, $rawOutput = \false)
+ {
+ $pos = $stream->tell();
+ if ($pos > 0 && !$stream->seek(0)) {
+ throw new \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Exception\SeekException($stream);
+ }
+ $ctx = \hash_init($algo);
+ while (!$stream->eof()) {
+ \hash_update($ctx, $stream->read(1048576));
+ }
+ $out = \hash_final($ctx, (bool) $rawOutput);
+ $stream->seek($pos);
+ return $out;
+ }
+ /**
+ * Read a line from the stream up to the maximum allowed buffer length
+ *
+ * @param StreamInterface $stream Stream to read from
+ * @param int $maxLength Maximum buffer length
+ *
+ * @return string|bool
+ */
+ public static function readline(\Google\Site_Kit_Dependencies\GuzzleHttp\Stream\StreamInterface $stream, $maxLength = null)
+ {
+ $buffer = '';
+ $size = 0;
+ while (!$stream->eof()) {
+ if (\false === ($byte = $stream->read(1))) {
+ return $buffer;
+ }
+ $buffer .= $byte;
+ // Break when a new line is found or the max length - 1 is reached
+ if ($byte == \PHP_EOL || ++$size == $maxLength - 1) {
+ break;
+ }
+ }
+ return $buffer;
+ }
+ /**
+ * Alias of GuzzleHttp\Stream\Stream::factory.
+ *
+ * @param mixed $resource Resource to create
+ * @param array $options Associative array of stream options defined in
+ * {@see \GuzzleHttp\Stream\Stream::__construct}
+ *
+ * @return StreamInterface
+ *
+ * @see GuzzleHttp\Stream\Stream::factory
+ * @see GuzzleHttp\Stream\Stream::__construct
+ */
+ public static function create($resource, array $options = [])
+ {
+ return \Google\Site_Kit_Dependencies\GuzzleHttp\Stream\Stream::factory($resource, $options);
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/ErrorHandler.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/ErrorHandler.php
new file mode 100644
index 000000000..797340b6b
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/ErrorHandler.php
@@ -0,0 +1,190 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace Google\Site_Kit_Dependencies\Monolog;
+
+use Google\Site_Kit_Dependencies\Psr\Log\LoggerInterface;
+use Google\Site_Kit_Dependencies\Psr\Log\LogLevel;
+use Google\Site_Kit_Dependencies\Monolog\Handler\AbstractHandler;
+/**
+ * Monolog error handler
+ *
+ * A facility to enable logging of runtime errors, exceptions and fatal errors.
+ *
+ * Quick setup: ErrorHandler::register($logger);
+ *
+ * @author Jordi Boggiano
+ */
+class ErrorHandler
+{
+ private $logger;
+ private $previousExceptionHandler;
+ private $uncaughtExceptionLevel;
+ private $previousErrorHandler;
+ private $errorLevelMap;
+ private $handleOnlyReportedErrors;
+ private $hasFatalErrorHandler;
+ private $fatalLevel;
+ private $reservedMemory;
+ private $lastFatalTrace;
+ private static $fatalErrors = array(\E_ERROR, \E_PARSE, \E_CORE_ERROR, \E_COMPILE_ERROR, \E_USER_ERROR);
+ public function __construct(\Google\Site_Kit_Dependencies\Psr\Log\LoggerInterface $logger)
+ {
+ $this->logger = $logger;
+ }
+ /**
+ * Registers a new ErrorHandler for a given Logger
+ *
+ * By default it will handle errors, exceptions and fatal errors
+ *
+ * @param LoggerInterface $logger
+ * @param array|false $errorLevelMap an array of E_* constant to LogLevel::* constant mapping, or false to disable error handling
+ * @param int|false $exceptionLevel a LogLevel::* constant, or false to disable exception handling
+ * @param int|false $fatalLevel a LogLevel::* constant, or false to disable fatal error handling
+ * @return ErrorHandler
+ */
+ public static function register(\Google\Site_Kit_Dependencies\Psr\Log\LoggerInterface $logger, $errorLevelMap = array(), $exceptionLevel = null, $fatalLevel = null)
+ {
+ //Forces the autoloader to run for LogLevel. Fixes an autoload issue at compile-time on PHP5.3. See https://github.com/Seldaek/monolog/pull/929
+ \class_exists('Google\\Site_Kit_Dependencies\\Psr\\Log\\LogLevel', \true);
+ /** @phpstan-ignore-next-line */
+ $handler = new static($logger);
+ if ($errorLevelMap !== \false) {
+ $handler->registerErrorHandler($errorLevelMap);
+ }
+ if ($exceptionLevel !== \false) {
+ $handler->registerExceptionHandler($exceptionLevel);
+ }
+ if ($fatalLevel !== \false) {
+ $handler->registerFatalHandler($fatalLevel);
+ }
+ return $handler;
+ }
+ public function registerExceptionHandler($level = null, $callPrevious = \true)
+ {
+ $prev = \set_exception_handler(array($this, 'handleException'));
+ $this->uncaughtExceptionLevel = $level;
+ if ($callPrevious && $prev) {
+ $this->previousExceptionHandler = $prev;
+ }
+ }
+ public function registerErrorHandler(array $levelMap = array(), $callPrevious = \true, $errorTypes = -1, $handleOnlyReportedErrors = \true)
+ {
+ $prev = \set_error_handler(array($this, 'handleError'), $errorTypes);
+ $this->errorLevelMap = \array_replace($this->defaultErrorLevelMap(), $levelMap);
+ if ($callPrevious) {
+ $this->previousErrorHandler = $prev ?: \true;
+ }
+ $this->handleOnlyReportedErrors = $handleOnlyReportedErrors;
+ }
+ public function registerFatalHandler($level = null, $reservedMemorySize = 20)
+ {
+ \register_shutdown_function(array($this, 'handleFatalError'));
+ $this->reservedMemory = \str_repeat(' ', 1024 * $reservedMemorySize);
+ $this->fatalLevel = $level;
+ $this->hasFatalErrorHandler = \true;
+ }
+ protected function defaultErrorLevelMap()
+ {
+ return array(\E_ERROR => \Google\Site_Kit_Dependencies\Psr\Log\LogLevel::CRITICAL, \E_WARNING => \Google\Site_Kit_Dependencies\Psr\Log\LogLevel::WARNING, \E_PARSE => \Google\Site_Kit_Dependencies\Psr\Log\LogLevel::ALERT, \E_NOTICE => \Google\Site_Kit_Dependencies\Psr\Log\LogLevel::NOTICE, \E_CORE_ERROR => \Google\Site_Kit_Dependencies\Psr\Log\LogLevel::CRITICAL, \E_CORE_WARNING => \Google\Site_Kit_Dependencies\Psr\Log\LogLevel::WARNING, \E_COMPILE_ERROR => \Google\Site_Kit_Dependencies\Psr\Log\LogLevel::ALERT, \E_COMPILE_WARNING => \Google\Site_Kit_Dependencies\Psr\Log\LogLevel::WARNING, \E_USER_ERROR => \Google\Site_Kit_Dependencies\Psr\Log\LogLevel::ERROR, \E_USER_WARNING => \Google\Site_Kit_Dependencies\Psr\Log\LogLevel::WARNING, \E_USER_NOTICE => \Google\Site_Kit_Dependencies\Psr\Log\LogLevel::NOTICE, \E_STRICT => \Google\Site_Kit_Dependencies\Psr\Log\LogLevel::NOTICE, \E_RECOVERABLE_ERROR => \Google\Site_Kit_Dependencies\Psr\Log\LogLevel::ERROR, \E_DEPRECATED => \Google\Site_Kit_Dependencies\Psr\Log\LogLevel::NOTICE, \E_USER_DEPRECATED => \Google\Site_Kit_Dependencies\Psr\Log\LogLevel::NOTICE);
+ }
+ /**
+ * @private
+ */
+ public function handleException($e)
+ {
+ $this->logger->log($this->uncaughtExceptionLevel === null ? \Google\Site_Kit_Dependencies\Psr\Log\LogLevel::ERROR : $this->uncaughtExceptionLevel, \sprintf('Uncaught Exception %s: "%s" at %s line %s', \Google\Site_Kit_Dependencies\Monolog\Utils::getClass($e), $e->getMessage(), $e->getFile(), $e->getLine()), array('exception' => $e));
+ if ($this->previousExceptionHandler) {
+ \call_user_func($this->previousExceptionHandler, $e);
+ }
+ exit(255);
+ }
+ /**
+ * @private
+ */
+ public function handleError($code, $message, $file = '', $line = 0, $context = array())
+ {
+ if ($this->handleOnlyReportedErrors && !(\error_reporting() & $code)) {
+ return;
+ }
+ // fatal error codes are ignored if a fatal error handler is present as well to avoid duplicate log entries
+ if (!$this->hasFatalErrorHandler || !\in_array($code, self::$fatalErrors, \true)) {
+ $level = isset($this->errorLevelMap[$code]) ? $this->errorLevelMap[$code] : \Google\Site_Kit_Dependencies\Psr\Log\LogLevel::CRITICAL;
+ $this->logger->log($level, self::codeToString($code) . ': ' . $message, array('code' => $code, 'message' => $message, 'file' => $file, 'line' => $line));
+ } else {
+ // http://php.net/manual/en/function.debug-backtrace.php
+ // As of 5.3.6, DEBUG_BACKTRACE_IGNORE_ARGS option was added.
+ // Any version less than 5.3.6 must use the DEBUG_BACKTRACE_IGNORE_ARGS constant value '2'.
+ $trace = \debug_backtrace(\PHP_VERSION_ID < 50306 ? 2 : \DEBUG_BACKTRACE_IGNORE_ARGS);
+ \array_shift($trace);
+ // Exclude handleError from trace
+ $this->lastFatalTrace = $trace;
+ }
+ if ($this->previousErrorHandler === \true) {
+ return \false;
+ } elseif ($this->previousErrorHandler) {
+ return \call_user_func($this->previousErrorHandler, $code, $message, $file, $line, $context);
+ }
+ }
+ /**
+ * @private
+ */
+ public function handleFatalError()
+ {
+ $this->reservedMemory = null;
+ $lastError = \error_get_last();
+ if ($lastError && \in_array($lastError['type'], self::$fatalErrors, \true)) {
+ $this->logger->log($this->fatalLevel === null ? \Google\Site_Kit_Dependencies\Psr\Log\LogLevel::ALERT : $this->fatalLevel, 'Fatal Error (' . self::codeToString($lastError['type']) . '): ' . $lastError['message'], array('code' => $lastError['type'], 'message' => $lastError['message'], 'file' => $lastError['file'], 'line' => $lastError['line'], 'trace' => $this->lastFatalTrace));
+ if ($this->logger instanceof \Google\Site_Kit_Dependencies\Monolog\Logger) {
+ foreach ($this->logger->getHandlers() as $handler) {
+ if ($handler instanceof \Google\Site_Kit_Dependencies\Monolog\Handler\AbstractHandler) {
+ $handler->close();
+ }
+ }
+ }
+ }
+ }
+ private static function codeToString($code)
+ {
+ switch ($code) {
+ case \E_ERROR:
+ return 'E_ERROR';
+ case \E_WARNING:
+ return 'E_WARNING';
+ case \E_PARSE:
+ return 'E_PARSE';
+ case \E_NOTICE:
+ return 'E_NOTICE';
+ case \E_CORE_ERROR:
+ return 'E_CORE_ERROR';
+ case \E_CORE_WARNING:
+ return 'E_CORE_WARNING';
+ case \E_COMPILE_ERROR:
+ return 'E_COMPILE_ERROR';
+ case \E_COMPILE_WARNING:
+ return 'E_COMPILE_WARNING';
+ case \E_USER_ERROR:
+ return 'E_USER_ERROR';
+ case \E_USER_WARNING:
+ return 'E_USER_WARNING';
+ case \E_USER_NOTICE:
+ return 'E_USER_NOTICE';
+ case \E_STRICT:
+ return 'E_STRICT';
+ case \E_RECOVERABLE_ERROR:
+ return 'E_RECOVERABLE_ERROR';
+ case \E_DEPRECATED:
+ return 'E_DEPRECATED';
+ case \E_USER_DEPRECATED:
+ return 'E_USER_DEPRECATED';
+ }
+ return 'Unknown PHP error';
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/ChromePHPFormatter.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/ChromePHPFormatter.php
new file mode 100644
index 000000000..5114e2ed5
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/ChromePHPFormatter.php
@@ -0,0 +1,56 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace Google\Site_Kit_Dependencies\Monolog\Formatter;
+
+use Google\Site_Kit_Dependencies\Monolog\Logger;
+/**
+ * Formats a log message according to the ChromePHP array format
+ *
+ * @author Christophe Coevoet
+ */
+class ChromePHPFormatter implements \Google\Site_Kit_Dependencies\Monolog\Formatter\FormatterInterface
+{
+ /**
+ * Translates Monolog log levels to Wildfire levels.
+ */
+ private $logLevels = array(\Google\Site_Kit_Dependencies\Monolog\Logger::DEBUG => 'log', \Google\Site_Kit_Dependencies\Monolog\Logger::INFO => 'info', \Google\Site_Kit_Dependencies\Monolog\Logger::NOTICE => 'info', \Google\Site_Kit_Dependencies\Monolog\Logger::WARNING => 'warn', \Google\Site_Kit_Dependencies\Monolog\Logger::ERROR => 'error', \Google\Site_Kit_Dependencies\Monolog\Logger::CRITICAL => 'error', \Google\Site_Kit_Dependencies\Monolog\Logger::ALERT => 'error', \Google\Site_Kit_Dependencies\Monolog\Logger::EMERGENCY => 'error');
+ /**
+ * {@inheritdoc}
+ */
+ public function format(array $record)
+ {
+ // Retrieve the line and file if set and remove them from the formatted extra
+ $backtrace = 'unknown';
+ if (isset($record['extra']['file'], $record['extra']['line'])) {
+ $backtrace = $record['extra']['file'] . ' : ' . $record['extra']['line'];
+ unset($record['extra']['file'], $record['extra']['line']);
+ }
+ $message = array('message' => $record['message']);
+ if ($record['context']) {
+ $message['context'] = $record['context'];
+ }
+ if ($record['extra']) {
+ $message['extra'] = $record['extra'];
+ }
+ if (\count($message) === 1) {
+ $message = \reset($message);
+ }
+ return array($record['channel'], $message, $backtrace, $this->logLevels[$record['level']]);
+ }
+ public function formatBatch(array $records)
+ {
+ $formatted = array();
+ foreach ($records as $record) {
+ $formatted[] = $this->format($record);
+ }
+ return $formatted;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/ElasticaFormatter.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/ElasticaFormatter.php
new file mode 100644
index 000000000..23f583df6
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/ElasticaFormatter.php
@@ -0,0 +1,78 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace Google\Site_Kit_Dependencies\Monolog\Formatter;
+
+use Google\Site_Kit_Dependencies\Elastica\Document;
+/**
+ * Format a log message into an Elastica Document
+ *
+ * @author Jelle Vink
+ */
+class ElasticaFormatter extends \Google\Site_Kit_Dependencies\Monolog\Formatter\NormalizerFormatter
+{
+ /**
+ * @var string Elastic search index name
+ */
+ protected $index;
+ /**
+ * @var string Elastic search document type
+ */
+ protected $type;
+ /**
+ * @param string $index Elastic Search index name
+ * @param string $type Elastic Search document type
+ */
+ public function __construct($index, $type)
+ {
+ // elasticsearch requires a ISO 8601 format date with optional millisecond precision.
+ parent::__construct('Y-m-d\\TH:i:s.uP');
+ $this->index = $index;
+ $this->type = $type;
+ }
+ /**
+ * {@inheritdoc}
+ */
+ public function format(array $record)
+ {
+ $record = parent::format($record);
+ return $this->getDocument($record);
+ }
+ /**
+ * Getter index
+ * @return string
+ */
+ public function getIndex()
+ {
+ return $this->index;
+ }
+ /**
+ * Getter type
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+ /**
+ * Convert a log message into an Elastica Document
+ *
+ * @param array $record Log message
+ * @return Document
+ */
+ protected function getDocument($record)
+ {
+ $document = new \Google\Site_Kit_Dependencies\Elastica\Document();
+ $document->setData($record);
+ $document->setType($this->type);
+ $document->setIndex($this->index);
+ return $document;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/FlowdockFormatter.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/FlowdockFormatter.php
new file mode 100644
index 000000000..70ea43fdd
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/FlowdockFormatter.php
@@ -0,0 +1,84 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace Google\Site_Kit_Dependencies\Monolog\Formatter;
+
+/**
+ * formats the record to be used in the FlowdockHandler
+ *
+ * @author Dominik Liebler
+ */
+class FlowdockFormatter implements \Google\Site_Kit_Dependencies\Monolog\Formatter\FormatterInterface
+{
+ /**
+ * @var string
+ */
+ private $source;
+ /**
+ * @var string
+ */
+ private $sourceEmail;
+ /**
+ * @param string $source
+ * @param string $sourceEmail
+ */
+ public function __construct($source, $sourceEmail)
+ {
+ $this->source = $source;
+ $this->sourceEmail = $sourceEmail;
+ }
+ /**
+ * {@inheritdoc}
+ */
+ public function format(array $record)
+ {
+ $tags = array('#logs', '#' . \strtolower($record['level_name']), '#' . $record['channel']);
+ foreach ($record['extra'] as $value) {
+ $tags[] = '#' . $value;
+ }
+ $subject = \sprintf('in %s: %s - %s', $this->source, $record['level_name'], $this->getShortMessage($record['message']));
+ $record['flowdock'] = array('source' => $this->source, 'from_address' => $this->sourceEmail, 'subject' => $subject, 'content' => $record['message'], 'tags' => $tags, 'project' => $this->source);
+ return $record;
+ }
+ /**
+ * {@inheritdoc}
+ */
+ public function formatBatch(array $records)
+ {
+ $formatted = array();
+ foreach ($records as $record) {
+ $formatted[] = $this->format($record);
+ }
+ return $formatted;
+ }
+ /**
+ * @param string $message
+ *
+ * @return string
+ */
+ public function getShortMessage($message)
+ {
+ static $hasMbString;
+ if (null === $hasMbString) {
+ $hasMbString = \function_exists('mb_strlen');
+ }
+ $maxLength = 45;
+ if ($hasMbString) {
+ if (\mb_strlen($message, 'UTF-8') > $maxLength) {
+ $message = \mb_substr($message, 0, $maxLength - 4, 'UTF-8') . ' ...';
+ }
+ } else {
+ if (\strlen($message) > $maxLength) {
+ $message = \substr($message, 0, $maxLength - 4) . ' ...';
+ }
+ }
+ return $message;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/FluentdFormatter.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/FluentdFormatter.php
new file mode 100644
index 000000000..857a35a5e
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/FluentdFormatter.php
@@ -0,0 +1,73 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace Google\Site_Kit_Dependencies\Monolog\Formatter;
+
+use Google\Site_Kit_Dependencies\Monolog\Utils;
+/**
+ * Class FluentdFormatter
+ *
+ * Serializes a log message to Fluentd unix socket protocol
+ *
+ * Fluentd config:
+ *
+ *
+ * type unix
+ * path /var/run/td-agent/td-agent.sock
+ *
+ *
+ * Monolog setup:
+ *
+ * $logger = new Monolog\Logger('fluent.tag');
+ * $fluentHandler = new Monolog\Handler\SocketHandler('unix:///var/run/td-agent/td-agent.sock');
+ * $fluentHandler->setFormatter(new Monolog\Formatter\FluentdFormatter());
+ * $logger->pushHandler($fluentHandler);
+ *
+ * @author Andrius Putna
+ */
+class FluentdFormatter implements \Google\Site_Kit_Dependencies\Monolog\Formatter\FormatterInterface
+{
+ /**
+ * @var bool $levelTag should message level be a part of the fluentd tag
+ */
+ protected $levelTag = \false;
+ public function __construct($levelTag = \false)
+ {
+ if (!\function_exists('json_encode')) {
+ throw new \RuntimeException('PHP\'s json extension is required to use Monolog\'s FluentdUnixFormatter');
+ }
+ $this->levelTag = (bool) $levelTag;
+ }
+ public function isUsingLevelsInTag()
+ {
+ return $this->levelTag;
+ }
+ public function format(array $record)
+ {
+ $tag = $record['channel'];
+ if ($this->levelTag) {
+ $tag .= '.' . \strtolower($record['level_name']);
+ }
+ $message = array('message' => $record['message'], 'context' => $record['context'], 'extra' => $record['extra']);
+ if (!$this->levelTag) {
+ $message['level'] = $record['level'];
+ $message['level_name'] = $record['level_name'];
+ }
+ return \Google\Site_Kit_Dependencies\Monolog\Utils::jsonEncode(array($tag, $record['datetime']->getTimestamp(), $message));
+ }
+ public function formatBatch(array $records)
+ {
+ $message = '';
+ foreach ($records as $record) {
+ $message .= $this->format($record);
+ }
+ return $message;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/FormatterInterface.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/FormatterInterface.php
new file mode 100644
index 000000000..418b2bada
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/FormatterInterface.php
@@ -0,0 +1,34 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace Google\Site_Kit_Dependencies\Monolog\Formatter;
+
+/**
+ * Interface for formatters
+ *
+ * @author Jordi Boggiano
+ */
+interface FormatterInterface
+{
+ /**
+ * Formats a log record.
+ *
+ * @param array $record A record to format
+ * @return mixed The formatted record
+ */
+ public function format(array $record);
+ /**
+ * Formats a set of log records.
+ *
+ * @param array $records A set of records to format
+ * @return mixed The formatted set of records
+ */
+ public function formatBatch(array $records);
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/GelfMessageFormatter.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/GelfMessageFormatter.php
new file mode 100644
index 000000000..c982622de
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/GelfMessageFormatter.php
@@ -0,0 +1,105 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace Google\Site_Kit_Dependencies\Monolog\Formatter;
+
+use Google\Site_Kit_Dependencies\Monolog\Logger;
+use Google\Site_Kit_Dependencies\Gelf\Message;
+/**
+ * Serializes a log message to GELF
+ * @see http://www.graylog2.org/about/gelf
+ *
+ * @author Matt Lehner
+ */
+class GelfMessageFormatter extends \Google\Site_Kit_Dependencies\Monolog\Formatter\NormalizerFormatter
+{
+ const DEFAULT_MAX_LENGTH = 32766;
+ /**
+ * @var string the name of the system for the Gelf log message
+ */
+ protected $systemName;
+ /**
+ * @var string a prefix for 'extra' fields from the Monolog record (optional)
+ */
+ protected $extraPrefix;
+ /**
+ * @var string a prefix for 'context' fields from the Monolog record (optional)
+ */
+ protected $contextPrefix;
+ /**
+ * @var int max length per field
+ */
+ protected $maxLength;
+ /**
+ * Translates Monolog log levels to Graylog2 log priorities.
+ */
+ private $logLevels = array(\Google\Site_Kit_Dependencies\Monolog\Logger::DEBUG => 7, \Google\Site_Kit_Dependencies\Monolog\Logger::INFO => 6, \Google\Site_Kit_Dependencies\Monolog\Logger::NOTICE => 5, \Google\Site_Kit_Dependencies\Monolog\Logger::WARNING => 4, \Google\Site_Kit_Dependencies\Monolog\Logger::ERROR => 3, \Google\Site_Kit_Dependencies\Monolog\Logger::CRITICAL => 2, \Google\Site_Kit_Dependencies\Monolog\Logger::ALERT => 1, \Google\Site_Kit_Dependencies\Monolog\Logger::EMERGENCY => 0);
+ public function __construct($systemName = null, $extraPrefix = null, $contextPrefix = 'ctxt_', $maxLength = null)
+ {
+ parent::__construct('U.u');
+ $this->systemName = $systemName ?: \gethostname();
+ $this->extraPrefix = $extraPrefix;
+ $this->contextPrefix = $contextPrefix;
+ $this->maxLength = \is_null($maxLength) ? self::DEFAULT_MAX_LENGTH : $maxLength;
+ }
+ /**
+ * {@inheritdoc}
+ */
+ public function format(array $record)
+ {
+ $record = parent::format($record);
+ if (!isset($record['datetime'], $record['message'], $record['level'])) {
+ throw new \InvalidArgumentException('The record should at least contain datetime, message and level keys, ' . \var_export($record, \true) . ' given');
+ }
+ $message = new \Google\Site_Kit_Dependencies\Gelf\Message();
+ $message->setTimestamp($record['datetime'])->setShortMessage((string) $record['message'])->setHost($this->systemName)->setLevel($this->logLevels[$record['level']]);
+ // message length + system name length + 200 for padding / metadata
+ $len = 200 + \strlen((string) $record['message']) + \strlen($this->systemName);
+ if ($len > $this->maxLength) {
+ $message->setShortMessage(\substr($record['message'], 0, $this->maxLength));
+ }
+ if (isset($record['channel'])) {
+ $message->setFacility($record['channel']);
+ }
+ if (isset($record['extra']['line'])) {
+ $message->setLine($record['extra']['line']);
+ unset($record['extra']['line']);
+ }
+ if (isset($record['extra']['file'])) {
+ $message->setFile($record['extra']['file']);
+ unset($record['extra']['file']);
+ }
+ foreach ($record['extra'] as $key => $val) {
+ $val = \is_scalar($val) || null === $val ? $val : $this->toJson($val);
+ $len = \strlen($this->extraPrefix . $key . $val);
+ if ($len > $this->maxLength) {
+ $message->setAdditional($this->extraPrefix . $key, \substr($val, 0, $this->maxLength));
+ break;
+ }
+ $message->setAdditional($this->extraPrefix . $key, $val);
+ }
+ foreach ($record['context'] as $key => $val) {
+ $val = \is_scalar($val) || null === $val ? $val : $this->toJson($val);
+ $len = \strlen($this->contextPrefix . $key . $val);
+ if ($len > $this->maxLength) {
+ $message->setAdditional($this->contextPrefix . $key, \substr($val, 0, $this->maxLength));
+ break;
+ }
+ $message->setAdditional($this->contextPrefix . $key, $val);
+ }
+ if (null === $message->getFile() && isset($record['context']['exception']['file'])) {
+ if (\preg_match("/^(.+):([0-9]+)\$/", $record['context']['exception']['file'], $matches)) {
+ $message->setFile($matches[1]);
+ $message->setLine($matches[2]);
+ }
+ }
+ return $message;
+ }
+}
diff --git a/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/HtmlFormatter.php b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/HtmlFormatter.php
new file mode 100644
index 000000000..66db30bf8
--- /dev/null
+++ b/wp-content/plugins/google-site-kit/third-party/monolog/monolog/src/Monolog/Formatter/HtmlFormatter.php
@@ -0,0 +1,119 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace Google\Site_Kit_Dependencies\Monolog\Formatter;
+
+use Google\Site_Kit_Dependencies\Monolog\Logger;
+use Google\Site_Kit_Dependencies\Monolog\Utils;
+/**
+ * Formats incoming records into an HTML table
+ *
+ * This is especially useful for html email logging
+ *
+ * @author Tiago Brito
+ */
+class HtmlFormatter extends \Google\Site_Kit_Dependencies\Monolog\Formatter\NormalizerFormatter
+{
+ /**
+ * Translates Monolog log levels to html color priorities.
+ */
+ protected $logLevels = array(\Google\Site_Kit_Dependencies\Monolog\Logger::DEBUG => '#cccccc', \Google\Site_Kit_Dependencies\Monolog\Logger::INFO => '#468847', \Google\Site_Kit_Dependencies\Monolog\Logger::NOTICE => '#3a87ad', \Google\Site_Kit_Dependencies\Monolog\Logger::WARNING => '#c09853', \Google\Site_Kit_Dependencies\Monolog\Logger::ERROR => '#f0ad4e', \Google\Site_Kit_Dependencies\Monolog\Logger::CRITICAL => '#FF7708', \Google\Site_Kit_Dependencies\Monolog\Logger::ALERT => '#C12A19', \Google\Site_Kit_Dependencies\Monolog\Logger::EMERGENCY => '#000000');
+ /**
+ * @param string $dateFormat The format of the timestamp: one supported by DateTime::format
+ */
+ public function __construct($dateFormat = null)
+ {
+ parent::__construct($dateFormat);
+ }
+ /**
+ * Creates an HTML table row
+ *
+ * @param string $th Row header content
+ * @param string $td Row standard cell content
+ * @param bool $escapeTd false if td content must not be html escaped
+ * @return string
+ */
+ protected function addRow($th, $td = ' ', $escapeTd = \true)
+ {
+ $th = \htmlspecialchars($th, \ENT_NOQUOTES, 'UTF-8');
+ if ($escapeTd) {
+ $td = '